自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 资源 (1)
  • 收藏
  • 关注

原创 提高代码开发质量的必备工具

我们知道代码缺陷不仅会对业务造成影响,而且往往也会给别人带来“不靠谱”的印象。对于开发人员来讲,一个业务流程往往由一系列复杂的方法或者函数体组成,所以一行小小的语句失败或者出错,就会导致整个业务流程的失败。那么我们在问是否有什么工具可以来提高自己的代码开发质量吗?没错,就是它,单元测试。它是对软件组成单元进行测试,其目的是检验软件基本组成单位的正确性,测试的对象是软件设计的最小单位,即方法或者函数。单元测试其实是软件开发中必不可少的一环,也是作为质量内建的核心所在,更是作为敏捷测试中测试前移的实践方法。

2020-08-28 16:04:02 237

原创 四色建模法的魅力

四色建模法的魅力在做复杂业务需求分析的过程中,我们通常会采用领域建模的方式去将复杂问题分解成简单问题,从而有助于我们进行问题分析以及思考解决方案,所以领域建模的正确性起到了非常重要的价值,那么如何来确保建模的正确性,这是一个困扰我们的难题。我们在进行需求分析建模前会思考业务系统的目的是什么,其实可以发现通常是希望将关键的业务事件以某种数据的形态进行留痕,当我们把这些数据的足迹按照时间顺序排列起来,就可以追溯整个业务流程,最大限度还原当时事情发生的场景,清晰的推测出这个在过往的一段时间内到..

2020-12-18 20:07:56 774 1

原创 Spring框架中采用AOP模式开发的探究

Spring框架中采用AOP模式开发的探究在软件开发过程中,可通过预编译方式和运行期间动态代理实现程序功能的统一维护,这种技术我们称之为AOP,全程为Aspect Oriented Programming,意为面向切面编程。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。如果我们在同一个方法上自定义多个切面、.

2020-12-18 19:54:35 172 1

原创 Java Agent的神奇魔力

Java Agent的神奇魔力有人会问Java Agent是什么,它是Java的代理程序?这个代理程序可以实现哪些能力?今天我们就来谈一谈它。Java Agent是从JDK1.5开始引入的,其实也算是一个比较老的技术了,作为Java的开发工程师,我们常用的命令之一就是java命令,而javaagent其实就是java命令的一个参数,并且需要再参数后面制定一个jar包,但这个jar包需要同时满足下面两个条件:在META-INF目录下的MANIFEST.MF文件中必须指定premain-class配置项

2020-12-18 19:52:02 220 1

原创 “混沌”工程不“混乱”

“混沌”工程不“混乱”随着微服务和云原生架构的演进发展,应用系统的复杂度也愈来愈大,"随机性"的故障变得越来越难以预测,但任何一处的异常就可以导致系统全面坍塌,并且很难快速的定位故障根源, 那么如何能够在事前进行全方位的可靠性测试,就显得尤为关键,否则这些故障将给公司造成巨大损失,也会给用户带来麻烦,影响他们的正常使用。为此,混沌工程应运而生,混沌工程是在系统上进行实验的学科, 目的是建立对系统抵御生产环境中失控条件的能力以及信心,最早由Netflix及相关团队提出。混沌工程旨在将故障扼杀在襁褓之中

2020-12-18 19:43:40 289 2

原创 珍惜Redis,远离Bigkey

Redis是当前高并发场景下首选的分布式缓存组件,但是Redis并不是银弹,不合理的使用也会降低它的健康度,使Redis瞬间瘫痪。例如在系统开发过程中的不规范,经常会造成出现Redis Bigkey的情况,同时由于Redis主线程为单线程模型,Bigkey就会带来一些潜在隐患,比如:集群模式在slot分片均匀情况下,会出现数据和查询倾斜情况,部分有Bigkey的Redis节点占用内存多,QPS较高 Bigkey相关的删除或者自动过期时,会出现QPS突降或者突升的情况,极端情况下,会造成主从复制异常,R

