自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

素履独行 | 元培的个人博客

素履以往,心之所向;一苇以航,直达远方。

  • 博客(334)
  • 资源 (3)
  • 收藏
  • 关注

原创 SSLTLS加密传输与数字证书的前世今生

Hi,大家好,我是飞鸿踏雪,欢迎大家关注我的博客。近来,博主经历了一次服务器迁移,本以为有 Docker-Compose 加持,一切应该会非常顺利,没想到最终还是在证书上栽了跟头,因为它的证书是和IP地址绑定的。对,你没听错,这个世界上还真就有这么别扭的设定,尤其是你折腾了一整天,发现你需要到一个 CA 服务器上去申请证书的时候,那种绝望你晓得吧?数字证书、HTTPS、SSL/TLS、加密……无数的词汇在脑海中席卷而来,这都是些啥啊?为了解答这些困惑,经历了写字、画图、查资料的无数次轮回,终于在周末两天淅淅

2021-09-09 15:01:27 297

原创 使用 Python 自动识别防疫二维码

这个月月初的时候,朋友兴奋地和我描述着他的计划——准备带孩子到宁夏自驾游。朋友感慨道,“小孩只在书本上见过黄河、见过沙漠,这样的人生多少有一点遗憾”,可正如新冠病毒会变异为德尔塔一样,生活里唯一不变的变化本身,局部地区疫情卷土重来,朋友为了孩子的健康着想,不得不取消这次计划,因为他原本就想去宁夏看看的。回想过去这一年多,口罩和二维码,是每天打交道最多的东西。也许,这会成为未来几年里的常态。在西安,不管是坐公交还是地铁,都会有人去检查防疫二维码,甚至由此而创造了不少的工作岗位。每次看到那些年轻人,我都有种失落

2021-08-20 15:56:56 2336

原创 你不可不知的容器编排进阶技巧

在团队内推广Docker Compose有段时间啦,值得庆幸的是,最终落地效果还不错,因为说到底,大家都不大喜欢,那一长串复杂而枯燥的命令行参数。对我而言,最为重要的一点,团队内使用的技术变得更加透明化、标准化,因为每个微服务的配置信息都写在docker-compose.yml文件中,任何人都可以快速地构建出一套可用的服务,而不是每次都要去找具体的某一个人。我想说,这其实是一个信息流如何在团队内流动的问题。也许,我们有文档或者Wiki,可新人能不能快速融入其中,这才是检验信息流是否流动的唯一标准。就这样,团

2021-08-16 20:20:25 300

原创 ASP.NET Core 搭载 Envoy 实现 gRPC 服务代理

在构建以 gRPC 为核心的微服务架构的过程中,博主曾经写过一篇名为 ASP.NET Core gRPC 打通前端世界的尝试 的文章,主要是希望打通 gRPC 和 前端这样两个异次元世界,因为无论我们构建出怎样高大上的微服务架构,最终落地的时候,我们还是要面对当下前后端分离的浪潮。所以,在那篇文章中,博主向大家介绍过 gRPC-Web 、gRPC-Gateway 、封装 API 、编写中间件 这样四种方案。我个人当时更喜欢编写中间件这种方案,甚至后来博主进一步实现了 gRPC 的 “扫描” 功能。当时,博主

2021-08-08 19:59:50 322

原创 再话AOP,从简化缓存操作说起

AOP,即:面向切面编程,关于这个概念,博主其实写过好几篇博客啦!从这个概念,我们可以引申出诸如代理模式、动态代理、装饰器模式、过滤器、拦截器等等相互关联的概念。从实现方式上而言,微软官方的 .NET Remoting 提供了真实代理和透明代理的支持,我们熟悉的 WebService 和 WCF 均和这项技术息息相关,作为最早的分布式 RPC 解决方案,其本身更是与客户端的动态代理密不可分。或许,各位曾经接触过 Unity、Castle、AspectCore、PostSharp 等等这些支持 AOP 特性的

2021-08-04 13:36:59 233

原创 ASP.NET Core 搭载 Envoy 实现微服务身份认证(JWT)

在构建以 gRPC 为核心的微服务架构的过程中,得益于 Envoy 对 gRPC 的“一等公民”支持,我们可以在过滤器中对gRPC服务进行转码,进而可以像调用 Web API 一样去调用一个 gRPC 服务。通常情况下, RPC 会作为微服务间内部通信的信使,例如,Dubbo、Thrift、gRPC、WCF 等等更多是应用在对内通信上。所以,一旦我们通过 Envoy 将这些 gRPC 服务暴露出来,其性质就会从对内通信变为对外通信。我们知道,对内和对外的接口,无论是安全性还是规范性,都有着相当大的区别。博主

