素履 | 元培的个人博客

素履以往,心之所向;一苇以航,直达远方。
私信 关注
雪轻鸿
码龄9年

谢谢你,在这世界的角落,找到我,一个即将进入而立之年的中年大叔,常年以 飞鸿踏雪 的花名混迹江湖。在现实生活中,我是一名 伪·全栈攻城狮,因为我觉得,什么都略懂一点,生活会更多彩一些。目前,主要关注.NET、.NET Core、Python、数据分析、微服务、Web 等技术方向。日常行为:读书、写作、电影、烹饪、洞箫等。喜欢看日剧/纪录片/科普、刷B站、刷LeetCode等。

  • 2,449,062
    被访问量
  • 273
    原创文章
  • 889
    作者排名
  • 3,935
    粉丝数量
  • 毕业院校 宁夏大学
  • 目前就职 不加班网络科技有限公司
  • 于 2012-02-24 加入CSDN
获得成就
  • 博客专家认证
  • 获得1,152次点赞
  • 内容获得1,874次评论
  • 获得1,447次收藏
荣誉勋章
兴趣领域
  • #人工智能
    #NLP#数据分析#视觉/OpenCV#Python#自然语言处理
  • #后端
    #c#/.net/asp#Python#架构
  • #运维
    #Graylog/ELK#Jenkins
  • #前端
    #Vue.js#JavaScript#前端框架
  • #测试
    #selenium#postman
TA的专栏
  • Unity3D游戏开发系列
    付费
    87篇
  • Python数据挖掘系列
    付费
    15篇
  • Redis技术学习系列
    4篇
  • C#设计模式系列
    6篇
  • SDL游戏开发专栏
    2篇
  • [编程之美]
    10篇
  • [人生感悟]
    26篇
  • [算法相关]
    24篇
  • [编程语言]
    172篇
  • [移动互联]
    51篇
  • [游戏开发]
    80篇
  • [产品设计]
    8篇
  • [读书摘录]
    12篇
  • [百度地图]
  • [独立博客]
    13篇
  • [SDLGame]
    2篇
  • [NodeJS]
    2篇
关于我
Payne,一名文艺的程序员
19岁以前写诗,19岁以后写代码
关注领域:.NET、.NET Core、Python、数据分析、微服务、Web 等 欢迎大家同我:
探讨技术心得,交流生活感悟
-------------------------------------------
个人博客: ->点此访问
备用博客: ->点此访问
知乎专栏: ->点此访问
-------------------------------------------
微信:@PayneQin(请说明来意)
微博: @云来雁去(请随意关注)
知乎: @飞鸿踏雪(请随意关注)
邮件:qinyuanpei@163.com(请说明来意)
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

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

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

低代码,想说爱你不容易

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

记一次失败的 ThoughtWorks 面试经历

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

从 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
原创
5672阅读
10评论
4点赞
发布博客于 23 天前

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

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

基于 Python 和 Selenium 实现 CSDN 一键三连自动化

最近一段时间,博主感觉到了某种危机感,或者说是每一个不再年轻的人都会面对的问题,即,怎么面对来自更年轻的“后浪”们的压力,自打国内IT行业有了35岁这个不成文的“门槛”以后,年轻的“后浪”们仿佛有了更多将“前浪”们拍死在岸上的勇气,我辈忍不住要叹一声后生可畏啊!我认识的 Catcher Wong 正是这样一位大佬,此君虽然比我小三岁,可在技术的广/深度以及经验的丰富程度上,足以令我这个”老人”汗颜,单单 EasyCaching 这一项,就令人望尘莫及啦!我看着他的时候,一如当年 Wesley 大哥看着我的时
原创
255阅读
4评论
2点赞
发布博客于 2 月前

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

利用MySQL的Binlog实现数据同步与订阅(中):RabbitMQ篇

紧接上一篇博客中的思路,这次我们来说说事件总线(EventBus),回首向来,关于这个话题,我们可能会联想到发布-订阅模式、观察者模式、IObservable与IObserver、消息队列等等一系列的概念。所以,当我们尝试着去解释这个概念的时候,它到底是什么呢?是一种设计模式?是一组API接口?还是一种新的技术?显而易见,发布-订阅模式和观察者模式都是设计模式,而IObservable与IObserver、消息队列则是具体的实现方式,就像你可以用委托或者事件去实现一个观察者模式,而Redis里同样内置了发布
原创
1210阅读
0评论
2点赞
发布博客于 6 月前

利用MySQL的Binlog实现数据同步与订阅(上):基础篇

终于等到了周末,在经历了一周的忙碌后,终于可以利用空闲写篇博客。其实,博主有一点困惑,困惑于这个世界早已“堆积”起人类难以想象的“大”数据,而我们又好像执着于去“造”一个又一个“差不多”的“内容管理系统”,从前我们说互联网的精神是开放和分享,可不知从什么时候起,我们亲手打造了一个又一个的“信息孤岛”。而为了打通这些“关节”,就不得不去造一张巨大无比的蜘蛛网,你说这就是互联网的本质,对此我表示无法反驳。我更关心的是这其中最脆弱的部分,即:一条数据怎么从A系统流转到B系统。可能你会想到API或者ETL这样的关键
原创
2134阅读
2评论
2点赞
发布博客于 6 月前

原生JavaScript实现Hexo博客推荐功能

有时候,我不禁在想,我们到底处在一个什么样的时代呢?而之所以会有这样的疑问,则是因为我们的习惯在不断地被这个时代向前推进,就像我用了两年多的魅蓝Note6屏幕出现了问题,扫视了一圈新手机,居然再找不出一款带实体键的手机,刘海屏、水滴屏、破孔屏、异形屏、曲面屏等等简直令人眼花缭乱,唯独没有一款让我感到熟悉的非全面屏手机。做软件的时候,会不明白那些似是而非的定制需求的差异,可为什么偏偏到了硬件的时候,大家就能被迫适应这些越来越同质化的东西呢?也许有和我一样怀念非全面屏的人,可对于这个时代而言,一切都好像无足轻重
原创
1000阅读
0评论
0点赞
发布博客于 8 月前

.NET Core原生DI扩展之基于名称的注入实现

接触 .NET Core 有一段时间了,最大的感受无外乎无所不在的依赖注入,以及抽象化程度更高的全新框架设计。想起三年前 Peter 同学手写 IoC 容器时的惊艳,此时此刻,也许会有不一样的体会。的确,那个基于字典实现的 IoC 容器相当“简陋”,就像 .NET Core 里的依赖注入,默认(原生)都是采用构造函数注入的方式,可其实从整个依赖注入的理论上而言,属性注入和方法注入的方式,同样是依赖注入的实现方式啊。最近一位朋友找我讨论,.NET Core 里该如何实现 Autowried,这位朋友本身是 J
原创
1258阅读
0评论
0点赞
发布博客于 8 月前

通过EF/Dapper扩展实现数据库审计功能

