代码改变世界

满足高并发的I/O Reactor线程模型 (附图,附代码)

2019-09-12 14:30 by 码年, 1612 阅读, 0 推荐, 收藏, 编辑
摘要:当下服务器端的网络服务为实现高并发,高吞吐量使用的最为流行的模式是事件驱动(event driven)模式,Reactor模式是事件驱动模式的一种。 说起I/O的Reactor模式,最经典的文章是Doug Lea的《Scalable IO in Java》,里面介绍了Reactor模式的三种线程模型 阅读全文

最简洁易懂的方式介绍I/O模型

2019-08-25 16:35 by 码年, 439 阅读, 1 推荐, 收藏, 编辑
摘要:什么是I/O模型? 简单来说IO模型是指程序以何种方式等待数据或者状态的就绪,进而针对数据或者状态进行处理。“就绪”指的是数据准备好了或者某个状态发生了。比如程序等待socket接收数据到buffer中以后再进行数据处理;再比如server端socket变成连接状态后进行某种处理。程序为什么要等待呢 阅读全文

从鸿蒙OS的特性看华为应对封锁的策略

2019-08-11 09:32 by 码年, 499 阅读, 0 推荐, 收藏, 编辑
摘要:关于鸿蒙OS(操作系统)的介绍已经很多了,也是大家广为关注的,但是我觉得鸿蒙OS的特性背后所反映出来的技术方向还有华为应对外在挑战的策略更有意思。 什么是鸿蒙OS? 先说名字。鸿蒙有开天辟地的意思,英文名Harmony是音译,和谐的意思。对内霸气侧漏,对外低调温和,对心理的拿捏非常地准确。感觉Har 阅读全文

到底怎样才能写出专业的代码?

2019-07-30 10:41 by 码年, 509 阅读, 0 推荐, 收藏, 编辑
摘要:同样的需求,每个人写出的代码看上去可能很不一样。大到模块的划分,中到类的抽象和组织,小到语句的写法,可能都不一样。一直在想有没有具体的指导方法可以让大家能写出大致相同的最优的代码。其实业界已经创造总结出来很多的指导原则,最佳实践,框架,工具等来使得大家写出好的代码。让我们从中看看怎么样才能写出专业的 阅读全文

Java G1 GC 垃圾回收深入浅出

2019-03-21 13:32 by 码年, 12285 阅读, 1 推荐, 收藏, 编辑
摘要:1. G1概览 G1 GC 全称是Garbage First Garbage Collector,垃圾优先垃圾回收器,以下简称G1。G1是HotSpot JVM的短停顿垃圾回收器。其实关于G1的论文早在2004年就有了,但是G1是在2012年4月发布的JDK 7u4中才实现。从长期来说,G1旨在取代 阅读全文

分布式系统的完整介绍(二)

2019-03-19 11:22 by 码年, 1716 阅读, 0 推荐, 收藏, 编辑
摘要:分布式系统的类别 接下来我们将逐个分析几个分布式系统的类别,并且列举外界已知的在生产环境中它们最大的使用规模。注意,当你读到这篇文章的时候,下面提到的数字很可能已经过时了,并且很可能已经变的更大了。 1. 分布式数据存储 分布式存储的应用最为广泛,被称为分布式数据库。大部分的分布式数据库是NoSQL 阅读全文

分布式系统的完整介绍(一)

2018-08-14 12:44 by 码年, 3450 阅读, 0 推荐, 收藏, 编辑
摘要:目录 介绍 分布式系统的类别 总结 介绍 随着技术在各行业的日益扩张,分布式系统变的越来越普遍,这在计算机科学中是一个广阔而复杂的学习领域。 这篇文章旨在给你介绍一下分布式系统的基础,让你看一下分布式系统的不同的类别。本文不会深入细节。 1. 什么是分布式系统 用最简单的方式定义,分布式系统就是让终 阅读全文

ReentrantLock和synchronized的区别

2018-08-08 16:12 by 码年, 4125 阅读, 0 推荐, 收藏, 编辑
摘要:Java 5为了加强内置锁的功能,引入了可重入锁(ReentrantLock)。在此之前“synchronized”和“volatile”是实现并发的方式。 Synchronized关键字使用内置锁(intrinsic lock)或者称作监视锁(monitor lock)。每一个Java对象都有一个 阅读全文

SoftReference, WeakReference, PhantomReference的区别

2018-08-07 16:11 by 码年, 1381 阅读, 3 推荐, 收藏, 编辑
摘要:一段时间以前,我面试了一些Java高级工程师职位的候选人。在我问的众多问题中的一个是“谈谈你对Java弱引用的理解”。我并没有期待一个类似于技术论文一样的答案。候选人如果回答说“嗯…,这不是和垃圾回收有关系吗?”,我可能就已经很满意了。然而出乎我意料的是我问的二十几个候选人差不多都有五年以上的Jav 阅读全文

Java volatile 关键字深入浅出

2018-08-03 15:37 by 码年, 1511 阅读, 0 推荐, 收藏, 编辑
摘要:Java volitile关键字 Java volatile 关键字用来标记一个Java变量为“存储于主内存”。更准确地说是,每一次针对volatile变量的读操作将会从主内存读取而不是从CPU的缓存读取;每一次针对volatile变量的写操作都会写入主内存,而不仅仅是写入CPU缓存。 实际上,从J 阅读全文