随笔分类 - Java
摘要:锁升级过程图解 1、图解锁升级 锁信息记录在markword中: 普通对象:001; 匿名偏向,偏向锁:101; 轻量级锁:00; 重量级锁:10; 对应如下: 2、案例 为了证明以上的过程,我们可以使用一些工具来观察,在这里我们使用JOL(Java Object Layout)。 需要添加依赖:
阅读全文
摘要:CAS 1、什么是CAS? CAS:又叫 campare and set/Swap/Exchange,自旋锁。 再增加一个知识点: 悲观锁:认为该操作会被别的线程打断; 乐观锁:认为该操作不会被别的线程打断,会消耗CPU资源; 注:悲观锁,各线程在队列里等待,不消耗CPU资源;而乐观锁时,各线程不断
阅读全文
摘要:写在前言 果子在公众号( 程序员编程)中看到一个很好的项目。虽然平时用不到,但是对于自己理解SpringBoot,网络通信还是有好处的。所以就摘录如下,本文并不是全文照搬,会做出修改润饰,并加入自己的理解。文末会注明来源,如有侵权,敬请告知。 1、需求目标: 手写一个可以实现WebSSH连接终端功能
阅读全文
摘要:Java 内存模型试图屏蔽各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的内存访问效果。 1、主内存与工作内存 处理器上的寄存器的读写的速度比内存快几个数量级,为了解决这种速度矛盾,在它们之间加入了高速缓存。 加入高速缓存带来了一个新的问题:缓存一致性。如果多个缓
阅读全文
摘要:一、SQL注入的概述 定义:SQL注入即是指web应用程序对用户输入数据的合法性没有判断,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。 (1)SQL注入威胁表现形式可以体现为以下几点: ●
阅读全文
摘要:首先我们得先明白这两个单词是什么意思: Fork:叉 ; 分岔处,分流处,岔口,岔路 ; 分岔 ; Join:连接; 接合; 联结; 结合; 联合; 汇合; 加入; 好了,看到这俩的翻译,是不是有所顿悟呢?请君继续看...... 1. Java并发的发展历程 –Java 1 支持threads, l
阅读全文
摘要:CountDownLatch的作用类似于Thread.join()方法,但比join()更加灵活。 它可以等待多个线程(取决于实例化时声明的数量)都达到预期状态或者完成工作以后,通知其他正在等待的线程继续执行。 简单的说,Thread.join()是等待具体的一个线程执行完毕,CountDownLa
阅读全文
摘要:之前做项目用到过ThreadLocal,但是没有看源码层面的具体实现,今天特来补一补课。 ThreadLocal,即线程局部变量,用来为每一个使用它的线程维护一个独立的变量副本。 这种变量只在线程的生命周期内有效。并且与锁机制那种以时间换取空间的做法不同,ThreadLocal没有任何锁机制,它以空
阅读全文
摘要:【这是前几天的存货,留着没发表,今天又复习一遍,润化了部分内容,继续干】 说线程池前,先简单回顾一下线程的状态吧: 1、线程状态转换 线程的五种状态,及其转换关系: 2、线程创建方式 三种:两个接口一个类 两个接口:Runnable实现run(), callable实现call() 一个类:Thre
阅读全文
摘要:1.1 基本概念区分 1) 、对于==,比较的是值是否相等 如果作用于基本数据类型的变量,则直接比较其存储的 值是否相等, 如果作用于引用类型的变量,则比较的是所指向的对象的地址是否相等。 其实==比较的不管是基本数据类型,还是引用数据类型的变量,比较的都是值,只是引用类型变量存的值是对象的地址 2
阅读全文
摘要:synchronized底层语义原理 Java 虚拟机中的同步(Synchronization)基于进入和退出管程(Monitor)对象实现。 在 Java 语言中,同步用的最多的地方可能是被 synchronized 修饰的同步方法。同步方法 并不是由 monitorenter 和 monitor
阅读全文
摘要:【概述】 Java中的对象拷贝 ( Object Copy ) 是指将一个对象的所有属性(成员变量)拷贝到另一个有着相同类类型的对象中去。例如,对象 A 和对象 B 都属于类 S,具有属性 a 和 b。那么对对象 A 进行拷贝操作赋值给对象 B 就是: B.a = A.a; B.b = A.b; 拷
阅读全文
摘要:最近写论文需要用到UML类图,但是自己画又太复杂,干脆找了个插件,是Eclipse的,也有IDEA的,在这里我简单说下Eclipse的插件AmaterasUML 的配置与使用吧。 点击这里下载Amateras的Jar包,一共三个。 链接: https://pan.baidu.com/s/1MsVSQ
阅读全文
摘要:这个Integer比较真的是坑啊.......... 先看代码,大家来猜猜,看看到底会输出什么: 结果如下: 不知猜对几道???笑哭... 先说下我的错误思路!!! 之前我是认为:Integer的话,不论范围多少,都是一个new 了一个对象,然后,不同的对象肯定地址也不相同,当==的时候,总是fal
阅读全文
摘要:Java中的容器主要包括两方面: Collection:List、Set、queue Map:HashMap、treeMap; 一. Collection 1. Set TreeSet:基于红黑树实现,支持有序性操作,例如根据一个范围查找元素的操作。但是查找效率不如HashSet,HashSet 查
阅读全文
摘要:第一种:除基倒取余法 这是最符合我们平时的数学逻辑思维的,即输入一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2...依次循环,直到商为0结束,把余数倒着依次排列,就构成了转换后的二进制数。 那么,在实际实现中,可以用int的一个数来存储最后的二进制,每次求余后把余数存储在int型数的低
阅读全文
摘要:volatile关键字可以说是Java虚拟机提供的最轻量级的同步机制,但是它并不容易完全被正确、完整地理解,以至于许多程序员都习惯不去使用它,遇到需要处理多线程数据竞争问题的时候一律使用synchronized来进行同步。了解volatile变量的语义对了解多线程操作的其他特性很有意义,在本文中我们
阅读全文
摘要:面试遇到的一个问题,没有全部答出来: 查了查列出如下: 1.抽象类不能被实例化。 2.抽象类可以有构造函数,抽象方法不能被声明为静态。 3.抽象方法只需申明,而无需实现,抽象类中可以允许普通方法有主体 4.含有抽象方法的类必须申明为抽象类 5.抽象的子类必须实现抽象类中所有抽象方法,否则这个子类也是
阅读全文
摘要:1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。 但是,有时候
阅读全文