3 不羁朔风

尚未进行身份认证

但行好事,不问前程

等级
博文 126
排名 3w+

redis面试题大全

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

2018-11-12 10:55:46

数据库的优化思路

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

2018-11-11 09:31:03

mysql的分页

mysql提供了分页的函数limitm,n其中m代表起始行,n代表总行数.我们还可以根据实际情况来改写我们的分页语句.如果只给定一个参数,表示记录数查询5行记录,起始行从0开始(即从第一行开始)SELECT*FROMempLIMIT0,5;  =>等价于select*fromemplimit5;客户端通过传递start(页码),pageSize(每页显...

2018-11-11 09:30:11

InnoDB的关键特性

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

2018-11-11 09:29:43

MySql何时用MyISAM何时用InnoDB

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

2018-11-11 09:28:59

数据库索引

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

2018-11-11 09:27:25

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

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

2018-11-11 09:16:04

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

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

2018-11-11 09:15:10

mysql中char和varchar和text的区别

①CHAR是一种固定长度的类型,适合用在身份证号码、手机号码等定。,VARCHAR则是一种可变长度的类型。适合用在长度可变的属性。 text不设置长度,当不知道属性的最大长度时,适合用text。②按照查询速度:char最快,varchar次之,text最慢。也就是说,定义一个char[10]和varchar[10],如果存进去的是‘csdn’,那么char所占的长度依然为10,除了字...

2018-11-11 09:13:23

ThreadLocal详解

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

2018-11-10 19:48:05

如何实现自己的线程池

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

2018-11-10 19:45:04

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

2018-11-10 19:44:18

ThreadPoolExecutor详解

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

2018-11-10 19:43:47

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

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

2018-11-10 19:38:21

java中常见的线程池

Executor接口表示线程池,它的execute(Runnabletask)方法用来执行Runnable类型的任务,ExecutorService是Executor的子接口,声明了管理线程池的一些方法Java.util.concurrent.Executors类包含了一些静态方法,它们负责生成各种类型的线程池实例(ExecutorService) ①newSingleThrea...

2018-11-10 19:36:44

线程池的优点

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

2018-11-10 19:35:52

线程数设多少合适

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

2018-11-10 19:35:09

谈谈你对CountDownLatch的理解

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

2018-11-10 19:34:42

LongAdder和AtomicLong的区别

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

2018-11-10 19:34:15

谈谈你对AtomicInteger的理解

AtomicInteger是一个提供原子操作的Integer类,通过线程安全的方式操作加减。十分适合高并发情况下的使用 对于全局变量的数值类型操作num++,若没有加synchronized关键字则是线程不安全的,num++解析为num=num+1,明显,这个操作不具备原子性,多线程时必然会出现问题。测试下:输出的结果为count:9992,这个值不定,每次测试都可能不一样,很...

2018-11-09 08:15:17
奖章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!