自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

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

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

原创 使用 EFCore 和 PostgreSQL 实现向量存储及检索

随着 ChatGPT 的兴起及其背后的 AIGC 产业不断升温,向量数据库已成为备受业界瞩目的领域。、Qdrant 等产品层出不穷。市场调研公司 MarketsandMarkets 的数据显示,全球向量数据库市场规模预计将从 2020 年的 3.2 亿美元增长至 2025 年的 10.5 亿美元,年均复合增长率高达 26.8%。这表明向量数据库正从最初的不温不火逐步演变为大模型的 “超级大脑”。向量数据库,不仅解决了大模型在 “事实性” 和 “实时性” 方面的固有缺陷,还为企业重新定义了知识库管理方式。

2024-04-11 12:22:21 798

原创 基于 LLaMA 和 LangChain 实践本地 AI 知识库

本文讨论了人工智能领域的最新发展,主要围绕着基于 Transformer 和 MoE 架构的多模态模型 Gemini 1.5 Pro,以及 OpenAI 推出的支持从文字生成视频的模型 Sora。文章提到通用人工智能(AGI)的实现正在加速,指出 AI 应用落地的主要实践围绕大模型微调、提示词工程和知识增强展开。在介绍 LangChain 中的知识库构建过程中,涉及 Loader、Splitter、Embeddings 和 VectorStore 等步骤。此外,还讨论了 RAG 和 GPTs 在实践中的应用

2024-03-01 09:59:41 1218

原创 使用 llama.cpp 在本地部署 AI 大模型的一次尝试

2023年被誉为AIGC元年,随着技术浪潮,人们开始对人工智能的发展产生担忧。文章介绍了使用llama.cpp在本地部署AI大模型的过程,包括编译、量化和模型下载。通过对不同模型的体验,展示了其运行效果和评估。最后,将ChatGPT-Next-Web与llama.cpp结合,展示了本地部署AI大模型的潜力。整体讲述了私有化部署AI大模型的重要性和实践过程。

2024-03-01 09:54:29 1218

原创 基于 C# 实现样式与数据分离的打印方案

对于八月份的印象,我发现大部分都留给了出差。而九月初出差回来,我便立马投入了新项目的研发工作。因此,无论是中秋节还是国庆节,在这一连串忙碌的日子里,无不充满着仓促的气息。王北洛说,“最近,我一直在忙着搞打印,我时常怀疑在“”这件事情上,人们的口号大于实质,否则,人们便不会如此热衷于打印单据,虽然时间已过去许多年,可有些事情似乎从未改变过,无论是过去的,还是如今的。

2023-10-26 16:02:30 442 2

原创 C# 使用 LibUsbDotNet 实现 USB 设备检测

有了这个思路,我们就可以在程序启动时对 USB 设备进行监控,一旦发现某个重要的设备被移除,程序就可以及时地做出响应或处理,而不用等到真正要用设备的时候引发异常,我越来越觉得,编程本质就是一群聪明人在千方百计地照顾一个“巨婴”,每次测试同事都说这里或者那里要加一个提示,可即使增加了提示,人们依然无止无休地问你为什么,错误信息不过是程序员自我安慰剂,除了程序员以外没有人会在乎它具体是什么。如果你对此怀疑表示怀疑的话,不妨回去翻翻你写的代码,有多少行是真正的、有用的代码,又有多少代码是为了防呆呢?

2023-10-20 10:40:04 1185 6

原创 基于 SVG 的图形交互方案实践

实际上,到目前为止,这篇博客里对方案可行性的探索业已完成,而在现实中,更多的挑战往往来自非技术因素。当然,从这篇文章的思路延伸出去,无论是复杂的数据大屏,还是布局编辑器/低代码、地图、流程图、工作流等问题,我们都无法摆脱 DOM、Canvas、WebGL、SVG 等知识体系。”,你不得不为每一个区域标注好坐标,这对于没有设计感的程序员来说可能是一场折磨,更重要的是,一旦这个方案运用到数字大屏上面,你总要去解决屏幕尺寸变化、全屏/非全屏等一系列问题,显然,这个时候这些区域的坐标都需要重新计算。

