自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

朱季谦

程序员,写作者,微信读书已上架《黑色玫瑰》小说

  • 博客(123)
  • 收藏
  • 关注

原创 ExecutorService、Callable、Future实现有返回结果的多线程原理解析

ExecutorService、Callable、Future实现有返回结果的多线程原理解析

2023-12-08 08:02:29 1173

原创 图解Spark排序算子sortBy的核心源码

图解Spark排序算子sortBy的核心源码

2023-12-06 07:40:44 1139

原创 图解Spark Graphx实现顶点关联邻接顶点的collectNeighbors函数原理

图解Spark Graphx实现顶点关联邻接顶点的collectNeighbors函数原理

2023-12-06 07:37:37 1483

原创 图解ReentrantLock底层公平锁和非公平锁实现原理

图解ReentrantLock底层公平锁和非公平锁实现原理

2023-11-30 09:16:22 1735

原创 在云服务器上搭建个人版chatGPT及后端Spring Boot集成chat GPT

在云服务器上搭建个人版chatGPT及后端Spring Boot集成chat GPT

2023-11-26 16:17:54 1560

原创 图解Spark Graphx基于connectedComponents函数实现连通图底层原理

图解Spark Graphx基于connectedComponents函数实现连通图底层原理

2023-11-22 08:29:56 1901

原创 基于Gin+Gorm框架搭建MVC模式的Go语言企业级后端系统

Gorm是全特性的ORM框架,即对象关系映射,这样,就需要类似Java那样建立与数据库映射的类,在Go语言当中,我们称之为结构体。首先,先创建一张用于验证的数据库表结构——`name` varchar(50) NOT NULL COMMENT '用户名',`nick_name` varchar(150) DEFAULT NULL COMMENT '昵称',`avatar` varchar(150) DEFAULT NULL COMMENT '头像',

2023-11-15 11:06:58 1349

原创 MAT工具定位分析Java堆内存泄漏问题方法

MAT,全称Memory Analysis Tools,是一款分析Java堆内存的工具,可以快速定位到堆内泄漏问题。该工具提供了两种使用方式,一种是插件版,可以安装到Eclipse使用,另一种是独立版,可以直接解压使用。

2023-11-14 10:41:51 538

原创 visualvm工具远程对linux服务器上的JVM虚拟机进行监控与调优方案

visualvm工具远程对linux服务器上的JVM虚拟机进行监控与调优方案。

2023-11-13 12:18:24 1283 1

原创 策略枚举:消除在项目里大批量使用if-else的优雅姿势

策略枚举消除大量if-else的方案。

2023-11-11 19:50:21 248

原创 《风控要略:互联网业务反欺诈之路》一万字读后详细总结

文/朱季谦(朱镕军)本书的内容正如书名所述,是为要略而非攻略,即作者站在一个更为宏观的角度,以自身的从业经验对当今风控领域做了一番较为全貌的总结概述。书中的章节内容有精有简,既为要略,那么就无法苛求其内容都足够全面与详细。它更像是一部风控领域的科普类简述作品,在广度上能较好地让读者了解到风控各方面的现状及走向,但若要谈及深度,则多少有种“师父领进门,修行在个人”的感觉。这本书其实有挺多人推荐,一方面是书籍出版时间距离现在很近,一方面则是填补风控业务领域入门书籍的空白,只是通篇读完,好的地方是有,值...

2021-02-18 19:25:19 4279 3

原创 孤岛上住着一只猫

原创/朱季谦  我时常坐在樱花树下的长木椅上,在木椅的另一头,每天都蹲着一只金黄色的瘦猫。它喜欢闭着眼睛,在斑驳的树下享受午后的阳光。没有人听我说话的时候,我就会跟旁边的猫先生说话,但它总是摆出一副冷漠的样子,对我置之不理,只有在我叹息的时候,才会懒懒地回过头瞥我一眼。  我每天都会把自己的故事跟它说一遍——我妻子死去的时候,给我留下一句话:“如果有天想我了,就去远方的一座岛上找我……”  她走后,我总是怀念过去与她一起生活的日子,她知道我喜欢什么不喜欢什么,没有谁能比她更懂我....

2021-02-10 21:55:18 147

原创 手把手图解教你Java SPI源码分析

最详细万字图解Java SPI源码分析

2024-01-14 21:48:08 1313 1

原创 通过本质看现象:关于Integer受内部初始化赋值范围限制而出现的有趣现象

而当c,d赋值为1000时,就超过了范围,就会创建新的对象,两个引用指向不同的对象,即使对象拥有相同的内容,用==比较结果依然是false,这样的话,c,d已不属于同一个对象了,自然就会为false。前几天我在逛论坛的时候,偶然看到有人讨论这样一个现象,定义四个Integer类型的变量,分别初始化赋值为a=100,b=100,c=1000,d=1000,然后用println分别打印输出a==b和c==d的boolean值。问题便来了,同样类型的数值,为何a==b是正确的,而c==d则被判断为错误。

