4 CG国斌

我要认证

毕业于哈尔滨工业大学,就职于互联网公司。点点滴滴,皆是学问,看到了、学会了、记住了,便是收获、便是进步。

等级
TA的排名 301

Spring Cloud 优雅下线以及灰度发布

文章目录前言优雅下线常见的下线方式优雅的下线方式灰度发布蓝绿部署滚动部署金丝雀部署前言在生产环境中,如何保证在服务升级的时候,不影响用户的体验,这个是一个非常重要的问题。如果在我们升级服务的时候,会造成一段时间内的服务不可用,这就是不够优雅的。那什么是优雅的呢?主要就是指在服务升级的时候,不中断整个服务,让用户无感知,进而不会影响用户的体验,这就是优雅的。实际上,优雅下线是目标,而不是手段,它是一个相对的概念,例如kill PID和kill -9 PID都是暴力杀死服务,相对于kill -9 PID来

2020-10-20 10:43:55

带你了解「美团、百度和滴滴」的分布式 ID 生成系统

文章目录美团背景常见方法介绍UUID类snowflake方案数据库生成Leaf 方案实现Leaf-segment 数据库方案双 buffer 优化Leaf 高可用容灾Leaf-snowflake 方案弱依赖 ZooKeeper解决时钟问题Leaf 现状百度snowflakeDefaultUidGeneratordelta secondsworker idsequence小结CachedUidGeneratorRingBuffer Of FlagRingBuffer Of UIDworker id初始化取值小

2020-10-16 21:15:50

饿了么交易系统 5 年演化史

作者介绍:杨凡,花名挽晴,饿了么高级架构师,2014 年加入饿了么,2018 年随饿了么被阿里巴巴收购一同加入阿里巴巴,4 年团队管理经验,4 年主要从事饿了么交易系统建设,也曾负责过饿了么账号、评价、IM、履约交付等系统。2014年12月加入饿了么,当时参与后台系统的研发(Walis+Javis=>Walle),主要面向客服和BD。2015年5月开始接触订单系统的研发,7月负责订单研发组;度过单体应用到服务化这个阶段。2016年初搭建订单的测试团队,订单拆分为正逆向后,主要负责正向和交付部.

2020-09-18 21:50:37

详述 Spring 中 Bean 的作用域、事务的隔离级别以及传播行为

详述 Spring 中 Bean 的作用域以及事务传播级别详述 Spring 中 Bean 的作用域以及事务传播级别

2020-08-26 08:17:19

新一代垃圾回收器 ZGC 的探索与实践

文章目录GC之痛ZGC(The Z Garbage Collector)是 JDK 11 中推出的一款低延迟垃圾回收器,它的设计目标包括:停顿时间不超过 10ms;停顿时间不会随着堆的大小,或者活跃对象的大小而增加;支持 8MB ~ 4TB 级别的堆(未来支持 16TB)。从设计目标来看,我们知道 ZGC 适用于大内存低延迟服务的内存管理和回收。本文主要介绍 ZGC 在低延时场景中的应用和卓越表现,文章内容主要分为四部分:GC 之痛:介绍实际业务中遇到的 GC 痛点,并分析 CMS 收集器

2020-08-15 14:16:33

黑客技术:计时攻击 TIMING ATTACKS

相信刚看到这段源码的人会感觉挺奇怪的,这个函数的功能是比较两个字符串是否相等,如果要判断两个字符串是否相等,正常人的写法应该是下面这个样子的(来自JDK8 的 `String.equals()`-有删减):

2017-02-19 18:48:02

详述 Redis 选择单线程模型的原因以及 I/O 多路复用

文章目录几种 I/O 模型Blocking I/OI/O 多路复用Reactor 设计模式I/O 多路复用模块封装 select 函数封装 epoll 函数子模块的选择总结最近在看 UNIX 网络编程并研究了一下 Redis 的实现,感觉 Redis 的源代码十分适合阅读和分析,其中 I/O 多路复用(mutiplexing)部分的实现非常干净和优雅,在这里想对这部分的内容进行简单的整理。几种 I/O 模型为什么 Redis 中要使用 I/O 多路复用这种技术呢?首先,Redis 是跑在单线程中的,

