- 博客(248)
- 资源 (1)
- 收藏
- 关注
原创 springboot项目yml文件中${}的使用
如果启动项目是传入了SERVER_PORT值时,会优先使用传入的值作为端口号启动项目,如果没有传该环境变量的值时,就使用9600作为项目端口号;可以看到虽然配置文件中虽然还是9600,但是项目启动的端口号是使用刚才配置的9601来启动的;项目启动时可以灵活的通过修改环境变量来替换配置中的值,如果没有传该环境变量时,就是用默认值;可以看到使用的默认值9600端口启动的项目;到此就将端口号换成了9601了,来看看效果。在idea中修改环境变量。没有进行环境变量配置。
2024-03-21 11:31:42 322
原创 Druid连接池经常性断链问题
应用在使用Druid连接池访问数据库的时候,需要根据业务TPS和并发调整合适的配置,以利用Druid连接池的实现对连接的创建、保活和释放管理。当遇到类似断链的问题的时候,要从端到端的每个点进行排查分析,以定位到最终的原因,比如这次的负载均衡的配置是很难想到的。
2024-03-12 17:03:23 779
原创 SpringBoot注解讲解(@ConfigurationProperties)
无论是@EnableConfigurationProperties + @ConfigurationProperties还是@Component+@ConfigurationProperties都能实现配置绑定。但是这两种方式在使用场景上有点区别。(1)如果使用的第三方包中的组件,这时我们无法在该组件上添加@Component,此时使用@EnableConfigurationProperties + @ConfigurationProperties实现配置绑定(2)在我们自定义的组件中,我个人觉得。
2024-02-22 17:46:48 807 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 1170 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 983
原创 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 1090
原创 父类的@Autowired字段被继承后能否被注入
子类中已经被注入的了父类的@Autowired 属性。父类:Animal.class。子类:Dog.class。
2023-12-04 11:31:11 480
原创 springboot整合 elasticjob 3.x 启动报错 Error creating bean with name zookeeperRegistryCenter
pom文件添加,指定版本, 5.1.0为高版本spring-boot-starter-parent推荐的版本。版本太低,无法推荐到合适的。
2023-12-04 10:36:45 552
原创 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 1457
原创 通配符?,*,**区别
:匹配0到多个字符,如果是在路径中如"/books/*"则是只会到达下一级目录的所有文件,是不包括“/”**:任意个字符,在路径如"/books/**",则是包括"/"所以能匹配books包下的所有包。
2023-11-09 14:50:27 95
原创 java.net.URISyntaxException: Illegal character in query at index
java.net.URISyntaxException: Illegal character in query at index
2023-10-31 16:54:37 389
原创 Arrays.asList() 返回的list不能add,remove
Arrays.asList()返回的是List,而且是一个定长的List,所以不能转换为,只能转换为AbstractList原因在于asList()方法返回的是某个的列表形式,返回的列表只是数组的另一个视图,而数组本身并没有消失,对列表的任何操作最终都反映在数组上. 所以不支持remove,add方法的。
2023-08-11 17:20:06 1109
原创 MySQL切分函数substring()的具体使用
MySQL字符串截取函数主要有:left(), right(), substring(), substring_index() 四种。各有其使用场景。今天,让我带大家花几分钟时间来熟知它们,Mark!
2023-07-19 15:32:23 641
原创 linux下查看文件编码及修改编码
查看文件编码在Linux中查看文件编码可以通过以下几种方式:即可显示文件编码格式。如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可以在这样,就可以让vim自动识别文件编码(可以自动识别UTF-8或者GBK编码的文件),其实就是依照 fileencodings提供的编码列表尝试,如果没有找到合适的编码,就用latin-1(ASCII)编码打开。
2023-07-03 14:27:43 10379
原创 httpclient使用PoolingHttpClientConnectionManager,线程阻塞,setSoTimeout
多线程进行http调用接口,使用PoolingHttpClientConnectionManager,连接池。线程一直Running,无法关闭。对比配置,发现未配置PoolingHttpClientConnectionManager的超时。PoolingHttpClientConnectionManager配置信息。增加PoolingHttpClientConnectionManager。httpclient的RequestConfig 配置。注意while死循环。
2023-05-26 17:19:25 619
原创 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 5308
原创 @Transactional事务类内调用不生效问题及解决办法
若同一类中的其他没有@Transactional 注解的方法内部调用有@Transactional 注解的方法,有@Transactional 注解的方法的事务被忽略,不会发生回滚。@Transactional 加于接口方法后, 被本类普通接口方法通过接口调用, 有效。@Transactional 加于接口方法后, 被它类的私有方法调用后, 有效。@Transactional 加于接口方法后, 被它类的接口方法调用, 有效。如上代码,在方法dosome()中抛出异常时,数据操作不会回滚。
2023-05-10 16:37:13 1716 2
原创 fastJson中JSONObject.toString(),JSONString.toJSONString()有啥不一样
toString()会调用toJSONString(),因此可以近似认为两者一样,使用的时候更加自信一点,不用疑惑。
2023-05-08 14:40:46 1039
原创 解决FastJson中“$ref 循环引用检测”的问题的几种方式
2.重复引用:上面的例子就是因为相同的订单对象出现在两个集合中,所以第二个orderList集合中直接返回的是$ref。接口返回的api通过fastjson将实体转化为json字符串时,在传输的数据中如果出现相同的对象,fastjson默认开启引用检测会将相同的对象写成引用的形式。如果循环引用的数据,前端用不到,那可以在实体类对应的字段加注解禁止序列化,这样前端就不会接收到这个字段的引用数据了。我们可以将List中的对象使用BeanUtil这样的工具,拷贝为新的对象,然后放到新的集合中返回。
2023-04-21 18:22:39 1255
原创 关于集合注入-@Autowired,@Resource,xml配置等实现
在我们开发工作中,一般是使用@Autowired,@Resource,xml配置等来实现单个实例等依赖注入。然而,当我们需要注入的是一个集合对象的时候,我们要怎么操作呢?实际的使用场景可能是这样的,我需要把某个接口的全部实现都注入到一个工厂实例中,然后根据条件返回对应的实例。那如何实现呢?话不多说,上代码以上两个用法,会将实现类TestInterface接口的所有实现类,注入到属性当中。如果是Map,则会把实例的名称赋值给map的key,实例对象复制给value。
2023-03-28 17:36:52 271
原创 FastJson序列化时过滤字段(属性)的方法总结
通过实现PropertyFilter接口的apply方法,来实现过滤属性,方法参数name即为字段的key,参数value即为字段的value,这种方式最强大,因为可以自定义具体过滤规则。在转JSON的时候,带上过滤器参数即可。的方式来包含指定的字段。在实体字段前面,使用transient关键字,表示该字段不参与序列化,转JSON字符串时就可以忽略掉该字段。FastJson序列化时(即转成JSON字符串时),可以过滤掉部分字段,或者只保留部分字段,方法有很多,下面举一些常用的方法。如果是JAVA8的话。
2023-03-28 10:47:59 4830
原创 lock()与lockInterruptibly()
另一种是线程被唤醒后检测到中断请求,则立即抛出中断异常,该操作导致方法结束。结论:ReentrantLock的中断和非中断加锁模式的区别在于:线程尝试获取锁操作失败后,在等待过程中,如果该线程被其他线程中断了,它是如何响应中断请求的。如果要求被中断线程不能参与锁的竞争操作,则此时应该使用lockInterruptibly方法,一旦检测到中断请求,立即返回不再参与锁的竞争并且取消锁获取操作。lock获取锁过程中,忽略了中断,在成功获取锁之后,再根据中断标识处理中断,即selfInterrupt中断自己。
2023-03-16 14:29:39 281
原创 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 420
原创 线程池的五种状态
当线程池的状态变为TIDYING状态时,会调用钩子函数terminated(),该方法在ThreadPoolExecutor中是空的,若用户想在线程池变为TIDYING时进行相应的处理,就需要重载terminated()函数实现。状态切换:当线程池状态为SHUTDOWN时,阻塞队列为空并且线程池中执行的任务也为空时,就会由SHUTDOWN->TIDYING。状态切换:线程池的初始状态为RUNNING。状态说明:线程池处于STOP状态时,不接收新任务,不处理已添加的任务,并且会中断正在处理的任务。
2023-01-31 17:07:17 525
原创 Every derived table must have its own alias
在做多表查询,或者查询的时候产生新的表的时候会出现这个错误:Every derived table must have its own alias
2022-10-21 19:20:28 3137
原创 map.keySet()修改会影响原map
map的keySet()方法返回的集合,对集合进行添加或者删除会影响到原来的集合map。进行removeAll操作会改变原有map集合。所以 在使用时需要注意。进行add操作会报错。
2022-10-14 13:41:19 523
原创 CompletableFuture实现线程池结果
向线程池中提交任务的submit方法不是阻塞方法,而Future.get方法是一个阻塞方法,当submit提交多个任务时,只有所有任务都完成后,才能使用get按照任务的提交顺序得到返回结果。Future虽然可以实现获取异步执行结果的需求,但是它没有提供通知的机制,要么使用阻塞,在future.get()的地方等待future返回的结果,这时又变成同步操作;要么使用isDone()轮询地判断Future是否完成,这样会耗费CPU的资源
2022-10-10 11:43:33 2403
原创 springboot的post application/x-www-form-urlencoded请求大小2MB限制
Springboot默认web容器是tomcat,tomcat关于post请求参数长度有默认限制为2MB
2022-09-28 18:24:34 1602
原创 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 6982
原创 shutdown、shutdownNow方法的理解
1、当线程池调用该方法时,线程池的状态则立刻变成SHUTDOWN状态。此时,则不能再往线程池中添加任何任务,否则将会抛出RejectedExecutionException异常。但是,此时线程池不会立刻退出,直到添加到线程池中的任务都已经处理完成,才会退出。...
2022-08-17 14:33:08 1689
原创 Java 中Duplicate key 异常
我这里使用的是两个key 相同时,保留先存进去的那个元素。相比第一个方法,主要就是我们要去实现一个策略,来决定key相同时,元素如何保留。有这样两个方法,出错的地方我们是用的第一个方法,对于可能存在重复key的转换中,我们要使用第二个方法。这个异常就是说,转换map的过程中,有两个key是banana的元素,不知道怎么取舍,因此产生异常。Java中Duplicate key 异常解决。解决办法就是我们去提供这样一个策略。...
2022-08-10 16:05:23 9798
原创 java代理
代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法。...
2022-08-07 11:45:00 143
原创 Java的反射
1)Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。本质是JVM得到类对象之后,再通过类对象进行反编译,从而获取对象的各种信息。(2)Java属于先编译再运行的语言,程序中对象的类型在编译期就确定下来了,而当程序在运行时可能需要动态加载某些类,这些类因为之前用不到,所以没有被加载到JVM。通过反射,可以在运行时动态地创建对象并调用其属性,不需要提前在编译期知道运行的对象是谁反射:能够分析类信息的能力叫做反射,那什么是类的信息?...
2022-08-05 13:00:00 122
原创 静态代理和动态代理的区别是什么
相比于静态代理,动态代理在创建代理对象上更加的灵活,动态代理类的字节码在程序运行时,由Java反射机制动态产生。3、动态代理是实现JDK里的InvocationHandler接口的invoke方法,但注意的是代理的是接口,也就是你的业务类必须要实现接口,通过Proxy里的newProxyInstance得到代理对象。4、还有一种动态代理CGLIB,代理的是类,不需要业务类继承接口,通过派生的子类来实现代理。2、静态代理事先知道要代理的是什么,而动态代理不知道要代理什么东西,只有在运行时才知道。...
2022-08-04 14:39:52 1312
MYCAT指南1.6.0
2018-02-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人