自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Java——内存模型happens-before

由于存在线程本地内存和主内存的原因,再加上重排序,会导致多线程环境下存在可见性的问题。那么我们正确使用同步、锁的情况下,线程A修改了变量a何时对线程B可见?我们无法就所有场景来规定某个线程修改的变量何时对其他线程可见,但是我们可以指定某些规则,这规则就是happens-before,从JDK 5 开始,JMM就使用happens-before的概念来阐述多线程之间的内存可见性。在JMM中...

2019-07-12 15:24:20 139

转载 Java——volatile 关键字

前言不管是在面试还是实际开发中volatile都是一个应该掌握的技能。首先来看看为什么会出现这个关键字。内存可见性由于Java内存模型(JMM)规定,所有的变量都存放在主内存中,而每个线程都有着自己的工作内存(高速缓存)。线程在工作时,需要将主内存中的数据拷贝到工作内存中。这样对数据的任何操作都是基于工作内存(效率提高),并且不能直接操作主内存以及其他线程工作内存中的数...

2019-07-12 15:00:41 135

转载 Java——synchronized 关键字原理

synchronized 关键字原理众所周知synchronized关键字是解决并发问题常用解决方案,有以下三种使用方式:同步普通方法,锁的是当前对象。 同步静态方法,锁的是当前Class对象。 同步块,锁的是()中的对象。实现原理:JVM是通过进入、退出对象监视器(Monitor)来实现对方法、同步块的同步的。具体实现是在编译之后在同步方法调用前加入一个m...

2019-07-12 14:56:55 161

转载 Java——对锁的一些认知 有哪些锁

同一进程重入锁使用ReentrantLock获取锁的时候会判断当前线程是否为获取锁的线程,如果是则将同步的状态 +1 ,释放锁的时候则将状态 -1。只有将同步状态的次数置为 0 的时候才会最终释放锁。读写锁使用ReentrantReadWriteLock,同时维护一对锁:读锁和写锁。当写线程访问时则其他所有锁都将阻塞,读线程访问时则不会。通过读写锁的分离可以很大程度的提高并...

2019-07-12 14:50:16 118

转载 Java——ReentrantLock 实现原理

使用synchronized来做同步处理时,锁的获取和释放都是隐式的,实现的原理是通过编译后加上不同的机器指令来实现。而ReentrantLock就是一个普通的类,它是基于AQS(AbstractQueuedSynchronizer)来实现的。是一个重入锁:一个线程获得了锁之后仍然可以反复的加锁,不会出现自己阻塞自己的情况。AQS是Java并发包里实现锁、同步的一个重...

2019-07-12 14:50:07 143

转载 Java——CAS自旋锁

一、CAS即比较并交换,CPU指令(很快)在数据库的锁中,有悲观锁和乐观锁:悲观锁:假定当前执行的事务会被其它事务影响,所以会对操作的数据一直锁定,在Java中,synchronized就是这样,一旦某一个线程持有了操作对象的锁,其它线程就被阻塞了。乐观锁:假定当前执行的事务一般不会被影响,所以只有在数据更新时才会去检查是否冲突,如果冲突再执行其他操作。而CAS就是这样一种无锁的乐...

2019-07-12 14:47:58 285

原创 Java——快速排序和冒泡排序

package javagaoji;//冒泡排序public class BubbleSort { public static void bubbleSort(int[] data){ int s; for (int i = 0; i < data.length-1; i++) { for (int j = 0; j < data.length...

2018-12-11 16:44:52 319

原创 Java——二分法查找

