自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 EditPlus4版本的注册码(2019-07-15亲测可用)

注意使用的是EditPlus是4版本的 下载的连接如下所示:https://www.editplus.com/latest4.html 直接下面下面的连接就好了 下载之后就是傻瓜式安装,安装好之后,然后打开EditPlus软件:出现下面的弹框 然后我们就获取注册码,首先点击下面的连...

2019-07-15 20:09:28

阅读数 2334

评论数 0

原创 2019秋季阿里Java面试题(附有答案)

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

2019-11-07 09:53:49

阅读数 154

评论数 0

原创 FreeMarker入门指南

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

2019-10-24 09:43:04

阅读数 251

评论数 0

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

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

2019-10-14 09:28:38

阅读数 45

评论数 0

原创 Nginx配置反向代理

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

2019-10-10 22:54:51

阅读数 6480

评论数 0

原创 ThreadLocal的源码探究

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

2019-10-09 14:52:42

阅读数 168

评论数 0

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

我们在Java源码里面经常看到CountDownLatch类的存在,它的作用是什么呢,今天我们来揭开它的真面目。 您请往下看 CountDownLatch类的作用是什么 CountDownLatch是JAVA提供在java.util.concurrent包下的一个辅助类,可以把它看成是一个计...

2019-09-20 09:22:42

阅读数 516

评论数 1

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

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

2019-09-18 15:04:26

阅读数 1544

评论数 1

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

在本文中,我们将讲到如何处理Maven的依赖冲突 不知道你在使用Maven时是否遇到过诸如"NoSuchMethodError"或"ClassNotFoundException"之类的问题,甚至发生这些问题的Java类你没都没有听说过。要搞清楚这里面的缘由,...

2019-08-20 17:33:11

阅读数 928

评论数 1

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

介绍Snowflake算法 SnowFlake算法是国际大公司Twitter的采用的一种生成分布式自增id的策略,这个算法产生的分布式id是足够我们我们中小公司在日常里面的使用了。我也是比较推荐这一种算法产生的分布式id的。 算法snowflake的生成的分布式id结构组成部分 算法snow...

2019-08-14 09:50:41

阅读数 993

评论数 0

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

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

2019-08-08 09:47:13

阅读数 248

评论数 0

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

数据库自增ID机制原理介绍 在分布式里面,数据库的自增ID机制的主要原理是:数据库自增ID和mysql数据库的replace_into()函数实现的。这里的replace数据库自增ID和mysql数据库的replace_into()函数实现的。这里的replace into跟insert功能类似...

2019-08-07 10:07:42

阅读数 158

评论数 0

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

UUID的生成策略: UUID的方式能生成一串唯一随机32位长度数据,它是无序的一串数据,按照开放软件基金会(OSF)制定的标准计算,UUID的生成用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。UUID的底层是由一组32位数的16进制数字构成,是故 UUID 理论上的总数为 ,约等...

2019-08-06 09:10:28

阅读数 316

评论数 0

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

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

2019-08-05 16:01:34

阅读数 1596

评论数 0

原创 git命令创建本地仓库并且推送到远程仓库的整个过程

这里我们就通过一个例子来讲解,例子如下所示: 从master分支创建一个ddd_refactor_logistics并且把ddd_refactor_logistics分支推送到远程仓库里面 首先是执行git fetch 更新远程分支到本地,然后使用git branck –a命令查看在远程仓库里...

2019-08-03 22:36:58

阅读数 149

评论数 0

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

什么叫做cap Cap分别指可用性,分区容错性,一致性 分区容错性 如下图中,G1 和 G2 是两台跨区的服务器。G1 向 G2 发送一条消息,G2 可能无法收到。系统设计的时候,必须考虑到这种情况。一般来说,分区容错无法避免,因此可以认为 CAP 的 P 总是成立。所以在cap原则里面,分...

2019-08-02 09:37:39

阅读数 787

评论数 2

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

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

2019-08-01 09:45:44

阅读数 1564

评论数 0

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

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

2019-07-31 09:06:22

阅读数 1060

评论数 7

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

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

2019-07-30 09:08:03

