自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

陈晨_软件五千言

资深Java从业人员,精通企业级应用服务架构,大数据相关架构,RUP、Scrum等过程管理/技术团队管理方法与培训

  • 博客(49)
  • 收藏
  • 关注

原创 To B 业务主导的环境中软件研发定位

背景说明不得不从当前所处的行业 - 共享单车说起。共享单车目前一般分为C端,B端,G端三个方向。C端面对的是普通用户,主要针对订单、营销、增长、会员体系等。是直接的收入部门,用户量大,逻辑链路相对较短。所以对于系统架构的稳定性,质量要求较高,发现和暴露问题也比较快。G端面对的是各地政府,主要针对政府相关职能部门的监管需求进行上报、核验、异常处置等。需求的紧急程度往往很高,链路不会特别复杂,个性化需求较强。主要还是接口的适配,系统架构、稳定性、质量要求等相对较低。B端面对的是内部的业务团队,目前共享单

2021-02-20 11:30:50 359 2

原创 BLM(业务领导模型)

BLM的概念BLM(Business Leadership Model)是华为2006年花3000万从IBM引进的模型。华为导入BLM的初衷是为了统一华为中高层管理者的战略思维方法和框架,并提升这些人的领导力,因为管理者的领导力就是制定战略规划并推动战略执行的过程中逐步培养起来的。华为在使用这套工具的过程中发现这是一套包容性很强的思维框架,可以把之前指定战略规划所使用的各种工具如IPD(集成产品开发)、MM(市场管理)、战略解码、战略地图、平衡计分卡等融入其中,并可以从公司战略到业务单元战略再到各职能体

2020-12-29 15:54:44 4954

原创 分布式系统中间件整理

文章目录Redis集群架构(主从模式+哨兵)选主算法集群架构(Redis-Cluster)选主算法负载均衡其他Kafka集群架构选主算法负载均衡RabbitMQ集群架构Federation(联邦交换器)Shovel镜像队列网络分区RocketMQ集群架构Name ServerBrokerProducerConsumerElasticsearch集群架构节点和分片(物理设计)选主算法MongoDB集群架构Replica Sets 复制集选主算法Sharding 分片整合 Replica Sets+Shardi

2020-08-10 09:55:19 1407

原创 Kafka源码解析与实战

Kafka的架构包括Kafka的基本组成,Kafka的拓扑结构以及Kafka的内部通信协议。Kafka内部的通信协议是建立在Kafka的拓扑结构之上,而Kafka的拓扑结构是由Kafka的基本模块所组成的。AK RELEASE 2.5.0APRIL 15, 2020Kafka的基本组成Kafka集群中生产者将消息发送给以Topic命名的消息队列Queue中,消费者订阅发往以某个Topic命名的消息队列Queue中的消息。其中Kafka集群由若干个Broker组成,Topic由若干个Partitio

2020-07-10 14:48:22 924

原创 Redis实战

文章目录Redis命令字符串命令列表集合散列有序集合Redis事务过期与删除数据安全与性能保障创建快照有以下几种方式:AOF持久化复制(replication,MS)事务分布式锁降低占用内存短结构分片结构打包存储二进制位和字节扩展RedisRedis的Lua脚本编程内存淘汰策略LRU淘汰TTL淘汰随机淘汰:多路复用Redis无中心集群Redis Cluseter 主要组件多个从节点选主故障转移分布式锁version1version2version3redis 和 memcached 的区别redis支

2020-07-01 08:51:49 193

原创 RabbitMQ实战

文章目录RabbitMQ概念交换器类型运转流程AMQP协议生产消息exchangeDeclare方法queueDeclare方法queueBind方法exchangeBind方法发送消息 basicPublish 方法消费消息推模式拉模式RabbitMQ进阶持久化生产者确认消费端要点消息传输保障RabbitMQ运维集群搭建集群迁移集群监控跨越集群限制Federation(联邦交换器)ShovelRabbitMQ高阶存储机制流控镜像队列网络分区RabbitMQ扩展消息追踪负载均衡RabbitMQ是采用Erl

2020-06-15 09:26:45 1739

原创 Spring源码理解

文章目录Spring整体架构容器Beans项目核心类介绍容器的基础 XmlBeanFactory配置文件封装加载Bean获取XML的验证模式解析及注册BeanDefinitions解析BeanDefinition注册解析的BeanDefinition通知监听器解析以及注册完成bean的加载FactoryBean的使用缓存中获取单例bean从bean的实例中获取对象获取单例准备创建beanSpring处理循环依赖创建bean创建bean的实例属性注入初始化bean注册DisposableBean容器的功能扩展

