- 博客(257)
- 资源 (1)
- 收藏
- 关注
原创 RSA的公钥私钥
总结:签名:A调用B时,B要验证A是否合法,A必须使用自己的私钥签名;解密:A调用B时,B要验证A是否合法,B必须使用自己的私钥解密;
2024-10-30 17:33:54 501
原创 java.util.ConcurrentModificationException: null 的原因和解决方案
在 Java 编程中,当使用迭代器或者增强型 for 循环遍历集合或者映射时,有时可能会遇到 java.util.ConcurrentModificationException: null 的异常。这个异常通常在多线程环境下出现,意味着在迭代过程中,集合或者映射的结构发生了变化。本篇博客将为您解析这个异常的原因,并提供相应的解决方案。
2024-07-22 13:56:24 577
原创 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 441
原创 Lombok的hashCode方法
在继承关系中,父类的hashCode针对父类的所有属性进行运算,而子类的hashCode却只是针对子类才有的属性进行运算,立此贴提醒自己。callSuper = false,根据子类自身的字段值 来生成hashcode, 当两个子类对象比较时,只有子类对象的本身的字段值相同,父类字段值可以不同,callSuper = true,根据子类自身的字段值和从父类继承的字段值 来生成hashcode,当两个子。比较时,只有子类对象的本身的字段值和继承父类的字段值都相同,equals方法的返回值是true。
2024-06-27 15:25:28 683
原创 java中List的toArray()方法
toArray()介绍toArray()方法是List接口中提供的方法,用来实现List对象转换为数组对象的功能。toArray()方法有两种形式,无参方法和带泛型的方法,接下来给出例子。
2024-05-10 17:41:17 2301
原创 ArrayList的sublist的坑
而不是一个独立的副本。这意味着对原列表的修改会反映到子列表中,因为它们共享同一份。输出结果为:(c和c1输出的结果相同)通过以下代码进行理解。方法返回的是原列表的一个。通过以下代码进行理解。
2024-05-10 17:21:24 396
原创 Linux命令-数据重复-uniq命令
在日常工作中,我们常常会遇到需要处理大量数据的情况。而对于这些数据中的重复内容,我们又该如何快速去除呢?这时候,Linux系统下的uniq命令就可以派上用场了。本文将详细介绍Linux uniq命令的使用方法及其各种参数。
2024-04-08 14:20:58 720
原创 springboot项目yml文件中${}的使用
如果启动项目是传入了SERVER_PORT值时,会优先使用传入的值作为端口号启动项目,如果没有传该环境变量的值时,就使用9600作为项目端口号;可以看到虽然配置文件中虽然还是9600,但是项目启动的端口号是使用刚才配置的9601来启动的;项目启动时可以灵活的通过修改环境变量来替换配置中的值,如果没有传该环境变量时,就是用默认值;可以看到使用的默认值9600端口启动的项目;到此就将端口号换成了9601了,来看看效果。在idea中修改环境变量。没有进行环境变量配置。
2024-03-21 11:31:42 1347
原创 Druid连接池经常性断链问题
应用在使用Druid连接池访问数据库的时候,需要根据业务TPS和并发调整合适的配置,以利用Druid连接池的实现对连接的创建、保活和释放管理。当遇到类似断链的问题的时候,要从端到端的每个点进行排查分析,以定位到最终的原因,比如这次的负载均衡的配置是很难想到的。
2024-03-12 17:03:23 2412
原创 SpringBoot注解讲解(@ConfigurationProperties)
无论是@EnableConfigurationProperties + @ConfigurationProperties还是@Component+@ConfigurationProperties都能实现配置绑定。但是这两种方式在使用场景上有点区别。(1)如果使用的第三方包中的组件,这时我们无法在该组件上添加@Component,此时使用@EnableConfigurationProperties + @ConfigurationProperties实现配置绑定(2)在我们自定义的组件中,我个人觉得。
2024-02-22 17:46:48 2589 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 2687 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 1899
原创 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 2549 1
原创 父类的@Autowired字段被继承后能否被注入
子类中已经被注入的了父类的@Autowired 属性。父类:Animal.class。子类:Dog.class。
2023-12-04 11:31:11 639
原创 springboot整合 elasticjob 3.x 启动报错 Error creating bean with name zookeeperRegistryCenter
pom文件添加,指定版本, 5.1.0为高版本spring-boot-starter-parent推荐的版本。版本太低,无法推荐到合适的。
2023-12-04 10:36:45 799
原创 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 3612
原创 通配符?,*,**区别
:匹配0到多个字符,如果是在路径中如"/books/*"则是只会到达下一级目录的所有文件,是不包括“/”**:任意个字符,在路径如"/books/**",则是包括"/"所以能匹配books包下的所有包。
2023-11-09 14:50:27 409
原创 java.net.URISyntaxException: Illegal character in query at index
java.net.URISyntaxException: Illegal character in query at index
2023-10-31 16:54:37 620
原创 Arrays.asList() 返回的list不能add,remove
Arrays.asList()返回的是List,而且是一个定长的List,所以不能转换为,只能转换为AbstractList原因在于asList()方法返回的是某个的列表形式,返回的列表只是数组的另一个视图,而数组本身并没有消失,对列表的任何操作最终都反映在数组上. 所以不支持remove,add方法的。
2023-08-11 17:20:06 1357
原创 MySQL切分函数substring()的具体使用
MySQL字符串截取函数主要有:left(), right(), substring(), substring_index() 四种。各有其使用场景。今天,让我带大家花几分钟时间来熟知它们,Mark!
2023-07-19 15:32:23 1735
原创 linux下查看文件编码及修改编码
查看文件编码在Linux中查看文件编码可以通过以下几种方式:即可显示文件编码格式。如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可以在这样,就可以让vim自动识别文件编码(可以自动识别UTF-8或者GBK编码的文件),其实就是依照 fileencodings提供的编码列表尝试,如果没有找到合适的编码,就用latin-1(ASCII)编码打开。
2023-07-03 14:27:43 11683
原创 httpclient使用PoolingHttpClientConnectionManager,线程阻塞,setSoTimeout
多线程进行http调用接口,使用PoolingHttpClientConnectionManager,连接池。线程一直Running,无法关闭。对比配置,发现未配置PoolingHttpClientConnectionManager的超时。PoolingHttpClientConnectionManager配置信息。增加PoolingHttpClientConnectionManager。httpclient的RequestConfig 配置。注意while死循环。
2023-05-26 17:19:25 1595
原创 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 6477
原创 @Transactional事务类内调用不生效问题及解决办法
若同一类中的其他没有@Transactional 注解的方法内部调用有@Transactional 注解的方法,有@Transactional 注解的方法的事务被忽略,不会发生回滚。@Transactional 加于接口方法后, 被本类普通接口方法通过接口调用, 有效。@Transactional 加于接口方法后, 被它类的私有方法调用后, 有效。@Transactional 加于接口方法后, 被它类的接口方法调用, 有效。如上代码,在方法dosome()中抛出异常时,数据操作不会回滚。
2023-05-10 16:37:13 2486 2
原创 fastJson中JSONObject.toString(),JSONString.toJSONString()有啥不一样
toString()会调用toJSONString(),因此可以近似认为两者一样,使用的时候更加自信一点,不用疑惑。
2023-05-08 14:40:46 1540
原创 解决FastJson中“$ref 循环引用检测”的问题的几种方式
2.重复引用:上面的例子就是因为相同的订单对象出现在两个集合中,所以第二个orderList集合中直接返回的是$ref。接口返回的api通过fastjson将实体转化为json字符串时,在传输的数据中如果出现相同的对象,fastjson默认开启引用检测会将相同的对象写成引用的形式。如果循环引用的数据,前端用不到,那可以在实体类对应的字段加注解禁止序列化,这样前端就不会接收到这个字段的引用数据了。我们可以将List中的对象使用BeanUtil这样的工具,拷贝为新的对象,然后放到新的集合中返回。
2023-04-21 18:22:39 1550
原创 关于集合注入-@Autowired,@Resource,xml配置等实现
在我们开发工作中,一般是使用@Autowired,@Resource,xml配置等来实现单个实例等依赖注入。然而,当我们需要注入的是一个集合对象的时候,我们要怎么操作呢?实际的使用场景可能是这样的,我需要把某个接口的全部实现都注入到一个工厂实例中,然后根据条件返回对应的实例。那如何实现呢?话不多说,上代码以上两个用法,会将实现类TestInterface接口的所有实现类,注入到属性当中。如果是Map,则会把实例的名称赋值给map的key,实例对象复制给value。
2023-03-28 17:36:52 332
原创 FastJson序列化时过滤字段(属性)的方法总结
通过实现PropertyFilter接口的apply方法,来实现过滤属性,方法参数name即为字段的key,参数value即为字段的value,这种方式最强大,因为可以自定义具体过滤规则。在转JSON的时候,带上过滤器参数即可。的方式来包含指定的字段。在实体字段前面,使用transient关键字,表示该字段不参与序列化,转JSON字符串时就可以忽略掉该字段。FastJson序列化时(即转成JSON字符串时),可以过滤掉部分字段,或者只保留部分字段,方法有很多,下面举一些常用的方法。如果是JAVA8的话。
2023-03-28 10:47:59 5869
原创 lock()与lockInterruptibly()
另一种是线程被唤醒后检测到中断请求,则立即抛出中断异常,该操作导致方法结束。结论:ReentrantLock的中断和非中断加锁模式的区别在于:线程尝试获取锁操作失败后,在等待过程中,如果该线程被其他线程中断了,它是如何响应中断请求的。如果要求被中断线程不能参与锁的竞争操作,则此时应该使用lockInterruptibly方法,一旦检测到中断请求,立即返回不再参与锁的竞争并且取消锁获取操作。lock获取锁过程中,忽略了中断,在成功获取锁之后,再根据中断标识处理中断,即selfInterrupt中断自己。
2023-03-16 14:29:39 343
原创 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 676
原创 线程池的五种状态
当线程池的状态变为TIDYING状态时,会调用钩子函数terminated(),该方法在ThreadPoolExecutor中是空的,若用户想在线程池变为TIDYING时进行相应的处理,就需要重载terminated()函数实现。状态切换:当线程池状态为SHUTDOWN时,阻塞队列为空并且线程池中执行的任务也为空时,就会由SHUTDOWN->TIDYING。状态切换:线程池的初始状态为RUNNING。状态说明:线程池处于STOP状态时,不接收新任务,不处理已添加的任务,并且会中断正在处理的任务。
2023-01-31 17:07:17 580
原创 Every derived table must have its own alias
在做多表查询,或者查询的时候产生新的表的时候会出现这个错误:Every derived table must have its own alias
2022-10-21 19:20:28 4295
原创 map.keySet()修改会影响原map
map的keySet()方法返回的集合,对集合进行添加或者删除会影响到原来的集合map。进行removeAll操作会改变原有map集合。所以 在使用时需要注意。进行add操作会报错。
2022-10-14 13:41:19 676
MYCAT指南1.6.0
2018-02-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人