![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试
文章平均质量分 54
集结各类面试题和答案
Xiao--Y
一个普通的java工程师
展开
-
Arthas的简单使用
场景:线上问题排查时,我们需要不停机添加日志。示例:向com.scm.controller.CensusReachSkuController 内中添加日志代码1.导出要修改文件jad --source-only com.scm.controller.CensusReachSkuController > /CensusReachSkuController.java2.修改文件使用 vim 命令修改类中的方法信息3.查询类加载器sc -d com.scm.controller.Cen.原创 2022-04-29 16:09:23 · 424 阅读 · 0 评论 -
spring 事务传播行为、隔离级别、行级锁
spring 事务传播行为传播行为含义PROPAGATION_REQUIRED表示当前方法必须运行在事务中。如果当前事务存在,方法将会在该事务中运行。否则,会启动一个新的事务PROPAGATION_SUPPORTS表示当前方法不需要事务上下文。如果当前存在事务,则加入该事务;如果当前不存在事务,则以非事务的方式继续运行。PROPAGATION_MANDATORY表示该方法必须在事务中运行。如果当前存在事务,则加入该事务;如果当前不存在事务,则抛出异常。PROPA原创 2021-07-08 09:01:42 · 468 阅读 · 0 评论 -
RabbitMQ知识点整理
目录rabbitmq 交换机类型rabbitmq 消息模型rabbitmaq 工作队列模式rabbitmaq 订阅模式(Fanout,Direct,Topic)如何避免消息丢失rabbitmq 交换机类型fanout 广播模式:将消息交给所有绑定到交换机的队列。direct 精确匹配:根据生产者中binding key 来和消费者端 routing key 做精确匹配(equal)。topic 模糊匹配:routing key中可以带 * 和 # 来做模糊匹配, “*” 用于匹配一个单词原创 2021-03-24 10:08:04 · 351 阅读 · 3 评论 -
设计模式-单例模式
目录简介实际应用场景UML代码实现1.饿汉式(线程安全) [不推荐用]2.懒汉式(线程不安全) [不推荐用]3.懒汉式-加锁(线程安全) [不推荐用]4.懒汉式-双重校验锁(线程安全) [推荐用]5.枚举(线程安全) [极推荐使用]6.静态内部类(线程安全) [推荐用]7. 测试代码测试简介一个类只允许创建一个对象(或者实例),那这个类就是一个单例类实际应用场景在一些常用的工具类、线程池、缓存,数据库,账户登录系统、配置文件等程序中可能只允许我们创建一个对象UML代码实现1.饿汉式(线程安全)原创 2021-03-22 10:03:05 · 81 阅读 · 0 评论 -
设计模式-工厂模式
目录简介实际应用场景UML代码实现测试简介工厂模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。实际应用场景1、日志记录器:记录可能记录到本地硬盘、系统事件、远程服务器等,用户可以选择记录日志到什么地方。2、数据库访问,当用户不知道最后系统采用哪一类数据库,以及数据库可能有变化时。3、设计一个连接服务器的框架,需要三个协议,“POP3”、“IMAP”、“HTTP”,可以把这三个作为产品类,原创 2021-03-21 20:07:47 · 65 阅读 · 0 评论 -
设计模式-状态模式
目录简介实际应用场景UML代码实现测试简介在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。实际应用场景1、打篮球的时候运动员可以有正常状态、不正常状态和超常状态。2、曾侯乙编钟中,‘钟是抽象接口’,'钟A’等是具体状态,'曾侯乙编钟’是具体环境(Context)。UML代码实现public class Context {原创 2021-03-18 09:54:02 · 74 阅读 · 2 评论 -
设计模式-责任链模式
目录简介实际应用场景UML代码实现测试简介责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。实际应用场景1、红楼梦中的"击鼓传花"。2、JS 中的事件冒泡。3、JAVA WEB 中 Apache Tomcat 对 En原创 2021-03-17 09:29:01 · 76 阅读 · 0 评论 -
设计模式-代理模式
目录简介实际应用场景UML1、静态代理2、动态代理代码实现1、静态代理2、动态代理(JDK)测试1、静态代理2、动态代理(JDK)简介代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用实际应用场景买火车票不一定在火车站买,也可以去代售点UML1、静态代理2、动态代理代码实现/** * @author liuyongtao * @since 2021-3-15 12:00 */public interface Image { void display原创 2021-03-15 14:35:15 · 78 阅读 · 0 评论 -
java中线程安全的集合和创建不可以修改的集合
目录标线程安全的集合创建不可以修改的集合线程安全的集合Vector vector = new Vector();Stack stack = new Stack();CopyOnWriteArrayList<Object> copyOnWriteArrayList = new CopyOnWriteArrayList<>();List<String> synList = Collections.synchronizedList(new ArrayList<原创 2021-03-13 21:53:05 · 114 阅读 · 1 评论 -
设计模式-迭代器模式
目录简介实际应用场景UML代码实现测试简介提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示。实际应用场景将书(Book)放到书架(BookShelf)中,并将书名按顺序显示UML代码实现/** * @author xiaoy * @since 2021-3-10 9:38 */public interface Container<E> { Iterator<E> iterator();}/** * @author xi原创 2021-03-10 10:30:52 · 74 阅读 · 0 评论 -
设计模式-策略模式
目录简介实际应用场景UML代码实现测试简介定义算法族,分别封装起来,让它们之间可相互替换,此模式让算法的变化独立于使用算法的客户实际应用场景账单同步的功能。来自不同平台的账单,使用不同的文件保存,需要解析文件,校验数据,保存数据,归档账单UML代码实现/** * 解析数据接口 * * @author xiaoy * @since 2021-3-8 15:33 */public interface IParsingData { void parsingData()原创 2021-03-09 09:01:20 · 89 阅读 · 0 评论 -
设计模式-命令模式
目录简介实际应用场景UML代码实现测试简介将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。(简化: 将请求封装成对象,将动作请求者和动作执行者解耦。)实际应用场景假设现在有电视、电脑、电灯等家电,现在需要你做个遥控器控制所有家电的开关,要求做到每个按钮对应的功能供用户个性化,对于新买入家电要有非常强的扩展性UML代码实现/** * 命令执行器接口 * * @author xiaoy * @since 2021-3-8 8:51原创 2021-03-08 09:30:02 · 78 阅读 · 0 评论 -
设计模式-观察者模式
目录简介实际应用场景UML代码实现测试简介观察者模式,又可以称之为发布-订阅模式,观察者,顾名思义,就是一个监听者,类似监听器的存在,一旦被观察/监听的目标发生的情况,就会被监听者发现实际应用场景观察者模式多用于实现订阅功能的场景,例如微博的订阅UML代码实现/** * 主题 * @author liuyongtao * @since 2021-3-5 9:26 */public interface Subject { void registerObserver(Obse原创 2021-03-05 17:27:45 · 75 阅读 · 0 评论 -
spring cloud Nacos 整合 Seata
目录一、Seata 简介1. Seata 如何处理呢2. 核心组件3. 具体工作过程二、Seata 详细工作流程示例三、启动 seata 服务端1. 下载seatea 服务端2.修改 `config.txt` 文件,根据需要保存。修改数据库相关3.修改 `registry.conf` 文件,修改 nacos 的地址、用户名和密码。3. 启动 seata-server.bat四、调用端1. 新建测试库 seata、account、order、storage2. 新建工程一、Seata 简介查看源码 ht原创 2021-03-02 21:54:32 · 705 阅读 · 0 评论 -
如何绕过java的构造器,创建实例
要实例的类:public class BlogDto2 { private Integer id; private String name; { System.out.println("11111"); } public BlogDto2(Integer id, String name) { this.id = id; this.name = name; System.out.println("2原创 2020-05-24 21:37:05 · 218 阅读 · 0 评论