2020-06-03 15:47:55 177

原创 Java并发编程实践

文章目录内部锁重进入(Reentrancy)Java监视器模式(Java monitor pattern)ConcurrentModificationException死锁(Deadlock)、饥饿(Starvation)、活锁(Livelock)ConcurrentHashMap阻塞队列和生产者-消费者模式阻塞和可中断的方法SynchronizerFutureTaskExecutor框架CompletionService:Executor遇见BlockingQueue中断与取消队列饱和减小锁的粒度Lock

2020-05-25 11:19:51 224 1

原创 高性能MySQL分析

文章目录Schema与数据类型优化选择优化的数据类型Scheme设计中的陷阱创建高性能索引高性能的索引策略查询性能优化慢查询基础:优化数据访问是否请求了不需要的数据是否在扫描额外的记录重构查询的方式一个复杂查询还是多个简单查询切分查询分解关联查询执行查询的基础Mysql客户端/服务器通信协议查询状态查询缓存查询优化处理语法解析器和预处理查询优化器MySQL执行关联查询关联查询优化器排序优化查询执行引擎查询优化的局限性优化特定类型的查询优化count查询优化关联查询优化子查询优化group by和distin

2020-05-19 05:27:29 755

原创 单元测试实践思考(junit5+jmockit+testcontainer)

文章目录背景方案设计单元测试指导思想单层隔离内部穿透技术实现依赖管理基础架构封装Junit5&Jmockit单元测试配置TestContainer封装官方方案实际方案完整类代码实现实例总结背景之前整理过一篇,基于(SpringCloud+Junit5+Mockito+DataMocker)的框架整理的单元测试。当时的项目是一个编排层的服务项目,所以没有涉及到数据库或者其他中间件的复杂问...

2020-04-01 08:58:41 2130

原创 Jira项目管理配置指南(三)—— 其他配置与总结

文章目录权限配置问题链接配置解决方式配置其他用户组网络钩子总结我们仍然以这张图作为开头,之前已经讲了,Project创建、问题相关、字段相关、界面相关、工作流相关的内容。大部分的内容已经完成,剩余就是权限相关与问题链接相关,其他一些相对比较不重要的配置。权限配置权限控制的是数据的查询和操作权限,我们来看一下概览这里分为如下几块(主要讲关键点):项目权限:管理权限:就是点击项目左...

2020-03-10 15:24:56 2441 8

原创 Jira项目管理配置指南(二)—— 工作流配置

文章目录工作流概述属性触发器条件验证器后处理功能工作流类型主任务子任务Bug默认工作流设计主任务后处理功能主任务总结子任务后处理功能待办到处理中日期规则解决结果责任人主任务流程推进处理中到完成主任务流程推进子任务总结Bug后处理功能解决问题未解决Bug总结默认任务总结我们仍然以这张图作为开头,之前已经讲了,Project创建、问题相关、字段相关、界面相关的内容。接下来就是最重要也是最复杂的工作流...

2020-03-09 18:43:41 7133 10

原创 Jira项目管理配置指南(一)—— 基础配置

文章目录Project 搭建概述Project基本信息问题相关问题类型问题类型方案字段相关自定义字段字段配置界面相关界面配置界面方案问题类型界面方案很多大型的软件公司会自研项目管理平台,为了满足自己内部特殊的组织架构和个性流程。但是对于大部分公司而言 ,能够找到一套合适的项目管理产品更加实际。Jira是Atlassian和核心产品,相对与禅道、Redmine甚至Worktile等等,都有很多的争...

2020-03-07 14:44:55 3691

原创 研发环境容器化实施过程(docker + docker-compose + jenkins)

文章目录背景介绍改造思路容器构建基础准备中间件容器外部依赖容器业务应用容器容器整合自动构建容器Maven相关非Maven项目总结背景介绍目前公司内部系统(代号GMS)研发团队,项目整体微服务规模大概是4+9+3的规模,4个内部业务微服务,9个是外部平台或者基础服务(文件资源/用户中心/网关/加密等),3个中间件服务(数据库/Redis/Nacos)。分为2个组,迭代周期为2周。需求和排期都是...

2019-12-28 11:28:51 379

原创 Java虚拟机-字节码执行引擎

概述Java虚拟机规范中制定了虚拟机字节码执行引擎的概念模型,成为各种虚拟机执行引擎的统一外观(Facade)。不同的虚拟机引擎会包含两种执行模式,解释执行和编译执行。运行时帧栈结构栈帧(Stack Frame)支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量、操作数栈、动态连接和方...

2019-12-22 17:43:21 138

原创 Java虚拟机-类加载机制

