自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

奕辰杰的博客

java程序猿一枚,分享自己的技术和职业经验。

  • 博客(84)
  • 资源 (9)
  • 收藏
  • 关注

原创 Netty定制私有化协议的代码参考

涉及的类如下(15个类):CustomServer:自定义的服务端,即服务端启动的主类。CustomClient:自定义的客户端,即客户端启动的主类。AuthRequestHandler:认证请求处理器AuthResponseHandler:认证响应处理器BusinessDealClientHandler:客户端的业务处理器BusinessDealServerHandler:服务端的业务处理器CustomDncoder:自定义解码器。CustomEncoder:自定义编码器。

2025-12-26 17:15:17 246

原创 Netty私人学习笔记

如果是直接内存DirectByteBuf,则记录的是内存地址的起始位置,然后通过sun.misc.Unsafe来反复使用使用申请的这块内存(申请的内存虚拟地址是连续的,只需要记录起始位置,就可以计算出整片内存的地址,JDK的DirectByteBuffer也是直接用Unsafe通过内存地址来直接读写,不过不会重复使用),从而达到复用,不需要反复申请新的内存空间。11、Netty的异步非阻塞实现,底层是基于JDK的NIO(即Selector)为核心进行开发的,并不是使用JDK的AIO模型。

2025-12-26 16:52:02 917

原创 Linux常用日志分析命令

本文介绍了后端开发常用的Linux日志分析命令及其应用场景。tail用于实时监控日志更新;less适合浏览大文件并反向搜索;grep可搜索关键词并显示上下文;sed能提取特定时间段的日志;awk擅长处理列数据,可统计访问量和响应时间。这些命令组合使用能高效定位问题,如监控服务启动、追踪订单问题、分析异常频次、导出事故日志等场景。掌握这些基础命令能显著提升日志分析效率。

2025-12-22 10:17:22 470

原创 关于Netty框架中boss线程和work线程是如何协调工作的源码分析

服务端的boss线程是接收请求,work是处理对应每个连接的后续业务处理和IO操作。这块功能的处理机制源码分析。

2025-12-18 10:45:55 890

原创 字体图标Font Awesome

这套图标字体集几乎囊括了网页中可能用到的所有图标和社交网络图标、Web 应用程序图标和编辑器图标等等。(1)现在比较流行使用字体图标,所谓字体图标其实就是一个包含许多图标的字体库。同我们常用的字体一样,这个也可以理解为一种特殊字体,只不过里面包含的都是图标。使用fa-lg, fa-2x, fa-3x, fa-4x, fa-5x 样式可以让图标相对于内容,尺寸增大33%,变成2倍,3倍,4倍,5倍。(3)无论是按钮图标还是导航栏图标,也不管是网站开发还是移动应用开发,字体图标都能适用。

2025-12-12 10:16:52 890

原创 jsch基本使用介绍

jsch是开源的使用java语言通过ssh连接linux系统的开源框架。使用ssh连接linux后,不但可以执行响应的linux命令,还可以使用基于ssh的sftp,进行文件的上传和下载等操作。

2025-12-12 09:48:59 337

原创 hessian私人学习笔记

因为hessian定义了规范,理论上来说,不同语言间是可以相互调用的,服务端与客户端都必须是相同的语言(例如python客户端调用java的服务端),但是可能存在个语言支持的数据类型不同而存在问题,故不 建议跨语言调用。2、hessian与WebService是有区别的,虽然都是提供远程调用服务,但是WebService是提供跨语言的支持,但是会生成一堆的客户端代码,而hessian只需要服务端与客户端都保持相同的服务接口即可,并且hessian的效率是非常高的,比Webserice高效率很多。

2025-07-31 16:26:37 384

原创 关于npm前端项目编译时栈溢出 Maximum call stack size exceeded的处理方案

对于不同的编译命令,在对应命令前增加 cross-env NODE_OPTIONS=--max-old-space-size=4096 参数即可,我方项目是用 npm run build:tclprod 进行编译的,所以对package.json包的build:prod进行添加参数。原因:随着前端项目的不断迭代,代码和依赖模块越来越多,编译时需要的内存需要越来越大,默认情况下node.js的编译内存是(32 位系统:约 0.7GB,64 位系统:约 1.7GB),编译内存不够导致编译失败。

2025-07-31 16:01:18 650

原创 关于Spring为什么需要使用第三级缓存的原因分析

因为在bean对象实例后,还需要经过依赖属性的注入(populateBean方法)和初始化工作(initializeBean方法),特别是在初始化工作时,会进行调用BeanNameAware、BeanPostProcessor、InitializingBean、aop代理等一序列化工作,如果调用这些序列化工作的时候,就用代理对象来去执行调用,假设刚好这些方法被代理了,那就有可能执行这些初始化方法就包含有代理的逻辑在里面一起执行了,从而导致代理逻辑被误执行。它主要用于解决属性注入时的循环依赖问题。

