- 博客(222)
- 收藏
- 关注
原创 【Slf4j】项目中使用 slf4j 的好处
背景项目依赖了三方包,三方包有日志打印的代码。需要将三方包的日志打出来。问题是怎么做到项目的日志格式和依赖中的日志格式保持一致的?结论查阅资料后,发现是slf4j帮忙做了桥接。这里做下记录。
2024-08-04 18:30:04 281
原创 【Log4j2】log4j-users-guide 官方文档阅读笔记
原文Apache Log4j 官方文档 pdf需求将指定包目录的日志打到指定文件中将ERROR日志单独打到指定文件中目标理解 log4j2 的架构,理解并编写配置文件,完成需求。
2024-08-02 18:52:02 779
原创 【Java】pcm 与 wav 格式互转工具类 (附测试用例)
语音引擎只认 pcm 格式数据。前端只认 wav 格式 。需要后端对 pcm 和 wav 格式实现互转,特此编写工具类,并提供测试用例。
2024-06-23 18:21:50 445
原创 【Java】字节数组 pcm 与 wav 格式互转 (附原理概述)
最近实现了一个文字转语音的功能,语音引擎返回的是pcm格式的数据。需要转化成wav格式前端才能播放。本文首先会给出解决方案,后续会讲背后的原理。场景wav格式实际上就是在pcm数据上加了头部,让浏览器能够解析pcm数据,进而能播放音频。可以类比 TCP协议的报文头,报文头携带了数据长度、偏移量等元信息。
2024-06-22 14:08:45 929
原创 【Python】Python 2 测试网络连通性脚本
最近在只有python2的服务器上部署服务,不能用三方类库,这里出于好奇心学习下python。这里简单做个脚本,实现了检验网络连通性的功能(类似于curl)。
2024-06-12 23:57:45 650
原创 【Spring】验证 @ServerEndpoint 的类成员变量线程安全
最近有 websocket 的需求。探索的类成员变量特点。这里类比讨论类成员变量是否线程安全。
2024-05-13 00:31:54 988
原创 【Spring】@ServerEndpoint 与 Spring 是如何集成的
最近工作需要用到 Websocket 协议。好奇来自 Jdk 包的是如何与集成的,特此记录一下结论。
2024-05-12 23:44:13 644
原创 【Spring】通过Spring收集自定义注解标识的方法
需求:用key找到对应的方法实现。使用注解的形式增量开发。任意时刻都能通过key来进行依赖查找@TestAssert.notNull(myBeanFactory.getMethod("key1"), "key1对应的方法不能为空");声明自己的类注解,并要求被 Spring 收集声明自己的方法注解,确保可以通过反射获取借 Spring 的能力,容器启动收集bean完成后,把bean列表交给自己,用于自己的收集策略。
2024-03-31 20:13:31 678 1
原创 【前端】夯实基础 css/html/js 50个练手项目(持续更新)
发现一个没有用前端框架的练手项目,很适合我这种纯后端开发夯实基础,内含50个mini project,学习一下,做做笔记。项目地址:https://github.com/bradtraversy/50projects50days。
2024-02-21 18:02:20 10743 3
原创 【Apollo】阿波罗使用占位符 #{} 的异常分析
出于线上 hotfix 报文请求模板的考虑,新增一个阿波罗配置,取值形如:重启后服务宕机,影响较大。现本地复现一下这个异常,并加以分析。
2024-01-07 18:01:12 1187
原创 【Java】Java8 Function 和 Consumer 接口的使用场景
在 《精通Java8》一书中有讲过 Java8的函数式接口可以简化设计模式的实施,这里记录一下Function 和 Consumer 的使用场景。JDK介绍,第一个泛型表示输入类型,第二个类型表示输出类型。输入是原价输出是经过价格策略处理的现价JDK介绍,apply方法接受输入,产生输出。方法实现就是价格策略构造方法把策略传入,同样的策略可以多次使用所有代码/*** 价格处理策略*/JDK介绍,一种避免副作用的函数式接口。
2023-11-12 13:22:39 629
原创 【源码】hamcrest 源码阅读 定制 Matcher
官方文档官方示例:(打开后搜索 Writing custom matchers)需求按官方的规范拓展自己的 Matcher将自己的 Matcher 加入到现有的谓词用法里 (allOf 、anyOf 等)
2023-10-07 15:22:15 169
原创 【源码】hamcrest 源码阅读 泛型 extends 和迭代器模式
官方文档上篇文章Hamcrest 源码阅读及空对象模式、模板方法模式的应用本篇文章迭代器模式hamcrest 作为一个matcher库,把某个matcher的职责打印出来,可以方便开发者进行调试。
2023-10-07 11:30:23 304
原创 【源码】hamcrest 源码阅读 空对象模式、模板方法模式的应用
hamcrest ,一个被多个测试框架依赖的包。听说 hamcrest 的源码质量很高,特此来学习一下。建议fork原仓库,拉到本地看代码。代码仓库hamcrest github 仓库。
2023-10-02 13:58:46 1224
原创 【Log】为类中的所有日志打印添加前缀
有没有一种办法,在一个类中(业务逻辑)。的时候自动加上日志前缀,这样子查日志更方便。stackoverflow 上面有对该问题的讨论,实测可用,这里记录一下。来自stackoverflow 简洁可用的方式。
2023-09-24 11:49:00 779
原创 【笔记】Spring Boot 历史官方文档学习(持续更新)
Spring Boot 2014正式发布1.0版本,距今已经快10年了。看历史官方文档了解重点feature, 帮助自己建立知识网络。与Spring 5 官网历史文档学习一样,尽量保证不误解文档作者的原意,不好翻译的会有原文摘录(包括一些专有名词),并辅以自己的理解。限于篇幅原因,只摘录工作中遇到过的或者是有兴趣的。
2023-09-05 21:51:00 593
原创 【网络安全】理解报文加密、数字签名能解决的实际问题
工作中重新接触了 【公钥、私钥、签名】的概念。抽空重新看了《计算机网络》和国外的小黑书,把这块基础知识再收敛一下。防止报文泄露防止报文被篡改实体鉴别端点鉴别防止重放攻击既然大报文消耗性能,能不能把报文弄小?思路其实就是摘要算法,常见的md5、sha-1就是摘要算法(也叫散列算法)。程序中的应用// 把签名拼接到密文后面,接收者再解析出签名,验签即可 密文 . 签名。
2023-08-26 14:27:03 2382
原创 【Mockito】@Mock 和 @MockBean 的区别与 @MockBean 的使用时机
由于历史原因,@Mock 和 @MockBean 都会出现在项目代码里,这里记录下具体的区别。并突出 @MockBean 在 Spring Boot 中的使用时机stackoverflow原文。
2023-07-03 22:38:45 2093
原创 【笔记】Spring 历史官方文档理解(持续更新)
原文:A point during the execution of a program, such as the execution of a method or the handling of an exception. In Spring AOP, a join point always represents a method execution.Core 的内容主要包括 IOC 和 AOP,Spring 有自己的 AOP 框架,能够解决 80% 的企业级应用的需求。编译时期、类装载时、运行时;
2023-06-24 17:33:48 780
原创 【Spring MVC】获取 @RequsetBody 标识的对象,使用适配器模式增加代码可读性
思考用 AOP 把校验代码实践用 Spring MVC 的 RequestBodyAdvice 做AOP逻辑继承 RequestBodyAdviceAdapter 实现自己的 适配器用自己的适配器让代码可读性增加熟悉 Spring MVC 、Java 反射的一些实践本文内容澄清一个AOP校验JSON内容的思路复习适配器模式。
2023-06-19 23:06:03 1954
原创 【工具】AlibabaPuHuiTi 阿里巴巴 普惠体 字体windows安装
阿里巴巴普惠体是商用免费的字体,项目上用到导出的功能,可以平替 “微软雅黑”。导出到pdf后,客户电脑虽然不需要安装这个字体,但是本地调试的时候可以安装一下。字体下载。
2023-04-22 18:33:57 6087
原创 【PostgreSQL】官网学习使用 PL/pgSQL编写造数据脚本
前段时间需要大量造数据,写Java程序做造数据的活感觉太笨重了,遂下班后学习了 PL/pgSQL 写脚本。公司用的是11.5的版本。按照官网的Manual,把下面的问题搞清楚,就能实现大部分的需求了,有其他经验的时候再来补充。如何声明、修改、删除一个函数如何在函数中声明与使用局部变量如何创建与使用类似 Java map 的数据结构如何使用循环等其他控制语句如何打印调试信息 (可以用来生成回滚语句)
2023-04-15 18:59:59 1283
原创 【Spring MVC】try-with-resource 处理 response 造成 @ControllerAdvice 失效的结果分析
项目使用来做异常的兜底处理。但是实现一个下载需求的时候,即使服务端报错抛异常,也无法提供前端良好的响应,需要等文件下下来后,客户才发现是损坏的。当前情况 (服务端报错依旧让前端接收文件)期望情况。
2023-03-23 20:40:53 510
原创 【MySQL】explain 中列的取值及含义
今天看 《MySQL 是怎样允许的》和 《高性能MySQL》索引相关的部分,觉得有必要整理下 explain 中列的取值及含义。以后工作的时候翻阅查找更快。
2023-03-19 19:32:42 413
原创 【PostgreSQL】使用开窗函数获取历史表最新记录 及 MySQL 旧版本实现
项目用了 PostgreSQL 作为数据库。用上了一直感兴趣的开窗函数,这里记录以下。考虑到使用MySQL的项目也可能有这种需求,思考 MySQL 8.0 以前的实现方式(8.0开始就有开窗函数了,不用自己造轮子)。探索的过程中,把 User-Defined Variables 也学起来了,结合官网资料做一下笔记。
2023-03-19 19:20:56 1914
原创 【算法】笔记:LeetCode 206. 反转链表
这道题可以拆成几个小点去理解,本篇博文快速记录一下。有迭代和递归两种解法。迭代的解法空间复杂度更优秀,递归的思想更巧妙。这里主要总结下迭代的解法。并简要理解下递归的解法。LeetCode 206. 反转链表。
2023-03-04 14:46:02 664
原创 【MySQL】什么是意向锁 IS IX 及值得学习的思想
之前看 MySQL 都刻意忽略掉了 IS 和 IX 锁,今天看 《MySQL 是怎样运行的》,把意向锁讲的很通透,本篇博文提炼一下思想。I:Intention Lock(意向锁)S:SharedX: Exclusive。
2023-02-26 17:21:11 1131
原创 【工具】MySQl 使用 concat 函数或 Excel 自定义回滚语句
写更新语句的时候,希望能保留回滚的能力,可以尝试使用 concat 语句。先拷贝出回滚语句,再执行脚本。
2023-02-21 22:42:56 218
原创 【Java】《Java8 实战》 CompletableFuture 学习
看 《Java8 实战》后,觉得自己对多线程应用还是停留在 JUC 工具类的使用上,忽略了 CompletableFuture 这么强大的工具。本文主要内容复习并行、并发的概念。多线程的编程模型CompletableFuture 让多线程编程更加清爽有时间的话,补充 CompletableFuture 的内部原理这个类是 Java 8 引入的,用于解决FutrueFutrue 任务之间的依赖关系很难表达等待Futrue集合中的所有任务都完成应对Future的完成事件。
2023-02-19 19:59:51 1070
原创 【Java】使用 Optional 让代码变得更清爽
今天看 《Java8 实战》 发现了 Optional 可以用来改善工作中的代码质量。本文用于巩固 Optional 的 api 积累及理解,并尝试多多应用于生产中。// 模拟VO Insurance insurance = new Insurance();// 模拟字段的数据源,通常是为了节省数据库IO, 由全量数据转化成的 key-value HashMap < String , String > properties = new HashMap < >();
2023-02-15 23:35:27 289
原创 【算法】笔记:LeetCode 3. 无重复字符的最长子串
今天写了一道题LeetCode 3. 无重复字符的最长子串,思路还是不难的。初始版本自己写的,看了别人的答案觉得自己写的太丑了。于是乎,借鉴《重构》的思想(LeetCode 提供测试用例和运行,保障重构安全,真是太好了),把自己的版本重构下,记录下过程。
2023-02-11 20:38:05 120
原创 【数据结构】布隆过滤器 BoomFilter 的应用场景
对比数据结构的区别,从其空间、时间复杂度下手观察。BoomFilter 特殊的地方在于它在元素存储上做了努力。本文归纳下 BoomFilter 与 HashTable 的区别,进而引出 BoomFilter 善于支持的应用场景。
2023-02-05 12:35:12 791
原创 【消息队列】RocketMQ 官网学习及理解胶水代码
前段时间看到项目在用 @Cacheable 注解,来自于 Spring intergation。Spring intergratoin 的项目灵感来自于 《企业集成模式——设计、构建及部署消息传递解决方案》。这本书提到的胶水代码、消息总线的系统集成方案都在RocketMQ 官网有描述 ,感觉写的挺好的。本文提供一个含有胶水代码的示例,理解下消除胶水代码的成本,及 EvenBridge 模式 的优点。代码仓库。
2023-01-17 23:25:06 728
原创 【MyBatis】RC隔离级别下,MyBatis 一级缓存、二级缓存造成的不一致情况
数据库的MVCC 及 锁机制保证了数据的隔离、一致性。而建立在数据库之上的缓存,都会破坏掉数据库的一致性保障。本文探索在RC隔离级别下,MyBatis 一级缓存、二级缓存造成的坑。顺便复习一下 Spock 的用法,更加体验到了 Groovy 清爽的语法。本文内容的代码仓(分支L1Cache 、L2Cache )MyBatis 官网缓存部分体验一下 Spock 的一个测试用例 (本文与Spring Boot 进行集成)def "RR环境下, 缓存不影响结果"() {
2023-01-11 21:11:01 1066
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人