文章目录概述类加载的时机加载类加载的过程加载验证准备解析初始化类加载器类与类加载器双亲委派模型破坏双亲委派模型概述虚拟机把描述类的数据从Class文件加载到内存,并且对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。编译时无需进行连接工作,类的加载、连接和初始化过程都是在程序运行期间完成的。如面向接口的应用程序可以等到运行时再指定其实际的...

2019-11-30 14:34:52 128

原创 Java虚拟机-字节码指令

文章目录字节码指令字节码与数据类型加载和存储指令运算指令类型转换指令对象创建与访问指令操作数栈管理指令控制转移指令方法调用和返回指令异常处理指令同步指令字节码指令Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随其后的零至多个代表此操作所需参数(称为操作数,Operands)构成。Java虚拟机采用面向操作数栈而不是面向寄存器的架构,所以大多...

2019-11-18 07:05:17 172

原创 Java虚拟机-类文件结构

文章目录类文件结构Class类文件的结构魔数与Class文件的版本常量池访问标志类索引、父类索引和接口索引集合字段表集合方法表集合属性表集合完整结构描述实例源码Class文件分析魔数、Class版本常量池长度常量池内容访问标志类索引、父类索引、接口索引字段表集合方法表集合总结类文件结构Class类文件的结构任何一个Class文件都对应着唯一一个类或者接口的定义信息,但是类或者接口并不一定都要...

2019-11-16 11:08:15 115

原创 Java虚拟机理解-内存管理

