.NET Core + ELK 搭建可视化日志分析平台(下)
.NET Core + ELK 搭建可视化日志分析平台(下) 本文介绍了从 Logstash 到 Filebeat 到 Fluentd 的日志收集工具演进过程,重点讨论了各工具的特点、优缺点以及配置方法。详细说明了 Filebeat 的轻量级特性及配置方式,以及 Fluentd 和 Fluent-Bit 之间的对比和使用方法。同时介绍了 Tail 模式和 Forward 模式下的日志收集策略,以及配置文件示例和实际操作步骤。文章通过讲述作者的个人思考和体验,总结了日志收集工具的选择和使用建议。
聊一聊前端图片懒加载背后的故事
聊一聊前端图片懒加载背后的故事 博主通过采取一系列优化措施,成功将博客的首屏渲染时间从2.0 秒缩短到了 1.7秒。这些措施包括使用 CDN 加速、压缩图片、生成缩略图和采用懒加载技术。文章主要介绍了前端图片懒加载技术,解释了其概念、目的和实现方式。懒加载是一种通过延迟加载来优化网页性能的方法,尤其适用于图片较多的网页。文中介绍了三种实现懒加载的策略:监听滚动事件、使用 IntersectionObserver API 和利用浏览器原生的 `loading='lazy'` 属性。通过比较这三种方法的优缺点,作者推荐结合使用前两种方法以更精确地控制懒加载的细节。文章最后强调了懒加载在前端性能优化中的重要性,并提供了示例代码供读者参考。
杂感·七月寄望
杂感·七月寄望 本文通过多个主题探讨了生活中的矛盾和情感。首先以桃花潭无桃花比喻人们对事物不切实际的期待,并通过汪伦与李白的故事强调真诚的价值。接着,作者表达了对刺杀事件的震惊,并通过《金色梦乡》一书探讨了牺牲少数人的问题,以及在危机时刻的个人自救。文章还讨论了人类情感的建立,以及作者对亲密关系的思考,通过播客和网络互动反思创作自由和性别角色。最后,文章指出人们在不同角色和年龄阶段面临的双重标准,以及对平衡的追求,强调世界的质感和动态平衡的重要性。
支持外部链接跳转的 Vue Router 扩展实现
支持外部链接跳转的 Vue Router 扩展实现 Vue Router 是 Vue 中重要的插件,特别在单页面应用中起着关键作用。随着页面概念逐渐消失,路由根据URL确定显示内容。文章介绍了处理内部和外部链接的问题,提出了在 Vue Router 基础上实现外部链接跳转的扩展思路。通过自定义组件 MyRouterLink,区分内部和外部链接并支持传递URL参数,解决了 Vue Router 不支持外部链接的问题。讨论了如何给出站链接携带令牌信息,通过指令或组件内部处理统一附加参数。最终强调了在项目中统一使用规范化组件的重要性。
视频是不能 P 的系列:OpenCV 和 Dlib 实现表情包
视频是不能 P 的系列:OpenCV 和 Dlib 实现表情包 2020 年底,博主开启了一个关于视频不能 P 的系列,探讨了视频/图像处理思路,涉及 OpenCV、Dlib 和表情包等。Dlib 通过 68 个特征点定位人脸五官,实现人脸检测和识别,提供更多探索可能。文章介绍了使用 Dlib的人脸特征点绘制和抠取,生成表情包的过程,包括创建掩膜、裁切图片、阈值处理等。最终,将人脸与熊猫人合成为表情包。文章总结了 Dlib 的应用,探讨了处理图像的有趣过程,展示了程序员的浪漫之处。
不得不说的 ASP.NET Core 集成测试
不得不说的 ASP.NET Core 集成测试 这篇文章讨论了ASP.NET Core集成测试的重要性,从单元测试和Mock的角度出发,探讨了在现实软件世界中“万物皆可模拟”的理想与挑战。介绍了使用Moq进行模拟测试的方法,并引出了集成测试的必要性和TestServer的作用。详细讨论了如何使用TestServer进行API、中间件、HttpContext和gRPC的测试,并介绍了通过WebApplicationFactory实现更优雅集成测试的方法,结合xUnit的IClassFixture解决测试类中共享数据的初始化和销毁问题。最后分享了作者对写作计划和技术实践的心得体会。
再议 DDD 视角下的 EFCore 与 领域事件
再议 DDD 视角下的 EFCore 与 领域事件 在这篇文章中,作者分享了在工作中使用事件/消息驱动业务的经历和思考。作者回顾了过去在实现数据库审计、数据同步等问题时的经历,并逐步接触了领域驱动设计(DDD)中的领域事件概念。文章重点讨论了如何通过在实体类中添加领域事件属性,并在DbContext的SaveChanges方法中分发事件来实现延迟执行消息发布的方案。作者还探讨了使用EntityFramework的SaveChanges Events特性和拦截器来处理领域事件的方法。最后,作者分享了对软件开发和业务模式的反思,以及对DDD在当前业务中的适用性的疑问。文章涵盖了事件驱动业务模式、DDD理念、数据库审计、消息队列等内容,展现了作者在技术实践和思考中的成长与思考。
Vue.js 前端项目容器化部署实践极简教程
Vue.js 前端项目容器化部署实践极简教程 本文介绍了在「微雨燕双飞」的一天中,作者接到朋友询问前端容器化部署问题的电话。作者分享了使用 Docker 容器化部署前端项目的实践教程,以 Vue.js 为例。通过编写 Dockerfile 实现多阶段构建,包括使用 node.js 构建前端项目和部署到 Nginx 静态文件服务器等步骤。另外,还提及了 Nginx 的配置以及使用 OpenSSL 创建证书的过程。最后,作者鼓励读者根据教程进一步完善部署,并展望了未来将撰写关于 ASP.NET Core 测试的文章。
再见,人间四月天
再见,人间四月天 在这个文本中,作者描述了从外面回家的经历,感受到夜晚的氛围和市井生活的变化。他提到因疫情未能回家过五一假期,对家庭和放假的看法,以及与人的相遇带来的微妙体验。作者思考着对小孩、生活状态和回忆的态度,以及随着年龄增长对过往的理解。最后,他分享了对时尚、生活哲学和未来的思考。整体内容涵盖了家庭、生活体验、人际关系和个人成长等方面的感悟。
Python 图像风格化迁移助力画家梦想
Python 图像风格化迁移助力画家梦想 这篇文章探讨了风格化迁移的概念,并以图像风格化迁移为例进行讨论。文章提及了人人都是食神、产品经理、艺术家的观点,引出了图像风格化迁移的背景和意义。详细介绍了风格化迁移的定义、实现原理以及算法支撑,包括神经网络在图像风格化迁移中的应用。最后,作者分享了自定义模型训练的尝试和结果,并通过图像展示了传统水墨画风格迁移的效果。文章结尾以对艺术与技术的思考和对创作的热情做出总结。
在 Vue.js 中使用 Mock.js 实现接口模拟
在 Vue.js 中使用 Mock.js 实现接口模拟 最近参与前端项目的作者反思了程序员少有机会写自己喜欢的代码,更多时候是为别人写代码。在谈到 Vue.js 结合 Mock.js 实现接口模拟这一话题时,指出它触及前后端分离的核心,并引出协同开发中的问题。讨论了前后端团队接口文档制定和假数据管理的挑战,以及 Mock.js 在解决这些问题上的作用。提到 Swagger 作为接口文档管理工具,推荐使用 Mock.js 来模拟前端调用后端接口,强调了在 Vue 中如何使用 Mock.js 实现接口模拟,以及如何通过 YAPI 或 Apifox 等工具管理 API 接口和 Mock。最后,勉励读者在项目中努力前行,引用古语“山不厌高,海不厌深”表达对追求更完美世界的理想。
利用 ASP.NET Core 中的标头传播实现分布式链路追踪
利用 ASP.NET Core 中的标头传播实现分布式链路追踪 作者介绍了一种新的 ASP.NET Core 集成方案,通过安装 `Microsoft.AspNetCore.HeaderPropagation` 包,使用 `HeaderPropagation` 中间件,避免了以往在不同微服务或子系统中显式传递 HTTP 请求头的问题。在 `Startup` 配置中添加请求头,通过 `AddHttpClient` 配置 `HttpClient` ,并在请求管道中加入 `UseHeaderPropagation` 中间件,以自动传播请求头。这种方案不仅适用于分布式链路追踪,如 Envoy 和 Jaegers,还适用于认证等其他场景,提高了代码的整洁与可维护性。
读《一个叫欧维的男人决定去死》
读《一个叫欧维的男人决定去死》 《一个叫欧维的男人决定去死》是一部讲述孤独老人欧维与其人生转变的瑞典电影。欧维在妻子去世后,世界变得灰暗,多次尝试自杀却因新邻居的出现而逐渐放弃这一念头。新邻居的不断“麻烦”使他重新找到被需要的感觉,认识到生活的意义在于人际间的联系和认同。影片表现了欧维一生的坎坷与幸福,如与妻子索雅的爱情故事,以及面对失去与挑战时的态度。最终,欧维在邻居们的关爱中找到了生活的色彩,学会了与世界和解,从一位固执的老人转变成社区的“老父亲”和“外公”,电影深刻探讨了人与人之间的情感联系和生活的价值。
利用 gRPC 实现文件的上传与下载
利用 gRPC 实现文件的上传与下载 某人遇到问题,模型绑定出错导致无法实现导出/下载功能,选择传统Web API解决。文章介绍利用gRPC实现文件上传和下载,定义了Protobuf,展示了上传和下载的实现,指出基于gRPC的上传下载无法直接在浏览器环境下使用,提及Envoy和gRPC-Web的方向。最后提到用传统Web API包装作为替代方案。文章探讨技术实现背后的无解和接受命运的态度,展示了对技术和人生的思考。
七种武器:延迟队列的原理和实现总结
七种武器:延迟队列的原理和实现总结 本文探讨了延迟队列的概念和实现方式,从DelayQueue介绍到具体的实现方式包括Java的DelayQueue、.NET中的PriorityQueue、基于Redis的Key过期机制和ZSet结构、使用Quartz实现延时任务、以及基于RabbitMQ实现延迟队列等。文章指出延迟队列适用于需要延迟执行的场合,提到延时满足是一种高级快乐,有助于培养和付出。各种实现方式都展示了不同的延迟队列应用场景和技术实现,为读者深入了解延迟队列提供了丰富的参考和思路。