2023-08-24 18:24:50 1384

原创 前端视频播放技术概览

转眼间,2023 年已进入下半场,在这样一个时间节点下,长视频平台如爱奇艺、优酷、腾讯视频等,以及短视频平台如抖音、快手等,对大家来说早已是司空见惯的事物。然而,在我们追剧、刷弹幕的时候,很少有人会去深入思考这些平台背后的技术奥秘。直到最近,我需要在前端项目中实现视频播放时,我终于意识到,这些视频不仅在格式上存在着差异,甚至连播放形式都各有不同。举个例子,当下最为火热的 “”,通常是指实时的视频播放。相对应地,非实时的视频播放则被称为 “如果你有接触过,你或许还听说过 “” 这个词汇。

2023-07-31 10:41:01 1157

原创 后 GPT 时代,NLP 不存在了?

在刘慈欣老师的《三体》小说中,整个故事是以杨冬的死亡线索展开的,而她自杀的原因是物理学不存在了。随着 GPT-4 的发布,『NLP已死』和『NLP不存在了』的声音开始不绝于耳。如果说杨冬认为物理学被颠覆源于智子的“”,那么,现在的大型语言模型对于 NLP 的冲击,实际上改变了AI与最终用户互动的方式。传统的 NLP 技术方向涵盖了信息抽取、文本挖掘、机器翻译、语音合成、语音识别、语义理解、句法分析,这些都被视为自然语言处理的中间任务。因此,传统的 NLP 模式是在每个领域中提供各种不同的工具。

2023-05-17 08:25:29 817

原创 视频是不能 P 的系列:使用 Milvus 实现海量人脸快速检索

最近一直在优化一个人脸识别项目,最大的感受是,科学的尽头永远都是殊途同归。一年前我在使用实现人脸识别的时候,其实当时有两个悬而未决的问题:其一是人脸样本数目增加带来的性能下降问题;其二是如何快速地判断目标人脸是否在人脸样本中。此时此刻,在经历了虹软人脸识别 SDK 的折磨以后,我终于意识到,这两个问题从来就没有消失,它会在某个合适的时机突然跳出来,然后不露声色地敲打着你说道:“此刻,回过头来重新审视这两个问题,我认为,它们本质上就是 1:1 和 1:N 的问题。笔者在使用。

2023-04-27 11:41:45 1124

原创 GDI+下字体大小自适应方案初探

在某个瞬间,我忽然发觉,三体或是AI,本质上是非常相近的事物,甚至在面对任何未知领域的时候,人类总会不自觉地划分为降临派、拯救派和幸存派。姑且不论马斯克等人叫停 GPT-5 的真实动机如何,当大语言模型(LLM)裹挟着 AIGC 的浪潮气势汹汹地袭来时,你是否会像很多人一样,担心有一天会被机器取代以致于失业呢?

2023-04-13 08:41:16 922

原创 关于 Docker 容器配置信息的渐进式思考

作为一名软件工程师,不,或许应该叫做 YAML 工程师、Markdown 工程师、Dockerfile 工程师……等等,这绝非自谦,更多的是一种自嘲。毕竟,从入行的那一天开始,追求配置上的动态灵活,就如同思想一般刻进每个程序员的 DNA 里。可当你意识到,在这个世界上,提出主张的人和解决问题的人,并不是同一群人时,你或许会心头一紧,接着便是直呼上当,我甚至不能理解,为什么程序员提交完代码,还要像运维一样折腾各种配置文件。

2022-12-02 17:21:09 465 5

原创 在 Docker 容器内集成 Crontab 定时任务

有时候,我们需要在容器内执行某种定时任务。譬如,Kerberos客户端从KDC中获取到的TGT默认有效期为 10 个小时,一旦这个票据失效,我们将无法使用单点登录功能。此时,我们就需要一个定时任务来定时刷新票据。此前,博主为大家介绍过和这样的定时任务系统,而对于 Linux 来说,其内置的是比以上两种方案更加轻量级的一种方案,它可以定时地去执行Linux中的命令或者是脚本。对应到Kerberos的这个例子里面,从 KDC 申请一个新的票据,我们只需要使用kinit这个命令即可。

