Loading

随笔分类 -  C#

摘要:TOTP 介绍及基于C 的简单实现 Intro TOTP 是基于时间的一次性密码生成算法,它由 "RFC 6238" 定义。和基于事件的一次性密码生成算法不同 "HOTP" ,TOTP 是基于时间的,它和 HOTP 具有如下关系: 其中: T:T = (Current Unix time T0) / 阅读全文
posted @ 2019-04-22 16:09 WeihanLi 阅读(3501) 评论(4) 推荐(1)
摘要:现在我们的类库项目大多是 NETStandard2.0 项目,但是 netstandard2.0 只是一个标准接口定义,具体的实现还是要看实际运行的框架,如 netfx47 或 netcoreapp2.1,可能在大部分情况下,对外表现是一致的,但是,某一些 API 可能会不一致,这里就开一篇文章收集我所遇到的表现不一致的API。这里介绍 EmailAddressAttribute 的实现 阅读全文
posted @ 2019-04-17 14:30 WeihanLi 阅读(1453) 评论(2) 推荐(5)
摘要:WeihanLi.Redis自定义序列化及压缩方式 Intro "WeihanLi.Redis" 是基于 "StackExchange.Redis" 的扩展,提供了一些常用的业务组件和对泛型的更好支持,默认使用 JSON.Net 为基础的 JSON序列化,使用 GZip 进行数据压缩。 从 1.3. 阅读全文
posted @ 2019-04-13 17:17 WeihanLi 阅读(934) 评论(1) 推荐(0)
摘要:一个更好用的处理 HTTP 请求的API 阅读全文
posted @ 2019-03-17 00:58 WeihanLi 阅读(3232) 评论(8) 推荐(1)
摘要:在 Linux 下经常可以发现有些目录/文件名,以及有些工具可以命令输入几个字母之后按 TAB 自动补全,最近发现其实 dotnet cli 也可以,从.NET Core 2.0 SDK 开始,NET Core CLI 支持 tab 自动补全。你如果已经装了 dotnet Core Sdk,但是不知道版本,可以在命令行中输入 `dotnet --info` 来查看版本信息。 阅读全文
posted @ 2019-01-26 13:54 WeihanLi 阅读(1073) 评论(1) 推荐(2)
摘要:最近发现 csv 文件在很多情况下都在使用,而且经过大致了解,csv 格式简单,相比 excel 文件要小很多,读取也很是方便,而且也很通用,微软的 [ml.net](https://github.com/dotnet/machinelearning) 的[示例项目](https://github.com/dotnet/machinelearning-samples) 用来训练模型的数据也是使用的 csv 来保存的,最近又发现使用 jmeter 来测试网站的性能,也可以用 csv 来参数化请求,csv 文件操作的重要性由此可见。 此前做了一个 NPOI 的扩展 [WeihanLi.Npoi](https://github.com/WeihanLi/WeihanLi.Npoi),支持.net45 以及 .netstandard2.0及以上,主要是对 excel 文件的操作,于是打算再增加一些对csv的操作。 阅读全文
posted @ 2019-01-21 00:45 WeihanLi 阅读(1034) 评论(5) 推荐(1)
摘要:给 写一个 扩展方法 Intro 在 .net core 中,微软已经默认使用 appsettings.json 来代替 app.config,并重新设计了一套完整的配置系统,可以支持 json/xml/ini/环境变量等。 在 .net core 中有一个 的扩展方法用来比较方便的获取链接字符串, 阅读全文
posted @ 2019-01-18 00:00 WeihanLi 阅读(1684) 评论(2) 推荐(2)
摘要:EFCore使用JSON_VALUE查询json对象的值 Intro SqlServer 从2016开始支持 JSON 操作,可以使用 JSON_VALUE 查询 JSON 对象的某个属性值, "更多介绍" ,现在公司的一些项目主要是使用 EF Core,手写sql较少,针对比较简单的 JSON_V 阅读全文
posted @ 2019-01-15 23:51 WeihanLi 阅读(5999) 评论(5) 推荐(3)
摘要:HttpWebRequest 改为 HttpClient 踩坑记 请求头设置 Intro 这两天改了一个项目,原来的项目是.net framework 项目,里面处理 HTTP 请求使用的是 WebReauest,但是 WebRequest 已经不再推荐使用了,你如果在项目中使用的话,编译器会警告, 阅读全文
posted @ 2019-01-12 00:10 WeihanLi 阅读(4496) 评论(2) 推荐(1)
摘要:借助表达式树感受不一样的CRUD Intro 最近有个想法,想不写 sql 语句,做一个类似于 ORM 的东西,自己解析表达式树,生成要执行的 sql 语句,最后再执行 sql 语句,返回相应结果。 思路解析 常用的 sql 语句基本都有一定的模式,就是 /`DELETE Update SELECT 阅读全文
posted @ 2019-01-06 17:46 WeihanLi 阅读(539) 评论(0) 推荐(0)
摘要:让 .Net 更方便的导入导出Excel Intro 因为前一段时间需要处理一些 excel 数据,主要是导入/导出操作,将 Excel 数据转化为对象再用程序进行处理和分析,没有找到比较满意的库,于是就自己造了一个轮子,屏蔽掉了 xlsx 与 xls 的差别,屏蔽了 Npoi 操作 Excel 的 阅读全文
posted @ 2018-11-22 23:09 WeihanLi 阅读(1884) 评论(1) 推荐(10)
摘要:现在的开发中越来越看重依赖注入的思想,微软的 Asp.Net Core 框架更是天然集成了依赖注入,那么在单元测试中如何使用依赖注入呢? 本文主要介绍如何通过 XUnit 来实现依赖注入, XUnit 主要借助 SharedContext 来共享一部分资源包括这些资源的创建以及释放。 阅读全文
posted @ 2018-10-08 17:18 WeihanLi 阅读(2092) 评论(4) 推荐(3)
摘要:.NET 性能优化小技巧 Intro 之前做了短信发送速度的提升,在大师的指导下,发送短信的速度有了极大的提升,学到了一些提升 .NET 性能的一些小技巧 HttpClient 优化 关于使用 ,大概很多人都知道尽量使用单例以提升 的性能。 由于 在发送请求时需要进行域名解析,使用的时候第一次一般来 阅读全文
posted @ 2018-07-27 18:47 WeihanLi 阅读(1912) 评论(1) 推荐(1)
摘要:程序集版本 一个程序集会有三个版本,每个版本都是做什么的呢,我们来看一下,每个版本号的用途及正确用法: 版本号 示例版本号: Major(主版本号)|Minor(次版本号)|Build(内部版本号)|Revision(修订号) | | | 2 | 3 | 719 | 5 前两个编号构成了公众对版本的 阅读全文
posted @ 2018-07-19 16:09 WeihanLi 阅读(1347) 评论(1) 推荐(1)
摘要:.NET Orm 性能测试 简介 "OrmBenchmark" 这个项目主要是为了测试主要的Orm对于 SqlServer 数据库的查询并将数据转换成所需 POCO 对象的耗时情况(好吧,实际上不完全orm,更像是SqlMapper ...) 测试结果: .NetFramework 4.6 有预热 阅读全文
posted @ 2018-05-20 18:46 WeihanLi 阅读(3919) 评论(25) 推荐(9)
摘要:项目基于 .NETStandard,同时支持 asp.net mvc(.NET faremwork4.5以上) 和 asp.net core 项目(asp.net 2.0以上),基于 ASP.NET MVC 和 ASP.NET Core 实现的对 `Action` 的访问控制以及页面元素的权限控制。 阅读全文
posted @ 2018-05-17 09:52 WeihanLi 阅读(3216) 评论(3) 推荐(2)
摘要:C 语言特性发展史 Intro 本文主要总结介绍C 每个版本带来的不同的语言特性。 C ,读作C Sharp,是微软推出的一种基于.NET平台的、面向对象的高级编程语言。是微软公司在2000年发布的一种新的编程语言,主要由安德斯·海尔斯伯格(Anders Hejlsberg)主持开发,它是第一个面向 阅读全文
posted @ 2018-05-13 22:59 WeihanLi 阅读(1342) 评论(7) 推荐(5)
摘要:StackExchange.Redis 扩展,更简单的泛型操作,并提供一些的适用于业务场景中的扩展 阅读全文
posted @ 2018-05-01 21:46 WeihanLi 阅读(736) 评论(1) 推荐(2)
摘要:WeihanLi.Npoi Intro Npoi 扩展,适用于.netframework4.5及以上和netstandard2.0, .netframework基于 "NPOI" , .netstandard基于 "DotNetCore.NPOI" NpoiExtensions for target 阅读全文
posted @ 2018-04-28 13:43 WeihanLi 阅读(1735) 评论(3) 推荐(1)
摘要:隐藏手机号、邮箱等敏感信息 Intro 做项目的时候,页面上有一些敏感信息,需要用“*”隐藏一些比较重要的信息,于是打算写一个通用的方法。 Let's do it ! Method 1:指定左右字符数量 Method 1.1 中间的*的个数和实际长度有关 Method 1.2 : 中间的*的个数固定 阅读全文
posted @ 2016-09-14 17:14 WeihanLi 阅读(2301) 评论(2) 推荐(0)