- 博客(263)
- 资源 (1)
- 收藏
- 关注
原创 Java线程池execute和submit的区别
ThreadPoolExecutor提供了两种方法来执行异步任务,分别是execute和submit,也是日常开发中经常使用的方法,那么它俩有什么区别呢?execute和submit都可以执行异步任务,但是有三大区别,分别是:1.语义上的区别,是否关心任务的执行情况和返回结果;2.遇到遇到是直接抛出还是先记录下来;3.异常线程是销毁重建还是继续复用。
2025-04-22 20:46:35
960
原创 Java线程池异常处理机制
线程池技术是服务器端开发中常用的技术。不论是直接还是间接,各种服务器端功能的执行总是离不开线程池的调度。关于线程池的各种文章,多数是关注任务的创建和执行方面,对于异常处理和任务取消(包括线程池关闭)关注的偏少。接下来,本文将从 Java 原生线程、两种主要线程池和这三方面介绍 Java 中线程的异常处理机制。
2025-04-22 15:25:42
594
原创 Spring AOP 中定义切入点 @target 与 @within 的区别
而 @within 不仅匹配该类,所有继承自 TestService 的类也会被匹配到。如果 TestService 标记了@MyAnnotation 注解,另外需要注意的是,它俩是用于匹配类的,不适用在。@target 则只匹配该类,仅匹配被设定注解标注的类,标注的类,以及它的所有子类。
2025-03-11 11:43:11
110
原创 MySQL使用date_format 查询不出数据
1:转换格式不一样.比如2023/08/03这种格式 就不能使用%Y-%m-%d转换,否则查询不出来。第二种 如果是varchar类型可以先将varchar 转date类型在转换想要的格式。MySQL使用date_format转换日期并不能查出数据.通下面过格式换的方式想查询2023年的数据, 但是查询不出数据。2:需要转换的数据并不是日期类型, 而是。第一中原因就需要自己仔细一些.同样格式错了肯定查询不出来。
2024-12-26 14:05:17
254
原创 人工智能时代如何重构你的核心竞争力(程序员篇)
在人工智能(AI)技术的浪潮下,尤其是AIGC(如ChatGPT、Midjourney、Claude等)大语言模型的崛起,程序员的工作领域正经历着翻天覆地的变化。AI辅助编程工具不仅革新了编码实践,还引发了关于AI是否会取代程序员角色的广泛讨论。然而,更现实的视角是,AI应被视为提升工作效率和创造力的伙伴,而非对手。在此背景下,程序员如何保持并提升自身的核心竞争力,成为了一个值得深入探讨的话题。
2024-11-26 21:12:11
500
1
原创 RSA的公钥私钥
总结:签名:A调用B时,B要验证A是否合法,A必须使用自己的私钥签名;解密:A调用B时,B要验证A是否合法,B必须使用自己的私钥解密;
2024-10-30 17:33:54
1620
原创 java.util.ConcurrentModificationException: null 的原因和解决方案
在 Java 编程中,当使用迭代器或者增强型 for 循环遍历集合或者映射时,有时可能会遇到 java.util.ConcurrentModificationException: null 的异常。这个异常通常在多线程环境下出现,意味着在迭代过程中,集合或者映射的结构发生了变化。本篇博客将为您解析这个异常的原因,并提供相应的解决方案。
2024-07-22 13:56:24
2460
原创 list.toArray(new String[0])详解
当预期的换算参数arr长度比列表中的元素数量更多或一致时,arr的值会转换列表中的元素值,后面如果有多余的空间,则剩余位置的值替换为null。此时toArray的返回值就是arr的值引用,跟执行String [] array = list.toArray(new String [1]);创建了一个长度为4,类型和arr一致(String),并为其引用赋值给数组。为了节省空间同时获取返回值为String[]的数组,我们使用。
2024-07-01 11:18:50
568
原创 Lombok的hashCode方法
在继承关系中,父类的hashCode针对父类的所有属性进行运算,而子类的hashCode却只是针对子类才有的属性进行运算,立此贴提醒自己。callSuper = false,根据子类自身的字段值 来生成hashcode, 当两个子类对象比较时,只有子类对象的本身的字段值相同,父类字段值可以不同,callSuper = true,根据子类自身的字段值和从父类继承的字段值 来生成hashcode,当两个子。比较时,只有子类对象的本身的字段值和继承父类的字段值都相同,equals方法的返回值是true。
2024-06-27 15:25:28
760
原创 java中List的toArray()方法
toArray()介绍toArray()方法是List接口中提供的方法,用来实现List对象转换为数组对象的功能。toArray()方法有两种形式,无参方法和带泛型的方法,接下来给出例子。
2024-05-10 17:41:17
4405
1
原创 ArrayList的sublist的坑
而不是一个独立的副本。这意味着对原列表的修改会反映到子列表中,因为它们共享同一份。输出结果为:(c和c1输出的结果相同)通过以下代码进行理解。方法返回的是原列表的一个。通过以下代码进行理解。
2024-05-10 17:21:24
431
原创 Linux命令-数据重复-uniq命令
在日常工作中,我们常常会遇到需要处理大量数据的情况。而对于这些数据中的重复内容,我们又该如何快速去除呢?这时候,Linux系统下的uniq命令就可以派上用场了。本文将详细介绍Linux uniq命令的使用方法及其各种参数。
2024-04-08 14:20:58
806
原创 springboot项目yml文件中${}的使用
如果启动项目是传入了SERVER_PORT值时,会优先使用传入的值作为端口号启动项目,如果没有传该环境变量的值时,就使用9600作为项目端口号;可以看到虽然配置文件中虽然还是9600,但是项目启动的端口号是使用刚才配置的9601来启动的;项目启动时可以灵活的通过修改环境变量来替换配置中的值,如果没有传该环境变量时,就是用默认值;可以看到使用的默认值9600端口启动的项目;到此就将端口号换成了9601了,来看看效果。在idea中修改环境变量。没有进行环境变量配置。
2024-03-21 11:31:42
1593
原创 Druid连接池经常性断链问题
应用在使用Druid连接池访问数据库的时候,需要根据业务TPS和并发调整合适的配置,以利用Druid连接池的实现对连接的创建、保活和释放管理。当遇到类似断链的问题的时候,要从端到端的每个点进行排查分析,以定位到最终的原因,比如这次的负载均衡的配置是很难想到的。
2024-03-12 17:03:23
3259
原创 SpringBoot注解讲解(@ConfigurationProperties)
无论是@EnableConfigurationProperties + @ConfigurationProperties还是@Component+@ConfigurationProperties都能实现配置绑定。但是这两种方式在使用场景上有点区别。(1)如果使用的第三方包中的组件,这时我们无法在该组件上添加@Component,此时使用@EnableConfigurationProperties + @ConfigurationProperties实现配置绑定(2)在我们自定义的组件中,我个人觉得。
2024-02-22 17:46:48
3444
1
原创 MySQL之json数据操作
当然了,5.7的版本只是最基础的版本,对于海量数据的效率是远远不够的,不过这些都在mysql8.0解决了。写到这里大家都发现了,我们查询的json都是整条json数据,这样看起来不是很方便,那么如果我们只想看json中的某个字段怎么办?事例:比如我们想针对id=2的数据新增一组:newData:新增的数据,修改deptName为新增的部门1。如果我们再执行以下刚才的那个sql,只是换了value,我们会看到里面的key值不会发生变化。如果我们要更新id=2数据中newData2的值为:更新的数据2。
2024-02-18 14:36:53
2938
1
原创 elastic-job VS xxl-job
Elastic-job 是由当当网基于quartz 二次开发之后的分布式调度解决方案 , 由两个相对独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。Elastic-Job-Lite定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务。Elastic-job主要的设计理念是无中心化的分布式定时调度框架,思路来源于Quartz的基于数据库的高可用方案。
2024-02-04 16:51:19
2070
原创 MySQL数据库中tinyint类型字段对应JAVA的boolean类型,true和false
MySQL里有四个常量:true,false,TRUE,FALSE分别代表1,0,1,0。所以由这里可以看出,当你使用tinyint[1]来存储超过0,1两个值以外的值,比如存储2,那这个2就是脏数据就用tinyint[4],tinyint[1]只适用于存储0和1两个值,也即真和假,true和false。一般的,咱们如果存的是纯数字的话,建议用tinyint,如果是字符串,且是固定长度的,建议用char,而enum的枚举字段,使用的使用需要慎重考虑,避免带来不必要的麻烦。2.在查询的sql语句上面做修改。
2023-12-26 09:56:38
2875
1
原创 父类的@Autowired字段被继承后能否被注入
子类中已经被注入的了父类的@Autowired 属性。父类:Animal.class。子类:Dog.class。
2023-12-04 11:31:11
717
原创 springboot整合 elasticjob 3.x 启动报错 Error creating bean with name zookeeperRegistryCenter
pom文件添加,指定版本, 5.1.0为高版本spring-boot-starter-parent推荐的版本。版本太低,无法推荐到合适的。
2023-12-04 10:36:45
905
原创 MySQL之BETWEEN AND包含范围查询总结
结论: 若datetime类型时,查询参数带时分秒,BETWEEN AND相当于 x >= y && x<=z。结论: 若datetime类型时,查询参数不带时分秒,BETWEEN AND相当于 x >= y && x<z。结论: 若date类型时,查询参数不带时分秒,BETWEEN AND相当于 x >= y && x<=z。参数yyyy-MM-dd格式时,只包含头,相当于x>=y && x<z。型,参数不带时分秒(yyyy-MM-dd)包含头尾,相当于:x>=y && x<=z。
2023-11-21 16:52:18
3906
原创 通配符?,*,**区别
:匹配0到多个字符,如果是在路径中如"/books/*"则是只会到达下一级目录的所有文件,是不包括“/”**:任意个字符,在路径如"/books/**",则是包括"/"所以能匹配books包下的所有包。
2023-11-09 14:50:27
526
原创 java.net.URISyntaxException: Illegal character in query at index
java.net.URISyntaxException: Illegal character in query at index
2023-10-31 16:54:37
667
原创 Arrays.asList() 返回的list不能add,remove
Arrays.asList()返回的是List,而且是一个定长的List,所以不能转换为,只能转换为AbstractList原因在于asList()方法返回的是某个的列表形式,返回的列表只是数组的另一个视图,而数组本身并没有消失,对列表的任何操作最终都反映在数组上. 所以不支持remove,add方法的。
2023-08-11 17:20:06
1432
原创 MySQL切分函数substring()的具体使用
MySQL字符串截取函数主要有:left(), right(), substring(), substring_index() 四种。各有其使用场景。今天,让我带大家花几分钟时间来熟知它们,Mark!
2023-07-19 15:32:23
2152
原创 linux下查看文件编码及修改编码
查看文件编码在Linux中查看文件编码可以通过以下几种方式:即可显示文件编码格式。如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可以在这样,就可以让vim自动识别文件编码(可以自动识别UTF-8或者GBK编码的文件),其实就是依照 fileencodings提供的编码列表尝试,如果没有找到合适的编码,就用latin-1(ASCII)编码打开。
2023-07-03 14:27:43
11921
原创 httpclient使用PoolingHttpClientConnectionManager,线程阻塞,setSoTimeout
多线程进行http调用接口,使用PoolingHttpClientConnectionManager,连接池。线程一直Running,无法关闭。对比配置,发现未配置PoolingHttpClientConnectionManager的超时。PoolingHttpClientConnectionManager配置信息。增加PoolingHttpClientConnectionManager。httpclient的RequestConfig 配置。注意while死循环。
2023-05-26 17:19:25
1866
1
原创 Java中split分割带空格的字符串 \t \n \r \f 及 \s 的区别
例:二、正确使用split来分割空白字符1、\\s而不是\s:反斜杠是一个特殊的字符,在字符串中开始转义序列。" \ "号的在正则中被赋予了特殊含义,这时,就需要在造成歧义的字符前加\,来告诉编译器:这个字符只是一个普通字符。所以当我们想在正则中匹配”\s”时,需要加上转义变成了“\\s"。2、\s和\t\n\r\f及' '的关系:空白字符是' '、'\t'、'\n'、'\r',
2023-05-26 15:45:39
6823
原创 @Transactional事务类内调用不生效问题及解决办法
若同一类中的其他没有@Transactional 注解的方法内部调用有@Transactional 注解的方法,有@Transactional 注解的方法的事务被忽略,不会发生回滚。@Transactional 加于接口方法后, 被本类普通接口方法通过接口调用, 有效。@Transactional 加于接口方法后, 被它类的私有方法调用后, 有效。@Transactional 加于接口方法后, 被它类的接口方法调用, 有效。如上代码,在方法dosome()中抛出异常时,数据操作不会回滚。
2023-05-10 16:37:13
2778
2
原创 fastJson中JSONObject.toString(),JSONString.toJSONString()有啥不一样
toString()会调用toJSONString(),因此可以近似认为两者一样,使用的时候更加自信一点,不用疑惑。
2023-05-08 14:40:46
1776
原创 解决FastJson中“$ref 循环引用检测”的问题的几种方式
2.重复引用:上面的例子就是因为相同的订单对象出现在两个集合中,所以第二个orderList集合中直接返回的是$ref。接口返回的api通过fastjson将实体转化为json字符串时,在传输的数据中如果出现相同的对象,fastjson默认开启引用检测会将相同的对象写成引用的形式。如果循环引用的数据,前端用不到,那可以在实体类对应的字段加注解禁止序列化,这样前端就不会接收到这个字段的引用数据了。我们可以将List中的对象使用BeanUtil这样的工具,拷贝为新的对象,然后放到新的集合中返回。
2023-04-21 18:22:39
1694
原创 关于集合注入-@Autowired,@Resource,xml配置等实现
在我们开发工作中,一般是使用@Autowired,@Resource,xml配置等来实现单个实例等依赖注入。然而,当我们需要注入的是一个集合对象的时候,我们要怎么操作呢?实际的使用场景可能是这样的,我需要把某个接口的全部实现都注入到一个工厂实例中,然后根据条件返回对应的实例。那如何实现呢?话不多说,上代码以上两个用法,会将实现类TestInterface接口的所有实现类,注入到属性当中。如果是Map,则会把实例的名称赋值给map的key,实例对象复制给value。
2023-03-28 17:36:52
366
原创 FastJson序列化时过滤字段(属性)的方法总结
通过实现PropertyFilter接口的apply方法,来实现过滤属性,方法参数name即为字段的key,参数value即为字段的value,这种方式最强大,因为可以自定义具体过滤规则。在转JSON的时候,带上过滤器参数即可。的方式来包含指定的字段。在实体字段前面,使用transient关键字,表示该字段不参与序列化,转JSON字符串时就可以忽略掉该字段。FastJson序列化时(即转成JSON字符串时),可以过滤掉部分字段,或者只保留部分字段,方法有很多,下面举一些常用的方法。如果是JAVA8的话。
2023-03-28 10:47:59
6690
MYCAT指南1.6.0
2018-02-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人