package javagaoji;public class BinarySearch { /** * 二分查找 简介: 在二分搜寻法中,从数列的中间开始搜寻,如果这个数小于我们所搜寻的数,由于数列已排序,则该数左边的数一定都小于要搜寻的对象, * 所以无需浪费时间在左边的数;如果搜寻的数大于所搜寻的对象,则右边的数无需再搜寻,直接搜寻左边的数。 * * @param n...

2018-12-11 16:44:39 188

原创 Java——人民币大小写转换

package javagaoji;//金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出。public class RenMingBi { private static final char[] data = new char[]{ '零','壹','贰','叁','肆','伍','陆','柒','捌','玖' }; p...

2018-12-11 16:44:19 1766 1

原创 Java——mysql数据库相关知识点

数据库优化1.prepareStatement一般来说比statement性能高;2.有外键约束会影响插入和删除性能,如果程序能够保证数据的完整性,设计数据库时去掉外键;3.关联查询比子查询效率高,使用join代替子查询;4.将复杂的表拆分成几个结构简单的表,例如,将姓名和密码单独从用户表中独立出来;5.sql语句全部大写,特别是列名和表名。特别是SQL命令的缓存功能,更加需要...

2018-12-11 16:43:40 473

原创 Java——Socket网络编程

    利用IP地址+协议+端口号,唯一标识网络中的一个连接。    Socket是在应用层和传输层之间的一个抽象层,他把TCP/IP层复杂的操作抽象为几个简单的接口,供应用层调用以实现进程在网络中的通信。        Socket起源于UNIX,在UNIX“一切皆文件”的哲学思想下,Socket是一种“打开——读/写——关闭”模式的实现。服务器和客户端各自维护一个“文件”,在建立连接打...

2018-12-11 16:42:25 283

原创 Java——23种设计模式之单例模式

定义一个类构造函数为private,它有一个static的private的该类变量,在类初始实例化,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。单例模式的特点:1.单例类只能有一个实例;2.单例类必须创建自己的唯一实例;3.单例类必须给其他所有对象提供提供这一实例。 1.懒汉模式//懒汉式单例类.在第一次调用的时候实例化自己 p...

2018-12-11 16:41:34 149

原创 Java——Spring,SpringMVC,Mybatis相关知识点

Spring(容器框架)1.实现了工厂模式的工厂类,通过<bean>元素配置于创建实例对象的类名和实例对象的属性;2.IOC依赖注入(控制反转);3.AOP:系统中很多不相干的类的方法,在这些方法中要加入某种系统功能的代码,例如加入日志,事务,加入权限判断,加入异常处理,这种应用成为AOP。Spring AOP中的动态代理主要有两种方式,JDK动态代理和CGLIB动态代...

2018-12-11 16:37:54 231

原创 Java——JVM

JVM内部分为三部分:1.类装载器子系统 2.运行时数据区 3.执行引擎类加载器:1.Bootstrap加载器(启动类加载器)2.Extension加载器(扩展类加载器) 3....

2018-12-11 10:36:29 233 1

原创 Java—多线程零碎知识点

wait():使一个线程处于等待状态,并释放所持对象的锁;sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常;notify():唤醒一个处于等待状态的线程,注意的是在调用此方法时,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级;notifyAll():唤醒所有处于等待状态的...

2018-12-11 10:35:52 154

原创 Java——http协议

HTTP是基于传输层的TCP协议,而TCP协议是一个端到端的面向连接的协议。所谓端到端可以理解为进程到进程之间的通信。所以HTTP协议在开始传输之前,首先要建立TCP连接,而TCP连接的过程需要所谓的“三次握手”。在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_S...

2018-12-11 10:35:12 203

原创 Java——加密算法简单记录

1.DES(56位密钥)2.3DES:使用3条56位的密钥对数据进行了3次加密3.AES:可使用128,192,256位密钥,并且用128位(16字节)分组加密和解密数据4.RSA:第一个既能用于数据加密,又能用于数字签名的算法5.MD5:信息摘要算法,常用于校验文件,任意长度数据都会算出固定16位长度的MD5值,通常会再进行一次Base64加密6.Base64:严格来说是一种...

2018-12-11 10:33:55 220

原创 Java——get提交和post提交的区别

1.get是从服务器上获取资源,post是向服务器传送资源;2.get可以在URL上看到参数,post则看不到;3.get传送的数据量比较小,post比较大;4.get安全性低,post安全性高;5.对get,服务器用Request.QueryString获取变量的值;对于post,服务器端用Request.Form获取提交的数据;建议:1.包含机密信息的话用post提交;...

2018-12-11 10:33:25 639

原创 Java——集合框架

一.Collection接口是最基本的集合接口,一个Collection代表一组Object,即Collection的元素。Java不提供直接继承Collection的类,只提供继承它的子接口(例如List和Set,注意Map不是Collection的子接口)。    List接口是一个有序的Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引来访问List中的元素,...

2018-12-11 10:32:37 146

空空如也

空空如也

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

TA关注的人

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