- 浏览: 441711 次
最新评论
-
liaodongdakai:
Java读源码之Netty深入剖析网盘地址:https://p ...
java Netty 之 字符串消息收发(ChannelBuffer) -
萨琳娜啊:
Java读源码之Netty深入剖析网盘地址:https://p ...
java Netty 之 教学视频 -
ccqy66:
感觉步骤1的描述有问题吧,aof重写时是不会读原aof文件是, ...
Redis的AOF重写机制 -
dick1305:
没有了,能否再提供一个下载地址。谢谢。
java Netty 之 教学视频 -
dick1305:
...
java NIO 之 mina 和 netty
文章列表
java -- 排序算法
- 博客分类:
- java--数据结构
java -- 排序算法
查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。所以在面试中经常会问到排序算法及其相关的问题。但万变不离其宗,只要熟悉了思想 ...
java -- 数据结构总结
- 博客分类:
- java--数据结构
java -- 数据结构总结
概念
数据结构:数据之间的关系,提高程序效率。
逻辑关系:认为认为
集合:在一个范围内有多个数据,数据之间没有关系
线性:一对一关系
树形:一对多
图:多对多
物理关系:内存存储
顺序存储:数组
链式存储:链表
问题
数据结构难不难? 容易但很难
有没有用? 有用且没有用,平时工作可能用不上,但是能够学习编程思想
算法
大数字存储,大数字的运算
java多线程之面试题
- 博客分类:
- Java--多线程
java多线程之面试题
怎么理解多线程?
1. 让应用程序在一个时间段做多个事情,提高效率
2. 可以实现异步的效果,主线程马上返回成功,子线程继续去工作
程序、进程、线程的关系
一个程序,就有一个进程,一个进程中可以有多个线程,其中又分为主线程和子线程。
理解并发与并行
并发:通过CPU调度算法,让用户看上去同时执行,实际上,是通过CPU在高速切换,并不是真正的额同时
并行:多个CPU实例或者多台机器同时执行一段处理逻辑,这就是真正的同时;
如何创建线程?
1. 继承Thread
...
java多线程之阻塞队列
- 博客分类:
- Java--多线程
java多线程之阻塞队列
阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。
阻塞队列提供了四种处理方法:
抛出异常:是指当阻塞队列满时候,再往队列里插入元素,会抛出IllegalStateException(“Queue full”)异常。当队列为空时,从队列里 ...
Java多线程之线程池调优
- 博客分类:
- Java--多线程
Java多线程之线程池调优
默认配置
corePoolSize=1
queueCapacity=Integer.MAX_VALUE
maxPoolSize=Integer.MAX_VALUE
keepAliveTime=60s
allowCoreThreadTimeout=false
rejectedExecutionHandler=AbortPolicy()
缺点
corePoolSize核心线程初始值为1太少了
queueCapacity和maxPoolSize设置这么大,怕线程太多,系统受不了
rejectedExecutionHandle ...
Java多线程之常用类--闭包、栅栏、信号量、FutureTask
闭锁
用途:可用于命令一组线程在同一个时刻开始执行某个任务,或者等待一组相关的操作结束。尤其适合计算并发执行某个任务的耗时。
public class CountDownLatchTest {
public void timeTasks(int nThreads, final Runnable task) throws InterruptedException{
final CountDownLatch startGate = new CountDow ...
当Maven无法下载jar该怎么办
- 博客分类:
- Maven
当Maven无法下载jar该怎么办
有时,我们可能会遇到因为网络原因导致Maven无法下载jar包的情况,这时该怎么办呢,没法干活吖。
方法一:自己硬着头皮下jar包,这是最笨的方法。
方法二:使用Maven镜像服务器,例如,阿里云提供的Maven镜像服务器。
原理:就是修改获取jar包的远程地址
在Maven的settings.xml文件中加入下面代码:
<mirrors>
<mirror>
&l ...
数据库设计 -- 一些技巧
- 博客分类:
- 数据库--设计
数据库设计 -- 一些技巧
http://www.csdn.net/article/2012-04-11/2804419
http://blog.csdn.net/sirfei/article/details/434994
http://blog.csdn.net/haiross/article/details/50427382
http://blog.csdn.net/tiantiandjava/article/details/45390859
数据库设计 -- 索引设计
- 博客分类:
- 数据库--设计
数据库设计 -- 索引设计
什么是索引
索引就是加快检索表中数据的方法,就是为了不想扫描整个表。
索引的优点
大大加快查找数据的速度
建立唯一索引,保证数据表中每一行数据唯一性
进行分组和排序检索时,可以明显地减少时间
索引的缺点
降低增删改的速度
创建和维护索引,需要消耗我们的维护时间
索引还是需要占用到一定的物理空间的
索引分类
按索引方法分
B-Tree索引
Hash索引
按索引类型分
主键索引:一般数据库设置为主键,就会自动加上索引。
普通 ...
数据库设计 -- 外键设计
- 博客分类:
- 数据库--设计
数据库设计 -- 外键设计
外键的目的:通过数据库去保证数据的完整性,提高关联查询的效率
外键的副作用:插入或更新的效率下降。
为何说外键有性能问题
数据库需要维护外键的内部管理;
外键等于 ...
数据库设计 -- 主键设计
- 博客分类:
- 数据库--设计
数据库设计 -- 主键设计
在数据库设计时,主要就是对实体和关系的设计,实体表现出来就是表,关系表现出来就是外键。而对于一个表,由两部分组成:主键和属性。主键的简单定义就是表中为每一行数据的唯一标识。其实更准确的说法,每一行数据的唯一标识是候选键(Candidate Key),一个表中可以有很多个候选键,主键是候选键中的一个,主要用于更方便的检索和管理数据。一个表中可以有多个候选键,但是只有一个主键。由于主键常常用于检索数据,也用于表之间的关联,所以主键的设计的好坏将会严重影响数据操作的性能。
主键的数据类型
数字类型
固定长 ...
数据库设计 -- 字段的选择
- 博客分类:
- 数据库--设计
数据库设计 -- 字段的选择
为什么要注意字段的选择?
在数据库设计过程中我们要本着够用的原则,如果一味的把数据字段范围设为最大或者默认值的话,会导致存储空间大量的浪费。在数据量特别大的情况 ...
数据库设计 -- 设计原则
- 博客分类:
- 数据库--设计
数据库设计 -- 设计原则
1. 一般情况下,应该尽量使用可以正确存储数据的最小数据类型。数据类型不一样,存储的执行效率也不一样。最好使用适度的整型数据类型,例如int之类的数据,这样在做查询或者字段 ...
数据库设计 -- 表与表的三种关系
- 博客分类:
- 数据库--设计
数据库设计 -- 表与表的三种关系
一对一
例如:user表和user_detail表,每一个user有一条detail,每一条detail属于一个用户。
表一(user_campaign)
表二(user_campaign_detail)
思路小结:user表和user_detail表,可以给user_detail表中的user_id建立唯一索引,既保证数据的正确性,也能提高查询速度;这里的第一张表的每一行只与第二张表的一行相对应。
提示
一对一关系是比较少见的关系类型 ...
分布式ID生成方法
需求分析
几乎所有的业务系统,都有生成一个记录标识的需求,例如:
消息标识:message-id
订单标识:order-id
帖子标识:tiezi-id
这个记录标识往往就是数据库中的唯一主键,数据库上会建立聚集索引(cluster index)
聚集索引:物理存储上以这个字段排序。
非聚集索引:普通索引,存储的是实际记录的指针,其访问效率会比聚集索引慢,如果记录标识在生成时能够基本按照时间有序。
记录标识生成(也就是上文提到的三个XXX-id)的两大核心需求:
全局唯一
...