自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java面试题

跟java可重入逻辑一样,redisson会把当前事务,和上锁此时存下来。最终一致性,允许一段时间的不一致。尽量保证至少range级别。

2024-04-19 16:19:05 80

原创 hadoop

执行下面命令输出目录是不能存在的(wcoutput)

2024-04-18 16:10:00 346 1

原创 ES-全文搜索

查询数据到一个节点,该节点会作为一个调度节点判断负载等情况将请求转发到真正节点(一般し轮询)写数据通过id路由到master分片。

2024-04-17 22:36:32 274 1

原创 rocketMq

消息的发送方式:1.同步2.异步3.顺序4.单向消息的消费方式:1.拉取2.推动消息的类型:1.普通2.顺序3.批量4.事务5.延时。

2024-04-16 08:52:03 99

原创 mysql-优化

分库分表。

2024-04-15 22:44:47 175

原创 Linux

2024-04-11 22:02:01 71

原创 java - NIO

2024-04-10 22:21:54 75

原创 spring

上图是自己想当然的事务实现逻辑,下面是spring真实实现。

2024-04-10 16:42:48 531

原创 redis

也可以用tryLock来提升并发性能,等待时间到了直接往下运行。如果value值很大,比如说几百兆也有可能阻塞。

2024-04-08 23:11:52 202

原创 zookeeper

2024-04-06 09:57:09 117

原创 kafka

单播消息中不是通过轮询的方式接受消息的,第一次接收消息的消费者将一直接收消息。

2024-04-05 13:42:21 321

原创 nginx

反向代理,负载均衡,动静分离。

2024-04-05 08:50:25 93

原创 Hystrix

2024-04-02 22:40:13 60

原创 redis

redis。

2024-04-02 16:50:21 376

原创 java-集合

简单来说,线程池实际工作的线程是work线程,不是你自己创建的,是由线程池创建的,并由线程池自动控制实际并发的work线程数量。而Seamphore相当于一个信号灯,作用是对线程做限流,Seamphore可以对你自己创建的的线程做限流(也可以对线程池的work线程做限流),Seamphore的限流必须通过手动acquire和release来实现。但使用线程池,你创建的线程只是作为任务提交给线程池执行,实际工作的线程由线程池创建,并且实际工作的线程数量由线程池自己管理。

2024-04-02 16:01:34 294

原创 java多线程

实现方式:继承Thread类、实现Runnable接口,实现Callable接口通过FutureTask包装器来创建Thread线程,使用ExecutorService、Callable,Future实现有返回结果的多线程,其中前两种方式线程执行完后都没有返回值,后两种是带返回值的。

2024-04-01 22:19:22 67

原创 java-excel百万数据的导入导出

待续..

2024-04-01 21:52:54 230

原创 springcloud+alibaba

只指定某一个接口的日志级别。

2024-03-30 20:12:25 106

原创 java观察者模式

System.out.println("------观察者:" + observer.name() + "-----------");* 会调用它的notifyObservers()方法,通知所有的观察者对象,并更新它们的状态。* 当一个对象需要向其他对象提供一种数据更新的方式,而且这种更新方式需要在不同的时间点通知不同的对象。* 当一个对象的改变需要其他对象的协助,但是不希望这些对象与自己产生紧密的耦合关系。* 当一个对象的改变需要同时改变其他对象的状态,而且不知道具体有多少对象需要改变。

2024-03-29 15:13:08 231 1

原创 spring知识

2024-03-29 15:03:15 188 1

原创 谈一下Spring事务传播

总:事务的传播特性指的是不同方法的嵌套调用过程中,事务应该如何进行处理,是用同一个事务还是不同的事务,当出现异常的时候会回滚还是提交,两个方法之间的相关影响,在日常工作中,使用比较多的是required,Requires_new,nested。3、如果外层方法是requires_new,内层方法是,required,requires_new,nested。A方法调用B方法,AB方法都有事务,并且传播特性不同,那么A如果有异常,B怎么办,B如果有异常,A怎么办?

2024-03-29 10:30:27 156 1