2020-08-28 16:13:58 313

原创 一篇搞懂TCP“三次握手,四次挥手”

在排查网络通讯故障时,经常会说到“三次握手、四次挥手”,有人会问网络通讯为什么会握手和挥手,其实这只是一种通过拟人的手法让大家更好的来理解网络通讯中最关键的两个步骤,即网络建链和断链。===========================================================在搞懂TCP“三次握手、四次挥手”的具体过程前,有必要先对TCP/IP报头中的关键信息进行了解。IP报头 IP报头信息 信息作用和含义 .

2020-08-28 16:11:43 136

原创 系统服务幂等性设计介绍

在日常系统设计过程中或者在架构设计评审会上,经常会听到这个服务需要注意幂等性,但到底什么是幂等性,估计同学们可能都一知半解,那今天就来说一说幂等性究竟是什么,以及其作用是什么,怎么解决幂等性问题。幂等,来源于数学中的一个概念,指用相同的参数重复执行函数,永远能获得相同结果的函数,即f(f(x)) = f(x)这个等式永远成立,映射到系统设计上则多次调用对系统的产生的影响或变化都是一样的。幂等性强调的是外界通过接口对系统内部的影响, 一次或多次调用对某一个资源应该具有同样的副作用就行。..

2020-08-28 16:09:47 217

原创 无状态认证神器:JWT

说起身份认证,可能大家的第一反应就是Session认证,其通过在服务端保存一份用户登录信息,并返回一个SessionId保存在Cookie中,这样在下次请求时就可以通过SessionId来识别用户。我们通常会采用Spring-Session-Data-Redis组件来实现,正常使用情况下不会有任何问题,但是如果服务达到每秒万级别的调用量时,如何解决应用系统与Redis的远程调用开销导致的响应能力下降?如果Redis发生异常中断服务时,如何来保证认证服务?这些都值得我们去思考,是不是可以去中心化呢,是不是

2020-08-28 16:07:15 741 1

原创 关于分布式唯一ID生成算法

应用系统为了满足高并发以及高可用的要求,经常会使用多台服务节点组成服务集群提供对外服务,在业务开发过程中我们需要生成一些全局唯一ID,比如会员ID或者订单ID,那么如何能够保证不同的服务节点生成的唯一ID不会冲突,最常见的有两种方式:方法一:UUIDUUID是通用唯一识别码 (Universally Unique Identifier),在其他语言中也叫GUID,可以生成一个长度32位的全局唯一识别码。可以通过如下代码自动生成结果=046b6c7f-0b8a-43b9-b35d-6489

2020-08-28 16:02:14 368

原创 浏览器加速器:HTTP缓存

HTTP缓存作为性能优化的重要手段,当客户端向服务器请求资源时,会先抵达浏览器缓存,如果浏览器有“要请求资源”的副本,就可以直接从浏览器缓存中提取而不是从原始服务器中提取这个资源。HTTP缓存都是从第二次请求开始的。第一次请求资源时,服务器返回资源,并在Response Header头中回传资源的缓存参数;第二次请求资源时,浏览器判断这些请求参数,命中强缓存就直接200,否则就把请求参数加到Request header头中传给服务器,看是否命中协商缓存,命中则返回304,否则服务器会返回新的资源。

2020-08-28 15:59:34 509

原创 程序员的老朋友“空指针”

程序员中的老朋友“空指针”,它无时不刻的会出现在你的身边,想必大家也并不陌生,所谓空指针,顾名思义,即当一个对象的值为null时,这个时候你试图访问这个对象的属性或者调用这个对象的方法,那么它就会出现。例如:从类结构图来看,空指针它是属于运行时异常 RuntimeException 的子类,它不是捕获型的,只有在程序运行时才可能报出来,而且会造成运行中断。如下列举了一些常见发生空指针的情况,可能还存在其他的的原因,不在此穷举调用未初始化的对象的方法 方法中传递的参数为空 对空对象

2020-08-28 15:56:47 234

