c#总结最近的几项重要代码
java的代码就不说了,毕竟不是我的主业。
1.c#数据库连接池Hikari.
(1)动态加载各类数据库驱动
(2)支持简单配置文件
(3)支持按照名称多数据库调用
(4)使用简洁
单数据库使用:
HikariConfig hikariConfig = new HikariConfig();
hikariConfig.LoadConfig("Hikari.txt");
HikariDataSource hikariDataSource = new HikariDataSource(hikariConfig);
获取连接:
hikariDataSource.GetConnection();
连接池管理类获取
ManagerPool.Instance.GetDbConnection(MySql);
项目地址:
https://github.com/jinyuttt/Hikari.git
2.c#数据库封装DBQuerySharp
(1)各类数据库均有,功能齐备
(2)有SQL,NoSQL样例,完善了封装
(3)封装成了服务化模型。扩展使用和优化
(4)有查询的缓存优化样例。
整个包括了SQL数据库(连接池任意配置),本地KV数据库(berkeleydb),本地SQL数据库(Sqlite),内存SQL数据库(Sqlite),内存NOSQL数据库(redis),内存KV存储(LRU缓存)
(5)相关项目
1.sqilte 2.berkeleydb 3.一般数据库使用(通过Hikari) 4.redis 包含其他项目: 1.序列化 2.通信 3.自定义数据库连接池
项目地址:
https://github.com/jinyuttt/DBQuerySharp.git
3.本地缓存JYCache
(1)完全本地换K-V缓存
(2)实现FIFO,LRU,LFU策略
使用示例:
CacheConfig config = new CacheConfig();
config.CacheTime = 1800;//(时间都是秒)
config.Policy = CachePolicy.FIFO;//设置消失策略
ICache<int,int> cache=CacheFactory<int, int>.Create(config);
cache.CacheRemoveListener += Cache_CacheRemoveListener;
cache.Add(1, 1,10);//单独设置key保持10秒
项目地址:
https://github.com/jinyuttt/JYCache.git
4.Hash一直负载均衡LoadBalanceHash
(1)实现Hash一致算法。算法原理网上搜索很多,我就不说了。只需要搜索“Hash一致”
(2)这方面我不擅长,主要是参阅网友的东西。我的封装包括了2个项目。一个是网上原理KetamaHash .
(3)主要参阅:https://www.cnblogs.com/daizhj/archive/2010/08/24/1807324.html;
https://blog.csdn.net/cywosp/article/details/23397179/
(4)代码说明
参考网上的代码就不说了,一模一样。主要是MD5+SortedList.
这里说我测试的另外一个组合。MurmurHash+SortedList.这个是充分验证了效率的。
MurmurHash算法比较快,网上多少MD5.用法基本可以一样,但是我没有使用原来进行分组了。底层存储我测试了SortedDictionary,SortedList以及自定义红黑树(gi网友的,可以使用)。他们的主要问题都是在获取Key右侧最近的节点。都没有提供现成的。所以测试很慢。
最后测试MurmurHash+SortedList.但是多了一层封装。我将其SortedList与红黑树合并(也可以直接自己封装一个类结构,项目中也有样例)。在初始化时,数据添加到红黑树中。然后通过UpdateSort快速遍历,将数据导入SortedList存储使用,这样就启用了其中为Hash一致封装的功能TialNode.但是这里不能使用网上的方法,用linq查询,太慢。我在内部直接使用二分法进行搜索。后面说原因。采用这种办法会很快,而且直接返回最右侧的一个值。这里强调一个问题,不能使用多线程分片查询,更加慢。经过测试,每个线程都是一样的时间,和应该线程直接查询一样的时间使用。都是很短的时间大约一个线程30-800(比毫秒还小的那个单位)。我测试使用的分片方法任然在,但是不能使用。这个可能和数据量有关,一个线程的数据量没有千万级就不要测试了,二分法的方法已经够快了,一次干掉一般的数据,没有几次就结束了。
最后说说碰上的一个小问题:比较SortedDictionary, SortedList。我推荐一篇文章,是我自己查阅源码(net core)之后,认为这篇文章是真实的。博文地址:https://blog.csdn.net/ma_jiang/article/details/78600043。我比较认可。也正是由于2者的结构,所以我最后采用SortedList来实现Hash一致。
关于这个问题说2点:SortedList内存小,而且是线性数组实现的Key与value。SortedDictionary则是二叉树。查询一个是二分法,一个是二叉树。另外一个困惑是,我采用红黑树搜索居然达不到它们2者的速度,我感觉奇怪。后面我再继续测试吧。
项目地址:
https://github.com/jinyuttt/LoadBalanceHash.git
转载于:https://www.cnblogs.com/jinyu20180311/p/10386297.html
c#总结最近的几项重要代码相关推荐
- boot spring 简拼_超牛逼的下拉字典框架,支持拼音简拼搜索,代码项、代码值搜索,无限层级级联,多选、过滤自定义数据表等等...
Dic扩展模块 Dic数据字典模块是v-ci的核心之一,为解决大数据量下拉字典效率及操作问题,特推出通用的数据字典模块,所有字典数据可在数据库维护,在大数据量时采用分页下拉的展示方式,同时支持拼音简拼 ...
- C++添加程序到windows的启动项的代码
如下内容内容是关于C++添加程序到windows的启动项的内容,希望能对大伙有较大帮助. TCHAR exepath[MAX_PATH]; GetModuleFileName(0, exepath, ...
- C/C++新建注册表项【代码示例】
使用Windows API 函数中的RegCreateKeyEx函数来实现对注册表新建注册表项. RegCreateKeyEx函数: 原形:LONG RegCreateKeyEx( ...
- 虚拟键盘:十六进制值和鼠标或键盘等效项。 代码按数字顺序列出
Virtual-Key Codes (Winuser.h) - Win32 apps | Microsoft Learn 虚拟键码 (Winuser.h) - Win32 apps | Microso ...
- 白加黑过360启动项工具源码发布 多文件过启动项代码
(新编辑)原由 没有想到这个工具发布出来居然有一些人不会用,这是我写的,用来过360启动项的一个工具. 现在修改一下本文章来经行简单讲述. 可能我发布图片的时候发布的比较迷惑,做的是反的,懒得换图了不 ...
- 30个Python常用极简代码,拿走就用
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨Fatos Morina 来源丨Python 技术 编辑丨极市 ...
- 从一个面试题看程序员的几项基本功
点击上方蓝字设为星标 下面开始今天的学习- 前言 一个优秀的程序员具备挺多特质的,比如好奇心,学习能力等,但在我看来一个优秀的程序员必须具备几项核心能力,哪几项,先卖个关子,程序员最喜欢说的话是「Ta ...
- 30 段极简 Python 代码:这些小技巧你都 Get 了么?
选自 | towardsdatascienc 编译 | 机器之心 学 Python 怎样才最快,当然是实战各种小项目,只有自己去想与写,才记得住规则.本文是 30 个极简任务,初学者可以尝试着自己实现 ...
- 1、存在如下数列1、1、2、4、7、13、24、44、81、149......现要求该数列第n项的值(n从O开始算)。 程序运行结果: 1/2 输入:4 输出:7 输入:9 输出:149
** 题目 ** /* 1.存在如下数列1.1.2.4.7.13.24.44.81.149-现要求该数列第n项的值(n从O开始算). 程序运行结果: 1/2 输入:4 输出:7 输入:9 输出:149 ...
最新文章
- 关于OPC自动化接口编程(OPCDAAuto.dll)几点注意问题
- Android大图片裁剪终极解决方案
- spring aop 必须的包 及里面用到的东西_学习Spring的思考框架
- MySQL5.7--项目数据库不同出现的问题
- ArcGIS AddIN之工具不可用
- 计算机算法设计与分析 递归实现归并排序和非递归实现归并排序
- 用IO多路复用,实现每秒百万并发的原理你懂吗?
- RSA、DSA算法原理与举例
- 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第4节 等待唤醒机制_4_Object类中wait带参方法和notifyAll方法...
- 软盘镜像_软盘表示保存,还有14个其他老人图标不再有用
- 推荐16个前端必备的实用工具与网站
- 计算机的颜色英语怎么说,颜色的英文是什么怎么说
- 跑路潮来临:解散社群,深夜遁逃,卷走百亿资金
- 我的个人知识管理PKM
- 储存卡数据怎么恢复?教你几招解决
- VirtualXposed框架里点权限管理-XPrivacyLua下载安装失败
- Circos从入门到精通
- 『杭电1900』Gangs
- Latex学习笔记(五)——Latex模板学习总结
- BME相关SCI期刊
热门文章
- 基于设计模式的学习之旅-----访问者模式(附源码)
- UVa 10051 Tower of Cubes(类似LIS)
- EntityCURD操作的参数和返回值
- 《The Sixth Sense》(《灵异第六感》)观后
- 【Leetcode】刷题之路2(python)
- 最长连续子序列nlogn算法
- usaco ★Humble Numbers 丑数
- abb机器人指令手册_ABB机器人可以告别示教器啦
- nginx不同server不同日志文件_招标里的答疑是什么?和澄清文件有何不同?
- java 汇率使用的数据类型_Flink计算支持的数据类型