自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (8)
  • 收藏
  • 关注

原创 自己搭建的.net core实用框架

技术栈:.net core 2.2 +EF core+ layui+swagger+ids4abs是web api项目abs.Web是web项目代码下载连接:

2020-04-08 17:39:38 604

原创 数据库索引漫谈

索引:索引一种数据库存储数据的物理结构,所以索引会占据磁盘空间,创建越多的索引,就会占据更多的空间。当你修改,增加,删除数据的时候,都需要维护这种结构(索引),所以并不是创建越多的索引就越好,反而有时候索引越多,修改数据的时候越慢。索引类似于字典的拼音或者部首索引,比如说您查新华字典,你要查找“程”这个字,根据拼音,你会先找C这个开头的,然后在一步一步去查找,索引就是这样的作用。适时的创建索引可...

2020-04-23 12:53:49 232

原创 一文说清楚并发

并发在程序开发中是经常碰到的,怎么解决并发一直是我们需要解决的难题。并发的定义是多个请求同时访问一个接口,或者一个函数。并发可能带来的危险:大量读请求会导致访问变得缓慢,用户操作不流畅资源竞争,死锁,程序崩溃并发也分为两种情况,一种就是读并发,一个就是写并发,也许读写并发都会有。针对这两种情况,我们要不同的处理。如果是并发是读的瓶颈,就要提升查询的效率,第一个很简单的就是添加缓存,给热点...

2020-04-22 13:52:16 462

原创 谈谈rabbitmq消息队列

在程序开发中,有很多地方都需要用到消息队列,rabbitmq是其中的一种消息队列。rtmq有exchange,路由,队列组成。当生产者产生了一个消息之后,会进到exchange,然后根据路由绑定特定的队列,由消费者从队列中取消息进行消费。exchange的几种类型扇形default 默认类型直连topic 基于路由,* 匹配一个,#匹配多个路由交换机,跟topic类似,根据路由键绑定...

2020-04-22 13:24:14 509

原创 .net异步编程async与await

.net异步编程async与await异步编程的好处:异步编程并不能提速请求响应,它只能增加程序的吞吐量,最大限度的提升线程的利用率。讨论之前,我们需要了解一个概念:线程池。线程池微软官方定义:线程池线程是后台线程。 每个线程均使用默认的堆栈大小,以默认的优先级运行,并且位于多线程单元中。 一旦线程池中的线程完成任务,它将返回到等待线程队列中。 这时开始即可重用它。 通过这种重复使用,应...

2020-04-19 18:30:33 411

原创 单例模式的几种实现

