自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(254)
  • 资源 (1)
  • 收藏
  • 关注

原创 java.util.ConcurrentModificationException: null 的原因和解决方案

在 Java 编程中,当使用迭代器或者增强型 for 循环遍历集合或者映射时,有时可能会遇到 java.util.ConcurrentModificationException: null 的异常。这个异常通常在多线程环境下出现,意味着在迭代过程中,集合或者映射的结构发生了变化。本篇博客将为您解析这个异常的原因,并提供相应的解决方案。

2024-07-22 13:56:24 447

原创 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 398

原创 Lombok的hashCode方法

在继承关系中,父类的hashCode针对父类的所有属性进行运算,而子类的hashCode却只是针对子类才有的属性进行运算,立此贴提醒自己。callSuper = false,根据子类自身的字段值 来生成hashcode, 当两个子类对象比较时,只有子类对象的本身的字段值相同,父类字段值可以不同,callSuper = true,根据子类自身的字段值和从父类继承的字段值 来生成hashcode,当两个子。比较时,只有子类对象的本身的字段值和继承父类的字段值都相同,equals方法的返回值是true。

2024-06-27 15:25:28 652

原创 java中List的toArray()方法

toArray()介绍toArray()方法是List接口中提供的方法,用来实现List对象转换为数组对象的功能。toArray()方法有两种形式,无参方法和带泛型的方法,接下来给出例子。

2024-05-10 17:41:17 1906

原创 ArrayList的sublist的坑

而不是一个独立的副本。这意味着对原列表的修改会反映到子列表中,因为它们共享同一份。输出结果为:(c和c1输出的结果相同)通过以下代码进行理解。方法返回的是原列表的一个。通过以下代码进行理解。

2024-05-10 17:21:24 383

原创 Linux命令-数据重复-uniq命令

在日常工作中,我们常常会遇到需要处理大量数据的情况。而对于这些数据中的重复内容,我们又该如何快速去除呢?这时候,Linux系统下的uniq命令就可以派上用场了。本文将详细介绍Linux uniq命令的使用方法及其各种参数。

2024-04-08 14:20:58 689

原创 springboot项目yml文件中${}的使用

如果启动项目是传入了SERVER_PORT值时,会优先使用传入的值作为端口号启动项目,如果没有传该环境变量的值时,就使用9600作为项目端口号;可以看到虽然配置文件中虽然还是9600,但是项目启动的端口号是使用刚才配置的9601来启动的;项目启动时可以灵活的通过修改环境变量来替换配置中的值,如果没有传该环境变量时,就是用默认值;可以看到使用的默认值9600端口启动的项目;到此就将端口号换成了9601了,来看看效果。在idea中修改环境变量。没有进行环境变量配置。

2024-03-21 11:31:42 1271

原创 Druid连接池经常性断链问题

应用在使用Druid连接池访问数据库的时候,需要根据业务TPS和并发调整合适的配置,以利用Druid连接池的实现对连接的创建、保活和释放管理。当遇到类似断链的问题的时候,要从端到端的每个点进行排查分析,以定位到最终的原因,比如这次的负载均衡的配置是很难想到的。

2024-03-12 17:03:23 2226

原创 SpringBoot注解讲解(@ConfigurationProperties)

无论是@EnableConfigurationProperties + @ConfigurationProperties还是@Component+@ConfigurationProperties都能实现配置绑定。但是这两种方式在使用场景上有点区别。(1)如果使用的第三方包中的组件,这时我们无法在该组件上添加@Component,此时使用@EnableConfigurationProperties + @ConfigurationProperties实现配置绑定(2)在我们自定义的组件中,我个人觉得。

2024-02-22 17:46:48 2193 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 2622 1

原创 MySQL JSON_VALID() 函数

MySQL函数返回0 和 1 来指示给定的参数是否是一个有效的 JSON文档。

2024-02-18 11:44:33 1266

原创 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 1846

原创 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 2476 1

原创 父类的@Autowired字段被继承后能否被注入

子类中已经被注入的了父类的@Autowired 属性。父类:Animal.class。子类:Dog.class。

2023-12-04 11:31:11 621

原创 springboot整合 elasticjob 3.x 启动报错 Error creating bean with name zookeeperRegistryCenter

pom文件添加,指定版本, 5.1.0为高版本spring-boot-starter-parent推荐的版本。版本太低,无法推荐到合适的。

2023-12-04 10:36:45 768

原创 mysql的联合索引最左匹配原则问题

