不羁朔风的博客

自学道路上的一些经验和笔记

redis面试题大全

启动redis 前端模式启动的缺点是ssh命令窗口关闭则redis-server程序结束,不推荐使用此方法 redis的概述 服务器处理数据的速度,与网站速度息息相关. 但是如果网站的访问量非常大的时候,我们的数据库压力就变大了。数据库的连接池、处理数据的能力就会面临很大的挑战。我们日常...

2018-11-12 10:55:46

阅读数 16354

评论数 0

数据库的优化思路

①合理选择数据库引擎 ②sql语句的优化 ③索引的优化 ④分库分表分区 ⑤预处理 ⑥读写分离 ⑦数据库表结构设计 (1)尽量使用数字型字段 尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。 这是因为引擎在处理查询和连接时会逐个比较字符串中每一个字符,而对于数字型...

2018-11-11 09:31:03

阅读数 91

评论数 1

mysql的分页

mysql提供了分页的函数limit m,n 其中m代表起始行,n代表总行数.我们还可以根据实际情况来改写我们的分页语句.如果只给定一个参数,表示记录数 查询5行记录,起始行从0开始(即从第一行开始) SELECT * FROM emp LIMIT 0, 5;  =>等价...

2018-11-11 09:30:11

阅读数 561

评论数 0

InnoDB的关键特性

1.插入缓冲,主要是针对非主键索引的插入和更新操作,如果是主键索引,顺序的插入就可以了,数据页的存放还是主键id的执行顺序,但是非主键索引,叶子节点的插入不再是顺序的,这个时候需要离散的访问非聚集索引,插入性能会变得很低。   插入缓冲的作用就是,对于非聚集索引的插入和更新,不是每一次直接插入...

2018-11-11 09:29:43

阅读数 95

评论数 0

MySql何时用MyISAM何时用InnoDB

  MySql何时用MyISAM何时用InnoDB MyISAM和InnoDB是MySQL提供的两种搜索引擎 MyISAM和InnoDB的区别 ①InnoDB支持事务与外键和行级锁,MyISAM不支持(最主要的差别) ②MyISAM读性能要优于InnoDB,除了针对索引的update操作...

2018-11-11 09:28:59

阅读数 608

评论数 0

数据库索引

引言 说白了,数据库的索引问题就是查找问题 数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询,更新数据库中表的数据.索引的实现通常使用B树和变种的B+树(mysql常用的索引就是B+树) 除了数据之外,数据库系统还维护为满足特定查找算法的数据结构,这些数据结构以某种方式引用数...

2018-11-11 09:27:25

阅读数 4522

评论数 0

B树(或B-树)和B+树和B*树

树的深度过大而造成磁盘I/O读写过于频繁,进而导致查询效率低下 根据平衡二叉树的启发,自然就想到平衡多路查找树结构,即B树结构(后面,我们将看到,B树的各种操作能使B树保持较低的高度,从而达到有效避免磁盘过于频繁的查找存取操作,从而有效提高查找效率)。 为什么说B+tree比B 树更适合实际应...

2018-11-11 09:16:04

阅读数 136

评论数 0

数据库事务的特性和隔离级别

数据库事务的四大特性(ACID) 原子性(Atomicity) 事务中的操作要么全部成功,要么失败回滚 一致性(Consistency) 一个事务执行之前和执行之后都必须处于一致性状态。拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结...

2018-11-11 09:15:10

阅读数 107

评论数 0

mysql中char和varchar和text的区别

①CHAR是一种固定长度的类型,适合用在身份证号码、手机号码等定。,VARCHAR则是一种可变长度的类型。适合用在长度可变的属性。 text不设置长度, 当不知道属性的最大长度时,适合用text。 ②按照查询速度: char最快, varchar次之,text最慢。 也就是说,定义一个char...

2018-11-11 09:13:23

阅读数 3738

评论数 0

ThreadLocal详解

