- 博客(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
转载 深入理解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
2018-09-25
notepad++6.6.9
2018-09-25
使用Runtime类中的exec播放音乐
2017-09-13
entrySet在key是自定义对象时出现错误
2017-09-08
c++中指向一个字符串的指针和字符串的首地址的指针是不是一样的?
2017-05-18
关于返回函数内部new分配的内存的引用
2017-05-18
c++ stl 中sort对list容器的排序
2017-05-03
c语音vs2013动态库链接问题、第一次写这个。配置的时候附加依赖项加了
2017-03-29
内存四区问题-函数中的字符串
2017-03-28
c语言文件读写问题,每次写入文件指针就出现错误
2017-03-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