自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 收藏
  • 关注

原创 面试要点

SpringBoot自动装配SpringBoot启动流程SpringBean生命周期Spring循环引用Spring IOC AOPMySQL事务、锁Sql索引、优化、数据结构MySQL高可用方案、主备一致性哈希Activiti原理WebSocket实现AQSCASMVCCDubbo协议、组件、实现Rpc框架SpringCloud组件微服务、服务发现、服务治理FeignClient底层HashMapJava锁、用到CAS的地方Redis、部署方案缓存雪崩、缓存击穿

2020-09-08 10:58:00 112

原创 Mybatis xml变量传递

<if test="ids!=null and ids.size()>0"> and ids in <foreach collection="ids" item="id" open="(" separator="," close=")"> #{id} </foreach> </if> <if tes...

2022-01-12 15:58:37 443

原创 java基础查漏

1、为什么重写equals()方法,一定要重写hashCode()方法?因为很多比较器会先比较hashCode是否相同,以此提高查找效率,如果不重写,hashCode大概率不同,就不会再通过equals方法比较了。

2021-11-05 15:08:58 130

原创 ssh携带密码

sshpass -p ******** scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null-o StrictHostKeyChecking=no 不检查known_hosts文件-o UserKnownHostsFile=/dev/null 功能未知,可不配

2021-10-22 09:40:55 1093

原创 maven pom文件配置

Parent标签<relativePath/>用于制定从哪里去找parent的pom文件。不加此标签默认为:…/pom.xml,此配置适用于多模块项目空标签,跳过直接取仓库查找配置了路径,则去路径查找MainClass经常有人在properties里面配置start-class标签,其实作用于springboot-maven-plugin,用于打包的时候指定启动类。Implementation-Title: ***Implementation-Version: 0.0.1-S

2021-09-01 16:06:26 493

原创 Websocket client 导致druid interrupted

依赖包<dependency> <groupId>org.java-websocket</groupId> <artifactId>Java-WebSocket</artifactId> <version>1.5.2</version></dependency>说明使用此包开发websocket client,会定时ping服务端,

2021-08-31 15:09:28 492

原创 常用设计模式

创建型单例模式:spring容器、懒汉式、双重检查、静态内部类、枚举抽象工厂模式、工厂方法模式:BeanFactory、SQLSessionFactory建造者模式:@Builder、SqlSessionFactoryBuilder、XMLConfigBuilder结构性代理模式:Spring AOP动态代理适配器模式:HandlerAdapter桥接模式、享元模式行为型模板方法模式:导入抽象类,常用统一抽象类封装模板方法及成员变量、常量责任链模式:activiti工作流观察

2021-08-23 18:05:09 78

原创 Chrome截网页

F12 Ctrl shift p Capture full size screenshot

2021-07-29 22:55:01 91

原创 SpringBoot单元测试

