自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (1)
  • 收藏
  • 关注

原创 java自动装拆箱的小坑

但是因为b是个对象,当b为null时,由于自动拆箱的存在,b会调用intValue()方法拆成int类型,但因为b是null,所以会报NullPointerException。java的自动拆装箱是个语法糖,可以便捷开发人员的操作,比如比较Integer和int时可以直接用==,十分方便。

2024-04-26 14:39:44 136 1

原创 不需要提前设定线程数的CountDownLatch

借鉴CountDownLatch,每启动一个线程,就把AQS中的state减1,启动完所有线程后,调用await(int count) ,等待的同时把启动的线程数传进锁里,从而实现并发处理;如:查询es中的数据时,如果数据量很大,无法一次查完,就需要while循环,然后靠lastNum、searchAfter确定下次查询的起始点,分批次查出数据,再丢入线程池中处理;这样就无法在开始查询前确定需要启动多少线程,也就无法使用CountDownLatch。无法提前获知需要多少线程的场景;

2024-01-29 11:41:07 397

原创 PriorityBlockingQueue导致的OOM

PriorityBlockingQueue OOM

2022-10-18 16:45:15 198 1

原创 JAVA--HashMap在多线程下的死循环

注:文中图片来自《JDK1.7和JDK1.8中HashMap为什么是线程不安全的?》首先声明一点,在JDK1.7及之前才会发生这种情况。我们现在看下HashMap扩容的源码: void resize(int newCapacity) { Entry[] oldTable = table; int oldCapacity = oldTable.length; if (oldCapacity == MAXIMUM_CAPACITY) {

2021-02-09 20:04:19 334

原创 JAVA--foreach与List

e

2021-02-09 17:50:28 589 1

原创 JAVA--foreach与数组

今天发现了个奇怪的问题,直接看代码:package bingfa;import com.sun.javaws.IconUtil;import java.util.concurrent.ForkJoinPool;public class ForeachTest { private class Node{ private int num; private Node(int num) { this.num = num;

2021-02-09 17:33:38 390 2

原创 JAVA--不讲道理的Math.abs()

问题抛出:java.lang包中的Math类是个final类,其中有个方法叫abs()是取绝对值的,但我发现了个有趣的地方.Math.abs(Integer.MIN_VALUE)=-2147483648怎么样?是不是有种颠覆世界观的感觉?解析:首先,我们来看下Integer.MIN_VALUE的二进制:10000000 00000000 00000000 00000000其中首位是符号位,后边31位是数值位.然后,我们来看下Math.abs()的源码:public f

2021-02-04 15:11:38 823

原创 JAVA--这才是弱引用的最佳应用场景--ThreadLocal

写在前面:文中涉及到的代码均出自jdk1.8ThreadLocal是什么?ThreadLocal是线程本地变量,通俗点说就是如果一个变量是ThreadLocal类型的,那么每个线程都会创建这个变量的副本,并各自维护.这听起来有些像局部变量,是的,你可以将它理解为作用范围是全局的局部变量.(听起来真绕口,但是我觉的这样说你会懂的)它最经典的应用场景就是数据库的Connection,它可以保证同一个线程的多个方法使用同一个Connection,从而实现跨方法的事务控制.下面来看一个Thr

2021-01-29 14:55:31 223

原创 JAVA--关于ThreadLocal中的的几个疑惑

最近在看ThreadLocal的源码,有个问题让我纠结了好久。Thread有个ThreadLocalMap类型的变量叫threadLocals,这个变量存储着本线程所有的ThreadLocal对象。这个ThreadLocalMap类有一个Entry数组叫table。ThreadLocal有个变量叫threadLocalHashCode,它存储ThreadLocal对象的hashcode,它的作用是通过与table数组的长度做与操作,以此获得table数组的下标。这个hashcode与Thread

2021-01-29 14:22:41 320 2

原创 JAVA--HashMap查询的时间复杂度为什么是O(1)

写在前面HashMap查询的时间复杂度是O(1),这是众所周知的,但是你知道为什么是O(1)吗?正文要研究明白这个问题,我们需要从数组开始研究。数组查询的时间复杂度是O(1),为什么呢?因为在内存中,数组对象被创建时,是被分配了一块连续的内存地址,这块连续的内存地址上,存放着大小相等的引用类型,在默认情况下,如果虚拟机内存没有超过32GB,那么JVM使用的是32位的压缩指针,也就是说,在这块连续的内存地址上存放的是一个个的32位的压缩指针。现在假设我们的数组中存了10个对象,那么我们如果要找

2021-01-29 11:49:15 5982 4

原创 JAVA--详细说说Float的二进制存储

基础知识:1. Float类型占4个字节,也就是32bit,其中最高位是符号位,1~9位是指数位,后边的23bit是数值位.如下所示:符号位 指数位 数值位 1bit 8bit 23bit 共32bit 2. 大部分数据的二进制形式都可以用科学计数法表示,即1.m*2^n这种形式,只要知道m和n,就能确定一个数值,float中指数位记载的就是n,数值位记载的就是m.简单示例:我们先来个简单的例子:4.5f是怎么存储的?1. 我们将十进制的4.5转.

2020-12-21 20:02:59 1300

原创 杂记--如何重置Ubuntu16.04系统的root密码

写在前面对于长时间不用的服务器,忘记密码是件常发生的事,那么如何重置密码呢?正文我们可以利用Ubuntu的恢复模式来重置1. 重启Ubuntu系统,并在重启过程中一直按住Shift2. 选择Advanced options for Ubuntu3.选择recovery mode4. 选择root Drop to root shell prompt5. 直接回车6. 此时就进入root用户了7. 执行下面的命令充值密码passwd8....

2020-12-15 17:48:53 1087

原创 数据库--oracle--如何在Ubuntu上安装Oracle

test

2020-12-12 23:31:23 5595 15

原创 数据结构--树--B+树--与B树的比较

定义:(以下来自百度百科)(1)每个节点至多有m个子女; (2)除根节点外,每个节点至少有floor(m/2)个子女,根节点至少有两个子女; (3)有k个子女的节点必有k个关键字。个人理解:网上对B+树的定义各不相同,如有的说有k个子女的节点必有k-1个关键字,如我研究树结构时常用的网站https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html就是如此,甚至百度百科自己也有自相矛盾的说法,如下:在定义中它说每个.

2020-11-28 20:13:07 568

原创 数据结构--树--B树--详解查询插入删除

mysql的索引结构

2020-11-25 16:59:56 510

原创 数据库--MYSQL--JAVA连接开启了SSL的MYSQL

先普及两个概念:keystore: 一个仓库,存储本地向CA机构申请的数字证书和本地的秘钥truststore:一个仓库,存储可信任的证书,也就是CA证书环境:数据库:MYSQL 5.7.29驱动: com.mysql.cj.jdbc.Driver 8.0.16介绍几个在连接时会用到的重要的参数:参数 说明 sslMode SSL的连接模式 useSSL 是否建立SSL连接 verifyServerCertificate 是否需要检验my...

2020-11-23 20:03:34 1695

原创 数据库--MYSQL--SSL连接情况分析(5.7及以上)

B:大哥!!!QAQA:咋了?B:赵傻子监控了我的数据库操作记录!!连我喜欢丽丽的秘密都被他知道了!我不活了!!QAQA:咋监控你的?它有你数据库的账号密码?B:不是,它通过通过工具从网络上抓包,把我的数据库操作记录都抓到了!!你看!!!B:这是他监控的信息!!!A:哦,tshark啊,这工具确实可以用来抓包B:大哥,咋办啊,我这都不敢操作数据库了QAQA:别哭了,你开启下数据库的SSL连接不就好了B:什么东东?A:简单来说就是开启SSL后就相当于为你传送的数据加

2020-11-20 11:56:45 1018 1

原创 网络安全--数字签名/数字证书

对称加密:未加密的信息+秘钥 --> 加密的黑盒子 --> 加密后的信息加密后的信息+秘钥 --> 解密的黑盒子 --> 未加密的信息非对称加密:未加密的信息+公钥 --> 加密的黑盒子 --> 加密后的信息加密后的信息+私钥 --> 解密的黑盒子 --> 未加密的信息既可以公钥加密,私钥解密也可以私钥加密,公钥解密数字签名:A:我要给你发送条消息B:这消息万一被人改了怎么办?A:我会签上我的大名B:怎么签.

2020-11-17 17:24:27 1846 4

原创 数据结构--树--红黑树--Java实现检验和删除

写在前面今儿个周末,终于有时间把前两天写的关于红黑树删除部分的代码进行测试一下,现在测试完了,暂没有发现问题,所以将代码分享出来,供大家参考学习.注意:这次的检验与删除部分跟之前的查找和插入部分一脉相承,所以重复的部分我就不粘出来了,大家可以两篇文章一起看.水平有限,难免疏漏,欢迎指正.代码部分运行环境jdk1.8intellij idea ultimate 2020.2检查红黑树是否合法 /** * 检查红黑树是否合法 * */

2020-11-15 14:15:21 223

原创 数据结构--树--红黑树--Java实现查找和插入

写在前面前两天写完红黑树的分析之后,趁热打铁写了下红黑树的部分实现代码,因删除部分比较复杂,所以这次只涉及查找和插入,删除部分过两天有时间了再写.代码部分实现的功能比较简单,就是查找,插入和输出.我基本上把代码的地方都测过了,但水平有限,难免有疏漏,欢迎指正.运行环境:jdk1.8intellij idea ultimate 2020.2左旋异常:package com.test.Tree;/** * @author: cuijr * @email: * @

2020-11-11 20:03:13 204 2

原创 数据结构--树--红黑树--详解插入和删除的各种情况

写在前面:之前在研究HASHMAP的时候就听说过红黑树的大名,畏于其复杂性没敢深入研究,被某些人好一顿嘲笑,这次决心搞点儿复杂的东西,就直接从红黑树下手了.我研究了两天,发现网上资料不少,但就是让人云里雾里的,总觉着有些问题没有看明白.后来发现是因为大部分up主讲的不够透彻,遇到他们觉得理所当然的地方就略过去了,但就是这理所当然的地方,总是让我想不通!现在我基本想通了,就整一篇,供大家参考.红黑树介绍红黑树的定义:红黑树(Red Black Tree)是一种自平衡二叉查找树. --...

2020-11-10 17:40:28 657 3

RedBlackTree.zip

这是我用JAVA实现的红黑树,可以实现红黑树的检验,查找,插入和删除,我开发时用的环境是JDK1.8,里面没有复杂的技术,就是插入\删除时要考虑的情况比较多而已,对比我发的文章应该很容易理解,有需要的免费自取.

2020-11-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除