2024-01-14 21:46:04 414

原创 Java SPI机制总结系列之开发入门实例

Java SPI机制总结系列之开发入门实例

2024-01-14 21:43:46 1212

原创 通过Wireshark抓包分析谈谈DNS域名解析的那些事儿

通过Wireshark抓包分析谈谈DNS域名解析的那些事儿

2024-01-14 21:42:31 957

原创 程序猿的产品思考:2C与2B产品思维的区别

就我所处的阅历而已,无法给出一个合适的答案,它似乎是可控的,又似乎是不可控的,或许,我们能控制的,只是懂得与发现潜意识的意识。然而也在很长一段时间里,我竟混淆了其中的一些概念,或者说,认知止于肤浅——原来我一直都把2C与2B混成一谈,以为两者皆可用同样的用户思维,却没有深层次地意识到,在2C与2B的背后,是个体潜意识与集体人格的区别。首先,集体是一种角色,常见的,如儿子,女儿,丈夫,妻子,学生,老师,这些都是角色。而2B,面向的是某个角色,具备集体人格,是给特定集体做产品,需要研究的是集体共同的东西。

2024-01-14 21:41:14 374

原创 设置5台SSH互免的虚拟机服务器配置

搭建一套集群虚拟机,往往都需要互免设置,过程很简单,避免以后再搭建还得网上搜索,我直接将这一个步骤写成笔记,记录下来,方便后续查阅。

2024-01-08 12:28:55 513

原创 MacBook Pro M1搭建Kafka2.7版本源码运行环境

kafka源码阅读之MacBook Pro M1搭建Kafka2.7版本源码运行环境。

2024-01-08 12:17:43 936

原创 作为程序员,我建议你学会写作

无论你现在从事的是何种行业,是技术类,建筑类,还是其他同样跟语文不着边际的工作,若有天你能在自己的领域深挖到一定程度而成为行业里的大牛时,你就要开始懂得借助某种媒介去输出你的价值,也就是我们常说的——打造个人品牌,即影响力。如果你留意观察,便会发现,随着互联网的发展,现在已经变成一个全民写作的时代。随着接触到的人与事变得越来越多,你会发现,几年前的一些人,你已经逐渐想不起他们的名字,就连那些曾真实出现在你生活里的事情,你也开始一阵茫然,此时,你的回答或许就像《风筝》里小兄弟说的那样:“有过这样的事吗?

2024-01-07 10:55:01 342

原创 linux虚拟机环境快速搭建redis5.x版本的主从集群总结

原创/朱季谦我在阿里云服务器上曾参与过公司redis集群的搭建,但时间久了,都快忘记当时的搭建过程了,故而决定在虚拟机centOS 7的环境,自行搭建一套redis5.x版本的集群,该版本集群的搭建比较方便,不用再像以前版本那样还得再搞一个 Ruby,5.x版本可直接使用 redis-cli的方式来构建集群。提前准备六台虚拟机:搭建之前,先ping一下各虚拟机的网络情况,看是否可以正常ping通,若正常,则进行下一步操作。

2024-01-07 10:52:02 1390

原创 实际使用Elasticdump工具对Elasticsearch集群进行数据备份和数据还原

在npm关于Elasticdump的英文官网里,可以看到一篇关于Elasticdump的英文介绍,这个工具的logo很有意思,是一台可以搬运(迁移)东西(数据)的工具车,这个logo就表明该Elasticdump工具可用来迁移备份和恢复数据。使用Elasticdump时特别需要是,若直接用来按照,node版本需要在v10.0.0以上才能支持,否则执行该指令会出错。Elasticdump通过向发送一个input来工作output,其标准指令是表示读取数据源SOURCE。

2024-01-07 10:50:39 961

原创 模仿Activiti工作流自动建表机制,实现Springboot项目启动后自动创建多表关联的数据库与表的方案

实现项目启动建表的功能,可能还需实现判断是否已经有相应数据库,若无,则应先新建一个数据库,同时,得考虑还没有对应数据库的情况,因此,我们通过jdbc第一次连接MySQL时,应连接一个原有自带存在的库。若要解决这类需求,其实现在已有不少开源框架都能实现自动生成数据库表,如mybatis plus、spring JPA等,但您是否有想过,若要自行构建一套更为复杂的表结构时,这种开源框架是否也能满足呢,若满足不了话,又该如何才能实现呢?",就意味着,已经拼接形成一个完整的sql建表语句,例如。

2024-01-07 10:49:02 1149

