自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (1)
  • 收藏
  • 关注

原创 单例的双重检测实现

//改进

2019-01-30 14:14:20 609

原创 Java8 新特性

一、Lambda表达式:Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中。)Lambda表达式可以说是Java 8最大的卖点,她将函数式编程引入了Java。Lambda允许把函数作为一个方法的参数,或者把代码看成数据。一个Lambda表达式可以由用逗号分隔的参数列表、–>符号与函数体三部分表示。例如:Arrays.asList( "p", "k", "u","f...

2019-01-28 00:35:47 151

原创 自定义Classloader实现类加载

1.testpackage com.interview.javabasic.reflect;public class ClassLoaderChecker { public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationExce...

2019-01-27 16:07:23 528

原创 happen-before原则

1.什么是happen-before(1)编写的程序都要经过优化(编译器和处理器会对程序进行优化)后才会被运行,优化分为很多种,其中有一种优化叫做重排序,重排序需要遵守happens-before规则。(2)a happens-before b :happens-before关系保证a操作将对b操作可见。2.happen-before原则(前一个操作的执行结果必须对后一个操作可见)...

2019-01-24 22:40:39 3879 2

原创 volatile关键字——JVM提供的轻量级同步机制

一、线程安全性1.Java内存模型中的可见性、原子性、有序性。(1)可见性:一个线程修改的状态对另一个线程是可见的;(2)原子性:同一时刻只有一个线程可以对它进行操作;(3)有序性:保证线程之间操作的有序性。二、volatile关键字1.jvm内存模型(1)普通变量:每个线程先从内存拷贝变量到CPU缓存中,如果计算机有多个CPU,每个线程可能在不同的CPU上被处理,...

2019-01-24 22:22:23 362

原创 java内存屏障+可见性

1.内存屏障:(如果字段是volatile,Java内存模型将在写操作后插入一个写屏障指令,在读操作前插入一个读屏障指令)(1)内存屏障(memory barrier)是一个CPU指令。这条指令可以确保一些特定指令的执行顺序,影响一些数据的可见性(可能是某些指令执行后的结果)。(2)插入一个内存屏障,相当于告诉CPU和编译器先于这个命令的必须先执行,后于这个命令的必须后执行。内存屏障另一个...

2019-01-24 21:45:58 1535

原创 数据库基础:视图和临时表

视图是一个预编译的sql语句,不保存实际的数据,而临时表是保存在tempdb中的实际的表。一、视图1.什么是视图?从一个或多个表中导出的表。2.视图的特点?(1)视图是一条预编译的SQL语句,并不保存实际数据、数据库只存储视图的定义;(2)视图不分配空间;(3)视图主要用于系统的安全、查询和效率;3.视图的应用场景?(1)保密工作,比如有一个员工工资表,如果你只...

2019-01-22 17:58:03 1663

原创 数据库基础:触发器

一、触发器1.什么是触发器?(1)触发器是一种特殊的存储过程,它在插入,删除或修改特定表中的数据时触发执行,常用来同步更新数据,使用触发器可以更高效的维护数据;(2)特点:触发事件的操作和触发器里的SQL语句是一个事务操作,具有原子性,要么全部执行,要么都不执行;(3)作用:保证数据的完整性,起到约束的作用;2.创建触发器(建立触发器时就要指定该触发器的用途)(1)语法规则...

2019-01-22 15:34:46 626

原创 浅谈mysql B+树

叶子节点存储数据(数据记录)、B+树的非叶子节点只是存储key。1.b+树是什么?(1)是多叉树不是二叉树,且每个节点可以包含更多的节点(为了降低树的高度;另外一个是将数据范围变为多个区间,区间越多,数据检索越快。)(2)叶子节点两两相连,为顺序查询提供了帮助;(3)非叶子节点存储key,叶子节点存储key和数据;(4)每个节点不再只是存储一个key了,可以存储多个key;...

2019-01-21 21:14:45 2473 1

原创 mysql的innodb索引数据结构是B+树,而不是hash?

一、基础1.什么是聚簇索引?innodb中,主键的索引结构中,既存储了主键值,又存储了行数据。2.B+树和B-树的区别?(1)B+树只有叶节点存放数据,其余节点用来索引;(2)而B-树是每个索引节点都会有Data域。二、mysql的innodb索引数据结构是B+树,而不是hash?1.哈希索引适用的场景适合等值查询(前提是不存在大量重复键值,如果存在重复键就会出现哈...

2019-01-21 21:14:23 1989

原创 Mysql插入中文时提示:ERROR 1366 (HY000): Incorrect string value: '\xE5\x8F\xB0\xE5\xBC\x8F...' fo

1.修改表的编码方式ALTER TABLE `sales` DEFAULT CHARACTER SET utf8;2.修改字段的编码方式:ALTER TABLE `sales` CHANGE `sname` `sname` VARCHAR(36) CHARACTER SET utf8 NOT NULL; 

2019-01-21 16:37:17 341

原创 mysql主从复制

一、什么是主从复制?1.用来建立一个和主数据库完全一样的数据库环境,称为从数据库。主数据库一般是准实时的业务数据库。在master中创建数据库,创建表,进行增删改操作都会被同步到所有slave中。2.从库只能读数据,因为当从库写了数据positon会变化,且从库的版本要高于或等于主库。二、主从复制的原理?(1)主库db的更新事件(update、insert、delete)被写到...

2019-01-19 17:28:19 194

原创 关于mysql索引的问题

什么样的字段适合建索引?唯一、不为空、经常被查询的字段。一、mysql索引的概念1.数据库索引是一种特殊的文件,通俗来说就像一本书的目录。(注:一般数据库默认都会为主键生成索引)二、MySQL索引方法有几种?(mysql索引结构)常见的有B+树和hash. 详情见https://blog.csdn.net/Michaeles/article/details/86532876三、...

2019-01-18 00:04:42 257

原创 mysql索引常见的数据结构

1.B+树、hash

2019-01-17 23:13:40 375

原创 详解mysql间隙锁

1.什么是间隙锁?(1)对于键值在条件范围内但并不存在的记录(在相等条件下请求给一个不存在的记录也会加锁),叫做“间隙(GAP)”,InnoDB也会对这个“间隙”加锁,这种锁机制就是所谓的间隙锁(Next-Key锁)。(2)查询使用的范围条件不是相等条件,InnoDB会给符合条件的已有数据记录的索引项加锁;2.举例mysql> select * from emp where...

2019-01-17 18:51:00 2159

原创 详解synchronized和reentrantlock的区别

一、synchronized和reentrantlock的区别?(1)可重入锁比Synchronized多了锁投票、定时锁等候、中断锁等候;线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定,如果使用 synchronized ,如果A不释放,B将一直等下去,不能被中断如果 使用ReentrantLock,如果A不释放,可以使B在等待了足够长的时间以后...

2019-01-16 01:18:30 3024

原创 Java实现线程同步的几种方式?

1.为什么要使用同步?使用多线程时,保证数据的唯一性和准确性。二、Java实现同步的几种方式//通过加synchronized关键字实现多个线程同时访问共享资源时出现的问题,当有申请者申请该资源时,如果资源没有被占用,就给这个申请者使用,否则不能使用该资源。1.synchronized关键字(1)同步方法public synchronized void save(){}...

2019-01-16 00:24:05 10776

原创 mysql事务隔离级别

一、事务的基本元素(1)原子性(Atomicity):事务开始后,要么全做完,要么都不做。(2)一致性(consistency):事务开始前和结束后,数据库的完整性约束没有被破坏,比如A向B转账,不可能A扣了钱,B却没收到。(3)隔离性(isolation):多个并发事务之间相互隔离。对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后...

2019-01-14 22:22:02 159

原创 数据库常用的锁有哪些

一、数据库为什么需要锁?为了保证数据的一致性。mysql数据库存在多种数据引擎,MySQL各存储引擎使用了三种类型(级别)的锁定机制:表级锁定,行级锁定和页级锁定。二、表级锁1.表级锁(表级锁一次会将整个表锁定,所可以很好的避免死锁问题)(1)锁定粒度大,锁冲突概率高、并发度低;(2)好处是不会出现死锁、开销小、获取锁和释放锁的速度很快;(3)使用表级锁定的主要是MyISA...

2019-01-14 22:13:12 31800 8

原创 详解mysql死锁的问题

一、死锁1.死锁:两个或以上的进程在执行过程中因争夺资源造成的相互等待的现象(1)表级锁不会产生死锁,所以解决死锁主要还是针对于最常用的InnoDB.(2)产生死锁的关键:两个(或以上)的Session加锁的顺序不一致。(解决:让加锁有顺序)二、代码举例 mysql索引的使用明天要看...

2019-01-14 21:58:04 2536

原创 mysql中悲观锁的使用

一、普通用法场景举例:商品goods表中有一个字段status,status为1代表商品未被下单,status为2代表商品已经被下单,那么我们对某个商品下单时必须确保该商品status为1。假设商品的id为1。如果不采用锁,那么操作方法如下:/1.查询出商品信息select status from t_goods where id=1;//2.根据商品信息生成订单insert i...

2019-01-14 21:02:20 2871

原创 Mysql数据库引擎的区别

1.MyISAM:mysql默认的插件式存储引擎,适用于主要插入和查询记录;2.InnoDB:用于事务处理,包括ACID事务支持(提供行级锁),适用于需要实现并发控制和事务(ACID)的项目。3.memory:将所有数据保存在RAM中,可提供极快的访问。适用于临时存放数据,数据量不大,如果只是临时存放数据,并且不需要较高的数据安全性。MySQL中使用该引擎作为临时表,存放查询的中间结果...

2019-01-14 17:56:32 522

原创 mysql常用基础

1.数据库中为什么要设置主键和外键?(1)定义主键和外键是为了维护关系数据库的完整性。(2)主键能确定一条唯一的记录;(3)外键用于与另一张表的关联。用于确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。2.in和exsits的用法(1)in(非关联查询):适合于外表大而内表小的情况;(2)exsits(关联子查...

2019-01-14 12:17:04 141

原创 Java值传递还是引用传递

一、值传递(只有基本类型和String str = “Java测试”;是值传递)1.值传递(参数拷贝):方法调用时,实际参数把它的值传递给对应的形式参数,方法执行中形式参数值的改变不影响实际参数的值。public class TempTest { public static void main(String[] args) { int num =...

2019-01-13 22:00:02 151

原创 从浏览器打开http://www.baidu.com地址回车发送请求到看到页面的过程?

一、整体过程1.将域名解析成ip的过程;2.通过ip找到网站服务器,请求打开具体的网页,服务器响应请求,客户端浏览器收到响应报文后,渲染html文档,最终看到网页页面。二、原理1.dns解析的流程?(1)输入网址回车的时候,浏览器首先查询浏览器的缓存,如果没找到就去查询本地的dns缓存和hosts文件,如果有www.baidu.com这个域名对应的ip,则直接通过这个ip访...

2019-01-12 20:19:25 22373 1

原创 算法-归并排序

一、归并排序1.归并排序算法思想:先递归的分解数列,再合并数列就完成了归并排序。参考:https://www.cnblogs.com/crystalmoore/p/5930841.html2.举例 2 1 3 8 5 7 6 4 103.代码实现//将有二个有序数列a[first...mid]和a[mid...last]合并。void mergearray(int ...

2019-01-10 21:34:55 218

原创 乐观锁和悲观锁的原理及应用场景

一、乐观锁和悲观锁的策略1.悲观锁(一般都是通过锁机制来实现的)(1)每次去拿数据都会认为别人会修改,所以每次拿数据的时候都会上锁。比如:行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。再比如Java里面的同步原语synchronized关键字的实现也是悲观锁。2.乐观锁(1)每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新...

2019-01-10 11:57:55 3678

原创 堆(heap)和栈(stack)有什么区别?

一、Java内存模型1.哪里用到了内存划分?(1)虚拟机执行Java代码时,首先要把字节码文件加载到内存,那么这些类的信息都存放在哪个区域呢?(2)当我们创建一个对象实例的时候,虚拟机要为对象分配内存,虚拟机是如何分配内存的呢?2.Java内存模型(Java虚拟机的内存是如何划分的?虚拟机内存划分机制?)(1)程序计数器:是线程私有的,JVM支持多线程同时执行,存放当前正在...

2019-01-09 22:18:31 1547

原创 OOM异常

1.什么是OOM?程序申请内存过大,虚拟机无法满足它们,并且垃圾回收器也没有空间可回收。JVM然后自杀了。2.为什么会发生OOM?(1)虚拟机本身可使用的内存太少(2)应用用的太多,并且用完没释放,浪费了。此时就会造成内存泄露或者内存溢出。 内存泄露:申请使用完的内存没有释放,导致虚拟机不能再次使用该内存,此时这段内存就泄露了,因为申请者不用了,而又不能被虚拟机分配给别人用。 内存...

2019-01-09 21:01:36 668

原创 如何实现线程安全的HashMap

1、为什么HashMap线程不安全?(1)内部存储结构:HashMap内部存储使用了一个Node数组(默认大小是16),如果存在相同的hashcode和相同的key的元素,那么新值覆盖原来的旧值;如果存在相同的hashcode,那么他们的索引位置就相同,这时判断他们的key是否相同,如果不相同,这时就是产生了hash冲突,这时数据放在一个 Entry 链。 (2)自动扩容机制:如果多个...

2019-01-09 20:57:40 6399

原创 HaspMap底层实现原理

1.hashMap的原理,是如何实现的?线程安全问题? hashmap如何实现动态扩容?(1)实现原理HashMap是基于散列法(又称哈希法hashing)的原理,使用put(key,value)存储对象到HashMap中,使用get(key)从HashMap中获取对象。当给put()方法传递键和值时,我们先对键调用hashCode()方法,根据返回的hashCode用于找到bucket(...

2019-01-09 20:56:11 1305

原创 Map子类——HashMap、LinkedHashMap、TreeMap、HashTable

一、HashMap的特点(和set类似)1.hashmap是map的实现类;2.允许一个null键和多个null值;3.hashmap中的元素没有顺序;4.不是线程安全的二、LinkedHashMap 带有添加顺序1.linkedhashMap是map的实现类;2.允许有一个null键和多个null值;3.linkedhashMap是有顺序的(添加顺序);4.不...

2019-01-09 20:52:43 279

原创 解决下载时 火狐浏览器文件名中文乱码问题

//解决火狐浏览器文件名中文乱码问题String agent = request.getHeader("User-Agent");//根据不同浏览器进行不同的编码String realFilename = "";if (agent.contains("MSIE")) { // IE浏览器 realFilename = URLEncoder.encode(fileName,...

2019-01-02 17:46:39 3425

原创 详解Java反射

一、基本概念1.反射机制:在运行状态中,可以动态的获取类信息及动态的调用类对象方法的功能。2.反射常用的几个方法(1)getDeclaredMethod(方法名,参数):返回对应的方法;(2)Field属性:getType()返回字段类型,getName()返回字段名称,set()设置新值3.反射的作用?(1)在运行时判断任意一个对象所属的类、判断任意一个类所具有的成员变量...

2019-01-02 17:38:02 253

原创 Java抽象+多态的简单应用

一、抽象1.抽象:使用abstract声明的类叫作抽象类,当父类的某些方法不确定,就可以用抽象类。(1)抽象类是一种模板,不能被实例化;(2)子类继承抽象类,如果子类不是抽象类,就要实现基类中全部的抽象方法;如果子类是抽象类,可以不用写抽象方法、也可以重写抽象方法;2.抽象类和接口的区别(1)抽象方法是抽象类里边的;(2)抽象方法是相对接口而言的,接口必须实现基类中的全部方...

2019-01-02 11:54:26 312

原创 Sprincloud 基础——Eureka

1.Eureka服务注册发现(心跳检测、健康检查、负载均衡)(1)Eureka server注册中心:供服务注册的服务器;(2)Eureka client服务注册:用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。系统中其他微服务使用client 连接到Eureka server,并维持心跳连接,这样就可以监控为服务是否异常。2.server端简单配置(启动类加相应...

2019-01-01 20:24:03 237

原创 Spring IOC :Spring通过DI(依赖注入)实现IOC(控制反转)

一、DI依赖注入1.谁依赖谁,为什么需要依赖,谁注入谁,注入了什么?应用程序依赖IOC容器、需要IOC容器提供对象、IOC注入对象、注入了外部对象2.常用的3种注入方式?注解注入、setter注入、构造方法注入二、Ioc控制反转1.将对象和依赖对象的创建交给Spring容器去管理。由spring来负责控制对象的生命周期和对象间的关系。2.谁控制谁,控制什么、为何是反转、哪些...

2019-01-01 14:56:51 1022

原创 spring aop实现原理

一、AOP概念(Aspect Oriented Programming切面面向编程)1.AOP是一种 思想,是OOP(面向对象编程)的延续,主要实现业务和切面的逻辑分离,降低耦合度,用作权限认证、过滤器、拦截器、日志、事务处理等。2.实现原理:通过预编译的方式,在运行期基于动态代理的方式来实现的一种技术。二、动态代理1.Jdk动态代理接口:如果目标对象实现了接口,默认使用JDK的动...

2019-01-01 14:36:33 180

原创 zookeeper学习目录

1.zookeeper学习目录2.zookeeper常见的服务3.

2019-01-01 14:17:12 272

jstl-1.2 搭建springmvc所需的jar包

jstl-1.2jar包,是一种语言规范,他把复杂的jsp函数封装成简单的<>标签形式,在写jsp页面的时候更方便一些。不用也能写页面,更方便而已。

2017-09-20

空空如也

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

TA关注的人

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