上一页 1 ··· 6 7 8 9 10 11 下一页
摘要: 快捷键: CTRL+p+q:退出容器,并保持容器继续运行(或使用exit命令) CTRL+d:退出容器,并终止容器运行 镜像命令 查看已下载的镜像 docker images Options: -a, --all 显示所有镜像 --digests 显示摘要(可以显示镜像大小等信息)同时不要截断输出( 阅读全文
posted @ 2020-01-07 19:22 .Neterr 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 中文文档: https://vuepress.mirror.docker-practice.com/ http://www.dockerinfo.net/document Docker介绍 Docker的优点 Docker引擎统一了基础设施环境,应用程序不需要关心操作系统版本、硬件配置 Docker 阅读全文
posted @ 2020-01-07 19:21 .Neterr 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 悲观锁、乐观锁用来处理并发情况下出现的问题 模拟一个抢单的业务场景,一个乘客发了一个打车订单,很多司机去抢这个订单,执行的业务简单点来说是,先select出这条数据,然后update这个条数据中的driveName字段为自己的名字,但是现在会有这么一种现象,同时select出这条订单,先后更新dri 阅读全文
posted @ 2020-01-06 14:31 .Neterr 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 简介 ASP.NET Core提供以下3个中间件来处理针对静态文件的请求,它们均定义在NuGet包“Microsoft.AspNetCore.StaticFiles”中,利用这3个中间件完全可以搭建一个基于Web的文件服务器 StaticFileMiddleware:处理静态文件的请求 Direct 阅读全文
posted @ 2020-01-05 14:47 .Neterr 阅读(660) 评论(0) 推荐(1) 编辑
摘要: 介绍 .Net Core框架中有两个缓存接口: IMemoryCache:内存缓存接口,内存缓存可以存储任何对象 IDistributedCache:分布式缓存接口(Redis、Sqlserver、MongoDB、DB...) 微软缓存组件源码在:https://github.com/aspnet/ 阅读全文
posted @ 2020-01-05 12:00 .Neterr 阅读(4136) 评论(1) 推荐(5) 编辑
摘要: HttpWebRequest、WebClient 在.NET中,我们有很多发送Http请求的手段,如HttpWebRequest、WebClient以及HttpClient。 HttpWebRequest HttpWebRequest位于System.Net命名空间下,继承自抽象类WebReques 阅读全文
posted @ 2020-01-05 10:05 .Neterr 阅读(1547) 评论(1) 推荐(2) 编辑
摘要: Startup Startup类承担应用的启动任务,所以按照约定,起名为Startup,不过你可以修改为任意类名(强烈建议类名为Startup)。 默认的Startup结构很简单,包含: ConfigureServices方法:注册服务 Configure方法:注册中间件 省略Startup Sta 阅读全文
posted @ 2020-01-04 17:03 .Neterr 阅读(1445) 评论(0) 推荐(0) 编辑
摘要: 定义类ClassA、ClassB public class ClassA { public ClassA(ClassB b) { } } public class ClassB { public ClassB(ClassA a) { } } 以下代码会抛出循环依赖异常 var containerBu 阅读全文
posted @ 2020-01-03 14:42 .Neterr 阅读(936) 评论(0) 推荐(1) 编辑
摘要: Environment 静态类,提供有关当前环境的信息和操作方法和平台。 System.Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");//读取环境变量 IWebHostEnvironment IWebHostEnvironm 阅读全文
posted @ 2020-01-03 13:47 .Neterr 阅读(3976) 评论(0) 推荐(0) 编辑
摘要: 过滤器接口 授权过滤器:IAuthorizationFilter、IAsyncAuthorizationFilter(AuthorizeFilter) 通常用于验证请求合法性 资源过滤器:IResourceFilter、IAsyncResourceFilter 适合做缓存 Action过滤器:IAc 阅读全文
posted @ 2020-01-03 13:32 .Neterr 阅读(2000) 评论(0) 推荐(0) 编辑
摘要: .Net Core介绍 .Net Core框架包括:CoreCLR、CoreFx、CLI、Roslyn 四大部分组成。 (1). CoreCLR:公共语言运行时,用于执行.Net Core程序的,它是从.NET Framework的CLR发展而来,结构上与CLR也是一致的。 (2). CoreFx: 阅读全文
posted @ 2020-01-03 13:22 .Neterr 阅读(728) 评论(0) 推荐(0) 编辑
摘要: 介绍: 案例1:使用已有表达式树构建新的表达式树 Expression<Func<string, bool>> lambda0 = item => item.Length > 2; Expression<Func<string, bool>> lambda1 = item => item.Lengt 阅读全文
posted @ 2020-01-01 14:32 .Neterr 阅读(2469) 评论(0) 推荐(1) 编辑
摘要: pivot帮助我们实现行转列,pivot出现之前只能通过下列sql实现行转列 转置sql1:查询多次表,性能差 select PaymentType 支付类型 ,count(*) 订单数 ,sum(RealUSDPayTotalPrice) 总支付金额 ,(select count(*) from 阅读全文
posted @ 2019-12-31 16:04 .Neterr 阅读(782) 评论(0) 推荐(0) 编辑
摘要: 公用表表达式和派生表类似的另一种形式的表表达式,CTE中是先定义表,然后再引用,结构比较清晰 CTE相比派生表的优势:如果有多个子查询,不需要像派生表那样嵌套,只需要在WITH中定义多个CTE,每个CTE可以引用它前面定义的所有CTE 派生表:from子句中的子查询。 select * from ( 阅读全文
posted @ 2019-12-31 11:00 .Neterr 阅读(495) 评论(0) 推荐(0) 编辑
摘要: 使用场景: 得到部门中工资排名前N名的员工列表;查找各部门每人工资占部门总工资的百分比。 对于这些场景,使用传统SQL实现比较困难,这类需求有一个共同特点就是需要在满足某些条件的记录集内部做一些函数操作,不是简单的表连接、聚合就可以实现。 要解决此类问题,最方便的方式就是使用窗口函数。 窗口: 窗口 阅读全文
posted @ 2019-12-30 19:06 .Neterr 阅读(549) 评论(0) 推荐(0) 编辑
摘要: 加载XML XElement.Load("c:/1.xml"); XElement.Parse("<Persons></Persons>"); 查找元素 var l = from n in root3.Elements() select new Person { ID = int.Parse(n.E 阅读全文
posted @ 2019-12-29 18:08 .Neterr 阅读(206) 评论(0) 推荐(0) 编辑
摘要: AsEnumerable() DataTable table = GetTable(); var q = from n in table.AsEnumerable() select new Person { ID=n.Field<int>("ID"), Name = n.Field<string>( 阅读全文
posted @ 2019-12-29 12:50 .Neterr 阅读(575) 评论(0) 推荐(0) 编辑
摘要: AsParallel() 并行化操作,大集合使用,提高速度 personList.AsParallel().Sum(p => p.CompanyID); SelectMany() 合并集合的集合成员 Dictionary<int, List<string>> dict = new Dictionar 阅读全文
posted @ 2019-12-29 12:13 .Neterr 阅读(631) 评论(0) 推荐(0) 编辑
摘要: 这几个方法用于提高编码效率,减少无聊操作。 Enumerable.Empty() 生成一个空集合,用于初始化集合 IEnumerable<int> list = Enumerable.Empty<int>(); Enumerable.Range() 生成指定范围内的整数序列 Enumerable.R 阅读全文
posted @ 2019-12-29 08:23 .Neterr 阅读(1034) 评论(0) 推荐(0) 编辑
摘要: ToLookup(): linq提供了一个ToDictionary()扩展方法,转换成Dictionary类型 personList.ToDictionary(p => p.CompanyID); key是CompanyID,Value是Person对象。如果CompanyID有重复值,会抛出异常。 阅读全文
posted @ 2019-12-29 07:57 .Neterr 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 查看源码 vs中F12查看源码:(vs2017、vs2019可以设置,低版本的不清楚) 工具 - 选项 - 文本编辑器 - c# - 高级 - 选中“支持导航到反编译源” 安装静态资源包(LibMan工具) 比如安装jquery、bootstramp 右键项目文件 - 添加 - 客户端库(Clien 阅读全文
posted @ 2019-12-29 07:25 .Neterr 阅读(179) 评论(0) 推荐(0) 编辑
摘要: let:在linq中定义变量,可以重复使用 var lowercaseStudentNames = from s in studentList let lowercaseStudentName = s.StudentName.ToLower() where lowercaseStudentName. 阅读全文
posted @ 2019-12-28 17:17 .Neterr 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 实体 public class Person { public string Name { get; set; } public int CompanyID { get; set; } } public class Company { public int ID { get; set; } } pu 阅读全文
posted @ 2019-12-28 16:55 .Neterr 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 当一个服务注册多个实现时,如何区分?如果我们一个服务只有一个实现类,直接使用As()即可,但是如果一个服务有多个实现类,如何获取实现类 获取全部实现类 解析时直接使用IEnumerable<服务类型>类型的参数,如下 注册: builder.RegisterType<Cat>().As<IAnima 阅读全文
posted @ 2019-12-26 09:04 .Neterr 阅读(785) 评论(1) 推荐(1) 编辑
摘要: # 介绍 DynamicProxy(以下称为动态代理)起作用主要是为我们的类生成一个代理类,这个代理类可以在我们调用原本类的方法之前,调用拦截器以实现AOP。那么动态代理是怎么实现的呢,这里简单一下提一下,这里主要是用了emit技术动态生成IL,相当于在内存中用IL给我们编写了一个Class。 # 阅读全文
posted @ 2019-12-26 08:58 .Neterr 阅读(1228) 评论(0) 推荐(1) 编辑
摘要: 概述 服务的生命周期 服务的生命周期是服务实例在程序中生存的时间。例如您“新建”一个实现IDisposable的对象,然后再对其进行调用Dispose()。 选择正确的生命周期范围将有助于避免组件寿命过长或不够长的俘获依赖和其他陷阱。 开发人员需要为每个应用程序组件做出正确的选择。 服务的范围(作用 阅读全文
posted @ 2019-12-25 22:13 .Neterr 阅读(752) 评论(0) 推荐(0) 编辑
摘要: # String类型 value可以是String类型,也可以是数字类型(整数、浮点);当遇到incr、decr等操作就会转换成数值型进行计算,此时redisObject的encoding值为int。 不管哪种类型,底层都是字节数组形式存储,只不过编码方式不同。string类型最大空间不能超过512 阅读全文
posted @ 2019-12-24 19:01 .Neterr 阅读(190) 评论(0) 推荐(0) 编辑
摘要: Docker安装Redis 下载镜像 docker pull redis:6.2.6 运行容器 docker run -d --name redis -p 6379:6379 --restart always redis:6.2.6 --requirepass 123456 进入容器,测试redis 阅读全文
posted @ 2019-12-22 14:51 .Neterr 阅读(202) 评论(0) 推荐(0) 编辑
摘要: Redis为什么有多个库? Redis默认有16个库,使用select命令切换,Redis中的库和关系型数据库不一样,Redis中的库可以理解为“命名空间”,且不支持独立密码。Redis多数据库目的是为了对数据隔离,防止key冲突。 Redis为什么速度快? 1、完全基于内存,绝大部分请求是纯粹的内 阅读全文
posted @ 2019-12-22 10:33 .Neterr 阅读(508) 评论(0) 推荐(0) 编辑
摘要: 对于本地的验证方案,我们可以很容易了解验证过程。但是远程的验证方案是特殊的,我们往往会单独来处理它,就像下方的中间件代码,您会发现会优先判断是否为远程验证,然后再执行本地验证。 // 判断当前是否需要进行远程验证,如果是就进行远程验证 var handlers = context.RequestSe 阅读全文
posted @ 2019-12-19 13:53 .Neterr 阅读(644) 评论(0) 推荐(1) 编辑
摘要: 注册服务 在Startup.ConfigureServices执行services.AddAuthentication() services.AddAuthentication() 注册如下服务,便于理解省略了部分辅助服务 services.TryAddScoped<IAuthenticationS 阅读全文
posted @ 2019-12-19 11:06 .Neterr 阅读(1586) 评论(0) 推荐(0) 编辑
摘要: AuthenticationOptions(整个应用的身份验证选项) AuthenticationSchemeOptions是指某个具体身份验证方案的选项。AuthenticationOptions则是针对整个身份验证功能的选项对象,我们需要在应用启动阶段通过它来配置身份验证功能。 Authenti 阅读全文
posted @ 2019-12-17 15:29 .Neterr 阅读(747) 评论(0) 推荐(0) 编辑
摘要: 概述 目的是使全文检索变得简单,能够达到实时搜索,稳定,可靠,使用简单方便 ES是一个基于Lucene构建的搜索引擎,隐藏了 Lucene 的复杂性。 分布式、易扩展、高可用、高实时的搜索与数据分析引擎 基于RESTful web接口 它用 Java 编写的 易扩展:指的是增加服务器节点,ES会分片 阅读全文
posted @ 2019-12-16 14:59 .Neterr 阅读(174) 评论(0) 推荐(0) 编辑
摘要: Action返回类型 特定类型 返回类型是特定类型,状态码是200,如果想返回其他的HTTP状态码类型,只能设置ResponseStatusCode,不优雅 public Person Person1([FromQuery] int id = 1) { if (id != 1) { Response 阅读全文
posted @ 2019-12-15 23:17 .Neterr 阅读(631) 评论(0) 推荐(0) 编辑
摘要: 模型绑定 什么是模型绑定?简单说就是将HTTP请求参数绑定到程序方法入参上,该变量可以是简单类型,也可以是复杂类。 绑定源 所谓绑定源,是指用于模型绑定的值来源。 [FromQuery]:从Url的查询字符串中获取值。查询字符串就是Url中问号(?)后面拼接的参数 [FromRoute]:从路由数据 阅读全文
posted @ 2019-12-15 12:14 .Neterr 阅读(1161) 评论(0) 推荐(1) 编辑
摘要: REST REST全称是Representational State Transfer 表述性状态传递。REST可能是现在最流行的一种Web API。 REST的核心就是资源,一个资源就是可以被标识的实体,它有名称和地址。 REST API就是把数据以资源的形式暴露出来,并使用标准的HTTP方法来代 阅读全文
posted @ 2019-12-15 09:46 .Neterr 阅读(799) 评论(0) 推荐(0) 编辑
摘要: 介绍 WebAPI用来开发系统间接口的技术,基于HTTP协议,返回默认是json格式。比wcf简单 更通用,更轻量级,更省流量(json格式); WebAPI尽可能复用MVC路由、ModelBinder、Filter等知识,但只是模仿 webapi默认路由机制是通过http请求类型匹配Action( 阅读全文
posted @ 2019-12-15 06:24 .Neterr 阅读(409) 评论(0) 推荐(0) 编辑
摘要: .net中的MemoryCache是通过内部封装一个静态Dictionary 自己写一个缓存,支持过期时间 来看看内部怎么实现的 public class CustomerCache : ICache { private static ConcurrentDictionary<string, Key 阅读全文
posted @ 2019-12-14 15:28 .Neterr 阅读(714) 评论(1) 推荐(1) 编辑
摘要: 继承ISerializable接口可以灵活控制序列化过程 格式化器的工作流程:格式化器再序列化一个对象的时候,发现对象继承了ISerializable接口,那它就会忽略掉类型所有的序列化特性,转而调用类型的GetObjectData方法来构造一个SerializationInfo对象。 我们在方法G 阅读全文
posted @ 2019-12-14 13:33 .Neterr 阅读(1349) 评论(0) 推荐(0) 编辑
摘要: implicit和explicit是一对转换操作符 Implicit关键字:用于声明隐式的用户定义类型转换运算符。它可以实现2个不同类的隐式转换 ,提高代码的可读性。 Explicit关键字:声明必须通过转换来调用的用户定义的类型转换运算符。不同于隐式转换。 1 public class Peopl 阅读全文
posted @ 2019-12-13 13:29 .Neterr 阅读(702) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 下一页