Java源码
未读HashMap 源码解析Hey 大家好,我是 Shio👋。今天我们将深入探讨 Java 的HashMap源码, HashMap 是Java提供的存放键值对的容器, 其最大的特点是大多情况下可以通过O(1)的时间复杂度通过键来获取值
其底层是由数组 + 链表的组成的,链表主要是用拉链法解决Hash冲突 , 在JDK1.8之后引入了树化机制 ,在达到一定条件后,会将链表转化为红黑树。
扰动函数HashMap通过调用键的hashCode()方法获取hash值,然后通过扰动函数,使hash值在最后和数组长度取余((n - 1) & hash)后分布的更为均匀
扰动函数就是为了防止一些实现比较差的hashCode(), 使得使用扰动函数后, 减少哈希碰撞的概率。
static final int hash(Object key) { int h; // key.hashCode():返回散列值也就是hashcode // ^:按位异或 // >>>:无符号右移,忽略符号位,空位都以0补齐 return (key == nul ...
Git使用Git是目前世界上最先进的分布式版本控制系统。
工作原理 / 流程
Git下载与安装具体安装教程已有详细博客,不多说,上链接
[Git下载与安装_pingcode的博客-CSDN博客_git](https://blog.csdn.net/qq_41521682/article/details/122764915#:~:text=第一步 下载git (找到自己需要的版本) 第二步 下载 完点击 安装 包进入使用许可声明界面,这里我是选择装在D盘,大家如果嫌麻烦就默认 安装 在C盘 第四步 点击Next进入选择 安装 组件界面 上图红框内的选项是默认勾选的,建议不要动。)
Git初始配置
安装完成后,需要对软件进行配置,右键点Git Bash Here, 输入以下指令
git config --global user.name "你的用户名"git config --global user.email "你的邮箱"
解释一下,用户名和邮箱起标识作用,git命令行和Linux指令很相似,--后面加完整名称的单词做 ...
Java APIStream流流收集合//流转化为集合Stream<String> stream = Stream.of("A", "B", "C");stream.collect(Collectors.toList())stream.collect(Collectors.toSet())stream.collect(Collectors.toCollection(ArraysList::new))//流转化为数组stream.toArray()stream.toArray(int[]::new)//聚合计算stream.collect(Collectors.maxBy())stream.collect(Collectors.minBy())stream.collect(Collectors.counting())stream.collect(Collectors.summingInt())stream.collect(Collectors.averagingInt())//分组 分组函数 值收集器默认为Lis ...
加密安全Base64编码将二进制字节转化为文本格式
将任意二进制字节数据转化为只包含 AZ az 0~`9 + / =` 这64个字符
原理是将3个字节的二进制数据按照6bit一组, 用4个int整数表示, 然后将int整数用索引对应到字符, 得到编码后的字符串
3个byte数据分别是e4、b8、ad,按6bit分组得到39、0b、22和2d:
┌───────────────┬───────────────┬───────────────┐│ e4 │ b8 │ ad │└───────────────┴───────────────┴───────────────┘┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐│1│1│1│0│0│1│0│0│1│0│1│1│1│0│0│0│1│0│1│0│1│1│0│1│└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘┌─────── ...
高效搜索🕵️♂️高效搜索的艺术:解锁信息宝藏的秘籍🗝️在浩瀚的信息海洋中航行,如何快速定位到你需要的宝藏?这不仅仅是一门技术,更是一种艺术。让我们一起探索如何通过高效搜索,直达知识的核心。🔍
📚信息分类信息可以分为四大类:
信息
学习
素材
工具
掌握这些分类,有助于你更有针对性地搜索。🚀
💡信息搜索技巧📈信息渠道效率排名
谷歌:全球最大的搜索引擎,覆盖广泛,信息更新快。
微信知道:中文环境下的知识问答平台,适合寻找本土化信息。
长短视频平台(bilibili, 抖音):直观、生动,适合获取快速资讯或娱乐信息。
百度:中文互联网咨询的主要搜索引擎,资源丰富。
🔍高效搜索命令
"关键词":精确匹配关键词。
intitle:标题:搜索标题中含有特定词汇的页面。
allintitle:标题1 标题2:同时在标题中搜索多个关键词。
intext:"文章内容":查找包含特定短语的网页。
inurl::限定网址中包含的关键词。
site::限定搜索范围在特定网站内。
imagesize::指定图片尺寸。
filetype::限 ...
高效搜索🕵️♂️高效搜索的艺术:解锁信息宝藏的秘籍🗝️在浩瀚的信息海洋中航行,如何快速定位到你需要的宝藏?这不仅仅是一门技术,更是一种艺术。让我们一起探索如何通过高效搜索,直达知识的核心。🔍
📚信息分类信息可以分为四大类:
信息
学习
素材
工具
掌握这些分类,有助于你更有针对性地搜索。🚀
💡信息搜索技巧📈信息渠道效率排名
谷歌:全球最大的搜索引擎,覆盖广泛,信息更新快。
微信知道:中文环境下的知识问答平台,适合寻找本土化信息。
长短视频平台(bilibili, 抖音):直观、生动,适合获取快速资讯或娱乐信息。
百度:中文互联网咨询的主要搜索引擎,资源丰富。
🔍高效搜索命令
"关键词":精确匹配关键词。
intitle:标题:搜索标题中含有特定词汇的页面。
allintitle:标题1 标题2:同时在标题中搜索多个关键词。
intext:"文章内容":查找包含特定短语的网页。
inurl::限定网址中包含的关键词。
site::限定搜索范围在特定网站内。
imagesize::指定图片尺寸。
filetype::限 ...
AQS源码解析 AQS是Java里的一个同步工具类,全称为AbstractQueuedSynchronizer。它是JUC包中中实现锁和同步机制的基础。
它可以被认为是一种框架或模板,用于实现多种同步器,比如ReentrantLock、CountDownLatch、Semaphore 、ReentrantReadWriteLock等。
作为本系列第一节, 我们先了解这些同步工具的共同的祖先(虽然实际上是聚合关系) —-AQS
在了解AQS之前, 我们要知道:
AQS本质上是一个队列,它是将等待锁或资源的线程排队,并在锁或资源可用时将其唤醒。
建立在这个基础上, 方便理解后序讲解
我们以平常最常用的ReentrantLock为例
ReentrantLock lock= new ReentrantLock();// 第一次获取锁lock.lock(); try { // 同步代码块块 } finally { // 第一次释放锁 lock.unlock();}
我们点进lock()方法, 会发 ...
CountDownLatchCountDownLatch是一个JUC包下的同步工具 计数器
作用是: 使一个或者多个线程等待其他线程完成后再执行
//构造一个用给定计数初始化的 CountDownLatch。CountDownLatch(int count)// 使当前线程在锁存器倒计数至零之前一直等待,除非线程被中断。void await()// 使当前线程在锁存器倒计数至零之前一直等待,除非线程被中断或超出了指定的等待时间。boolean await(long timeout, TimeUnit unit)// 递减锁存器的计数,如果计数到达零,则释放所有等待的线程。void countDown()// 返回当前计数。long getCount()// 返回标识此锁存器及其状态的字符串。String toString()
示例
public class CountDownLathTest { // 每个线程去收集 1 颗龙珠 // 定义需要收集龙珠的目标数量 public static final int DRAGON_BALL_TO ...
Jottings
未读Jotting
“你可以拿走我的另一条腿,但我会比现在更加坚强。” 永远的 Terry Fox
每个人都会经过这个阶段,,喜欢标新立意的概念, 若是有人出来反对主流观念,,反对家庭,工作,责任的束缚,,并且技巧又很出色,,往往就能俘获很多拥护, 你会觉得反抗比什么都难得可贵。
可在尝试过后又发现主流能成为主流是有道理的,这是属于大多数人的最简单的路径,,逆流而上太痛苦了。
于是你学会了欣赏主流生活,奇怪的是,当你开始热爱主流的东西, 反而逐渐积累起逆流而上的勇气,因为你不是为了逃避而逆行, 你不怕回到芸芸众生当中,,而这会给予你真正的勇气。
但是太阳,,它每时每刻都是夕阳也都是旭日,当它熄灭着走下山去,,收尽苍凉残照之际,正是它在另一面燃烧着爬上山,巅布散烈烈朝晖之时。那一天,我也将沉静着走下山去, 扶着我的拐杖。有一天,在某一处山洼里, 势必会跑上来 ...













