2 IT乾坤

尚未进行身份认证

我要认证

认真百分百

等级
TA的排名 3w+

jdk1.7ConcurrentHashMap源码探究

出现背景1、线程不安全的HashMap因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。2、效率低下的HashTable容器HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下HashTable的效率非常低下。因为当一个线程访问HashTable的同步方法时,其他线程访问HashTable的同步方法时,可能会进入阻塞或轮询状态。如线程1使用put进行添加元素,线程2不但不能使用p

2020-05-14 09:33:06

ubuntu安装|卸载docker

Ubuntu安装Docker这个网上有不少,这个正常安装就能够搞定了首先使用命令sudo apt update 更新安装包,我的已经更新过了,所以无需更新sudo apt update然后使用命令sudo apt install docker.iosudo apt install docker.io然后就可以使用sudo docker version命令看安装好的版本了sud...

2020-04-21 09:32:00

阿里Java面试题(附有答案)

2019阿里面试题(附有答案)

2019-11-06 23:04:36

FreeMarker入门指南

FreeMarker基础,FreeMarker的List,Map集合使用,FreeMarker里面的#if,#else,#assign,#list

2019-10-24 09:40:41

深入探究@Mock注解的底层原理

Mockito框架里面的@mock注解吗大公司里面测试是非常重要的,几乎占到了开发的二分之一公司,而Mockito框架是Java测试的首选,然后@Mock注解又是Mockito框架里面的重中之重,了解@Mock注解的原理对于Java的测试是非常有帮助的。

2019-10-11 21:44:14

Nginx配置反向代理

Nginx配置反向代理,什么是反向代理反向代理服务器决定哪台服务器提供服务。返回代理服务器不提供服务器。只是请求的转发。

2019-07-14 14:05:31

ThreadLocal的源码探究

ThreadLocal源码探究,ThreadLocal原理,ThreadLocal的作用

2019-10-09 14:47:17

Java源码中经常看到的CountDownLatch类详解

我们在Java源码里面经常看到CountDownLatch类的存在,它的作用是什么呢,今天我们来揭开它的真面目。您请往下看CountDownLatch类的作用是什么CountDownLatch是JAVA提供在java.util.concurrent包下的一个辅助类,可以把它看成是一个计数器,其内部维护着一个count计数,只不过对这个计数器的操作都是原子操作,同时只能有一个线程去操作这个计数...

2019-09-19 17:17:40

Idea运行报错Error running 'Application': Command line is too long的解决方法

新项目再Idea里面启动的时候,有的时候报错信息如下所示怎么解决呢,首先找到项目里面的idea/workspace.xml文件,然后再找到标签,标签如下所示然后再在component 标签里加一行 ,就是变成下面这样这样在启动项目,就不会报错了,؏؏☝ᖗ乛◡乛ᖘ☝؏؏...

2019-09-18 14:58:09

一文看懂怎么解决Maven依赖冲突问题

在本文中,我们将讲到如何处理Maven的依赖冲突不知道你在使用Maven时是否遇到过诸如"NoSuchMethodError"或"ClassNotFoundException"之类的问题,甚至发生这些问题的Java类你没都没有听说过。要搞清楚这里面的缘由,我们得学习Maven对依赖冲突的处理机制。Maven采用“最近获胜策略(nearest wins strategy)”的方式处理依赖冲突,即...

2019-08-20 17:33:11

分布式唯一ID生成系列(5)——Twitter的雪法算法Snowflake适合做分布式ID吗

介绍Snowflake算法SnowFlake算法是国际大公司Twitter的采用的一种生成分布式自增id的策略,这个算法产生的分布式id是足够我们我们中小公司在日常里面的使用了。我也是比较推荐这一种算法产生的分布式id的。算法snowflake的生成的分布式id结构组成部分算法snowflake生成id的结果是一个64bit大小的整数,它的结构如下图,这里我么来讲一下这个结构:首先因为w...

2019-08-14 09:50:41

分布式唯一ID生成系列(4)——Redis集群实现的分布式ID适合做分布式ID吗

首先是项目地址:https://github.com/maqiankun/distributed-id-redis-generator关于Redis集群生成分布式ID,这里要先了解redis使用lua脚本的时候的EVAL,EVALSHA命令:https://www.runoob.com/redis/scripting-eval.htmlhttps://www.runoob.com/redi...

2019-08-08 09:47:13

