
JAVA
文章平均质量分 58
如风之夏
贵有恒,何必三更起五更眠;
最无益,只怕一日曝十日寒。
展开
-
如何将请求参数及限制精确提示给用户,提示支持中英文切换
这篇博客主要是依赖前三篇博客进行展开的处理,如果没有看前三篇建议先看完三篇后再浏览这篇。我们都知道对请求参数的校验可以使用spring-boot-starter-validation依赖用于请求参数的校验。在ProjectDTO类成员中使用validation校验注解都要手动写message提示信息,而且这些提示信息样式非常相似,那么如果有很多这样的请求类处理就需要在成员注解中手动写message提示信息,那么这样是相当麻烦的,首先我很懒,我是不会这样去做的,我会这样去做,让它自动帮忙处理,而且很规范。原创 2023-12-19 15:15:27 · 573 阅读 · 0 评论 -
系统接口未找到报404异常统一返回处理
仍然会出现一些情况。针对未找到接口爆出404异常,返回结构体如果没有处理的话会变成下面这样,不会走全局异常处理,这样的话就没有完全做到全局异常统一处理。原创 2023-12-15 11:43:44 · 928 阅读 · 0 评论 -
HashMap初始容量如何设置
Java中新建一个HashMap对象时,如何初始化它的容量大小,非常详细的解释原创 2023-03-29 20:21:13 · 1765 阅读 · 0 评论 -
shell脚本启动项目
shell脚本启动项目根据不同的JAVA项目只需更改前面APP_NAME,JAR_PATH,JAR_NAME,LOG_PATH,PID变量的值就可以使用,如果非JAVA项目还需在start启动方法处更改启动命令使用方法,假如该脚本名称是server.sh,在JAR_PATH='/home/server’目录下1. 进入/home/server目录 cd /home/server2. 启动项目 ./server.sh start3. 停止项目 ./server.sh stop4. 重启项目 .原创 2022-04-12 16:22:58 · 3725 阅读 · 2 评论 -
工作快四年,分享代码优化的15个小建议
1.空指针异常,不要过于相信查询到的数据,使用对象之前一定要做空指针处理,当然要符合实际情况,当是必要对象直接退出(return或throw),当是非必要数据,判断有值状态处理即可。NullPointerException 在我们日常开发中非常常见,我们代码开发过程中,一定要对空指针保持灵敏的嗅觉。主要有这几类空指针问题:包装类型的空指针问题级联调用的空指针问题Equals方法左边的空指针问题ConcurrentHashMap 类似容器不支持 k-v为 null。集合,数组直接获取元素对象原创 2021-04-05 21:55:33 · 259 阅读 · 0 评论 -
Java线程池四种拒绝策略
线程池出现原因?当线程数量越来越多的时候,单一按照流程走下去,会发现执行效率非常低下,无法满足大批量操作需求,那么如何在硬件资源一致地条件下,更迅速地完成任务,这时线程池就出现了。线程池的优势?1. 利用懒加载方式创建线程且能够充分利用现有线程资源,避免资源浪费。2. 适合大批量执行线程,效率更快。线程池什么情况下会拒绝执行线程?当线程池中的线程达到核心线程数,阻塞队列已满且达到最大线程数,这是如果还有线程要执行,线程池将采取一些拒绝策略,防止源源不断地线程压垮整个服务。拒绝策略原创 2020-11-17 11:07:08 · 1851 阅读 · 0 评论 -
Java版本如何切换?
在Java开发的时候会由于环境的不同(开发dev,测试test,生产prod),导致一些代码上会出现差异,那么如何在不改变代码的情况下,通过一个开关的形式进行任意切换打包。步骤:1. 需要在pom.xml中加入profiles如下:<profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDe..原创 2020-06-04 16:42:00 · 2375 阅读 · 0 评论 -
Java代码优化的思想
简约,易懂,风险低,效率快1.简约: 类: 利用好继承关系 方法:懂得方法分离与整合 属性:增加配置,减少重复操作,减少配置,增强使用率2.易懂: 见名知意,上层调用简约,功能分离清楚3.风险低(不会出错): 一夫当关,万夫莫开,符合条件放行,放行考虑意外情况4.效率快: 减少对象创建,减少与数据库连接,SQL优化,使用优秀的第三方...原创 2020-05-30 11:08:47 · 480 阅读 · 0 评论 -
Java引用对象有哪些
一.强引用(StrongReference)只要该引用还一直指向对象,就不会被gc回收,即使发生OOM,也不会被回收二.软引用(SoftReference)它的性质属于可有可无的那种,如果内存空间足够,就不会被gc回收,如果内存空间不足啦,就会回收这些对象的内存,一般用于缓存。三.弱引用(WeakReference)它的性质也属于可有可无的那种,弱引用的对象拥有更短的生命周期...原创 2019-10-10 11:51:14 · 261 阅读 · 0 评论 -
Java自动装箱拆箱及常量池
自动装箱拆箱主要作用于基本数据类型于封装类中比如:1. Integer num=new Integer(10); 原始创建引用对象情况 现自动装箱: Integer i = 10 是不是变简单啦2. 自动拆箱 int num1 = num 将引用数据类型对象转为基本数据类型那么对于Integer自动装箱声明的对象(Integer num = 10) 怎样进行存放的比如...原创 2019-10-09 23:27:30 · 315 阅读 · 0 评论 -
Java基本数据类型与封装类的区别
1.基本数据类型是值传递,封装类是引用传递2.基本数据类型是存放在栈中的,而封装类是存放于堆中的3.基本数据类型初始值如:int=0,而封装类Integer=null4.集合中添加的元素一定是封装类引用数据类型5.声明基本数据类型不需要实例化可直接赋值,而封装类必须申请一个存储空间实例化才可赋值。...原创 2019-10-09 21:56:06 · 2251 阅读 · 1 评论 -
Lambda表达式使用具备条件
1.有一个接口且只有一个A方法2.把该接口对象充当B方法参数,灵活使用A方法3.调用B方法,使用Lambda表达式实现A方法,充当匿名对象原创 2019-09-17 10:36:19 · 3296 阅读 · 4 评论 -
JVM的一些知识
1.JVM基本结构类加载子系统:加载类的信息 方法区:存放类加载信息及常量池信息 Java堆:存放所有的实例对象 直接内存:直接向系统申请内存空间,读写频繁场合使用 垃圾回收系统:未引用对象的回收 Java栈:每个线程有私属的Java栈,栈中保存着局部变量方法参数 本地方法栈:本地方法调用 PC寄存器:指向当前正在被执行的指令 执行引擎:负责执行虚拟机的字节码2.垃圾回收常用...原创 2019-08-02 22:43:08 · 114 阅读 · 0 评论 -
系统该怎样去拆分
1.系统拆分从资源角度可分为:应用拆分和数据库拆分2.从拆分顺序可分为:水平扩展,垂直拆分,业务拆分,水平拆分 拆分顺序 应用拆分 数据库拆分水平扩展(复制) 多机集群,提高系统的并发能力 ...原创 2019-08-02 17:07:31 · 889 阅读 · 0 评论 -
简单理解Spring,SpringMVC,SpringBoot和SpringCloud的区别
Spring是一个一站式的轻量级的Java开发框架,它的核心是IOC控制反转(用于管理对象的生命周期和对象间的关系)和AOP面向切面编程(将主线业务与一些功能性代码分离)。SpringMVC是Spring基础之上的一个MVC框架,主要处理Web开发的路径映射和视图渲染。SpringBoot是整合了第三方常用框架,使用默认大于配置的方式,简化了配置流程,内置Http服务,命令方式启动项目。...原创 2019-07-17 12:56:43 · 699 阅读 · 0 评论 -
SQL优化有哪些
1.简化查询字段,尽量不要使用"*",减少查询,赋值开销。2.减少表连接,可适当增加冗余字段。3.表连接情况下,把表数据量大的放于最前面,减少查询行数。4.使用索引,索引必须有效,有效情况下减少范围比较(尽量不要在Range级别)。5.大分页查询下,使用查询主键找出起始位置。可能不是很准确,很全,还请各位大牛多多指教~~~...原创 2019-07-09 17:20:00 · 1070 阅读 · 0 评论 -
一致性哈希的介绍
适用场景:缓存集群环境下出现背景:1.初始阶段:通过随机存取方式进行,将一个数据随机存入集群的一台服务器中,当使用到这个缓存数据的时候,不知道从集群哪台服务器中取数据,也无法判断有没有这个数据,导致数据冗余,而且服务器数量越多,导致的存取冗余次数无法估量。2.中期阶段:由随机转向哈希取余,首先将一个数据存入集群服务器中,这个数据的key name作为这个数据的唯一标志,然后通过这个ke...原创 2019-07-09 12:33:12 · 171 阅读 · 0 评论 -
如何让线程A,B,C顺序执行
有时候我们会遇到这样的场景,就是在某个线程执行完后,才能执行其它线程,基于这个那么如何让多个线程顺序执行呢?现在有A,B,C三个线程,那么怎样让A线程执行完后B执行最后C执行。 三个线程类如下: class ThreadA implements Runnable{ @Override public void run() { // TODO Auto-gener...原创 2019-04-08 12:00:59 · 4264 阅读 · 0 评论 -
多线程情况下保证数据一致的方法
多线程情况下,怎样确保对同一变量的改变出现一致性问题 使用synchronized关键字 比如:对num变量进行操作,如果没有synchronized 关键字,即使是使用volatile修饰变量,输出的值也会小于100000,因为volatile虽然能够保证可见性及顺序性,但是不能保证变量的原子性。 private static int num = ...原创 2019-04-07 15:21:46 · 12930 阅读 · 1 评论