Java 算竞操作
输入输出 简单写法 数据量不大: Scanner sc = new Scanner(System.in); int a = sc.nextInt(); char op = sc.nextLine().charAt(0); 如果比较大可以换: Scanner sc = new Scanner(new …
致母亲
母亲,我能为您做些什么? 母亲,我还能爱您再多久?   爱,一万年太久,太久 那些花儿在您的脚下成熟, 可惜白发太长,时间太短 我们时间的交集,太短   爱一万年的时间,不够 搬过的一袋袋化肥,一百斤 扛过的一袋袋盐,一百八十斤 是什么撑得起您壮汉般的身体 又是什么压垮脊柱落下了…
东湖旅者
——屈原既放,游于江潭,行吟泽畔,颜色憔悴,形容枯槁。   大湖水波滚烫,时间的反光 谁见?谁信?谁悲?谁能不覆?   一切不过是沙子 漏过大湖的缝隙,沉积 水面,推开雨滴的皱纹   沧浪之水,何濯四土 大湖之畔,芳草兴然 沧浪之水,何濯故碑 大湖之畔,早已不见 &nb…
Netty 应用与原理
Java IO 模型 本篇示例代码仓库:learn-netty 基础概念 在 I/O 操作中有这么两组概念,其中同步/异步 要和线程中的同步线程/异步线程要区分开,这里指的是同步IO / 异步IO 阻塞/非阻塞: 没有数据传过来时,读会阻塞直到有数据;缓冲区满时,写操作也会阻塞 非阻塞遇到这些情况,…
Redis 应用与原理(三)
Redis Cluster 解决方案 基础概念 首先,分析一下主从+哨兵模式带来的问题: 在主从 + 哨兵的模式下,仍然只有一个 Master 节点,当并发请求较大时,哨兵模式不能缓解写压力 在 Sentinel 模式下,每个节点需要保存全量数据,无法进行海量数据存储 因此,在 Redis 3.0 …
Redis 应用与原理(二)
持久化原理 持久化流程 Redis 是基于内存的数据库,数据存储在内存中,为了避免进程退出导致数据永久丢失,需要定期对内存中的数据以某种形式从内存呢保存到磁盘当中;当 Redis 重启时,利用持久化文件实现数据恢复。 Redis 的持久化主要有以下流程: 客户端向服务端发送写操作数据 数据库服务端接…
Redis 应用与原理(一)
缓存发展史 缓存经典场景 在没有引入缓存前,为了应对大量流量,一般采用: LVS 代理 Nginx 做负载均衡 搭建 Tomcat 集群 这种方式下,随着访问量的增大,响应力越差,逐渐无法满足用户体验。 在引入缓存后: 三大经典缓存读写策略 旁路缓存模式:Cache Aside Pattern 写:…