锁的优化——浅谈偏向锁、轻量级锁、重量级锁

JavaSE1.6为了减少获得锁和释放锁带来的性能消耗,引入了“偏向锁”和“轻量级锁”。 在JavaSE1.6中,锁一共有4种状态,级别从低到高依次是:无锁状态、偏向锁状态、轻量级锁状态和重量级锁状态,这几个状态会随着竞争情况逐渐升级。 锁可以升级但不能降级,意味着偏向锁升级成轻量级锁后不能降...

2018-12-24 20:45:52

阅读数 55

评论数 0

Java语言是" 解释执行" 的语言吗

先给结论: class(字节码)文件经过JVM编译成机器码进行解释执行(解释执行)。对于热点代码,JIT(JustInTime)编译器会在运行时将其编译为机器码执行(编译运行) 所以在JVM默认的mixed模式下JAVA既不完全是解释运行也不完全是编译运行。   正文: 许多Java虚拟...

2018-12-23 21:00:33

阅读数 123

评论数 0

Java——Mybatis二级缓存

一、什么是二级缓存 二级缓存是mapper级别的缓存,Mybatis默认是没有开启二级缓存。多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession可以共用二级缓存,也就是说,二级缓存是跨SqlSession的,因此二级缓存的作用范围更大。 UserMapper有...

2018-12-23 14:55:14

阅读数 112

评论数 0

Java——Mybatis一级缓存

一、概述 当用户频繁查询某些固定的数据时,第一次将这些数据从数据库中查询出来,保存在缓存(内存,高速磁盘)中。当下次用户再次查询这些数据时,不用再通过数据库查询,而是去缓存里面查询。 这么做的目的,一是提升查询速度,二是降低数据库的并发请求压力。 在Mybatis中,缓存分为两种 : 一级缓...

2018-12-23 13:50:56

阅读数 61

评论数 0

常见加密算法原理及概念

一、概述 在安全领域,利用密钥加密算法来对通信的过程进行加密是一种常见的安全手段。利用该手段能够保障数据安全通信的三个目标: 1、数据的保密性,防止用户的数据被窃取或泄露 2、保证数据的完整性,防止用户传输的数据被篡改 3、通信双方的身份确认,确保数据来源与合法的用户 而常见的密钥加密算...

2018-12-22 16:20:17

阅读数 64

评论数 0

Java——继承机制详谈

先给出结论: 子类只能继承父类的非静态方法,并可以对之进行覆盖。 对于父类的成员变量和静态方法,子类不能够继承,但是子类可以访问到父类的成员变量和静态方法。如果此时子类中有与父类相同的成员变量或静态方法,也只是把父类的静态方法隐藏。 当通过该变量访问它所引用的对象的成员变量和静态方法时,该实...

2018-12-20 11:13:23

阅读数 31

评论数 0

Java——类加载机制详解

一、什么是类加载 虚拟机把描述类的数据从class文件(代表类和接口,是一串二进制流)加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型。   二、什么时候进行类加载 与那些在编译时需要进行连接工作的语言不同,在java语言里面,类型的加载、连接和初...

2018-12-19 20:30:48

阅读数 36

评论数 0

Java——迭代器iterator详解

一、Iterator的API       关于Iterator主要有三个方法:hasNext()、next()、remove()       hasNext:没有指针下移操作,只是判断是否存在下一个元素       next:指针下移,返回该指针所指向的元素       remove:删除...

2018-12-18 15:41:07

阅读数 33

评论数 0

Java——反射的意义及优缺点

意义: 1.增加程序的灵活性,避免将程序写死到代码里。 例:定义了一个接口,实现这个接口的类有20个,程序里用到了这个实现类的地方有好多地方,如果不使用配置文件手写的话,代码的改动量很大,因为每个地方都要改而且不容易定位,如果你在编写之前先将接口与实现类的写在配置文件里,下次只需改配置文件,利...

2018-12-15 17:26:54

阅读数 982

评论数 0

JAVA——synchronized方法与synchronized代码块的区别

