论何时微服务?
2020-03-15
Uncategorized

首先,我个人观点:微服务有必要性,但不是什么应用都要选择“微服务”。

从微服务解决的问题来看参照各大微服务架构的定义以及模式,对微服务有一个如下模型

微服务模型

如图该模型是一个正方体,分别有y、x、z三个轴向,其中y轴代表的是业务粒度,x代表的是服务的横向扩展,z轴代表的是服务的分区,也就是流量分治。

敏捷开发概念
2019-06-04
Uncategorized

敏捷宣言

以下是根据Agile Alliance(敏捷联盟)一批专家以及多年的经验所总结
原文如下

  • Individuals and interactions over processes and tools
  • Working software over comprehensive documentation
  • Customer collaboration over contract negotiation
  • Responding to change over following a plan
也许是“新时代的开发姿势”
2019-03-31
Uncategorized

在写博客的同时也录制了视频,视频和文章结合食用效果更佳

Bilibili: https://www.bilibili.com/video/av47825907

油管:https://www.youtube.com/watch?v=2o3CsiSbnV0&list=PLfQ4vem9sCASf5iePYCIOEqycobbWSVic

Rust的生命周期及所有权机制
2019-02-27
Uncategorized

简单的一个梳理

Rust在内存管理方面和其它语言不太一样,像C/C++给予程序员无上的权利,可以手动的去管理内存,当然权利越大责任越大同时也就意味着风险越高,目前看来让程序员在运行时对内存进行手工的管理所带来的风险,大多数情况下弊大于利(这仅我个人观点,本人技术有限或许是我眼拙),常会出现忘记释放内存、访问一块已经被释放了的内存等诸如此类内存安全问题,则Java这一类虚拟机高级语言则是采用GC的方式来对内存进行管理,替代程序员去手动管理,这样便是损耗了性能换来内存的自动管理,同时Java也面对着对于数据共享时所会产生的线程安全问题,但Rust另辟蹊径结合以上观点,我觉得也算是从根本上解决了问题,它使用所有权机制来对内存进行管理,这便产生了一些术语:ownership、lifetime。

线程池原理剖析
2018-11-09
Uncategorized

食用该文章最好具有队列和AQS的知识,关于AQS可以从我以前书写的文章中找出

线程池是什么

线程大家都清楚是什么?那么线程池是什么?在使用线程的时候有没有考虑过,在平时使用的时候系统中只要你想随处都可以创建线程并且很难管控,基本上一个线程使用完就销毁掉了,要在使用便新建一个线程

直接使用线程的缺陷(针对线程池)

  • 线程数量无法限制,想创建多少个就多少个
  • 线程无法复用,创建启动和销毁线程是会带来一定的开销

线程池的出现主要就是解决2个问题,一个是限制线程的数量和线程复用,在这个扩展上面可以再自行扩展出监控等。

JUC-ReentrantLock原理剖析
2018-11-04
Uncategorized

阅读该篇文章希望您已经理解或者了解过AQS的设计,因为本篇并不会重复叙述AQS的内容,若需要可阅读我写过的AQS文章或者其它文章。

ReentrantLock是什么

ReentrantLock是一个显式独占可重入的公平或非公平锁,使用时可以设置锁是公平锁或非公平锁,它们之间的区别在于,线程唤醒的抢占方式,公平锁线程的抢占方式按照获取锁的先后顺序来唤醒,而非公平锁就是以一种随机抢占的方式。

AQS原理剖析并实现一把自己的锁
2018-11-04
Uncategorized

AQS是什么

AQS是一个类的缩写它的全名为AbstractQueuedSynchronizer在Java中许多的锁和同步器就是用该类做的实现,其本质上就是一个双向链表实现的队列队列存储的是线程对象的一个封装,其提供了一个同步器的基本逻辑并且将如何获得锁、释放锁的逻辑等可变更逻辑交给了子类去实现使得这个同步器有很大的扩展空间。

JUC-LockSupport
2018-11-04
Uncategorized

LockSupport是什么

LockSupport类是一个常用的用来实现锁或使一个线程阻塞的工具类(通常用来实现这些,当然有其它用途也可以的,只是个工具类而已),它主要提供了2个方法

  • park
  • unpark
JUC-并发集合类List原理剖析
2018-11-04
Uncategorized

java中能够直接支持并发的集合有2个类,分别为CopyOnWriteArrayListCopyOnWriteArraySet

JUC-并发原子类Long系列原理剖析
2018-10-27
Uncategorized

JUC-并发原子类Long系列原理剖析

为什么需要并发原子类

在并发编程中时常会遇见一个共享资源的读改写,如果要保证这些共享资源的读改写的原子操作只能通过2种方式,一种是锁的方式一种是通过CAS的方式,如果利用锁那么将有可能造成大量的阻塞导致内核态用户态及线程唤醒带来的性能开销,那么如果只是针对单一资源的读改写保证其原子操作利用CAS是最佳的做法了,因为其不会导致线程阻塞挂起。