分布式系统基础学习(01)--通信(TCP/UDP)
分布式系统是一个很庞大的话题, 在我个人的知识版图中, 也仅仅只是对一小部分土地进行了开荒。 不管是分布式系统, 还是单机应用系统, 都是建立在互联网通信机制之上的。 而提到通信, 就不得不提到TCP/UDP这两个非常经典的协议。 »
分布式系统是一个很庞大的话题, 在我个人的知识版图中, 也仅仅只是对一小部分土地进行了开荒。 不管是分布式系统, 还是单机应用系统, 都是建立在互联网通信机制之上的。 而提到通信, 就不得不提到TCP/UDP这两个非常经典的协议。 »
锁在并发编程中可以说是必须使用的一种资源保护技术, 而且是一种及其庞大且复杂的技术, 随着计算机学科的发展, 锁技术同样的在不断的发展和优化。 作为一个开发者, 当然无法直接深入到CPU的最底层去理解锁的原理, 但是通过一些其它的手段可以间接的理解锁的原理以及运行机制。 本篇文章进行一个现阶段的总结, 整理一下所学的全部关于锁的知识, 涉及的编程语言包括Python和Java, 应用包括MySQL以及Redis, 如有错误, 还请指正。 »
在整理下一篇文章, 有关锁的知识之前, 有一个无论如何都绕不开的话题:AbstractQueuedSynchronizer, 队列同步器, 通常简称AQS。 »
本来是一个对Java并发编程的一个学习和总结专题, 虽然Python有GIL的存在, 但不能否认其线程池的实现非常的简洁而优雅, 此外温故而知新, 通过理解其它语言的线程池也能够加深我们对Java线程池的理解。 »
抛开Java自己封装的newFixedThreadPool, newCachedThreadPool等工厂线程池方法, 最核心的就是ThreadPoolExecutor的配置, 包括线程池的大小, 工作队列, 空闲线程存活时间以及饱和策略。 »
在前面的一章整理并发编程的一些基础内容, 包括任务的创建, 任务的执行, 线程池的简单使用, 加入一个线程以及守护线程和线程同步。 基本上涵盖了绝大多数的基础内容, 在本章中学习任务的取消与异常处理。 »
在继续学习Java并发编程之前, CPU的执行过程以及CPU缓存一致性问题是必须要了解的, 这一部分的内容是Java并发设计的基石, 对后续内容的了解也有非常大的帮助。 »
打了2年多的Python代码, 大大小小的项目也做了一些, 代码规范和并发效率一直以来是比较头疼的问题。 因为GIL全局解释器锁的存在使得Python程序员永远只能使用单核, 并且在锁的保护下许多的效率问题都被掩盖。 在学习了Java之后, 对其并发模块的设计深感惊艳, 比如ConcurrentHashMap的分段锁实现, volatile关键字保证变量的可见性, 所以在这里对其进行整理并进一步加深理解。 »
为了保持Java基础编程系列的完整性, 反射机制还是写一下, 没有什么太难的地方。 在文章的最后与Python进行了一个对比和演示, 用于加深对这两种语言设计本身的理解。 »
在前面的一篇文章中大致了描述了单例模式, 原型模式, 策略模式, 责任链模式, 代理模式以及观察者模式, 本文接上。 »