2021-07-24 18:15:00 564

原创 ASP.NET Core 搭载 Envoy 实现微服务的可视化监控

在构建微服务架构的过程中,我们会接触到服务划分、服务编写以及服务治理这一系列问题。其中,服务治理是工作量最密集的一个环节,无论是服务发现、配置中心、故障转移、负载均衡、健康检查……等等,这一切的一切,本质上都是为了更好地对服务进行管理,尤其是当我们面对数量越来越庞大、结构越来越复杂的集群化环境的时候,我们需要一种科学、合理的管理手段。博主在上一家公司工作的时候,每次一出现线上故障,研发都要第一时间对问题进行排查和处理,而当时的运维团队,对于微服务的监控止步于内存和CPU,无法系统而全面的掌握微服务的运行情况

2021-07-12 13:19:41 590

原创 ASP.NET Core 搭载 Envoy 实现微服务的负载均衡

如果说,我们一定要找出一个词来形容这纷繁复杂的世界,我希望它会是熵。有人说,熵增定律是宇宙中最绝望的定律,所谓熵,即是指事物混乱或者无序的程度。在一个孤立系统下,熵是不断在增加的,当熵达到最大值时,系统就会出现严重混乱,直至最终走向死亡。从某种意义上来讲,它揭示了事物结构衰退的必然性,甚至于我们的人生,本来就是一场对抗熵增的旅程。熵增的不可逆性,正如时光无法倒流一般,古人说,“覆水难收”正是这个道理。同样地,当我们开始讨论微服务的划分/编写/治理的时候,当我们使用服务网格来定义微服务架构的时候……我们是否有

2021-07-06 08:39:21 318

原创 ASP.NET Core 搭载 Envoy 实现微服务的反向代理

本文内容走近 EnvoyEnvoy配置文件侦听器(Listeners)过滤器(Filters)集群(Clusters)负载均衡(Load Assignment)管理(Admin)服务编排本文小结参考文档第一次接触到Envoy,其实是在微软的示例项目 eShopOnContainers 。当时,博主并没有对它做深入的探索,直到最近,需要在一个项目中用到Envoy,终于决定花点时间来学习一下相关内容。所以,接下来这几篇博客,大体上会记录我学习Envoy的过程。考虑到Envoy的配置项特别多,在写作过程中难免会

2021-07-02 16:45:57 434

原创 ASP.NET Core gRPC 打通前端世界的尝试

本文内容gRPC-WebgRPC-Gateway封装 Web API编写中间件本文小结在构建以 gRPC 为核心的微服务架构的过程中,我们逐渐接触到了 gRPC 的过滤器、健康检查、重试等方面的内容。虽然, Protocol Buffers 搭配 HTTP/2 ,在整个传输层上带来了显著的性能提升,可当这套微服务方案面对前后端分离的浪潮时,我们能明显地有点“水土不服”。其实,如果单单是以 Protocol Buffers 来作为 HTTP 通信的载体,通过 protobuf.js 就可以实现前端的二进制化

2021-06-22 15:27:41 378

原创 EFCore 实体命名约定库:EFCore.NamingConventions

引言在软件开发过程中,数据库永远都是绕不开的一个话题。有时候,我们甚至会因此而获得一个名字——“CURD Boy”。虽然不过是朴实无华的“增删查改”,可隐隐然早已分出了无数的流派。在这些不同的流派中,有的人坚持“我手写我心”,认为手写SQL才是真正的王道,没有读过/写过成百上千行的存储过程,便不足以谈论程序员的人生。而有的人喜欢ORM的清晰、整洁,认为数据库和面向对象存在着天然抗阻,ORM更有利于推进DDD和微服务的落地。相信大家都听说过Java里的SSH框架,从Hibernate到Mybatis再到Sp

2021-06-18 20:32:44 569

原创 ASP.NET Core gRPC 集成 Polly 实现优雅重试

