
java
文章平均质量分 79
lsunwing
这个作者很懒,什么都没留下…
展开
-
特殊场景下的HashMap扩容、树化机制
Guava原创 2021-09-09 10:04:20 · 311 阅读 · 0 评论 -
fastjson到底做错了什么?为什么会被频繁爆出漏洞?
fastjson大家一定都不陌生,这是阿里巴巴的开源一个JSON解析库,通常被用于将Java Bean和JSON 字符串之间进行转换。前段时间,fastjson被爆出过多次存在漏洞,很多文章报道了这件事儿,并且给出了升级建议。但是作为一个开发者,我更关注的是他为什么会频繁被爆漏洞?于是我带着疑惑,去看了下fastjson的releaseNote以及部分源代码。最终发现,这其实和fastjson中的一个AutoType特性有关。从2019年7月份发布的v1.2.59一直到2020年6月份发布的转载 2021-04-12 16:08:19 · 829 阅读 · 0 评论 -
并发编程之——AQS原理和阻塞队列变化
1、AQS简介2、源码分析2.1 线程阻塞2.2 线程唤醒1、AQS简介AQS全名:AbstractQueuedSynchronizer,它就是Java的一个抽象类,它的出现是为了解决多线程竞争共享资源而引发的安全问题,细致点说AQS具备一套线程阻塞等待以及被唤醒时锁分配的机制,这个机制AQS是用CLH队列锁实现的,即将暂时获取不到锁的线程加入到队列中,队列是双向队列。常用...原创 2020-02-02 13:20:53 · 3262 阅读 · 0 评论 -
并发编程之——ThreadLocal的作用与实现原理
前言最近项目出了个问题,涉及到ThreadLocal,所以抽时间把这个知识点理一下,以一种更容易理解的方式。不过仔细研究才发现这玩意涉及到的东西真不少,本篇只做概要讲解。ThreadLocal简介直接翻译叫线程本地,但是ThreadLocal压根就不是线程本地属性,线程本地属性叫threadLocals,threadLocals通过存储键值对的方式存储线程私有数据(通常是业务对象...原创 2020-01-25 01:04:06 · 699 阅读 · 0 评论 -
详解String intern方法
一,弄清楚String对象的特点:不可变的(final);二,弄清楚+号和StringBuilder:+号操作分n种情况,但只有一种情况等同于直接字符串,那就是常量值相加,像这样:String str = "abc" + 123; 等同于String str = "abc123";String str = "abc" + "def"; 等同于String str = "abc...原创 2019-04-15 00:01:04 · 834 阅读 · 0 评论 -
浅析Java序列化机制
Java当中的序列化,其主要的作用是将类的实例进行无损传输,或者说就是通过Java的序列化机制,Java类的实例可以通过Object流来传输和重新获取,而不会损坏类的实例。 首先,我们看看什么样的类是序列化类, 1.A类自身实现了Serializable接口的类; 2.A类自身没有实现Serializable接口,但其父类实现了Serializable原创 2009-12-01 20:14:00 · 807 阅读 · 0 评论 -
Log日志等级控制
日志记录器(Logger)是日志处理的核心组件。log4j具有5种正常级别(Level)。 日志记录器(Logger)的可用级别Level (不包括自定义级别 Level), 以下内容就是摘自log4j API (http://jakarta.apache.org/log4j/d转载 2011-08-05 20:35:25 · 17211 阅读 · 1 评论 -
Java虚拟机类加载机制
http://geek.youkuaiyun.com/news/detail/131301看到这个题目,很多人会觉得我写我的java代码,至于类,JVM爱怎么加载就怎么加载,博主有很长一段时间也是这么认为的。随着编程经验的日积月累,越来越感觉到了解虚拟机相关要领的重要性。闲话不多说,老规矩,先来一段代码吊吊胃口。public class SSClass{ static {转载 2016-12-28 09:25:40 · 298 阅读 · 0 评论 -
java native方法及JNI实例
http://blog.youkuaiyun.com/xw13106209/article/details/6989415转载 2017-03-15 09:38:32 · 256 阅读 · 0 评论 -
负数在计算机中怎样存储
一、什么是原码、反码、补码?分为:正数 和负数(包括正浮点数,和负浮点数)规定最高位位符号位正数为0,负数为1(原因下文解释)原码:10进制转换成2进制是原码,只不过正数的原码是本身符号位为0,负数的原码符号位为1(以下篇幅均以单字节为例:10进制1的原码是0000 0001,10进制-1的原码是1000 0001)。反码: 正数的反码是本身,负数的反码是负数的原码转载 2017-12-13 10:29:40 · 1692 阅读 · 0 评论 -
带缓冲I/O 和不带缓冲I/O的区别与联系
首先要明白不带缓冲的概念:所谓不带缓冲,并不是指内核不提供缓冲,而是只单纯的系统调用,不是函数库的调用。系统内核对磁盘的读写都会提供一个块缓冲(在有些地方也被称为内核高速缓存),当用write函数对其写数据时,直接调用系统调用,将数据写入到块缓冲进行排队,当块缓冲达到一定的量时,才会把数据写入磁盘。因此所谓的不带缓冲的I/O是指进程不提供缓冲功能(但内核还是提供缓冲的)。每调用一次write或re转载 2017-12-27 14:43:48 · 287 阅读 · 0 评论 -
深入理解JDBC的超时设置
原文地址:https://www.cubrid.org/blog/understanding-jdbc-internals-and-timeout-configuration<!-- -->恰当的JDBC超时设置能够有效地减少服务失效的时间。本文将对数据库的各种超时设置及其设置方法做介绍。深入理解JDBC的超时设置在遭到DDos攻击后,整个服务都垮掉了。由于第四层交换机不堪重负,网络变...转载 2018-03-06 17:47:25 · 21732 阅读 · 1 评论 -
volatile是怎么保障内存可见性以及防止指令重排序的?
1、内存可见性首先,要明确一下这个内存的含义,内存包括共享主存和高速缓存(工作内存),Volatile关键字标识的变量,是指CPU从缓存读取数据时,要判断数据是否有效,如果缓存没有数据,则再从主存读取,主存就不存在是否有效的说法了。而内存一致性协议也是针对缓存的协议。内存可见性意思是一个CPU核心对数据的修改,对其他CPU核心立即可见,这句话拆开了理解:1)、CPU修改数据,首先是对工...原创 2018-10-18 23:49:19 · 7658 阅读 · 5 评论