数据存储
Redis 缓存技术学习系列之 Lua 脚本
Payne在他的博客中分享了关于Redis中Lua脚本的学习,探讨了如何通过Redis内置的Lua解释器执行脚本,以及为什么选择脚本语言进行开发。他介绍了Redis中处理脚本的Eval系列和Script系列命令的用法,以及如何在Redis中使用Lua脚本进行交互。此外,他展示了如何通过具体案例演示Redis与Lua脚本的交互,并讨论了Lua数据结构与Redis数据结构之间的转换。最后,他分享了为什么使用Lua脚本以及在处理类型转换时的一些原则。整体而言,他强调了Lua脚本在Redis中的应用和重要性。
编程语言
基于特性(Attribute)的实体属性验证方案设计
Payne在博客中探讨了数据校验的问题,介绍了对该话题的兴趣源自最近工作需求,并分享了关于Attribute和Property的区别。他讨论了.NET中的Attribute的概念和使用方式,展示了一个数据校验方案的设计思路和实现技术要点,以及如何通过示例对实体属性进行验证。最后,他总结了特性和属性的概念差异,Attribute在.NET中的应用以及验证方案的设计思路,鼓励大家努力提高业务代码质量。
生活感悟
《大护法》:花生镇里的成人童话
《大护法》是一部反乌托邦式的成人童话电影,通过讲述花生人觉醒和反抗压迫者的故事,探讨了人类历史的永恒话题。影片中,主角“红冬瓜”(大护法)在花生镇寻找太子的过程中,逐渐揭示了统治者欧阳吉安利用恐惧和谎言来控制花生人的真相。电影中的太子、小姜、庖卯等角色分别代表了不同的人性面貌,展示了觉醒、反抗、理想与现实的冲突。导演不思凡通过独特的视角和怪诞的画风,创造了一个充满哲学思考的作品,引发观众对自我、社会和道德的反思。
编程语言
基于过滤器实现异常处理的探索
本文讨论了异常处理的概念和实践,作者分享了自己对异常处理的理解和经验,以及在项目中引入 AOP 后,从 try-catch 转向 Interceptor 的处理方式。文章首先区分了异常和错误,强调了软件工程中测试和错误处理的重要性,并提出统一的异常处理入口,避免代码中到处都是 try-catch 和日志记录的混乱。接着,文章介绍了 CheckedException 的概念,讨论了 Java 和 C# 中对异常处理的不同策略,并提出了基于过滤器的异常处理方案,通过定义异常基类和过滤器,利用 Attribute 关联异常和过滤器,达到代码解耦和增强可维护性的效果。作者通过实际案例展示了如何将异常处理代码重构为更优雅的形式,并通过多态和过滤器的概念简化异常处理流程,最后强调了程序员应追求代码设计的优雅,以适应不断变化的需求。
编程语言
异步 Lambda 表达式问题的探索
Payne在博客中讨论了.NET中异步Lambda表达式的问题,强调架构设计应由一线开发人员提炼和抽象,指出异步方法在ICommand接口中的历史遗留问题。他还探讨了异步编程中的异常处理机制,指出使用async void容易导致未处理异常终止程序。最后总结指出异步委托在IL层面无差别,建议使用Func而非Action来生成异步方法,对待async void应注意异常处理,强调处理各种异常的必要性。
数据存储
Redis 缓存技术学习系列之发布订阅
本文讨论了Redis中的发布-订阅模式,首先介绍了观察者模式及其实现,包括抽象主题、具体主题、抽象观察者和具体观察者的角色和功能。接着详细介绍了如何在C#中实现观察者模式。随后,文章引入Redis中的发布-订阅模式,解释了其概念,与观察者模式的联系以及相关的Redis命令,如PSUBSCRIBE、PUBLISH等。最后通过示例展示了Redis发布-订阅模式的实际操作过程。整体强调了设计模式的重要性以及Redis的发布-订阅模式与观察者模式的关联。
数据存储
Redis 缓存技术学习系列之事务处理
本文讨论了Redis中的事务处理技术。在数据库事务部分解释了事务概念,ACID属性以及事务处理的重要性。在Redis中,事务可以看作是一个命令队列,通过MULTI开始一个事务,然后逐条向Redis提交命令,最后通过EXEC执行事务。Redis中的事务与传统事务类似,具有原子性和一致性。文章还介绍了悲观锁和乐观锁的概念,以及Redis中的check-and-set机制。另外,文章提及了如何管理Redis的键,包括惰性删除和定期删除策略,以及一些建议如临时键和普通键的使用等。
生活感悟
时间如灰烬般遥远
在春天万物复苏的时节,作者赏花阅景,感受人群中的孤独与热闹之间的矛盾。他描述了在工作和离别中的心情,表达了对孤独和离别的感悟。在思考人际关系和自我认知时,他反思了生活中的普通和挑战,以及对自我和他人的爱与接纳。最后,他谈及了对未来的迷茫和对过往的回忆,描绘了时间流逝和人生变迁所带来的无常和孤寂。
数据存储
Redis 缓存技术学习系列之邂逅 Redis
这篇文章介绍了对传统关系型数据库的一些看法,引入了学习 Redis 缓存技术的决定。详细解释了 Redis 的定义、特点和优势,以及如何开始使用 Redis,包括编译和安装步骤。进一步介绍了 Redis 中支持的数据类型,如字符串、散列、列表、集合和有序集合,以及与键相关的命令。最后,作者强调了在学习技术时注重整体理解,留下细节问题在实际使用时查阅文档的重要性,并展望了对 Redis 的事务、脚本、发布/订阅和多语言使用的关注。
编程语言
使用 C#开发 HTTP 服务器之支持 HTTPS
本文介绍了作者在开发 HTTP 服务器系列中的第六篇文章,讨论了如何为Web服务器增加HTTPS支持。HTTPS是基于安全的HTTP协议,通过SSL加密和身份验证提供数据传输安全。讨论了苹果和Google推广HTTPS的原因,以及HTTPS协议的工作原理和区别。文章重点在于如何使用.NET中的SSL API创建和加载证书,并通过SSL对Socket通信消息进行加密。作者提到需要从CA机构购买证书,并给出了相关代码示例。文章列出了一些参考文章和配置HTTPS服务的指南。
生活感悟
愿浮萍乘风破浪
读书笔记
函数式编程常用术语
函数式编程作为一种编程范式在近年来逐渐流行,通过将计算机运算视为数学函数来避免状态和变量的概念。Lambda演算是函数式编程中的基础,函数式程序以表达式为主体,强调无状态和不可变性。常见术语包括高阶函数、柯里化、惰性求值等,这些术语在C#中得到了解释和应用。函数式编程的优点在于改善程序模块化程度,但缺点在于无法处理现实世界中的状态变化等问题。函数式编程应当视为一种编程思想的选择,而不是取代面向对象编程。函数式编程可能会作为面向对象编程的延伸和补充存在。
编程语言
基于 Mono 和 VSCode 打造轻量级跨平台 IDE
最近微软推出了 Visual Studio For Mac,展示了微软技术栈向开源和跨平台发展的努力。文章介绍了在Linux下使用Mono和VSCode构建轻量级IDE的过程,展示了在VSCode中编译和调试代码的步骤。由于Mono-Debug插件不支持Windows平台,作者转向Linux平台,并成功在VSCode中运行C#程序。文章强调了在不同平台的探索中不设限,展望了未来研究VSCode调试技巧和.NETCore相关内容的计划。
编程语言
在 Kindle 上阅读 Markdown 文档
在信息爆炸的时代,个人知识管理显得尤为重要。本文以作者个人知识管理的实践为例,分享了如何使用 Kindle、Markdown 和笔记应用等工具进行知识管理,以提高阅读和写作效率。作者首先强调了在碎片化信息中筛选和集中精力的重要性,随后介绍了 Markdown 作为一种高效写作工具的优势,并通过示例解释了 Markdown 的基本语法。接着,作者分享了从有道云笔记过渡到为知笔记的经历,并探讨了如何将 Markdown 文档转换为 Kindle 可读格式的方法。文章最后指出,个人知识管理的形式并不重要,关键在于建立意识并有效梳理知识体系。
读书笔记
生命的朝圣者
《一个人的朝圣》讲述了哈罗德·弗莱这个平凡而沉默寡言的退休老人,在收到老友奎妮患癌症的消息后,决定徒步穿越英格兰去见她,希望通过这个行动给予她生存的力量。这场旅程不仅是对奎妮的朝圣,更是哈罗德自我救赎的过程。在旅途中,他遇到了很多人,学会了分享和倾听,开始接受自己的不完美,找回内心的善良和温情。哈罗德的妻子莫琳也在这个过程中学会了理解和接纳,最终两人和解。哈罗德的朝圣之旅成为了一个关于自我发现、爱情和生命意义的旅程,激励着读者勇敢面对生活,追求内心的真实。
上页
1
...
12
13
14
15
16
...
19
下页