2022-11-29 08:56:49 3205

原创 为你的服务器集成 LDAP 认证

回顾我这些年的工作经历,面向企业(2B)和面向用户(2C)的项目都曾接触过。我个人觉得,面向企业的项目更注重业务,参与决策的人数多、周期长,目的是为企业提供生产经营价值,如缩减成本、提升效率等等,而面向用户的项目更注重体验,参与决策的人数少、周期短,目的是为消费者提供更多的使用价值,本质上是为了圈揽用户和抢夺流量。我在参与这些项目的过程中发现,企业级应用的研发更注重与第三方软件如 SAP、金蝶、用友、ERP 等等的整合,因此,类似单点登录、数据同步这样的需求非常普遍。每当这个时候,我就不由地想起一位前辈。

2022-11-17 08:42:12 315

原创 视频是不能 P 的系列:使用 Dlib 实现人脸识别

本文是的第三篇。此前,我们已经可以通过或者实现对人脸的检测,并在此基础上实现了某种相对有趣的应用。譬如,利用人脸特征点提取面部轮廓并生成、将图片中的人脸批量替换为精神污染等等。当然,在真实的应用场景中,如果只是检测到人脸,那显然远远不够的,我们更希望识别出这张人脸是谁。此时,我们的思绪将会被再次拉回到人脸识别这个话题。在探索未知世界的过程中,博主发现自带的 LBPH 方法,即局部二值模式直方图方法,识别精度完全达不到预期效果。所以,博主最终选择了。

2022-11-03 16:07:12 421

原创 浅议分布式链路追踪与日志的整合

当然,微软的东西好像天生就是一种原罪,很多时候,你可能根本不会用这个听都没听说过的Acitivity,你可能更愿意使用自己生成的TraceId,在这种情况下,这个库就不再适用啦,因此,在最后的这点篇幅里,我想分享一下 Nlog 里自定义的 LayoutRenderer 的实现。提到这个话题的时候,我其实是蛮感慨的。

2022-10-19 10:02:16 342

原创 关于 Git 大文件上传这件小事

很多年后,当我在命令行中熟练地操作 Git 的时候,我总会不由地想起从前意气风发的自己。毕竟不知不觉间,三十岁的年龄已然被更年轻的人们嫌弃“苍老”,除却生理上不可逆转的自然衰老,更多的或许是一种心态上的衰老。以前,我是非常鄙夷在 Git 仓库里提交 Word 或者 Excel 文件这种行为的,甚至连理由都给得十分正当,即:这种文件不利于差异的对比和合并。后来,参与的项目越来越多,渐渐认识到 Markdown 始终是一种小众的格式,你没有办法要求所有人都去适应 Markdown。

2022-10-11 14:23:37 1233

原创 .NET 进程内队列 Channel 的入门与应用

最近,博主为增加了协议的支持。这意味着,我们可以借助其全双工通信的特性,在一个连接请求内发送多条数据。FakeRPC 目前最大的遗憾是,建立在 HTTP 协议上而不是 TCP/IP 协议上。因此,考虑 WebSocket 协议,更多的是为了验证的可行性,以及为接下来的要支持的 TCP/IP 协议铺路。也许,你从未意识到这些概念间千丝万缕的联系,可如果我们把每一次 RPC 调用都理解为一组消息,你是不是就能更加深刻地理解 RPC 这个稍显古老的事物了呢?在编写 FakeRPC 的过程中,我使用了.NET。

2022-09-19 08:33:03 663

原创 使用 Fody 实现 .NET 的静态织入