相信大家都有过周末被电话“吵醒”的经历,这个时候,客服同事会火急火燎地告诉你,客户反馈生产环境上某某数据“异常”,然后你花费大量时间去排查这些错误数据,发现这是客户使用某一种“骚”操作搞出来的“人祸”。可更多的时候,你不会这么顺利,因为你缺乏有力的证据去支持你的结论。最终,你不情愿地去处理了这些错误数据。你开始反思,为什么没有一种流程去记录客户对数据的变更呢?为什么你总要花时间去和客户解释这些数据产生的原因呢?好了,这就要说到我们今天这篇博客的主题——审计。什么是审计?结合本文引言中的描述的场景,当我们
原创
890阅读
0评论
0点赞
发布博客于 9 月前

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

Hi,各位朋友,大家好!欢迎大家关注我的博客,我的博客地址是: https://blog.yuanpei.me。今天是远程办公以来的第一个周末,虽然公司计划在远程两周后恢复正常办公,可面对着每天都有人离开的疫情,深知这一切都不会那么容易。窗外的阳光透过玻璃照射进屋子,这一切都昭示着春天的脚步渐渐近了。可春天来了,有的人却没有再回来。那些在2019年结束时许下的美好期待、豪言壮语,在这样一场灾难面前...
原创
1726阅读
0评论
1点赞
发布博客于 1 年前

使用 jsDelivr 为 Hexo 博客提供高效免费的CDN加速

最近给博客做了升级,从3.x升级到了4.x,主要是在官网看到了关于静态页面生成效率提升的内容。众所周知,Hexo在文章数目增加以后会越来越慢。博主大概是从14年年底开始使用Hexo这个静态博客的,截止到目前一共有176篇博客,其中的“慢”可想而知,中间甚至动过使用Hugo和VuePress的念头,所以,听说有性能方面的提升,还是决定第一时间来试试。整个升级过程挺顺利的,唯一遇到的问题是关于外部链接...
原创
1697阅读
0评论
0点赞
发布博客于 1 年前

从 .NET Core 2.2 升级到 3.1 的踩坑之旅

有时候,版本更新太快并不是一件好事。虽然,两周一个迭代的“敏捷”开发依然被客户嫌弃交付缓慢,可一边是前端领域“求不要再更新了,学不动了”的声音,一边则是.NET Core从1.x到2.x再到3.x的高歌猛进。版本更新太快,带来的是API的频繁变动,无法形成有效的知识沉淀,就像转眼到了2020年,Python2.x和Windows7都引来了“寿终正寝”,可能你都还没有认真地学习过这些知识,突然就被告...
原创
4666阅读
0评论
2点赞
发布博客于 1 年前

使用Liquid实现简单的数据交换

在平时的开发工作中,接口对接是一件无可避免的事情。虽然在“前后端分离”的大趋势下,后端的角色逐渐转换为数据接口的提供者,然而在实际的应用场景中,我们面对的往往是各种不同的“数据”,譬如企业应用中普遍使用的企业服务总线(ESB),这类服务要求服务接入者必须使用WebService来作为数据交换格式;再譬如电子数据交换(EDI)这种特定行业中使用的数据交换格式,从可读性上甚至还不如基于XML的WebS...
原创
1378阅读
0评论
0点赞
发布博客于 2 年前

Referrer还是Referer? 一个迷人的错误

诗人郑愁予曾经在一首诗中写道:我达达的马蹄是个美丽的错误,我不是归人,是个过客。而对我来说,十九岁之前的我,一样是个沉浸在诗歌中的文艺少年。十九岁之后的我,作为一名程序员,更多的是邂逅各种错误。可偏偏人类世界对待错误从来都不宽容,所以,错误本身既不美丽,亦不浪漫。接近中年的我,无论如何,都写不出年轻时令人惊艳的句子,这或许和我们面对错误时的不同心境,有着莫大的关联,而今天这篇博客,同样要从一个历史...
原创
1222阅读
1评论
2点赞
发布博客于 2 年前

浅析网站PV/UV统计系统的原理及其设计

国庆节前有段时间,新浪的“图床”一直不大稳定,因为新浪开启了防盗链,果然免费的永远是最贵的啊。为了不影响使用,我非常粗暴地禁止了浏览器发送Referer,然后我就发现了一件尴尬的事情,“不蒜子”统计服务无法使用了。这是一件用脚后跟想都能想明白的事情,我禁止了浏览器发送Referer,而“不蒜子”正好使用Referer来识别每个页面,所以,这是一个再明显不过的因为需求变更而引入的Bug。这个世界最离...
原创
2905阅读
1评论
1点赞
发布博客于 2 年前

使用Python开发插件化应用程序

插件化应用是个老话题啦,在我们的日常生活中更是屡见不鲜。无论是多年来臃肿不堪的Eclipse,亦或者是扩展丰富著称的Chrome,乃至近年来最优秀的编辑器VSCode,插件都是这其中重要的组成部分。插件的意义在于扩展应用程序的功能,这其实有点像iPhone手机和AppStore的关系,没有应用程序的手机无非就是一部手机,而拥有了应用程序的手机则可以是Everything。显然,安装或卸载应用程序并...
原创
1590阅读
2评论
5点赞
发布博客于 2 年前

百度地图加载海量标注性能优化策略

在上一篇博客中关于Vue表单验证的话题里,我提到了这段时间在做的城市配载功能,这个功能主要着眼于,如何为客户提供一条路线最优、时效最短、装载率最高的路线。事实上,这是目前物流运输行业智能化、专业化的一个趋势,即面向特定行业的局部最优解问题,简单来说,怎么样能在装更多货物的同时满足运费更低的条件,同时要考虑超载等等不可抗性因素,所以,这实际上是一个数学问题。而作为这个功能本身,在地图上加载大量标注更...
原创
5169阅读
0评论
1点赞
发布博客于 2 年前

Vue快速实现通用表单验证

本文开篇第一句话,想引用鲁迅先生《祝福》里的一句话,那便是:“我真傻,真的,我单单知道后端整天都是CRUD,我没想到前端整天都是Form表单”。这句话要从哪里说起呢?大概要从最近半个月的“全栈工程师”说起。项目上需要做一个城市配载的功能,顾名思义,就是通过框选和拖拽的方式在地图上完成配载。博主选择了前后端分离的方式,在这个过程中发现:首先,只要有依赖jQuery的组件,譬如Kendoui,即使使用...
原创
8803阅读
12评论
33点赞
发布博客于 2 年前

在WSL中使用Linux桌面环境的尝试与总结

最近忙里偷闲的博主,再次迷恋上折腾Linux。话说自从微软推出WSL以后,我就彻底地停止了Windows + Linux 的双系统组合。回想起从前使用过的各种Linux发行版,基本上每隔一段时间就会崩溃一次,所以,面对WSL这种近乎应用级别的方案,我个人是非常愿意去接受的。因为一不小心玩坏了的话,可以直接对应用程序进行重置,或者重新从应用商店下载,相比重装系统,我觉得这种方式要更友好一点。虽然说W...
原创
8844阅读
5评论
2点赞
发布博客于 2 年前