本文内容引言基于 gRPC RetryPolicy基于 HttpClientFactory基于 gRPC 拦截器基于 CallInvoker本文小结在上一篇 博客 中,我们一起探索和实现了gRPC的健康检查。从服务治理的角度来看,健康检查保证的是被调用的服务“健康”或者“可用”。可即使如此,我们依然会遇到,因为网络不稳定等原因而造成的服务调用失败的情形,就如同我们赖以生存的这个真实世界,本身就充满了各种不确定的因素一样,“世间唯一不变的只有变化本身”。不管是面对不稳定的服务,还是面对不确定的人生,任何时候

2021-06-10 10:13:06 423 4

原创 ASP.NET Core gRPC 健康检查的探索与实现

gRPC微服务健康检查Consul各位朋友,大家好,欢迎大家关注我的博客。在上一篇 博客 中,博主和大家分享了gRPC的拦截器在日志记录方面的简单应用,今天我们继续来探索gRPC在构建微服务架构方面的可能性。其实,从博主个人的理解而言,不管我们的微服务架构是采用RPC方式还是采用RESTful方式,我们最终要面对的问题本质上都是一样的,博主这里将其归纳为:服务划分、服务编写 和 服务治理。首先,服务划分决定了每一个服务的上下文边界以及服务颗粒度大小,如果按照领域驱动设计(DDD)的思想来描述微服务,.

2021-06-03 11:49:34 1043 8

原创 ASP.NET Core gRPC 拦截器的使用技巧分享

gRPC是微软在.NET Core 及其后续版本中主推的 RPC 框架,它使用 Google 的 Protocol Buffers 作为序列化协议,使用 HTTP/2 作为通信协议,具有跨语言、高性能、双向流式调用等优点。考虑到,接下来要参与的是,一个以gRPC为核心而构建的微服务项目。因此,博主准备调研一下gRPC的相关内容,而首当其冲的,则是从 .NET Core 3.1 开始就有的拦截器,它类似于ASP.NET Core中的过滤器和中间件,体现了一种面向切面编程(AOP)的思想,非常适合在RPC服务调

2021-05-28 10:48:14 409

原创 SnowNLP 使用自定义语料进行模型训练

SnowNLP 是一个功能强大的中文文本处理库,它囊括了中文分词、词性标注、情感分析、文本分类、关键字/摘要提取、TF/IDF、文本相似度等诸多功能,像隐马尔科夫模型、朴素贝叶斯、TextRank等算法均在这个库中有对应的应用。如果大家仔细观察过博主的博客,就会发现博主使用了摘要提取这一功能来增强博客的SEO,即通过自然语言处理(NLP)技术,提取每一篇文章中的摘要信息。因为 SnowNLP 本身使用的语料是电商网站评论,所以,当我们面对不同的使用场景时,它自带的这个模型难免会出现“水土不服”。因此,如果我

2021-05-22 21:48:44 3495 14

原创 使用 HttpMessageHandler 实现 HttpClient 请求管道自定义

最近,博主偶然间在 博客园 看到一篇文章:ASP.NET Core 扩展库之 Http 请求模拟,它里面介绍了一种利用 HttpMessageHandler 来实现 Http 请求模拟的方案。在日常工作中,我们总是不可避免地要和第三方的服务或者接口打交道,尤其是当我们需要面对“联调”这样一件事情的时候。通常,我们可以通过类似 YAPI 这样的工具来对尚在开发中的接口进行模拟。可是,因为这种方式会让我们的测试代码依赖于一个外部工具,所以,从严格意义上讲,它其实应该属于“集成测试”的范畴。在接触前端开发的过程中

2021-04-30 01:55:34 1139 5

原创 ABP vNext 的实体与服务扩展技巧分享

使用 ABP vNext 有一个月左右啦,这中间最大的一个收获是:ABP vNext 的开发效率真的是非常好,只要你愿意取遵循它模块化、DDD 的设计思想。因为官方默认实现了身份、审计、权限、定时任务等等的模块,所以,ABP vNext 是一个开箱即用的解决方案。通过脚手架创建的项目,基本具备了一个专业项目该有的“五脏六腑”,而这可以让我们专注于业务原型的探索。例如,博主是尝试结合 Ant Design Vue 来做一个通用的后台管理系统。话虽如此,我们在使用 ABP vNext 的过程中,还是希望可以针对

2021-04-19 22:40:31 3535 14

原创 ABP vNext 对接 Ant Design Vue 实现分页查询

