
java
文章平均质量分 68
WZTTMoon
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
泛型集合的添加与获取
除了null,无法添加其他对象,可以通过A或Object定义向上转型来读取除了null和A,无法添加其他对象,可以通过Object向上转型或强制转换来读取只有 ? extend/super 才能被强转,强转为边界或满足边界限定条件的类型 + ?extends/super 泛型集合主要用在方法参数的定义上,以便更宽泛的集合入参 + ?extends/super 作为方法参数时,能传入的参数类型和强转规则一样原创 2024-09-26 15:52:34 · 281 阅读 · 0 评论 -
分布式事务
XA、AT是在一个事务中操作多个数据源,理论上网网一个项目只会对应一个数据源,多个项目组成一套微服务系统,项目之间通过微服接口来相互调用,很少一个项目操作多个数据源。XA,AT,TCC 要求每个参与者的结果是明确的,要么成功要么失败,但一些长微服务接口,返回的结果是处理中,此时可以用SAGA模式,因为它每个微服务都是独立的,不需要整体提交回回滚。在处理微服务上,SAGA比TCC更灵活也更复杂,TCC只需实现三个接口, SAGA除了实现逆向服务还需要对整个业务进行详细的设计原创 2024-09-09 16:21:59 · 408 阅读 · 0 评论 -
编码经验杂记
页面防止重复提交–> 页面表单验证–>展示loading图–>网络通信问题反馈处理 -->后台防止重复提交–> 后台数据验证–>后台业务处理–>保存数据(处里空格等)–>日志记录错误的详细信息–>展示详细处理结果和说明–>页面根据处理结果引导客户进行业务跳转。拆分服务的界限的一个考量就是可能的访问数量,像c端访问量通常远远大于b端,所以应该把c端,b端分开。友好的表单业务的完整流程。原创 2024-02-23 10:08:59 · 452 阅读 · 0 评论 -
常见流程代码审查
1. 字符串转其他类型时,要处理转换异常2. 禁止空指针异常2. 依赖于先前值得更新要处理并发情况(分布式锁或消息队列处理)3. 要处理数据库无法存储的特殊字符4. 小数计算要用BigDecimal5. else 部分必须处理(哪怕只打印debug日志)6. 接口要保证幂等7. 耗时接口要限制调用频率8. 循环中禁止单记录查询9. 批量保存要写在事务中10. 禁止sql子查询11. 禁止sql超过3个表的关联12. 禁止在事务中处理耗时操作(事务中调用外部接口)13. 获取大量数据原创 2024-02-21 13:18:53 · 489 阅读 · 0 评论 -
浅谈耦合和内聚
耦合的种类和耦合度:耦合的种类根据模块间的关系来划分,种类包括无直接耦合,数据耦合,标记耦合,控制耦合,公共耦合,内容耦合,耦合度由低到高。指两个模块之间传递的是简单的数据值,这种数据值不会影响模块内部的逻辑,举例说,模块A做加法运算,模块B传递给模块A两个数 1和2,结果一定是3。一般的情况就是在模块间引入一个间接模块来做中转,虽然,此时两个模块都会和该间接模块产生耦合,但是这种耦合程度是很低的。耦合度越高对模块的修改产生的影响范围越大。上述的标记耦合是两个模块公用一个结构,可以认为是最简单的公共耦合,原创 2023-06-19 09:48:48 · 405 阅读 · 0 评论 -
常用jar使用杂记
session中有多个同类型对象,地址不一样,id一样,outer-join=“true” 可能会造成a different object with the same identifier value was already associated with the session错误。存在多个slf4j包或没有slf4j包,因而没有找到对应方法,解决方案:删除低版本包或添加slf4j包。事务下 hibernate操作和sql操作 ,不能同时操作一个对象,否则会出现问题。原创 2023-06-15 13:33:08 · 742 阅读 · 0 评论 -
浅谈常用设计模式
观察者、责任链 + 观察者是无序的,相互间没有影响的;责任链是有序的,相互间是有影响的,责任链就像流水线一样,前一个人的处理会影响的下一个人。 + 观察者依赖其他流程,观察者随着其他流程的进行而进行;责任链不依赖其他流程。23种设计模式是对遵循了设计原则的好的代码的总结,并不需要刻板的照搬结构,只要你遵循了设计原则,很可能会写出第24种设计模式。原创 2023-06-15 10:49:05 · 1514 阅读 · 0 评论 -
java 线程池 ThreadPoolExecutor
+ corePoolSize:线程在没有任务时,需要维持的线程数。在没有任务时维持一定量的线程,可以减少在来任务时,创建线程的时间。+ allowCoreThreadTimeOut:是否允许核心线程在指定的超时时间内,获取不到结束时结束。如果为true,在没有任务时,线程不在维持corePoolSize指定的线程数,而是逐渐递减直至为0+ keepAliveTime:获取任务的超时时间,有以下两种情况会超时获取任务,其他情况会一直阻塞获取任务 + 超过了核心线程数,且队列中有任务 + 核原创 2023-04-24 17:37:08 · 512 阅读 · 0 评论 -
java 虚拟机杂记
如果只有一块Survivor,在清除Survivor区已死亡的对象时,因为此刻的Survivor区还有存活的对象,清除要比分两块Survivor麻烦,两块的情况,回收时只需将存活的对象移到另一块,剩下的对象直接清理即可。synchronized 的优化,最初synchronized必然会引起的内核态与用户态切换、线程阻塞造成的线程切换(重量级锁)。自旋锁:可以认为是获取锁的一种方式。当线程发现资源被锁住后,此时不立刻挂起线程,而是通过一定时间内的自循环,来尝试获取锁。偏向锁->轻量级锁->重量级锁。原创 2023-04-23 15:16:32 · 190 阅读 · 0 评论 -
java 集合简述
HashMap * hash表是数组,hash桶是链表 * 初始数组容量16 * 最大数组容量1原创 2023-04-23 15:16:00 · 194 阅读 · 0 评论 -
apache tomcat 体系结构
tomcat 处理流程可以分为三部分1. 建立连接,封装处理请求,由ProtocolHandler来完成2. tomcat核心部分,通过Wrapper,Context,Host,Engine 和 value来完成3. 由Wrapper调用servlet体系处理具体业务。原创 2023-04-11 15:57:19 · 187 阅读 · 0 评论 -
浮点数的精确计算
浮点数的精确计算。用`BigDecimal.valueOf(0.3)`或者`newBigDecimal(Double.toString(0.3))`构造BigDecimal对象才能进行精确计算原创 2023-04-04 15:25:09 · 117 阅读 · 0 评论 -
apache 工具使用杂记
pluginManagement一般是用来在父POM中定义,提供给子POM使用,子POM也可以覆盖这个定义,而且你在父POM中定义了版本之后,子模块中直接应用groupId和artifactId,而不用指定版本,同时也方便统一管理;JAVA_HOME的值配错了,后来改过,但这个变量只初始化一次,所以他总是用错误的JAVA_HOME的值。什么样的包为测试源,答案是,在maven项目中包含test的依赖定义为测试源。错误:在src/test/java源文件夹下测试相关的包是找不到的,其他的包是正常的。原创 2023-04-03 11:38:00 · 423 阅读 · 0 评论 -
基于apache httpClient 的post,get工具类
【代码】基于apache httpClient 的post,get工具类。原创 2023-03-31 14:30:45 · 345 阅读 · 0 评论 -
java 各种io流介绍
操作目标是内存、文件等各种设备:像ByteArrayInputStream操作的是内存,FileInputStream操作的是硬盘 * 操作目标是其他流:其都继承了FilterInputStream或FilterOutputStream,可以被称为包装流。像BufferedInputStream,CheckedInputStream他们都是操作其他流,可以增强被操作流的功能原创 2023-03-31 13:29:18 · 133 阅读 · 0 评论 -
slf4j-log4j2的初始化流程
slf4j需要StaticLoggerBinder对象来完成绑定,所以其他的日志框架要想接入slf4j都要定义一个org.slf4j.impl.StaticLoggerBinder对象。 只不多返回的ILoggerFactory实现不一样。原创 2023-03-30 15:11:56 · 708 阅读 · 0 评论 -
lombok 详细使用说明
1.lombok作用用来简化java bean 的书写,一般java bean都需要getter和setter方法,可能还要写一个构造器、equals方法、或者hash方法,lombok可以在编译期自动生成这些代码(类似于java的语法糖),加快开发速度。2.spring-boot 依赖<dependency> <groupId>org.projectlombok</groupId> <artifac原创 2020-11-16 11:04:55 · 828 阅读 · 0 评论 -
mapstruct使用说明
1.安装两个插件mapstruct-eclipse 插件插件说明:在写java代码时提供一些格外的帮助信息安装:eclipse market 中搜索安装m2e-apt 插件插件说明:编译时自动处理mapstruct注解安装:访问官网按照提示安装2.maven依赖引入...<properties> <org.mapstruct.version>1.4.1.Final</org.mapstruct.version></prop原创 2020-12-10 15:38:51 · 671 阅读 · 0 评论 -
ThreadLocal取不到值的两种原因
1.两种原因最常见的的就是多个线程使用ThreadLocal类加载器不同造成取不到值,本质原因就是不同类加载器造成多个ThreadLocal对象public class StaticClassLoaderTest { protected static final ThreadLocal<Object> local = new ThreadLocal<Object>(); //cusLoader加载器加载的对象 private Test3 test3;原创 2020-11-16 11:04:46 · 6279 阅读 · 1 评论