原创 spring的事务管理是如何实现的

总: spring的事务是由aop来实现的,首先要生成具体的代理对象,然后按照aop的整套流程来执行具体的操作逻辑,正常情况下要通过通知来完成核心功能,但是事务不是通过通知来实现的,而是通过一个TransactionInterceptor来实现的,然后调用invoke来实现具体的逻辑。1、先做准备工作,解析各个方法上事务相关的属性,根据具体的属性来判断是否开始新事务。2、当需要开启的时候,获取数据库连接,关闭自动提交功能,开起事务。上图是我们自己的想法,是错误的,看下面。3、执行具体的sql逻辑操作。

2024-03-29 10:27:27 289 1

原创 springAOP底层实现原理

5、从拦截器链中依次获取每一个通知开始进行执行,在执行过程中,为了方便找到下一个通知是哪个,会有一个CglibMethodInvocation的对象,找的时候是从-1的位置依次开始查找并且执行的。总: aop概念,应用场景,动态代理 是的一个扩展功能,先有的的一个扩展功能,先有的IOC,再有的AOP,只是在IOC的整个流程中新增的一个扩展点而已:BeanPostProcessor。1、代理对象的创建过程(advice,切面,切点)4、根据之前定义好的通知来生成拦截器链。总:aop概念,应用场景,动态代理。

2024-03-29 09:33:39 151 1

原创 Spring中用到的设计模式?

策略模式: XmlBeanDefinitionReader,PropertiesBeanDefinitionReader。策略模式:XmlBeanDefinitionReader,PropertiesBeanDefinitionReader。观察者模式: listener,event,multicast。观察者模式:listener,event,multicast。装饰者模式: BeanWrapper。工厂模式::BeanFactory。委托者模式: delegate。适配器模式: Adapter。

2024-03-29 09:17:27 194 1

原创 java模本模式

模板方法是由具体方法和抽象方法组成的,它定义了程序的骨架,而具体方法则实现了算法的部分步骤。* 总之,Java模板模式适用于那些需要在程序中定义骨架,并且在子类中实现具体步骤的情况。* 当需要在不影响算法整体结构的情况下,对算法的某些步骤进行定制化时,可以使用模板模式。* 当需要定义一组算法,并且这些算法的结构相似,但是实现细节不同时,可以使用模板模式。* 当需要控制算法的流程,并且在算法的不同阶段需要不同的行为时,可以使用模板模式。* 当需要在多个类中使用相同的算法时,可以使用模板模式,避免代码重复。

2024-03-28 17:33:05 265

原创 java工厂模式

package com.hy.questionbank.设计模式.工厂模式.抽象工厂模式;package com.hy.questionbank.设计模式.工厂模式.抽象工厂模式;package com.hy.questionbank.设计模式.工厂模式.抽象工厂模式;package com.hy.questionbank.设计模式.工厂模式.抽象工厂模式;package com.hy.questionbank.设计模式.工厂模式.抽象工厂模式;// 定义一个静态方法,根据传入的参数创建具体的产品类对象。

2024-03-28 17:29:35 309

原创 java代理模式

package com.hy.questionbank.设计模式.代理模式.cglib动态代理;package com.hy.questionbank.设计模式.代理模式.cglib动态代理;package com.hy.questionbank.设计模式.代理模式.jdk动态代理;package com.hy.questionbank.设计模式.代理模式.jdk动态代理;package com.hy.questionbank.设计模式.代理模式.jdk动态代理;// 创建一个代理对象。

2024-03-28 17:16:08 276

原创 java-原型模式

深克隆:复制对象本身的同时,也复制对象包含的引用指向的对象,即修改被克隆对象的任何属性都不会影响到克隆出来的对象。需要在clone方法clone一份引用属性对应的对象,再赋值给引用属性。* 浅克隆:复制对象时仅仅复制对象本身,包括基本属性,但该对象的属性引用其他对象时,该引用对象不会被复制,即拷贝出来的对象与被拷贝出来的对象中的属性引用的对象是同一个。package com.hy.questionbank.设计模式.原型模式;package com.hy.questionbank.设计模式.原型模式;