在很长的一段时间里,我们的项目中一直使用这个基类来记录每个方法的日志。诚然,这个文件的存在,早已在冥冥之中暗示我,才是这座冰山下真正的墨西哥湾暖流。可惜,因为某种阴差阳错的巧合,譬如两者都使用了这个命名,这导致我过去一直以为我们使用的是。如果你是用过或者这些由出品的工具,你大概会听说过 PostSharp。不过,有趣的是,JetBrains 和 PostSharp 其实没有半毛钱的关系,两者唯一相似的地方,或许是它们都不姓微软😂。当我们谈论 PostSharp 的时候,我其实想说的是静态编织。

2022-08-25 09:18:14 650

原创 .NET Core + ELK 搭建可视化日志分析平台(下)

最近,我收到一位读者朋友的私信,问我 ELK 为什么没有下篇,道德感极强的我不得不坦诚相告,显然这一篇鸽了。这就是说,鸽子不单单会出现在吴宇森的电影里,只要你试图拖延或者逃避,你一样有鸽子可以放飞。话说回来,新冠疫情已然持续了三年,而这篇文章其实是我在新冠元年写下的。某年某月,彼时彼刻,立春过后紧接着是上元节,阳光已透过玻璃宣示着春天的到来,可在这一墙之隔的里里外外,仿佛是两个气候迥异的世界。记忆里那种每天都和消毒水、口罩打交道的日子,后来就变成了一种习以为常、甚至有一点唏嘘的常态化生活。......

2022-08-18 09:09:40 690

原创 聊一聊前端图片懒加载背后的故事

懒加载,即:LazyLoad,其核心全在于“懒”这个字眼上。虽然,这个字在生活中更多的是表示一种贬义,可正如气体有活性和惰性的区别,这里我们将其理解为延迟加载,或许会更合适一点,因为生活早已告诉我们,只要你打算偷懒,就一定会造成拖延。因此,懒加载其实就是一种通过延迟加载对网页性能进行优化的方法。一个典型的例子是,当网页中有滚动条的时候。此时,网页的一部分区域对于浏览器视窗而言是不可见的。如果将一次性将其加载出来,这其实是一种资源的浪费,因为你不确定用户是否有耐心浏览完整个网页。............

2022-08-05 09:54:06 6818 17

原创 支持外部链接跳转的 Vue Router 扩展实现

众所周知,Vue-Router 是 Vue 中重要的插件之一,特别是在当下流行的 单页面应用/SPA 中,这种感觉会越来越明显。此时,路由的作用就是根据 来决定要显示什么内容。诚然,页面这个概念在工程/模块中依然存在,可当你开始关注最终发布的产物时,你会发现本质上它只有一个页面。无论你选择 或者是 模式的路由,它都像是在同一张纸上反复写写画画,让你看起来觉得它有很多个不同的页面。回顾早期的前端项目,它往往会有多个不同的页面组成,我们是通过一个个的超链接来实现不同页面间的跳转。如今,这一切都已一去不复返

2022-07-13 16:02:00 3892

原创 视频是不能 P 的系列:OpenCV 和 Dlib 实现表情包

2020 年年底的时候,博主曾心血来潮地开启过一个系列:视频是不能 P 的,其灵感则是来源于互联网上的一个梗,即:视频不能 P 所以是真的。不过,在一个美颜盛行的时代,辨别真伪实在是一件奢侈的事情,在各种深度学习框架光环的加持下,在视频中实现“改头换面”已然不再是新鲜事儿,AI 换脸风靡一时的背后,带来是关乎隐私和伦理的一系列问题,你越来越难以确认,屏幕对面的那个到底是不是真实的人类。古典小说《红楼梦》里的太虚幻境,其牌坊上有幅对联写道,“假作真时真亦假,无为有处有还无”。果然,在这个亦真亦幻的世界里,哪里

2022-07-11 16:40:20 725

原创 不得不说的 ASP.NET Core 集成测试

一直打算写一篇关于 ASP.NET Core 集成测试 的文章,因为一旦说起单元测试这个话题,多多少少会牵动我内心深处的理想主义色彩,虽然如今已然是程序员职业生涯的第七年,可在我看来依然有太多东西在原地打转。这一路跌跌撞撞地走过来,在不同的公司里,见识到了形态各异的研发流程,接触到了貌合神离的敏捷思想,阅读过了风格迥异的框架/架构。当时间节点来到 2022 年,惊觉 诞生业已 20 周年,虽然技术一直在不断向前发展,可我个人感觉,我们并没有在工程化上取得多少感人的进步,譬如单元测试、需求管理,这些听起来丝

