上一页 1 ··· 5 6 7 8 9 10 11 12 下一页
摘要: 定义 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 类图 应用场景 避免产生多个对象消耗过多的资源(特别是一个对象需要频繁的创建和销毁时); 提供一个全局访问点,常常被用来管理系统中共享的资源(作为一个Manager)。 实现方式 延迟初始化(懒汉模式) 适用于单线程应用程序 阅读全文
posted @ 2020-05-27 10:58 .Neterr 阅读(154) 评论(0) 推荐(0)
摘要: volatile特点: 保证可见性,可见性是指当一个线程修改了共享变量的值,其他线程可以立即得知 保证有序性? 不保证原子性(需要使用悲观锁or乐观锁) 线程栈: 每一个线程运行时都有一个线程栈,线程栈保存了线程运行时候变量值信息。当线程访问某一个对象时候值的时候,首先通过对象的引用找到对应在堆内存 阅读全文
posted @ 2020-05-25 16:32 .Neterr 阅读(194) 评论(1) 推荐(0)
摘要: 实现线程的本地存储,也就是线程内可见。这些数据都是存放在线程环境块中,是线程的空间开销 有以下几种方式 线程数据槽 已过时,建议使用ThreadStaticAttribute static void Main(string[] args) { var slot = Thread.AllocateDa 阅读全文
posted @ 2020-05-25 15:39 .Neterr 阅读(499) 评论(1) 推荐(0)
摘要: BenchmarkDotNet 是一个强大的. NET 库, 可用于性能测试,Benchmark 可以精准简单的测试应用程序性能,它为每个测试方法生成一个独立的项目, 执行此项目的多个启动, 并运行测试方法,以保证测试的精准性。 时间可以精确到微秒(us)、纳秒(ns),还可以测试内存使用情况 要想 阅读全文
posted @ 2020-05-24 16:09 .Neterr 阅读(767) 评论(0) 推荐(0)
摘要: Refit可以进行强类型的客户端调用 Refit 是一个类型安全的 REST 开源库,是一套基于 RESTful 架构的 .NET 客户端实现,内部使用 HttpClient 类封装,可通过 Refit 更加简单安全地访问 Web API 接口,要使用 Refit 框架,只需要在项目中通过 NuGe 阅读全文
posted @ 2020-05-24 12:31 .Neterr 阅读(1828) 评论(0) 推荐(2)
摘要: 简介 Parallel类是对线程的抽象,提供数据与任务的并行性。 在同步状态下简化Task的使用,也就是使用For、Foreach、Invoke方法时,调用者线程是阻塞的。 并行方法 Parallel对象提供了3个静态方法来实现 数据和任务的并行 Parallel.For Parallel.ForE 阅读全文
posted @ 2020-05-23 16:52 .Neterr 阅读(578) 评论(0) 推荐(0)
摘要: 重要对象 JwtSecurityToken 代表一个jwt token,可以直接用此对象生成token字符串,也可以使用token字符串创建此对象 SecurityToken JwtSecurityToken的基类,包含基础数据 JwtSecurityTokenHandler 创建、校验token, 阅读全文
posted @ 2020-05-18 16:12 .Neterr 阅读(20247) 评论(2) 推荐(6)
摘要: 使用位类型枚举,可以组合枚举值,如果需要多个枚举值,可以用位枚举 枚举添加[Flags],标识位枚举 案例: [Flags] enum Styles { white=1, yellow=2, grean=4, blue=8, gray=16, orange=32, pink=64, red=128, 阅读全文
posted @ 2020-05-11 14:01 .Neterr 阅读(222) 评论(0) 推荐(0)
摘要: 什么是状态模式 状态模式是一种行为型设计模式,它主要用来解决对象在不同状态下的行为问题。在状态模式中,一个对象的内部状态改变时,它的行为也会随之改变。实现状态模式的关键是将对象的不同状态抽象成独立的类,然后将这些状态类与原有对象关联起来组成一个状态机。 状态模式应用场景 当一个对象的行为取决于内部状 阅读全文
posted @ 2020-05-10 22:45 .Neterr 阅读(175) 评论(0) 推荐(0)
摘要: 实体 public class SlaveConfiguration { public string ConnectionString { get; set; } public int Weight { get; set; } public int Attach { get; set; } } 轮巡 阅读全文
posted @ 2020-05-10 11:54 .Neterr 阅读(470) 评论(0) 推荐(0)
摘要: 性能接近硬编码,推荐使用 /// <summary> /// 高性能对象映射 /// </summary> /// <typeparam name="TSource"></typeparam> /// <typeparam name="TTarget"></typeparam> public sta 阅读全文
posted @ 2020-05-04 23:50 .Neterr 阅读(597) 评论(0) 推荐(0)
摘要: 自己写了一个缓存代理,使用代理模式,支持指定函数、支持按参数缓存,原创 后续会支持缓存异步数据 CacheProxy: function CacheProxy(obj,proxyMethods){ var _cache={}; var _getType=Object.prototype.toStri 阅读全文
posted @ 2020-05-03 11:46 .Neterr 阅读(228) 评论(0) 推荐(0)
摘要: 定义 策略模式定义了一系列的算法,并将每一个算法封装起来,使它们可以互相替换 个人理解类似委托的作用,将算法通过客户端传入,起到订制的作用 Demo 客户端: IActive active = new HighActive(); decimal payPrice = new ActiveExecut 阅读全文
posted @ 2020-04-29 20:14 .Neterr 阅读(156) 评论(0) 推荐(0)
摘要: 建造者模式(Builder Pattern)是一种创建型设计模式,它将复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。该模式适用于构建过程复杂且涉及多个步骤的场景,特别适合需要灵活配置的对象。 核心概念与角色​ ​产品(Product)​​ 最终构建的复杂对象,包含多个部件(如 阅读全文
posted @ 2020-04-29 19:05 .Neterr 阅读(164) 评论(0) 推荐(0)
摘要: 定义 模板方法定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模板方法是一种代码复用的基本技术,在类库中尤为重要,因为他们提取了类库中的公共行为。模板方法导致一种反向的控制结构,这种结构就是传说中的“好莱坞法则”,即“ 阅读全文
posted @ 2020-04-28 21:02 .Neterr 阅读(163) 评论(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 阅读(264) 评论(0) 推荐(0)
摘要: js中只有函数有作用域,所以用函数模拟一个命名空间 function CartNamespace(){ function LoginBox(){/*登录弹窗*/ this.show=function(){}; } function ShopCartBusiness(){/*购物车业务*/ var _ 阅读全文
posted @ 2020-04-27 18:32 .Neterr 阅读(224) 评论(0) 推荐(0)
摘要: 本篇是我学习反射的一个应用小场景而做的学习笔记,主要是一个小的总结 使用技术:泛型、反射、表达式树... 客户端调用: static void Main(string[] args) { var connection = new SqlConnection("Data Source=.;User I 阅读全文
posted @ 2020-04-27 17:54 .Neterr 阅读(515) 评论(0) 推荐(1)
摘要: 公共的发布订阅组件,不需要再在组件中写发布订阅相关逻辑,用于模块间解耦,支持排序、传参,原创~ EventContainer:发布-订阅公共组件 Array.prototype.sort = function (fn) {//数组排序 var temp; fn = fn || function (a 阅读全文
posted @ 2020-04-26 19:10 .Neterr 阅读(322) 评论(0) 推荐(0)
摘要: 缓存穿透 缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。 解决方案: 接口层增加校验,如用户鉴权校验,id做基础校验,id<=0的直接拦截; 从缓存取不到的数据,在数据库中也没有 阅读全文
posted @ 2020-04-25 20:52 .Neterr 阅读(209) 评论(0) 推荐(0)
摘要: 正文 在开发AspNet Core应用的时候,我们经常会为该应用公布一个特殊的检测接口出来。该接口的目的很简单,告诉外界程序当前程序现在是可以访问或者不能访问的,便于外界做出相应的操作,比如监控报警,页面通知用户稍作等待等。 在AspNet Core 2.2 之前,如果我们要实现一个这样的检测接口, 阅读全文
posted @ 2020-04-25 16:18 .Neterr 阅读(4677) 评论(0) 推荐(0)
摘要: 场景 一个对象A,希望它的某些状态在发生改变时通知到B(或C、D)。常见的做法是在A中定义一个事件(或委托),当状态改变时A去触发这个事件。而B直接订阅这个事件 这种设计有点问题,B由于要订阅A的事件,所以B得完全引用A,其实有时候没必要,因为我只关心A的状态变化而已 解决方案就是加个中间层Chan 阅读全文
posted @ 2020-04-25 13:30 .Neterr 阅读(991) 评论(0) 推荐(3)
摘要: 认证服务器:新建一个WebApi的解决方案,名为FlyLolo.JWT.Server。 应用服务器:新建一个WebApi的解决方案,名为FlyLolo.JWT.API。 客户端:这里用Fiddler发送请求做测试。 认证服务 首先新建一个ASP.NET Core 的解决方案WebApi的解决方案 将 阅读全文
posted @ 2020-04-21 19:53 .Neterr 阅读(3131) 评论(2) 推荐(4)
摘要: 前言 web早已经进入了2.0时代了,如今的网页大有往系统应用级别的方向发展的趋势,再也不是以前的简单展示信息的界面了。如今很多webapp已经做到了原生应用的功能,并且运用自身的优势逐步取代之。HTML5也很给力,对多平台,多屏幕设备的良好兼容性使得前端工程师们在各种平台上大显身手。卤煮两年前进公 阅读全文
posted @ 2020-04-21 14:48 .Neterr 阅读(1752) 评论(0) 推荐(0)
摘要: BlockingCollection可实现单体程序内队列功能,适合写日志、发邮件等并发高可异步的操作 BlockingCollection是一个线程安全的集合类,可提供以下功能: 实现制造者-使用者模式。 通过多线程并发添加和获取项。 可选最大容量。 集合为空或已满时通过插入和移除操作进行阻塞。 插 阅读全文
posted @ 2020-04-21 11:42 .Neterr 阅读(695) 评论(0) 推荐(1)
摘要: 需求:在服务器端使用js渲染引擎arttemplate,生成HTML。以实现在后台配置模板,动态生成HTML 微软提供了Microsoft.AspNetCore.NodeServices这个库,专门用来调用nodejs服务 1、安装包Microsoft.AspNetCore.NodeServices 阅读全文
posted @ 2020-04-20 23:28 .Neterr 阅读(1708) 评论(0) 推荐(0)
摘要: 在中间件中执行完MVC的处理之后检查返回状态,如果是错误状态就直接渲染视图并输出 实现方式就是在Configure中注入ICompositeViewEngine实例,构造视图上下文,再渲染视图为字符串,最后输出。 第一种: public void Configure(IApplicationBuil 阅读全文
posted @ 2020-04-16 23:19 .Neterr 阅读(541) 评论(1) 推荐(1)
摘要: 目的:修改视图的查找路径 PopulateValues方法:每次http请求都会执行 ExpandViewLocations方法:根据context.Values的值缓存执行。相同值,此方法只会执行一次 viewLocations参数:默认查找路径 方案1: 案例中使用Query参数中获取theme 阅读全文
posted @ 2020-04-16 23:17 .Neterr 阅读(574) 评论(0) 推荐(0)
摘要: 版本控制系统分类 集中式(svn) 集中式只有代码服务器保存代码的历史信息,客户机不保存历史信息,所以提交必须依赖网络 分布式(git) 分布式是不仅代码服务器有代码的历史记录,每个客户端也都保存完整的历史信息,相比集中式版本控制可以避免单点故障。可以在本地提交,不需要依赖网络 签名:<必须配置> 阅读全文
posted @ 2020-04-14 11:27 .Neterr 阅读(215) 评论(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 阅读(606) 评论(0) 推荐(0)
摘要: 介绍 在使用C#异步的场景,多多少少会接触到CancellationTokenSource。它和取消异步任务相关的,CancellationToken就是它生产出来的。 演示 任务取消执行回调 var tokenSource = new CancellationTokenSource(); toke 阅读全文
posted @ 2020-04-08 16:54 .Neterr 阅读(14005) 评论(1) 推荐(5)
摘要: 前言 Host startup hook,是2.2中提供的一项新的功能,通过使用主机启动钩子,允许开发人员在不修改代码的情况下,在服务启动之前注入代码;通过使用钩子,可以对已部署好的服务在服务启动期间自定义托管程序的行为;通过使用钩子,可以对服务进行跟踪或者遥测,也可以在服务启动前对托管环境进行健康 阅读全文
posted @ 2020-04-08 14:52 .Neterr 阅读(890) 评论(0) 推荐(0)
摘要: 在原来解析json数据是,一般都是用反序列化来实现json数据的解读,这需要首先知道json数据的结构并且建立相应的类才能反序列化,一旦遇到动态的json数据,这种方法就不使用。 为了解决动态解析json数据,微软有个Newtonsoft.Json封装类十分好用,里面的JToken直接实现对JSON 阅读全文
posted @ 2020-04-08 14:51 .Neterr 阅读(19754) 评论(1) 推荐(1)
摘要: 步骤: 运行Jenkins容器,从git拉取代码,通过Dockerfile生成镜像,运行容器 拉取并部署jenkins 拉取 jenkins 的镜像 docker pull jenkins/jenkins 执行容器部署 docker run --name myjenkins \ -u root \ 阅读全文
posted @ 2020-04-08 10:53 .Neterr 阅读(564) 评论(0) 推荐(1)
摘要: # HTTP标准身份验证框架 HTTP提供了一套标准的身份验证框架:服务器可以用来针对客户端的请求发送质询(challenge),客户端根据质询提供身份验证凭证。质询与应答的工作流程如下:服务器端向客户端返回401(Unauthorized,未授权)状态码,并在WWW-Authenticate头中添 阅读全文
posted @ 2020-03-26 15:07 .Neterr 阅读(1616) 评论(0) 推荐(0)
摘要: 在现代Web开发中,文件上传和下载是常见的功能需求。然而,随着文件大小的增加或网络环境的变化,传统的文件上传和下载方式可能会遇到性能瓶颈或用户体验问题。本文将深入讲解如何在AspNetCore中实现大文件上传、分块上传、断点续传以及高效的文件下载。 大文件上传 传统方式的问题 传统的文件上传方式通常 阅读全文
posted @ 2020-03-26 14:10 .Neterr 阅读(190) 评论(0) 推荐(0)
摘要: https://cmder.net/ 阅读全文
posted @ 2020-03-26 11:24 .Neterr 阅读(127) 评论(0) 推荐(0)
摘要: :普通SQL语句可以用Exec执行 eg: Select * from tableName Exec('select * from tableName') Exec sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N 2:字段名,表名,数 阅读全文
posted @ 2020-03-24 16:46 .Neterr 阅读(1872) 评论(0) 推荐(0)
摘要: 间隔时间是一个随机数,可以设置间隔时间; 可以设置最大次数; public class RandomTimerEngine { private System.Threading.Timer _timmer = null; private Action<object> _callBack = null 阅读全文
posted @ 2020-03-21 15:26 .Neterr 阅读(985) 评论(0) 推荐(0)
摘要: 如果想给自增列赋值,需先将自增关闭,插入完数据后再打开 set Identity_insert [tb1] on GO INSERT INTO [dbo].[tb1]([ID],[Name],[ClassName]) VALUES (4,'zhangsan','一班') GO set Identit 阅读全文
posted @ 2020-03-18 21:00 .Neterr 阅读(1824) 评论(0) 推荐(0)
上一页 1 ··· 5 6 7 8 9 10 11 12 下一页