自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

好好学习

  • 博客(168)
  • 资源 (3)
  • 问答 (9)
  • 收藏
  • 关注

转载 Redis持久化的方式与实现原理

Redis是一款非关系型数据库,Redis之所以性能很好是因为它将所有的数据都保存在内存中,然而当Redis重启之后所有在内存中的数据都会丢失。在某些情况下我们会希望重启之后数据能够不丢失例如: 1.将Redis作为数据库使用的时候 2.将Redis作为缓存服务器使用,但是缓存击穿后会对性能造成很大的影响,所有缓存失效会造成缓存雪崩,使得服务器无法响应 这时候我们需要Redis能够对数据进行持久化...

2019-11-28 13:14:45 467

转载 关于JAVA NIO是同步非阻塞I/O的解释

转自:https://blog.csdn.net/tomcyndi/article/details/79087578 同步IO 异步IO IO基本概念 Linux的内核将所有外部设备都可以看做一个文件来操作。那么我们对与外部设备的操作都可以看做对文件进行操作。我们对一个文件的读写,都通过调用内核提供的系统调用;内核给我们返回一个file descriptor(fd,文件描述符)。对一个sock...

2019-07-26 11:50:23 417

原创 Golang 中go get/build/install undefind...

https://github.com/golang/go/wiki/Modules#how-do-i-use-vendoring-with-modules-is-vendoring-going-away How do I use vendoring with modules? Is vendoring going away? The initial series of vgo blog posts...

2019-07-19 11:18:05 599

转载 “阻塞”与"非阻塞"与"同步"与“异步"

作者:严肃 链接:https://www.zhihu.com/question/19732473/answer/20851256 “阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答。1.同步与异步同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication)所谓同步,就是在...

2019-03-10 02:08:28 286

转载 InnoDB的七种锁

