- 博客(23)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 String和new String()、int Integer 和new Integer()的区别
String字符串对象,是一个封装char[]数组的对象,并且字符串是不可变的(用final修饰的)。1、 如果是第一次使用字符串,java会在字符串常量池创建一个对象。2、 再次使用相同的内容时,会直接访问常量池中存在的对象。其实字符串底层维护了一个char[]char[] c = {‘a’,‘b’,‘c’,‘d’};String s = new String©;//堆中分配新的内存System.out.println(s);String s2=“abcd”;//常量池中分配新的内存
2020-12-02 21:10:42
322
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 RabbitMQ消息中间件
RabbitMQ的基本概念RabbitMQ(rabbit公司开发的message queue)是一种消息中间件,用于处理来自客户端的异步消息。服务端将要发送的消息放入队列池中。接收端可以根据RabbitMQ配置的转发机制接受服务端发来的消息。RabbitMQ依据指定的转发规则进行消息的转发、缓存和持久化操作,主要在多服务期间或单服务器的子系统间进行通信,是分布式系统标准的配置。上传离线安装包rabbitmq-install 目录上传到 /root切换到rabbitmq-install目录cd ra
2020-12-02 19:27:02
231
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 JDK JRE JVM关系、单例设计模型中懒汉式与饿汉式
JDK JRE JVM关系?JDK–Java Development Kit是针对java开发员的产品,是整个java的核心,包括java运行环境JRE、java工具和java基础类库。JRE–Java Runtime Environment是针对JAVA的运行时环境,包含JVM和java核心类库。JVM–Java Virtual Machine,java虚拟机的缩写,是整个java实现跨平台的最核心的部分,能够运行java写的软件程序。JDK > JRE >JVMJDK = JRE+
2020-12-01 09:48:02
118
原创 类加载器种类及双亲委派机制
于是就引入了ThreadContextClassLoader(线程上下文加载器,不使用线程上下文加载器默认使用的是应用程序类加载器),使用应用程序类加载器来破坏双亲委派机制加载第三方类。当类加载器收到类加载请求,自己不会先加载类,而是委托给自己的父类加载器去加载类,当父类加载器还有父类加载器,那么进一步向上委托,最终将加载请求交给启动类加载器(BootStrap ClassLoader)。使用线程上下文类加载器更改类的加载器的种类,可以直接使用上下文加载器、也可以设置自定义的加载器为上下文加载器;
2024-07-20 11:39:30
528
1
原创 mysql主从复制过程、主从复制方式、主从复制延迟优化
2.主库会用log dump线程将binlog日志传输给从库,从库会创建一个I/O线程读取binlog,然后先写入relay log中继日志;举个例子,用户发布评论场景,会先写入主库,再异步调用审核评论模块,审核模块会拿着id去从库中查询但查询不到,因为从库还未同步主库数据;1.主库在收到客户端提交事务的请求,先写入binlog,再提交事务,将日志刷到磁盘中,返回给客户端成功;1)数据冗余:在异步调用审核模块,就将所需数据一并传输,但要注意数据大小,过大数据会占用网络带宽和时间;工作中应用很少,性能太差;
2024-07-20 11:33:34
388
原创 @JsonFormat反序列化注解
作用:@JsonFormat注解是一个时间格式化注解,比如我们存储在mysql中的数据是date类型的,当我们读取出来封装在实体类中的时候,就会变成英文时间格式,而不是yyyy-MM-dd HH:mm:ss这样的中文时间,因此我们需要用到JsonFormat注解来格式化我们的时间,传给前台。作用:DTO中,会将数据库中获取的数字类型数据转换成string类型,保持精度(前台直接接受数值类型,会出现精度丢失)@JsonFormat反序列化注解的作用。
2023-10-27 16:16:21
550
原创 DBMS_REDEFINITION的在线重定义功能将非分区表置为分区表
非分区表转换为分区表的传统的方式,是建一个分区表,然后将原表数据导入进去,然后修改原表和分区表表名,线上应用就会处于不可用状态,这种方式对于24*7运行的应用来说是不可取的。另外,它有一个非常强大的功能-“高可用”,应用运行同时切换表,但是也并不是完全的高可用,(添加或删除字段,改变字段类型,普通表重定义表为分区表,分区表重定义表为普通表等等)–1).重定义表必须有主键值,检查是否可以执行在线重定义,若返回错误的话说明不能执行。–3)、结束在线同步,结束重定义 (上一步数据过去了,但是索引什么的还没过去)
2023-10-27 16:09:43
218
1
原创 lag() over(partition by ... order by ...)与 lead() over(partition by ... order by ...)的区别
例子:SELECT employee_id,name,department_id,salary,lead(salary,1) over(PARTITION by department_id order by salary asc) as number1 from employees;该函数的意思是分组排序后,取同组下一行的规定列值。该函数的意思是分组排序后,取同组上一行的规定列值。
2023-02-13 16:10:05
1664
2
原创 Docker安装mysql与redis
1、docker 安装mysql:Linux安装一个Mysql占用3306端口,然后再将其内的docker容器中也安装上 mysql时:#–name指定容器名字 -v目录挂载 -p指定端口映射 -e设置mysql参数 -d后台运行sudo docker run --name mysql-v /usr/local/mysql/data:/var/lib/mysql-v /usr/local/mysql/conf:/etc/mysql/conf.d-v /usr/local/mysql/log:/
2022-03-31 14:23:50
2107
原创 oracle的SQL循环函数、存储过程、自定义函数、sequence
SQL循环函数DECLAREi NUMBER := 100 ;–(定不定义都可)beginfor i 0 …10 LOOPinsert into ucs.student(id,name,age) values(ucs.sequence.nextval,i,i);–批量造数据end loop;commit;end;创建sequence:create sequence ucs.seqtestminvalue 1 --增长最小值maxvalue 999999 --增长最大值,也可以设置
2022-03-21 14:38:47
1925
原创 JAVA手写注解示例
教研工具类:package com.cmbchina.ams.cloud.oms.common.util;import com.alibaba.excel.annotation.ExcelProperty;import com.alibaba.excel.context.AnalysisContext;import com.cmbchina.ams.cloud.oms.common.validation.*;import org.apache.commons.lang3.StringUtils;
2022-02-11 16:49:09
651
原创 MYSQL专题: 脏读、幻读、不可重复读区别及解决方案
并发场景下事务会存在那些数据问题?并发场景下mysql会出现脏读、幻读、不可重复读问题;脏读(dirty read):某个事务正在修改数据但未提交,此时另一个事务去读取此条数据,后一个事务读取的不是最新的数据,是错误的。解决办法:读取时加排它锁(select…for update),事务提交才会释放锁,修改时加共享锁(update …lock in share mode)。加排它锁后,不能对该条数据再加锁,能查询但不能更改数据。mysql InnoDB引擎默认的修改数据语句,update,del
2021-08-25 17:01:31
16807
4
原创 XML转化为具体的实体类
**大体思路:**先将报文转化为List< HashMap<String, Object>>集合,在将HashMap转化为具体实体类。entity:@Datapublic class ClearRoutingClearTask {private String index;private String taskType;private Long priority;}xml报文:<?xml version=\"1.0\" encoding=\"UTF-8\"
2021-08-12 15:48:50
3584
原创 将Object对象转化为指定的实体类对象
将Object对象转化为指定的实体类对象Event mes = new Event<>();mes.setMsg("<FILE_TYPE>9968</FILE_TYPE><BEGIN_DATE>20201214</BEGIN_DATE>");mes.setSSourceUserID(“T_HUARUNXT02”);mes.setSSourceAppID(“gms666”);//将对象转化为字符串String mesString = JS
2021-03-05 17:23:54
7353
原创 List集合拆分成多个集合
List集合拆分成多个集合List集合拆分成多个集合List集合拆分成多个集合实际开发中我遇到的一个问题,上万条数据批量导入数据库时,直接一个List集合导入数据会使SQL过长,系统直接报错,所以我们可以将一个List集合拆分成若干个集合分批导入数据库。以下是具体代码实现:public class Test {public static void main(String[] args) { System.out.println("hello"); List<String&
2021-01-22 15:42:04
1412
原创 AOP详解(实现步骤)
AOP在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。AOP公式:AOP(切面)=通知方法(5种)+切入点表达式(4种)通知方法:1.before
2020-12-10 16:13:05
1215
原创 String StringBuilder和StringBuffer的区别
StringBuilder和StringBuffer的区别1、 在线程安全上,–StringBuffer是旧版本就提供的,线程安全的。@since JDK1.0–StringBuilder是jdk1.5后产生,线程不安全的。@since 1.52、 在执行效率上,StringBuilder > StringBuffer > String3、 源码体现:本质上都是在调用父类抽象类AbstractStringBuilder来干活,只不过Buffer把代码加了同步关键字,使得
2020-12-04 09:42:56
76
原创 SpringCloud微服务全家桶
SpringCloud工具集SpringCloud是一个工具集,集成多个工具来解决微服务中的各种问题,SpringCloud可以称之为微服务全家桶。1.远程调用:RestTemplate2.负载均衡:Ribbon3.重试: Ribbon4.降级、熔断、限流:Hystrix5.监控:Hystrix Dashboard、Turbine、Sleuth、Zipkin6.配置中心:Config server注册中心EurekaEureka整体上分为两个主体:Eureka Server、Eureka
2020-11-30 15:39:25
331
1
原创 springmvc和springboot的区别
spring最初开始利用的是AOP和DI来解耦应用组件。后来感觉这种模式挺好的,于是springmvc框架就此出现,后来为了简化工作流程,减少springmvc的繁琐的配置,于是开发了springboot。springmvc是spring的一个模块,它提供了一种轻度耦合的方式来开发web应用。springmvc是一个web框架,通过DispatcherServlet、ModelAndView和View Resolver,开发web应用变得简单。spring框架需要进行大量的配置,springboot引入
2020-11-27 09:19:30
523
原创 缓存穿透、缓存击穿、缓存雪崩
缓存穿透:用户频繁访问Redis数据库中不存在的数据,就会出现缓存穿透现象,如果这种现象是高并发的,则会之直接影响数据库服务器。缓存击穿:Redis服务器中某个热点数据因为删除或者超时而出现数据失效,如果出现多个用户高并发访问此数据则会造成数据库宕机,该操作称之为缓存击穿。缓存雪崩:Redis内存中大量数据失效,导致用户访问命中率太低,则会直接访问数据库,可能会造成数据库宕机,这种现象称之为缓存雪崩。**高并发:**通俗讲就是同一时间点,多个用户同时访问一个API或者URL地址。...
2020-11-27 08:54:35
90
原创 GROUP BY 的内在细节展示!!(不可忽略点!!)
GROUP BY 的内在细节展示!!(重点:group by 分组后会生成一张虚拟表,having判断的就是虚拟表,但是查询语句执行完后显示的是分组后每组的第一个值!!)students表,从左到右每列依次是学号、课程号、分数。查询各科最高分同学的sno、cno和degree列!错误答案:SELECT *FROM scoresGROUP BY cnoHAVING degree=MAX(degree);结果如下:解析:答案错误的原因就在于GROUP BY,按照课程号分组后,其实生成是
2020-09-10 15:47:37
2483
4
原创 MySQL的语句执行顺序(必看!!!)
MySQL的语句执行顺序(必看!!!)MySQL的语句执行顺序公司面试中,面试官问过我这么一个问题,mysql的语句执行顺序,作为一个刚毕业的菜鸟,当时我是嗡嗡的。。。很多学过mysql的大佬,可能也不会注意到mysql语句还有执行先后顺序。SQL的执行顺序(1)from(2)join(3) on(4) where(5) group by(6) avg,sum(7) having(8) select(9) distinct(10) order by(11) limit从这个顺
2020-09-10 15:46:09
433
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人