通过ApiExplorer为Swagger提供MVC扩展

我一直想吐槽下运维同事提供的Jekins项目模板,因为它居然不支持含有多个项目的解决方案。作为一个有追求的程序员,每个解决方案下最少应该含有两个项目,即项目本身和项目对应的单元测试。可惜在这样一种情形下,我没法再去坚持这样的原则,而这真正让我感到难过的是,为了在编译环节向Jekins妥协,大家在一个项目里极尽所能,在这一个项目里居然混合了MVC、WebApi和WebService三种技术,甚至到最...
原创
954阅读
5评论
0点赞
发布博客于 2 年前

.NET Core POCOController在动态Web API中的应用

Hi,大家好,我是Payne,欢迎大家关注我的博客,我的博客地址是:https://blog.yuanpei.me。在上一篇文章中,我和大家分享了ASP.NET中动态Web API的实现,这种方案的现实意义是,它可以让我们把任意一个接口转换为Web API,所以,不单单局限在文章里提到的WCF迁移到Web API,任意领域驱动开发(DDD)中的服务层,甚至是更为普遍的传统三层,都可以通过这种方式快...
原创
843阅读
0评论
0点赞
发布博客于 2 年前

长安十二时辰随想

年少时未见长安,难以想象万国来朝的盛唐气象,心中最为仰慕的人物,是那个“好剑术、喜任侠“、二十五岁“仗剑去国、辞亲远游”的李白。人在年少轻狂的时候,容易因为一个人的豪迈不羁,而选择性地模糊一个时代的印象。于是,长安就蓦地变成了李太白大放异彩的舞台。印象里的长安,是一个可以让人吟咏“安能摧眉折腰事权贵,使我不得开心颜”的地方,是一个可以让“贵妃捧墨、力士脱靴”的地方,是一个“绣口一吐,就是半个盛唐”...
原创
1043阅读
3评论
2点赞
发布博客于 2 年前

使用ASP.NET Core和Hangfire实现HTTP异步化方案

Hi,大家好,我是Payne,欢迎大家一如既往地关注我的博客。今天这篇博客里的故事背景,来自我工作中的一次业务对接,因为客户方提供的是长达上百行的XML,所以一度让更喜欢使用JSON的博主感到沮丧,我这里不是想讨论XML和JSON彼此的优缺点,而是我不明白AJAX里的X现在基本都被JSON替代了,为什么还有这么多的人坚持使用并友好的XML作为数据的交换协议呢?也许你会说,因为有这样或者那样等等的理...
原创
3040阅读
0评论
4点赞
发布博客于 2 年前

通过动态Controller实现从WCF到Web API的迁移.

在《又见AOP之基于RealProxy实现WCF动态代理》这篇文章中,我和大家分享了关于使用动态代理来简化WCF调用过程的相关内容,当时我试图解决的问题是,项目中大量通过T4生成甚至手动编写的“代理方法”。今天,我想和大家分享的是,如何通过动态的Controller来实现从WCF到Web API的迁移。为什么会有这个环节呢?因为我们希望把一个老项目逐步迁移到.NET Core上面,在这个过程中首当...
原创
540阅读
0评论
1点赞
发布博客于 2 年前

《Web API 的设计与开发》读书笔记

设计优美的Web API:易于使用、便于更改、健壮性好、不怕公开REST的两层含义:指符合Fielding的REST架构风格的Web服务系统指使用符合RPC风格的XML或JSON + HTTP接口的系统(不使用SOAP)端点的基本设计:短小便于输入的URI-人可以读懂的URI没有大小写混用的URI修改方便的URI不暴露服务端架构的URI规则统一的URIHTTP方法和...
原创
1357阅读
1评论
1点赞
发布博客于 2 年前

又见AOP之基于RealProxy实现WCF动态代理

最近一直在研究Mongodb和ElasticSearch之间同步数据的问题,苦于到目前为止,并没有取得任何实质性的进展。偶尔“趁得浮生半日闲暇”,看一看Web API设计方面的书籍,和前辈交流下项目中的历史遗留问题,最为直观的感受就是,这个世界上任何方案的最终落地,都经过理想和现实的无数次挣扎,比如我们希望迁移项目到.NET Core平台上,初步分析大概有将近1000多个无法兼容的地方,维持现状固...
原创
570阅读
0评论
1点赞
发布博客于 2 年前

WSL下Docker使用踩坑小记

众所周知,Win10中开始提供Linux子系统,即Windows Subsystem for Linux,简称WSL,它可以让我们在Windows系统使用Linux系统,自从有了这个新功能以后,博主果断地放弃双系统的方案,因为折腾起来实在花费时间。关于如何使用WSL,网上有非常多的文章可以参考,这里不再赘述。今天想说的是,WSL下使用Docker遇到的各种坑。装完WSL以后,对各种编译环境的使用...
原创
11591阅读
4评论
9点赞
发布博客于 2 年前

由DBeaver与PL/SQL引发的数据库吐槽

因为工作中需要同时面向MySQL、Oracle和SQLServer三种数据库进行开发,所以,大概从去年国庆节开始,我开始使用一个开源的数据库管理工具——DBeaver。使用这个工具的初衷,是因为我不想在同一台电脑上安装三个客户端工具,尤其是Oracle和SQLServer这种令人恐惧的、动辄需要重装系统的应用程序。我不想再使用类似Navicat这样的软件,因为它的画风像是上个世纪VB6.0的产品...
原创
4369阅读
7评论
7点赞
发布博客于 2 年前

聊聊前端跨域的爱恨情仇

今天是过完春节以后的第二周啦,而我好像终于回到正常工作的状态了呢,因为突然间就对工作产生了厌倦的情绪,Bug就像无底洞一样吞噬着我的脑细胞。人类就像一颗螺丝钉一样被固定在整部社会机器上,除了要让自己看起来像个正常人一样,还要拼命地让所有人都像个正常人一样。过年刚经历过被催婚的我,面对全人类近乎标准的“幸福”定义,大概就是我此刻这种状态。其实,除了想自己定义“幸福”以外,我还想自己定义“问题”,因为...
原创
26854阅读
7评论
3点赞
发布博客于 2 年前

基于Server-Sent Events实现服务端消息推送

前段时间,为客户定制了一个类似看板的东西,用户可以通过看板了解任务的处理情况,通过APP扫面页面上的二维码就可以领取任务,而当任务被领取以后需要通知当前页面刷新。原本这是一个相对简单的需求,可是因为APP端和PC端是两个不同的Team在维护,换句话说,两个Team各自有一套自己的API接口,前端页面永远无法知道APP到底什么时候扫描了二维码,为此前端页面不得不通过轮询的方式去判断状态是否发生了变化...
原创
3342阅读
0评论
0点赞
发布博客于 2 年前