运行时数据区域jdk 1.8之前与之后的内存模型有差异,方法区有变化(https://cloud.tencent.com/developer/article/1470519)。java的内存数据区域划分:程序计数器虚拟机栈本地方法栈堆方法区程序计数器(Program Counter Register)理解为当前线程所执行的字节码的行号指示器,字节码解释器工作时通过改变这个计...

2019-10-27 11:05:13 496

原创 单元测试实践(SpringCloud+Junit5+Mockito+DataMocker)

网上看过一句话,单元测试就像早睡早起,每个人都说好,但是很少有人做到。从这么多年的项目经历亲身证明,是真的。这次借着项目内实施单元测试的机会,记录实施的过程和一些总结经验。项目情况首先是背景,项目是一个较大型的项目,多个团队协作开发,采用的是SpringCloud作为基础微服务的架构,中间件涉及Redis,MySQL,MQ等等。新的起点开始起步,团队中讨论期望能够利用单元测试来提高代码质量。...

2019-10-19 11:48:41 1834 4

原创 Git基础概念与Flow流程介绍

文章目录Git相关基本概念常见客户端TortoiseGitSourcetreeIntellij Idea命令行常用命令存储区域命令之 add & commit &push命令之 branch & checkout命令之 cherry-pick命令之 merge & rebaseFlow相关GitFlowGitHub FlowGitLab FlowExeFlow总结...

2019-10-08 11:15:21 356

原创 谷歌最佳实践 - 如何处理代码审核中的负面反馈

处理代码审核中的拒绝反馈有时候开发者会在代码审核后给出拒绝或者负面的反馈。或者是不同意你的建议,或者是抱怨在整体过于严格。谁对谁错?当开发者不同意你的建议时,先确认一下他们是不是正确的。通常他们更加靠近代码,所以对于代码的具体方面可能他们会有更好的了解。他们的意见是否合理?从代码质量的角度考虑是否合理?如果是合理的,告诉他们是正确的,并且关闭这个问题。然而开发者并非都是正确的,这时审核者需...

2019-09-28 16:55:06 208

原创 谷歌最佳实践 - 如何写代码审核评论

来源如何写代码审核评论概述友善一些清楚的阐述你的理由要在清楚地给出方向和指出问题后让开发者自己决定之间做好平衡鼓励开发者简化代码或者添加说明,而不是解释代码为什么这么复杂礼貌通常当你在审核别人的代码时,友善、尊重、提供清晰、有效的意见对于开发者是非常重要的。做到这个的方法是在评论中只针对代码,而不是开发者。你不一定需要一直按照推荐实践来操作,但是当你说一些负面的或者有争议的...

2019-09-25 11:57:58 147

原创 谷歌最佳实践 - 代码审核的速度

来源代码审核的速度为什么代码审核要快?在谷歌,我们会对一个开发团队交付产品的速度进行优化,另外一面就是优化独立开发者的编码速度。独立开发者的速度很重要,但是绝对无法与整组的速度相比。如果代码审核太慢,就会产生下面的影响:**整组的效率会降低。**当审核不能快速反馈时,单个开发可以投入其他的工作。然而对于小组来讲,新功能或者bug修复可能就会因为代码审核被延迟数天、数周甚至数月。*...

2019-09-20 16:39:17 179

原创 谷歌最佳实践 - 代码审核的建议路径

来源代码审核的建议路径汇总当你知道该如何审核代码之后,如何有效率的在多个文件中进行审核呢?变更合理吗?有没有适当的描述?优先确认变更提交中的核心部分有没有经过良好设计?确认变更提交中的其他部分都是有良好排序的。第一步:对变更进行概览查看变更的描述并且对变更提交整体的浏览。变更是否合理?如果一开始就发现变更不应该发生,就应当立即解释原因和理由。当你拒绝这个变更的时候,最好也能...

2019-09-19 11:06:09 118

原创 谷歌最佳实践 - 代码审核方法

来源代码审核时我们应该审核什么注意:在考虑下面的原则时,切记要根据《代码审核标准》进行考虑。设计代码审核中最重要的事情就是考虑一下变更提交的整体设计。变更提交中各个部分的关联交互是否合理?这些变更是应该在代码基线中,还是应该提交到支持库中?这些变更是否能够与系统内的其他部分很好的整合?现在是不是加入这个功能的合适时机点?功能性变更提交是否实现了开发者的真正目标?开发者期望的对于代码...

2019-09-17 10:32:53 215

原创 谷歌最佳实践 - 代码审查指南

来源代码审核标准代码审核的核心目的是保证谷歌代码在不断的改进发展过程中还能持续保证健康。所有代码审核的流程与工具都是设计用于确保这个目标。为了实现这个目标,我们做了很多的权衡。首先,研发人员必须能够在个人的任务上做出改进。如果你从不提交代码的改进,那产品就无法提升。同样的,如果代码审核者对于任何变更提交都设置很高的门槛,也会影响开发者今后也提交改进的热情。从另一个方面说,代码审核者的...

2019-09-14 16:53:08 202

原创 企业代码版本管理之争:TrunkBased vs GitFlow vs AoneFlow vs OneFlow vs ExeFlow

文章目录引言TrunkBasedGitFlowAoneFlowOneFlowExeFlow综述引言网络上版本管理系统之争持久而喧嚣,依照声量来讲目前应该是Git占了较大的优势。不过我们本文的关注点在于代码的分支管理模型,因为大家无论是用SVN或者Git,目的是为了解决研发过程管理中的实际问题。我这里整理几种分支管理模型,这样大家可以对照自己的痛点选择合适的模型。不过并不是最灵活的方案就最好,灵...

2019-09-05 11:16:54 2347

原创 Spark流式编程介绍 -编程模型

来源Spark官方文档http://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#programming-model文章目录编程模型基本概念处理事件时间和延迟数据容错性编程模型结构化流中的核心概念就是将活动数据流当作一个会不断增长的表。这是一个新的流处理模型,但是与批处理模型很相似。你在...

2019-08-22 19:13:07 262

原创 互联网安全设计剑与盾

文章目录前言互联网的攻击(剑)厂家们的防守(盾)HTTPS加密/解密加签/验签重放CDN安全防盗链复杂鉴权前言互联网是软件厂家求生之地,自然也险象环生。要保证企业生存发展,自身软件的安全是最重要的,要能够保护软硬件的可用,数据的安全。互联网的攻击(剑)目前互联网常见的攻击方式如下:XSS攻击XSS攻击的全称是跨站脚本攻击(Cross Site Scripting),为不跟层叠样式表(...

2019-08-04 11:35:03 519

原创 Docker+Maven+Jenkins在Devops中完整应用

过去与现在很早之前,当我们需要一个部署环境的时候,我们可能指的是一台PowerEdge R710 2U服务器,走一系列冗长的申请流程,然后上架到机房、调试网络、安装系统、调试环境、最终部署应用,就这样过去了几个月。接着出现了虚拟化技术,我们在一台内部服务器使用Citrix XenApp划分出几台虚拟机,搭建了内部需求管理系统、SVN、测试环境等等,当需要新的机器时,我们只需要再次复制出一台虚拟...

2019-07-20 10:21:26 405 1

原创 Linux下安装docker与kubernetes(k8s)

文章目录环境kubernetes基础环境配置安装docker和kubernetes下载kubernetes的镜像初始化k8s-master添加node节点启动Kubernetes dashboard异常汇总k8s重启后无法启动。kubernetes部分pod一直没有正常running。环境安装是使用Vmware虚拟机下进行,操作系统是CentOS7 64位。规划是使用三台虚拟机搭建k8s的集群...

2019-07-19 18:06:32 3678 1

原创 Atlassian In Action-Jira之二次开发(五)

到现在已经写到了第五章节,实际上离Jira的官方系统已经越来越远,本章节的内容基本上已经完全脱离了Jira这个系统本身,而是依赖Jira的API接口和数据库进行开发了。主要包含如下几个功能:人员任务排期管理历史人员任务排期检查BI报表注意:由于我们的二次开发基本都是做成静态页面,但是大量使用了Jira的API接口,为了能够方便的使用。所以我们将这些页面放到Jira的容器当中,在其中建...

2019-07-17 11:34:09 9200 1

原创 Atlassian In Action-Jira之推荐插件(四)

前面的几章基本已经完整构建了Jira的管理平台,并且有了一套比较完成的制度和方法。但是优化是永无止境的,我们作为研发管理人员,需要让系统使用起来更加高效和便捷。为了达到这个目的一般有两种途径,插件和开发。我们本章再推荐一些插件,下一章会介绍一些很轻量的二次开发,无需修改到jira本身而是使用接口或者数据库的。本章的推荐插件实际上是暗含了不推荐的同类型插件,因为我在测试过程中,同类型的插件也试用了...

2019-07-12 09:46:11 11052

原创 Atlassian In Action-Jira之核心插件(三)

道生之,德畜之,物形之,势成之。 --《道德经》Jira的道在于构建了整个环境和思维模式,也赢得了市场的认可,成了一种势。无数的厂家便成了Jira的海洋生态当中的重要组成部分。有些厂家的插件是提升了Jira的体验,有些则是强化了特定功能。这里只推荐三个算得上必须使用的插件。BigPictureJira Misc Workflow ExtensionsTempo围绕这三个插件,我们...

2019-07-07 10:38:57 10990 9

原创 如何进行软件技术管理?

文章目录引言组织文化体系软件工程管理ScrumRUPScrum+RUP迭代边界研发测试与发布总结这个问题其实来源于一次面试,在聊完一堆的技术架构之后,面试官抛出一个问题:“你是怎么进行研发管理的工作的?”当时我的回答是:“主要是应用Scrum来进行管理。”后续的情况不细说,但是我觉得我这句话来概括之前近10年的管理经历,实在是太弱了。后面我就思考该如何真正回答好这个问题,我也去读了厦大的MEM...

2019-06-11 17:58:00 8945 1

原创 Java利用Mybatis进行数据权限控制

权限控制主要分为两块,认证(Authentication)与授权(Authorization)。认证之后确认了身份正确,业务系统就会进行授权,现在业界比较流行的模型就是RBAC(Role-Based Access Control)。RBAC包含为下面四个要素:用户、角色、权限、资源。用户是源头,资源是目标,用户绑定至角色,资源与权限关联,最终将角色与权限关联,就形成了比较完整灵活的权限控制模型。...

2019-06-06 18:19:18 9297 6

原创 [simple-orm-mybaits]基于Mybatis的ORM封装介绍

文章目录前言ORM框架现状Mybatis优缺点simple-orm-mybatis设计思路介绍simple-orm-mybatis使用说明simple-orm-mybatis实际使用推荐最佳实践更多说明前言最早接触Java的web开发框架就是SSH,其中的H就是Hibernate。Hibernate作为最出名的Java的ORM框架,现在的版本已经到了5.3.10.Final,6.0.0.Alp...

2019-05-30 17:24:58 423

原创 Atlassian In Action - Jira之核心配置(二)

道生一,一生二,二生三,三生万物。 --《道德经》如果说第一节的指导思想是管理之“道“,那我们本节的核心配置就是**Jira系统之”道“**了。有了核心配置,才有后续的各种管理方法的实施可能。本节的核心配置包括下面几点:项目用户组问题类型字段配置工作流项目(Project)项目的主要用途是作为数据的隔离。但实际上项目做到的数据隔离还是通过逻辑隔离,根本来讲还都是存储在同...

2019-05-11 16:46:38 1701 2

原创 Atlassian In Action - Jira之指导思想(一)

太上,不知有之;其次,亲而誉之;其次,畏之;其次,侮之。信不足焉,有不信焉。悠兮,其贵言。功成事遂,百姓皆谓“我自然”。 --《道德经》研发管理或者系统工具的指导思想我觉得就是依照上面这句话做到“不知有之”和“我自然”。如果管理方法是合理和高效的,它一定是符合(或者能够引导符合)大多数人的使用习惯,如果不止一个人提出觉得流程复杂或者难以理解,或者实际实施的过程中时常会出现错误,那我们应该从...

2019-05-11 16:34:24 949

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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