区别: 1.当A线程访问对象的synchronized(this)代码块的时候,B线程依然可以访问对象方法中其余非synchronized块的部分。 注:该情况在该方法没有加synchronized修饰的情况下成立。因为synchronized代码块和synchronized方法其实共享一把锁...

2018-12-14 15:14:48

阅读数 40

评论数 0

JAVA——静态方法加锁和非静态方法加锁的区别

对象锁(实例锁,synchronized) 该锁针对的是该实例对象(当前对象)。synchronized是对类的当前实例(当前对象)进行加锁,防止其他线程同时访问该类的该实例的所有synchronized块。每个对象都有一个锁,且是唯一的。 注意: 1.指的是“类的当前实例”, 类的两个不...

2018-12-14 14:44:37

阅读数 462

评论数 1

Java——动态代理实现与原理详细分析

Java代理分静态代理和动态代理。   一、静态代理 1、什么是静态代理 编译时就已经将接口,被代理类,代理类等确定下来。在程序运行之前,代理类的.class文件就已经生成。   2、静态代理的简单实现 需求: 假如一个班的同学要向老师交班费,但是都是通过班长把自己的钱转交给老师。...

2018-12-14 00:29:48

阅读数 38

评论数 1

Java——设计模式之单例模式详解

一、单例模式定义 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。   二、为什么要使用单例模式 1.对于系统中的某些类来说,只有一个实例很重要。例如,一个系统中可以存在多个打印任务,但是只能有一个正在工作的任务;售票时,一共有100张票,可有有多个窗口同时售票,但...

2018-12-13 00:11:24

阅读数 28

评论数 0

JAVA——深入理解Java接口和抽象类

一、抽象类 1.什么是抽象类 如果一个类含有抽象方法或类用abstract关键字修饰,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。 抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象...

2018-12-12 22:56:32

阅读数 25

评论数 0

JVM——对象的回收

本篇来自周志明的<<深入理解java虚拟机>> 预备知识: 如何判定对象存在活引用? https://blog.csdn.net/q5706503/article/details/84899581 即使在可...

2018-12-12 14:30:33

阅读数 18

评论数 0

JVM——垃圾收集器GC算法

本篇来自周志明的<<深入理解java虚拟机>>   标记-清除算法 标记-清除(Mark-Sweep)算法是最基础的算法,就如它的名字一样,算法分为”标记”和”清除”两个阶段:首先标记出所有需要回收的对象...

2018-12-12 14:27:50

阅读数 16

评论数 1

JVM----G1垃圾收集器

本篇来自周志明的<<深入理解java虚拟机>>   G1(Garbage-First)收集器是当今收集器技术发展的最前沿成果之一,早在JDK 1.7刚刚确立项目目标,Sun公司给出的JDK 1.7 Road...

2018-12-12 14:25:24

阅读数 19

评论数 0

JVM----CMS垃圾收集器

本篇来自周志明的<<深入理解java虚拟机>>   一、什么是CMS CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。目前很大一部分的Java应用都集...

2018-12-12 14:19:05

阅读数 10

评论数 0

数据库——SQL Server基础之存储过程

一:存储过程概述  SQL Server中的存储过程是使用T_SQL编写的代码段。它的目的在于能够方便的从系统表中查询信息,或者完成与更新数据库表相关的管理任务和其他的系统管理任务.T_SQL语句是SQL Server数据库与应用程序之间的编程接口。在很多情况下,一些代码会被开发者重复编写多次,...

2018-12-04 00:20:39

阅读数 22

评论数 0

数据库——sql优化(百万数据优化方案)

一、sql数据库优化 1、索引 建立索引是数据库优化各种方案之中成本最低,见效最快的解决方案,一般来讲,数据库规模在几十万和几百万级别的时候见效最快,即便是有不太复杂的表关联,也能大幅度提高sql的运行效率。  建立索引需要注意的地方 1、索引一般加在查询条件的关键字上,如果有多个查询条件...

2018-12-03 22:46:15

阅读数 41

评论数 0

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