博客图片迁移折腾记

  去年国庆的时候,七牛官方开始回收测试域名,这直接导致博客中大量图片出现无法访问的情况,虽然博主第一时间启用了新的域名:https://blog.yuanpei.me,可是因为七牛官方要求域名必须备案,所以,这件事情一直耽搁着没有往下进行。至于为什么会一直拖到2019年,我想大家都能猜到一二,没错,我就是懒得去弄域名备案这些事情
原创
1121阅读
0评论
4点赞
发布博客于 2 年前

基于WebSocket和Redis实现Bilibili弹幕效果

  嗨,大家好,欢迎大家关注我的博客,我是Payne,我的博客地址是https://qinyuanpei.github.io。在上一篇博客中,我们使用了.NET Core和Vue搭建了一个基于WebSocket的聊天室。在今天这篇文章中,我们会继续深入这个话题。博主研究WebSocket的初衷是,我们的项目上有需要实时去推送数据来完成图表展示的业务,而博主本人对这个内容比较感兴趣,因为博主有对爬虫...
原创
4399阅读
0评论
2点赞
发布博客于 3 年前

使用.NET Core和Vue搭建WebSocket聊天室

  Hi,大家好,我是Payne,欢迎大家关注我的博客,我的博客地址是:https://qinyuanpei.github.io。今天这篇博客,我们来说说WebSocket。各位可能会疑惑,为什么我会突然间对WebSocket感兴趣,这是因为最近接触到了部分“实时”的业务场景,譬如:用户希望在远程视频通话过程中,实时地监控接入方的通话状态,实时地将接入方的响应时间、通话时长以及接通率等信息推送到后...
原创
9588阅读
5评论
0点赞
发布博客于 3 年前

声明式RESTful客户端WebApiClient在项目中的应用

  自从项目上采用敏捷开发的流程以后,我们的开发任务中出现了不少“联调”的任务,而所谓的“联调”任务,完全是拜前后端分离所赐。通常来讲,按照前后端分离的思想,我们的团队会被分成前端和后端两个组,前端负责页面内数据的展示,后端负责提供相关服务的接口。这样听起来非常合理,对吧?可问题在于,后端常常在等前端联调这些接口,因为后端不知道具体有哪些异常需要处理;同样,前端常常在等后端接口稳定,因为一旦出现问...
原创
6822阅读
1评论
2点赞
发布博客于 3 年前

基于Docker构建-NET持续集成环境

  最近在考虑将整个项目组的产品,努力向着持续集成(CI)/持续部署(CD)的方向靠拢,因为目前我们仅仅实现了基于Docker的自动化部署,而部署包的构建依然依赖于人工打包,而每个版本的测试和部署,基本上都要给所有相关人员发一遍邮件,而写邮件无非是填写版本号和变更历史。身处在这样一个社会化分工逐渐加剧的『摩登时代』,我们唯一的希望就追求技能的多元化,你越是担心有一天会被AI所替代,就越是应该去追求...
原创
3079阅读
0评论
1点赞
发布博客于 3 年前

一个由服务器时区引发的Bug

  太阳照常升起,在每个需要挤公交车上班的日子里,即使窗外早已大雨如注。想来只有在周末,太阳会陪着我一起起床,所谓睡觉睡到自然醒,在雨天里保持晴天的心情,相当大的程度上,是因为今天不必上班。因此,一周里的心情晴雨表,简直就是活生生的天气预报,可惜我并不能预测我的心情,因为Bug会在某一瞬间发动突然袭击。一周前测试同事小J得到用户的反馈,我们某一笔订单突然无法从系统中查到,可就在数分钟前用户创建了这...
原创
3349阅读
0评论
2点赞
发布博客于 3 年前

关于电影《暗杀》背后的故事和想法

  最近看过了由全智贤主演的电影《暗杀》,虽然说这是一部我们早已熟稔的抗战题材电影,可是在全女神颜值和演技的诱惑下,我终于还是花了点时间来看这部电影。或许是因为我们见识过了太多的“抗日神剧”,所以在面对这样一部电影的时候,我们难免带着某种不屑的眼光去审视它。可是当你看完了这部电影,突然间兴奋到难以自制,不由地惊呼一声:想不到韩国拍这种主旋律电影都能这么好看。我想,这是一种由视角转换所引起的代入感,...
原创
1582阅读
0评论
0点赞
发布博客于 3 年前

使用SonarCloud为.NET-NET-Core项目集成静态检查

  Hi,朋友们,大家好,欢迎大家关注我的博客,我是Payne,我的博客地址是http://qinyuanoei.github.io。在不知不觉间,5月份已然度过大半,最近无论是读书还是写作均停滞不前,被拖延症支配的我深感有虚度时光之嫌。今天这篇文章,我将为大家介绍如何使用SonarCloud,来为.NET/.NET Core项目集成静态检查。如果大家使用过SonarCube的话,对接下来我要讲的...
原创
905阅读
0评论
1点赞
发布博客于 3 年前

罗马数字与阿拉伯数字的相互转换

  最近遇到一道非常有趣的题目,题目大意如下:有一个富翁在银河系里做生意,而银河系使用的是罗马数字,所以他需要一个精明能干的助手,帮助他完成罗马数字与阿拉伯数字的相互转换,题目在这个背景下衍生出交易场景,我们需要帮助他计算出相关商品的价格。对于这道题目,如果剥离开这个题目本身的交易场景,这道题目本质上就是一个纯粹的算法问题。说来惭愧,博主当时并未能快速地解决这个问题,事后通过研读别人的文章始能有所...
原创
8627阅读
1评论
5点赞
发布博客于 3 年前

邂逅AOP:说说JavaScript中的修饰器

  Hi,各位朋友,大家好,欢迎大家关注我的博客,我是Payne,我的博客地址是https://qinyuanpei.github.io。这个月基本上没怎么更新博客和公众号,所以今天想写一篇科普性质的文章,主题是JavaScript中的修饰器。 为什么使用了”邂逅”这样一个词汇呢?因为当你知道无法再邂逅爱情的时候,你只能去期待邂逅爱情以外的事物;当你意识到爱情不过是生命里的小插曲,你只能去努力弥补...
原创
1319阅读
0评论
1点赞
发布博客于 3 年前

一念执着,千山无阻

  上周看了部印度电影《小萝莉的猴神大叔》,以一言敝之,这是一部被名字耽误的好电影,就像我们所熟知的《三傻大闹宝莱坞》、《偶滴个神呐》、《外星醉汉PK地球神》等等电影一样。不过作为一部由“印度三汗”之一萨尔曼·汗主演的电影,可能因为其在国内的知名度不及阿米尔·汗,所以早在这部2015年就上映的电影,并未在国内产生太显著的影响力。相反,同档电影《环太平洋2》票房热度居高不下,大概是因为景甜姐姐终于不...