public class Singleton { private static Singleton _singleton; //定义一个实例 private static readonly object locks = new object(); //定义一个私有静态类,锁判断 private Singleton() //...

2019-07-19 15:55:32 77

原创 树形结构的json格式封装

话不多说,直接show me the code ,no bb数据库表结构如下:Organization表:Id 主键Name 名称ParentId 父Id数据库的数据如下:很明显,这是一个多层级的结构,我们需要把他组装成一个树形结构,返回给前端:定义一个treeModel类: public class treemodel { pu...

2019-06-10 14:53:41 6399 3

原创 EFcore的并发处理

1.并发定义:多个线程同时执行一个操作,同时修改数据库的数据,导致数据不一致的情况2.并发处理一般情况下,并发处理无非两种,第一种就是加锁:锁的类型,按照思想方法来分,可以分为两种。1.悲观锁。2,乐观锁。第二种处理就是使用队列,将线程入队列,一个一个执行,队列一定要是线程安全的队列。3.悲观并发和乐观并发悲观并发:两个线程同时修改数据库的同一张表,A进入修改,B就不能修改,只...

2019-05-28 15:01:18 3217

原创 docker部署mysql主从复制

1.部署环境:docker虚拟机,win10安装docker虚拟机,具体配置就不介绍了,参考其他文章。Linux虚拟机与本机设置共享目录,以便挂载文件到docker容器,具体配置参考我其他文章。2.下载mysql镜像1.我直接输入的docker pull mysql,下载的mysql最新的镜像,貌似是8以上,具体没看。2.在本地共享目录新建两个mysql配置文件,分别是ma...

2019-05-10 13:57:29 300

原创 .net Equal 与 ==

今天想探究一下,Equal函数与==的区别,做了以下的实验图片上我们定义了两个分别为a,b的字符串,两个分别为AClass,BClass的类,分别用Equals与==,打印出结果:结果图如下: 我们知道string类型是引用类型,同样class也是引用类型,为什么会有不同的结果呢? 因为string是一种特殊的引用类型。string调用Equals比较的是值,而AClass与BCl...

2019-05-07 17:05:34 556

原创 identityserver 权限控制

我们都知道identityserver是一个认证授权的框架,认证是用openid实现的,授权是基于oauth2.0实现的,OpenID 是一个以用户为中心的数字身份识别框架,它具有开放、分散性。OpenID 的创建基于这样一个概念:我们可以通过 URI (又叫 URL 或网站地址)来认证一个网站的唯一身份,同理,我们也可以通过这种方式来作为用户的身份认证。OAuth(开放授权)是一个开放标...

2019-05-06 10:26:21 900

原创 docker 部署.net core

docker部署.net core有多种方式,第一种方式就是创建dockerfile文件部署第二种就是下载microsoft/aspnetcore镜像文件部署,使用如下命令: docker run -p 8001:80 -v /mnt/jars/test:/wwwroot -w /wwwroot/ microsoft/aspnetcore dotnet /wwwroot/tests...

2019-05-05 13:49:48 393

原创 docker挂载目录

起因Window10系统,使用docker -v配置挂载目录,一直挂载不上,后来才知道要在虚拟机里面设置共享目录,如下图:要把你挂载的目录放在这个共享目录下,才可以挂载成功...

2019-05-05 10:34:23 199

转载 docker应用

下面是阮一峰老师的博文,介绍给大家:http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html

2019-05-05 10:30:33 95

转载 常见的http状态码

转载自菜鸟教程:https://www.runoob.com/http/http-status-codes.htmlHTTP状态码当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。HTTP状态码的英文为HTTP Status Code。...

2019-04-29 09:49:01 371

原创 RPC与restful

RPC:百度百科定义为:RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。RPC采用客户机/服务器模式。...

2019-04-28 09:55:07 635

原创 数据库事务

事务定义:事务(Transaction)是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元。事务的ACID原则:事务具有4个基本特征,分别是:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Duration),简称ACID。事务的隔离级别:4个隔离级别分别是:读未提及(READ_UNCOMMITTED)、...

2019-04-26 14:30:15 136

原创 .net的请求流程

WebForm的请求流程:1.首先进入HttpRuntime, 然后通过HttpApplicationFactory创建一个httpApplication对象2.HTTP Application会创建该次请求的HttpContext(上下文), 里面有httprequest,httpResponse, HttpSessionState等3.请求会经过Module,每一个module会对...

2019-04-18 09:32:20 381

原创 Redis缓存一致性

1.前言用过Redis的应该都清楚,redis作为内存缓存,只是他查询快的一大优势,关系型数据库只能用作存储重要数据,或者备份缓存的数据,这个时候,不可避免,我们会遇到缓存中的数据与关系型数据库中的数据不一致的情况。2.为什么会不一致出现不一致的现象很常见,如果你是单个用户肯定不会出现这种情况,如果在多线程并发的情况下,这种不一致的情况,就会变得异常普遍,举个例子,A请求删除缓存成功,...

2019-04-11 17:49:08 977

原创 mysql聚集索引与非聚集索引

说mysql索引之前,先来谈谈mysql的两种数据存储方式,一种是InnoDB,一种是MyISAM。这两种存储都是基于B+树的存储方式,但是也有点不同。MyIsam 索引文件和数据文件是分离的,索引文件仅保存数据记录的地址。主索引和辅助索引没有区别都是非聚集索引。索引页正常大小为1024字节,索引页存放在.MYI 文件中。MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是...

2019-04-02 09:39:44 1740

原创 关于多线程中lock使用

在多线程编程中,可能会有多个线程的并发执行同一段代码,但是在某些情况下需要在同一时刻保证只有一个线程执行,避免某些对象的调用冲突或内存使用冲突,这就需要使用到锁。lock关键字可以用来确保代码块完成运行,而不会被其他线程中断。在同一时刻内只允许一个线程进入执行,而其他线程等待。lock语句获取给定对象的互斥 lock,执行语句块,然后释放 lock。持有 lock 时,持有 lock 的线...

2019-04-01 14:04:21 914

原创 浅谈AsNotracking()

我们都知道EF默认情况下对数据的访问都是启用模型跟踪。Entity Framework在第一次对象加载到内存中时进行一次快照,添加快照发生在返回一次查询或添加一个对象到DbSet中时。当Entity Framework需要知道对象的变动时,将先把当前实体与快照中的对象进行扫描对比。实现扫描对比的方法是调用DbContext.ChangeTracker的DetectChanges方法。  变...

2019-04-01 09:37:02 21977 3

原创 .net core2.0的code first 映射

EF code first与数据表映射方式有两种实现:1.Data Annotation 和 Fluent API.1.Data Annotation方式这种方式就是在字段上面规定字段的属性以及主外键[Column("ProductID")]public int ProductID { get; set; }[MaxLength(100)][Required, Column(...

2019-03-25 13:56:32 341

原创 RedisStackExchange Helper的封装

前述:最开始用的是ServiceStack.Redis,但是从4.0版本开始商业化之后,有每个小时访问次数限制6000次访问。这个就很烦了,后来就改成了使用RedisStackExchange。 public class RedisStackExchange { #region private field private static I...

2019-03-15 10:10:51 411

原创 Redis的五种数据类型详解

Redis简介:Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。Redis 与其他 key - value 缓存产品有以下三个特点:Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。...

2019-03-14 10:25:55 170

原创 漫谈静态变量与静态方法,静态类

静态变量简介:使用static修饰的变量,它属于他所在的类所有,而不是具体的某一个对象,静态变量也被称为全局变量,因为他是属于类所有的,分配在静态存储区域。静态变量的使用:静态变量必须使用类名来引用,而不能使用类的实例,因为,静态变量不属于任何实例,而是共有的。 class Program { static void Main(string[] ar...

2019-03-13 10:47:59 652

原创 mvc过滤器详解

1.过滤器介绍我们知道mvc的运行机制是通过管道完成的,过滤器可以注入一些代码逻辑到请求处理管道中,是基于C#的Attribute的实现。当负责调用Action的类ControllerActionInvoker在调用执行Action的时候会检查Action上面的Attribute并查看这些Attribute是否实现了指定的接口,以便进行额外的代码注入处理。2.过滤器分类:MVC支持的过...

2019-03-12 16:38:48 932

原创 系统自带委托Action与Func详解

1.委托理解 说到委托相信大家都很了解,简单的说,委托相当于是一个指针,但是他是函数指针,他可以将方法当参数一样去传递,这样的好处是什么呢? 这样的好处就是可以在一个地方动态的调用函数。随时随地调用没有任何束缚,甚至可以取代反射。 我们使用反射有时候会反射调用另外一个类的方法,这个时候就可以使用委托替代,毕竟反射是有性能损耗的。2.系统自带委托上文说到委托的理解,这段说说系统内置的...

2019-03-12 14:15:18 587

原创 webapi + dapper+mysql +autofac架构搭建

写在前面:最近没啥事,研究了一下web api的框架, 选型用的是dapper+autofac+mysql, 简单的三层架构,总体框架如下,刚开始没有设计的太复杂:分层介绍:1.APIDapperTool介绍:APIDapperTool里面是封装的dapper的一些dapper的操作,以及对多数据库的支持,dapper是一个轻量级的orm工具,与其说是一个orm,还不如称呼为...

2019-03-08 09:48:23 2134 1

原创 web api集成 swagger

1:认识SwaggerSwagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。作用:1.接口的文档在线自动生成。2.功能测试。2.集成SwaggerSwagger支持we...

2019-03-07 15:11:00 494

原创 .net集成小米推送

    app需要一款推送,纵览市场各种第三方推送,最终选择了小米push,然后去小米官方寻找服务端sdk, 找了很久,没看到.net的sdk。网上百度一圈,看到有人用ikvm将java的jar转成.net的dll,用C#调用java的方法,实现推送。一共就是6个主要的dll文件,代码如下: Constants.useOfficial();//正式环境 ...

2018-11-21 15:11:41 1237

原创 .net mvc 微信支付之企业付款

先说一下功能需求,是关注微信公众号,然后根据用户的输入,判断是否需要从商户账号提现零钱到个人账户。由于这是第一次做公众号的开发,所以看了一下官方文档。第一步要实现的是根据用户的输入关键字,做识别判断是否需要发送领钱到用户,并且回复一条消息,提醒用户。微信公众平台提供了三种消息回复,即文本回复,音乐回复和图文回复。配置公众号后台服务器,启用的时候,需要向服务器地址发送一个get请求,然后用户...

2018-10-10 16:43:04 1992 1

原创 关于接口的安全性设计

    大家都知道,访问一个接口的时候,如果你不做过滤,很容易出问题,比如有人会模拟请求篡改数据,这样就很不安全,因此就要设计一个安全的接口访问方式。    我的想法是在访问接口带上一个访问的令牌即token,这个token的生成可以根据用户Id生成一个字符串,存放在服务器缓存里面,以后每次访问都带上token,光用token还是不够的,还要带上一个签名,这个签名可以借助微信支付里面的方法,生成签...

2018-06-14 18:53:13 1629

原创 解决mongodb查询慢的问题

    最近项目上一直在用mongodb作为数据库,mongodb有他的优势,文档型类json格式存储数据,修改起来比传统的关系型数据库更方便,但是最近在用mongodb出现了查询缓慢的问题,我用命令行查询,显示速度非常快,而且也添加了索引,2万条数据只需要十几毫秒,但是用代码实现却需要好几秒,我调试了代码发现代码生成的查询语句跟我在命令行的查询语句是一样的,我当时就很纳闷。    我当时的代码是...

2018-06-03 00:48:38 34341 6

原创 .net 的SSH操作linux文件

我们知道在开发一个网站的时候,有时候会有多个服务器,一个应用服务器和数据服务器,而且文件服务器一般都是linux系统,那么,今天的问题就来了,就是怎么跨服务器操作linux系统的文件,比如我们要在linux上面做上传文件,下载文件,删除文件等操作呢?下面开始我们的主题。不知道大家有没有听过Rechi.SSHNet类库,这个类库是开源的,用SFTP协议操作文件,它是基于协议。using Sy

2017-04-12 17:48:06 889

原创 Asp.net mvc的FormsAuthentication验证

Form验证是微软给开发人员提供的一个类,它的作用是用户登录之后,把相关信息写到cookie里面,然后设置一个过期时间,如果在这个有效时间内,用户无需登录,否则,cookie失效,用户需要重新登录。废话不多说,先上代码:首先,我们写一个类,这个类保存用户的基本信息,就是保存到cookie里面的信息: [Serializable()] public class Identi

2017-03-25 12:36:07 1086

原创 集成微信三方登陆实现

app端,网页端的三方登陆,需要申请相关的token或者id什么的微信登录第一步,用户同意,获取code,这一步,就是让用户点击“https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=ST

2017-03-24 17:29:20 393

原创 asp.net mvc微信支付服务端 demo

微信的开发文档没有服务器端的demo,然后我就找了一些资料做了一下,没想到一次就成功了,记录一下。第一步获取prepay_id UnifiedOrder uo = new UnifiedOrder(); uo.appid = appid; uo.mch_id = mch_id;

2017-03-23 14:42:30 1914

原创 asp .net mvc支付宝支付服务端demo

本来支付宝支付不需要服务端提供什么代码的,最多就是存储一些公钥和私钥,但是为了安全,最好还是要在服务端提供支付宝的回调,毕竟客户端是不可相信的。看了一下支付宝的开发文档,比微信支付的开发文档详细得多,微信开发文档,我竟然没找到服务端的一些demo,我也是醉了。 简单的来讲,支付宝支付分为三步第一步:拼接参数 biz_content = "{\"timeout_expres...

2017-03-20 15:48:11 6528 3

原创 Mongodb缓存的使用

由于担心项目性能问题,最初的数据库设计就一直有缓存服务器,用的最多的还是mongodb,今天,我就简单谈谈mongodb在项目中的使用。其实,我使用mongodb最多的是用于查询,确实,作为nosql数据库,查询的效率确实高于关系型数据库,这个无可厚非,但是我们还是有必要用到关系型数据库,sql server,  mysql 或者 oracle。毕竟关系型数据库存在了这么多年,还是比较稳定和安

2017-03-17 18:02:20 17119 1

.net core框架,下载即可用

一个自己搭建的.net core框架,下载即可用,包含了授权验证,日志,swagger等等基本功能,技术栈:.net core + ef core + ids4+ swagger+nlog+layui

2020-04-08

ES ik分词代码

Es基于Lucene分词搜索, 自带ik中文分词解释器,适合中文搜索

2018-06-02

抽奖算法的代码

抽奖算法,概率控制, 适合转盘抽奖等使用,误差很小地方

2018-06-02

Rechi.SSHNet 代码示例

这是.net的一个开源库,里面有代码示例仅供参考

2017-04-13

Rechi.SSHNet

2017-04-12

.net开发平台基础

.net开发平台基础 C_与[1].NET开发平台与基础.ppt

2013-11-14

Android开发课程

Android游戏开发,Angle Rokon LGame AndEngine libgdx jPCT Alien3d Catcake

2013-03-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除