阅读数 309

评论数 0

原创 linux查看日志的奇淫技巧

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

2019-07-26 09:51:32

阅读数 162

评论数 0

原创 算法题之动态规划-01背包问题

文字介绍解决背包问题 假设山洞里共有a,b,c,d ,e这5件宝物(不是5种宝物),它们的重量分别是2,2,6,5,4,它们的价值分别是6,3,5,4,6,现在给你个承重为10的背包, 怎么装背包,可以才能带走最多的财富。 此时只要理解了状态转换方程f[i,j] = Max{ f[i-1,j-...

2019-07-24 18:40:28

阅读数 644

评论数 7

原创 Java面试之内存屏障

为什么要有内存屏障 这个是为了解决因为cpu,高速缓存,主内存出现的时候,导致的可见性和重序性问题,什么问题呢,看下面的代码 我们都知道计算机运算任务需要CPU和内存相互配合共同完成,其中CPU负责逻辑计算,内存负责数据存储。CPU要与内存进行交互,如读取运算数据、存储运算结果等。由于内存和C...

2019-07-24 09:40:52

阅读数 1836

评论数 0

原创 cpu,高速缓冲区,主内存导致可见性和重排序问题

cpu,高速缓冲区,主内存之间的关系 我们都知道计算机运算任务需要CPU和内存相互配合共同完成,其中CPU负责逻辑计算,内存负责数据存储。CPU要与内存进行交互,如读取运算数据、存储运算结果等。由于内存和CPU的计算速度有几个数量级的差距,为了提高CPU的利用率,现代处理器结构都加入了一层读写速...

2019-07-23 16:21:03

阅读数 135

评论数 0

原创 IT世界里面的牛逼网站

在不停的学习中,碰到了不少牛人网站,在这里记一下以便以后寻找 阿里中间件 美团点评团队 奇虎360团队 阮一峰的网络日志 月光

2019-07-23 15:20:18

阅读数 445

评论数 2

原创 模拟并解决缓存穿透

什么叫做缓存穿透 缓存穿透只会发生在高并发的时候,就是当有10000个并发进行查询数据的时候,我们一般都会先去redis里面查询进行数据,但是如果redis里面没有这个数据的时候,那么这10000个并发里面就会有很大一部分并发会一下子都去mysql数据库里面进行查询了 解决缓存穿透 首先我模...

2019-07-23 09:47:34

阅读数 292

评论数 0

原创 多线程里面的原子性,可见性,有序性

原子性 原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。

2019-07-22 09:33:52

阅读数 691

评论数 0

原创 jvm内存泄漏

内存泄漏和内存溢出的关系 内存泄露:指程序中动态分配内存给一些临时对象,但是对象不会被GC所回收,它始终占用内存。即被分配的对象可达但已无用。 内存溢出:指程序运行过程中无法申请到足够的内存而导致的一种错误。内存溢出通常发生于OLD段或Perm段垃圾回收后,仍然无内存空间容纳新的Java对...

2019-07-19 10:02:39

阅读数 1377

评论数 0

原创 事务的ACID

为什么叫做acid呢 因为下面这几个单词 1)原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 2)一致性(Consistency)一个事务中,事务前后数据的完整性必须保持一致。 3)隔离性(Isolation)多个事务,事务的隔...

2019-07-19 09:38:22

阅读数 707

评论数 0

原创 Jvm内存溢出

堆内存溢出(outOfMemoryError:java heap space) 在jvm规范中,堆中的内存是用来生成对象实例和数组的。如果细分,堆内存还可以分为年轻代和年老代,年轻代包括一个eden区和两个survivor区。当生成新对象时,内存的申请过程如下: a、jvm先尝试在eden区分...

2019-07-19 09:37:16

阅读数 248

评论数 0

原创 大白话讲解Mysql之悲观锁

悲观锁 悲观锁的原理是什么呢,就是给c事务里面的某一个sql语句添加一把锁,当a线程执行这个有锁的sql语句的时候,b线程就只能执行到c事务里面这个有锁的sql语句前面的一些sql语句,然后等到a线程执行完这个有锁的sql语句的事务的时候,b线程才能执行c事务里面有锁的sql语句 实例讲解悲观锁