原创
667阅读
0评论
1点赞
发布博客于 3 年前

漫谈应用程序重试策略及其实现

  最近随项目组对整个项目进行联调,在联调过程中暴露出各种问题,让我不得不开始反思,怎么样更好地去做好一件事情,譬如说在开发过程中如何保证Web服务的稳定性,在敏捷开发中如何降低文档维护的成本,以及如何提高多环境服务部署的效率等等。我为什么会考虑这些问题呢?通常我们都是在约定好接口后并行开发的,因此在全部接口完成以前,所有的服务都是以渐进的形式进行集成的,那么如何保证服务在集成过程中的稳定性呢?尤...
原创
1160阅读
0评论
0点赞
发布博客于 3 年前

基于新浪微博的男女性择偶观数据分析(下)

  各位朋友,大家好,我是Payne,欢迎大家关注我的博客。我的博客地址是:https://qinyuanpei.github.io。对于今天这篇文章的主题,相信经常关注我博客的朋友一定不会陌生。因为在2017年年底的时候,我曾以此为题写作了一篇文章:基于新浪微博的男女择偶观数据分析(上)。这篇文章记录了我当时脑海中闪烁着的细微想法,即当你发现一件事物背后是由哲学或者心理学这类玄奥的科学在驱动的时...
原创
2900阅读
5评论
3点赞
发布博客于 3 年前

使用Unity框架简化应用程序异常处理及日志记录流程

  最近公司安排学习项目代码,前后花了一周左右的时间,基本熟悉了项目中的各个模块,感觉项目难度上整体偏中等。这是一个具备完整前端和后端流程的项目,在学习这个项目的过程中,我逐渐发现某些非常有趣的东西,比如在Web API的设计中采用严谨而完善的错误码、使用OAuth和JWT对API资源进行访问控制,在JavaScript中使用修饰器特性来实现日志记录等等,这些东西我会在后续的博客逐步去整理,今天想...
原创
1893阅读
6评论
2点赞
发布博客于 3 年前

行走在消逝中

  从昨天到今天,关于霍金逝世的消息,一直在朋友圈里刷屏。昨天同事告诉我这个消息的时候,我心底先是一片恍惚,而后习惯性地打开微信,发现朋友圈和公众号里都在讨论这件事情。而等到我吃饭的时候,居然听到临桌的一名男生,在向同伴讲述霍金辐射的理论,堪称我在这一天所见过的一股清流。不知道从什么时候开始,一个人物的突然离去,总是会让人们在短时间内亢奋起来,仿佛一场集体缅怀的狂欢。回顾最近这些年来已故的名人,例...
原创
750阅读
0评论
1点赞
发布博客于 3 年前

我是猫,一只特立独行的猫

  终于在除夕夜到来前,在Kindle上读完了2017年的最后一本书,来自夏目漱石先生的《我是猫》。起初买这本书的动机说起来非常滑稽,一来以为这会是一本诙谐幽默的书,二来对夏目这个名字莫名地充满好感。我读的是曹曼翻译的中文译本,读时觉得这位作者的文字清新素雅,即使全书行文节奏堪称缓慢到极点,想来应该是我们这个时代的人物。及至翻阅作者生平,始知这位被誉为“国民大作家”的日本作家,早在100年前就在日...
原创
1511阅读
0评论
0点赞
发布博客于 3 年前

基于Travis CI实现 Hexo 在 Github 和 Coding 的同步部署

  各位朋友,大家好,我是Payne,欢迎大家关注我的博客,我的博客地址是 https://qinyuanpei.github.io .在曾经的一篇博客:《持续集成在Hexo自动化部署上的实践》中,我为大家分享了在线持续集成服务 Travis CI 的相关内容,在这篇文章中我们通过 Travis CI 为 Hexo 提供了自动部署的支持。其原理是Github为 Travis CI 分配一个to...
原创
2732阅读
0评论
1点赞
发布博客于 3 年前

基于Python实现的微信好友数据分析

  最近微信迎来了一次重要的更新,允许用户对”发现”页面进行定制。不知道从什么时候开始,微信朋友圈变得越来越复杂,当越来越多的人选择”仅展示最近三天的朋友圈”,大概连微信官方都是一脸的无可奈何。逐步泛化的好友关系,让微信从熟人社交逐渐过渡到陌生人社交,而朋友圈里亦真亦幻的状态更新,仿佛在努力证明每一个个体的”有趣”。有人选择在朋友圈里记录生活的点滴,有人选择在朋友圈里展示观点的异同,可归根到底,人...
原创
19988阅读
39评论
20点赞
发布博客于 3 年前

使用Python生成博客目录并自动更新README

  各位朋友,大家好,我是Payne,欢迎大家关注我的博客,我的博客地址是:https://qinyuanpei.github.io。首先在这里祝大家春节快乐,作为过完年以后的第一篇文章,博主想写点内容风格相对轻松的内容。自从博主的博客采用 TravisCI 提供的持续集成(CI)服务以以来,博客的更新部署变得越来越简单,所有的流程都被简化为Git工作流下的提交(commit)和推送(push)操...
原创
1262阅读
0评论
1点赞
发布博客于 3 年前

愿你和我一样喜欢蛋炒饭

  周末花了一个晚上的时间看了部电影,由黄渤主演的《蛋炒饭》。有人说,这是一部刻意模仿《阿甘正传》的电影,充满胶片质感的纪录片风格,相似的镜头语言和表现手法,无一不在努力告诉你,这是一部本土化的《阿甘正传》。可是如同巧克力之于蛋炒饭,两种截然不同的食物会有不同的味道,电影所反映的实则是两种不同的内涵。如果说《阿甘正传》代表的是极具美国精神的励志故事,那么《蛋炒饭》代表的则是小人物为理想打拼的乌托邦...
原创
883阅读
0评论
0点赞
发布博客于 3 年前

基于Python实现Windows下壁纸切换功能

在过去一年多的时间里,我尝试改变博客的写作风格,努力让自己不再写教程类文章,即使在这个过程中,不断地面临着写作内容枯竭的痛苦。因为我渐渐地意识到,告诉别人如何去做一件事情,始终停留在”术”的层面,而比这个更为重要的是,告诉别人为什么要这样做,这样就可以过渡到”道”的层面。古人云:形而上者谓之道,形而下者谓之器。我们常常希望通过量变来产生质变,可是如果在这个过程中不能及时反思和总结,我们认为的努力或
原创
9039阅读
2评论
5点赞
发布博客于 3 年前

深入浅出理解Python装饰器

各位朋友,大家好,我是Payne,欢迎大家关注我的博客,我的博客地址是https://qinyuanpei.github.io。今天我想和大家一起探讨的话题是Python中的装饰器。因为工作关系最近这段时间在频繁地使用Python,而我渐渐意识到这是一个非常有趣的话题。无论是在Python标准库还是第三方库中,我们越来越频繁地看到装饰器的身影,从某种程度上而言,Python中的装饰器是Python
原创
1307阅读
0评论
1点赞
发布博客于 3 年前