2024-03-28 17:02:53 387

原创 java单例模式

这种方式基于classloader机制避免了多线程的同步问题,不过instance在类装载时就实例化,在单例模式中大多数都是调用getinstance方法,但是导致类装载的原因有很多种,因此不能确定有其他的方式(或者其他的静态方法)导致类装载,这时候初始化instance就没有达到lazy loading的效果。这样,实例化代码只用执行一次,后面再次访问时,判断if(singleton ==null),直接return实例化对象,也避免的反复进行方法同步。如果存在已存在的实例,会抛出异常。

2024-03-28 16:42:07 249

原创 Springboot自动装配实现过程原理

5、在解析@lmport注解的时候,会有一个getlmports的方法,从主类开始递归解析注解,把所有包含@lmport的注解都解析到,然后在processImport方法中对Import的类进行分类,此处主要识别的是AutoConfigurationImportSelect归属于lmportSelect的子类,在后续过程中会调用deferredlmportSelectorHandler中的process方法,来完整EnableAutoConfiguration的加载。

2024-03-28 16:22:59 274

原创 ThreadLocal导致内存泄漏

我们知道web项目的请求连接是通过连接池来完成的,请求完成后线程并不会被回收而是回到连接池等待下次备用,所以如果每次请求完成后没有remove掉threadlocal对应的值的话,value就会一直存在导致内存泄漏。当我们调用threadlocal的set方法时,其实质是将threadlocal对象作为key,要保存的值作为value保存到当前线程的threadLocals中,由于key是弱引用内心,当gc时key会被回收,但value是强引用,它只有在当前线程被回收时才会一起被回收。

2024-03-18 10:46:06 244 1

原创 java的四种引用类型

如果一个对象被定义成虚引用,那么他跟没有引用一样,虚引用通常跟ReferenceQueue一起使用,这里不做了解。我们正常new出来的队友就是强引用,它的特点就是当引用存在时对象永远不会被垃圾回收。弱引用比如引用还要弱一些,每当系统发生GC时弱引用对象都会被垃圾回收掉。

2024-03-18 10:28:18 148 1

原创 JAVA. JUC笔记

调用UnSafe类中的CAS方法,JVM会帮我们实现出CAS汇编指令。JMM(JAVA内存模型): JMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。LockSupport类使用了一种名为Permit(许可)的概念来做到阻塞和唤醒线程的功能,每个线程都有一个许可Permit,permit只有两个值1和0,默认是0。

2024-03-05 08:00:00 407 1

原创 Mysql面试重点

innodb中页的默认大小是16KB,如果不存储数据,那么就会存储更多的键值,相应的树的阶数(节点的子节点树)就会更大,树就会更矮更胖,如此一来我们查找数据进行磁盘的IO次数有会再次减少,数据查询的效率也会更快。如果树这种数据结构作为索引,那我们每查找一次数据就需要从磁盘中读取一个节点,也就是我们说的一个磁盘块,但是平衡二叉树可是每个节点只存储一个键值和数据的,如果是B树,可以存储更多的节点数据,树的高度也会降低,因此读取磁盘的次数就降下来啦,查询效率就快啦。简言之,就是事务之间是进水不犯河水的。

2024-03-04 15:59:12 728

原创 JVM参数讲解及配优

jhat内置了一个微型的HTTP/HTML服务器,生成dump文件的分析结果后,用户可以在浏览器中查看分析结果(分析虚拟机转储快照信息)。生成线程快照的作用:可用于定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等问题。jmap(JVM Memory Map):作用一方面是获取dump文件(堆转储快照文件,二进制文件),它还可以获取目标Java进程的内存相关信息,包括Java堆各区域的使用情况、堆中对象的统计信息、类加载信息等。· -gc:显示与GC相关的堆信息。

2024-03-04 11:18:13 916 1

JAVA-JVM参数讲解

jvm命令参数配置调优讲解,jps,jinfo,jstat,jmap,jstack

2024-03-04

空空如也

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

TA关注的人

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