09 2020 档案

摘要:https://blog.csdn.net/muer_123/article/details/88555339 阅读全文
posted @ 2020-09-30 13:33 抽象Java 阅读(81) 评论(0) 推荐(0)
摘要:https://blog.csdn.net/sinat_16658263/article/details/104602550 public class ClassPathXmlApplicationContext extends AbstractXmlApplicationContext { pri 阅读全文
posted @ 2020-09-30 11:35 抽象Java 阅读(155) 评论(0) 推荐(0)
摘要:Java反射 Class.forName 和 loadClass 方法的区别 java中Class.forName()和ClassLoader都可以对类进行加载。 ClassLoader就是遵循双亲委派模型最终调用启动类加载器的类加载器,实现的功能是“通过一个类的全限定名来获取描述此类的二进制字节流 阅读全文
posted @ 2020-09-29 14:45 抽象Java 阅读(1616) 评论(0) 推荐(0)
摘要:Mybatis源码解析 一、mybatis 流程三个阶段 1、初始化阶段:读取XML 配置文件和注解中的配置信息,创建配置对象,并完成各个模块的初始工作; 2、代理阶段:封装 IBatis 编程模型,使用 mapper 接口开发的初始化工作; 3、数据处理阶段:通过 SqlSession 完成SQL 阅读全文
posted @ 2020-09-24 14:15 抽象Java 阅读(149) 评论(0) 推荐(0)
摘要:一、IO 流是什么 IO流就是java 平台类库提供给我们的用于处理数据的API,在java API中,我们从其中读入一个字节序列的对象为输入流(InputStream),反之,向其中写入一个字节序列的对象为输出流(OutputStream)。所以本质上来说,Java 中所有类似对象对应的类共同组成 阅读全文
posted @ 2020-09-23 16:34 抽象Java 阅读(123) 评论(0) 推荐(0)
摘要:一、java 实例化几种方式 1、用new语句创建对象,这是最常见的创建对象的方法。 2、使用Class静态方法 Class.forName 方法 3、使用 .loadClass() 方法 4、使用Constructor类的newInstance方法 运用反射手段,调用java.lang.Class 阅读全文
posted @ 2020-09-23 09:21 抽象Java 阅读(1488) 评论(0) 推荐(0)
摘要:什么是String,它是什么数据类型? String是定义在 java.lang 包下的一个类。它不是基本数据类型。 String 是final 类型的类, 成员变量是 final 修饰的char String是不可变的,JVM使用字符串池来存储所有的字符串对象。 public final clas 阅读全文
posted @ 2020-09-22 00:36 抽象Java 阅读(241) 评论(0) 推荐(0)
摘要:一、经常遇到的运行时异常(RuntimeException)类型: 空指针异常(NullPointerException); 数组越界异常(ArrayIndexOutOfBoundsException); 类型转换异常(ClassCastException); 非法声明异常(IllegalArgum 阅读全文
posted @ 2020-09-21 22:03 抽象Java 阅读(791) 评论(0) 推荐(0)
摘要:rabbitMq 消息可靠性 阅读全文
posted @ 2020-09-21 00:18 抽象Java 阅读(135) 评论(0) 推荐(0)
摘要:rabbitMq 持久化 阅读全文
posted @ 2020-09-21 00:14 抽象Java 阅读(99) 评论(0) 推荐(0)
摘要:sd 阅读全文
posted @ 2020-09-20 22:41 抽象Java 阅读(158) 评论(0) 推荐(0)
摘要:一、rabbitMq组件: Producer : 消息生产者,投递消息的程序; Consumer : 消息消费者, 接受消息的程序; Server (Broker) : 消息节点,维护生产者到消费者的路线; Connection : 连接, 应用程序和 broker 的网络连接 Channel : 阅读全文
posted @ 2020-09-20 21:22 抽象Java 阅读(604) 评论(0) 推荐(0)
摘要:AMQP AMQP 生产者流转过程 建立连接 开启通道 发送消息 释放资源 AMQP 消费者流转过程 建立连接 开启通道 发送消息 释放资源 Rabbit Mq 核心概念 阅读全文
posted @ 2020-09-20 17:22 抽象Java 阅读(111) 评论(0) 推荐(0)
摘要:pom文件 <dependencies> <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.1.2</version> </dependency> </depend 阅读全文
posted @ 2020-09-20 16:12 抽象Java 阅读(192) 评论(0) 推荐(0)
摘要:四、开启 Web 管理插件 1、开启插件 rabbitmq-plugins enable rabbitmq_management 2、添加用户 rabbitnqctl add_user admin admin 3、为用户分配操作权限 rabbitmqctl set_user_tags admin a 阅读全文
posted @ 2020-09-20 14:50 抽象Java 阅读(112) 评论(0) 推荐(0)
摘要:解决方案 将C:\Users\{用户名}\.erlang.cookie 复制到 C:\Windows\System32\config\systemprofile 目录。 重启rabbitMQ服务 阅读全文
posted @ 2020-09-20 14:45 抽象Java 阅读(1170) 评论(0) 推荐(0)
摘要:一、rabbitMq 角色 rabbitMq 的角色有 none, management, policymaker, monitoring, administrator none 不能访问 managerment plugin management 用户可以通过 AMQP 做的任何事外加: 列出自己 阅读全文
posted @ 2020-09-19 13:52 抽象Java 阅读(114) 评论(0) 推荐(0)
摘要:一、使用 @interface 实现 Annotation接口 并定义注解类 使用以下 元注解 定义注解范围 @Target 定义注解的作用目标 @Retention 注解的生命周期,定义注解的保留策略。RetentionPolicy.SOURCE:注解仅存在于源码中,在class字节码文件中不包含 阅读全文
posted @ 2020-09-19 11:00 抽象Java 阅读(145) 评论(0) 推荐(0)
摘要:接口 @Component @Aspect public class CacheAspect { @Autowired private RedisTemplate redisTemplate; @Pointcut("@annotation(com.jm.cache.redis.annotation. 阅读全文
posted @ 2020-09-19 10:16 抽象Java 阅读(171) 评论(0) 推荐(0)
摘要:config @Configuration // @EnableCaching @EnableAspectJAutoProxy // 开启AOP自动代理 public class AppConfig { @Value("${spring.redis.host}") String host; @Val 阅读全文
posted @ 2020-09-18 23:35 抽象Java 阅读(187) 评论(0) 推荐(0)
摘要:config @Configuration // public class AppConfig { @Value("${spring.redis.host}") String host; @Value("${spring.redis.port}") int port; // 创建对象,spring托 阅读全文
posted @ 2020-09-18 21:40 抽象Java 阅读(168) 评论(0) 推荐(0)
摘要:1、 @Configuration // public class AppConfig { // 创建对象,spring托管 <bean ... @Bean public JedisPool jedisPool() { JedisPool jedisPool = new JedisPool("loc 阅读全文
posted @ 2020-09-18 13:44 抽象Java 阅读(194) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2020-09-16 17:42 抽象Java 阅读(79) 评论(0) 推荐(0)
摘要:一、Redis支持的数据类型? String字符串: 格式: set key value string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。 string类型是Redis最基本的数据类型,一个键最大能存储512MB。 Hash(哈希) 阅读全文
posted @ 2020-09-16 15:10 抽象Java 阅读(123) 评论(0) 推荐(0)
摘要:Java 基本数据类型 : https://www.cnblogs.com/LiaHon/p/11043238.html 序列化 : https://www.cnblogs.com/Jomini/p/12460994.html String,Stringbuffer(安全), Stringbuild 阅读全文
posted @ 2020-09-16 13:56 抽象Java 阅读(410) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/andy-zhou/p/5327288.html https://www.cnblogs.com/Darrenblog/p/10712125.html 阅读全文
posted @ 2020-09-15 15:07 抽象Java 阅读(142) 评论(0) 推荐(0)
摘要:https://blog.csdn.net/hotthought/article/details/82987428 阅读全文
posted @ 2020-09-15 14:56 抽象Java 阅读(376) 评论(0) 推荐(0)
摘要:思路(https://www.jianshu.com/p/30f42a9fcca3) 1、先用 查看cpu 占用最高的程序,命令 top -c 2、使用top -H -p PID 命令查看对应进程是哪个线程占用CPU过高 3.使用 jstack -l PID > a 命令打印出这个进程的线程栈并输入 阅读全文
posted @ 2020-09-15 14:52 抽象Java 阅读(267) 评论(0) 推荐(0)
摘要:JVM OOM 线上环境处理 定位 没有日志可以定位 接受所有系统, jvm启动参数 转为一个文件,JVM 内存快照 1 -XX:+HeapDumpOnOutOfMemoryError -xx:HeapDumpPath = /temp/202009.hpro GcRoot是垃圾回收器算法中判断一个对 阅读全文
posted @ 2020-09-15 14:23 抽象Java 阅读(113) 评论(0) 推荐(0)
摘要:Java内存溢出即程序在申请内存时,没有足够的空间供其使用,出现out of memory。 常见于四种情况: 1、栈溢出(StackOverflowError)、 2、堆溢出(OutOfMemoryError:java heap space)、 3、永久代溢出(OutOfMemoryError: 阅读全文
posted @ 2020-09-15 11:05 抽象Java 阅读(803) 评论(0) 推荐(0)
摘要:。。。。 阅读全文
posted @ 2020-09-14 22:58 抽象Java 阅读(125) 评论(0) 推荐(0)
摘要:一、为什么要用线程池 1、降低资源消耗。通过重复利用已创建的线程降低线程创建、销毁线程造成的消耗。 2、提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 3、提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分 阅读全文
posted @ 2020-09-14 22:56 抽象Java 阅读(266) 评论(0) 推荐(0)
摘要:一、线程状态 在线程的源码中有如下六个状态 1、NEW(初始) : 新建线程对象,未调用start方法; 2、RUNNABLE(运行) : Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start() 阅读全文
posted @ 2020-09-14 22:15 抽象Java 阅读(178) 评论(0) 推荐(0)
摘要:1、某MYSQL服务器User表有100万条数据,请用多线程并发编程方式,将这100万条数据秒级导出到若干excel 文件 考点 1)掌握高并发、高性能问题分析思路 2)掌握从架构角度优化性能的思路 3)熟悉多线程使用场景 4)熟悉线程池使用场景 5)熟悉应用程序性能优化思路,熟悉并发场景下的分页功 阅读全文
posted @ 2020-09-14 20:36 抽象Java 阅读(125) 评论(0) 推荐(0)
摘要:分布式中间件缓存一致性 分布式本地缓存一致性 ignite 实现缓存一致性 https://www.cnblogs.com/peppapigdaddy/p/10095906.html https://zhuanlan.zhihu.com/p/29138099 阅读全文
posted @ 2020-09-14 15:42 抽象Java 阅读(297) 评论(0) 推荐(0)
摘要:https://www.cnblogs.com/crazymakercircle/p/11965726.html 阅读全文
posted @ 2020-09-14 13:44 抽象Java 阅读(211) 评论(0) 推荐(0)
摘要:Spring 的 IOC 即 控制反转,由Spring容器实现应用程序中的对象的实例化和,以及建立对象的依赖 IOC 实现原理 https://blog.csdn.net/zhangcongyi420/article/details/89419715 阅读全文
posted @ 2020-09-14 13:22 抽象Java 阅读(453) 评论(0) 推荐(0)
摘要:不使用 工厂模式的 的链接 数据库mysql public static void main(String args[]) { try { Class.forName("com.mysql.jdbc.Driver"); // 加载MYSQL JDBC驱动程序 // Class.forName("or 阅读全文
posted @ 2020-09-13 14:51 抽象Java 阅读(355) 评论(0) 推荐(0)
摘要:1、工厂模式的作用,为什么要用工厂模式? 工厂模式是为了解耦:把对象的创建和使用的过程分开。就是Class A 想调用Class B,那么只是调用B的方法,而至于B的实例化,就交给工厂类。 工厂模式可以降低代码重复。如果创建B过程都很复杂,需要一定的代码量,而且很多地方都要用到,那么就会有很多的重复 阅读全文
posted @ 2020-09-13 10:20 抽象Java 阅读(163) 评论(0) 推荐(0)
摘要:首先要了解 反射 概念 即 获取类的 所有构造方法,方法,和成员对象 然后 反射 的 invoke 方法 invoke (object, args) , object 是代理的对象,args 是方法参数 https://www.cnblogs.com/Jomini/p/13657565.html 动 阅读全文
posted @ 2020-09-12 22:38 抽象Java 阅读(125) 评论(0) 推荐(0)
摘要:Cglib 底层通过 ASM 框架实现; 通过实现MethodInterceptor 接口来定义横切逻辑 实现上述接口的过程中,通过 Enhancer 设置父类,调用本身,生成代理对象。 测试用例 创建代理类 import org.springframework.cglib.proxy.Enhanc 阅读全文
posted @ 2020-09-12 22:08 抽象Java 阅读(214) 评论(0) 推荐(0)
摘要:在java的动态代理机制中,有两个重要的类或接口,一个是 InvocationHandler(Interface)、另一个则是 Proxy(Class),这接口和类是实现我们动态代理所必须用到的。首先我们先来看看java的API帮助文档是怎么样对这两个类进行描述的; InvocationHandle 阅读全文
posted @ 2020-09-12 21:20 抽象Java 阅读(186) 评论(0) 推荐(0)
摘要:反射是什么 反射了解吗?使用场景? 反射是指运行中的java程序能动态获取类的方法、属性、构造函数。 反射的流程: 1、获取指定名称的Class对象,方法有:Class.forName()、obj.getClass()、类名.class() 2、实例化对象,获取类的方法、属性和构造函数; 3、访问属 阅读全文
posted @ 2020-09-12 16:49 抽象Java 阅读(213) 评论(0) 推荐(0)
摘要:时间 2020 09 12 1、aop 实现原理 2、mybatis 源码 3、之前的面试题目查缺补漏 4、设计模式 工厂模式 5、study 163 6、阿强给的资料 -- 专题部分 阅读全文
posted @ 2020-09-12 11:12 抽象Java 阅读(115) 评论(0) 推荐(0)
摘要:Spring 1、Spring 如何实现 AOP 2、动态代理,Cglib 具体如何实现 SpringCloud 1、erueka 注册中心存放什么 缓存 1、分布式缓存一致性实现 阅读全文
posted @ 2020-09-11 15:57 抽象Java 阅读(152) 评论(0) 推荐(0)
摘要:RabbitMQ 怎么保证消息的稳定性?提供了事务的功能。通过将 channel 设置为 confirm(确认)模式 阅读全文
posted @ 2020-09-11 13:41 抽象Java 阅读(121) 评论(0) 推荐(0)
摘要:1、redis实现持久化有两种方式: 第一种、RDB:指定的时间间隔内保存数据快照。 第二种、AOF:先把命令追加到操作日志的尾部,保存所有的历史操作。 2、Redis实现主从复制 redis 主负责写, 从负责读 2.1、全量同步 Redis全量复制一般发生在Slave初始化阶段,这时Slave需 阅读全文
posted @ 2020-09-11 13:33 抽象Java 阅读(136) 评论(0) 推荐(0)
摘要:2020 09 10 分布式事务,两阶段提交协议,三阶段提交协议 2020 09 19 redis 实现注解缓存 rabbit mq 2020 10 08 hashmap 扩容机制 arraylist 扩容机制 2020 10 09 spring 事物传播机制 阅读全文
posted @ 2020-09-10 20:38 抽象Java 阅读(109) 评论(0) 推荐(0)
摘要:首先回顾一下分布式的意义。 在单节点系统中,当修改完成一个事务时,仅仅会出现单节点的事务问题,通过设置事务级别或者其他单节点措施,避免单节点的事务问题; 但是多节点的面对事务的情况更为复杂,这就是分布式一致性出现的背景。 一、分布式CAP CAP 定理 指的是 分布式系统的中的 Consistenc 阅读全文
posted @ 2020-09-10 14:30 抽象Java 阅读(325) 评论(0) 推荐(0)
摘要:一、概念 官方文档描述,Zookeeper 是一个分布式协调服务框架; Zookeeper 本质上是 一个有监听通知机制功能的分布式存储服务, 使之实现 分布式的CAP原则中的 CP 原则,即一致性和分区容错容错性; 二、Zookeeper 功能 2.1、命名服务:在zookeeper的文件系统里创 阅读全文
posted @ 2020-09-10 12:03 抽象Java 阅读(897) 评论(0) 推荐(0)
摘要:一、 简介 CAP 定理 指的是 分布式系统的中的 Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性); 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本) 可用性( 阅读全文
posted @ 2020-09-10 11:14 抽象Java 阅读(166) 评论(0) 推荐(0)
摘要:SpringCloud 架构 阅读全文
posted @ 2020-09-09 13:13 抽象Java 阅读(133) 评论(0) 推荐(0)
摘要:Erueka 概念 一、Erueka 组件 Eureka 由两个组件组成:Eureka 服务端 和 Eureka 客户端。 1.1、Eureka Server( 服务端) Eureka Server( 服务端)就是注册中心 Eureka 服务端担任注册中心的角色,提供了服务的发现和注册功能。 1.2 阅读全文
posted @ 2020-09-09 10:49 抽象Java 阅读(815) 评论(0) 推荐(0)
摘要:使用两个eureka注册中心实现注册中心 搭建 erueka 注册中心一 : eruekaServer 搭建工程, 项目目录 引入POM文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/ 阅读全文
posted @ 2020-09-08 18:54 抽象Java 阅读(282) 评论(0) 推荐(0)
摘要:Java内存模型(JMM) 和 JVM 内存模型描述的是两个概念。 Java内存模型 Java内存模型是Java语言在多线程并发情况下对于共享变量读写(实际是共享变量对应的内存操作)的规范,主要是为了解决多线程可见性、原子性的问题,解决共享变量的多线程操作冲突问题。 ( 参考:Java内存模型 ht 阅读全文
posted @ 2020-09-07 10:21 抽象Java 阅读(3515) 评论(0) 推荐(0)
摘要:1)Java文件先通过编译器变为.class文件2)类加载器将.class文件加载到JVM。 类加载的过程简述: Java文件先通过编译器变为.class文件 类加载器将.class文件加载到JVM。 一、JVM 组成和作用1、 类装载器(Class Loader):.class文件由类加载器加载到 阅读全文
posted @ 2020-09-07 10:14 抽象Java 阅读(199) 评论(0) 推荐(0)
摘要:cas 计数器 public class CounterCAS implements Counter { volatile int i = 0; // 本质是修改内存中某一个变量的值 static Unsafe unsafe; private static long valueOffSet; sta 阅读全文
posted @ 2020-09-06 20:18 抽象Java 阅读(245) 评论(0) 推荐(0)
摘要:CAS Compare and swap 比较和交换。 属于硬件同步原语, 处理器提供了基本内存操作的原子性保证。 底层 CAS 操作需要两个参数: 旧值A ( 操作前的值 ) 和 新值 B, 在操作时,先比较下输入的旧值 A 和 内存中的值是否不一致,不一致则代表内存数据发生变化, CAS 失败。 阅读全文
posted @ 2020-09-06 20:17 抽象Java 阅读(136) 评论(0) 推荐(0)
摘要:一、加锁实现计数器 public class CounterSync implements Counter { volatile int i = 0; // 本质是修改内存中某一个变量的值 public synchronized int incr() { return i++; } public i 阅读全文
posted @ 2020-09-06 15:51 抽象Java 阅读(437) 评论(0) 推荐(0)
摘要:一、使用 J.U.C中的 atomicInteger 实现计数器 由于(一)中的计数器不能保证并发安全,因此需要改一下; 思路:使用 J.U.C中的 AtomicInteger 实现计数器 二、实现 public class CounterAtomic implements Counter { // 阅读全文
posted @ 2020-09-06 15:48 抽象Java 阅读(429) 评论(0) 推荐(0)
摘要:面试题目:如何实现限流 思路: 限制同一时间段的请求数量,即使用计数器来限制请求的数量。 请求开始加1,请求结束减1; 思路实现代码 @RestController public class Demo1_CounterTest { Counter counter = new CounterBasic 阅读全文
posted @ 2020-09-06 14:58 抽象Java 阅读(501) 评论(0) 推荐(0)
摘要:目录: 多线程并发安全计数器实现限流 :https://www.cnblogs.com/Jomini/p/13621330.html 多线程并发安全计数器实现限流 (一) 简单实现 :https://www.cnblogs.com/Jomini/p/13621757.html 多线程并发安全计数器实 阅读全文
posted @ 2020-09-06 12:33 抽象Java 阅读(500) 评论(0) 推荐(0)
摘要:一、概述 Java内存模型是Java语言在多线程并发情况下对于共享变量读写(实际是共享变量对应的内存操作)的规范,主要是为了解决多线程可见性、原子性的问题,解决共享变量的多线程操作冲突问题。】 JMM描述了Java程序中各种变量(线程共享变量)的访问规则,以及在JVM中将变量存储到内存中读取出变量这 阅读全文
posted @ 2020-09-06 10:09 抽象Java 阅读(1466) 评论(0) 推荐(1)