无问东西:你曾是少年

如果提前了解了你所要面对的人生,你是否还有勇气前来?这是电影《无问西东》里提出的一个问题。作为一部清华大学建校100周年的献礼片,在因为种种原因而被雪藏6年以后,终于以这样一种倔强而孤傲的姿态,进入到人们的视野。电影一开始,透过玻璃注视着四胞胎的张果果(张震饰),第一次向我们发问:如果提前了解了你所要面对的人生,你是否还有勇气前来。而在电影接近尾声的时候,张果果再一次注视着四胞胎,在
原创
1882阅读
3评论
0点赞
发布博客于 3 年前

AI时代:聊聊大数据中的MapReduce

各位朋友,大家好,我是Payne,欢迎大家关注我的博客。最近读一本并行计算相关的书籍,在这本书中作者提到了MapReduce。相信熟悉大数据领域的朋友,一定都知道MapReduce是Hadoop框架中重要的组成部分。在这篇文章中,博主将以函数式编程作为切入点,来和大家聊一聊大数据中的MapReduce。如今人工智能正成为行业内竞相追逐的热点,选择MapReduce这个主题,更多的是希望带领大家一窥
原创
1050阅读
2评论
2点赞
发布博客于 3 年前

《C#多线程编程实战》读书笔记

本文是一篇读书笔记,由《C#多线程编程实战》一书中的内容整理而来,主要梳理了.NET中多线程编程相关的知识脉络,从Thread、ThreadPool、Task、async/await、并发集合、Parallel、PLINQ到Rx及异步I/O等内容,均有所覆盖。为了帮助大家理解本文内容,首先给出博主在阅读该书过程中绘制的思维导图,大家可以根据个人需要针对性的查漏补缺。线程基础Tips1
原创
5222阅读
3评论
11点赞
发布博客于 3 年前

致前任:愿余生各自安好

也许是因为年纪大了的缘故,渐渐地如同上瘾一般喜欢上怀旧,喜欢怀旧到了什么程度呢?想着再次重温下小马哥的英雄本色,想着再次感受下星球大战里的刀光剑影……可是每次都因为不同的原因而落空,之所以没有去看《英雄本色》,是因为附近的电影院都没有排片,那么这一次呢,好像是因为一部和前任有关的电影《前任攻略3:再见前任》。或许前任与现任永远都是一道无解的题目,就如同网上流传着的一个问题,“我和你妈同时掉水里你会
原创
2762阅读
0评论
0点赞
发布博客于 3 年前

2017,在驻足间回首

当朋友圈开始集体缅怀18岁的时候,我们说,从此以后是00后的天下,因为所以的90后都成年了。或许我们都是喜欢怀旧的人,所以我们选择以这样一种方式,在狂欢中失去的同时,在失去中缅怀着,仿佛这种死磕到底的做法,会让这一切来得更晚一些。一群人抱着手机等待着新年的到来,和曾经无数个无眠的夜晚一样,我们并不知道明天会有什么,就像钟表的指针哒哒地作响,生命的齿轮永不停歇地转动。我们习惯性地期盼明天会更好,因为
原创
1050阅读
11评论
2点赞
发布博客于 3 年前

基于新浪微博的男女性择偶观数据分析

或许是因为我喜欢的姑娘从来都不喜欢我,而感情上的挫折一度让我陷入无尽的自卑。朋友在朋友圈里发布一条关于皮影戏的动态,我开玩笑说这个皮影戏结局应该是个悲剧,因为我注意到在剧中,无论一个人如何卖力地表演甚至双腿跪倒在地,有的人从故事开场到结束一直对此无动于衷。朋友回复我说,这不就是你现在的状态吗?我沉默半天终于熄灭手机屏幕。我听到过各种各样让我放弃她的话,即使这种念头在我脑海里萌生已久,是幻想让我硬生生
原创
3044阅读
5评论
5点赞
发布博客于 4 年前

迁移Hexo博客到Google渐进式Web应用(PWA)

如果说通过TravisCI实现博客的自动化部署,是持续集成这个概念在工作以外的一种延伸,那么今天这篇文章想要和大家分享的,则是我自身寻求技术转型和突破的一种挣扎。前段时间Paul同我聊到Web技术的发展趋势,Paul认为Web应用会逐渐取代原生应用成为主流,我对此不置可否。真正让我陷入思考的是,在这个充满变化的时代,知识的更新速度远远超过你我的学习速度,我们应该如何去追随这个时代的步伐。如同那些淹没
原创
2148阅读
0评论
0点赞
发布博客于 4 年前

持续集成在Hexo自动化部署上的实践

曾经听到过这样一句话,”不要用战术上的勤奋掩盖战略上的懒惰”,所以战术和战略更像是抽象类和具体类,而面向对象设计实际上是现实等级制度的一种映射。因此我们注意到,决策者通常关注的是战略层面的抽象概念,而执行者通常更关注战术层面的具体实现,正如在代码的架构设计中,处在顶层的代码以发送指令为主要使命,处在底层的代码以实现功能为主要使命。面对日新月异的互联网技术,当我们听到越来越多的新名词,譬如微服务、De
原创
1676阅读
0评论
0点赞
发布博客于 4 年前

从React专利事件看开源软件许可

各位朋友,我是Payne,大家好,欢迎大家关注我的博客,我的博客地址是https://qinyuanpei.github.io。最近前端技术圈因为React专利事件再次被大家关注,印象中Angular和Vue的纷争刚刚过去不久,果然前端技术圈对”造轮子”和”搞事情”有着近乎执著的追求。作为一个在知乎吃瓜的伪前端工程师,我对这凑热闹这种事情从来都是是颇为喜欢的。如果说Angular和Vue冲突主要来自
原创
4488阅读
0评论
2点赞
发布博客于 4 年前

基于特性(Attribute)的实体属性验证方案设计

各位朋友,我是Payne,大家好,欢迎大家关注我的博客,我的博客地址是https://qinyuanpei.github.io。在这篇文章中,我想和大家探讨下数据校验的相关问题,为什么我会对这个问题感兴趣呢?这其实是来自最近工作中相关需求场景,而这篇文章其实是我在去年就准备要写的一篇文章,这篇文章一直存放在草稿箱里没有发布出来,所以结合这段时间项目上的思考,对当初的设计方案进行了改进,所有就有了大家
原创
1693阅读
0评论
0点赞
发布博客于 4 年前

Redis缓存技术学习系列之Lua脚本

各位朋友,大家好,我是Payne,欢迎大家关注我的博客,我的博客地址是https://qinyuanpei.github.io。想起来大概有一个月没有更新博客啦。或许是因为这中间发生了太多的事情,想来人生原本就充满曲折和变数。在微信群里得知家中舅爷去世的消息,突然意识到时间早已摧毁你我的一切。那个曾经同你有千丝万缕联系的人,会在某一刻同你彻底失去联系。所以我更珍视彼此在一起的时光,因为在这个世界上每
原创
2091阅读
0评论
0点赞
发布博客于 4 年前