本文内容ABP vNext中的分页查询STable组件中的分页查询实现参数转换层最终对接效果在 上一篇 博客中,博主和大家分享了如何在 EF Core 中实现多租户架构。在这一过程中,博主主要参考了 ABP vNext 这个框架。从上个月开始,我个人发起了一个项目,基于 ABP vNext 和 Ant Design Vue 来实现一个通用的后台管理系统,希望以此来推进 DDD 和 Vue 的学习,努力打通前端与后端的“任督二脉”。因此,接下来的这段时间内,我写作的主题将会围绕 ABP vNext 和 An

2021-04-09 23:33:50 2198 2

原创 浅议 EF Core 分库分表及多租户架构的实现

本文内容分库分表多租户架构多数据库单数据库本文小结各位朋友,大家好,我是 Payne,欢迎大家关注我的博客,我的博客地址是:https://blog.yuanpei.me。最近这段时间,我一直在学习 ABP vNext 框架,在整个学习过程中,我基本就是在“文档”和“源码”间来回横跳。我个人推荐大家,多去阅读一点优秀的代码,因为阅读 ABP vNext 的源代码简直就是一种享受,它可以暂时让你摆脱如泥沼一般的业务代码。言归正传,ABP vNext 是一个支持多租户架构的框架,在了解了其多租户的实现原理以后

2021-03-29 22:15:36 2998 9

原创 源代码探案系列之 .NET Core 跨域中间件 CORS

本文内容核心流程核心部件CorsPolicyCorsService再论CORS简单请求复杂请求本文小结本文是 #源代码探案系列# 第三篇,今天这篇博客,我们来一起解读下 ASP.NET Core 中的 CORS 中间件,熟悉这个中间件的的小伙伴们,想必都已经猜出本文的主题:跨域。这确实是一个老生常谈的话题,可我并不认为,大家愿意去深入探究这个问题,因为博主曾经发现,每当工作中遇到跨域问题的时候,更多的是直接重写跨域相关的 HTTP 头。博主曾经写过一篇关于跨域的博客:《聊聊前端跨域的爱恨情仇》,当时是完全

2021-03-16 23:03:01 408

原创 源代码探案系列之 .NET Core 限流中间件 AspNetCoreRateLimit

在上一篇文章中,博主带领大家一起深入了解 ConcurrencyLimiter 这个中间件,正当我得意洋洋地向 Catcher Wong 大佬吹嘘这一点小收获时,大佬一脸嫌弃地说,一个单机版的方案有什么好得意的啊。大佬言下之意,显然是指,这个中间件在分布式环境中毫无用武之地。其实,你只需要稍微想一下,就能想明白这个问题。毕竟,它只是通过SeamphoreSlim控制线程数量而已,一旦放到分布式环境中,这个并发控制就被大大地削弱。所以,在今天这篇文章中,博主会带领大家一起“探案” ASP.NET Core 中

2021-03-09 23:10:23 622

原创 源代码探案系列之 .NET Core 并发限制中间件 ConcurrencyLimiter

本文内容揭秘 QueuePolicy揭秘 StackPolicy揭秘 Middleware本文小结打算开一个新的专栏——源代码探案系列,目的是通过源代码来探索更广阔的技术世界。因为我越来越意识到,我可能缺乏一个结构化的知识体系,虽然处在一个碎片化的时代,从外界接收了大量的信息,可这些碎片化的信息,到底能不能转化为自身可用的知识,其实是需要去认真思考一番。尤其是当我注意到,许多人工作多年,在经历过从“生手”到“熟练工”这种蜕变以后,居然还是会害怕原理性内容的考察。我承认,程序员这个职业更像是一个“手艺人”,

2021-03-04 22:10:22 796 1

原创 通过 EmbededFileProvider 实现 Blazor 的静态文件访问

重构我的 独立博客 ,是博主今年的计划之一,这个基于 Hexo 的静态博客,最早搭建于2014年,可以说是比女朋友更亲密的存在,陪伴着博主走过了毕业、求职以及此刻的而立之年。其间虽然尝试过像 Jekyll 和 Hugo 这样的静态博客生成器,可是考虑到模板、插件等周边生态,这个想法一直被搁置下来。直到最近,突然涌现出通过 Blazor 重写博客的想法,尤其是它对于 WebAssembly 的支持,而类似 Vue 和 React的组件化开发模式,在开发体验上有着同样不错的表现。所以,今天这篇博客就来聊聊在重写

2021-02-23 06:53:31 1650

原创 低代码,想说爱你不容易