《挖坑,InnoDB的七种锁》初步说明了InnoDB中,会使用七种不同类型的锁 一、自增锁(Auto-inc Locks) 一,案例说明 MySQL,InnoDB,默认的隔离级别(RR),假设有数据表: t(id AUTO_INCREMENT, name); 数据表中有数据: 1, shenjian 2, zhangsan 3, lisi 事务A先执行,还未提交: insert into t(na...

2019-03-05 01:19:49 459

转载 Linux中的进程内存种类

其实在认真阅读了这篇名为“计算内存使用”的文章之后,还是处于半迷糊状态。这位作者就说Linux下面没有特别好的显示内存占用的工具,虽然有top和free,但都说得不清楚,就跟巫毒教的魔术似的。 比如top这个工具,它会显示3种数据,作者分别解释如下: VIRT:virtual memory usage。Virtual这个词很神,一般解释是:virtual adj.虚的, 实质的, [物]有效的, ...

2019-02-28 23:42:11 417

原创 JUC的线程安全容器

2019-02-28 10:36:19 445

转载 深入理解SELECT ... LOCK IN SHARE MODE和SELECT ... FOR UPDATE

概念和区别 SELECT … LOCK IN SHARE MODE走的是IS锁(意向共享锁),即在符合条件的rows上都加了共享锁,这样的话,其他session可以读取这些记录,也可以继续添加IS锁,但是无法修改这些记录直到你这个加锁的session执行完成(否则直接锁等待超时)。 SELECT … FOR UPDATE 走的是IX锁(意向排它锁),即在符合条件的rows上都加了排它锁,其他ses...

2019-02-24 13:31:09 735

原创 已知进栈序列,求所有出栈序列||已知出栈序列求所有的入栈序列

已知出栈序列求所有的入栈序列头条实习一面的算法题,当时没有想出来,事后想起来求出栈序列的所有入栈序列和求进栈序列的所有出栈序列其实答案是一样的,所以只要按照求进栈序列的所有出栈序列来算就行了。 why? A序列 进栈 -> B序列 那么 B序列 进栈必然可以得到 -> A序列 然后用dfs就可以了,巧妙的很。 public class AllPopSeq { @Test ...

2019-02-03 16:40:21 4825 3

转载 NAT和DHCP 的区别是什么?主机通过DHCP获取 IP等信息,为何需要同DHCP服务器四次交互?

作者:车小胖 链接 https://www.zhihu.com/question/66893227/answer/247064255 NAT和DHCP 的区别是什么? TCP/IP协议之所以最终打败对手,傲视群雄,一个不得不提的协议就是DHCP。如果没有DHCP,TCP/IP协议在初始化过程中,需要用户提供IP地址、网络掩码、默认网关、DNS服务器,以此来完成各个协议模块的初始化工作,对于广大...

2019-01-31 14:18:56 1639 1

原创 java中byte转换int时为何与0xff进行与运算

那么为何要和 0xFF进行与运算呢?直接 Integer.toHexString(b[ i ]);,将byte强转为int不行吗?这个问题就在于你想得到的结果是什么样的格式 int&0xFF的意义就是把byte类型的数据的前3个byte位置0,这样得到的结果是1byte的十六进制,要不然的话如果是负数前面24位补1的话得到的就是4byte的十六进制 @Test public vo...

2019-01-24 12:33:56 782 3

原创 实现一个BlockingQueue的put和take

1.jdk8中多是使用的ReentrantLock ArrayBlockingQueue的put和take的实现是通过一个ReentrantLock来实现的所以他的put 和 take会阻塞对方,但是LinkedBlockingQueue是通过两个ReentrantLock实现的,可以分别进行put和take public void put(E e) throws InterruptedExcep...

2019-01-21 01:48:42 1218

转载 阻塞队列之一:BlockingQueue汇总

一、阻塞队列介绍 转自:https://www.cnblogs.com/duanxz/p/3400003.html BlockingQueue 通常用于一个线程生产对象,而另外一个线程消费这些对象的场景。下图是对这个原理的阐述: 一个线程往里边放,另外一个线程从里边取的一个 BlockingQueue。 一个线程将会持续生产新对象并将其插入到队列之中,直到队列达到它所能容纳的临界点。也就是说...

2019-01-20 16:16:40 413

转载 分库分表之后,id 主键如何处理?

分库分表之后,id 主键如何处理? https://zhuanlan.zhihu.com/p/54838983 其实这是分库分表之后你必然要面对的一个问题,就是 id 咋生成?因为要是分成多个表之后,每个表都是从 1 开始累加,那肯定不对啊,需要一个全局唯一的 id 来支持。所以这都是你实际生产环境中必须考虑的问题。 数据库自增 id 这个就是说你的系统里每次得到一个 id,都是往一个库的一个...

2019-01-20 12:13:50 2565

原创 引以为戒,我太菜了

今天进行了抖音的二面,接近一半的问题没有答出来,本以为这学期已经学了很多,看了很多书,突然感觉自己还是好菜,以前虽然菜但还总是觉得有时间可以学,现在临近春招了还是这么菜,唯一庆幸的是认识到了自己的菜,希望春招的时候自己不是这么菜了。无论是为了whr还是自己都要加油了。 一面 线程和进程的区别 四种引用类型四种引用类型 可达性分析算法的root volatile的作用和原理volatile的作用和...

2019-01-18 22:38:08 326

转载 Linux 运行jar包命令

方式一: java -jar shareniu.jar 特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 那如何让窗口不锁定? 方式二 java -jar shareniu.jar & &代表在后台运行。 特定:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行。 继续改进,如何让窗口关闭时,程序仍然运行? 方式三 nohup j...

2019-01-15 19:58:10 12796

原创 判断一组扑克牌是否是顺子

这个题目的解法中用到了bitmap来去重,记录一下,以后遇到这种需要判断是否出现重复的问题记得使用bitmap来节约空间 题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God...

2019-01-12 00:37:29 1632

原创 FindNumsAppearSomeTimes

/** * @Author: wei1 * @Date: Create in 2019/1/8 0:23 * @Description: */ public class FindNumsAppearSomeTimes { /** * 数组中有两个出现一次的数字,其他数字都出现两次,找出这两个数字 * * @param array * @par...

2019-01-08 00:37:57 212

原创 ReentrantLock中中断锁和非中断锁源码分析

最近读了Java并发编程的艺术记录一下 https://www.cnblogs.com/daydaynobug/p/6752837.html 关于AQS的讲解 尝试获取一个内部锁的操作(进入一个 synchronized 块)是不能被中断的 public class WriterReader { private Object lock; public WriterReader...

2019-01-03 15:04:05 1489

原创 面试题Java多线程循环向多个文件写入循环数字

下面是我在一次实习面试时遇到的问题,今天在看Java并发编程的艺术时突然有了更好的灵感,将原來的代码重构成了可以实现n个线程同时写入n个文件 有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推。 现在有四个文件ABCD。初始都为空。现要让四个文件呈如下格式: A. 1 2 3 4 1 2… B. 2 3 4 1 2 3… C. 3 4 1 2 3 4… D. 4 ...

2018-12-29 21:04:33 1980

原创 排序算法-桶排序

非比较排序,以空间换取时间的一种排序方式,属于基数排序 package sort; import org.junit.Test; import utils.VerificationUtil; import java.util.Arrays; /** * @Author: wei1 * @Date: Create in 2018/12/27 21:26 * @Description: 桶...

2018-12-28 16:30:29 267

原创 Momenta实习面试

两个部门面了我 一.java后台开发 第一个部门是写java的但是我表现的很差 redis的底层结构(只记得动态数组,双向链表,跳表,忘了hash) 让我描述实现一个str转int,剑指offer最后附录的第一个案例,完美的复现了书上的失败案例,以此为戒 java中的容器(map,set,list,vector,忘了数组) 设计题,百万数据的ip,设计一个容器删除,添加,查找O(1)(说了半天没...

2018-12-27 16:40:26 3566 2

转载 Spring循环依赖的三种方式

作者:卫婷Elisa 链接:https://www.zhihu.com/question/39814046/answer/550590260 循环依赖就是N个类中循环嵌套引用,如果在日常开发中我们用new 对象的方式发生这种循环依赖的话程序会在运行时一直循环调用,直至内存溢出报错。下面说一下Spring是如果解决循环依赖的。 第一种:构造器参数循环依赖 Spring容器会将每一个正在创建的Be...

2018-12-22 13:31:01 1328

转载 内核态和用户态

作者:灵剑 链接:https://www.zhihu.com/question/306127044/answer/555327651 太长不看的提前总结: 内核态,或者说CPU的特权模式,是CPU的一种工作状态,它影响CPU对不同指令的执行结果。操作系统通过跟CPU配合,设置特权模式和用户模式,来防止应用程序进行越权的操作 防止应用程序越权访问内存时使用了虚拟地址空间映射的技术,这是操作系统...

2018-12-22 13:13:47 1190

转载 RabbitMQ消息持久化和消息确认机制 RabbitMQ消息持久化和消息确认机制

消息持久化 消息在传输过程中,可能会出现各种异常失败甚至宕机情况,为了保证消息传输的可靠性,需要进行持久化,也就是在数据写在磁盘上。消息队列持久化包括三部分: 1.Message持久化 也就是发送时消息持久化。(Message包含body,body为我们需要发送的消息具体内容,一般以json字符串发送,消费端再解析;MessageProperties为Message的一些额外的属性,做一些扩展作用...

2018-12-20 21:25:24 3722 1

原创 幂等性

什么是幂等 这里就用put的请求方式解释一下,当使用put请求时由于网络问题等原因我们发送了两次一样的请求,幂等就是只会有一个可以起作用。 怎么做到幂等 1.数据库可以使用乐观锁的思路 update table_name set count = count - 1 ,version = version +1 where version = 1; 2.使用redis的setnx等操作,难点就是需要注...

2018-12-16 20:18:25 181

原创 Java Atomic Synchronsized Volatile

Java Atomic Synchronsized Volatile ##Atomic 原子 private static AtomicInteger count = new AtomicInteger(0); count.addAndGet(1); 我们看一下count.addAndGet(1)的实现就明白了 public final int addAndGet(int delt...

2018-12-14 15:26:37 414

原创 第一次面试 阅文Java实习

自我介绍 看你是电院的,上了哪些课 什么时候可以实习,可以实习多久。说了3到4个月,面试官说需要半年。 问了项目的一个问题 HashMap ConCurrentHashMap ridis的数据结构 跳表 ,问zset的底层跳表,懵了一下没听到zset这个单词 15分钟面完了等通知,凉 ...

2018-12-12 19:59:01 2229 1

原创 并行与并发的区别

并行 同一时刻可以处理多个任务 两个并行执行的任务如下图 并发 同一时刻只能处理一个任务,但一个时间段内可以对多个任务交替处理 两个并发执行的任务如下图 这里通俗的说就是并发是可以看成在一个时间段内可以同时执行几个任务,而并行是需要多个cpu来支持的在一个时间段可以执行几个任务 ...

2018-12-12 19:46:53 183

原创 Redis跳表的时间发杂度和空间复杂度的分析

Redis跳表的时间发杂度和空间复杂度的分析: 首先,每个节点肯定都有第1层指针(每个节点都在第1层链表里)。 如果一个节点有第i层(i>=1)指针(即节点已经在第1层到第i层链表中),那么它有第(i+1)层指针的概率为p。 节点最大的层数不允许超过一个最大值,记为MaxLevel。 这个计算随机层数的伪码如下所示: randomLevel() level := 1 //...

2018-12-03 21:40:03 5287

转载 HTTP请求报文和响应报文

维基百科:HTTP 索引 1. 请求报文 一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成。 大致结构是这样的: <request-line> //请求行 <headers> //首部行 <blank line> //空行 <request-body> //请求体 一个简单的例子: POST /user HTTP/1.1 ...

2018-11-30 19:44:38 758

原创 float数和double的大小比较

看到一个面试题想了很久为什么? float f = 1.4f;double d = 1.4d; 与 float f = 1.5f;double d = 1.5d; 是否为true float f = 1.4f; double d = 1.4d; float f1 = 1.5f; double d1 = 1.5d; while (true) { System.out.println(f...

2018-11-19 00:50:44 6517 1

原创 centos7开机启动tomcat8

centos7开机启动tomcat8 ###1. tomact 解压到/usr/local/tomcat下 这里可以放在自己喜欢的目录下 ###2.vim /usr/local/tomcat/bin/catalina.sh 在OS specific support.前加上 (注意java 安装目录) JAVA_HOME=/usr/java/jdk1.8.0_161   JRE_HOME=$JAVA...

2018-11-18 21:12:04 696

转载 Java常量池理解与总结

一.相关概念 1.1 什么是常量 用final修饰的成员变量表示常量,值一旦给定就无法改变! final修饰的变量有三种:静态变量、实例变量和局部变量,分别表示三种类型的常量。 1.2 Class文件中的常量池 在Class文件结构中,最头的4个字节用于存储魔数Magic Number,用于确定一个文件是否能被JVM接受,再接着4个字节用于存储版本号,前2个字节存储次版本号,后2个存储主版本号,再...

2018-11-12 16:49:49 420

原创 Nginx代理出现502

1. 关闭SElinux 查看状态 2. 关闭Linux防火墙 systemctl stop firewalld 问题就是没有关闭centos7的SElinxu

2018-11-05 09:04:56 3766

转载 Redis安装报错error:jemalloc/jemalloc.h:No such file or directory解决方法

转:Redis安装报错error:jemalloc/jemalloc.h:No such file or directory解决方法 安装Redis 下载Redis:wget https://github.com/antirez/redis/archive/3.2.0.tar.gz 在安装Redis之前,需要安装Redis的依赖程序tcl,如果不安装tcl在Redis执行make test的时...

2018-11-04 14:44:33 8311

转载 Java8新特性之接口的默认方法和静态方法

原文:@shekhargulati 我们都知道应该面向接口编程。接口给定用户应该使用的协议,而不用依赖该接口的具体实现细节。 因此,为了做到松耦合,设计出干净的接口成为API设计的要素之一。SOLID五大原则之一的接口隔离原则要求我们设计有具体目的的小接口,而不是一个通用却臃肿的接口。对你的类库和应用来说,接口设计是能否得到干净而高效的API的关键。 这一节的代码在ch01包中 如果你曾经...

2018-10-29 13:38:31 337

转载 RequestContextHolder获取HttpRequest和HttpResponse

//两个方法在没有使用JSF的项目中是没有区别的 RequestAttributes requestAttributes = RequestContextHolder.currentRequestAttributes(); // RequestContextHolder.getRequestAttributes(...

2018-10-26 21:10:43 3618

原创 Hibernate的criteria查询在JpaSpecificationExecutor中的使用

Hibernate的criteria查询 Hibernate的criteria查询:http://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#criteria 为什么要写这个呢?在我的小项目里使用了Spring Data + Jap,使用的时候感觉非常的爽,但是也遇到了一些问题...

2018-10-23 16:23:04 1431

原创 linux安装redis

linux安装redis 1.获取redis资源 wget http://download.redis.io/releases/redis-4.0.8.tar.gz 2.解压 tar xzvf redis-4.0.8.tar.gz 3.安装 cd redis-4.0.8 make      在当下目录执行 make install   默认安装到:/usr/local/bin   指定安装到:...

2018-10-19 13:45:45 213

VMware10.7

VMware10.7VMWare虚拟机软件是一个“虚拟PC”软件,它使你可以在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与“多启动”系统相比,VMWare采用了完全不同的概念。多启动系统在一个时刻只能运行一个系统,在系统切换时需要重新启动机器。

2018-09-25

notepad++6.6.9

Notepad++功能比 Windows 中的 Notepad(记事本)强大,除了可以用来制作一般的纯文字说明文件,也十分适合编写计算机程序代码。Notepad++ 不仅有语法高亮度显示,也有语法折叠功能,并且支持宏以及扩充基本功能的外挂模组。

2018-09-25

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

TA关注的人

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