ThreadLocal概要 我们可以使用synchorinized 关键字来为变量加锁以解决线程安全问题,从而限制只能有一个线程来使用此变量,但是加锁会大大影响程序执行效率 ThreadLocal是线程局部变量(从线程的角度看,目标变量就像是线程的本地变量), 通常是类中的 private s...

2018-11-10 19:48:05

阅读数 141

评论数 0

如何实现自己的线程池

首先,在服务启动的时候,我们可以启动好几个线程,并用一个容器(如线程池)来管理这些线程。当请求到来时,可以从池中取一个线程出来,执行任务(通常是对请求的响应),当任务结束后,再将这个线程放入池中备用;如果请求到来而池中没有空闲的线程,该请求需要排队等候。最后,当服务关闭时销毁该池即可。 publ...

2018-11-10 19:45:04

阅读数 186

评论数 0

如何合理配置线程池的大小

2018-11-10 19:44:18

阅读数 223

评论数 0

ThreadPoolExecutor详解

构造器参数分析 第四个构造器源码 corePoolSize:核心池的大小 默认情况下,在创建了线程池后,线程池中的线程数为0,当有任务来之后,就会创建一个线程去执行任务,当线程池中的线程数数目少于corePoolSize时,有新任务进来就新建一个线程,即使有的线程没事干,当线程池中的...

2018-11-10 19:43:47

阅读数 175

评论数 0

线程池的继承体系和处理流程(简单易懂)

线程池的继承体系 类分层结构 接口分层结构 线程池的处理流程

2018-11-10 19:38:21

阅读数 103

评论数 0

java中常见的线程池

Executor接口表示线程池,它的execute(Runnable task)方法用来执行Runnable类型的任务,ExecutorService是Executor的子接口,声明了管理线程池的一些方法 Java.util.concurrent.Executors类包含了一些静态方法,它们...

2018-11-10 19:36:44

阅读数 84

评论数 0

线程池的优点

①降低资源消耗-->重复利用已经创建的线程 ②提高响应速度-->当任务到达时,任务可以直接从线程池获取线程,而不需要创建新的线程 ③提高线程的可管理性-->使用线程池可以统一分配,调优和监控,例如可以根据系统的承受能力,调增线程...

2018-11-10 19:35:52

阅读数 98

评论数 0

线程数设多少合适

①工作线程数是不是设置的越大越好?         回答:肯定不是的         1)一来服务器CPU核数有限,同时并发的线程数是有限的,1核CPU设置10000个工作线程没有意义         2)线程切换是有开销的,如果线程切换过于频繁,反而会使性能降低 ②如果CPU是单核,设置多线程...

2018-11-10 19:35:09

阅读数 1013

评论数 0

谈谈你对CountDownLatch的理解

CountDownLatch是java.util.concurrent包中一个工具类。它能够使一个或者多个线程等待另外一些线程完成各自的工作之后,再继续执行 使用CountDownLatch的一些情景: ①需要去解析一个Excel的数据,为了更快的解析,每个sheet都使用一个线程进行解析,但...

2018-11-10 19:34:42

阅读数 305

评论数 0

LongAdder和AtomicLong的区别

AtomicLong的原理是依靠底层的cas来保障原子性的更新数据,在要添加或者减少的时候,会使用自循(CLH)方式不断地cas到特定的值,从而达到更新数据的目的。然而在线程竞争激烈的情况下,自循往往浪费很多计算资源才能达成预期效果。   面对自循的缺点,jdk1.8推出了LongAdder类...

2018-11-10 19:34:15

阅读数 336

评论数 0

谈谈你对AtomicInteger的理解

AtomicInteger是一个提供原子操作的Integer类,通过线程安全的方式操作加减。十分适合高并发情况下的使用   对于全局变量的数值类型操作 num++,若没有加synchronized关键字则是线程不安全的,num++解析为num=num+1,明显,这个操作不具备原子性,多线程时必...

2018-11-09 08:15:17

阅读数 782

评论数 1

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