2025-02-27 10:59:08 414

原创 MongoDB私人学习笔记

将数据进行分片,由多个服务器来分别承担分片数据,通过路由计算规则来觉得存储的数据所在的分区位置,故客户端对数据的读写操作,可能分到不同的片区由不同的服务器来处理,达到了负载均衡的能力,但是如果有个别片区的服务宕机了,那么就无法提供这一片区的数据服务,没有容灾备份的能力。OR条件: db.mycoll.find({$or:[{title:"mongo"},{state:"ok"}]}) 查询title="mongo" OR state="ok"的数据。

2025-02-25 15:48:13 634

原创 关于Activiti工作流框架的多种使用维度

(3)原子流程服务编排。通过定制各种常规基础服务功能,比如 身份证号码校验、用户登录校验、发送短信、发送邮箱等各种基础服务,然后给这些服务进行组合形成一个个对外服务的接口,比如一个用户登录接口,就可以由(短信验证码校验+客户有效性校验+身份证号码校验+颁发认证token+发送登录成功邮件通知)组合而成。在项目启动的时候通过加载数据库的组件组合配置表,动态生成actviti工作流的流程文件进行部署,然后对外提供的服务通过发起指定的Activiti流程实例,从而完成一整套组件的调用。(2)简易流程封装使用。

2025-02-25 14:48:35 456

原创 TIDB数据库的基本介绍

4、tidb的存储数据是通过Region(即数据key的一段范围集合)来存储,并且会将Region通过raft协议拷贝多个副本到其他TiKV节点上,进行数据容灾备份。官方文档非常详细齐全。但是其实tidb和mysql并没有共性,tidb的数据存储方式是使用kev-value的形式来存储的,和mysql是使用关系型表使用b+ tree来存储数据的。TiFlash:是一类特殊的存储节点。和普通 TiKV 节点不一样的是,在 TiFlash 内部,数据是以列式的形式进行存储,主要的功能是为分析型的场景加速。

2025-02-11 09:38:16 980

原创 Java连接TIDB数据库出现通讯失败的原因分析

起初还以为是连接超时的问题,不断地调整连接池的配置,结果都还是于事无补,后来经过分析每个TIDB服务的集群节点日志,发现是TIDB的数据库资源不足,主动杀掉了数据库连接,后经过增加服务器资源问题得以解决。(3)如果 n milliseconds ago 中的 n 如果是 0 或很小的值,则通常是执行的 SQL 导致 TiDB 异常退出引起的报错,推荐查看 TiDB stderr 日志。(4)tidb的节点资源是否不足。例如当内存不够导致OOM异常时,也会出现上述的通讯连接失败错误信息,应特别关注。

2025-02-11 09:35:16 538

原创 ShardingJDBC私人学习笔记

在org.apache.shardingsphere.api和org.apache.shardingsphere.shardingjdbc.api 包中的类是面向用户的API,查询所有未支持方法,请阅读org.apache.shardingsphere.shardingjdbc.jdbc.unsupported包(4.X.X版本)。查询所有未支持方法,请阅读 org.apache.shardingsphere.driver.jdbc.unsupported 包(5.X.X版本)。

2025-01-24 10:43:20 919

原创 关于使用微服务的注意要点总结

笔者亲身经历过微服务后的反思和总结

2025-01-24 10:31:10 927

原创 在spring项目中使用nacos作为配置中心的两种方式

d)在@NacosPropertySource配置了autoRefreshed为true后,还需要在@NacosValue也配置autoRefreshed为true,才能实现自动刷新。b)一个web应用里可以有多个@NacosPropertySource,并且当配置里面的值有重复时,会优先使用先加载的dataId配置。c)@NacosPropertySource注解的autoRefreshed是总控制,如果不配置为自动刷新,则此属性下的值都不会更新。--必须引入bootstarp依赖-->

2025-01-15 10:16:20 607

原创 关于nacos能实时检测到配置中心的配置有变更的原理

客户端通过ClientWorker类开启线程不断循环发起http请求,并且在请求的时候,增加Long-Pulling-Timeout请求头30秒,然后发起http请求并设置为30秒后请求超时。服务端在接收到http请求后,通过读取请求头的长轮询超时时间,设置在29.5秒后再进行响应,期间如果有发送修改配置则立即返回响应,否则就等到29.5秒后再响应客户端。此思想是减少http请求的次数,同时又能保证修改配置后的更新时效性,是一种折中的方案。

2025-01-15 10:14:59 274

原创 drool并发情况下动态加载规则错乱问题

