摘要: C 语言特性发展史 Intro 本文主要总结介绍C 每个版本带来的不同的语言特性。 C ,读作C Sharp,是微软推出的一种基于.NET平台的、面向对象的高级编程语言。是微软公司在2000年发布的一种新的编程语言,主要由安德斯·海尔斯伯格(Anders Hejlsberg)主持开发,它是第一个面向阅读全文
posted @ 2018-05-13 22:59 WeihanLi 阅读(674) 评论(7) 编辑
摘要: 我们的 API 之前是一个单体应用,各个模块的服务是通过 Assembly 集成在一起,最后部署在一个 web server 下的。 我们已经在拆分服务并且在 [Ocelot](https://github.com/ThreeMammals/Ocelot) 的基础上封装了我们自己的网关,但是服务还没有完全拆分,于是有这么一个需求,对于 Ocelot 配置的路由去交给 Ocelot 去转发到真正的服务地址,而那些 Ocelot 没有定义的路由则让交给 `AspNetCore` 去处理。阅读全文
posted @ 2019-05-22 17:28 WeihanLi 阅读(373) 评论(8) 编辑
摘要: 健康检查可以帮助我们知道应用的当前状态是不是处于良好状态,现在无论是 docker 还是 k8s 还是现在大多数的服务注册发现大多都提供了健康检查机制来检测应用的健康状态,如果应用本身就提供一个健康检查的机制会更友好,更能真实的反映出应用的健康状态。 我们的开发环境虚拟机配置有点低,所以有时候虚拟机会卡死。。导致接口无响应,有时可能有些服务启动有问题会挂掉,所以需要一个简单的健康检查机制去检查应用的健康状态来第一时间知道应用出现异常。阅读全文
posted @ 2019-05-15 11:04 WeihanLi 阅读(951) 评论(3) 编辑
摘要: 我们在使用前后端分离的模式进行开发的时候,如果前端项目和api项目不是一个域名下往往会有跨域问题。今天来介绍一下我们在Ocelot网关配置的跨域。阅读全文
posted @ 2019-05-11 10:51 WeihanLi 阅读(319) 评论(1) 编辑
摘要: 最近在用 nodejs 写爬虫,之前的 nodejs 爬虫代码用 js 写的,感觉可维护性太差,也没有智能提示,于是把js改用ts(typescript)重写一下,提升代码质量。 爬虫启动之后不定期会出现验证码反爬虫,需要输入验证码才能继续,于是想在需要输入验证码时推送一个消息给用户,让用户输入验证码以继续爬虫的整个流程。我们平时用钉钉办公,钉钉群有个机器人,很方便于是就实现了一个通过钉钉的群机器人实现消息推送。阅读全文
posted @ 2019-05-03 15:40 WeihanLi 阅读(102) 评论(0) 编辑
摘要: TOTP 介绍及基于C 的简单实现 Intro TOTP 是基于时间的一次性密码生成算法,它由 "RFC 6238" 定义。和基于事件的一次性密码生成算法不同 "HOTP" ,TOTP 是基于时间的,它和 HOTP 具有如下关系: 其中: T:T = (Current Unix time T0) /阅读全文
posted @ 2019-04-22 16:09 WeihanLi 阅读(158) 评论(0) 编辑
摘要: 我把配置放在了数据库或者是Redis里,配置需要修改的时候我要直接修改数据库,然后调用一个接口去重新加载应用配置,于是就尝试写一个运行时重新加载配置的接口。阅读全文
posted @ 2019-04-19 19:27 WeihanLi 阅读(339) 评论(2) 编辑
摘要: 现在我们的类库项目大多是 NETStandard2.0 项目,但是 netstandard2.0 只是一个标准接口定义,具体的实现还是要看实际运行的框架,如 netfx47 或 netcoreapp2.1,可能在大部分情况下,对外表现是一致的,但是,某一些 API 可能会不一致,这里就开一篇文章收集我所遇到的表现不一致的API。这里介绍 EmailAddressAttribute 的实现阅读全文
posted @ 2019-04-17 14:30 WeihanLi 阅读(549) 评论(3) 编辑
摘要: 我们的 Centos 服务器上部署了好多个 docker 容器,因故重启的时候就会导致还得手动去手动重启这些 docker 容器,为什么不写个脚本自动重启呢,于是就有了这篇文章。阅读全文
posted @ 2019-04-16 20:02 WeihanLi 阅读(101) 评论(0) 编辑
摘要: WeihanLi.Redis自定义序列化及压缩方式 Intro "WeihanLi.Redis" 是基于 "StackExchange.Redis" 的扩展,提供了一些常用的业务组件和对泛型的更好支持,默认使用 JSON.Net 为基础的 JSON序列化,使用 GZip 进行数据压缩。 从 1.3.阅读全文
posted @ 2019-04-13 17:17 WeihanLi 阅读(71) 评论(1) 编辑
摘要: 基于docker镜像的应用自动部署到k8s集群阅读全文
posted @ 2019-04-08 15:19 WeihanLi 阅读(151) 评论(0) 编辑