本文内容低代码发展现状国外趋势国内风云低代码产品形态低代码研发痛点多人协作不便孱弱的表达能力混乱的变量和参数动态计算/事件顺序/黑盒子本文小结一直想写篇文章,聊一聊“低代码”这个话题。一方面,“低代码”这个概念确实非常火,其热度丝毫不亚于曾经的“中台”。有人说,2021年是属于“云原生”的时代,看起来我们每一年都在被技术的“娱乐圈”抛弃,明明连 Kubernetes 都还没有入门呢?人们已然在欢呼雀跃般地声称要抛弃 Docker 。这个世界有时就是如此地魔幻,明明我们生活在一个拥有大量基础设施的时代,我们

2021-02-15 18:00:50 8440 43

原创 记一次失败的 ThoughtWorks 面试经历

本文内容面试流程HomeWorkPair ProgrammingFace-to-face Interviews面试心得年前朋友问我,要不要试试 ThoughtWorks 澳洲线的岗位。对于这家号称“世界上面试最难”的公司,多少还是有一点畏惧,直到朋友安慰我说,它们这次有中级的岗位,还是可以试一试的,梦想还是要有的,万一实现了呢?自此,我凑齐了西安. NET圈子里的四大“天花板”公司的面试:葡萄城、活跃网络、奥博杰天、ThoughtWorks ,而对于我来说,亦有幸见识到世界上最难的面试,虽然后来事实证明,

2021-02-09 21:03:22 6251 25

原创 从 C# 1.0 到 C# 9.0,历代 C# 语言特性一览

本文内容C# 版本历史记录C# 版本特性说明C# 7.0元组和弃元更多的 expression-bodied 成员`out`变量异步 `Main` 方法模式匹配引发表达式C# 8.0默认接口方法异步流索引和范围C# 9.0Record顶级语句模式匹配增强参考链接C# 版本历史记录说明:因为Markdown下维护这样复杂的表格有一点麻烦,故,这里以图片形式展示出来,如后续内容有更新,请点击 这里 访问原始笔记链接。为知笔记 的表格渲染在移动端表现不佳,为了获得更好的阅读体验,请在电脑端访问查看。C

2021-02-06 12:28:13 7856 14

原创 通过Python分析2020年全年微博热搜数据

本文内容热搜抓取热搜分析全年热搜热度分析全年热搜情感分析全年热搜词云分析全年热搜人物分析本文小结几天前, Catcher Wong 大佬告诉我,他终于写完了2020年的年终总结。在看完大佬的年终总结以后,我有一种“前浪被后浪拍死在沙滩上”的感觉,正如当学生时都看“别人家的孩子”,工作以后看的都是“别人的年终总结”。我们的生活,其实就是由“别人”和“我们”交织在一起,而更多的时候,是成为“大多数”的“我们”,去关注成为“少数”的“别人”。我想说的是,世间万物互为装饰,就像卞之琳在《断章》里写道,“明月装饰了

2021-01-27 20:15:56 2763 15

原创 使用多线程为你的Python爬虫提速的N种姿势,你会几种?

本文附带福利向Python脚本一个,学习多线程与爱美之心兼得,关注和订阅博主的专栏即可领取!文章目录楔子线程与线程池ThreadThreadPoolThreadPoolExecutor进程与进程池ProcessProcessPoolProcessPoolExecutor协程与异步I/Oasynciorequests本文小结最近博主在优化一个爬虫程序,它是博主在2017年左右刚接触 Python 时写下的一个程序。时过境迁,当 Python 2.X 终于寿终正寝成为过去,当博主终于一只脚迈进30岁的大.

2021-01-16 13:00:50 970 5

原创 实现网页长截图的常见思路总结

作为一个经常写博客的人,我有时会在微博上分享博客内容,可不知道从什么时候开始,国内互联网越来越丧失信仰,所有的厂商都在试图打造一个“只进不出”的信息孤岛,进而达到增强“用户黏度”的目的。以微博为例,微博中的外链永远都会被转化为短地址,并且无法通过微博内置的浏览器进行跳转。即使你通过手动复制链接的方式打开链接,你依然需要至少两个步骤方能见到“庐山真面目”。借鉴/抄袭这一陋习的还有简书,花时间做了一个第三方链接跳转提示页面,唯独不愿意在上面加一个a标签,你还是要手动复制黏贴。坦白说,我觉得国内互联网正在丧失着信

