摘要: 许是年纪大了,老是回忆起以前的点点滴滴。翻看当初的代码,如同偶遇多年未见的前女友,曾经一起深入交流的情谊在颔首之间消散,令人烦躁。 今天就来聊聊老生常谈的 Java Web 开发。缘于一个简单的Spring Boot项目改造,笔者看着一坨注解和配置,苦于拾掇记忆的痛苦,择其一二记录,纪念逝去的青春。 阅读全文
posted @ 2024-09-25 10:35 莱布尼茨 阅读(616) 评论(0) 推荐(5) 编辑
摘要: 所谓架构,意即系统架构,广义上它涵盖业务架构、运维架构、组织架构等所有系统构建场景,本文特指一般开发人员主要关注的开发架构。 关于架构的理论有很多,每个人也都有各自的理解,笔者相信很多人在实际运用中也会遇到各种各样的问题和困惑,本文抛开教条,从一个实际项目的演化看何为架构。 项目背景 开始之前,先了 阅读全文
posted @ 2024-08-29 12:38 莱布尼茨 阅读(1404) 评论(3) 推荐(13) 编辑
摘要: 写在前面:本文所述未必符合当前最新情形(包括蓝牙技术发展、微信小程序接口迭代等)。 微信小程序为蓝牙操作提供了很多接口,但在实际开发过程中,会发现隐藏了不少坑。目前主流蓝牙应用都是基于低功耗蓝牙(BLE)的,本文介绍相关的几个基础接口,并对其进行封装,便于业务层调用。 蓝牙发展 在开发蓝牙应用程序之 阅读全文
posted @ 2024-08-28 10:48 莱布尼茨 阅读(467) 评论(0) 推荐(2) 编辑
摘要: 存储区​ Android 一开始就将存储区分为内部存储和外部存储,对应手机自带的存储和可插拔的 sd 卡(可类比于 PC 的硬盘和 U盘)。 内部存储容量有限,Google 建议 App 数据尽量存储于外部存储中。 随着硬件技术发展,自带大容量空间的手机开始出现,关于内部存储的描述逐渐偏离现实了,于 阅读全文
posted @ 2024-08-22 10:26 莱布尼茨 阅读(319) 评论(0) 推荐(0) 编辑
摘要: 编程编的久了,总会遇到多线程的情况,有些时候我们要几个线程合作完成某些功能,这时候可以定义一个全局对象,各个线程根据这个对象的状态来协同工作,这就是基本的线程同步。 支持多线程编程的语言一般都内置了一些类型和方法用于创建上述所说的全局对象也就是锁对象,它们的作用类似,使用场景有所不同。.Net中这玩 阅读全文
posted @ 2024-08-18 10:41 莱布尼茨 阅读(1188) 评论(9) 推荐(14) 编辑
摘要: 对于囊中羞涩的我们来说,只要能白嫖,就绝不乱花钱。惯常申请免费 SSL/TLS 证书的途径有: 各大云服务平台限量提供。比如阿里云会给每个账号每年 20 个证书的申请额度。缺点是不支持泛域名,且一年(目前已缩短至三个月)后须重新申请并部署; 一些网络服务商如Cloudflare会提供自动化的证书服务 阅读全文
posted @ 2024-05-28 14:07 莱布尼茨 阅读(1535) 评论(2) 推荐(9) 编辑
摘要: ## 打包工具选型 在 ASP.NET MVC 时代,我们常使用 `BundleCollection` 设置需要打包压缩的 js 和 css 文件,运行时框架会自动处理打包压缩过程并将最终结果传入响应。 ASP.NET Core 开始,不再提供内置的打包压缩组件,官方推荐 [WebOptimizer 阅读全文
posted @ 2023-06-15 10:16 莱布尼茨 阅读(971) 评论(2) 推荐(5) 编辑
摘要: 在项目开发和部署过程中,我们常常需要一套私有仓库,比如 Code Repository、Package Repository,Docker Registry 等。 Code Repository:在 github 或 gitlab 或 gitee 等平台上创建私有项目;或搭建本地代码服务器,一般常用 阅读全文
posted @ 2023-06-02 10:41 莱布尼茨 阅读(401) 评论(0) 推荐(1) 编辑
摘要: 笔者个人理解:gitlab-runner 安装后就是一个监听状态的 runner,而通过 gitlab-runner register 注册的“实例”其实只是预定义的配置节,当消息抵达后,gitlab-runner 根据消息内容选择相应的配置节启动执行线程。为了方便阐述和理解,本文也将每个配置节/执 阅读全文
posted @ 2023-05-17 14:20 莱布尼茨 阅读(2778) 评论(0) 推荐(4) 编辑
摘要: 本文所述操作适用于兼容 S3 协议的所有存储框架,包括 AWS S3、Aliyun OSS、MinIO、Ceph 等。 不知为何,截止目前,S3 协议并不包含对象重命名的接口。如果有重命名对象的需求,一般能想到的就是重新上传改名之后的对象,然后从存储桶中将原名对象删除。很明显,这种方式好比大炮打蚊子 阅读全文
posted @ 2023-04-24 13:20 莱布尼茨 阅读(714) 评论(2) 推荐(1) 编辑