java
TofuCai
代码是思想的具体体现
展开
-
jvm深度学习(5):常量池与String
本文分静态常量池、运行时常量池和字符串常量池三个方面去分析。 先提一句,对于字符串常量池官方从未给过任何关于其的定义,不知从哪来,也不知哪去,有各种对其的争议,有人说它属于运行时常量池,也有人说他是和运行时常量池并行的一个常量池。本文对其单独拿出来讲解,并不对争议进行站队,没有必要,更没有意义。静态常量池(又称Class常量池) 在 class 文件中除了有类的版本、字段、方法和接口等描述信息外,还有一项信息是常量池 (Constant P...原创 2020-07-22 18:05:56 · 257 阅读 · 0 评论 -
java并发机制学习—volatile
一、volatile的概述Java语言规范第3版中对volatile的定义如下:Java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致性的更新,线程应该确保通过排他锁单独获得这个变量。volatile是更轻量级的synchronized,它在多处理器的开发中提供了共享变量的“可见性”。即当一个线程更改了共享变量的值,另一个线程能够读到这个修改的值。由于它不会引起上下文的切...原创 2019-02-21 20:38:16 · 128 阅读 · 0 评论 -
java—AES的加密解密
AES 的简单介绍高级加密标准(英语:Advanced Encryption Standard,缩写:AES),是一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。那么为什么原来的DES会被取代呢,,原因就在于其使用56位密钥,比较容易被破解。而AES可以使用128、192、和256位密钥,并且用128位分组加密和解密数据,相对来说安全很多。完善的加密算法在...原创 2019-02-18 15:01:41 · 314 阅读 · 0 评论 -
Java并发机制的学习—synchronized(偏向锁和轻量级锁)
锁的实现原理锁具体表现的三种形式1、对于普通的同步方法,锁是当前的实例对象。2、对于静态同步方法,锁是当前类的Class对象。3、对于同步方法块,锁是Synchronized括号里配置的对象。当一个线程试图访问同步代码块时,它首先要得到锁,退出或者抛出异常的时候必须释放锁。JVM基于进入和退出Monitor对象来实现方法同步和代码块同步。代码块同步是使用monitorent...原创 2019-02-23 23:39:27 · 150 阅读 · 0 评论 -
java中几种Map在什么情况下使用,并简单介绍原因及原理
一、Map用于保存具有映射关系的数据,Map里保存着两组数据:key和value,它们都可以使任何引用类型的数据,但key不能重复。所以通过指定的key就可以取出对应的value。Map接口定义了如下常用的方法:1、void clear():删除Map中所以键值对。2、boolean containsKey(Object key):查询Map中是否包含指定key,如果包含则返回true。3、...转载 2019-03-05 11:57:17 · 516 阅读 · 0 评论 -
Java对象的序列化和反序列化
一、序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的反序列化。 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 2) 在网络上传送对象的字节序列。 在很多应用中,需要对某些对象进行序列化,让它们离开内存空间,入住物理硬盘,以便长期保存。比如最常见的是Web服务器中的...转载 2019-03-05 17:05:43 · 107 阅读 · 0 评论 -
Java内部类详解
说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉。原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法。今天我们就来一探究竟。下面是本文的目录大纲: 一.内部类基础 二.深入理解内部类 三.内部类的使用场景和好处 四.常见的与内部类相关的笔试面试题 若有不正之处,请多谅解并欢迎批评指正。 请尊重作...转载 2019-02-26 16:48:00 · 128 阅读 · 0 评论 -
Comparable和Comparator的区别
Comparable和Comparator的区别初次碰到这个问题是之前有一次电话面试,问了一个小时的问题,其中有一个问题就问到Comparable和Comparator的区别,当时没答出 来。之后是公司入职时候做的一套Java编程题,里面用JUnit跑用例的时候也用到了Comparator接口,再加上JDK的大量的类包括常见的 String、Byte、Char、Date等都实现了Compara...转载 2019-03-03 11:34:03 · 168 阅读 · 0 评论 -
java并发机制的学习—线程优先级
什么为线程的优先级现代操作系统基本采用时分的形式调度运行线程,操作系统会分出一个个时间片,线程会分配到若干时间片,当线程的时间片用完了就会发生线程调度,并等待下次分配。线程分配的时间片多少也就决定了线程使用处理器资源的多少,而线程的优先级就是决定线程需要多或者少分配一些处理器资源的线程属性。Java的优先级存在优先级范围 :1 ~ 10,默认优先级为5,可以通过setPriority(...原创 2019-03-06 13:23:34 · 678 阅读 · 0 评论 -
String深度学习——split(1)
一、源码解读做银行项目时经常有对收益、份额、清算等数据文件导入数据库操作,需要用I/O流进行数据处理。在数据处理中有步重要的操作,那就是对文件的数据进行解析。一般的数据文件采用的分割原则,统一使用“|”、“,”或者其他的约束好的分隔符进行分割。一般通常采用String的方法split进行解析以下是源码,通过源码发现,String中已多态的形式提供了4个方法,而split(Strin...原创 2019-07-12 16:43:51 · 850 阅读 · 0 评论 -
JAVA—DES的加密解密
JAVA采用DES进行的加密和解密操作简单介绍:DES是一种对称加密算法,所谓对称加密算法即:加密和解密使用相同密钥的算法。DES加密算法出自IBM的研究,后来被美国政府正式采用,之后开始广泛流传,但是近些年使用越来越少,因为DES使用56位密钥,以现代计算能力,24小时内即可被破解。理论:DES是一个分组加密算法,它以64位为分组对数据加密。同时DES也是一个对称算法:加密...原创 2019-02-15 13:52:13 · 1326 阅读 · 0 评论 -
数据结构--红黑树
为什么要平衡在上一节中,我们了解了 二叉搜索树 具有较稳定和较高的插入搜索效率。但是在某些极端情况下, 它的效率也会退化到 链表 的地步。比如以上一堆数据,按照插入顺序的不同,所构建二叉搜索树的结构也会不一样,如下图所示:什么是树的平衡虽说是只要平衡就可以了,但是我们也不能随随便便胡搞瞎搞的只是将这棵树的高度降低就可以了,正如下图用一个压片机将图b压成一个完全二叉树一样...转载 2019-01-24 11:00:08 · 221 阅读 · 0 评论 -
JVM之初始化
类的生命周期加载 验证 准备 解析 初始化 使用 卸载其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为了支持Java语言的运行时绑定(也成为动态绑定或晚期绑定)。另外注意这里的几个阶段是按顺序开始,而不是按顺序进行或完成,因为这些...转载 2018-08-29 14:14:24 · 1080 阅读 · 1 评论 -
jvm之类加载器
类加载器寻找类加载器,先来一个小例子package com.neo.classloader;public class ClassLoaderTest { public static void main(String[] args) { ClassLoader loader = Thread.currentThread().getContextClassLoad...转载 2018-08-30 14:06:21 · 137 阅读 · 0 评论 -
JVM之其内存结构
所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?其实如果你经常解决服务器性能问题,那么这些问题就会变的非常常见,了解JVM内存也是为了服务器出现性能问题的时候可以快速的了解那块的内存区域出现问题,以便于快速的解决生产故障。先看一张图,这张图能很清晰的说明JVM内存结构布局。JVM...转载 2018-09-06 17:52:17 · 137 阅读 · 0 评论 -
java基础 String,equal,final等详解
对于这个系列里的问题,每个学Java的人都应该搞懂。当然,如果只是学Java玩玩就无所谓了。如果你认为自己已经超越初学者了,却不很懂这些问题,请将你自己重归初学者行列。内容均来自于CSDN的经典老贴。问题一:我声明了什么!String s = "Hello world!";许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是“Hello world!”...转载 2018-10-12 17:37:10 · 250 阅读 · 0 评论 -
java设计模式之适配器模式
文章转自:http://www.cnblogs.com/V1haoge/p/6479118.html 适配器就是一种适配中间件,它存在于不匹配的二者之间,用于连接二者,将不匹配变得匹配,简单点理解就是平常所见的转接头,转换器之类的存在。 适配器模式有两种:类适配器、对象适配器、接口适配器 前二者在实现上有些许区别,作用一样,第三个接口适配器差别较大。1、类适配器模式: ...转载 2018-10-16 11:13:56 · 137 阅读 · 0 评论 -
java设计模式之代理模式
转自:http://www.cnblogs.com/V1haoge/p/6525527.html 代理模式算是我接触较早的模式,代理就是中介,中间人。法律上也有代理,比如代理律师之类,委托人将自己的一部分权限委托给代理者,代理者就拥有被代理者(委托人)的部分权限,并且可以以被代理人的名义来实行这些权限,此时代理者与委托人等同,当然代理人也可以在实行权限时配合自己的能力来进行,当然不能超出这个...转载 2018-10-16 16:34:05 · 160 阅读 · 0 评论 -
java设计模式之观察者模式
文章转自:http://www.cnblogs.com/V1haoge/p/6513651.html 观察者模式,又可以称之为发布-订阅模式,观察者,顾名思义,就是一个监听者,类似监听器的存在,一旦被观察/监听的目标发生的情况,就会被监听者发现,这么想来目标发生情况到观察者知道情况,其实是由目标奖情况发送到观察者的。 观察者模式多用于实现订阅功能的场景,例如微博的订阅,当我们订阅了某个...转载 2018-10-16 16:56:50 · 121 阅读 · 0 评论 -
Java中的多线程你只要看这一篇就够了
引如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟,当然也没法说能用单线程来实现:比如最常见的“生产者,消费者模型”。很多人都对其中的一些...转载 2018-12-10 09:51:07 · 198 阅读 · 0 评论 -
并发和并行
OK,如果你还在为并发(concurrency)和并行(parallelism)这两个词的区别而感到困扰,那么这篇文章就是写给你看的。搞这种词语辨析到底有什么意义?其实没什么意义,但是有太多人在混用错用这两个词(比如遇到的某门课的老师)。不论中文圈还是英文圈,即使已经有数不清的文章在讨论并行vs并发,却极少有能讲清楚的。让一个讲不清楚的人来解释,比不解释更可怕。比如我随便找了个网上的解释:前...转载 2018-12-11 20:56:05 · 228 阅读 · 0 评论 -
java.lang.Error: Unresolved compilation problems
这是引入类型失败的错误提示,import org.wltea ,说明你引入了某个jar 包或者类,但是没有找到 ,就报错了.IK analyzer 中文分词器 开源的项目 ,有源码的.把这个下载好就可以了。一般有两种常见的情况:1、当一个 jar 文件的 MANIFEST.MF 中已经标记了 Sealed: true 时,这个 jar 内所有的 java package...转载 2018-08-30 18:39:04 · 1619 阅读 · 0 评论