- 博客(22)
- 收藏
- 关注
原创 代码整洁之道第1章-整洁代码
这里作者列举了很多名家名言来说明什么是整洁代码, 最后也谦虚的表示他的观点和做法也仅仅是一家之言, 仅供参考, 至于作者定义的整洁代码, 就是本书接下来的一条又一条的规则和建议。
2024-04-22 14:49:33 219
原创 ThreadLocal源码解析(2)
在上一篇中我们分析了Thread以及的关系, 这一篇我们继续分析中的Entry类以及剖析一下的内存泄漏问题。
2024-04-18 23:09:49 733
原创 mysql中show index命令的使用
在阅读阿里云公众号的一篇文章的时候, 发现了一个show index命令, 因为之前没有用到过, 特此记录一下。
2024-04-17 09:36:08 231
原创 seata注解@GlobalTransactional原理探究
今天分析一下seata中怎么通过一个@GlobalTransactional注解实现全局事务的, 其实大家应该也能猜到是基于AOP, 在开发中当需要配合注解的时候我们往往想到的就是AOP。
2024-04-15 17:37:22 232
原创 一文搞懂23种设计模式, 再不会来找我
应用于某些场景的压根就不用管它我们只记三大特性和六大原则就已经掌握了大部分的设计模式要了解任何事物, 方法论很重要, 形式的东西无所谓。
2024-03-01 16:48:51 873
原创 一个java程序员对AI的看法
如果你想借着东风转行, 那么这和上述的第一点也不冲突(那是个了解, 自己动手玩AI的过程). 作为一个java程序员, 我们应该掌握chatGPT以及其他大模型或者后续的其他领域AI的常见API, 并将我们的软件工程类的思想与之结合, 想象一下将AI作为最下层(将计算机作为最下层, 有了机器语言程序员;现在将AI作为最下层, 这就是AI应用程序员). 作为java程序员, 我们最擅长的就是工程化思维, 怎么利用AI做软件, 做工程, 将prompt作为接口, 将AI下沉, 建立起面向AI的应用;
2024-02-27 09:06:52 286
原创 已经启动的docker容器忘了run参数了怎么办
接上一篇, 还是那个小伙伴的问题, 我使用whaler反推出Dockerfile之后, 重新build了, 执行run命令需要哪些参数呢?要不怎么说坑呢?刚开始我用的, 能看到一些映射和端口的信息, 但是屡清楚这些并且还得自己整理命令费劲啊!本着的原则, 我认为肯定有这样的工具来解决这个问题. 噫, 查了之后还真有, 这个工具名字叫做runlikedocker别名的使用如上面将docker run命令, 自定义了一个别名, 这样下次用起来方便, 关于别名的具体用法和注意就不展开了, 小伙伴们自己查一下吧。
2024-02-23 11:45:30 337
原创 docker镜像反向生成Dockerfile
一天, 接到了一个小伙伴的求助, 他接手项目的甲方, 让他帮忙启动一下之前乙方遗留下的系统(那个乙方已经撤了, 现在换成他们了), 但是之前的项目是用docker进行部署的, 他不太懂, 所以来问我;说实话我对docker也是一知半解, 关系挺好, 不好意思推辞, 接了下来.接下来之后, 我就登上服务器看了看, docker正在运行着, 但是项目没启动成功;但是之前的乙方已经走了, 找了很久也没找到Dockerfile之类的. 去网上查, 让执行。, 而且使用起来非常简单, 下面介绍一下怎么使用。
2024-02-23 11:07:05 579
原创 订单状态没了, 老板问我闹哪样
我又去数据库看了下,发现数据库中的类型是tinyint(1), 而这个类型查询后在Mybatis-Plus中转换为了boolean类型,我也不知道是Mybatis弄的还是plus弄的,抑或是JDBC就是这么映射的,这种映射关系能不能修改,这些暂时还没研究(有没有大神能详细的讲一下最后我的处理是把数据库中的字段改为tinyint(2)
2023-12-19 15:07:52 923
原创 这个bug, 差点让我跑路
没想到啊 没想到 没想到啊 没想到这要是我自己写的代码真没有这种问题, 我都是习惯查询出整条数据, 然后设置属性更新;而这位同事偏偏喜欢这样, 也没法说。小伙伴们你们平时更新数据都是哪种方式, 欢迎评论!
2023-12-15 15:13:39 889
原创 异步, 事务回滚了怎么办?
大家经常会遇到这样一种场景, 就是某些不太重要的任务可能放到线程池里异步执行, 这样能提高效率和请求的吞吐量可是, 大家有没有考虑过一个问题, 如果主线程的任务回滚了, 但是异步任务已经提交到线程池了怎么办呢?今天来介绍一个方法。
2023-09-18 09:36:06 160
原创 @EnableAutoConfiguration和@ImportAutoConfiguration的区别
是加载所有的自动配置类, 这其中包含了缓存, JPA等功能的自动配置类为key的自动配置类而加载自定义属性classes中的配置类集合或者某一独立功能的自动配置类集合(如因此的相比较而言, 更加灵活, 并且实现了对自动配置的范围定制。
2023-06-27 17:30:47 350
原创 SpringAMQP之RabbitAdmin类详解
经过前面的讲述, 我们大体明白了的作用和原理, 但是还有一个问题我们需要研究一下:ConnectionFactory回调方法的调用时机?也就是说什么时候会向rabbitmq broker声明队列, 交换器这些组件呢?
2023-03-02 16:30:54 440
原创 mybatis-plus属性填充
实际开发过程中, 数据库表设计经常需要create和update相关的字段, 如,createTime,,updateTime等, 对于create相关的字段只需要创建的时候赋值即可, 而update相关的字段每次更新都需要重新赋值, 如果直接写在代码里会增加很多无用的代码, 这时候可以通过功能实现。
2022-12-09 11:34:47 205
原创 ServiceLoader源码解析
首先我们看一下示例代码的步骤初始化ServiceLoader (private内部构造器)2. 获取迭代器loader.iterator()LazyIterator上面获取迭代器的源码中提到了lookupIterator, lookupIterator是的实例看到这里, 相必大家已经清楚了ServiceLoader.load()方法的过程, 简单总结一下:那么, 最后还有一个问题, 是在哪里初始化的?...
2022-06-29 17:48:31 410
原创 解密seata全局锁(二)
解密seata全局锁(二)上一篇我们主要讲到了全局锁的生成, 也就是全局锁是什么, 长什么样。下面我们接着分析全局锁在seata中的应用client端client端在提交事务之前要做的就是校验全局锁io.seata.rm.datasource.ConnectionProxy#commit@Overridepublic void commit() throws SQLException { ... doCommit(); ... }io.
2021-09-29 14:30:57 1894
原创 解密seata全局锁(一)
解密seata全局锁从哪开始分析呢?StatementProxyExecuteTemplateexecuteAutoCommitFalse总结从哪开始分析呢?seata的基本原理可以参照2PC, 而本地事务方面的实现是通过代理方式实现扩展, 如: 在执行提交前后生成image等StatementProxy熟悉JDBC的同学应该都知道Statement的作用吧, seata实现Statement功能的代理类就是StatementProxy通过观察StatementProxy里面的方法可以
2021-06-06 09:48:00 3837 12
原创 quartz中的Job
quartz任务详解Job接口JobBuilder和JobDetailJobDetail的其他属性Job接口需要执行的调度任务必须实现Job接口, 重写其execute()方法.以上就是对Job接口, 我们在使用上的理解, Job接口的定义也非常简单只有一个execute()方法void execute(JobExecutionContext context) throws JobExecutionException;JobBuilder和JobDetail还记得我们是怎么定义一个任务
2020-10-09 14:27:15 1031
原创 ThreadLocal源码解析(1)
ThreadLocal源码解析(1)大家想必平时在工作中都或多或少的用到过ThreadLocal, 应用场景也是多种多样, 今天我们来看一下源码大致是怎么实现的从set方法开始, set方法的作用就是设置一个线程变量, 让ThreadLocal管辖public void set(T value) { Thread t = Thread.currentThread(); // 获取当前线程 ThreadLocalMap map = getMap(t); // 通过当前线程获取Thread
2020-09-26 10:36:35 95
原创 彻底搞懂ArrayList的contains方法
ArrayList的contains方法用途用于判断在ArrayList中是否包含目标元素原理调用indexOf(Object o)方法public boolean contains(Object o) { return indexOf(o) >= 0;}indexOf(Object o)方法中调用传入Object对象的equals方法进行比较public int indexOf(Object o) { // 传入的Object是null, 则在集合中
2020-08-23 09:57:17 3613
java面试题汇总 包括 java基础, mysql, redis, springcloud, rabbitmq等
2023-05-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人