java底层
内卷成仙
十年饮冰,难凉热血!
展开
-
mybatis缓存机制详解缓存方式
缓存是一般的ORM(mybatis属于半自动化ORM框架) 框架都会提供的功能,目的就是提升查询的效率和减少数据库的压力。跟Hibernate 一样,MyBatis 也有一级缓存和二级缓存,并且预留了集成第三方缓存的接口。缓存体系结构: 所有的缓存实现类总体上可分为三类:基本缓存、淘汰算法缓存、装饰器缓存。一级缓存(本地缓存):一级缓存也叫本地缓存,MyBatis 的一级缓存是在会话(SqlSession)层面进行缓存的。二级缓存:二级缓存是用来解决一级缓存不能跨会话共享的问题的,原创 2020-07-20 09:50:57 · 204 阅读 · 0 评论 -
hashmap与hashtable的区别详解
最主要的区别在于Hashtable是线程安全5261,而HashMap则非线程安全。Hashtable的实现方法里面都添加了1653synchronized关键字来确保线程同步,因此相对而言HashMap性能会高一些,我们平时使用时若无特殊需求建议使用HashMap,在多线程环境下若使用HashMap需要使用Collections.synchronizedMap()方法来获取一个线程安全的集合(Collections.synchronizedMap()实现原理是Collections定义了一个Synch原创 2020-07-20 08:55:00 · 149 阅读 · 0 评论 -
GC回收机制详解
应用程序对资源(内存使用)管理的方式,常见的一般有如下几种:1、手动管理:C,C++2、计数管理:COM3、自动管理:.NET,Java,PHP,GO…但是,手动管理和计数管理的复杂性很容易产生以下典型问题:1.程序员忘记去释放内存2.应用程序访问已经释放的内存三、GC如何工作:GC的工作流程主要分为如下几个步骤:1、标记(Mark)---GC的根节点也即GC Root2、计划(Plan)3、清理(Sweep)4、引用更新(Relocate)5、压缩(Co原创 2020-07-20 08:46:09 · 458 阅读 · 0 评论 -
Dubbo底层的网络通信机制原理!
原创 2020-07-16 08:54:15 · 449 阅读 · 0 评论 -
挑战Java15-40k面试进行中
1、TCP、UDP、HTTP区别?TCP三次握手机制第一次:客户端发送一个SYN包到服务端,并进入SYN_SEND状态,等待服务端的响应。第二次:服务端收到SYN包,并确认,同时自己也发送一个SYN包,即SYN+ACK包,此时服务端进入SYN_RECV状态。第三次:客户端收到服务端的SYN+ACK包,向服务端发送一个确认ACK包,进入ESTABLISHED状态,完成连接UDPUDP也是传输层的一个协议。但是与TCP不同的是,UDP不是面向连接的,并不保证传输的可靠性,没有TCP的建立连接的原创 2020-07-03 15:17:28 · 308 阅读 · 0 评论 -
单链表反转
public static Node reverseListNode(Node head){ //单链表为空或只有一个节点,直接返回原单链表 if (head == null || head.getNext() == null){ return head; } //前一个节点指针 Node pr...原创 2019-03-28 23:54:36 · 130 阅读 · 0 评论 -
二十三种设计模式
总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两类:并发型模式和线程池...原创 2019-03-29 00:04:44 · 104 阅读 · 0 评论 -
懒汉模式(类加载时不初始化)
package Singleton;public class LazySingleton { //懒汉式单例模式 //比较懒,在类加载时,不创建实例,因此类加载速度快,但运行时获取对象的速度慢 private static LazySingleton intance = null;//静态私用成员,没有初始化 private La...原创 2019-03-29 00:11:17 · 568 阅读 · 0 评论 -
饿汉式单例模式(在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快)
package Singleton;public class EagerSingleton { //饿汉单例模式 //在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快 private static EagerSingleton instance = new EagerSingleton();//静态私有成员,已初始化 priva...原创 2019-03-29 00:11:45 · 913 阅读 · 0 评论 -
JDK和Cglib实现动态代理优缺点分析和Java的三种代理模式
JDK和Cglib实现动态代理优缺点分析使用JDK动态代理,目标类必须实现的某个接口,如果某个类没有实现接口则不能生成代理对象。Cglib原理是针对目标类生成一个子类,覆盖其中的所有方法,所以目标类和方法不能声明为final类型。从执行效率上看,Cglib动态代理效率较高。Java的三种代理模式静态代理动态代理(动态代理也叫做:JDK代理,接口代理) Cglib代理...原创 2019-05-26 23:26:00 · 3355 阅读 · 0 评论 -
Spring BeanFactory 与 FactoryBean 的区别
BeanFactory是一个IOC容器或Bean对象工厂;FactoryBean是一个Bean;在Spring中有两种Bean,一种是普通Bean,另一种就是像FactoryBean这样的工厂Bean,无论是那种Bean,都是由IOC容器来管理的。...原创 2019-05-26 23:27:19 · 145 阅读 · 0 评论 -
Mybatis中的#和$的区别
在mybatis中,配置参数要用#,不要用$符号。因为$不安全,容易被sql注入。自己可以写代码用#,$配置参数后面加上1=1永真条件试一试原创 2019-03-27 22:33:02 · 128 阅读 · 0 评论 -
如何实现Properties保持有序
如何实现Properties保持有序?默认效果:Properties配置文件:读取配置文件后,加载到内存中的顺序是随机的,不能保证和原文件的顺序一致。原因:因为 Properties 是继承自 Hashtable 的,Hashtable是无序的解决方法:是继承自 Properties,覆盖原来的 put/keys,keySet,stringPropertyNames 即可,其中用一个 ...原创 2019-03-27 21:03:57 · 1064 阅读 · 0 评论 -
请谈谈你对java多线程的理解,例如怎样保证安全
怎样保证安全:不要跨线程访问共享变量使共享变量是final类型的使共享变量只读将共享变量的操作加上同步原创 2018-04-23 22:36:40 · 1288 阅读 · 0 评论 -
死锁 怎么产生的 四个条件符合其一都不会产生死锁
产生死锁的四个必要条件:(1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之...原创 2018-04-22 21:58:04 · 571 阅读 · 0 评论 -
实现线程同步的几种方式
为何要使用同步?java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用, 从而保证了该变量的唯一性和准确性。多线程有几种实现方式① 继承Thread类创建线程②实现Runnable接口创建线程③实现Callable接口通过FutureTask包装器来创建Thre...原创 2018-04-22 21:57:35 · 933 阅读 · 0 评论 -
数组链表 结构优缺点
数组:内存地址连续存放 链表:内存地址不连续 优点:遍历快 增删块 缺点:增删慢 遍历慢...原创 2018-04-22 21:57:02 · 473 阅读 · 0 评论 -
垃圾回收机制怎么判断对象是否有用 从什么地方清理出去
引用计数器与标记清除算法java垃圾回收算法之-引用计数器,这个算法其中一个优点便是,实时性,只要对象的引用计数器的值为0,则立刻回收。接下来介绍的标记清除算法,当对象的引用计数器的值为0时,不会立刻被回收的。root对象在标记清除算法中,会把如下对象称之为root对象1.被栈中的变量(栈中存的是对象的引用)所引用的对象2.被static变量引用的对象可访问的对象如果栈中有一个变量a引用了一个对象...原创 2018-04-22 21:56:08 · 876 阅读 · 0 评论 -
事务除了事务提交和事务回滚还有什么
还有ACIDACID(事务)分别表示(数据库事务正确执行的四个基本要素的缩写)原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库,必须要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。...原创 2018-04-22 21:55:05 · 585 阅读 · 0 评论 -
HashMap
JDK版本对HashMap的影响:答:在JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里。但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效率较低。在JDK1.8中,HashMap采用位桶+链表+红黑树实现,当链表长度超过阈值(8)时,将链表转换为红黑树,这样大大减少了查找时间。简单说下Ha...原创 2018-04-22 21:54:02 · 274 阅读 · 0 评论 -
静态类和内部类的区别
内部类只有是静态的,其内部类中才能有静态属性和静态方法;如果内部类非静态的,其内部类不能有静态属性和静态方法。原创 2018-04-22 22:05:46 · 197 阅读 · 0 评论 -
泛型的应用 泛型的好处
对于intOb==strOb,我们知道在语义上是一条错误的语句,但是在编译时不会报错,因为其语法正确,两种类型都继承自Object类,在运行时会出现异常。使用泛型就可以避免上面这种麻烦,泛型的好处是在编译的时候检查类型安全,并能捕捉类型不匹配的错误,并且所有的强制转换都是隐式的和自动的,提高代码的重用率...原创 2018-04-22 22:07:33 · 1049 阅读 · 0 评论 -
PID是什么
PID(进程控制符)英文全称为Process Identifier,它也属于电工电子类技术术语。 PID就是各进程的身份标识,程序一运行系统就会自动分配给进程一个独一无二的PID。进程中止后PID被系统回收,可能会被继续分配给新运行的程序。 PID一列代表了各进程的进程ID,也就是说,PID就是各进程的身份标识。...原创 2018-04-23 22:33:09 · 4307 阅读 · 0 评论 -
Ajax和json的区别 ajax的底层
JSON来自于javascript但是应用上面远远不止是javascript的json它相当于xml,是一种比较流行的标准格式,是数据的载体javascript json 是用于javascript程序的,它可以支持对象引用以及函数ajax json只是最简单的字符串和数字,它不可能完全支持javascript里面的数据类型,...原创 2018-04-23 22:33:43 · 465 阅读 · 0 评论