java
文章平均质量分 71
杨、怼怼
AdSDASVXCVDFSCZXCADV
展开
-
Redis分布式锁的解决方案
目前主流的分布式锁都是依靠第三方存储介质的一致性保障实现的,比如常见的基于关系型数据库(如MySql)的排它锁实现的分布式锁基于分布式协调系统(Zookeeper临时节点+通知事件)实现的分布式锁基于Redis, setNx特性实现的分布式锁基于Redis的分布式锁其中应用最广泛的应该是Redis的分布式锁,它对比前两者都有着很大的优势巨大的写性能优势,特别是对比MySql对比于Zookeeper,Redis更加普及。很少会团队专门为分布式锁引入Zookeeper弊端不过常规的基于原创 2021-07-09 08:40:42 · 225 阅读 · 0 评论 -
Spring 计时工具类 StopWatch
Spring 计时工具类 StopWatch设计目标验证程序性能, 记录过程耗时隐藏System.currentTimeMillis()的使用提升代码可读性特性支持多任务计时非线程安全主要函数方法备注void start(String)开始一个任务&开始计时void stop()结束一个任务&&记录任务执行时间String shortSummary()获取总运行时间的一个简短描述String prettyPrint(原创 2021-06-05 20:37:06 · 778 阅读 · 0 评论 -
从put方法看ConcurrentHashMap源码-逐字解析
ConcurrentHashMap.put以下为JDK11 源码基础概念Java Map结构原理为什么 hash表的长度必须为2的N(整数)次幂?因为 2的N次幂减一的二进制位全部为1 是完美的低位掩码。与key的hash值做与运算可以高效的生成hash表的下标讲讲武德,我们先看下构造器构造器支持三个参数分控制,value初始数量,扩容阈值系数,预计并发数,三个参数代入公式,算出散列表长度,即结束。并没有立刻初始化散列表 /** * 我们只看参数最多的那个构造器 * * @param原创 2020-12-11 06:58:35 · 344 阅读 · 0 评论 -
XMind思维导图转Markdown文本的JAVA工具
XMind To MarkdownXMind思维导图转Markdown文本Github效果效果图1效果图原始脑图DemoDeompackage com.yxy.xmind.demo;import com.yxy.xmind.to.md.ToMdUtils;import java.io.IOException;public class Main { private Main() { } public static void main(Stri原创 2020-08-06 22:58:46 · 787 阅读 · 0 评论 -
JAVA 监控并获取日志类文件变化(新增)
JAVA 监控并获取日志类文件变化(新增)使用 JDK7+(1.7之前没有的哈!?) 工具类 java.nio.file.WatchService写来用于监控日志文件新增内容(只能检测获取新增内容哈!?中间改一手赌不出来的哈!)要配置目录和文件哈!源码:package com.core;import java.io.File;import java.io.IOException...原创 2019-10-14 17:35:56 · 1207 阅读 · 5 评论 -
有趣的JDK,Object源码
JDK Object主要方法 十个1、native registerNatives一个本地方法openJdk1.8 源码如下static JNINativeMethod methods[] = { {"hashCode", "()I", (void *)&JVM_IHashCode}, {"wait", "(...原创 2019-04-25 22:52:31 · 115 阅读 · 0 评论 -
有趣的JDK、StringBuilder家族源码
AbstractStringBuilder是一个可变的字符序列类的抽象类,最初出现于jdk1.5中。历史众所周知java最常用的字符数据类型是Stirng对象,但tring对象被设计为了一个常量类(内部的维护 final char[]),每次变更都会产生新的对象。在需要频繁更换字符值的场景下,很浪费系统资源。为了解决这个问题可变字符的对象家族诞生了。 (StringBuffer+String...原创 2019-08-13 21:24:03 · 244 阅读 · 0 评论 -
ThreadLocal 是怎么实现的?
ThreadLocal 是怎么实现的?ThreadLocal 大家都很熟悉了,那么他是如何工作的呢?下面按照我们平时的使用顺序,来扒一扒他的实现机制(注意源码只提供了必要内容)代码版本 jdk8ThreadLocal()set() 划重点 大家要认真看帖get()remove()ThreadLocal /** * Creates a thread local ...原创 2019-08-19 20:29:40 · 536 阅读 · 0 评论 -
Lock和synchronized的区别和使用
摘选自:大纲synchronized的缺陷java.util.concurrent.locks包下常用的类锁的相关概念介绍synchronized的缺陷synchronized是java中的一个关键字,也就是说是Java语言内置的特性,如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的线程释放...转载 2018-03-02 12:04:30 · 172 阅读 · 0 评论 -
Session实现原理深入讨论
1.Session实现机制 服务器是如何实现一个session为一个用户浏览器服务的?Session原理示意图解释: 假如浏览器A先访问Servlet1,这时候它创建了一个Session,ID号为110,然后Servlet1将这个ID号以Cookie的方式返回给浏览器A,接着,如果浏览器A继续访问Servlet2,那么这个请求会带上Cookie值: JSESSIONID=110,然后...转载 2018-03-01 18:14:50 · 193 阅读 · 0 评论 -
webservice demo
webservice 入门实例注:本帖 用于学习备忘录 使用idea + win10 开发(关系不大)1.第一步新建一个webservice项目 点击菜单 file -> new -> project 勾住webservice,其他部分尽量与本文一致 然后点击 next ,输入项目名称(随意输入 注意规范)2.新建包目录 和里面的两个类 附代码(代码建议手写 注原创 2017-02-13 17:55:16 · 308 阅读 · 0 评论 -
ReentrantLock 原理深度解析 --- 基于jdk1.8
ReentrantLock 原理深度解析 — 基于jdk1.8ReentrantLock 主要讲解 lock 和 unlock 方法。 看看他上锁 锁等待 释放锁 重入性 是如何实现的 主要看注解吧1.首先看初始化方法 /** * Creates an instance of {@code ReentrantLock}. * This is equiv...原创 2018-02-08 10:34:30 · 167280 阅读 · 1 评论 -
java volatile 底层原理
引言在java语言中 被volatile 修饰的变量 可以保证在对线程场景下的可见性,防止处理器进行指令重排 指令重排在多线程环境下会出现可见性问题即 有 线程 A B,均可访问 volatile 变量x 当线程A对 x进行修改后, B线程再次访问变量x 便可以取到 x的最新值 非 volatile 变量不能保证这一点。可见性原理 Volatile变量修饰符如果使...原创 2018-02-28 14:45:31 · 551 阅读 · 0 评论 -
jdk 容器之 ArrayList,LinkedList 原理简述
ArrayList有序集合非线程安全通过内部维护数组实现 数据存储插入慢(涉及数组扩容问题 数组默认长度十,超过默认长度会进行扩容 每次扩充 L(当前长度) + L/2) 不过已知集合长度时 可以通过初始化时指定数组长度 避免进行扩容 如: new ArrayList(100); private void grow(int minCapacity) { //...原创 2018-02-28 17:23:13 · 115 阅读 · 0 评论 -
java 容器之 Hashtable、HashMap、ConcurrentHashMap 原理简述
HashMap非线程安全容器内部维护一个散列表(数组) key经过hash算法 & 数组长度 获得散列表数组的下标hash算法static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);...原创 2018-03-01 16:30:45 · 170 阅读 · 0 评论 -
springMvc 完美解决 multipart/form-data 方式提交请求 在 Filter 中 ServletRequest.getParameter方法 获取不到参数的问题
springMvc 解决 multipart/form-data 方式提交请求 ,在Filter 中 ServletRequest.getParameter方法 获取不到参数的问题原创 2016-05-17 17:34:22 · 36157 阅读 · 25 评论