在遇到范围查询(如 >、=、

2023-11-22 16:34:33 526

原创 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 3411

原创 通配符?,*,**区别

:匹配0到多个字符,如果是在路径中如"/books/*"则是只会到达下一级目录的所有文件,是不包括“/”**:任意个字符,在路径如"/books/**",则是包括"/"所以能匹配books包下的所有包。

2023-11-09 14:50:27 360

原创 java.net.URISyntaxException: Illegal character in query at index

java.net.URISyntaxException: Illegal character in query at index

2023-10-31 16:54:37 593

原创 Arrays.asList() 返回的list不能add,remove

Arrays.asList()返回的是List,而且是一个定长的List,所以不能转换为,只能转换为AbstractList原因在于asList()方法返回的是某个的列表形式,返回的列表只是数组的另一个视图,而数组本身并没有消失,对列表的任何操作最终都反映在数组上. 所以不支持remove,add方法的。

2023-08-11 17:20:06 1339

原创 MySQL切分函数substring()的具体使用

MySQL字符串截取函数主要有:left(), right(), substring(), substring_index() 四种。各有其使用场景。今天,让我带大家花几分钟时间来熟知它们,Mark!

2023-07-19 15:32:23 1685

原创 MySQL表关联更新

MySQL表关联更新

2023-07-19 14:26:17 744

原创 linux下查看文件编码及修改编码

查看文件编码在Linux中查看文件编码可以通过以下几种方式:即可显示文件编码格式。如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可以在这样,就可以让vim自动识别文件编码(可以自动识别UTF-8或者GBK编码的文件),其实就是依照 fileencodings提供的编码列表尝试,如果没有找到合适的编码,就用latin-1(ASCII)编码打开。

2023-07-03 14:27:43 11631

原创 sed命令对文件内的指定字符串进行替换

sed命令对文件内的指定字符串进行替换

2023-06-08 11:31:19 9578

原创 httpclient使用PoolingHttpClientConnectionManager,线程阻塞,setSoTimeout

多线程进行http调用接口,使用PoolingHttpClientConnectionManager,连接池。线程一直Running,无法关闭。对比配置,发现未配置PoolingHttpClientConnectionManager的超时。PoolingHttpClientConnectionManager配置信息。增加PoolingHttpClientConnectionManager。httpclient的RequestConfig 配置。注意while死循环。

2023-05-26 17:19:25 1407

原创 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 6390

原创 @Transactional事务类内调用不生效问题及解决办法

若同一类中的其他没有@Transactional 注解的方法内部调用有@Transactional 注解的方法,有@Transactional 注解的方法的事务被忽略,不会发生回滚。@Transactional 加于接口方法后, 被本类普通接口方法通过接口调用, 有效。@Transactional 加于接口方法后, 被它类的私有方法调用后, 有效。@Transactional 加于接口方法后, 被它类的接口方法调用, 有效。如上代码,在方法dosome()中抛出异常时,数据操作不会回滚。

2023-05-10 16:37:13 2412 2

原创 fastJson中JSONObject.toString(),JSONString.toJSONString()有啥不一样

toString()会调用toJSONString(),因此可以近似认为两者一样,使用的时候更加自信一点,不用疑惑。

2023-05-08 14:40:46 1478

原创 解决FastJson中“$ref 循环引用检测”的问题的几种方式

2.重复引用:上面的例子就是因为相同的订单对象出现在两个集合中,所以第二个orderList集合中直接返回的是$ref。接口返回的api通过fastjson将实体转化为json字符串时,在传输的数据中如果出现相同的对象,fastjson默认开启引用检测会将相同的对象写成引用的形式。如果循环引用的数据,前端用不到,那可以在实体类对应的字段加注解禁止序列化,这样前端就不会接收到这个字段的引用数据了。我们可以将List中的对象使用BeanUtil这样的工具,拷贝为新的对象,然后放到新的集合中返回。

2023-04-21 18:22:39 1506

原创 关于集合注入-@Autowired,@Resource,xml配置等实现

在我们开发工作中,一般是使用@Autowired,@Resource,xml配置等来实现单个实例等依赖注入。然而,当我们需要注入的是一个集合对象的时候,我们要怎么操作呢?实际的使用场景可能是这样的,我需要把某个接口的全部实现都注入到一个工厂实例中,然后根据条件返回对应的实例。那如何实现呢?话不多说,上代码以上两个用法,会将实现类TestInterface接口的所有实现类,注入到属性当中。如果是Map,则会把实例的名称赋值给map的key,实例对象复制给value。

2023-03-28 17:36:52 320

原创 FastJson序列化时过滤字段(属性)的方法总结

通过实现PropertyFilter接口的apply方法,来实现过滤属性,方法参数name即为字段的key,参数value即为字段的value,这种方式最强大,因为可以自定义具体过滤规则。在转JSON的时候,带上过滤器参数即可。的方式来包含指定的字段。在实体字段前面,使用transient关键字,表示该字段不参与序列化,转JSON字符串时就可以忽略掉该字段。FastJson序列化时(即转成JSON字符串时),可以过滤掉部分字段,或者只保留部分字段,方法有很多,下面举一些常用的方法。如果是JAVA8的话。

2023-03-28 10:47:59 5728

原创 lock()与lockInterruptibly()

另一种是线程被唤醒后检测到中断请求,则立即抛出中断异常,该操作导致方法结束。结论:ReentrantLock的中断和非中断加锁模式的区别在于:线程尝试获取锁操作失败后,在等待过程中,如果该线程被其他线程中断了,它是如何响应中断请求的。如果要求被中断线程不能参与锁的竞争操作,则此时应该使用lockInterruptibly方法,一旦检测到中断请求,立即返回不再参与锁的竞争并且取消锁获取操作。lock获取锁过程中,忽略了中断,在成功获取锁之后,再根据中断标识处理中断,即selfInterrupt中断自己。

2023-03-16 14:29:39 320

原创 Lombok中@Data注解的坑

出现关键原因在于@Data注解默认包含@EqualsAndHashCode注解,重写了hashCode和equals方法,导致了所有属性相同情况下hashcode相同,所以hashmap认为是同一个key。@Data内部包含多个针对实体类的注解,所以建议大家尽量按需使用,如果单独只是为了少写get和set方法只用@Getter和@Setter就行。问题来了:两个对象地址不一样,但是用map保存的时候,hashMap却判断key相等了,所以size执行出来是1。开发遇到@Data注解的大坑。

2023-03-06 11:55:55 644

原创 线程池的五种状态

当线程池的状态变为TIDYING状态时,会调用钩子函数terminated(),该方法在ThreadPoolExecutor中是空的,若用户想在线程池变为TIDYING时进行相应的处理,就需要重载terminated()函数实现。状态切换:当线程池状态为SHUTDOWN时,阻塞队列为空并且线程池中执行的任务也为空时,就会由SHUTDOWN->TIDYING。状态切换:线程池的初始状态为RUNNING。状态说明:线程池处于STOP状态时,不接收新任务,不处理已添加的任务,并且会中断正在处理的任务。

2023-01-31 17:07:17 565

原创 Column ‘‘ in field list is a ambiguous

field list is a ambiguous

2022-11-04 15:37:46 534

原创 Every derived table must have its own alias

在做多表查询,或者查询的时候产生新的表的时候会出现这个错误:Every derived table must have its own alias

2022-10-21 19:20:28 4148

原创 map.keySet()修改会影响原map

map的keySet()方法返回的集合,对集合进行添加或者删除会影响到原来的集合map。进行removeAll操作会改变原有map集合。所以 在使用时需要注意。进行add操作会报错。

2022-10-14 13:41:19 661

原创 CompletableFuture实现线程池结果

向线程池中提交任务的submit方法不是阻塞方法,而Future.get方法是一个阻塞方法,当submit提交多个任务时,只有所有任务都完成后,才能使用get按照任务的提交顺序得到返回结果。Future虽然可以实现获取异步执行结果的需求,但是它没有提供通知的机制,要么使用阻塞,在future.get()的地方等待future返回的结果,这时又变成同步操作;要么使用isDone()轮询地判断Future是否完成,这样会耗费CPU的资源

2022-10-10 11:43:33 2662

原创 springboot的post application/x-www-form-urlencoded请求大小2MB限制

Springboot默认web容器是tomcat,tomcat关于post请求参数长度有默认限制为2MB

2022-09-28 18:24:34 2019

原创 No query specified(Mysql数据库报错)

虽然可以正确执行,但是也出现了报错。经过一番查找和尝试发现当命令结尾不加分号的时候不报错,因此出现此错误的原因是因为执行命令: show create procedure protest.pro_test1\G;的时候,多加了一个“;可以以此类推,不管执行什么命令,\G后不用加分号,否则就会出现此类错误。我在使用语句 show create procedure protest.pro_test1\G;查询存储过程的时候出现了错误: ERROR: No query specified。

2022-08-24 17:34:11 7424

MYCAT指南1.6.0

MYACT权威指南1.6.0 pdf文档 当大批软件工程师开始觉醒,用互联网思维思考和规划自己的人生,第四次工业革命才拉开序幕 —— 《 Mycat 宣言》 Mycat最早的版本完成于 2013年年底,实现于雾霾中的北京城。 Mycat要解决的第一个问题就是要将 Cobar 后端实现为非阻塞模式。将Cobar 从“个人版”提升到真正的 “企业版”。据未经证实的渠道了解,非开源的Cobar内部版本已经实现后端 NIO,但是并没有开源出来。于是 Mycat注定要诞生了,尽管可能不会是Leader-us发起的。

2018-02-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除