2019-07-18 10:13:52

阅读数 7088

评论数 7

原创 大白话讲解Mysql之乐观锁

乐观锁 什么是乐观锁 什么是乐观锁呢,就是给数据库的数据表添加一个字段version,在更新数据库记录是将version加1,从而在修改数据时通过检查版本号是否改变判断出当前更新基于的查询是否已经是过时的版本。不是太好理解,这里我么就借助实例来讲解乐观锁(下面实例讲解的过程中,商品的数量就可以...

2019-07-18 09:57:31

阅读数 1883

评论数 5

原创 事务里面的脏读、不可重复读、虚读/幻读

脏读 举例演示脏读 脏读就是B事务读取到了A事务尚未提交的数据 ,什么意思呢,往下看 首先执行下面的sql语句 drop table acount; create table acount( id int, name varchar(225), money int ); in...

2019-07-17 09:18:00

阅读数 2477

评论数 1

原创 Mockito框架抛出NullPointerException

首先看一下Mockito框架是怎么抛出NullPointerException 比如下面的代码

2019-07-16 18:53:59

阅读数 2105

评论数 0

原创 应用层协议详解

使用http协议讲解应用层协议 首先查看linux里面有没有telnet命令,如果没有的话,就使用下面的命令进行安装telnet命令 yum install xinetd telnet telnet-server -y 然后执行下面的命令,telnet命令本身就是一个应用层协议,它的...

2019-07-16 09:39:33

阅读数 413

评论数 0

原创 网络通信协议

网络通信协议什么是网络通信协议Tcp/ip协议可不是单单指tcp协议和ip协议Tcp/ip协议里面的网络模型层Tcp/ip协议里面的网络模型层如下所示应用层协议举例讲解应用层协议传输层协议网络层协议链路层协议通过一次数据的传输来讲解Tcp/ip协议里面的网络模型层 什么是网络通信协议 通过计算...

2019-07-16 09:34:32

阅读数 389

评论数 0

原创 java类的加载过程

类的加载过程目录什么是类的加载过程类加载的过程讲解第一个部分:加载阶段加载时类加载过程的第一个阶段,在加载阶段,虚拟机需要完成以下三件事情,就是下面的三件在类的加载过程中,相对于类加载过程里面的的连接和初始化阶段而言,加载阶段是可控性最强的阶段,因为开发人员既可以使用系统提供的类加载器来完成加载,...

2019-07-16 09:10:56

阅读数 608

评论数 0

原创 ConstantValue属性

ConstantValue属性在类加载过程的准备阶段做的事情是什么 在编译时Javac将会为被static和final修改的常量生成ConstantValue属性(此时ConstantValue属性的值是多少,暂时不知道,),在类加载的准备阶段虚拟机便会根据ConstantValue为常量设置相...

2019-07-16 09:05:04

阅读数 437

评论数 0

原创 Nginx实现负载均衡

在看这个知识点之前,先学会nginx的反向代理 先看nginx的反向代理,就看这个链接:https://blog.csdn.net/weixin_43689480/article/details/95860813 nginx实现负载均衡的过程 想要的结果就是:给 www.sina.com 添加...

2019-07-15 18:54:11

阅读数 428

评论数 0

原创 EditPlus操作linux里面的文件

有的时候我们不是很了解vi命令,不好处理linux里面的文件,此时告诉大家一个好技巧,就是通过EditPlus来链接你的linux服务器,来处理linux里面的文件,十分好用哦。 连接过程如下 首先选中下面的FTP settings 然后就是点击add添加你的linux服务器 然后要注意点击下...

2019-07-14 11:33:40

阅读数 751

评论数 0

原创 nginx报错403 forbidden

访问nginx的时候报错了403 forbidden 然后看我看nginx的日志/var/log/nginx/error.log里面报错,说明没有权限 [error] 1996#0: *1 open() "/root/nginx/html/favicon.ico" fa...

2019-07-13 18:37:27

阅读数 1169

评论数 0

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