2020-07-29 15:23:05

带你了解 Kubernetes 的二三事儿

文章目录一、Docker 的管理痛点二、什么是 K8s ?三、云架构 & 云原生云和 K8s 是什么关系常见几类云架构云原生四、K8s 架构原理K8s 架构Master 节点Node 节点五、K8s 核心组件K8s 组件Pod 是什么?Pod 到底用来干什么?Web 服务集群如何实现?Pod 底层网络,数据存储是如何进行的?ReplicaSet 副本控制器Deployment 部署对象MySQL 使用容器化部署,存在什么样的问题?StatefulSet六、K8s 的服务注册与发现Pod 的结构是怎样

2020-07-24 08:33:04

重复读取 HttpServletRequest 中 InputStream 的方法

开篇第一句,大家是否遇到过这样的问题:通过httpServletRequest.getInputStream()获取InputStream之后,遇到Required request body is missing错误?如果你回答“是”的话,那你就来对了。在本文中,我们就来讨论一下,问题 1:为什么InputStream无法重复读取?问题 2:如何重复读取HttpServletRequest中的InputStream?回答第一个问题对于第一个问题,“为什么InputStream无法重复读取

2020-07-17 07:43:45

浅谈基于 Git 的版本控制工作流

博主说:本文借鉴了很多「 DRPrincess」博主的文章内容,在此对其表示感谢。文章目录版本控制简史什么是工作流?Git Flow主要分支辅助分支Merge 加上 --no-ff 参数示意图GitHub Flow模型说明示意图特色功能PR问题追踪GitLab FlowGit Flow & GitHub Flow 的瑕疵GitLab Flow 解决方案版本的延迟发布 Prodution Branch不同环境的部署 Environment Branches & Upstream Firs.

2020-07-11 11:11:23

面试题:Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点?

文章目录面试题面试官心理分析面试题剖析为什么使用消息队列?消息队列有什么优缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点?面试题为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,以及适合哪些场景?面试官心理分析其实面试官主要是想看看:第一,你知不知道你们系统里为什么要用消息队列这个东西?不少候选人,说自己项目里用了 Redis、MQ,但是其实他并不知道自己为什么要用这个东西。

2020-07-07 14:27:44

详述 Java NIO 以及 Socket 处理粘包和断包方法

NIO 是 New I/O 的简称,是 JDK 1.4 新增的功能,之所以称其为 New I/O,原因在于它相对于之前的 I/O 类库是新增的。由于之前老的 I/O 类库是阻塞 I/O,New I/O 类库的目标就是要让 Java 支持非阻塞 I/O,所以也有很多人喜欢称其为 Non-block I/O,即非阻塞 I/O。NIO 的文件读写设计颠覆了传统 IO 的设计,采用『通道』+『缓存区』使得新式的 I/O 操作直接面向缓存区。NIO 弥补了原来同步阻塞 I/O 的不足,它在标准 Java 代码中提

2020-07-04 12:23:42

带你详细了解,一致性哈希算法的实现原理

一致性哈希算法在 1997 年由麻省理工学院的 Karger 等人在解决分布式 Cache 中提出的,设计目标是为了解决因特网中的热点问题,初衷和 CARP 十分类似。一致性哈希修正了 CARP 使用的简单哈希算法带来的问题,使得 DHT 可以在 P2P 环境中真正得到应用。但现在一致性哈希算法在分布式系统中也得到了广泛应用,研究过 Memcached 缓存数据库的人都知道,Memcached 服务器端本身不提供分布式 Cache 的一致性,而是由客户端来提供,具体在计算一致性哈希时采用如下步骤:

2017-05-18 15:54:52

由阿里巴巴 Java 开发规约 HashMap 条目引发的故事