《大护法》—— 花生镇里的成人童话

猛然间驻足回首这些错落的旧时光,我渐渐意识到我已经有三个月没有写博客了。如果一定要我说出这是种什么样的感觉,大概就是你永远都不会知道永远到底有多远。或许你会喜欢上一个陌生的人,源自不经意间的惊鸿一瞥;或许你会开始厌倦一个熟悉的人,源自不经意间的怅然若失。时间如风起云涌,一边熟悉着一边陌生着,永远像极了一场你追我赶的拉力赛。从办公室里走出来被热风吹袭的一瞬间,我居然有种久违的暖人肺腑的感觉。每个人都像
原创
1193阅读
0评论
1点赞
发布博客于 4 年前

基于过滤器实现异常处理的探索

正如你所看到的那样,今天我想和大家聊聊异常处理这个话题。对于异常处理这个话题,我相信大家都有各自的方法论。而我今天想和大家探讨的这种异常处理方案,我将其称之为基于过滤器的异常处理。我不知道这种定义是否准确,我们的项目上在要引入AOP的概念以后,我们对异常处理的关注点就从try-catch转向Interceptor。虽然首席架构极力推荐,使用Unity框架来拦截代码中的各种异常,可从我最初纠结于”re
原创
2963阅读
0评论
1点赞
发布博客于 4 年前

异步Lambda表达式问题的探索

各位朋友,大家好,欢迎大家关注我的博客,我是Payne,我的博客地址是:http://qinyuanpei.com。今天博主想和大家探讨的是,.NET中异步Lambda表达式的问题。为什么要讨论这个问题呢,这或许要从公司首席架构推广内部框架这件事情说起。我其实很久以前就有这种在团队内部做技术演进的想法,即通过公共类库、团队Wiki和技术交流等形式逐步地推进和完善团队整体架构的统一,因为一个团队在业务
原创
4635阅读
2评论
1点赞
发布博客于 4 年前

Redis缓存技术学习系列之发布订阅

各位朋友,大家好,我是Payne,欢迎大家关注我的博客,我的博客地址是http://qinyuanpei.com。最近这段时间的天气可谓是变幻莫测,常常是周一到周五像夏天般热烈,而周六和周天像秋天般冷清。你不知道它到底会在何时下雨,即使你可以一直带着伞等雨落下来。但是对于没有伞的我来说,学会努力奔跑以至于不那么狼狈,或许是在这个世界上我唯一可以去做的事情。可是你知道一个人孤独的时候,即使是下雨这种再
原创
12237阅读
1评论
2点赞
发布博客于 4 年前

Redis缓存技术学习系列之事务处理

在本系列的第一篇文章中,我们主要针对Redis中的“键”和“值”进行了学习。我们可以注意到,Redis是一个C/S架构的数据库,在我们目前的认知中,它是通过终端中的一条条命令来存储和读取的,即它是一个非常典型的“请求-响应”模型。可是我们知道在实际的应用中,我们要面对的或许是更为复杂的业务逻辑,因为Redis中不存在传统关系型数据库中表的概念,因此在使用Redis的过程中,我们要面对两个实际的问题
原创
3922阅读
2评论
3点赞
发布博客于 4 年前

Redis缓存技术学习系列之邂逅Redis

作为一个反主流的开发者,在某种程度上,我对传统关系型数据库一直有点“讨厌”,因为关系型数据库实际上和面向对象思想是完全冲突的,前者建立在数学集合理论的基础上,而后者则是建立在软件工程基本原则的基础上。虽然传统的ORM、序列化/反序列化在一定程度上解决了这种冲突,但是软件开发中关于使用原生SQL语句还是使用ORM框架的争论从来没有停止过。可是实际的业务背景中,是完全无法脱离数据库的,除非在某些特定的场
原创
11118阅读
6评论
10点赞
发布博客于 4 年前

使用C#开发HTTP服务器之支持HTTPS

各位朋友大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是http://qinyuanpei.com。本文是“使用C#开发HTTP服务器”系列的第六篇文章,在这个系列文章中我们实现了一个基础的Web服务器,它支持从本地读取静态HTML页面,支持GET和POST 两种请求方式。该项目托管在我的 Github 上,项目地址为:https://github.com/qinyuanpei/HttpSe
原创
17477阅读
6评论
1点赞
发布博客于 4 年前

基于Mono和VSCode打造轻量级跨平台IDE

最近Visual Studio推出Mac版本的消息迅速在技术圈里刷屏,当工程师们最喜欢的笔记本电脑Mac,邂逅地球上最强大的集成开发环境Visual Studio的时候,会碰撞出怎样精彩的火花呢?在微软新任CEO纳德拉的“移动为先、云为先”战略下,微软的转变渐渐开始让人欣喜,从.NET Core、VSCode、TypeScript再到近期的Visual Studio For Mac,这一系列动作让我
原创
10585阅读
4评论
3点赞
发布博客于 4 年前

函数式编程常用术语