2021-01-10 15:46:55 22441 13

原创 温故而知新,由ADO.NET与Dapper所联想到的

文章目录重温ADO.NET实现DynamicRow实现参数化查询本文小结这段时间在维护一个“遗产项目”,体验可以说是相当地难受,因为它的数据持久化层完全由ADO.NET纯手工打造,所以,你可以在项目中看到无所不在的DataTable,不论是读操作还是写操作。这个DataTable让我这个习惯了Entity Framework的人感到非常别扭,我并不排斥写手写SQL语句,我只是拥有某种自觉并且清醒地知道,自己写的SQL语句未必就比ORM生成的SQL语句要好。可至少应该是像Dapper这种程度的封装啊,因为关

2021-01-01 15:05:15 927

原创 视频是不能P的系列:当OpenCV人脸检测遇上柴犬Doge

恍惚间,2020年已接近尾声,回首过去这一年,无论是疫情、失业还是“996”,均以某种特殊的方式铭刻着这一年的记忆。也许,是这个冬天的西安雾霾更少一点。所以,有时透过中午的一抹冬阳,居然意外地觉得春天的脚步渐渐近了,甚至连圣诞节这种“洋节日”都感到亲切而且期待,我想,这大概是我丧了一段时间的缘故吧!可不管怎样,人们对未来的生活时常有一种“迷之自信”,果然生还还是要继续下去的呀!趁着最近的时间比较充裕,我决定开启一个信息的系列:视频是不能P的。这是互联网上流传的一个老梗了,正所谓“视频是不能P的,所以是真的”

2020-12-26 13:52:39 841

原创 作为技术宅的我,是这样追鬼滅の刃的

有人说,“男人至死都是少年”,而这句听起来有一点中二的话,其实是出自一部同样有一点中二的动漫——银魂。我个人的理解是,知世故而不世故。也许,年轻时那些天马行空的想法,就像堂吉诃德大战风车一样荒诞,可依然愿意去怀着这样的梦想去生活。正如罗曼罗兰所言,“世上只有一种英雄主义,就是在认清生活真相之后依然热爱生活”。所以,继《浪客剑心》之后,我再次被一部叫做《鬼灭之刃》的动漫吸引,毕竟男人的快乐往往就是这么朴实无华且枯燥。一个快三十岁的人,如果还能被一部热血少年番吸引,大概可以说明,他身体里的中二少年连同中二少年魂

2020-12-18 00:44:20 1913

原创 使用Python抽取《半泽直树》原著小说人物关系

此时此刻,2020年的最后一个月,不过这一年给我们留下了怎样的记忆,时间终究自顾自地往前走,留给我们的怀念已时日无多。如果要说2020年的年度日剧,我想《半泽直树》实至名归,这部在时隔七年后上映的续集,豆瓣评分高达9.4分,一度超越2013年第一部的9.3分,是当之无愧的现象级电视剧,期间甚至因为疫情原因而推迟播出,这不能不感谢为此付出辛勤努力的演职人员们。身为一个“打工人”,主角半泽直树那种百折不挠、恩怨分明的性格,难免会引起你我这种“社畜”们的共鸣,即使做不到“以牙还牙,加倍奉还”,至少可以活得像一个活

2020-12-10 20:17:12 2553 3

原创 厉害了!打工人用Python分析西安市职位信息

在上一篇博客中,我和大家分享了整个11月份找工作的心路历程,而在找工作的过程中,博主发现西安大小周、单休这种变相“996”的公司越来越多,感慨整个行业越来越“内卷”的同时,不免会对未来的人生有一点迷茫,因为深圳已经开始试运行“996”了,如果有一天“996”被合法化并成为一种常态,那么,我们又该如何去面对“人会一天天衰老,总有一天肝不动”的客观规律呢?我注意到Boss直聘移动端会展示某个公司的作息时间,所以,我有了抓取西安市职位和公司信息并对其进行数据分析的想法,我想知道,这到底是我一个人的感受呢?还是整个

2020-12-05 21:54:24 5774 13

原创 一个西漂打工人的求职心路

