自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

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

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

2019-07-31 09:06:22 1886 7

原创 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 1877

原创 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 735 2

原创 算法题之动态规划-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-Wi]+Pi( j >= Wi ), f[i-1,j] },就知道这道算法的答案了,这个状态转换方...

2019-07-24 18:40:28 5210 9

原创 Java面试之内存屏障

为什么要有内存屏障这个是为了解决因为cpu,高速缓存,主内存出现的时候,导致的可见性和重序性问题,什么问题呢,看下面的代码我们都知道计算机运算任务需要CPU和内存相互配合共同完成,其中CPU负责逻辑计算,内存负责数据存储。CPU要与内存进行交互,如读取运算数据、存储运算结果等。由于内存和CPU的计算速度有几个数量级的差距,为了提高CPU的利用率,现代处理器结构都加入了一层读写速度尽可能接近CP...

2019-07-24 09:40:52 6043

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

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

2019-07-23 16:21:03 748 1

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

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

2019-07-23 15:20:18 1131 2

原创 模拟并解决缓存穿透

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

2019-07-23 09:47:34 756 2

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

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

2019-07-22 09:33:52 3799 1

原创 jvm内存泄漏

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

2019-07-19 10:02:39 4306

原创 事务的ACID

为什么叫做acid呢因为下面这几个单词1)原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 2)一致性(Consistency)一个事务中,事务前后数据的完整性必须保持一致。3)隔离性(Isolation)多个事务,事务的隔离性是指多个用户并发访问数据库时,一个用户的事务不能被其它用户的事务所干扰,多个并发事务之间数据要相互隔离。...

2019-07-19 09:38:22 1975

原创 Jvm内存溢出

堆内存溢出(outOfMemoryError:java heap space)在jvm规范中,堆中的内存是用来生成对象实例和数组的。如果细分,堆内存还可以分为年轻代和年老代,年轻代包括一个eden区和两个survivor区。当生成新对象时,内存的申请过程如下:a、jvm先尝试在eden区分配新建对象所需的内存;b、如果内存大小足够,申请结束,否则下一步;c、jvm启动youngGC,试图将...

2019-07-19 09:37:16 506

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

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

2019-07-18 10:13:52 12629 7

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

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

2019-07-18 09:57:31 10555 6

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

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

2019-07-17 09:18:00 4817 1

原创 Mockito框架抛出NullPointerException

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

2019-07-16 18:53:59 9786 3

原创 应用层协议详解

使用http协议讲解应用层协议首先查看linux里面有没有telnet命令,如果没有的话,就使用下面的命令进行安装telnet命令yum install xinetd telnet telnet-server -y然后执行下面的命令,telnet命令本身就是一个应用层协议,它的作用是在两台主机间,建立一个连接,也就是打开两台主机间文本传输的一个通道。"telnet google.com ...

2019-07-16 09:39:33 2668

原创 网络通信协议

网络通信协议什么是网络通信协议Tcp/ip协议可不是单单指tcp协议和ip协议Tcp/ip协议里面的网络模型层Tcp/ip协议里面的网络模型层如下所示应用层协议举例讲解应用层协议传输层协议网络层协议链路层协议通过一次数据的传输来讲解Tcp/ip协议里面的网络模型层什么是网络通信协议通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道...

2019-07-16 09:34:32 1278

原创 java类的加载过程

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

2019-07-16 09:10:56 6532 4

原创 ConstantValue属性

