- 博客(28)
- 资源 (4)
- 收藏
- 关注
转载 一文读懂Epoll本质
从事服务端开发,少不了要接触网络编程。Epoll 作为 Linux 下高性能网络服务器的必备技术至关重要,Nginx、Redis、Skynet 和大部分游戏服务器都使用到这一多路复用技术。Epoll 很重要,但是 Epoll 与 Select 的区别是什么呢?Epoll 高效的原因是什么?网上虽然也有不少讲解 Epoll 的文章,但要么是过于浅显,或者陷入源码解析,很少能有通俗易懂的。...
2020-03-02 00:44:29
279
原创 Vector、ArrayList和LinkedList的区别?
1 底层实现方式ArrayList内部用数组来实现;LinkedList内部采用双向链表实现;Vector内部用数组实现。2 读写机制ArrayList在执行插入元素是超过当前数组预定义的最大值时,数组需要扩容,扩容过程需要调用底层System.arraycopy()方法进行大量的数组复制操作;在删除元素时并不会减少数组的容量(如果需要缩小数组容量,可以调用trimToSize()方法);在...
2020-02-24 16:42:03
237
原创 强软弱虚引用的使用场景
强引用特点:我们平常典型编码Object obj = new Object()中的obj就是强引用。通过关键字new创建的对象所关联的引用就是强引用。 当JVM内存空间不足,JVM宁愿抛出OutOfMemoryError运行时错误(OOM),使程序异常终止,也不会靠随意回收具有强引用的“存活”对象来解决内存不足的问题。对于一个普通的对象,如果没有其他的引用关系,只要超过了引用的作用域或者显式...
2020-02-24 11:54:24
1196
原创 arthas介绍——arthas使用(使用层面)
文章目录arthas概述arthas是什么呢?arthas能解决哪些问题呢?安装和启动arthas从一个全局视角来查看系统的运行状况线上出现问题,线下无法重现,利用arthas进行调试——“线上调试”1 使用watch。2 使用tt。3 使用stack。服务RT latency 上升,如何定位慢调用?1 使用trace 。2 使用monitor。服务运行状态和预期不一致,可通过arthas排查是否...
2019-07-01 00:15:33
5323
转载 死锁一定会造成cpu使用率飙升吗?
这取决于锁的实现,通常锁有两种实现:ps: 在一个角落看到这篇文章,记录一下;1 拿不到锁的时候,忙等待,反复探测锁状态,直到拿到锁,进入临界区。这种情况会消耗CPU。while (locked);这种锁,称为自旋锁。比如pthread_spin_lock。2 拿不到锁的时候,放弃CPU,休眠,离开运行队列,这种情况不会消耗CPU。while (locked) sleep(1);...
2019-05-24 17:11:36
7951
1
转载 ConcurrentHashMap的扩容机制(jdk1.8)
ConcurrentHashMap相关的文章网上有很多,而关于ConcurrentHashMap扩容机制是很关键的点,尤其是在并发的情况下实现数组的扩容的问题经常会碰到,看到这篇写的具有代表性,详细讲解了ConcurrentHashMap是如何在并发情况扩容的。转自简书:占小狼http://www.jianshu.com/u/90ab66c248e6什么情况会触发扩容当往hashMap...
2019-02-17 20:36:38
1010
原创 分布式锁以及分布式锁在项目中的使用总结
1 分布式锁的三种实现方式第一:基于数据库第二:基于缓存第三:基于Zookeeper2 基于数据库实现分布式锁要实现分布式锁,最简单的方式可能就是直接创建一张锁表,然后通过操作该表中的数据来实现了。当我们要锁住某个方法或资源时,我们就在该表中增加一条记录,想要释放锁的时候就删除这条记录。CREATE TABLE `methodLock` ( `id` int(11) NOT NU...
2019-02-16 23:09:06
1516
原创 HashMap 源码阅读
HashMap 是一个key value类型的集合,是线程不安全的。它底层基于hash表,用数据+链表的结构存储数据。JDK1.8中,还是用红黑树来管理冲突的Entry链表,从而提高从HashMap拿数据的效率。HashMap的结构如下所示:HashMap的元素我们要先看下其数据单元,因为HashMap有普通的元素,还有红黑树的元素,所以其数据单元定义有两个:// 普通节点static...
2019-02-16 23:01:44
122
原创 TreeMap 源码阅读
TreeMap是用红黑树实现的,插入数据后添加红黑树节点并进行红黑树的调整,删除数据后也同样进行红黑树的调整,查询数据时,不是用hashcode来进行查询,而是使用红黑树查询。TreeMap没有HashMap的扩容机制,所有的数据都存在一棵红黑树上。红黑树的数据节点是封装数据的Entry对象。Entry定义static final class Entry<K,V> implem...
2019-02-16 17:01:58
154
原创 索引再梳理
1 常见的索引类型HASH顺序表B树B+树红黑树跳表哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的值即 key,就可以找到其对应的值即 Value。哈希的思路很简单,把值放在数组里,用一个哈希函数把 key 换算成一个确定的位置,然后把 value 放在数组的这个位置。哈希表这种结构适用于只有等值查询的场景,比如 Memcached 及其他一些...
2019-01-29 20:53:07
144
原创 从一条sql语句执行过程联想到的redo和binlog
1 引言mysql 日志可分为一下集中错误日志(error log):对mysql的启动、运行、关闭过程中产生的错误、警告或者甚至正确信息二进制文件(binlog):记录所有对mysql的写操作语句,有statements和row模式慢查询日志 (slow query log):记录运行时间超过指定或者默认时间的sql查询日志(log):记录所有对mysql的数据库请求信息重做日记(...
2019-01-26 21:05:09
216
原创 mysql锁机制总结
以下探讨皆是针对数据库默认的隔离级别(REPEATABLE READ)来说的1 mysql加锁的两个规则原则 1:加锁的基本单位是 next-key lock。并且,next-key lock 是前开后闭区间。原则 2:查找过程中访问到的对象才会加锁。2 mysql加锁过程中的一个优化优化1:索引上的等值查询,给唯一索引加锁的时候,,next-key lock退化为行锁。优化2:索引上...
2019-01-20 20:51:35
427
原创 MySql范围查找时,索引不生效问题原因
1 问题描述本文对建立好的复合索引进行排序,并取记录中非索引字段,发现索引不生效,例如,有如下表,DDL语句为:CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL, `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` var...
2018-07-31 17:37:25
26119
4
转载 Java8中的[方法引用]“双冒号”——走进Java Lambda(四)
转自:Java8中的[方法引用]“双冒号”——走进Java Lambda(四) 前面的章节我们提及到过双冒号运算符,双冒号运算就是Java中的[方法引用],[方法引用]的格式是:类名::方法名注意是方法名哦,后面没有括号“()”哒。为啥不要括号,因为这样的是式子并不代表一定会调用这个方法。这种式子一般是用作Lambda表达式,Lambda有所谓懒加载嘛,不要括号就是说,看情况调用方法。 ...
2018-07-15 20:03:16
661
原创 gradle 学习笔记(一)
gradle 学习笔记(一)1、gradle 是什么? gradle是一个开源的项目自动化构建工具,建立在Apach Ant 和Apache Maven的概念基础之上,并基于Groovy语言,而不再使用XML形式管理构建脚本。用一张图来表示Ant、Maven、Gradle之间的关系: 2、groovy是什么? groovy是基于java虚拟机的一种敏...
2018-07-08 20:05:28
257
转载 word标题段前不生效
下边的问题摘自百度知道,网址:https://zhidao.baidu.com/question/424449760922919332.html 这个问题看来困扰过不止我一个人,回答将分页符换成分节符的适用于部分情况,我仍遇到过用这种方式无法解决的情况,某些标题段前行距明显与页边距(就是页面上四个直角)很近,后来我考虑到这个段前行距参照不是页边距,而是之前的段落末尾,我试着在标题前面不断按bac...
2018-03-20 17:05:18
5228
Word中标题的段前不生效解决方法
Word中标题的段前不生效解决方法这个问题看来困扰过不止我一个人,回答将分页符换成分节符的适用于部分情况,我仍遇到过用这种方式无法解决的情况,某些标题段前行距明显与页边距(就是页面上四个直角)很近,后来我考虑到这个段前行距参照不是页边距,而是之前的段落末尾,我试着在标题前面不断按backspace 键有时管用;如果还不管用,将上一章节的末行设置段后0行,反正已经是末尾,不影响本章节,却影响下一...
2018-03-19 23:28:00
22286
3
原创 SpringBoot在配置拦截器后,拦截器不起作用
SpringBoot在配置拦截器后,拦截器不起作用按照网上诸多博客配置了SpringBoot拦截器,最终却惊奇的发现,拦截器不起作用,百般查找原因,sackoverflower,google,baidu…., 均不能解决问题,后来经过@ComponentScan(basePackages={“com.netease.controller”})启发后,发现问题就在于此。原因就是:Sp...
2018-03-13 11:20:52
10436
8
转载 ROW/COW 快照技术原理解析
目录目录快照与备份的区别Snapshot 快照技术全量快照增量快照COW 写时拷贝快照技术ROW 写时重定向快照技术最后快照与备份的区别传统地, 人们一直采用数据复制、备份、恢复等技术来保护重要的数据信息, 定期对数据进行备份或复制。由于数据备份过程会影响应用性能, 并且非常耗时, 因此数据备份通常被安排在系统负载较轻
2017-12-26 15:17:29
626
转载 linux写时复制技术
转自:http://www.jianshu.com/p/8156a293826e第一代Unix系统实现了一种傻瓜式的进程创建:当执行fork系统调用时,内核复制父进程的整个用户空间并把复制得到的那一份分配给子进程。这种行为时非常耗时的,因为它需要完成以下几项任务:为子进程的页表分配页面 为子进程的页分配页面初始化子进程的页表把父进程的页复制到子进程对应的页中写时复制(copy-on-writ
2017-12-03 18:41:57
187
原创 SpringBoot和redis集成的时候,错误记录
SpringBoot和redis集成的时候,CachingConfigurerSupport 的子类RedisConfig中,RedisConnectionFactory factory报错:Could not autowire. No beans of 'RedisConnectionFactory' type found. less... (Ctrl+F1) Checks autowiring
2017-11-16 13:39:38
32651
1
原创 java是如何实现跨平台的
一 前言java具有一次编译导出运行的特性,那个从这句话可以看出亮点: 1 java具有很强的跨平台特性。 2 java在跨平台的过程中要经历两个阶段,第一阶段是编译阶段,第二阶段是运行阶段二 跨平台基础组件介绍实现前言中介绍的两个步骤,需要使用到两个组件(这里姑且叫为组件),第一个是java编译器,第二个是java虚拟机。java编译器和java虚拟机都是运行在操作系统上软件。根据j
2017-10-19 15:28:47
1287
原创 深入浅出JVM优化策略
前言Java号称一次编译,到处运行。这个目标就是通过JVM来实现的。java编译器负责把Java代码编译成.class二进制文件,在Java编译器和OS之间的JVM把.class二进制文件解释成机器码,然后机器码可交给不同的OS执行。在这个过程中,JVM之间如何进行优化,将对程序的执行影响很大,所以JVM调优过程是非常重要的工作。一 JVM调优的整体思路JVM运行的时候,设计到最重要的两部分是
2017-10-11 00:15:24
633
原创 Maven 知识梳理
Maven 知识梳理Maven应用之广泛不用多说,我也用maven很久了。趁着现在时间比较宽裕,这里对maven的知识做一个系统总结。一:什么是maven一句话:项目的构建,管理,jar包管理的工具。二:maven 的环境搭建网上资料太多,我这里不在专门写,可参考下边的这篇文章。 http://www.cnblogs.com/quanyongan/archive/2013/04/17/302597
2017-09-23 10:17:01
240
原创 spring-aop相关术语
aop是采取的横向抽取的机制,取代了传统的取代了传统的纵向继承体系。由于继承,会产生很多的侵入式代码复用,所以我们使用了横向的抽取机制(aop方式),这就是所谓的不需要修改原来的代码,只是通过代理对原来的功能进行增强。这种机制运用的就是代理。JointPoint:连接点。指所有被拦截到的点。因为代理对象会对被代理目标对象的所有方法进行拦截,所以,被代理对象的所有方法都是连接点。
2016-03-27 22:56:45
235
转载 常见数据库种类及介绍
大型数据库有:Oracle、Sybase、DB2、SQL server小型数据库有:Access、MySQL等。 1. IBM 的DB2 作为关系数据库领域的开拓者和领航人,IBM在1977年完成了System R系统的原型,1980年开始提供集成的数据库服务器—— System/38,随后是SQL/DSforVSE和VM,其初始版本与Syste
2016-03-23 13:04:00
1041
转载 LOG4J.PROPERTIES配置详解(转载)
此文转载,为自己以后查阅做帮助文档使用Log4J的配置文件(Configuration File)就是用来设置记录器的级别、存放器和布局的,它可接key=value格式的设置或xml格式的设置信息。通过配置,可以创建出Log4J的运行环境。1. 配置文件Log4J配置文件的基本格式如下:#配置根Loggerlog4j.rootLogger = [ level ]
2016-02-28 15:37:45
386
1
maven settings.xml 配置文件
2017-11-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人