java笔记
初夏0811
爱生活,爱写作,不爱加班
展开
-
动态获取配置文件中的配置参数,当配置文件中的参数修改之后,不需要重启项目
因为要刷新的字段是应该配置在nacos的配置里,我写在了本地的bootstrap.yml中。配置文件里面配置的参数需要和获取的参数名称相互对应。今天遇到@RefreshScope注解不生效的问题。通过@Autowired注解获取,直接使用。:将刷新的字段写在nacos的配置中。路径为配置文件的绝对路径。动态修改配置文件中的参数。原创 2024-07-27 10:29:20 · 12519 阅读 · 0 评论 -
使用 ProGuard 混淆你的 Java 代码
ProGuard 是一款流行的 Java 代码混淆工具,可以混淆和优化你的代码,使其更难被反编译和分析。混淆通过重命名类、方法和变量名称来实现,从而增加反编译代码的难度。使用 ProGuard 混淆你的 Java 代码可以增加反编译和分析代码的难度,从而保护你的知识产权。通过使用 Maven 中的 proguard-maven-plugin,你可以轻松地将 ProGuard 集成到你的构建过程中。原创 2024-06-22 10:31:30 · 12897 阅读 · 0 评论 -
Spring boot+VUE实现token验证
5.前端之后的每一个对后端的请求都要在请求头上带上token,后端查看请求头是否有token,拿到token检查是否过期,返回对应状态给前端。这个拦截器主要的功能就是,把一些没有token的请求拦截下来并返回错误信息,有token就可以直接通过。4.之后前端每一次权限操作如跳转路由,都需要判断是否存在token,若不存在,跳转至登录页。2.后端验证用户名和密码,若通过,生成一个token返回给前端。6.若token已过期,清除token信息,跳转至登录页。注意:这边拦截的是后端的接口,不是前端的,原创 2024-06-08 14:40:13 · 12997 阅读 · 0 评论 -
JAVA拦截器的三种实现方式
【代码】JAVA拦截器的三种实现方式。原创 2024-06-01 12:08:11 · 15167 阅读 · 0 评论 -
@autowired 注入进来对象为null的几种场景及解决办法
Autowired 注解用于自动注入 Spring 容器中管理的依赖对象。如果是配置类中的 @Bean 方法注入失败,可能是该方法没有被标记为 @Bean 或者方法所在的类没有使用 @Configuration 注解。原创 2024-06-01 11:51:24 · 16824 阅读 · 0 评论 -
Mybatis没写分页莫名自动分页?PageHelper自动分页(踩坑)
pagehelper是一个非常简单实用的分页插件,但是还是有一个小坑在里面的,话不多说,直接上干货。原创 2024-04-27 15:57:02 · 22518 阅读 · 0 评论 -
【精·超简单】SpringBoot 配置多个数据源(连接多个数据库)
重新启动项目,加载数据源,即可在相应的service查询@DS指定的数据源了。注意primary,如果service没有配置相应注解则会默认读取这个数据源。在service实现类中需要加入@DS注解。原创 2024-04-20 16:35:21 · 25167 阅读 · 8 评论 -
Java 集合实现分页-业务代码实现分页
在Java开发中,有些场景比较复杂,受限制,不好在sql查询层面实现分页,需要在查询的list结果后,将list分页返回,如何实现呢?以上不管哪种方式实现分页,对性能都会有一定的影响,尤其是数据量越大,性能越差,因为其原理是全表扫描,将所有数据查询出来后,再在内存中进行分页返回,在可能的情况下,尽量想想如何在sql查询时实现分页返回才好。原创 2024-04-05 20:10:51 · 25891 阅读 · 2 评论 -
Springboot+Easyexcel将数据写入模板文件并导出Excel
本次实现的功能是利用现有模板,将数据批量导出成excel,借助于easyexcel来实现操作excel的功能。最重要的功能模块是Controller里的内容。需要注意需要加上response的响应类型和响应头来使得返回请求返回excel文件写到Web流时,这里的ContentType和CharacterEncoding不要乱码,否则很容易乱码或者文件损坏使用EasyExcel.withTemplate引入模板的输入流。原创 2023-08-06 16:06:41 · 38349 阅读 · 1 评论 -
Easyexcel简介及写、读操作
Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的full gc。EasyExcel是阿里巴巴开源的一个excel处理框架,以使用简单、节省内存著称。EasyExcel能大大减少占用内存的主要原因是在解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析。原创 2023-07-29 12:45:18 · 37212 阅读 · 0 评论 -
JDK8快速找出两个List集合重复的元素
【代码】JDK8快速找出两个List集合重复的元素。原创 2023-07-24 20:56:19 · 37585 阅读 · 0 评论 -
Java 中 Long 类型数据相除,结果保留两位小数
调用 Long 类型的 doubleValue() 方法,以及 String.format() 方法即可。原创 2023-07-24 20:53:48 · 37895 阅读 · 0 评论 -
JDK1.8中Map的getOrDefault、putIfAbsent、computeIfAbsent、merge方法的区别
merge添加键值对,如果key对应的value不存在,直接存储value值,如果value值存在,更新value值,我们可以自定义更新规则。putIfAbsent添加键值对,如果map集合中没有该key对应的值,则直接添加,如果已经存在对应的值,则依旧为原来的值。保存新value+旧value,例如:(value1, value2) -> value1+ value2。put添加键值对,如果map集合中没有该key对应的值,则直接添加,如果已经存在对应的值,则覆盖旧值。原创 2023-07-23 11:23:23 · 36665 阅读 · 0 评论 -
java实现一个简单的webSocket聊天demo
创建webSocketConfig配置类,即注册ServerEndpointExporter,该bean用于扫描被@ServerEndpoint注解的类,并将其作为服务端.创建被@ServerEndpoint注解的类用于作为webSocket服务器并指定连接的uri。成功完成基础的websocket连接,可以开始编辑业务逻辑。到这里,我们就实现了webSocke技术,实现聊天功能了。项目启动后,测试websocket是否可用。使用注解标记对应的方法,,并启动程序。1.构建后台message实体类;原创 2023-07-09 11:38:57 · 39029 阅读 · 0 评论 -
WebSocket系列之基础知识以及设计思路
WebSockets 是一个可以创建和服务器间进行双向会话的高级技术。通过这个API你可以向服务器发送消息并接受基于事件驱动的响应,这样就不用向服务器轮询获取数据了。双向会话指的是客户端和服务端都能够通过WebSocket来进行数据的互相传递,即服务端可以给客户端推送数据,客户端也可以通过WebSocket来传递数据。例如,我们的一个聊天室功能就是一个典型的场景。对WebSocket的协议有了一个初步的了解,下面让我们看下,在具体的使用场景中,如何使用WebSocket。建立连接收到消息发送消息。原创 2023-07-01 10:36:20 · 37403 阅读 · 0 评论 -
java根据拼音搜索,但数据库为汉字的解决方案
最近公司有一个需求,需要进行中文,中文的全拼音,中文的首字母进行模糊搜索,但是数据库全是中文,如果在在数据库添加拼音字段的话,工作量会特别大,所以我根据网上的大神给的方法,自己做了一个解决方案,给各位同行做个参考。3.若输入的为英文,则可以将数据库中查得得中文转为拼音,再循环遍历该字段是否包含了用户输入得keyword的拼音,若包含则保留,否则过滤,下面说下如何将中文转为拼音;2.若输入的为中文,而数据库中也是存的中文,则直接根据like 关键字去模糊查询即可。原创 2023-06-28 22:05:18 · 30704 阅读 · 0 评论 -
Collectors.toMap使用详解
Collectors.toMap 确实带来方便,但是,与此同时,也需要注意两点(你也可以认为是2个坑):需考虑是否有key重复情况;需考虑是否有value为null情况。原创 2023-06-25 21:55:14 · 35237 阅读 · 0 评论 -
【已解决】Java 中导入excel时使用 trim() 无法去除空格的解决方法
1、java的String类中的trim方法,只能去除 半角空格,遇到空格去不掉的情况,可能的全角空格,可以考虑使用hutool或者spring提供的工具类试试。注意:apache-commons-lang3 里的StringUtils工具类,无法去除全角空格,原因是:实际调用的是 String类的trim()方法。原创 2023-06-25 21:10:42 · 32561 阅读 · 0 评论 -
desensitization实现数据脱敏
在实际开发过程中,我们时常出于隐私的要求,不再返回完整的用户姓名,电话等隐私信息,这时就需要用到数据脱敏技术,而现在已经有很成熟的脱敏技术依赖,不再需要自己开发脱敏实现了。下面就介绍脱敏技术中比较成熟的desensitization技术。邮箱手机号码中文名称身份证号码银行卡号码密码统一社会信用代码任意CharSequence类型的值级联脱敏。原创 2023-06-18 15:19:06 · 30772 阅读 · 0 评论 -
java 断言 assert 详解:断言开启、断言使用
对于Java Web应用,程序代码都是部署在容器里面,你没法直接去控制程序的运行,如果一定要开启-ea的开关,则需要更改Web容器的运行配置参数。因此,应当避免在Java中使用assert关键字,除非哪一天Java默认支持开启-ea的开关,这时候可以考虑。assert既然是为了调试测试程序用,不在正式生产环境下用,那应该考虑更好的测试JUint来代替其做用,assert关键字本意上是为测试调试程序时使用的,但如果不小心用assert来控制了程序的业务流程,这在一个生产环境下的应用是绝不能容忍的。原创 2023-06-18 09:56:40 · 28587 阅读 · 0 评论 -
Java陷阱之assert关键字详解
Assert.isTrue(express,message) 是指测试指定的条件是否为True,如果为True,则测试通过。发现,当expression为true时则通过,不发生异常,当expression为false时,则会抛出异常。如果表达式express为false,则才输出信息。原创 2023-06-17 23:29:20 · 20757 阅读 · 0 评论 -
java格式化数字 NumberFormat及DecimalFormat
NumberFormat帮助您格式化和解析任何区域设置的数字。您的代码可以完全独立于小数点,千位分隔符的区域设置约定,甚至是使用的特定十进制数字,或者数字格式是否为十进制。原创 2023-06-16 23:17:44 · 20827 阅读 · 0 评论 -
sql语句异常:org.postgresql.util.PSQLException: ERROR: syntax error at or near “$1“
这种含有$ 1 错误的,而你的sql中又找不到该$ 1符号的的,一般是因为有变量传参不支持使用#,mybatis取不到值,此时可以使用$符号试试,一般就可以的。排序时动态参数用的是 $ 而不是# ($:order by id;#:order by ‘id’)#方式能够很大程度防止sql注入;$方式无法防止Sql注入。所以尽可能的使用#方式。$方式一般用于传入数据库对象,比如传入表名。在MyBatis使用。原创 2023-06-10 18:59:30 · 17411 阅读 · 0 评论 -
java8中Optional类的使用
Optional类是java8中引入的一个非常有用的类,主要用处是解决编程中的空指针异常,本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。Optional 是 Java 实现函数式编程的强劲一步,并且帮助在范式中实现。原创 2023-06-05 21:04:35 · 15545 阅读 · 2 评论 -
如何在 switch case 中使用枚举类
在JDK 7中,又加入了对String类型的支持,从此不用再写If-Else来判断字符串了。因为short,byte,char都会转换成int进行处理,这一点也可以从生成的字节码看出。switch的case语句可以处理int,short,byte,char类型的值,在JDK 5中加入的枚举Enum类型也是可以作为case值的。原创 2023-06-04 11:03:11 · 16689 阅读 · 0 评论 -
Java对象和JSON格式的互相转化
【代码】Java对象和JSON格式的互相转化。原创 2023-06-04 10:17:49 · 25858 阅读 · 0 评论 -
list stream将对象List中的某个字段取出放在新的集合中
【代码】list stream将对象List中的某个字段取出放在新的集合中。原创 2023-05-28 16:22:24 · 15869 阅读 · 0 评论 -
PostgreSQL的SQL语句参数上限 An I/O error occurred while sending to the backend
可能我们首先想到的解决办法是分段批量插入,将sql语句分成几次执行,比如现在有10000条数据,一次性最多插入1000,分为10次循环插入;skip(n):跳过元素,返回一个扔掉前 n 个元素的流。若流中元素不足 n 个,则返回一个空流。java8提供强大的lambda表达式,这里要用到skip和limit方法;数据库我用postgreSQL,持久成框架mybatis。原因:批量插入的顶峰在JDBC-Driver出现天花板.limit(n):截断流,使其元素不超过给定数量。简单来说就是SQL语句参数上限。原创 2023-05-28 16:05:25 · 18429 阅读 · 0 评论 -
removeIf用法
Collection以及其子类新加入了removeIf方法,作用是按照一定规则过滤集合中的元素。注:arraylist 是 ArrayList 类的一个对象。filter - 过滤器,判断元素是否要删除。如果元素被删除则返回 true。原创 2023-05-13 11:06:08 · 16710 阅读 · 0 评论 -
List<String,Object>集合中Map某个属性值求和
假如你需要List 中Map中的每个属性值进行累加求和;原创 2023-05-06 23:59:45 · 16033 阅读 · 0 评论 -
虚拟机栈内存及其作用
4.线程太多,则可能会出现OutOfMemoryError,线程创建 时没有足够的内存去创建虚拟机栈了;3.虚拟机栈 存在OutOfMemoryError和StackOverFlowError;2.一个方法执行时栈帧入栈,执行完时,栈帧出栈,所以虚拟机栈不需要垃圾回收;5.方法掉哟个层次较多,就可能出现StackOverFlowError;6.可以通过-Xss来设置虚拟机栈的大小;1.虚拟机栈是线程私有的;原创 2023-04-15 17:57:41 · 14474 阅读 · 0 评论 -
零宽空格字符问题
很明显,字符串的前面后者后面有ZWNBSP,或者"\u200B"字符的出现,即零宽字符。原创 2023-04-15 12:02:14 · 15082 阅读 · 0 评论 -
jvm调优-hprof 文件打开
如何打开hprof后缀格式的文件呢?当服务器出现内存溢出的情况,要下载分析dump内存文件“在当前目录xiazaihprof文件到本地。我们就可以查看 hprof文件内容了。装入时注意选择 下面的文件格式。原创 2023-04-15 11:48:59 · 23165 阅读 · 0 评论 -
java实现时间格式转换(int整数类型的秒/毫秒---时分秒毫秒)
当然,还可以指定自定义的格式转化显示。原创 2023-04-05 11:33:14 · 17288 阅读 · 0 评论 -
springboot读取excel文件模板写入数据,并下载
先定好excel头部内容,样式等,以此为模板,插入表格数据,就不用HSSFCellStyle类设置样式了。前4行内容是不变的,从第五行开始 从数据库拿出数据 写入表格。pom.xml,必要两个依赖。原创 2023-04-05 11:14:39 · 15019 阅读 · 0 评论 -
利用反射机制将list<map> 转list java对象
【代码】利用反射机制将list 转list java对象。原创 2022-10-21 23:32:49 · 15616 阅读 · 0 评论 -
将List集合中相同属性的对象合并求和
一个List中,如何根据对象中的某个属性group by分组,然后求每个分组值下的和?原创 2022-10-21 23:30:44 · 17480 阅读 · 0 评论 -
JAVA中对list使用stream对某个字段求和
对于List 或者List等类型的数组,如何快速的求出list数组中某个对象的某个属性的和,平均数,统计数,最大值,最小值原创 2022-10-21 23:21:54 · 21090 阅读 · 0 评论 -
java中如何获取两个元素的交集
【代码】java中如何获取两个元素的交集。原创 2022-10-03 11:17:51 · 14675 阅读 · 0 评论 -
使用@Component时再使用@Resource或@Autowired时注入失败问题
在使用@Component注解将bean实例化到spring容器内的时候,@Autowired是在这个bean之中的,@Autowired还未完成自动装载,所以导致service为null。最近在写java项目时发现在使用了@Component的类同时使用@Autowired自动注入service或者mapper的时候发现并未注入成功,得到的对象是null.@Autowired注解放在方法上会在类加载后自动注入这个方法的参数,并执行一遍方法。原创 2022-09-16 21:27:01 · 19105 阅读 · 5 评论