Java
文章平均质量分 60
香草味小布丁
欢迎访问:https://carefulhuo.github.io/
展开
-
Java 8 中的 HashMap
红黑树(red black tree)特点一个节点是红色或黑色根节点是黑色如果一个节点是红色,那么它的子节点必须是黑色一个节点到一个null引用的每一条路径必须包含相同数目的黑色节点(红色节点不影响)两种旋转方式和一种颜色变换单旋转方式双旋转方式(需要两次反方向的单旋转)当两个子节点均为红色的时候,执行颜色变换,因为插入的是红色节点,会产生冲突。例如根节点的子节点是红色,两个叶子节点变成黑色,根节点变成红色,再变成黑色。问题为什么插入的总是红色节点?因为插入前,树都是构原创 2022-05-13 18:10:03 · 307 阅读 · 0 评论 -
win10 Jdk 版本切换
环境信息系统:Win 10jdk:7、8、11安装方式:可执行文件安装(exe 格式)切换步骤1. jdk 安装后,一般我们会手动添加 JAVA_HOME 系统环境变量,然后将 %JAVA_HOME%\bin 添加到系统环境变量 Path中,如图所示2. 检查以下目录是否包含 java.exe、javaw.exe、javaws.exe 三个文件,包含的话,可删除,也可不删除-- 64 位C:\Program Files\Common Files\Oracle\Java\javapat原创 2022-05-13 18:07:42 · 1587 阅读 · 0 评论 -
Java 应用配置 GC 日志输出内容
Java 应用配置 GC日志输出文件GC 日志部分配置项基本 GC 日志信息-XX:+PrintGCDetails-XX:+PrintGCDateStamps-XX:+PrintGCTimeStampsGC 后对象年龄分布信息-XX:+PrintTenuringDistributionGC 后打印GC前后的堆数据-XX:+PrintHeapAtGCGC会产生暂停,打印 STW 时间(暂停时间)-XX:+PrintGCApplicationStoppedTime[外链图片原创 2022-05-13 18:06:09 · 1918 阅读 · 0 评论 -
Spring事务及事务失效的部分场景
简介spring 有五个事务隔离级别:ISOLATION_DEFAULT、ISOLATION_READ_UNCOMMITTED、ISOLATION_READ_COMMITTED、ISOLATION_REPEATABLE_READ、ISOLATION_SERIALIZABLE第一种是 Spring 默认使用 DB设置的事务隔离级别,后面四种事务隔离级别跟 Mysql 的事务隔离级别一致,下面就类比着 Mysql 的事务隔离级别,进行分析!!!事务并发可能产生的问题释义脏读 ( Dirty Read原创 2022-05-13 18:03:45 · 819 阅读 · 0 评论 -
新的日期和时间( Java 8 )
为什么我们需要新的Date和Time类!Java8之前所有的日期类都是可变的,这就导致了线程不安全问题;java的日期和时间类的定义不一致,在java.util和java.sql中都包含日期类;java.util.Date同时包含日期和时间,但是java.sql中只包含日期,将其纳入java.sql中的是不合适的,而且更糟糕的是:这两个类中的日期类的名字都是一样的;对于时间、时间戳、格式化及解析,没有一些明确定义的类,而且对于格式化和解析的需求,Java中有java.text.DateFormat原创 2021-01-16 00:24:00 · 572 阅读 · 0 评论 -
Lambdda表达式( Java 8 )
在Java的语言世界里面,除了基本的数据类型,一切都是对象,例如:String字符串、每个对象实例、数组这些都是对象。在Java中方法是不能完全独立存在的,不能将方法作为参数或者返回值给实例。注意:方法(Method),函数(Function),在Java中是没有函数的,因为Java是一个面向对象编程的语言;函数更多的意义是用来表述面向过程的语言;又或者说"函数是大家的函数,方法是类的方法",不过,不用这么纠结,我们可以认为在Java中方法就是函数,函数就是方法。为什么出现Lambda表达式从线程的构建原创 2021-01-16 00:21:08 · 275 阅读 · 0 评论 -
Stream API ( Java 8 )
Stream API 简介Stream’API是Java8中的新特性,基于Lambda表达式,对Collection(集合)的各种操作有了很大的改变,极大的提升了编码效率和代码的可读性。Stream有串行和并行两种模式,并行模式会自动创建多个线程,使用fork(join)Java7特性,来拆分任务和加速处理过程。Stream是一种类似IO流的东西,但是并不相同,实质是对集合操作的一种高度抽象,而且更重要的是,Stream不是数据结构,是不存储数据的,数据存储在底层的集合中,或者根据需要产生出来(例如Str原创 2021-01-16 00:09:39 · 255 阅读 · 0 评论 -
Optional静态类( Java8 )
Optional简介在Java8中的StreamAPI有很多操作都返回了Optional对象,那么这个对象是用来干嘛的,用来解决空指针问题,产生的一个类。也可以认为这是一个容器对象,因为它可以保存类型为T的对象,也可以保存nullOptional类源码import java.util.NoSuchElementException;import java.util.Objects;import java.util.function.Consumer;import java.util.functi原创 2021-01-16 00:06:28 · 125 阅读 · 0 评论 -
服务器性能问题排查
服务器性能问题一般有两种: 高内存占用、高CPU占用,比如应用程序高内存占用,可能是因为文件读写、频繁的IO、内存频繁GC,进一步占用了内存和CPU;比如应用程序高CPU占用,可能是因为大任务计算、死循环、卡死、不断超时或者重试。所以需要具体问题具体分析。 高内存占用现象是应用响应慢、内存溢出、应用进程直接死掉。体现到代码里面可能是死锁和饥饿,因为资源不释放;需要关注,空闲可用内存还有多少,buff[(Page Cache)是一种高速缓存,用于CPU和内存之间的缓冲 ,是文件系统的cache。原创 2021-01-16 00:05:16 · 515 阅读 · 0 评论 -
Java实现哈希函数/散列算法
// 哈希函数/散列算法// 根据某个值进行hash值计算,确保唯一性public class HashUtils { private static final String ALGORITHM = "SHA-256"; public static String sha256Hex(byte[] bytes){ MessageDigest messageDigest; String encodeStr = ""; try {原创 2021-01-15 23:37:26 · 900 阅读 · 0 评论 -
redis实现分布式锁
// 分布式锁实现使用的版本// springBoot的版本:org.springframework.boot:spring-boot:1.5.8.RELEASE// redis的版本:org.springframework.data:spring-data-redis:1.8.8.RELEASE// lombok的版本:org.projectlombok:lombok:1.18.6 // 标识springBoot启动时会扫描该类并创建实例放入spring容器@Component// 引入lo原创 2021-01-15 23:18:55 · 114 阅读 · 0 评论 -
AES加密及解密
public class AesUtil { static { Security.addProvider(new BouncyCastleProvider()); } private static final String ALGORITHM = "AES/ECB/PKCS7Padding"; /** * AES加密 * * @param content 需加密的字符串 * @param key 密钥原创 2021-01-15 23:21:34 · 388 阅读 · 0 评论 -
Java中集合接口Collection,集合List,Set
集合的特点:1.集合的长度是固定的2.集合只能存储对象3.集合不可以存储基本数据类型数组与集合的区别:1.数组的长度是固定的,集合的长度是可变的2.数组只能存储基本数据类型,集合只能存储对象注意:Java中集合接口和实现类都位于java.unitl这个工具包下,包含 collection框架,遗留的collection类,事件模型,日期和时间,国际化和各种工具类集合框架:集合容器中因为内部数据结构...原创 2018-06-10 23:00:43 · 579 阅读 · 0 评论 -
StringBuffter、Stringbuilder和String的应用示例
/* * 多线程使用StringBuffter * 单线程使用StringBuilder */public class StringBufferTest01 { public static void main(String arag[]){ int [] arr = {1,2,3,4,5}; System.out.println(arrayToString_1(arr)); ...原创 2018-06-05 14:25:30 · 534 阅读 · 0 评论 -
String
String是一个对象,不是基本数据类型;String的特点:字符串对象一旦初始化,便不能被修改;改变的只是引用型变量的指向;例如:String str="abc"; String str = "ert"; "abc";依然存在,只是str的指向变了String str ="abc"; String str = new String("abc"); 的区别:第一个语句在字符串常量池中创建...原创 2018-06-05 14:19:53 · 240 阅读 · 0 评论 -
StringBuffter与StringBuilder
StringBuffter,StringBuilder属于常用的容器,StringBuffter:是一个线程安全(同步)的可变字符序列,一个类似于String的字符缓冲区,用于存储数据的容器初始容器容量是16个字符特点:长度可变,可以存储不同类型数据,最终都会转成字符串使用,可以对字符串进行修改功能:1.添加StringBuffter append(data);StringBuffter in...原创 2018-06-05 13:56:36 · 1169 阅读 · 0 评论 -
Java中的常见集合接口Map,集合Hashtable,HashMap,TreeMap
Map集合:1.将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值2.Map集合被称为双列集合,collection集合被称为单列集合注:将可变对象用作映射键时必须格外小心。当对象是映射中某个键时,如果以影响 equals 比较的方式更改了对象的值,则映射的行为将是不确定的常用方法:1.添加value put(key , value) 返回前一个与key关联的value...原创 2018-06-11 11:11:12 · 472 阅读 · 0 评论