原创 C4模型,软件架构图中的艺术品

软件架构图是架构设计中的一种表现方式,可以通过他们来清晰的表达一个软件系统是如何工作的,然而大多数的软件架构图只是一堆框和线的混乱组成,可能只有“画家”自己能看懂是什么东西,对于其他人员更多的是一脸懵逼。而C4模式的出现恰恰解决了这个史诗级难题,它通过抽象分层的方式来描绘出系统内部或者与外部之间的关系,并且每种抽象级别都与不同的受众有关。其中C4分别代表系统上下文(Context)、容器(Container)、组件(Component)和代码(Code)。=================.

2020-08-28 15:51:41 834

原创 API后起之秀:GraphQL

首先我们来解释一下什么叫API,官方的解释口径是Application Programming Interface,即应用程序接口,它是一些预先定义的函数,或指软件系统不同组成部分衔接的约定。简单来说可以理解为是对预先定义的函数的一种封装方式,通过调用API可以实现特定的服务功能,而不需要了解其内部的实现细节。映射到我们的日常开发过程中,系统间的调用交互通常就是以API的方式来访问服务及资源,当前较为主流的API类型有两种,分别为HTTP和RPC。========================

2020-08-28 15:47:45 360

原创 理解分布式ID生成算法SnowFlake:送给爱折腾的你

理解分布式ID生成算法SnowFlake:送给爱折腾的你分布式ID生成算法的有很多种,常用的有UUID、数据库自增ID、Redis等。今天为大家介绍Twitter的SnowFlake算法,雪花算法(SnowFlake)是Twitter公司内部分布式项目采用的ID生成算法,开源后广受国内大厂的好评,在该算法影响下各大公司相继开发出各具特色的分布式生成器。概述SnowFlake算法(简称雪花算法)生成64位的二进制正整数,然后转换成10进制的数。64位二进制数由如下部分组成:[外链图片转存失败,源站可能

2020-08-27 18:55:15 117

原创 数据处理OLTP与OLAP的概念

数据处理OLTP与OLAP的概念在系统软件出现的初期,数据通常被保存在单个文件中进行管理,但随着业务的不断发展与系统数据处理逻辑的不断复杂,关系型数据库成为了主流的数据管理系统,例如Oracle、Mysql等,随后又出现了各式各样数据管理的解决方案,例如Elasticsearch、Redis、HBase等。然而,无论数据库管理系统如何更新与发展,涉及数据处理的核心术语与概念永远离不开这两个名词,即OLTP与OLAP。=======================================.

2020-08-27 18:47:23 766

原创 “阻塞”“非阻塞”“同步”“异步”这些你搞懂了吗

“阻塞”“非阻塞”“同步”“异步”这些你搞懂了吗作者:周霄龙 不管我们在系统设计还是编码开发的过程中,程序猿们在相互技术博弈的过程中经常会谈起“阻塞”“非阻塞”“同步”“异步”这些专业名词,那么它们到底有什么区别?你是不是都理解搞懂了呢?接下来我们对“阻塞”“非阻塞”与“同步”“异步”分别来介绍讲解。===========================================================“阻塞”“非阻塞”关注的是程序在等待调用结果,阻塞调用是指调用结果返..

2020-08-27 18:41:23 211

数据处理OLTP与OLAP的概念.pdf

本文简介OLTP和OLAP的工作原理,描述了OLAP和OLTP的工作场景、技术选型、特点及对比,希望大家喜欢! 在系统软件出现的初期,数据通常被保存在单个文件中进行管理,但随着业务的不断发展与 系统数据处理逻辑的不断复杂,关系型数据库成为了主流的数据管理系统,例如 Oracle、 Mysql 等,随后又出现了各式各样数据管理的解决方案,例如 Elasticsearch、Redis、HBase 等。然而,无论数据库管理系统如何更新与发展,涉及数据处理的核心术语与概念永远离不 开这两个名词,即 OLTP 与 OLAP

2020-08-27

空空如也

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

TA关注的人

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