- 博客(97)
- 收藏
- 关注
原创 java.util.Date 类存在多个问题当前开发环境不再适用
例如, getMonth()返回的月份值比实际月份小1,getYear()返回的年份值比实际年份少1900137.线程安全问题: Date 类是非线程安全的,如果在多个线程中使用,可能会出现问题。:Java 8 推出了新的日期时间 API,如 LocalDate、LocalTime、LocalDateTime 等,这些类提供了更加丰富和易用的日期时间操作方法,而 Date 类已经被标记为过时。: Date 类不是 final ,这鼓励了不当的继承,如 java.sql.Date,增加了混淆和潜在的错误。
2024-12-18 17:43:02
263
转载 Spring Boot 非常实用的内置功能减少内部开发
这些包装器允许开发者在请求处理过程中拦截和修改请求和响应数据,从而实现一些特定的功能,如请求内容的缓存、修改、日志记录,以及响应内容的修改和增强。这对于避免重复处理请求或响应非常有用。在上面的案例中,OncePerRequestFilter 确保过滤器在一次请求的生命周期中只被调用一次,这对于处理请求和响应数据尤为重要,因为它避免了在请求转发或包含时重复处理数据。args): 调用对象的方法。请求日志记录:在请求处理之前和之后记录请求的详细信息,如请求头、请求参数和请求体,而不希望在请求转发时重复记录。
2024-12-18 17:22:05
74
原创 EasyExcel的AbstractColumnWidthStyleStrategy注入CellStyle不生效
还会再加入默认的 writeHandler, 再排序清理一次,看到这里大概可以猜到了,估计我们自定义的 writeHandler,经过排序清理之后,并不在最后,样式估计被后面的 writeHandler 覆盖了,我们看下排序清理后的结果。其中5和6是我们自定义的 writeHandler,下面7,8,9应该是默认的 writeHandler,这3个逐个看了下源码,最终在 FillStyleCellWriteHandler 类里发现确实有覆盖样式的操作,在 AbstractWriteHolder 里有用到。
2024-11-08 16:48:52
1081
原创 Java时区国际化统一为东八区时间 使用localdate获取本周、上周、本月、上月、本季度、上季度、本年、去年工具类
【代码】java国际化时间统一为东八区时间 使用localdate获取本周、上周、本月、上月、本季度、上季度、本年、去年工具类。
2024-10-22 11:28:41
226
原创 localdatetime获取本周、上周、本月、上月、本季度、上季度、本年、去年工具类
【代码】localdatetime获取本周、上周、本月、上月、本季度、上季度、本年、去年工具类。
2024-10-22 11:25:35
478
原创 Java时区国际化解决方案
当用户所在时区和服务器所在时区不一致时,会产生时区相关问题,如时间显示错误、程序取得的时间和数据库存储的时间不一致、定时任务的触发没有跟随用户当前的时区等等问题.自定义spring mvc的参数解析器,配置Converter<String, T>转换器实现参数转换。时间时区相互转化工具类。
2024-10-21 16:00:28
507
3
原创 JedisCluster分布式锁
private volatile String unlockSha1 = “”;private static final Long UNLOCK_SUCCESS_CODE = 1L;private static final String LOCK_SUCCESS_CODE = "ok";private static final String UNLOCK_LUA;private static final String BIZ = "redislock:biz:";private ThreadLo
2021-10-26 15:01:17
1378
原创 prometheus+grafana+全方位立体监控redis
Prometheus 概述Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们便将它独立成开源项目,并且有公司来运作。Google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus。现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。Prometheus基本原理是通过HTTP协
2021-02-07 16:12:40
3017
1
原创 redis 单台服务集群搭建
Redis6.0.6安装参考https://blog.csdn.net/codeSmart/article/details/113365680创建目录文件mkdir cluster_redismkdir 12000mkdir 13000mkdir 14000mkdir 15000mkdir 16000mkdir 17000每个12000、13000等目录下再创建mkdir datamkdir logsmkdir pid创建 cluster_confmkdir cluster_
2021-01-29 19:25:20
435
2
原创 redis 主从 复制搭建哨兵模式
主从复制搭建https://blog.csdn.net/codeSmart/article/details/113365680复制sentinel.conf配置cp sentinel.con sentinel1000.conf编辑sentinel.conf配置Master主节点(10.2.2.148)和Slave从节点(10.2.2.171,10.2.2.172)的 sentinel.conf 配置相同,内容如下:#不同主机可以绑定 或者绑定多个ipbind 10.2.2.148 127.
2021-01-29 17:24:58
181
原创 redis 主从 复制搭建 gcc scl安装升级
机器/redis准备10.2.2.148 master10.2.2.171 salve分别在data创建redis目录复制redis-6.0.6.tar.gz 至 reids目录tar -vxvf redis-6.0.6.tar.gz查看 gcc scl如果要redis-6.x以上版本,需要查看系统gcc版本是否大于4.8.5,否则会出现如下gcc版本问题,编译 redis-6.x,要求 C11 编译器,否则会遇到大量如下所示的错误:主要原因是从 redis-6.x 开始的多线程代码依
2021-01-29 10:07:33
271
原创 Redis的四种模式 单机 主从 哨兵 集群
概述Redis 是一个开源,高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的 Web 应用程序。它有三个主要特点,使其优越于其它键值数据存储系统:● Redis 将其数据库完全保存在内存中,仅使用磁盘进行持久化。● 与其它键值数据存储相比,Redis 有一组相对丰富的数据类型。● Redis 可以将数据复制到任意数量的从机中。...
2021-01-28 17:23:33
566
原创 JVM常用调优配置参数
开发过程中,通常会将-Xms 与-Xmx两个参数的配置相同的值,其目的是为了能够在java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小而浪费资源-Xms:表示java虚拟机堆区内存初始内存分配的大小,通常为操作系统可用内存的1/64大小即可,但仍需按照实际情况进行分配-Xmx:表示java虚拟机堆区内存可被分配的最大上限,通常为操作系统可用内存的1/4大小。-XX:newSize:表示新生代初始内存的大小,应该小于-Xms的值;-XX:MaxnewSize:表示新生代可被分配的内存的最大上
2020-12-30 18:12:18
507
1
原创 SpringBoot配置属性ssl/cookie/session/tomact
Server基本配置server.address指定server绑定的地址server.compression.enabled是否开启压缩,默认为false.server.compression.excluded-user-agents指定不压缩的user-agent,多个以逗号分隔,默认值为:text/html,text/xml,text/plain,text/cssserver.compression.mime-types指定要压缩的MIME type,多个以逗号分隔.server.c
2020-12-30 13:58:49
559
转载 java jdk 8 新功能 stream实现各种list操作
首先定义1个Apple对象:public class Apple { private Integer id; private String name; private BigDecimal money; private Integer num; public Apple(Integer id, String name, BigDecimal money, Integer num) {
2020-12-24 11:54:24
449
原创 mysql出现group by xxx错误
Error Code: 1055. Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘×××’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by需执行以下sqlSET sql_mode=
2020-12-15 18:07:22
248
原创 项目不断阶段发现错误成本计算
大型项目中,如果在架构阶段检测到需求错误,那么修复它成本通常是“在需求阶段检测并修复该错误”的3倍,如果在编码阶段检测到需求错误,修复成本在5至10倍,在系统测试阶段,成本是10倍,在发布之后,成本陟增为10至100倍(以在需求分析阶段检验并修复错误的成本为基数),对于小型项目管理成本较低,那么发布之后的修复成本在5-10倍...
2020-12-11 10:53:25
1535
原创 java数据格式校验,邮箱,手机号,身份证,邮政编码,url
/** * 邮箱验证 */ public static final String REGEX_EMAIL = "^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$"; /** * 座机验证 */ public static final String REGEX_TEL = "^\\d{3,4}-?\\d{7,9}$"; .
2020-12-10 17:54:58
1018
原创 java多线程工具类,多线程实现
public static BlockingQueue<Runnable> queue = new ArrayBlockingQueue<>(100); // 固定为100的线程队列 public static ThreadPoolExecutor executor = new ThreadPoolExecutor(4, 30, 4, TimeUnit.HOURS, queue); /* * * 实现 Runnable 接口类 */.
2020-12-10 17:46:06
174
原创 java 实现深度拷深度转换Bean<->Bean
<!--dozer--> <dependency> <groupId>com.github.dozermapper</groupId> <artifactId>dozer-core</artifactId> <version>6.2.0</version> </dependency> /**
2020-12-10 17:44:33
228
原创 java读取文件、配置文件
private static final String PATH_PREFIX = System.getProperty("user.dir") + File.separator + "config/json/"; private JsonLoadUtils() { } /** * 根据config/json中的文件名称加载文件 * * @param fileName 文件名称 * @return */ publ...
2020-12-10 17:39:38
236
转载 http模拟webservice请求并获取参数示例
org.apache.httpcomponents httpclient 4.5.6 org.apache.cxf cxf-spring-boot-starter-jaxws 3.2.4import net.sf.json.JSONObject;import org.apache.cxf.endpoint.Endpoint;import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClien...
2020-12-10 10:52:13
844
原创 SpringBoot修改启动端口server.port方式
以应用参数的方式java -jar XXXXX.jar --server.port=10000或以 JDK 参数的方式java -Dserver.port=10000 -jar XXXXX.jarjava -Dspring.application.json=’{“server.port”:10000}’ -jar XXXXX.jarjava -jar XXXXX.jar --spring.application.json=’{“server.port”:10000}’...
2020-08-12 17:33:45
2473
原创 map 排序按KEY VALUE
/** * java 8 version 按value排序 * * @param map 待排序的map * @param isDesc 是否降序,true:降序,false:升序 * @return 已排序map */ public static <K, V extends Comparable<? super V>> Map<K, V> sortByValue(Map<K, V> ma
2020-08-12 15:32:36
190
原创 JAVA 计算百分比
/** * 计算百分比 默认保留两位 * @param diliverNum 被除数 * @param queryMailNum 除数 * @return */ public static String percentageStr(double diliverNum,double queryMailNum){ return percentageStr(diliverNum,queryMailNum,2); } /**
2020-08-12 14:30:46
1028
原创 正则提取括号中的内容{} () []
提取{}内容public static Pattern pattern = Pattern.compile("(?<=\{)[^\}]+");public static void main(String[] args) {String content = “${name} ${value} “;Matcher m = pattern.matcher(content);while (m.find()) {System.out.println(” find: " + m.group() );
2020-08-07 17:20:43
1920
原创 Spring Boot启动会扫描以下位置的application文件
Spring Boot启动会扫描以下位置的application.properties或者application.yml文件作为spring boot的默认配置文件-file:/config/-file:./-classpath:/config/-classpath:/-以上是按照优先级从高到低的顺序,所有位置的文件都会被加载,高优先级的配置内容会覆盖低优先级配置内容。-我们也可以通过配置spring.config.location来改变默认配置。...
2020-08-04 15:54:44
606
原创 客观的衡量想法
战略咨询师巴德·卡德尔把工作分为三类:善于做的、喜欢做的和能赚钱的。同时他用了一张极其简单的图,高度概括了我们应该如何选择职业:善于做的 ∩ 希望做的 ∩ 能赚钱的
2020-07-29 09:36:01
251
原创 Web项目开发中常见安全问题防范
背景随着计算机网络技术的快速发展,Web应用技术在各个领域都得到了广泛的应用,但是由于不法分子针对Web应用程序相关安全漏洞的挖掘利用及恶意攻击手段的层出不穷,而与此同时国内Web应用开发人员水平参差不齐,很多开发人员安全意识淡薄,导致Web应用存在各种各样的安全漏洞,使得Web应用程序在给用户提供简便、快捷服务的同时,用户不得不为其自身可能存在的Web安全问题而担忧。主要针对Web项目中常见的安全问题进行深入的研究与分析,并对提出的各种安全问题给出了一些有效的解决方案。安全常见问题及防范1.输入检查
2020-07-23 14:43:06
857
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人