分布式唯一ID生成系列(3)——数据库自增ID机制适合做分布式ID吗

数据库自增ID机制原理介绍在分布式里面,数据库的自增ID机制的主要原理是:数据库自增ID和mysql数据库的replace_into()函数实现的。这里的replace数据库自增ID和mysql数据库的replace_into()函数实现的。这里的replace into跟insert功能类似,不同点在于:replace into首先尝试插入数据列表中,如果发现表中已经有此行数据(根据主键或唯一...

2019-08-07 10:07:42

分布式唯一ID生成系列(2)——UUID适合做分布式ID吗

UUID的生成策略:UUID的方式能生成一串唯一随机32位长度数据,它是无序的一串数据,按照开放软件基金会(OSF)制定的标准计算,UUID的生成用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。UUID的底层是由一组32位数的16进制数字构成,是故 UUID 理论上的总数为 ,约等于 ,也就是说若每纳秒产生1百万个 UUID,要花100亿年才会将所有 UUID 用完(100亿年啊,地...

2019-08-06 09:10:28

分布式唯一ID生成系列(1)——为什么需要分布式ID以及分布式ID的业务需求

为什么需要分布式id生成系统在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。如在美团点评的金融、支付、餐饮、酒店、猫眼电影等产品的系统中,数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息,数据库的自增ID显然不能满足需求;特别一点的如订单、骑手、优惠券也都需要有唯一ID做标识。此时一个能够生成全局唯一ID的系统是非常必要的。概括下来,那业务系统对ID号的要求有哪些...

2019-08-05 16:01:34

大白话讲解分布式里面的Cap原则

什么叫做capCap分别指可用性,分区容错性,一致性分区容错性如下图中,G1 和 G2 是两台跨区的服务器。G1 向 G2 发送一条消息,G2 可能无法收到。系统设计的时候,必须考虑到这种情况。一般来说,分区容错无法避免,因此可以认为 CAP 的 P 总是成立。所以在cap原则里面,分区容错性是必须要有的一致性一致性的意思是,写操作之后的读操作,必须返回该修改后的值。举例来说,某条记录...

2019-08-02 09:37:39

Debug方式讲解Rabbitmq的自动ACK和手动ACK

介绍Rabbitmq的手动ACK和自动ACK当消息一旦被消费者接收,队列中的消息就会被删除。那么问题来了:RabbitMQ怎么知道消息被接收了呢?这就要通过消息确认机制(Acknowlege)来实现了。当消费者获取消息后,会向RabbitMQ发送回执ACK,告知消息已经被接收。不过这种回执ACK分两种情况:自动ACK:消息一旦被接收,消费者自动发送ACK手动ACK:消息接收后,不会发送A...

2019-08-01 09:45:44

Java里面的四种引用:强引用,软引用,弱引用,虚引用

在垃圾回收的时候,被释放的对象要考虑什么样的对象内存要被GC回收掉,那么怎么判断哪些对象要被回收掉呢,在java里面定义了四种引用对象,不同的引用对象在被GC扫描的时候,会有不同的处理方式,这里我们来看一下强引用强引用介绍强引用是用来描述必须存在和引用的对象,比如Object a=new Object(),只要强引用还存在,被引用的对象就永远不会被回收。强引用怎么被垃圾回收方法里面的局部...

2019-07-31 09:06:22

Mysql索引底层的Bmore树设置非叶子节点数据小于4KB来减少IO磁盘读取次数

原因如下所示因为数据库里面的索引就是使用的bmore树,所以我们使用sql语句来讲解bmore树的产生:比如有下面的两个常用的需求:根据某个值查找数据,比如select * from user where id=1234;根据区间值来查找某些数据,比如select * from user where id > 1234 and id < 2345。为了让二叉查找树支持按照区...

2019-07-30 09:08:03

linux查看日志的奇淫技巧

对于日志很大,打开的时候造成服务器压力的日志文件怎么处理首先介绍命令,下面的awk ‘END{print NR}’ hello.txt表示查看hello.txt文件里面总共有多少行,下面的sed -n ‘1,3p’ hello.txt表示把hello.txt文件里面的第一行到第三行里面的内容给输出来awk 'END{print NR}' hello.txtsed -n '1,3p' hell...

2019-07-26 09:51:32

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 推荐红人
    推荐红人
    发布高质量Blink获得高赞和评论,进入推荐栏目即可获得
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。