2022-06-10 17:42:00 364

原创 再议 DDD 视角下的 EFCore 与 领域事件

在上家公司工作的时候,我们有部分业务是采用事件/消息驱动的形式。虽然,当时博主还没能用上诸如 Kafka、RabbitMQ 这样的消息中间件,可数据库 + Quartz 这样一个堪称“简陋”的组合,完全不影响博主对事件/消息驱动这种思想的启蒙。后来,在实现数据库审计、数据同步 等问题的时候,更是从实践层面上加深了这一印象。再后来,博主陆陆续续地接触了 DDD,其中 领域事件 的概念,第一次让博主意识到,原来事件可以和聚合根产生某种联系。退一步讲,即使你没有接触过 DDD,你只要听说过 MediatR 或者

2022-05-30 17:51:54 362

原创 Vue.js 前端项目容器化部署实践极简教程

大概一周前,在某个「微雨燕双飞」的下午,我正穿梭于熙熙攘攘的车流人海当中,而被雨水濯洗过的天空略显灰白,傍晚亮起的路灯恍惚中有种朝阳初升的错觉,内心更是涌现出一种「一蓑烟雨任平生」的豁达,我还没来得及给这场内心戏添油加醋,兴哥的电话突然打断了我的思绪。一番攀谈交心,我了解到,他想问的是前端容器化部署的相关问题。虽然,靠着兴哥的睿智、果敢,他第二天就想明白了整个事情的来龙去脉;但是,这完全不影响我水一篇博客出来。所以,今天这篇文章,我们来聊聊前端项目的容器化部署,并提供一个极简的实践教程,这里以 Vue.js

2022-05-18 13:10:14 1656

原创 Python 图像风格化迁移助力画家梦想

本文内容走近风格化迁移体验风格化迁移自定义模型训练本文小结很多年前,星爷在《食神》这部电影里大彻大悟,「只要用心,人人都是食神」。从那个时候起,这句话就隐隐约约带着返璞归真、回归本心的意思。如同电影里描绘的餐饮行业一样,在资本市场的裹挟下,造神这项运动显得轻而易举,这个食神可以是史蒂·周,可以是唐牛,可以是任何人。因此,当穷困潦倒的史蒂·周,因为一碗叉烧饭而落泪的时候,我想,这或许是一种直面自我的顿悟。毕竟,电影里的星爷原本就不会做饭。《舌尖上的中国》带火了一句话,“高端的食材,往往只需要最简单的烹饪”,

2022-05-07 09:46:40 1095 2

原创 在 Vue.js 中使用 Mock.js 实现接口模拟

本文内容问题现状改进思路SwaggerMock.js登高望远最近这段时间,我一直在参与一个前端项目。每当我从庸碌的生活中赢得片刻喘息的时候,我不由得感慨,在程序员朴实无华且枯燥的职业生涯里,写自己喜欢的代码的机会少之又少,写别人喜欢的代码的机会俯拾皆是,更多的时候像是“为他人作嫁衣裳”。古人云,“遍身罗绮者,不是养蚕人”,当每天面对着被改得面目全非的代码的时候,内心固然早已波澜不惊、宠辱偕忘,可还是会期待美好的事情发生,因为从工程化的角度而言,每天都在思考的事情,其实就是怎么样做会更好一点。过去这些年里,

2022-04-17 11:53:16 3440

原创 利用 ASP.NET Core 中的标头传播实现分布式链路跟踪

在此之前,我曾写过一篇博客,《Envoy 集成 Jaeger 实现分布式链路跟踪》,主要分享了 ASP.NET Core 应用如何结合 Envoy 和 Jeager 来实现分布式链路跟踪,其核心思想是生成一个全局唯一的x-request-id,并在不同的微服务或者子系统中传播该信息。进而,可以使得相关的信息像一条线上的珠子一样串联起来。在此基础上,社区主导并产生了 OpenTracing 规范,在这个 规范 中,一个 Trace,即调用链,是由多个 Span 组成的有向无环图,而每个 Span 则可以含有多