原创 Java编程技巧:if-else优化实践总结归纳

一般用来替换if-else的map,我们就是要求在初始化定义后,就不会再允许修改了,因此,这个ImmutableMap生成的map,可以很好地帮我们实现这一点。另外,

2024-01-07 10:43:15 765

原创 开源一套原创文本处理工具:Java+Bat脚本实现自动批量处理对账单工具

5.Start.bat:bat脚本,主要实现是,将CopyName.bat和“对账单批量名字集合.txt”都复制到“对账单”目录,然后执行CopyName.bat,将该目录底下的所有.txt后缀的文件名,写入到“对账单批量名字集合.txt”,再启动Auto.jar包,该jar会去“对账单批量名字集合.txt”获取所在目录下各txt文档名字,再根据这些名字去读取对应的txt文档。这是我开源的第一个小工具,以此为励,在以后的日子里,要更加深入地学习,并将所学与所得,多多分享。这,就是我喜欢输出的原因之一。

2024-01-04 21:41:51 1323

原创 Kafka抛出异常Offset commit cannot be completed since the consumer is not part of an active group for...

这个ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG是max.poll.interval.ms,表示最大轮询间隔时间,若手动设置为500,意味着消费者在两次连续轮询之间最多只能等待500毫秒。除了调整max.poll.interval.ms比消费逻辑耗时大之外,还可以调整consumer.poll(Duration.ofMillis(500))和max.poll.records,控制每次poll处理耗时降低。但是,若设置过大的话,可能导致消费者在长时间无法处理新的记录。

2024-01-04 16:37:32 905

原创 [2023-年度总结]凡是过往,皆为序章

原创/朱季谦2023年12月初,傍晚,在深圳的小南山看了一场落日。那晚我们坐在山顶的草地上,拍下了这张照片——仿佛在秋天的枝头上,结出一颗红透的夕阳。这一天很快就会随着夜幕的降临,化作记忆的碎片,然而,总会有一些难忘的痕迹,在逐渐落满灰尘的回忆里,熠熠生辉。

2023-12-29 16:37:38 992 1

原创 Docker部署系列之Docker Compose安装Redis三主三从集群

Docker部署系列之Docker Compose安装Redis三主三从集群。

2023-12-29 15:42:21 982

原创 Activiti工作流框架学习笔记(二)之springboot2.0整合工作流Activiti6.0

以前在工作当中做过不少与工作流Activiti有关的工作,当时都是spring集成activiti5.22的项目,现在回过头去看,其实版本已经稍微老了,因此,基于先前的工作经验,决定用较新版本的技术来重新梳理下以前接触过的技术。决定用springboot2.0+Activiti6.0来做实践总结。接下来,将基于该搭建,对Activiti工作流引擎做更多操作实践。第二步,建立Activiti的配置类。

2023-12-28 23:21:38 416

原创 基于源码去理解Iterator迭代器的Fail-Fast与Fail-Safe机制

原创/朱季谦在Java编程当中,Iterator迭代器是一种用于遍历如List、Set、Map等集合的工具。这类集合部分存在线程安全的问题,例如ArrayList,若在多线程环境下,迭代遍历过程中存在其他线程对这类集合进行修改的话,就可能导致不一致或者修改异常问题,因此,针对这种情况,迭代器提供了两种处理策略:Fail-Fast(快速失败)和Fail-Safe(安全失败)。先简单介绍下这两种策略——

2023-12-28 23:18:10 1445

原创 作为程序员,我建议你学会写作

无论你现在从事的是何种行业,是技术类,建筑类,还是其他同样跟语文不着边际的工作,若有天你能在自己的领域深挖到一定程度而成为行业里的大牛时,你就要开始懂得借助某种媒介去输出你的价值,也就是我们常说的——打造个人品牌,即影响力。如果你留意观察,便会发现,随着互联网的发展,现在已经变成一个全民写作的时代。随着接触到的人与事变得越来越多,你会发现,几年前的一些人,你已经逐渐想不起他们的名字,就连那些曾真实出现在你生活里的事情,你也开始一阵茫然,此时,你的回答或许就像《风筝》里小兄弟说的那样:“有过这样的事吗?

2023-12-26 21:02:26 436

原创 ChatGPT结合Xmind生成思维导图

打开Xmind软件,选择【文件】->【导入】->【Markdown】,然后将上面创建的chatgpt.md文件导入即可——除了ChatGPT结合MINDSHOW自动生成PPT外,是否可以在一些场景下,借助ChatGPT快速生成思维导图呢?我们开始基于一个案例来说明如何借助ChatGPT和Xmind的方式快速生成脑图。我们将markdown格式的内容复制粘贴到一个文本里,文本后缀改成".md"——然后,将生成的内容转换成markdown语法——最后,会自动生成以下格式的xmind脑图——