在生产项目中使用drool,采用动态加载规则的方式,每次执行规则策略时先加载最新的规则记录,生产上偶发出现执行结果不正确,经过分析源码和排查,发现在并发加载规则的时候,KieServices类里面的存储对象getRepository()是使用单例的,存储的规则KieModule对象,使用的ReleaseId是默认的GAV版本,这就导致在并发加载的时候,KieModule规则被覆盖,最终导致创建出来的KieContainer引用的规则不正确。(2)指定ReleaseId版本号,不同策略生产不同的版本号。

2025-01-15 09:41:06 460 1

原创 Mybatis两种方式来调用sql语句

说明:方式一比较灵活,但是方式二比较符合面向对象的思想,代码比较简洁直观,推荐使用方式二。与Spring整合,也是优先使用方式二。

2024-09-11 13:49:12 749

原创 tk.mybatis的动态生成sql语句原理

tk.mybatis的动态生成sql语句原理

2024-09-11 13:46:36 626

原创 xxljob调度中心与执行器空闲导致失去通讯原因分析

xxljob调度中心与执行器空闲导致失去通讯原因分析

2024-08-27 20:36:48 847 2

原创 Spring的Aware接口类的执行顺序

Spring的Aware接口类的执行顺序

2024-08-27 20:31:34 527

原创 使用Spring的声明式事务方法内部调用失效

使用Spring的声明式事务方法内部调用失效

2024-08-27 20:30:06 480

原创 spring声明式事务@Transactional注解继承问题

使用spring的声明式事务时,如果使用@Transactional注解,一定要注意注解只对当前类或方法有效,对继承的方法是无效的。但是如果是父类增加了@Transactional,由于此注解增加了@Inherited继承原注解,所以对子类是有效的。

2024-08-22 15:50:50 601

原创 Docker私人学习笔记

docker是基于Go语言实现的开源容器项目。诞生于2013年年初,最初发起者是dotCloud公司。docker开源后受到业界广泛的关注与参与,目前已有80多个相关开源组件项目,逐渐形成了围绕docker容器的完整生态体系。本文主要记录docker起步学习。

2024-08-21 21:09:12 1645

原创 oql4j对象查询语言的使用

oql4j 全称 Object Query Language For Java,即java版本的对象查询语言,支持使用编写查询语言快速的搜索出符合条件的对象,简化对象的过滤处理操作。

2024-08-21 20:59:23 281

原创 oql4j对象查询语言

oql4j 全称 Object Query Language For Java,即java版本的对象查询语言,支持使用编写查询语言快速的搜索出符合条件的对象,简化对象的过滤处理操作。目前支持where条件的过滤。

2024-08-21 20:41:36 1433 1

原创 antlr4私人学习笔记

ANTLR是目前非常流行的语言识别工具,使用Java语言编写,基于LL(*)解析方式,使用自上而下的递归下降分析方法。

2024-07-17 09:10:00 1098

原创 SpringBoot多数据源启动出现循环依赖问题

SpringBoot多数据源启动出现循环依赖问题

2024-05-20 17:32:34 1269 4

原创 tk.mybatis的批量插入扩展

当前的tkmybatis插件,默认的批量插入功能,是需要自动生成主键的(tk.mybatis.mapper.common.special.InsertListMapper),不能通过调用者自己指派主键的形式。经过分析和改造后,在原来InsertListMapper的形式上,额外扩展了允许自己指派主键的批量插入。...

2022-07-20 09:02:06 4441

原创 dom4j私人学习笔记

俗话说“好记性不如烂笔头”,编程的海洋如此的浩大,养成做笔记的习惯是成功的一步!此笔记主要是dom4j-1.6版本的笔记,并且笔记都是博主自己一字一字编写和记录,有错误的地方欢迎大家指正。一、基础知识:1、xmlTool的功能是可以在java中操作xml文件。使用SaxReader读取和操作xml文件,必须导入dom4j-1.6.1.jar

2022-05-19 10:48:33 839 1

原创 Spring声明式事务的特性及易出错的情况

Spring的声明式事务的原理和易错用的情况

2022-05-19 10:42:00 439

原创 项目日志的使用规范

项目里的日志应该如何使用,打印到多详细,什么场景下才需要打印日志,一篇文章告诉你,日志的使用规则和参考方针。

2022-05-19 10:33:05 192

原创 Activiti工作流定制适配业务实操分享

activiti定制化使用

2022-04-15 09:39:23 572

原创 Activiti工作流私人学习笔记

一、基础概念: 1、activiti是个开源免费的工作流程框架,遵循BPMN2(Business Process Modeling Notation - BPMN业务流程模型注解)的规范,其 简约思想的设计使得activiti非常轻量级,数据库层使用MyBatis,并且能与Spring完美的集成。目前activiti的新版本已经7.0了, 但是此处的笔记是基于6.0.0版本。 官方网站:https://www.activiti.org 下载地址...

2022-04-15 08:52:59 846

原创 hutool工具私人学习笔记

