自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java集合

一、常见的集合:Map接口和Collection接口是所有集合框架的父接口:Collection接口的子接口包括:Set接口和List接口Map接口的实现类主要有:HashMap、TreeMap、Hashtable、ConcurrentHashMap以及Properties等Set接口的实现类主要有:HashSet、TreeSet、LinkedHashSet等List接口的实现类主要有:...

2019-07-29 11:40:02 135

转载 理解jvm内存模型

在计算机中,cpu和内存的交互最为频繁,相比内存,磁盘读写太慢,内存相当于高速的缓冲区。但是随着cpu的发展,内存的读写速度也远远赶不上cpu。因此cpu厂商在每颗cpu上加上高速缓存,用于缓解这种情况。cpu上加入了高速缓存这样做解决了处理器和内存的矛盾(一快一慢),但是引来的新的问题 - 缓存一致性在多核cpu中,每个处理器都有各自的高速缓存(L1,L2,L3),而主内存确只有一个 。...

2019-07-25 18:10:40 129

转载 RPC详解

RPC(Remote Procedure Call) 远程服务调用是现在常用的技术,用于多个服务间的互相调用。一个精简的核心RPC所需要的模块:首先需要有处理网络连接通讯的模块,负责连接建立、管理和消息的传输;其次需要有编解码的模块,因为网络通讯都是传输的字节码,需要将我们使用的对象序列化和反序列化;剩下的就是客户端和服务器端的部分,服务器端暴露要开放的服务接口,客户调用服务接口的一个代理实现,...

2019-07-08 17:26:09 452

原创 SpringCloud知识点

微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分为一组小的服务,每个服务运行在其独立的自己的进程中,服务之间相互协调、互相配合,为用户提供最终价值,服务之间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。Spring Cloud事实上是一整套基于Spring Boot的微服务解决方案。springcloud如何实现服务的注册和发现:服务在发布...

2019-07-04 00:04:26 298

原创 接口、抽象类的区别

接口和抽象类的区别:含有 abstract 修饰符 class 即为抽象类。接口中的所有方法都必须是抽象的,接口中的方法定义默认为 public abstract 类型,接口中的成员变量类型默认为 public static final。抽象类中可以有普通成员变量;接口中没有普通成员变量。抽象类中可以包含非抽象普通方法;接口中的所有方法必须都是抽象的,不能有非抽象的方法。抽象类中的抽象方...

2019-07-03 23:14:04 5422

转载 SpringCloud服务认证(JWT)

为什么要使用jwt?在微服务架构下的服务基本都是无状态的,传统的使用session的方式不再适用。例如常用的鉴权框架Spring Security OAuth2和用Jwt来进行保护,相对于框架而言,jwt较轻,且可以自包含一些用户信息和设置过期时间,省去了Spring Security OAuth2繁琐的步骤。什么是JWT?jwt(JSON WEB TOKEN)是一种用来在网络上声明某种身份...

2019-07-02 11:54:27 3002

原创 乐观锁和悲观锁解析

乐观锁:乐观锁认为一般情况下数据不会造成冲突,所以在数据进行提交更新时才会对数据的冲突与否进行检测。如果没有冲突那就OK;如果出现冲突了,则返回错误信息并让用户决定如何去做。乐观锁在数据库上的实现完全是逻辑的,数据库本身不提供支持,而是需要开发者自己来实现。版本号控制的原理:1、为表中加一个 version 字段;2、当读取数据时,连同这个 version 字段一起读出;3、数据每更新...

2019-06-27 15:11:46 200

原创 RabbitMQ详解

使用RabbitMQ的好处:1、系统解耦2、异步调用3、流量削峰如何确保消息正确地发送至RabbitMQ?发送方确认模式:将信道设置成confirm模式(发送方确认模式),则所有在信道上发布的消息都会被指派一个唯一的ID。一旦消息被投递到目的队列后,或者消息被写入磁盘后(可持久化的消息),信道会发送一个确认给生产者(包含消息唯一ID)。如果RabbitMQ发生内部错误从而导致消息丢失,会...