其实,这段故事说出来,多少有一点难为情,因为我实在没有想到,这一切会变得这样艰难。10月份从上一家公司离职的时候,当时,我手上有两个Offer,一家是做旅游类产品的创业公司,一家则是声名狼藉的中软国际。因为刚来西安时,面对人生地不熟的新环境,曾经在这里有过一段时间的工作经历,所以,我从本能上排斥再回到那种地方。而创业公司本身的不稳定性,一度让我感到纠结,而最终的结果是,我放弃了这两份Offer。此时,对于一个工作刚满年的人来说,一个月13K或14K的薪水,我感到相当的知足。此后,我面试了奥博杰天(Obj

2020-11-19 13:27:30 942 4

原创 使用dotTrace对.NET应用进行性能分析

前几天,有位朋友问我,你平时都是怎么去排查一个程序的性能问题的啊。不要误会,这位朋友不是我啦,因为我真的有这样一位叫做 Toby 的朋友。说到性能问题,可能大家立马会想到类似并发数、吞吐量、响应时间、QPS、TPS等等这些指标,这些指标的确可以反映出一个系统性能的好坏。可随着我们的系统结构变得越来越复杂,要找到这样一个性能的“损耗点”,同样会变得越来越困难。在不同的人的眼中,对于性能好坏的评判标准是不一样的,譬如在前端眼中,页面打开速度的快慢代表着性能的好坏;而在后端眼中,并发数、吞吐量和响应时间代表着性能

2020-11-02 15:59:18 5916 13

原创 一道HashSet面试题引发的蝴蝶效应

没错,我又借着“面试题”的名头来搞事情了,今天要说的是 HashSet ,而这确实是一个实际面试中遇到的问题。当时的场景大概是这样的,面试官在了解了你的知识广度以后,决心来考察一番你的基本功底,抛出了一个看起来平平无奇的问题:说一说你平时工作中都用到了哪些数据结构。你心想,这还不简单,Array、ArrayList、List、Dictionary、HashSet、Stack、Queue…等等各种集合类简直如数家珍,甚至你还能说出这些数据结构间的优劣以及各自使用的场景。可没想到,面试官话锋一转,直接来一句,“

2020-10-26 10:10:37 4749

原创 基于选项模式实现.NET Core的配置热更新

最近在面试的时候,遇到了一个关于 .NET Core 配置热更新的问题,顾名思义,就是在应用程序的配置发生变化时,如何在不重启应用的情况下使用当前配置。从 .NET Framework 一路走来,对于 Web.Config 以及 App.Config 这两个配置文件,我们应该是非常熟悉了,通常情况下, IIS 会检测这两个配置文件的变化,并自动完成配置的加载,可以说它天然支持热更新,可当我们的视野伸向分布式环境的时候,这种配置方式就变得繁琐起来,因为你需要修改一个又一个配置文件,更不用说这些配置文件可能都.

2020-10-13 00:33:20 3434 2

原创 .NET Core中对象池(Object Pool)的使用

在此前的博客中,博主参考 eShopOnContainers 实现了一个基于RabbitMQ的事件总线(EventBus)。在这个项目中,它提供了一个持久化连接的类DefaultRabbitMQPersistentConnection,主要解决了RabbitMQ在连接断开后自动重连的问题,可实际上我们都知道,RabbitMQ提供的连接数是有一个上限的,如果频繁地使用短连接的方式,即通过ConnectionFactory的CreateConnection()方法来创建一个连接,从本质上讲,一个Connecti

2020-08-25 17:54:54 2135 9

原创 利用MySQL的Binlog实现数据同步与订阅(下):EventBus篇

终于到这个系列的最后一篇,在前两篇博客中,我们分别了介绍了Binlog的概念和事件总线(EventBus)的实现,在完成前面这将近好几千字的铺垫以后,我们终于可以进入正题,即通过EventBus发布Binlog,再通过编写对应的EventHandler来订阅这些Binlog,这样就实现了我们“最初的梦想”。坦白说,这个过程实在有一点漫长,庆幸的是,它终于还是来了。Binlog读取与解析首先,我们通过 Python-Mysql-Replication 这个项目来读取Binlog,直接通过pip insta

2020-08-25 17:21:07 1756

SQLDeveloper_4.0.3.16.rar

SQLDeveloper_4.0.3.16, 解压即用,无需配置,适合Oracle开发人员使用,虽然我不喜欢Oracle

2021-08-18

2DToolKIit插件

用于Unity3D的2DToolKIit插件,可以帮助你快速开发2D游戏

2014-03-19

NGif动画编码/解码库

一个可以解码和编码GIF动画的类库,可以生成动画和解码动画,你值得拥有!

2014-03-07

空空如也

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

TA关注的人

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