自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

怀素的专栏

桃之夭夭,灼灼其华

原创 CAS以及在Java并发机制中的使用

Java 并发编程中有介绍CAS实现锁的机制,后面再看了一些编译原理方法的书,对锁的实现有一些基本了解。 减少上下午切换的方法: 无锁并发编程:按Hash算法取模分段,不同的线程处理不同段数据。 CAS算法:CAS算法更新数据,无需加锁。 使用最少线程:尽量用少的线程,不要造成等待。 协...

2020-06-26 14:00:53 29 0

原创 关于灰度发布的感想

最近在研究springcloud,突然想到微服务接口的版本控制,最后到运维实施部署阶段就是灰度发布的管理。灰度发布又是一个很大的研究方向。

2020-06-22 12:18:39 75 0

原创 SpringBoot SSL 双向认证配置

keytool -genkeypair -alias serverkey -keyalg RSA -dname "CN=Server,OU=Ziguo,O=Ziguo,L=Ziguo,S=NY,C=CN" -keypass bigkeystorepass -keystore s...

2020-06-08 21:57:18 174 0

原创 流利说反编译抓包笔记

课程Level结构 { "levels": [ { "id": "5695c8242c11982262000000", "name": "Level 1", "...

2020-03-31 16:40:29 734 0

原创 2020复工复产后思考

全国已经开始全面复工复产,小微企业在这场疫情中的危机时刻围绕在我们这些个体身边。此时此刻是复盘自己在这场疫情中所做的事情。 2019年过年前,和朋友出去聚餐,当时新闻有报道说武汉有疫情发生,聚餐过程中还谈论此事,当时没太在意,聚餐完后经过一家药店,随口问“有没有口罩”,店内的营业员回答道“有,刚补...

2020-03-28 02:06:12 215 0

原创 构建Spring Cloud 项目Docker镜像

随着云的普及,Devops开发方式越来越流行,开发运维一体化让开发感到便捷很多。从单人开发到多人协同开发,从开发交付测试人到交付用户,这中间思路的转变也是随着技术不断革新而转变。 最初在公司尝试开发流程,没有技术的支持,全靠人治效果可想而知;后来尝试持续交付,开发流程配合工具让开发尝到甜头,效率...

2020-01-11 01:28:11 96 0

原创 linux下SS 网络命令详解

ss命令用来显示处于活动状态的套接字信息。ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。 当服务器的socket连接数量变得非常大时,无论是使用netstat命令...

2020-01-02 14:35:23 59 0

原创 JVM垃圾收集器ZGC

Java11已经推出最新垃圾收集器,ZGC主要为了减少JVM停顿时间。阿里双十一已经在项目中使用ZGC,并且取得不错战绩。支持大内存使用,所以只支持64位系统。 ZGC全称是Z Garbage Collector,是一款可伸缩(scalable)的低延迟(low latency garbage)...

2019-12-19 16:47:52 98 0

原创 互联网没有免费的午餐

16年开始创业开发APP,中间必须使用互联网上成熟的解决方案或中间件服务。支付服务如支付宝或微信,存储服务用七牛,消息推送服务如个推或极光,即时消息服务如融云或环信。主要说说使用融云的经历。 即使通讯当初选型主要考虑费用、集成是否方便等因素,最后选择融云,主要是免费,问题反馈及时。但是到2018...

2019-12-18 22:23:49 71 0

原创 读编译原理感想

最近在看Java虚拟机方面的资料,了解Class文件格式,同时还了解到数据运行时的一些流程。但是读到CAS、编译优化等技术时,有点迷茫,继续找操作系统原理、编译原理等书籍看看,了解到互斥、中继、汇编、机器代码、硬件指令集等。一个应用程序从编写到编译生成中间代码再到硬件上通过硬件指令集运行,每一个步...

2019-12-13 11:47:10 78 0

原创 JVM优化策略

工欲善其事必先利其器,要了解JVM运行情况,必须用工具获取数据才能发现和诊断问题。 让JVM这个黑盒变成我们可以认识的白盒。 名称 作用 基本命令 jps 显示指定系统内所有的HotSpot虚拟机进程 jps -l jstat 用于收集Hotspot虚拟机各...

2019-12-05 21:10:40 152 0

原创 JVM加载机制与执行流程

Java文件编译成Class以后,需要放到内存中才能运行,这个过程相当于数据处理的过程ETL(抽取、转换、加载)。 类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolut...

2019-12-03 23:18:59 34 0

原创 Java Class 文件结构

Java语言只是我们了解编程的基础语法,最终编译成的Class文件才是JVM解读的二进制文件,了解Class文件结构,有助于理解编程原理。通过javap我们将了解Class内部结构。 Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Class文件之中,中间...

2019-11-29 14:59:40 46 0

原创 Java锁及实现方式

锁的概念在数据库出现比较多,为了实现数据库的不同隔离级别,数据库会定义不同的锁类型。Java为了实现同步及线程安全,也会定义不同的锁。所谓的同步操作即原子操作(atomic operation)意为“不可被中断的一个或一系列操作”,类似数据库中的事务。 线程安全实现方式 互斥同步(锁机制) ...

2019-11-26 14:03:50 184 0

原创 Java内存模型的基础以及内存语义

Java中多个线程访问同一变量,对应到硬件上就是内存和CPU缓存,JVM是如何处理数据竞争的,必须了解Java的内存模型以及编译相关的JVM指令,同时还必须了解线程的实现方式。 Java语言通过编译器编译成JVM认识的class文件,JVM再把Class中的指令集转换成操作系统可识别二进制编码,...

2019-11-22 15:51:20 44 0

原创 微服务模式总结

现在微服务大行其道,其中必须提到网络负载均衡,曾经各种负载均衡软件和硬件如:LVS、Nginx、F5、HAProxy。曾经在项目中为减少开发量,通过httpclient和proxy实现远程访问服务,既没有服务发现也没有负载均衡,只是单纯的想减少开发工作,这个原始的想法就是后面微服务的原型。现在Sp...

2019-11-20 16:07:59 29 0

原创 Java并发机制----同步synchronized以及原子操作

Java并发编程过程中必须接触synchronized和volatile,以及后来的读写锁ReadWriteLock、重入锁ReentrantLock等,JVM在编译synchronized时会生成2个指令集monitorenter和monitorexit,volatile则实现 1)将当前处...

2019-11-19 15:51:24 55 0

原创 双11续费阿里云之闹心事

每年双十一都是程序员节日,阿里承载着多少程序员的梦想,如此复杂的系统包括海量数据、上亿订单、实时计算,各种公众号。 这个时候难免会凑热闹,刚好公司服务器快到期,有优惠券可以使用,满3500减350。一顿操作登录阿里云控制台,找到ECS点击续费,一年4000多,再检查系统配置,这台服务器带宽4M,...

2019-11-12 11:02:38 131 0

原创 架构设计感想

在软件设计中架构域是如何划分的,架构域包括:业务架构、数据架构、产品架构、应用架构、技术架构。 在一篇文章中看到关于架构的划分, 同时应该是岗位或者人的职责划分。 业务架构在很多企业其实是Boss在做决策时已经定下,后续跟进人员包括业务规划、业务模块、业务流程,对整个系统的业务进行拆分,对领...

2019-09-19 12:46:17 81 0

原创 Java线程的状态

线程状态 状态名称 说明 NEW 初始状态,线程被构建,但是还没有调用start()方法 RUNNING 运行状态,Java线程将操作系统中的就绪和运行两种状态笼统地称作“运行” BLOCKED 阻塞状态,表示线程阻塞与锁 WAITING 等待状...

2019-08-19 15:39:25 90 0

原创 JVM指令集整理

最近看《Java并发编程的艺术》,涉及到一些硬件、JVM等知识,结合Java虚拟机知识,整理JVM指令集。 JVM基本指令 iconst_1 int型常量值1进栈 bipush 将一个byte型常量值推送至栈顶 iload_1 第二个int型局部变量进栈,从0开始计数...

2019-08-15 18:11:36 307 0

原创 英语时态总结

按照旋元佑语法书总结时态,非常简单,只有简单式和完成式。 英文動詞的時態,可以分成現在、過去、未來等三種時間(times) ,簡單式、完成式、進行式、完成進行式等四種狀態(aspects) 。如果再加上主動、被動兩種語態(voices) ,那麼動詞時態變化多達 24 種。扣掉一、兩種很少使用的...

2019-08-15 12:59:59 371 0

原创 一个城市的温度

周六参加朋友的晋升分享会,彼此差不多认识了十年,其中她说苏州是一个有温度的城市,让我联想到自己的过往。 读大学前没离开过老家石首,大学四年加上毕业工作三年在武汉,2007年初最后决定来上海工作,40年光景已过。武汉和上海是离开老家居住最长的2个城市,有着不一样的温度。 武汉算是自己走上社会的城...

2019-08-12 12:41:36 156 0

原创 Java中的位操作

在C语言学习中位操作是单独拿出来讲的一章,在Java实践中相当少机会使用。 位操作基础 基本的位操作符有与、或、异或、取反、左移、右移这6种,它们的运算规则如下所示: & 与运算符、| 或运算符 、~ 取反运算符 、^ 异或运算符、>> 右移运算符、<< ...

2019-08-05 16:37:16 67 0

原创 一致性协议:Zab协议

什么是Zab协议? Zab协议 的全称是 Zookeeper Atomic Broadcast (Zookeeper原子广播)。Zookeeper 是通过 Zab 协议来保证分布式事务的最终一致性。 Zab协议是为分布式协调服务Zookeeper专门设计的一种 支持崩溃恢复 的 原子广播协...

2019-07-31 12:19:06 124 0

原创 Java 主流I/O 模型

JAVA 主流I/O模型比较 同步阻塞(BIO) 伪异步IO 非阻塞IO(NIO) 异步IO(AIO) 客户端个数:I/O线程 1:1 M:N(M可以大于N) M:1(1个I/O线程处理多个客户端连接) M:0(不需要启动额外的I/O线程,被...

2019-07-30 12:24:36 62 0

原创 Java IO与NIO 操作

JAVA IO操作 从数据来源或者说是操作对象角度看,IO 类可以分为: 1、文件(file):FileInputStream、FileOutputStream、FileReader、FileWriter 2、数组([]): 2.1、字节数组(byte[]):ByteArrayInputS...

2019-07-29 17:15:05 66 0

转载 将 IPv6 照进现实,我们需要做些什么?

手机支持双栈吗? IPv6 在相当长一段时间内没能够在公众网中普及,很重要的一个原因就是各方的动力不足,虽然一直在宣传 IPv4 地址不够用了,但缝缝补补还是让互联网走了这么多年。如果抛开动力不足来看,IPv6 的普及其实是一个系统工程,需要的是端、管、云,三方的协同支持,那么我们先看下端,也就...

2019-07-29 10:54:33 117 0

原创 Druid架构以及数据存储

Druid 的目标是提供一个能够在大数据集上做实时数据摄入与查询的平台,然而对于大多数系统而言,提供数据的快速摄入与提供快速查询是难以同时实现的两个指标。例如对于普通的RDBMS,如果想要获取更快的查询速度,就会因为创建索引而牺牲掉写入的速度,如果想要更快的写入速度,则索引的创建就会受到限制。Dr...

2019-07-23 15:16:55 2120 0

原创 两阶段提交与三阶段提交介绍

背景XA XA是由X/Open组织提出的分布式事务的规范。XA规范主要定义了(全局)事务管理器(Transaction Manager)和(局部)资源管理器(Resource Manager)之间的接口。XA接口是双向的系统接口,在事务管理器(Transaction Manager)以及一个或多...

2019-07-22 17:23:45 89 0

原创 Spring事务的传播机制

事务的传播机制: @Transactional(propagation=Propagation.REQUIRED) 如果有事务,那么加入事务,没有的话新建一个(默认情况下) @Transactional(propagation=Propagation.NOT_SUPPORTED) 容器不为这个...

2019-07-22 12:26:13 249 0

原创 Kafka 安装部署及使用

环境 Java:jdk1.8 操作系统:CentOS ZK:3.4.10 Kafka:2.12-2.0.0 ZK 安装参考:分布式ZooKeeper-3.4.10集群安装 Kafka配置 # broker的全局唯一编号,不能重复 broker.id=0 # 监听 listeners...

2019-07-15 15:09:29 785 0

原创 Java集合ArrayList和LinkedList区别

Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口。 Java集合大致可以分为Set、List、Queue和Map四种体系,其中Set代表无序、不可重复的集合;List代表有序、重复的集合;而Map则代表具有映射关系的集合...

2019-07-11 11:53:51 156 0

原创 MySQL 读提交和重复读隔离级别测试实验

Mysql默认隔离级别可重复读,我们会实验读提交和可重复读。 set tx_isolation='read-committed'; set tx_isolation='repeatable-read'; 纸上得来终觉浅,要理解它们必须实践一把,当前读、快照一...

2019-07-10 13:20:23 293 2

原创 Rocket MQ文章收集

最近参加技术分享会,了解到RocketMQ,在一些大厂对事物要求高的场景中使用RocketMQ。同时,了解到与Kafka之间的一些区别,这在技术选型过程中会有帮助,Kafka在日子收集场景中变成当红炸子鸡,RocketMQ在电商场景中有着天然的优势。 Rocketmq详解 聊一聊顺序消息(...

2019-07-08 17:11:44 88 0

翻译 Data Streaming Fault Tolerance 数据流容错

简介 Apache Flink提供了一种容错机制,可以持续恢复数据流应用程序的状态。该机制确保即使存在故障,程序的状态最终也只能反映数据流中的每条记录一次。请注意,有一个开关将保证降级至少一次(如下所述)。 容错机制连续地绘制分布式流数据流的快照。对于具有小状态的流应用程序,这些快照非常轻量级...

2019-07-02 15:34:56 104 0

翻译 Flink与kafka端到端完全一次语义概述

这篇文章改编自2017年Flink Forward柏林的Piotr Nowojski的演讲。您可以在Flink Forward Berlin网站上找到幻灯片和演示文稿。 2017年12月发布的Apache Flink 1.4.0为Flink引入了一个重要的流程处理里程碑:一个名为TwoPhase...

2019-07-01 18:23:18 279 0

翻译 What is Apache Flink? — Applications(Flink应用程序)

Apache Flink is a framework for stateful computations over unbounded and bounded data streams. Flink provides multiple APIs at different levels of ab...

2019-07-01 15:34:15 123 0

翻译 What is Apache Flink? — Architecture(Flink架构)

Apache Flink is a framework and distributed processing engine for stateful computations overunbounded and boundeddata streams. Flink has been designe...

2019-07-01 14:24:58 114 0

转载 Apache Flink 零基础入门(二):DataStream API 编程

我们在系列文章第一篇已经为大家介绍了Flink 的基本概念以及安装部署的过程,希望能够帮助读者建立起对 Flink 的初步印象。接下来将进入第二部分,即 Flink 实际开发的相关内容。本文重点介绍 Flink 开发中比较核心的 DataStream API 。我们首先将回顾分布式流处理的一些基本...

2019-06-28 10:51:19 454 0

提示
确定要删除当前文章?
取消 删除