基础
文章平均质量分 77
烟锁迷城
这个作者很懒,什么都没留下…
展开
-
SpringCloud基础(六)Hystrix:熔断降级
目录1、基础概念2、使用方式3、OpenFeign使用Hystrix实现降级3.1、接口写法3.2、实现FallbackFactory4、熔断机制5、依赖隔离5.1、线程池隔离5.2、信号量隔离6、Gateway使用Hystrix实现降级1、基础概念Hystrix是一个分布式组件,其主要功能有:对第三方客户端访问的依赖项的延迟和故障进行保护和控制 在复杂的分布式系统中阻止级联故障 快速失败,快速恢复 回退,尽可能优雅地降级 启用近实时监控,警报和操原创 2021-11-26 18:34:43 · 978 阅读 · 0 评论 -
SpringCloud基础(一)Eureka:服务注册与发现
1、原创 2021-11-04 18:27:59 · 338 阅读 · 0 评论 -
SpringBoot基础(二)集成插件
1、SpringBoot整合Servlet1.1、第一种方式首先自定义servlet类package com.lichong.demo;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import java原创 2021-10-28 18:30:27 · 377 阅读 · 0 评论 -
SpringBoot基础(一)自动装配原理
SpringBoot是为了简化开发而出现的技术。1、SpringBoot项目构建1.1、官网生成https://start.spring.io/1.2、IDE在线模板生成在IDEA等编译工具中,也有对应的生成方法。2、常见配置2.1、入口类和相关注解...原创 2021-10-25 21:22:46 · 227 阅读 · 0 评论 -
Mybaits基础(三)缓存
1、一级缓存在Mybaits的jar包中,所有的缓存都需要实现一个接口org.apache.ibatis.cache.Cache原创 2021-10-16 22:52:42 · 173 阅读 · 0 评论 -
MyBaits基础(二)核心配置
1、mybaits-config.xml将Mybaits集成到Spring中,需要添加一些配置文件。它的核心配置文件,就是mybaits-config.xml。1.1、configuration标签configuration标签是所有标签的父标签,它同时对应着mybaits的配置类configuration。1.2、properties标签properties是为了引入properties文件,用来添加数据库连接配置的标签。这个标签可以没有,但是mybaits-config.xml的数据原创 2021-10-13 00:01:07 · 173 阅读 · 0 评论 -
Mybaits基础(一)ORM框架
1、JDBC连接过程注册驱动 创建statement对象 execute()方法执行SQL 把结果集转换成POJO对象 关闭资源2、原创 2021-10-12 17:24:43 · 124 阅读 · 0 评论 -
Spring基础(三)事务
1、事务原创 2021-09-22 22:13:42 · 125 阅读 · 0 评论 -
Spring基础(二)AOP面向切面编程
1、代理模式原创 2021-09-08 18:01:43 · 224 阅读 · 1 评论 -
Spring基础(一)IOC容器及常见注解
123456789原创 2021-08-23 23:04:47 · 564 阅读 · 0 评论 -
JVM基础(五)JVM参数
1、JVM参数标准参数:java -version就是标准参数 -X参数:java -Xint -version将显示变为解释执行 -XX参数:-XX:[+/-],意思是开启或关闭,如-XX+UseG1GC。-XX:<name>=<value> ,如-XX:InitialHeapSize=100M 其他参数:-Xms100M就等同于:XX:InitialHeapSize=100M2、JVM命令jps:当前的java进程,输入jps可查看所有java进程,jps -l可原创 2021-07-30 00:13:35 · 190 阅读 · 0 评论 -
JVM基础(四)GC(垃圾回收机制)
1、判断垃圾的标准引用计数:可以通过判断一个对象被引用的次数来决定这个对象是否可以被回收,但这种判断具有缺点,如果一个对象和另一个对象互相引用,即循环引用,这就导致这个对象永远不可能被回收。 可达性分析:由GC Root开始寻找某个对象是否可达,即无论是间接引用还是直接引用,都可以到达某个对象,证明这个对象仍在使用。这对于GC Root提出了较高要求,适合成为GC Root的对象有:类加载器,Thread,本地变量表,static成员,常用引用,本地方法栈中的变量。2、垃圾回收算法标记清除:标记原创 2021-07-27 00:26:19 · 142 阅读 · 0 评论 -
JVM基础(三)JVM内存模型
1、Young区刚刚创建的对象会被分配到Young区,每经过一次GC,年龄就增加一,等到年龄到达一个临界值的时候,就会被分配到Old区,在默认情况下,这个分界线是15。除了GC年龄,大对象也会因为存储问题直接被分配到Old区。2、Eden区,Survivor区因为新对象会被分配到Young区,可能导致空间紧张,需要进行垃圾回收,这时就会造成磁盘碎片,存储空间变得不连贯,导致一个本来可以存储的对象因为磁盘碎片无法存储,再次触发GC。为了减少GC次数,将Young区划分为Eden区和Su..原创 2021-07-20 23:07:42 · 203 阅读 · 0 评论 -
JVM基础(二)数据区
1、方法区(Method Area)方法区是各个线程共享的内存区域,在虚拟机启动时创建,因此在方法区内的数据线程不安全。 用于存储已经被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据。 java虚拟机规范把方法区描述为堆的一个逻辑部分,但它别名非堆(Non-Heap),木齐市与java堆区分开。 当方法区无法满足内存分配需求时,将抛出OutOfMemoryError 方法区在Java8中被称为Meta Space(元空间),在Java7,6中被称为Perm Space(永久代)原创 2021-07-19 00:44:49 · 206 阅读 · 1 评论 -
JVM基础(一)类加载机制
1、类加载机制类加载机制就是class装载到JVM的过程,可以划分为装载,链接,初始化三个阶段。链接都包含验证,准备,解析三个步骤。1.1、装载通过一个类的全限定名获取定义此类的二进制字节流 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构 在java堆中生成一个代表这个类的java.lang.Class对象,作为对方法区中这些数据的访问入口1.2、链接验证:保证被加载类的正确性,进行文件格式验证,元数据验证,字节码验证,符号引用验证 准备:为类的静态变量分配内存,并将其原创 2021-07-16 00:53:50 · 103 阅读 · 0 评论 -
IO流基础(三)NIO
1、基础概念1.1、同步与异步同步:客户端发起请求,如果这个请求需要同步等待结果,那么在结果到达之前,这个客户端一直处于阻塞状态 异步:客户端发起请求,如果这个请求需要异步等待结果,那么在结果到达之前,这个客户端可以去做其他事情1.2、阻塞与非阻塞阻塞:客户端发起一个请求,这个请求需要同步等待结果,在等待结果之前,这个客户端一直处于阻塞状态。 非阻塞:客户端发起一个请求之后,不会阻塞可以继续进行其他操作,服务器将异步返回结果。2、IO模型2.1、阻塞IO用户进程调用应用进程,从内原创 2021-07-12 23:26:58 · 174 阅读 · 1 评论 -
IO流基础(二)网络IO
#原创 2021-07-04 20:33:21 · 133 阅读 · 3 评论 -
IO流基础(一)基础运用
1、ConcurrentHashMapConcurrentHashMap是一个线程安全的HashMap,java1.7和java1.8之间的实现差距非常大,这里只讨论有关1.8版本的实现。类似于HashMap,ConcurrentHashMap同样采用了数组+链表或红黑树的结构。为了保证线程安全,当某一个线程对数组的某一个元素进行操作时,会将这个元素锁定,其他线程只有等待锁的释放,释放之后才能继续操作该元素。ConcurrentHashMap初始化会创建一个长度为16的数组,根据key值计算hash后原创 2021-06-26 00:35:46 · 133 阅读 · 1 评论 -
多线程基础(六)线程池
1、基础认知线程池的作用是提前创建好若干个线程放在一个容器里,如果有任务需要处理,则将任务直接分配给线程池中的线程来执行,任务处理完后这个线程不会被销毁,而是等待后续分配任务,它具有以下效果:降低创建线程和销毁线程的性能开销提高响应速度,当有新任务需要执行是不需要等待线程创建就可以立即执行合理的设置线程池大小可以避免因为线程数超过硬件限制带来的问题2、具体使用在java中,提供了四种预定线程池来进行使用。newFixedThreadPool,创建固定数量的线程池newSingleThr原创 2021-06-17 15:52:43 · 110 阅读 · 0 评论 -
多线程基础(五)JUC工具包
1、重入锁在JUC工具包中,有Lock抽象方法,它同样实现了锁。在示例中的代码,Lock lock = new ReentrantLock();声明锁的存在,lock.lock();开启锁,因为开启锁就一定要关闭锁,所以将解锁语句lock.unlock();放在finally中,加锁保护的对象放在这两段代码之间,这样加锁就完成了。static Lock lock = new ReentrantLock();public static int count = 0;public static voi原创 2021-06-17 15:51:53 · 428 阅读 · 1 评论 -
多线程基础(四)安全发布对象
1、发布1.1、发布对象发布的意思是使一个对象能够被当前范围之外的代码所使用。public static HashSet<User> user;public void createUser(){ user = new HashSet<User>();}在发布对象的时候,可能会顺便发布其他对象,这就可能导致一些不应该被发布的对象被发布出去,导致线程安全问题。1.2、不安全的发布一个私有的成员变量,发布之后就能通过外部方式修改其内部的数值,这就是一种不安全发布。在例原创 2021-06-07 21:50:57 · 104 阅读 · 0 评论 -
多线程基础(三)线程安全解决方案
1、线程安全当多个线程访问某个对象时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。1.1、线程安全问题产生的原因在操作系统中CPU的速度最快,内存次之,磁盘最慢,CPU资源又是最宝贵的,所以为了平衡三者之间的速度,做出如下优化:CPU增加了高速缓存,均衡与内存的速度差异操作系统增加进程,线程,分时复用CPU,均衡CPU与IO设备的速度差异编译程序优化指令的执行顺序,是的能够更加合理原创 2021-06-07 21:50:40 · 283 阅读 · 2 评论 -
多线程基础(二)常用方法介绍
1、Thread.joinjoin()函数的作用是保证线程执行结果的可见性,即保证线程A的结果对线程B可见。在示例代码中,线程thread的结果对主线程可见,是因为thread让主线程阻塞,直到thread线程执行完毕才唤醒主线程,这样就让thread的结果对主线程可见。private static int a = 1; public static void main(String[] args) throws InterruptedException { Thread th原创 2021-06-07 21:50:23 · 112 阅读 · 0 评论 -
多线程基础(一)概念与认识
1、进程与线程进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。线程是进程的最小单位,一个进程有多个线程组成,它至少包含一个线程。对于单核CPU而言,多线程就是不断分配时间片来切换线程。对于多核CPU而言,多线程就是多核心并行执行,每一个核心处理一个线程。多线程可以有效的提升程序运行的效率,在JAVA中是一种非常常用的编程方法。2、具体实现2.1、thread类线程可以通过继承thread类,重写run方法,用s原创 2021-06-07 21:50:04 · 73 阅读 · 0 评论 -
Java核心知识(五)自定义注解
1、定义注解,也叫元数据,是一种代码级别的说明,是JDK1.5之后的一种新引入的特性。2、作用编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查,如@Override重写方法说明编写文档:通过代码里标识的注解生成文档,如生成Doc文档代码分析:通过代码里标识的注解对代码进行分析,如反射3、JDK预定义注解@Override:检查该注解标注的方法是否继承自父类或接口@Deprecated:表示注解注释的内容已经过时@SuppressWarnings:压制警告4、自定义注解原创 2021-06-02 16:47:40 · 142 阅读 · 0 评论 -
Java核心知识(四)反射
1、定义对于给定的一个类(class)对象,可以获得这个类(class)对象的所有属性和方法对于给定的一个对象(new X <? extends Object>),都能够调用它的任意一个属性和方法。原创 2021-06-02 16:40:42 · 84 阅读 · 0 评论 -
Java核心知识(三)泛型
1、基本概念1.1、泛型本质泛型的本质是参数化类型,它能够指定参数数据类型,统一类型防止出现参数类型转换问题。1.2、泛型擦除泛型只在编译阶段有效,编译之后JVM会采取去泛型化的措施...原创 2021-06-01 23:46:01 · 90 阅读 · 0 评论 -
Java核心知识(二)集合
1、List接口1.1、ArrayList初始设定参数,可以看到,ArrayList本质是一个数组。默认长度为10空数组默认长度空数组数据数组元素个数 //默认数组长度 private static final int DEFAULT_CAPACITY = 10; //空数组 private static final Object[] EMPTY_ELEMENTDATA = {}; //默认长度的空元素数组 private static final Ob原创 2021-06-01 23:44:37 · 132 阅读 · 0 评论 -
Java核心知识(一)数据结构
1、数据结构1.1、数组内存地址连续,使用之前必须要指定数组长度可以通过下标访问的方式访问成员增删操作会给系统带来性能消耗来保证数组下标越界的问题,需要动态扩容。int a[] = new int[]{1,2,3,4,5};int a[] = new int[5];a[0] = 1;1.2、链表单向链表:每一个链表节点都具有下一个节点的地址双向链表:每一个链表节点都具有上一个节点的地址与下一个节点的地址灵活的空间要求,不需要连续内存不支持下标访问,读写效率降低,支持顺序遍历检原创 2021-06-01 23:44:17 · 105 阅读 · 0 评论