2023-12-26 09:32:34 911

原创 在日报、读后感、小说、公文模版、编程等场景体验了一把chatGPT

总结/朱季谦昨晚经过一顿操作猛如虎的捣鼓,终于将chatGPT的访问环境在Mac笔记本上搭建了起来。基于日报、读后感、短文、公文模版、编程这五个场景,我进行了一下简单的体验。

2023-12-25 18:15:43 416

原创 结合ChatGPT和MINDSHOW自动生成PPT

程序员涉及开发相关的文档基本都喜欢用markdown,此时,我写这篇小总结的过程同样是使用了markdown,至于什么是markdown,可以自行百度下哈。然后,点击左边菜单的【导入】,将chatgpt生成的markdown语法内容,复制到格式为【Markdown】的文本框里,然后选择【导入创建】——你需要提供一些关键信息,如果没有关键信息,就按照大纲方式让它设计,例如,我让它帮我写一份《2023年年中述职报告》的模版——五、自动生成的PPT还可以进一步自行选择免费页面布局,例如,原布局是这样的——

2023-12-24 16:01:01 1116

原创 uni-app如何解决在for循环里调用异步请求获取数据顺序混乱问题

先前有一次做uni-app的js接口对接时,遇到过这样的情况,在for循环里,调用一个异步请求时,返回来的值顺序是乱的,因此,在以下的代码里,push到数组里的值,每次的顺序可能都是不一样的,造成这样一个原因,是for循环是单线程的,异步请求是多线程的,f往往在for循环结束了,异步请求还没有结束。按照这样的修改,便可以避免for循环里调用异步请求出现的问题了。其他js也可以按照这个思路,用递归算法的思想。

2023-12-24 15:58:46 631 1

原创 SpringBoot2.x+mybatis plus3.x集成Activit7版本

换到Activiti7版本后,可以不需要再另外写一个配置类来将工作流Activiti各接口注入到IOC当中,它已经能自动实现注入相应的服务接口,只需要依赖对应的jar包和在yaml配置文件里配置相应的参数,即可实现SpringBoot+Activiti7的集成。注意一点是,因为用到了mybatis plus做ORM框架,故而需要排除掉mybatis依赖,否则在项目启动时,会发生异常提示信息。在Activiti6版本当中,若要集成到Springboot里,需要写一些额外的配置类,我曾经在。

2023-12-24 15:53:11 403

原创 SpringCloudAlibaba Seata在Openfeign跨节点环境出现全局事务Xid失效原因底层探究

原创/朱季谦曾经在SpringCloudAlibaba的Seata分布式事务搭建过程中,跨节点通过openfeign调用不同服务时,发现全局事务XID在当前节点也就是TM处,是正常能通过RootContext.getXID()获取到分布式全局事务XID的,但在下游节点就出现获取为NULL的情况,导致全局事务失效,出现异常时无法正常回滚。当时看了一遍源码,才知道问题所在,故而把这个过程了解到的分布式事务XID是如何跨节点传输的原理记录下来。本文默认是使用Seata的AT模式。

2023-12-24 15:49:24 1613

原创 SpringBoot+Mybatis整合出现org.apache.ibatis.binding.BindingException: Invalid bound statement (not found

若遗漏话,将导致在编译时,只会生成Mapper的class文件,而没有xml文件,因此,就会报找不到selectByExample的错误信息。在搭建自己的后台管理,遇到一个比较小问题,顺便记录了一下。

2023-12-22 21:13:56 485

原创 JDK1.8新特性Lambda表达式简化if-else里都有for循环的优化方式

在日常开发过程当中,能把代码写出来,不一定就意味着能把代码写好,说不准,所写的代码在他人看来,其实就是一坨乱七八糟的翔,因此,代码简化尤其重要,我曾经遇到过这样一个类型的代码,即if-else里都有相同的for循环,这时,我就思考了,如何简化它可以既提高代码性能又减少代码量。10 System.out.println("执行了错误的方法");10 System.out.println("执行了错误的方法");

2023-12-22 21:12:16 410

原创 安全优雅地停止线程

首先,当执行线程的interrupt()方法后,就会给该线程打上一个中断的标识属性,该标识属性原本是false的,但被打上中断标识后,就会变成true了,这里有点类似volatitle变量的可见性玩法,通过这样的可见性变量,我们就可以设置某种状态,当满足该状态时,就可以跳出程序,提前结束。可以通过isInterrupted()方法获取到中断标识属性的状态值,若是true,表示该线程已经被打上中断标识,那么,就可以先清理完资源后,再结束该线程。首先,先抛出一个问题,该如何安全而优雅地停止线程?

2023-12-20 21:19:41 563

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除