一、基础概念: 1、hutool是一个Java工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法, 让Java语言也可以“甜甜的”。Hutool最初是作者项目中“util”包的一个整理,后来慢慢积累并加入更多非业务相关功能, 并广泛学习其它开源项目精髓,经过作者的整理修改,最终形成丰富的开源工具集。hutool工具包是国内开发者创建的。 官方网址:https://hutool.cn/ 文档地址:https://hutool.cn/docs...

2022-04-15 08:51:03 1598

原创 Quartz job completed but the thread remains blocked(quartz定时任务一直处于堵塞状态)

         在项目中使用了quartz的分布式功能,两个节点协调运行定时任务,近期发现quartz的有个定时任务经常会一直处于blocked堵塞状态,后续一直都没有再触发,看日志也没任何错误信息,一直在纳闷。经过一系列的研究,发现定时任务的逻辑里是需要通过http请求外部系统的,使用的apache的httpclient框架,当时没有设置连接超时和读取超时时间,仔细看了httpclient框架...

2018-06-27 14:19:46 4472 1

原创 算法题:解密(楚楚街2016招聘笔试)

名气笔试:楚楚街2016招聘笔试(解密) 题目描述 亮亮深吸一口气,小心地将盒子打开,里面是一张地图,地图上除了一些奇怪的字母以外没有任何路线信息,这可让亮亮犯了愁,这些字母代表了什么意思呢? 亮亮绞尽脑汁也想不出什么思路,突然,亮亮眼前一亮,“我可以把这些字母所有的排列方式全部写出来,一定可以找到答案!”于是,亮亮兴奋的开始寻找字母里的秘密。 输入描述: 每组数据输入只有一行,是一个由不...

2018-04-19 10:18:30 458

原创 算法题:旅途(楚楚街2016招聘笔试)

名企笔试:楚楚街2016招聘笔试(旅途) 题目描述 原来是要到醋溜站台乘坐醋溜快车到醋溜港”,亮亮解出了地图隐藏的秘密,赶紧奔向醋溜站台,但到了之后,亮亮忧桑地发现,从醋溜站台到醋溜港沿途的每个车站都有很多美女被他飒爽的英姿所吸引,只要经过车站就会被这些漂亮的女孩搭讪,但是现在亮亮一心想要寻找楚楚街而没空去搭理她们,所以亮亮希望在抵达醋溜港的时候被搭讪的次数最少。问亮亮抵达醋溜港最少会被搭讪多少次...

2018-04-18 15:44:22 343

原创 算法题:字符集合(华为校招笔试题)

名企笔试:华为校招笔试题(字符集合) 题目描述 输入一个字符串,求出该字符串包含的字符集合 输入描述: 每组数据输入一个字符串,字符串最大长度为100,且只包含字母,不可能为空串,区分大小写。 输出描述: 每组数据一行,按字符串原有的字符顺序,输出字符集合,即重复出现并靠后的字母不输出。 输入例子: abcqweracb 输出例子: abcqwerjava版本的代码实现:pack...

2018-04-18 14:16:53 1118 2

大写数值转换成阿拉伯数字

大写数值转换成阿拉伯数字。例如: 一千五百万千零5百 15000500

2014-07-28

根据数据库表生产word表结构说明文档

本人自己开发的一个java小工具,通过swing有显示界面。主要是提供oracle的表生产wrod文档,快速方便,如果你们项目团队需要生成word文档的表结构说明,这个工具绝对可以满足你的需求。注意:要求jdk1.7以上版本,解压后直接执行 生成数据库表说明文档.bat 即弹出操作界面。

2018-05-16

数字转换成大写数值

金额转换,阿拉伯数字转换成中国传统形式。 例如:101000001010 转换为 壹仟零壹拾億零壹仟零壹拾圆整。

2014-07-28

java反编译器

java反编译器,非常适合没有源码的情况下使用。通过class文件反编译获取源码。

2014-03-27

Oracle.VS.Mysql.pdf

Oracle与MySql的区别,如论是SQL还是存储过程、函数、触发器都有详细的比较。学数据库的人,不能不看。

2014-03-17

Spring API

Spring开发必不可少的文档

2014-02-25

最新JAVA编程题全集(50题及答案)

最新JAVA编程题全集(50题及答案),通常面试都会考的题目喔。能解决这些题目,考试将不是问题。

2014-04-23

tomcat-6.0.16

apache-tomcat-6.0.16.zip

2014-02-25

我也能做CTO之程序员职业规划

书籍《我也能做CTO之程序员职业规划》,作者是高阳。此书非常适合从事软件行业的程序员作职业规划指引。本书通过讲述一个故事来引导职业规划的路线,非常贴合实际。此资料有pdf和doc两种格式的文档,非常方便大家阅读。

2015-04-13

空空如也

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

TA关注的人

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