2019-06-26 20:01:34 788

原创 sql优化

1、一定不要使用select * ,因为会返回过多无用的字段会降低查询效率。应该使用具体的字段代替*,只返回使用到的字段。2、不要在where条件中使用左边是%的like模糊查询,这样会导致数据库引擎放弃索引进行全表扫描。...

2019-06-25 17:25:29 93

原创 mysql两种存储引擎的区别

MyISAM:不支持事务,但是每次查询都是原子的;支持表级锁,即每次操作是对整个表加锁;存储表的总行数;一个MYISAM表有三个文件:索引文件、表结构文件、数据文件;采用菲聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯一性。InnoDb:支持ACID的事务,支持事务的四种隔离级别;支持行级锁及外键约束:因此可以支持写并发;不存储总行...

2019-06-25 16:20:49 232

转载 java类加载机制

当程序主动使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、链接、初始化3个步骤来对该类进行初始化。加载指的是将类的class文件读入到内存,并为之创建一个java.lang.Class对象。类的加载由类加载器完成,类加载器通常由JVM提供;进入链接阶段,链接阶段负责把类的二进制数据合并到JRE中。类连接又可分为如下3个阶段:1)验证:验证阶段用于检验被加载的类是否有正确的内部...

2019-06-25 11:11:44 234

转载 Springmvc知识点

SpringMVC的流程:(1)用户发送请求至前端控制器DispatcherServlet;(2) DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取Handle;(3)处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;(4)DispatcherServle...

2019-06-24 15:56:17 89

转载 Spring详解

Spring的核心:IOC和AOPIOC:控制反转,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系,可以很好地实现模块之间的解耦原理:通过反射实现,Class.forName().newInstanceDI 依赖注入,是IOC的重要实现,指Spring创建有依赖关系的对象的过程中,由IOC容器注入依赖的对象AOP:面向切面编程,就是系统中有很多各不相干的...

2019-06-24 15:34:25 115

原创 GC

JVM运行内存的分类:程序计数器:当前线程所执行的字节码的行号指示器,用于记录正在执行的虚拟机字节指令地址,线程私有注:如果正在执行的是Native方法,计数器值则为空Java虚拟栈:存放基本数据类型、对象的引用、方法出口等,线程私有Native方法栈:和虚拟栈相似,只不过它服务于Native方法,线程私有Java堆:java内存最大的一块,所有对象实例、数组都存放在java堆,GC回收...

2019-06-22 21:03:07 111

转载 synchronized与Lock的区别

1、lock是一个接口,而synchronized是java的一个关键字2、异常是否释放锁:synchronized在发生异常时候会自动释放占有的锁,因此不会出现死锁;而lock发生异常时候,不会主动释放占有的锁,必须手动unlock来释放锁,可能引起死锁的发生。(所以最好将同步代码块用try catch包起来,finally中写入unlock,避免死锁的发生。)3、是否知道获取锁Lock...

2019-06-20 17:12:24 4564 2

原创 线程sleep和wait的区别

线程sleep和wait的区别1、sleep方法是Thread类的静态方法,wait()是Object超类的成员方法2、sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁;而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针...

2019-06-19 17:19:43 3075

转载 synchronize原理分析

synchronized的三种应用方式一. 修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁。二. 修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁。三. 修饰代码块,指定加锁对象,对给定对象加锁,进入同步代码库前要获得给定对象。synchronized的字节码指令synchronized同步块使用了monitorenter和monitorexit...

2019-06-19 16:58:16 8353 1

原创 线程池参数详解

