08 2018 档案
摘要:一、线程的生命周期及五种基本状态: 关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t = new MyThread(); 就绪状态(Runnable):当调用线程对象的 start() 方法(t.start
阅读全文
摘要:redis集群实现方案: 关于redis的集群化方案 目前有三种 (1)Twitter开发的twemproxy (2)豌豆荚开发的codis (3)redis官方的redis-cluster 简介:twemproxy架构简单 就是用proxy对后端redis server进行代理 但是由于代理层的消
阅读全文
摘要:在说Redis持久化之前,需要搞明白什么是数据库状态,因为持久化就是将内存中的数据库状态保存到磁盘上。那么什么是数据库状态呢?Redis是一个key-value数据库服务器,一般默认有16个数据库,可以使用select <index>命令进行切换(0-15),这每个非空的数据库又可以包含任意多个键值
阅读全文
摘要:一、业务场景 所谓秒杀,从业务角度看,是短时间内多个用户“争抢”资源,这里的资源在大部分秒杀场景里是商品;将业务抽象,技术角度看,秒杀就是多个线程对资源进行操作,所以实现秒杀,就必须控制线程对资源的争抢,既要保证高效并发,也要保证操作的正确。 二、一些可能的实现 刚才提到过,实现秒杀的关键点是控制线
阅读全文
摘要:目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两
阅读全文
摘要:在单进程的系统中,当存在多个线程可以同时改变某个变量时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量。而同步的本质是通过锁来实现的。为了实现多个线程在一个时刻同一个代码块只能有一个线程可执行,那么需要在某个地方做个标记,这个标记必须每个线程都能看到,当标记不存在时可以
阅读全文
摘要:1. 锁的种类 锁的种类有很多,包括:自旋锁、自旋锁的其他种类、阻塞锁、可重入锁、读写锁、互斥锁、悲观锁、乐观锁、公平锁、可重入锁等等,其余就不列出了。我们重点看如下几种:可重入锁、读写锁、可中断锁、公平锁。 1.1 可重入锁 如果锁具备可重入性,则称作为可重入锁。synchronized和Reen
阅读全文
摘要:常用内存优化手段与参数 我们知道Redis实际上的内存管理成本非常高,即占用了过多的内存,所以我们讨论通过一系列的参数和手段来控制和节省内存。 首先最重要的一点是不要开启Redis的VM选项,即虚拟内存功能,这个本来是作为Redis存储超出物理内存数据的一种数据在内存与磁盘换入换出的一个持久化策略,
阅读全文
摘要:MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题: 1.MySQL需要不断进行拆库拆表,Memcached也
阅读全文
摘要:一、Linux树状目录结构: 二、linux查询某个程序的某个进程的id? PID 代表进程标识号process identification,它在大多数操作系统内核(如 Linux、Unix、macOS 和 Windows)中使用。它是在操作系统中创建时自动分配给每个进程的唯一标识号。一个进程是一
阅读全文

浙公网安备 33010602011771号