ConstantValue属性在类加载过程的准备阶段做的事情是什么在编译时Javac将会为被static和final修改的常量生成ConstantValue属性(此时ConstantValue属性的值是多少,暂时不知道,),在类加载的准备阶段虚拟机便会根据ConstantValue为常量设置相应的值(这个值是什么意思呢,比如我们在程序中定义final static int a = 100,那么这...

2019-07-16 09:05:04 3798

原创 Nginx实现负载均衡

在看这个知识点之前,先学会nginx的反向代理先看nginx的反向代理,就看这个链接:https://blog.csdn.net/weixin_43689480/article/details/95860813nginx实现负载均衡的过程想要的结果就是:给 www.sina.com 添加多个tomcat服务器首先安装两个tomcat服务器,都放到nginx服务器里面,两个端口分别是80...

2019-07-15 18:54:11 1304

原创 EditPlus操作linux里面的文件

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

2019-07-14 11:33:40 3504

原创 nginx报错403 forbidden

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

2019-07-13 18:37:27 2163

原创 Nginx的安装

首先是安装前准备环境首先需要安装gcc的环境yum install gcc-c++下面表示已经安装好了,所以不会在安装了然后是安装PCREPCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。yum inst...

2019-07-13 18:34:01 561

原创 阿里云域名绑定ip

首先点击域名的解析按钮然后点击新手引导然后输入ip地址然后启动自己服务器里的nginx服务器,此时使用域名访问就成功了怎么安装nginx,看这个文章https://blog.csdn.net/weixin_43689480/article/details/95771905...

2019-07-13 17:40:04 692

原创 解决linux端口占用

就比如解决redis的端口占用使用redis-server启动,发现6379端口被占用了使用下面的命令,查看端口,找到pidnetstat -apn|grep :6379然后使用kill -9 pid来关闭端口kill -9 25768...

2019-07-13 16:37:46 2577

原创 数据结构的时间复杂度和空间复杂度

为什么需要时间复杂度和空间复杂度你可能会有些疑惑,我把代码跑一遍,通过统计、监控,就能得到算法执行的时间和占用的内存大小。为什么还要做时间、空间复杂度分析呢?这种分析方法能比我实实在在跑一遍得到的数据更准确吗?首先,我可以肯定地说,你这种评估算法执行效率的方法是正确的。很多数据结构和算法书籍还给这种方法起了一个名字,叫事后统计法。但是,这种统计方法有非常大的局限性。1. 测试结果...

2019-07-13 15:40:47 6504 1

原创 Mockito框架里面的@Mock注解底层原理

@Mock注解就是其实就是用cglib的原理帮我们new了一个@Mock注解作用类的子类,什么意思呢,往下看首先是Company,此时hh方法返回值是”字符串”,package com.one.util;import lombok.AllArgsConstructor;import lombok.Data;@Data@AllArgsConstructorpublic class...

2019-07-11 14:17:17 9077 3

原创 运算符表达式之添加新符号

最基本的运算符表达式我看这个比较好,可以很简单的就处理了运算符表达式,下面关注的其实就是一点,就是符号栈,就是下面的operatorStack栈,当往operatorStack栈里面添加符号的时候,只要添加的符号的运算等级比operatorStack栈顶的运算符等级低,那么就把operatorStack栈顶的运算符弹出来,进行运算,如果添加的符号的运算等级比operatorStack栈顶的运算符...

2019-07-10 15:27:53 1167

原创 ThreadLocal类的作用,原理和应用场景

ThreadLocal类的作用通常情况下,我们创建的变量是可以被任何一个线程访问并修改的。而使用ThreadLocal创建的变量只能被当前线程访问,其他线程则无法访问和修改,这就是ThreadLocal类的作用什么意思呢,我们看下面的代码,我们看到结果应该是萧一和萧二和萧三增加之后的年龄应该都是增加2,但是结果呢,萧二是增加了2,然后萧一增加了4,然后萧三增加了6,这就有问题了packag...

2019-07-09 10:57:28 7362

原创 idea代码重构

idea重构代码的奇淫技巧不要使用粘贴复制的方法,这一种方法太low,怎么做呢,用代码的重构比如下面的代码,有A,B,User这三个类User类代码 package com.domain; /\*\* \* @Author: wb-mqk568853 \* @Date: 2019/6/17 20:39 \*/ public class User { ...

2019-07-04 20:02:01 2000

原创 Ubuntu安装Mysql

Ubuntu上面安装mysql首先执行下面的命令 sudo apt-get install mysql-server 然后出现下面的框,然后我们输入root,然后直接点击enter键,这样root用户的密码就设置好了然后执行下面的命令 sudo apt install mysql-client 然后执行下面的命令sudo apt install libmysqlcli...

2019-07-04 16:45:52 612

空空如也

空空如也

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

TA关注的人

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