关于 Git 大文件上传这件小事
关于 Git 大文件上传这件小事 在这篇文章中,作者分享了在使用Git时遇到的大文件上传问题以及如何应对。作者提到了Git LFS扩展的使用方法,包括安装、追踪文件和提交大文件的步骤。此外,文章还介绍了在提交大文件后如何处理历史记录中的大文件以及通过git filter-branch命令重写提交历史的方法。最后,作者总结了文章的主要内容,强调了对Git LFS和大文件处理的重要性,以及在解决问题过程中可能遇到的挑战。
使用多线程为你的 Python 爬虫提速的 N 种姿势,你会几种? 博主通过优化一个多年前编写的爬虫程序,深入探讨了 Python 中的多线程编程及其在爬虫领域的应用。文章首先介绍了线程和进程的基本概念,并通过代码示例展示了如何使用 `Thread`、`ThreadPool`、`ThreadPoolExecutor`、`Process`、`ProcessPool` 和 `ProcessPoolExecutor` 实现多线程和多进程下载。接着,文章讨论了由于 Python 的 GIL 特性,多线程在 Python 中主要适用于I/O密集型任务,而多进程则适用于CPU密集型任务。此外,博主还介绍了如何利用 `asyncio` 和 `requests` 实现异步I/O,以进一步提升爬虫程序的效率。文章最后通过对比不同方法的执行时间,展示了各自性能,并提供了一个福利,开源了示例爬虫程序给读者参考。
温故而知新,由 ADO.NET 与 Dapper 所联想到的 这篇文章讨论了在维护一个"遗产项目"时遇到的困难,其中数据持久化层完全由 ADO.NET 手工构建,导致大量使用 DataTable 进行数据操作,与习惯使用 Entity Framework 的开发者产生不适。作者提到了 ADO.NET 的核心组件,介绍了 DbConnection、DbCommand、DbDataReader、DbDataAdapter、DataTable 和 DataSet 的作用。讨论了使用 ADO.NET 访问数据库的常用方法和设计理念。然后作者提到了希望改进这种情况,类似于 Dapper 的实现,引入了一个简化版的 DynamicRow 类来实现类似 DapperRow 的效果。最后,作者介绍了如何通过扩展方法实现类似 Dapper 的 Query 和 Execute 方法,以及简化版的参数化查询。整体文章展示了作者对 ADO.NET、Dapper 和 Dynamic 的思考,并提出了自己的改进方案。
.NET Core 中对象池(Object Pool)的使用 在.NET Core中,对象池(Object Pool)是一种软件设计思路,用于提供对象的可复用性能力,通过借和还来重复使用对象,节省频繁创建对象的性能开销。对象池在游戏设计和数据库连接池中有广泛应用。微软提供了.NET Core中的对象池实现,包括ObjectPool、ObjectPoolProvider和IPooledObjectPolicy。通过示例代码展示了如何使用ObjectPool,在高并发场景中有效管理TCP连接,以解决RabbitMQ连接数不足的问题。通过实现IPooledObjectPolicy<T>可以自定义对象池策略。最终介绍了如何实现Channel“池”来管理TCP连接,在使用EventBus时重复使用Channel,提高系统性能。
.NET Core 原生 DI 扩展之属性注入实现 本文介绍了在.NET Core原生DI中实现属性注入的方法。讨论了属性注入的优缺点,提出通过实现自定义的AutowiredServiceProvider和AutowiredServiceProviderFactory来支持属性注入。详细讨论了装饰器模式在这一过程中的应用,以及替换默认ServiceProvider的方法。最后,展示了如何在Controller中实现属性注入,并解决非Controller层使用时的问题。整体方案存在一些问题,如依赖关系模糊和部分解耦困难,但在可控的小范围内使用可以考虑。
.NET Core 原生 DI 扩展之基于名称的注入实现 本文介绍了在.NET Core中基于名称的依赖注入的实现方式。首先讨论了.NET Core原生DI的局限性,推荐了Autofac等第三方IoC容器,然后以一个接口对应多种实现的场景为例,展示了如何使用基于名称的注入来解决注册多个实现时的混淆问题。通过实现INamedServiceProvider和相关Builder类,最终实现了基于名称的依赖注入。这种解决方案避免了多实现冲突的问题,提供了更灵活的服务获取方式。
.NET Core POCOController 在动态 Web API 中的应用 本文介绍了在 .NET Core 中使用 POCOController 的应用,通过 ControllerFeatureProvider 和 IApplicationModelConvention 实现了将普通类识别为 Controller 并修改全局路由规则。讨论了集成 Swagger 和 WebApiClient 来解决 API 文档和调用问题,强调了维护 API 资产和在线文档的重要性。最后提到了更优雅的调用方式和对微服务设计中常见问题的思考。整体内容展示了动态 Controller 的实现思路和相关技术应用。
C# 中的扩展方法学习总结 本文总结了 C# 中的扩展方法的概念和特点。扩展方法是为类提供的一种不改变源代码的方式。通过静态类和静态方法实现,需要使用 this 关键字指明要扩展的类。作者提到了编写和使用扩展方法的示例,并讨论了使用扩展方法的利弊,强调了遵守就近原则以避免代码 “污染” 。文章总结了实现扩展方法的关键要点和注意事项。