@RunWith(SpringRunner.class)@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)@SqlGroup({ @Sql("classpath:init.sql"), @Sql(value = "classpath:clea.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD)})@ActivePro

2021-07-14 17:34:51 348 1

原创 反编译代码

Maven依赖 <dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>3.21.0-GA</version> </dependency>代码 ClassPool.getDefault().insertClassPath("jar

2021-07-13 10:12:16 324

原创 MySQL索引总结

索引结构mysql有三种索引结构,包括B+树、哈希索引和全文索引,这里只关注B+树为什么不用二叉树,例如红黑树等数据结构?因为二叉树父节点至多有两个子节点,所有层级很深。层级越深,那么读取数据时的io次数就越多。TreeMap使用红黑树,因为是内存操作,io会非常高效,而MySQL数据存储到磁盘上,io次数越多,那么检索性能就会越低。B树的作用B树的出现,就是为了解决二叉树频繁io的问题,B树属于多路查找树,相对于二叉树层级更少,那么io次数自然就更少。B+树B树解决了频繁io的问

2021-05-11 15:57:47 92

原创 golang 日志使用

logrus1.示例代码 // logrus用法 logrus.SetLevel(logrus.InfoLevel) file, err := os.OpenFile("D://log.txt", os.O_APPEND, 0666) if os.IsNotExist(err) { file, _ = os.Create("D://log.txt") } defer file.Close() logrus.SetOutput(file) logrus.Info("hello") lo

2021-04-14 15:07:05 563 1

原创 B树、B+树

共同点:多路查找树不同点:B树:1、节点包含数据,找到节点则找到数据。2、m阶,子节点数小于等于m,节点关键字数大于等于ceil(m/2)-1,小于等于m-1。3、当查找数据离根节点更近时,效率比B+树高;B+树:1、子节点包含父节点所有关键字;2、只有叶子节点包含数据或数据指针;3、每次查找都要到叶子结点,查找效率稳定;4、非叶子结点无数据,可放的关键字更多,更“矮胖”。...

2020-12-19 10:35:01 88 1

原创 解决zebra无法读取jar包内的配置文件心得

项目集成zebra后在idea环境可以运行,但是打成jar包后就无法运行。会提示空指针。这里也是zebra源码写的很奇怪的原因。同时无法读取jar包内的配置文件。研究了两三天,各种办法都试了,想着重写GroupDataSource。最后看到别人说,只需要在项目创建一个相同包名、类名的文件就可以覆盖掉源码里的类。由于是zebra源码里的FileUtils的原因,所以我在项目重写了一个FileUtils。然后解决了问题。如释重负啊。...

2020-10-26 20:54:57 200

原创 MySQL不可重复读与幻读

一直把不可重复读与幻读没搞太明白,有天看到一个说法觉得挺有道理:不可重复读:针对的是单条记录,另一个事务修改了本事务读的记录,再次读时,记录改变了。解决此问题需要行锁;幻读:针对的是整个表,第一次读9条记录,第二次读变成8条或者10条。解决此问题需要表锁。MySQL应该用的MVCC控制。个人理解:读未提交的问题:脏读、不可重复读、幻读读已提交的问题:不可重复读,幻读可重复读的问题:幻读既然问题都是读,那是不是只是针对select呢?有个面试官问MySQL会不会有幻读,之前一直觉得会有,也试验

2020-09-30 10:30:04 133

原创 Mybatis一级缓存二级缓存

一级缓存1、默认开启,未找到关闭办法2、缓存级别:SqlSession级别3、缓存位置:SqlSession.BaseExecutor.PerpetualCache localCache4、跨SqlSession无法访问二级缓存1、开启办法:cache-enabled: true,xml文件需要增加cache标签2、cache标签readOnly属性设置为false时,实体类必须实现序列号接口;3、缓存级别:个人认为是mapper级别,也就是namespace级别;4、缓存位置:SqlSe

2020-09-18 12:01:05 111

原创 Spring多例

1、xml文件scope属性可配置Bean作用范围,或者使用@Scope注解2、其中request、session、global session属于web作用域,没有研究过用法,一般应用使用这三种scope会导致项目起不来,暂时可以不管。3、singleton属于默认值,单例模式,由Spring容器管理,生命周期与容器相同。4、prototype多例,每次使用的时候都会创建一个新的对象,并交给JVM管理。多例的使用分几种情况:①多例注入多例:这种情况由于每次请求父级Bean都会创建新的对象,同事进

2020-09-17 09:56:57 1813

原创 Activiti

之前项目用到过Activiti,一直没有深入了解过,面试被问到几次,现在抽时间研究研究。1. 数据库表28张表act_evt_log:事件表(event)-EventLogEntryact_ge前缀:通用表(general)act_hi前缀:历史表(history)-HistoryServiceact_id前缀:身份表(identity)-IdentityServiceact_procdef_info:流程定义(processDefinition)act_re前缀:储存表(repositor

2020-09-11 11:51:53 241

原创 k8s 容器挂载configMap

volumes: - name: user configMap: name: user items: - key: application.yml path: test/application.yml`volumeMounts: - name: user-center-volume mountPath: /root/application.yml s

2020-09-02 15:49:04 8256

原创 Java对象内存计算

网上有人说64位JVM数组对象头大小为24字节,此处有疑问

2020-09-02 11:43:26 125

原创 排序算法

冒泡排序:private static void bubbleSort(Integer[] origin) { System.out.println("排序前:" + Arrays.toString(origin)); for (int j = 0; j < origin.length - 1; ++j) { for (int i = 0; i < origin.length - 1 - j; ++i) {

2020-08-31 16:26:56 73

原创 SpringBean生命周期

Bean在refreshContext过程中创建

2020-08-31 15:10:43 112

原创 SpringBoot配置文件加载

ConfigFileApplicationListener负责加载配置文件Spring容器启动时会加载此监听器发布ApplicationEnvironmentPreparedEvent事件后,监听器开始加载配置文件,先于Bean创建

2020-08-31 14:41:27 155

原创 SpringBoot启动流程简述

又回顾了springboot启动流量,有了新的理解,进行以下补充:1、listeners.starting()等方法,第一次出现了误解,以为是启动监听器,但是我很奇怪监听器为什么要启动。再次看源码,才知道不同的方法是用来发布不同的事件,此方法就是发布ApplicationStartingEvent事件。可见看源码还是要耐心。...

2020-08-31 14:39:35 3155 2

原创 HashMap关键参数

TREEIFY_THRESHOLD=8因为HashMap中bin分布近似λ=0.5的泊松分布,当k等于8时,概率小于千万分之一CAPACITY为2的幂因为要进行散列,2的幂减一转换为2进制,所有位上全为1,使得哈希分布更加随机;采用与操作比采用取模运算更高效,因为取模运算属于十进制范畴DEFAULT_LOAD_FACTOR=0.75,负载因子是时间和空间的折中...

2020-08-31 10:51:14 441

原创 CAP

C:consistency一致性A:Availability 可用性P:Partition tolerance 分区容错三者只能同时满足其二分布式系统P必须存在,否则不是分布式系统CP同时满足,分区之间无法通信,为了满足数据一致性,整个系统必须锁住,等待分区之间网络恢复;CP同时满足,分区之间无法通信,不同节点的数据不一致...

2020-08-21 14:37:00 74

原创 docker expose

docker expose的作用是容器运行之后,暴露一个端口。这个端口应该与镜像对应的应用端口一直,否则设置之后没有任何意义。例如:expose 8081但是镜像应用监听8080端口那么docker run的时候依然要映射到8080端口上,否则无法访问应用,如果设置了expose,那可以直接使用-P随机端口映射...

2020-08-20 16:46:45 491

原创 thanos实现prometheus高可用

thanos组件:通用api:Store Api提供服务给查询接口,通过grpc查询prometheus的remote-read接口,rule的storeapi,store gateway的storeapi。一、thanos query:1、封装prometheus Query Api,支持PromQL2、暴露query服务,实现Store Api,可查询来自四类endpoint的数据:包括:rule节点record数据,sidecar节点prometheus原生数据,store gateway代

2020-08-12 11:52:00 2685

原创 Calendar设置时间

private Date trimSecond(Date date) {Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone(“GMT+8”));calendar.setTime(date);calendar.set(Calendar.SECOND, calendar.getActualMinimum(Calendar.SECOND));calendar.set(Calendar.MILLISECOND, calendar.get

2020-05-13 11:06:29 2167

原创 多线程中断标志位

三个方法:实例方法:isInterrupted()、interrupt()静态方法:interrupted()个人理解:线程中断标志位只是线程的一个属性,为开发人员提供一个可控的线程环境,中断标志位默认false;应该理解为默认没有中断标志位,通过方法设置一个中断标志位,设置以后对线程的运行没有任何影响,就是一个标志,可以在代码中根据标志来控制线程运行。1、NEW、TERMINATED状态...

2020-04-20 16:35:00 837

原创 多线程的状态枚举

1、NEWnew Thread()此时线程对象状态为NEW2、RUNNABLEnew Thread().start()调用start()方法状态为RUNNABLE3、BLOCKEDsynchronized代码、lock.lock()、Thread.yield()都会让线程进入阻塞状态4、WAITING调用wait()、join()方法5、TIMED_WAITTING调用wai...

2020-04-20 16:08:42 572

原创 多线程synchronized 和 volatile 关键字

浏览了一天的博文,大概总结出个人看法,以备以后继续学习1、必须明白一个知识点,内存屏障;下面是基于保守策略的JMM内存屏障插入策略:在每个volatile写操作的前面插入一个StoreStore屏障。在每个volatile写操作的后面插入一个StoreLoad屏障。在每个volatile读操作的后面插入一个LoadLoad屏障。在每个volatile读操作的后面插入一个LoadStor...

2020-04-16 16:56:50 118

原创 spring aop实现

方式一:实现MethodInterceptor接口(类似于环绕通知),xml配置还有其他接口,前置通知、后置通知等<aop:config>不引入aspectjweaver.jar会抛出异常Failed to introspect Class [org.springframework.aop.aspectj.AspectJExpressionPointcutObject p...

2020-04-14 18:54:01 84

原创 HashMap 计算key的hash值方法hash()

static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); }1、计算出key值的hashcode;2、h = key.hashCode()) ^ (h >>> 16)...

2020-04-09 18:55:32 5634

原创 wait(),notify(),notifyAll()生产者消费者

public class ProducerConsumer {private static boolean run = true;private static final Integer MAX_CAPACITY = 20;private static final LinkedBlockingQueue queue = new LinkedBlockingQueue<>();p...

2020-04-09 15:42:36 69

原创 Java泛型 T 与 ?

泛型T代表一种具体的类型,?代表所有的类型;泛型声明时只能用T,也就是说public class AAA和public T dosometing()这两处只能用T,不能用?;?只能用在引用变量上,比如 List<?> a;这样一个引用变量,在使用中通常会作为方法的形参引用上使用。T和?都可以使用extends,使用时二者没有区别 ,<? extends Student&g...

2020-04-09 11:03:43 102

原创 order by 连用limit分页不稳定

如果order by后面的条件相同,就会导致mysql随机排序,出现数据错误;可使用order by id或order by gmt_create,id

2020-04-02 17:15:55 160

原创 自定义类加载器

package cn.dongqing.classloader;import cn.dongqing.demo.entity.LongLong;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;impor...

2020-04-02 15:39:51 66

原创 shardingsphere分表导致text无法插入

org.apache.shardingsphere sharding-jdbc-spring-boot-starter 4.0.0-RC1使用这个包,插入text类型,如果xml文件写了jdbcType=LONGVAECHAR就会报java.io.NotSerializableException: java.io.Str...

2020-03-19 18:32:01 565 5

原创 Java对象生命周期

问题纠正:1、常量池静态常量池属于编译期确定的,运行时会进入运行常量池。常量池包括类的相关信息和代码里面的很多常量;jdk1.8运行常量池、字符串常量池都逻辑上属于方法区,内存上在堆中。2、类加载public class Load { public static void main(String[] args) { System.out.println(Boy.a); }}class Boy extends People { public static.

2020-03-18 15:19:17 77

空空如也

空空如也

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

TA关注的人

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