一、线程池参数和意义ThreadPoolExecutor mExecutor = new ThreadPoolExecutor(corePoolSize,// 核心线程数 maximumPoolSize, // 最大线程数 keepAliveTime, // 闲置线程存活时间 TimeUnit.MILLISECONDS,// 时间单位 new Li...

2019-06-19 16:18:38 287

原创 java反射

反射:我们把这种动态获取对象信息和调用对象方法的功能称之为反射机制。所谓反射其实是获取类的字节码文件,也就是.class文件,那么我们就可以通过Class这个对象获取类的构造方法、方法以及属性。应用场景:逆向代码 ,例如反编译与注解相结合的框架 例如Retrofit单纯的反射机制应用框架 例如EventBus 2.x动态生成类框架 例如GsonSpring和Hibernate中使用...

2019-06-19 14:38:47 81

原创 重写equals就必须重写hashCode的原理分析

如果不被重写(原生Object)的hashCode和equals是什么样的?不被重写(原生)的hashCode值是根据内存地址换算出来的一个值。不被重写(原生)的equals方法是严格判断一个对象是否相等的方法(object1 == object2)。对象如果重写了重写equals方法,此时两个对象相等;如果hashcode方法就是Object默认的hashcode方法,由于默认的hashc...

2019-06-18 17:30:19 138

转载 final修饰变量、方法、类的作用

1、final修饰类final类不能被继承,因此final类的成员方法没有机会被覆盖,默认都是final的。在设计类时候,如果这个类不需要有子类,类的实现细节不允许改变,并且确信这个类不会载被扩展,那么就设计为final类。2、 final修饰方法如果一个类不允许其子类覆盖某个方法(即不允许被子类重写),则可以把这个方法声明为final方法。使用final方法的原因有二:把方法锁定,防止...

2019-06-18 16:08:58 13024

转载 Object方法

1.clone方法保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常。主要是JAVA里除了8种基本类型传参数是值传递,其他的类对象传参数都是引用传递,我们有时候不希望在方法里讲参数改变,这是就需要在类中复写clone方法。2.getClass方法final方法,获得运行时类型。3.toStrin...

2019-06-18 15:50:40 121

原创 ==和equals区别

java中的数据类型,可分为两类:1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean基本类型的比较应用双等号(),比较的是他们的值。2.复合数据类型(类)当复合数据类型用()进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。...

2019-06-18 14:50:45 582

转载 java基本数据类型

1.基本数据类型byte占用1个字节(8位),范围:-2 7~27-1short占用2个字节(16位),范围:-215~215-1int占用4个字节(32位),范围:-231~231-1long占用8个字节(64位),范围:-263~263-1float占用4个字节(32位,1位符号位,8位指数位),范围:2-149~2128-1double占用8个字节(64位,1位符号位...

2019-06-18 14:23:09 102

转载 去除IntelliJ IDEA中重复代码报灰黄色的下划波浪线

在IDEA中根据设置的不同,有些代码页,当代码重复比较多时,会出现灰色或黄色的波浪线原因知道了,解决的办法也出来了,这个设置,如果不想让它出现波浪线的话,可以在File->Settings->Editor->Code Style->Inspections->General->Duplicated Code 把方框里的对勾取消就OK了转自:https...

2019-06-04 15:16:44 4397

转载 HashMap原理

哈希冲突当我们对某个元素进行哈希运算,得到一个存储地址,然后要进行插入的时候,发现已经被其他元素占用了,其实这就是所谓的哈希冲突,也叫哈希碰撞。那么哈希冲突如何解决呢?哈希冲突的解决方案有多种:开放定址法(发生冲突,继续寻找下一块未被占用的存储地址),再散列函数法,链地址法,而HashMap即是采用了链地址法,也就是数组+链表的方式HashMap实现原理HashMap的主干是一个Entry...

2019-06-04 15:10:02 145

转载 Integer与int的比较与区别

如果面试官问Integer与int的区别:估计大多数人只会说道两点,Ingeter是int的包装类,int的初值为0,Ingeter的初值为null。package com.test;/** * * @author 刘玲 * */public class TestInteger { /** * @param args */ public sta...

2019-06-03 12:00:52 1787

转载 String、StringBuffer和StringBuilder的区别

String,StringBuffer,StringBuilderString是不可变的对象, 因此在每次对String 类型进行改变的时候,都会生成一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,性能就会降低。St...

2019-05-31 17:46:02 253

空空如也

空空如也

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

TA关注的人

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