2022-04-08 15:16:43 582

原创 利用 gRPC 实现文件的上传与下载

本文内容定义 Protobuf实现上传实现下载现实挺骨感本文小结几天前,某人同我抱怨,说是某接口无法正常工作,坦白地讲,这只是程序员生命里再枯燥不过的日常,因为无论“好”或者“不好”,他们都要努力回应来自灵魂深处的那声“为什么”。所以,善待程序员的方式之一,就是不要总问他“为什么”,因为他已经听了太多的“为什么”。经过一番攀谈交心,我了解到是模型绑定出了问题。原来,他需要实现一个导出/下载功能,因为他不确定能否通过 Envoy 代理来自 gRPC 的文件流,故而,他选择了传统的 Web API,结果不曾想

2022-03-22 14:27:30 4979

原创 七种武器:延迟队列的原理和实现总结

“这是最好的时代,这是最坏的时代”,英国作家查尔斯·狄更斯在两百多年前写下的这句话,如果从辩证的角度来看,它或许可以适用于任何一个时代。我们生活在一个怎样的时代呢?我想,或许是一个矛盾的时代。因为,有时它让你对未来有无限的期待,有时它又会让你陷入无尽的绝望,特别是当集体和个人的命运形成强烈反差的时候,当实用主义、精致利己主义开始盛行的时候,我们偶尔会感慨罗曼蒂克的消亡、怀念从前慢、追忆芳华,可下一秒就被卷入到同时间赛跑的庸庸碌碌当中。生活节奏越来越快,人们越来越追求实时、速度、效率,选择当下的同时,意味着选

2022-03-13 09:47:06 533

原创 gRPC 流式传输极简入门指南

本文内容从 HTTP/2 说起gRPC 中的流式传输客户端流服务器端流双向流本文小结最近一直在研究 gRPC 的 ServerReflection,顾名思义,这是 gRPC 里提供的反射接口,当你需要获取某个接口的描述信息,或者是希望动态调用 gRPC 的时候,这一切就会变得非常有用,如果你经常使用 gRPC UI 这款工具来调试 gRPC 接口,那么,你一定会注意到一件事情,即它要求服务端必须支持 ServerReflection API,而这一点在 ASP.NET Core 中已经得到支持,对此感兴趣

2022-02-28 12:32:07 590

原创 Envoy 集成 Jaeger 实现分布式链路追踪

本文内容分布式跟踪Envoy & Jaeger第一个实例本文小结当我们的应用架构,从单体系统演变为微服务时,一个永远不可能回避的现实是,业务逻辑会被拆分到不同的服务中。因此,微服务实际就是不同服务间的互相请求和调用。更重要的是,随着容器/虚拟化技术的发展,传统的物理服务器开始淡出我们的视野,软件被大量地部署在云服务器或者虚拟资源上。在这种情况下,分布式环境中的运维和诊断变得越来越复杂。如果按照功能来划分,目前主要有 Logging、Metrics 和 Tracing 三个方向,如下图所示,可以注意

2022-01-16 11:44:40 365

原创 浅议非典型 Web 应用场景下的身份认证

本文内容楔子gRPCSignalRKafka本文小结据我所知,软件行业,向来是充满着鄙视链的,人们时常会因为语言、框架、范式、架构等等问题而争执不休。不必说 PHP 到底是不是世界上最好的语言,不必说原生与 Web 到底哪一个真正代表着未来,更不必说前端与后端到底哪一个更有技术含量,单单一个 C++ 的版本,1998 与 2011 之间仿佛隔了一个世纪。我真傻,我单知道人们会因为 GCC 和 VC++ 而分庭抗礼多年,却不知道人们还会因为大括号换行、Tab 还是空格、CRLF 还是 CR……诸如此类的问题

2021-12-31 11:39:16 296 2

原创 gRPC 借助 Any 类型实现接口的泛化调用

