![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 71
WZTTMoon
这个作者很懒,什么都没留下…
展开
-
编码经验杂记
页面防止重复提交–> 页面表单验证–>展示loading图–>网络通信问题反馈处理 -->后台防止重复提交–> 后台数据验证–>后台业务处理–>保存数据(处里空格等)–>日志记录错误的详细信息–>展示详细处理结果和说明–>页面根据处理结果引导客户进行业务跳转。拆分服务的界限的一个考量就是可能的访问数量,像c端访问量通常远远大于b端,所以应该把c端,b端分开。友好的表单业务的完整流程。原创 2024-02-23 10:08:59 · 384 阅读 · 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 · 427 阅读 · 0 评论 -
浅谈耦合和内聚
耦合的种类和耦合度:耦合的种类根据模块间的关系来划分,种类包括无直接耦合,数据耦合,标记耦合,控制耦合,公共耦合,内容耦合,耦合度由低到高。指两个模块之间传递的是简单的数据值,这种数据值不会影响模块内部的逻辑,举例说,模块A做加法运算,模块B传递给模块A两个数 1和2,结果一定是3。一般的情况就是在模块间引入一个间接模块来做中转,虽然,此时两个模块都会和该间接模块产生耦合,但是这种耦合程度是很低的。耦合度越高对模块的修改产生的影响范围越大。上述的标记耦合是两个模块公用一个结构,可以认为是最简单的公共耦合,原创 2023-06-19 09:48:48 · 304 阅读 · 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 · 672 阅读 · 0 评论 -
浅谈常用设计模式
观察者、责任链 + 观察者是无序的,相互间没有影响的;责任链是有序的,相互间是有影响的,责任链就像流水线一样,前一个人的处理会影响的下一个人。 + 观察者依赖其他流程,观察者随着其他流程的进行而进行;责任链不依赖其他流程。23种设计模式是对遵循了设计原则的好的代码的总结,并不需要刻板的照搬结构,只要你遵循了设计原则,很可能会写出第24种设计模式。原创 2023-06-15 10:49:05 · 1403 阅读 · 0 评论 -
java 线程池 ThreadPoolExecutor
+ corePoolSize:线程在没有任务时,需要维持的线程数。在没有任务时维持一定量的线程,可以减少在来任务时,创建线程的时间。+ allowCoreThreadTimeOut:是否允许核心线程在指定的超时时间内,获取不到结束时结束。如果为true,在没有任务时,线程不在维持corePoolSize指定的线程数,而是逐渐递减直至为0+ keepAliveTime:获取任务的超时时间,有以下两种情况会超时获取任务,其他情况会一直阻塞获取任务 + 超过了核心线程数,且队列中有任务 + 核原创 2023-04-24 17:37:08 · 436 阅读 · 0 评论 -
java 虚拟机杂记
如果只有一块Survivor,在清除Survivor区已死亡的对象时,因为此刻的Survivor区还有存活的对象,清除要比分两块Survivor麻烦,两块的情况,回收时只需将存活的对象移到另一块,剩下的对象直接清理即可。synchronized 的优化,最初synchronized必然会引起的内核态与用户态切换、线程阻塞造成的线程切换(重量级锁)。自旋锁:可以认为是获取锁的一种方式。当线程发现资源被锁住后,此时不立刻挂起线程,而是通过一定时间内的自循环,来尝试获取锁。偏向锁->轻量级锁->重量级锁。原创 2023-04-23 15:16:32 · 152 阅读 · 0 评论 -
java 集合简述
HashMap * hash表是数组,hash桶是链表 * 初始数组容量16 * 最大数组容量1原创 2023-04-23 15:16:00 · 148 阅读 · 0 评论 -
apache tomcat 体系结构
tomcat 处理流程可以分为三部分1. 建立连接,封装处理请求,由ProtocolHandler来完成2. tomcat核心部分,通过Wrapper,Context,Host,Engine 和 value来完成3. 由Wrapper调用servlet体系处理具体业务。原创 2023-04-11 15:57:19 · 116 阅读 · 0 评论 -
浮点数的精确计算
浮点数的精确计算。用`BigDecimal.valueOf(0.3)`或者`newBigDecimal(Double.toString(0.3))`构造BigDecimal对象才能进行精确计算原创 2023-04-04 15:25:09 · 53 阅读 · 0 评论 -
apache 工具使用杂记
pluginManagement一般是用来在父POM中定义,提供给子POM使用,子POM也可以覆盖这个定义,而且你在父POM中定义了版本之后,子模块中直接应用groupId和artifactId,而不用指定版本,同时也方便统一管理;JAVA_HOME的值配错了,后来改过,但这个变量只初始化一次,所以他总是用错误的JAVA_HOME的值。什么样的包为测试源,答案是,在maven项目中包含test的依赖定义为测试源。错误:在src/test/java源文件夹下测试相关的包是找不到的,其他的包是正常的。原创 2023-04-03 11:38:00 · 303 阅读 · 0 评论 -
基于apache httpClient 的post,get工具类
【代码】基于apache httpClient 的post,get工具类。原创 2023-03-31 14:30:45 · 237 阅读 · 0 评论 -
java 各种io流介绍
操作目标是内存、文件等各种设备:像ByteArrayInputStream操作的是内存,FileInputStream操作的是硬盘 * 操作目标是其他流:其都继承了FilterInputStream或FilterOutputStream,可以被称为包装流。像BufferedInputStream,CheckedInputStream他们都是操作其他流,可以增强被操作流的功能原创 2023-03-31 13:29:18 · 81 阅读 · 0 评论 -
slf4j-log4j2的初始化流程
slf4j需要StaticLoggerBinder对象来完成绑定,所以其他的日志框架要想接入slf4j都要定义一个org.slf4j.impl.StaticLoggerBinder对象。 只不多返回的ILoggerFactory实现不一样。原创 2023-03-30 15:11:56 · 493 阅读 · 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 · 716 阅读 · 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 · 550 阅读 · 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 · 5658 阅读 · 1 评论 -
业务流程书写探讨
业务流程书写探讨原创 2019-07-29 16:30:22 · 345 阅读 · 0 评论