04 2020 档案

摘要:定义 策略模式定义了一系列的算法,并将每一个算法封装起来,使它们可以互相替换 个人理解类似委托的作用,将算法通过客户端传入,起到订制的作用 Demo 客户端: IActive active = new HighActive(); decimal payPrice = new ActiveExecut 阅读全文
posted @ 2020-04-29 20:14 .Neterr 阅读(148) 评论(0) 推荐(0) 编辑
摘要:概述 将一个复杂对象的构建与其表示分离,将一个复杂对象的构建过程抽象出来。 当构造函数参数有多个,且这些参数可选,考虑使用建造者模式。因为它的构建过程比较复杂, 建造者模式与工厂模式的区别:两者都是用来创建对象,封装复杂创建过程,但是建造者模式可以让客户端参与建造过程 案例: 这是我在项目中应用建造 阅读全文
posted @ 2020-04-29 19:05 .Neterr 阅读(152) 评论(0) 推荐(0) 编辑
摘要:定义 模板方法定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模板方法是一种代码复用的基本技术,在类库中尤为重要,因为他们提取了类库中的公共行为。模板方法导致一种反向的控制结构,这种结构就是传说中的“好莱坞法则”,即“ 阅读全文
posted @ 2020-04-28 21:02 .Neterr 阅读(156) 评论(0) 推荐(0) 编辑
摘要:ajax二次封装 var _ajax = function (opt) { var defaultOption = { type: "POST", data: { "key": _const.TOKEN }, dataType: 'JSON', cache: false, error: functi 阅读全文
posted @ 2020-04-27 18:50 .Neterr 阅读(247) 评论(0) 推荐(0) 编辑
摘要:js中只有函数有作用域,所以用函数模拟一个命名空间 function CartNamespace(){ function LoginBox(){/*登录弹窗*/ this.show=function(){}; } function ShopCartBusiness(){/*购物车业务*/ var _ 阅读全文
posted @ 2020-04-27 18:32 .Neterr 阅读(216) 评论(0) 推荐(0) 编辑
摘要:本篇是我学习反射的一个应用小场景而做的学习笔记,主要是一个小的总结 使用技术:泛型、反射、表达式树... 客户端调用: static void Main(string[] args) { var connection = new SqlConnection("Data Source=.;User I 阅读全文
posted @ 2020-04-27 17:54 .Neterr 阅读(497) 评论(0) 推荐(1) 编辑
摘要:公共的发布订阅组件,不需要再在组件中写发布订阅相关逻辑,用于模块间解耦,支持排序、传参,原创~ EventContainer:发布-订阅公共组件 Array.prototype.sort = function (fn) {//数组排序 var temp; fn = fn || function (a 阅读全文
posted @ 2020-04-26 19:10 .Neterr 阅读(309) 评论(0) 推荐(0) 编辑
摘要:缓存穿透 缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。 解决方案: 接口层增加校验,如用户鉴权校验,id做基础校验,id<=0的直接拦截; 从缓存取不到的数据,在数据库中也没有 阅读全文
posted @ 2020-04-25 20:52 .Neterr 阅读(193) 评论(0) 推荐(0) 编辑
摘要:正文 在开发AspNet Core应用的时候,我们经常会为该应用公布一个特殊的检测接口出来。该接口的目的很简单,告诉外界程序当前程序现在是可以访问或者不能访问的,便于外界做出相应的操作,比如监控报警,页面通知用户稍作等待等。 在AspNet Core 2.2 之前,如果我们要实现一个这样的检测接口, 阅读全文
posted @ 2020-04-25 16:18 .Neterr 阅读(4272) 评论(0) 推荐(0) 编辑
摘要:场景 一个对象A,希望它的某些状态在发生改变时通知到B(或C、D)。常见的做法是在A中定义一个事件(或委托),当状态改变时A去触发这个事件。而B直接订阅这个事件 这种设计有点问题,B由于要订阅A的事件,所以B得完全引用A,其实有时候没必要,因为我只关心A的状态变化而已 解决方案就是加个中间层Chan 阅读全文
posted @ 2020-04-25 13:30 .Neterr 阅读(930) 评论(0) 推荐(3) 编辑
摘要:认证服务器:新建一个WebApi的解决方案,名为FlyLolo.JWT.Server。 应用服务器:新建一个WebApi的解决方案,名为FlyLolo.JWT.API。 客户端:这里用Fiddler发送请求做测试。 认证服务 首先新建一个ASP.NET Core 的解决方案WebApi的解决方案 将 阅读全文
posted @ 2020-04-21 19:53 .Neterr 阅读(2930) 评论(2) 推荐(4) 编辑
摘要:前言 web早已经进入了2.0时代了,如今的网页大有往系统应用级别的方向发展的趋势,再也不是以前的简单展示信息的界面了。如今很多webapp已经做到了原生应用的功能,并且运用自身的优势逐步取代之。HTML5也很给力,对多平台,多屏幕设备的良好兼容性使得前端工程师们在各种平台上大显身手。卤煮两年前进公 阅读全文
posted @ 2020-04-21 14:48 .Neterr 阅读(1681) 评论(0) 推荐(0) 编辑
摘要:BlockingCollection可实现单体程序内队列功能,适合写日志、发邮件等并发高可异步的操作 BlockingCollection是一个线程安全的集合类,可提供以下功能: 实现制造者-使用者模式。 通过多线程并发添加和获取项。 可选最大容量。 集合为空或已满时通过插入和移除操作进行阻塞。 插 阅读全文
posted @ 2020-04-21 11:42 .Neterr 阅读(670) 评论(0) 推荐(1) 编辑
摘要:需求:在服务器端使用js渲染引擎arttemplate,生成HTML。以实现在后台配置模板,动态生成HTML 微软提供了Microsoft.AspNetCore.NodeServices这个库,专门用来调用nodejs服务 1、安装包Microsoft.AspNetCore.NodeServices 阅读全文
posted @ 2020-04-20 23:28 .Neterr 阅读(1653) 评论(0) 推荐(0) 编辑
摘要:在中间件中执行完MVC的处理之后检查返回状态,如果是错误状态就直接渲染视图并输出 实现方式就是在Configure中注入ICompositeViewEngine实例,构造视图上下文,再渲染视图为字符串,最后输出。 第一种: public void Configure(IApplicationBuil 阅读全文
posted @ 2020-04-16 23:19 .Neterr 阅读(526) 评论(1) 推荐(1) 编辑
摘要:目的:修改视图的查找路径 PopulateValues方法:每次http请求都会执行 ExpandViewLocations方法:根据context.Values的值缓存执行。相同值,此方法只会执行一次 viewLocations参数:默认查找路径 方案1: 案例中使用Query参数中获取theme 阅读全文
posted @ 2020-04-16 23:17 .Neterr 阅读(548) 评论(0) 推荐(0) 编辑
摘要:版本控制系统分类 集中式(svn) 集中式只有代码服务器保存代码的历史信息,客户机不保存历史信息,所以提交必须依赖网络 分布式(git) 分布式是不仅代码服务器有代码的历史记录,每个客户端也都保存完整的历史信息,相比集中式版本控制可以避免单点故障。可以在本地提交,不需要依赖网络 签名:<必须配置> 阅读全文
posted @ 2020-04-14 11:27 .Neterr 阅读(206) 评论(0) 推荐(0) 编辑
摘要:项目源码:https://gitee.com/fan-microservices/polly 以下是杨中科通过Polly+AspectCore.Core实现的熔断降级 github:https://github.com/yangzhongke/RuPeng.HystrixCore 安装Nuget N 阅读全文
posted @ 2020-04-12 11:34 .Neterr 阅读(587) 评论(0) 推荐(0) 编辑
摘要:介绍 在使用C#异步的场景,多多少少会接触到CancellationTokenSource。它和取消异步任务相关的,CancellationToken就是它生产出来的。 演示 任务取消执行回调 var tokenSource = new CancellationTokenSource(); toke 阅读全文
posted @ 2020-04-08 16:54 .Neterr 阅读(13594) 评论(1) 推荐(5) 编辑
摘要:前言 Host startup hook,是2.2中提供的一项新的功能,通过使用主机启动钩子,允许开发人员在不修改代码的情况下,在服务启动之前注入代码;通过使用钩子,可以对已部署好的服务在服务启动期间自定义托管程序的行为;通过使用钩子,可以对服务进行跟踪或者遥测,也可以在服务启动前对托管环境进行健康 阅读全文
posted @ 2020-04-08 14:52 .Neterr 阅读(822) 评论(0) 推荐(0) 编辑
摘要:在原来解析json数据是,一般都是用反序列化来实现json数据的解读,这需要首先知道json数据的结构并且建立相应的类才能反序列化,一旦遇到动态的json数据,这种方法就不使用。 为了解决动态解析json数据,微软有个Newtonsoft.Json封装类十分好用,里面的JToken直接实现对JSON 阅读全文
posted @ 2020-04-08 14:51 .Neterr 阅读(17524) 评论(1) 推荐(1) 编辑
摘要:步骤: 运行Jenkins容器,从git拉取代码,通过Dockerfile生成镜像,运行容器 拉取并部署jenkins 拉取 jenkins 的镜像 docker pull jenkins/jenkins 执行容器部署 docker run --name myjenkins \ -u root \ 阅读全文
posted @ 2020-04-08 10:53 .Neterr 阅读(552) 评论(0) 推荐(1) 编辑