本文内容Protobuf 里的 Any 类型在 .NET 中使用 Any 类型本文小结我发现,人们非常喜欢在一件事情上反复横跳。譬如,以编程语言为例,人们喜欢静态的、强类型语言的严谨和安全,可难免会羡慕动态的、弱类型语言的自由和灵活。于是,在过去的这些年里,我们注意到,.NET 的世界里出现了 dynamic 类型,JavaScript 的世界里出现了 TypeScript,甚至连 Python 都开始支持类型标注。这种动与静、强与弱的角逐,隐隐然有种太极圆转、轮回不绝的感觉。果然,“城外的人想冲进去,城

2021-12-16 12:00:08 1785

原创 分布式丛林探险系列之 Redis 集群模式

本文内容Redis 集群概述一致性哈希算法Redis 哈希槽Redis 集群实战本文小结时间终于来到了十二月,据说,《黑客帝国 4:矩阵重生》 将于本月在北美上映,正如同它的片名一样,黑客帝国系列在沉寂了十八年后,终于等来了一次矩阵重生的机会,不可不谓“有生之年”、“爷青回”。提及黑客帝国系列,这是一部公认的、具有划时代意义的科幻电影,除了精彩绝伦的打斗特效,最为影迷所津津乐道的,当属对于人和机器的关系这种颇具哲学意味的问题的探讨。在第二部中,The One 的部分代码被融合到了 Smith 身上,而这使

2021-12-09 11:29:53 379

原创 分布式丛林探险系列之 Redis 主从复制模式

如果说,单体架构系统是坐在家里悠闲地喝着下午茶,那么,毫无疑问,分布式系统将会是一场永远充满惊喜的丛林冒险。从踏上这条旅程的那一刻起,此间种种都被打上分布式的烙印,譬如分布式锁、分布式事务、分布式存储、分布式配置等等,这些词汇拆开来看,“似曾相识燕归来”,每一个我都认识,而一旦放到分布式的场景中,一切就突然变得陌生起来,从过去的经典三层架构、到时下流行的微服务、再到更为前沿的服务网格,一路跌跌撞撞地走过来,大概只有眼花缭乱和目不暇接了。前段时间在做 FakeRpc,这是一个基于 ASP.NET Core 的

2021-11-18 15:14:03 316

原创 通过 Python 预测 2021 年双十一交易额

本文内容思路说明实现过程本文小结突然间,十月以某种始料未及的方式结束了,也许是因为今年雨水变多的缘故,总觉得这个秋天过去得平平无奇,仿佛只有观音禅寺的满地银杏叶儿,真正地宣布着秋天的到来,直到看见朋友在朋友圈里借景抒怀,『 霜叶红于二月花 』,秋天终于没能迁就我的一厢情愿,我确信她真的来了。当然,秋天不单单会带来这些诗情画意的东西,更多的时候我们听到的是双十一、双十二,这些曾经由光棍节而催生出的营销活动,在过去的十多年间渐渐成为了一种文化现象,虽然我们的法定节日永远都只有那么几天,可这并不妨碍我们自己创造

2021-10-27 14:23:19 442

原创 gRPC 搭配 Swagger 实现微服务文档化

有人说,程序员最讨厌两件事情,一件是写文档,一件是别人不写文档,这充分展现了人类双标的本质,所谓的“严于律人”、“宽于律己”就是在说这件事情。虽然这种听来有点自私的想法,是生物自然选择的结果,可一旦人类的大脑皮层在进化过程中产生了“理性”,就会试图去纠正这种来自动物世界的阴暗面。所以,人类双标的本质,大概还是因为这个行为本身就有种超越规则、凌驾于众人之上的感觉,毕竟每个人生来就习惯这种使用特权的感觉。回到写文档这个话题,时下流行的微服务架构,最为显著的一个特点是:仓库多、服务多、接口多,此时,接口文档的重要

2021-09-29 13:43:05 545

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

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

2021-09-09 15:01:27 260

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

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

2021-08-20 15:56:56 2294

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关注的人

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