大热的《[阿里巴巴 Java 开发规约](https://github.com/alibaba/p3c/)》中有提到:- 【推荐】集合初始化时,指定集合初始值大小。说明:`HashMap`使用如下构造方法进行初始化,如果暂时无法确定集合大小,那么指定默认值(`16`)即可:```java public HashMap(int initialCapacity) { this(initialCapacity, DEFAULT_LOAD_FACTOR); }```

2017-04-30 20:46:08

在使用 Spring Boot 的过程中,你可能不太知道的点?

如题,本文主要罗列一些在使用 Spring Boot 的过程中,大家可能不太知道的点:Spring Boot 的精髓:自动配置、起步依赖、Actuator 和命令行界面。Spring Initializr:Click HERE,Spring Boot 快速搭建网站。@SpringBootApplication注解开启了 Spring 组件扫描和 Spring Boot 的主动配置功能。org.springframework.boot:spring-boot-maven-plugin构建插件的主要功

2020-06-22 22:32:16

使用 VisualVM 和 JProfiler 进行性能分析及调优

文章目录概述概述开发大型 Java 应用程序的过程中难免遇到内存泄露、性能瓶颈等问题,比如文件、网络、数据库的连接未释放,未优化的算法等。随着应用程序的持续运行,可能会造成整个系统运行效率下降,严重的则会造成系统崩溃。为了找出程序中隐藏的这些问题,在项目开发后期往往会使用性能分析工具来对应用程序的性能进行分析和优化。VisualVM 是一款免费的性能分析工具。它通过 jvmstat、JMX、SA(Serviceability Agent)以及 Attach API 等多种方式从程序运行时获得实时数据,

2020-06-19 22:15:40

设置 Linux 别名命令 alias 永久生效的方法

直入主题,编辑.bashrc文件,该文件主要用于保存一些个性化的设置,如命令别名、路径等:vim .bashrc执行上述命令后,如下图所示:如上图所示,我们可以在User specific aliases and functions这一行下面新增我们的个性化配置,如设置别名:alias golog='cd /apps/srv/instance/csdn-core/logs'配置示例,如下图所示:如上图所示,新增golog配置后,执行:wq命令保存文件。保存文件后,在执行source

2020-06-18 09:06:18

使用 Redis 统计网站 UV 的方法

文章目录前言思路HyperLogLog使用 Redis 命令操作使用 Java 代码操作HyperLogLog 使用原理及特点使用 Java 代码实现 HyperLogLog小结前言网页 UV(Unique Visitor)就是指网站的独立用户访问量 Unique Visitor。即相同用户的多次访问需要去重。思路一想到 UV 去重,我猜大家都想到了 Set 集合类。使用Set集合是一个不错的办法,Set里面存储用户的id。每一个用户访问页面的时候,我们直接把id存入Set,最终获取Set的si

2020-06-15 15:39:18

Kafka:高吞吐量、消息精确一次语义以及保证消息顺序

文章目录前言高吞吐量顺序读写Page Cache零拷贝分区分段+索引批量读写批量压缩消息精确一次语义消息系统语义概述必须被处理的故障Apache Kafka 中的精确一次语义幂等性:每个分区中精确一次且有序事务:跨分区原子写入真实案例:Apache Kafka 中的精确一次流处理保证消息顺序前言Kafka 是最初由 Linkedin 公司开发,是一个分布式、支持分区的、多副本的,基于 Zookeeper 协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于 Hado

2020-06-14 16:43:32

详述 Java 并发编程中 CAS 以及 AQS 的实现原理

版权声明:本文的内容大都来自于「vioao」的博文,略作修改。文章目录CAS什么是 CAS?CAS 的应用CAS 的缺点AQS什么是 AQS?AQS 的应用AQS 实现原理浅析CAS什么是 CAS?CAS(Compare And Swap),即比较并交换,是解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS 操作包含三个操作数——内存位置V、预期原值A和新值B。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值;否则,处理器不做任何操作。无论哪种情况,它都会在 CAS .

2020-06-07 10:08:11

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 领英
    领英
    绑定领英第三方账户获取
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 脉脉勋章
    脉脉勋章
    绑定脉脉第三方账户获得
  • 签到王者
    签到王者
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证(专家版)
    技术圈认证(专家版)
    博客专家完成年度认证,即可获得
  • 推荐红人
    推荐红人
    发布高质量Blink获得高赞和评论,进入推荐栏目即可获得
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 原力探索
    原力探索
    参与《原力计划【第二季】——打卡挑战》的文章入选【每日精选】的博主将会获得此勋章。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 博客之星-入围
    博客之星-入围
    授予每年博客之星评选结果第21-200名的用户
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。