近年来函数式编程这种概念渐渐流行起来,尤其是在React/Vuejs这两个前端框架的推动下,函数式编程就像股新思潮一般瞬间席卷整个技术圈。虽然博主接触到的前端技术并不算深入,可这并不妨碍我们通过类似概念的延伸来理解这种概念。首先,函数式编程是一种编程范式,而我们所熟悉的常见编程范式则有命令式编程(Imperative Programmming)、函数式编程(Functional Programmin
原创
2142阅读
0评论
0点赞
发布博客于 4 年前

愿浮萍乘风破浪

或许是今年的贺岁档电影全部遭遇“滑铁卢”的缘故,在这种情况下,电影《乘风破浪》或许会成为拯救整个贺一个岁档的奇迹。同往常一样,我依然选择一个人去看电影,而庆幸的是韩寒真的没有让我们失望。虽然前期在微博上经常看到韩寒在为这部电影做宣传,但我一直想知道它会一种什么样的方式来讲述这个故事,我隐隐约约觉得徐太浪(邓超饰)、徐正太(彭于晏饰)、小花(赵丽颖饰)三个人之间的关系非同寻常,我甚至臆想这是一部俗套的
原创
1323阅读
3评论
1点赞
发布博客于 4 年前

基于C#中的Trace实现一个简单的日志系统

最近在做的项目进入中期阶段,因为在基本框架结构确定以后,现阶段工作重心开始转变为具体业务逻辑的实现,在这个过程中我认为主要有两点,即保证逻辑代码的正确性和容错性、确定需求文档中隐性需求和逻辑缺陷。为什么我说的这两点都和用户需求这个层面息息相关呢?或许这和我这段时间的感受有些关系吧,我觉得当我们在面对用户提出的需求的时候,一个非常让我们不爽的一个地方是,我们总是需要花费大量的时间来和用户确定某些细节,
原创
13093阅读
13评论
5点赞
发布博客于 5 年前

像诗人一样睿智,像天才一样疯狂

我不知道大家如何定义程序员这个工作,在我看来,在某种意义上,程序员和艺术家们具有相同之处,我们都是创作者,和诗人、画家、作家等等这些职业相近,我们都在试图创作出优秀的作品,我们借助编程语言来重构我们对这个世界的认识、借助抽象的概念来创造这个世界上不存在的东西,所以我们对自由和创造的渴望,来源自我们在这个世界上写下的第一行代码,或许这像是一个充满理想主义的臆想,可这并不重要,重要的是你如何看待这个世界
原创
1982阅读
0评论
7点赞
发布博客于 5 年前

你了解爱的艺术吗?

或许我不是一个懂得如何去爱人的人,我时常陷入一种自我否定的焦虑当中,当我发觉自己喜欢上一个人的时候,从某种意义上它会让我身上的缺点被无情地放大,我并不畏惧在喜欢的人面前暴露这些缺点,因为这就是真实的我,因此我从来不喜欢去塑造别人,让别人成为我心目中期待的样子,可是我会忍不住去塑造我自己,尤其是在和别人相处的过程中,发现我身上的缺点或者问题的时候,我习惯了对自我严格,虽然我知道这个过程注定痛苦,可是你
原创
1522阅读
0评论
0点赞
发布博客于 5 年前

当黑客遇见画家

其实一直想读《黑客与画家》这本书,所以在我买了Kindle以后,这本书就成为我读完的第一本书。本书作者是美国互联网界举足轻重、有“创业教父”之称的哈佛大学计算机博士保罗·格雷厄姆 (Paul Graham ),而这本书是由他的思考整理而成的一本文集,虽然这本书的名字叫做《黑客与画家》,可实际上作者在这本书中观点,并非局限于黑客与画家本身,相反地它涉及编程、软件、创业、财富、设计、研究等等多个领域。我
原创
1431阅读
0评论
1点赞
发布博客于 5 年前

一个关于概率的问题的思考

最近需要给公司内部编写一个随机生成人员名单的小工具,在解决这个问题的过程中,我认识到这是一个概率相关的问题,即使在过去我曾经设计过类似转盘抽奖这样的应用程序,可我并不认为我真正搞清楚了这个问题,所以想在这篇文章中说说我对概率问题的相关思考。首先,我们来考虑这个问题的背景,我们需要定期在内部举行英语交流活动,可是大家的英语水差异悬殊,所以如果按照常规的思路来解决这个问题,即认为每个人被选中的概率是相等
原创
2916阅读
1评论
0点赞
发布博客于 5 年前

在Unity3D中使用uGUI实现3D旋转特效

各位朋友大家好,欢迎大家关注我的博客,我是Payne,我的博客地址是http://qinyuanpei.com。最近一位朋友问我,如何在Unity引擎中实现类似《英雄联盟》中选择皮肤时的3D滚动视图效果,虽然我非常不喜欢这个游戏,可是大学四年在宿舍里被周围同学们耳濡目染,对这个游戏中常见英雄的口头禅还是颇为熟悉的,曾经在周围同学的“硝烟”和“噪杂”中熬夜编程,此时此刻想起来大概是最能让我怀念和骄傲的
原创
15139阅读
7评论
12点赞
发布博客于 5 年前

浅析WPF中MVVM模式下命令与委托的关系

各位朋友大家好,我是Payne,欢迎大家关注我的博客,我的博客地址是http://qinyuanpei.com。最近因为项目上的原因开始接触WPF,或许这样一个在现在来讲显得过时的东西,我猜大家不会有兴趣去了解,可是你不会明白对某些保守的项目来讲,安全性比先进性更为重要,所以当你发现银行这类机构还在使用各种“复古”的软件系统的时候,你应该相信这类东西的确有它们存在的意义。与此同时,你会更加深刻地明白
原创
4859阅读
4评论
6点赞
发布博客于 5 年前

Unity3D游戏开发之在uGUI中使用不规则精灵制作按钮

各位朋友大家好,欢迎关注我的博客,我的博客地址是http://www.qinyuanpei.com。最近因为受到工作上业务因素影响,所以博主在Unity引擎上的研究有所停滞。虽然目前的工作内容和Unity3D没有直接的关联,可是我觉得工程师应该有这样一种情怀,即工作和兴趣是完全不同的两个概念。编程对我而言,首先是一种兴趣,其次是一份工作。所以我宁愿在每天下班以后继续研究自己感兴趣的东西,而非为了取悦
原创
15082阅读
9评论
8点赞
发布博客于 5 年前

使用C#开发HTTP服务器系列之构建RESTful API

各位朋友大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是http://qinyuanpei.com。到目前为止,“使用C#开发HTTP服务器”这个系列系列文章目前已经接近尾声了,虽然我们在服务器功能的完整性(如支持并发、缓存、异步、Htts等)上没有再继续深入下去,可是我们现在已经具备了一个基本的服务器框架啦,所以更多深层次的问题就需要大家根据自己的需要来扩展了,因为写博客更多的是一种“记录
原创
38259阅读
6评论
8点赞
发布博客于 5 年前

使用C#开发HTTP服务器系列之更简单的实现方式

各位朋友大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是http://qinyuanpei.com。到目前为止,我已经发布了3篇HTTP服务器开发的系列文章。对我个人而言,我非常享受这个从无到有的过程,或许我现在写的这个Web服务器有各种不完美的因素,可是当有一天我需要一个轻量级的服务器的时候,我在无形中是不是比别人多了一种选择呢?我们常常提到“不要重复造轮子”,可事实上这并不能成为我们“不
原创
22694阅读
24评论
7点赞
发布博客于 5 年前

使用C#开发HTTP服务器系列之访问主页

各位朋友大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是http://qinyuanpei.com。在这个系列文章的第一篇中,我们着重认识和了解了HTTP协议,并在此基础上实现了一个可交互的Web服务器,即当客户端访问该服务器的时候,服务器能够返回并输出一个简单的“Hello World”。现在这个服务器看起来非常简陋,为此我们需要在这个基础上继续开展工作。今天我们希望为这个服务器增加主页支
原创
10687阅读
0评论
3点赞
发布博客于 5 年前

使用C#开发HTTP服务器系列之实现Get和Post

各位朋友大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是http://qinyuanpei.com。在我们这个Web服务器有了一个基本的门面以后,我们是时候来用它做点实际的事情了。还记得我们最早提到HTTP协议的用途是什么吗?它叫超文本传输协议啊,所以我们必须考虑让我们的服务器能够接收到客户端传来的数据。因为我们目前完成了大部分的工作,所以对数据传输这个问题我们这里选择以最简单的GET和PO
原创
24756阅读
11评论
5点赞
发布博客于 5 年前