- 博客(24)
- 收藏
- 关注
原创 Spring 核心知识点(IOC + AOP + 事务)
Spring 中 Bean 从创建到销毁遵循固定执行流程,AOP 代理对象也在此流程中生成。
2026-06-07 11:23:50
315
原创 MyBatis SqlSession 与缓存机制详解
一级缓存是SqlSession 级别的缓存,属于默认开启、无法关闭的本地缓存。二级缓存是Mapper(Namespace)级别的缓存,跨 SqlSession 共享,多个线程/会话可以访问同一份缓存数据。SqlSession:由 Spring 托管,与线程、事务绑定,保证同一事务内会话唯一,非事务环境会导致会话频繁创建销毁、一级缓存失效。一级缓存:SqlSession 级别,默认开启,会话内共享,会话关闭即清空。二级缓存。
2026-05-31 23:55:15
483
原创 Java 内存模型(JMM)深度解析
在一个线程内,书写在前面的操作先行发生于书写在后面的操作。虽然 CPU 会为了性能进行指令重排,但 JMM 承诺"单线程执行结果的正确性"(即 as-if-serial 语义)。
2026-05-29 00:15:28
325
原创 生产者消费者模式中判断条件使用while的原因
虚假唤醒不是代码写错导致的,而是操作系统和 JVM 底层实现的 “正常小漏洞”—— 为了效率或简化设计,它们偶尔会 “多唤醒几个线程”,或者 “误唤醒线程”,本质是 “底层为了方便,牺牲了一点‘精确性’”。代码分析:但生产者消费者模式就是只有一个生产者和一个消费者。多个生产者多个消费者模式下,即使不出现虚假唤醒依然会有问题,因为唤醒的线程并不确定,即使全部唤醒,依然会有多个现成竞争的情况,而竞争的结果并不确定。由于存在虚假唤醒的问题,如果使用 if 在消费者没有消费完成的情况下即唤醒生产者就会出问题。
2025-11-01 17:09:42
296
原创 Jmeter Address already in use 使用分压机解决方法
但这种方案不能完全解决问题,因为有些压测需求是需要长连接的,例如并发数设置的很高的情况下,即使设置长连接也会有这个问题,因此最根本的解决方法是设置分压机。Jmeter Address already in use 是由于单台压测机端口资源耗尽导致的。注意启动方式和单机有所区别。
2025-10-27 14:37:10
458
原创 使用Redis实现秒杀的改进
当有流量进来直接去set中获取劵号,获取到的劵和用户绑定在一起。如果没有获取到劵号则直接返回,不再向下执行,避免了无效的资源浪费。使用set结构,提前生成劵码并放入redis中,落表,此时虽然落表但并不绑定用户信息,只要确保劵号唯一既可。最近看了公司设计了秒杀抢劵系统,相比于传统的加锁方式效率更高。直接查询redis的set中元素的数量,提高查询效率。
2025-10-21 21:39:33
322
原创 微信小程序短连接跳转
业务核心需求为通过短信触达用户以开展营销活动,且活动需支持配置化 —— 即通过传递不同参数,引导用户跳转至对应的专属营销活动页面。基于该需求,功能实现分两步推进:第一步完成营销活动页面的设计开发,第二步进行功能上线与部署。这里我直接改的麦当劳的页面,他的页面是加密 URL Scheme,我采用的是明文 URL Scheme,对它的页面进行了稍微简化。二者的具体差别可以看看微信文档。通过请求链接:https://xxx/a/?这里的nginx是请求转发过来作为反向代理的nginx。
2025-10-20 16:32:03
374
原创 微信小程序OCR识别遇到的坑
不得不说微信文档就是一坨shit,需要不断自己试错,最终我结合两个文档不断尝试调通。最终发现:只需要设置body为formdata,参数key可以随便设置,类型为file既可,这么一看和他提供的文档像是闭着眼写的一。8月份的时候微信提示插件即将停止维护,当时没当回事,后来9月份使用OCR插件的时候直接报错了。查了下文档发现,前端OCR插件仅做展示,要想识别证件,要花钱买接口啦。2. 给了请求地址,但是和入参,并且有例子,但是没给详细的参数。1.给了入参和返回值,但是没给请求地址。
2025-10-17 15:29:06
383
原创 两种方式对boss直聘招聘岗位的爬取
上次留了个坑,采取两种方式对需要爬取的网站进行数据抓取。首先使用selenium+chromedriver进行抓取,这种方式速度慢,但是可以跳过各种反爬设置,并对各种反爬能够直接以网页的形式进行显示。因此我们可以采取这种方式进行测试,找到其中的反爬规则,然后采用通用爬虫进行爬取。今天下午闲着没事对boss直聘进行了测试one:selenium+chromedriver鉴于代码不长,就直接贴代码...
2019-05-14 22:31:04
4812
6
原创 DataFrame数据拼接合并的几种方式
pd.merge()merge 是融合的意思实例:a=pd.DataFrame({'a':[1,2,3],'b':[2,3,4]})b=pd.DataFrame({'a':[11,22,33],'c':[22,33,44]})c=pd.merge(a,b) cEmpty DataFrameColumns: [a, b, c]Index: []通过验证发现,a和b的同名列表...
2019-03-31 16:39:32
54619
5
原创 机器学习中的几种数据变换形式
最近在学习到特征工程时编码方式这一块让我迷惑,到底有几种编码方式,在什么情况下适用?参考了几位大佬的博客,加上自己的理解,总结一下,以备以后查看。one-hot编码:one-hot编码,又称独热编码、一位有效编码。其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。机器学习库在机器学习中常用于文本分类。缺点是只能对数据类型的字段分...
2019-03-31 14:05:50
2656
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