代码改变世界

10分钟了解一致性hash算法

2019-08-06 11:32 by 李明成, 1907 阅读, 4 推荐, 收藏, 编辑
摘要:应用场景 当我们的数据表超过500万条或更多时,我们就会考虑到采用分库分表;当我们的系统使用了一台缓存服务器还是不能满足的时候,我们会使用多台缓存服务器,那我们如何去访问背后的库表或缓存服务器呢,我们肯定不会使用循环或者随机了,我们会在存取的时候使用相同的哈希算法定位到具体的位置。 简单的哈希算法 阅读全文

10分钟了解分布式CAP、BASE理论

2019-07-31 21:00 by 李明成, 3449 阅读, 3 推荐, 收藏, 编辑
摘要:CAP理论 2000年7月,Eric Brewer教授提出CAP猜想;2年后,Seth Gilbert和Nancy Lynch从理论上证明了CAP;之后,CAP理论正式成为分布式计算领域的公认定理。 CAP定律说的是在一个分布式计算机系统中,一致性,可用性和分区容错性这三种保证无法同时得到满足,最多 阅读全文

阅读nopcommerce startup源码

2019-07-29 17:26 by 李明成, 946 阅读, 3 推荐, 收藏, 编辑
摘要:ConfigureServices方法:注册服务到容器中,在整个应用中都可以使用。推荐:自定义方法以Add开头 Configure方法:为应用配置请求管道.推荐:自定义方法以Use开头 这里并会深入的探讨依赖注入和IApplicationBuilder、IServiceCollection这些核心对 阅读全文

基于Masstransit实现Eventbus的功能

2019-07-24 17:04 by 李明成, 1236 阅读, 4 推荐, 收藏, 编辑
摘要:Masstransit 是一个非常优秀的基于消息进行通信的分布式应用程序框架,详情参考官网。 在介绍AA.ServiceBus开源地址:https://github.com/ChengLab/AAFrameWork 之前,先介绍下几个概念. 分布式 分布式系统如何定义?这里引用一下Distribut 阅读全文

使用FluentMigrator进行数据库迁移

2018-11-10 11:34 by 李明成, 2312 阅读, 1 推荐, 收藏, 编辑
摘要:介绍 在开发的过程中,经常会遇到数据库结构变动(表新增、删除,表列新增、修改、删除等)。开发环境、测试环境、正式环境都要记性同步;如果你使用EF有自动迁移的功能,还是挺方便的。如果非EF我们需要手工处理,有时候会忘记,繁琐。恰好 网上有提供的工具来实现类似EF的迁移功能。如:SQL Server D 阅读全文

3分钟了解数据库事务

2018-11-07 15:22 by 李明成, 708 阅读, 2 推荐, 收藏, 编辑
摘要:事务是由几个读取和修改数据的sql命令组成的,但是知道commit命令被执行之后,修改操作才被认为是正常的完成。显式事务常以Begin tran语句开头,以commit tran或者rollback tran语句结尾的。 事务具有acid属性 原子性(atomicity):原子性指的是每个事务要不提 阅读全文

Redis事务

2018-11-05 13:27 by 李明成, 701 阅读, 1 推荐, 收藏, 编辑
摘要:Redis事务和实现 Redis事务可以让一个客户端在不被其他客户端打断的情况下执行多个命令。通过使用Multi标记一个事务块的开始,把事务块内的多条命令,按照先后顺序放进一个队列当中,最后执行Exec命令原子性执行。 与事务相关的几个命令 Redis 乐观锁 CAS主要解决原子性操作的问题。比如用 阅读全文

Rpc简单入门

2018-07-31 09:40 by 李明成, 1478 阅读, 2 推荐, 收藏, 编辑
摘要:RPC这个概念大家都应该很熟悉了,这里不在累述了;使用场景可以参考这篇,本篇主要分享下Thrift和Grpc在.Net Core环境下使用入门。Thirft或者Grps 都支持跨语言、跨平台的Rpc框架。编写IDL文件通过其强大的代码生成引擎生成C#代码,然后编写服务器端和客户端代码进行交互。 Th 阅读全文

对话Task

2018-06-30 15:26 by 李明成, 867 阅读, 1 推荐, 收藏, 编辑
摘要:上一篇简单讲解了 线程和线程池以及上下文切换。创建线程代价高昂,默认每个线程都要占用大量虚拟内存1M。更有效的做法使用线程池,重复利用线程。在.NET4.0中引入了TPL任务并行库,你可以在将精力集中于程序要完成的工作,同时最大程度地提高代码的性能。在C#5.0中引入了async 和 await关键 阅读全文

对话线程

2018-06-23 15:41 by 李明成, 496 阅读, 0 推荐, 收藏, 编辑
摘要:大部分程序员对线程这个概念印象深刻,不是在项目中用到了线程,而是来自面试官的对话。 线程和进程的区别是什么?你可以回忆下你当时的答案,可以在评论去写出来大家共享自己的理解。 进程 运行中的程序实例就叫进程;也就是说一个程序加载到内存后就变成了进程。 进程空间也称为地址空间。地址空间就是进程要用的所有 阅读全文