自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qrainly的博客

qrainly的博客 | qrainly.top

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

原创 国产规则引擎urule,产品化方案的扛把子

前面有聊过规则引擎以及RETE算法,今天就产品化方案给大家介绍下URule。带大家了解一下他是如何担当得起国产规则引擎大哥大的。

2022-05-08 22:31:25 5347 1

原创 Apache Log4j2模拟漏洞复现及解决方案

上周五有关开源日志框架Log4j2高危漏洞预警发出后,这几天各大互联网公司都在加班加点做紧急漏洞处理。这是个什么漏洞呢?有多大危害,搞得互联网任人心惶惶!

2021-12-13 17:53:30 3842

原创 优雅的单测-Jacoco

一、背景前面介绍过单测框架Junit5以及辅助单测的Mock框架MockIto。但是这些仅仅是提供给我们如何去写好一个单测,单测的有效性怎么样,是否满足所有的case场景,等等这些问题,是需要有度量指标去统计衡量。所以我们需要去定义一串代码的case是否都已经覆盖到。于是我们需要统计单测覆盖率来衡量单测case的覆盖范围。二、单测覆盖率指标常见的覆盖率指标有行覆盖率类覆盖率分支覆盖率方法覆盖率圈复杂度而行覆盖率是我们主要的衡量指标,有些平台要求较低可能只关注方法覆盖率。业内的标准:

2021-09-18 16:59:04 332

原创 优雅的单测-Mock

一、 背景测试替身测试替身说明Dummy假数据,填充参数,无实际意义stub插桩spy伪装的真实对象mock模拟对象fake假对象,内存数据库二、Mock为什么需要mock测试驱动的开发( TDD)要求我们先写单元测试,再写实现代码。在写单元测试的过程中,我们往往会遇到要测试的类有很多依赖,这些依赖的类/对象/资源又有别的依赖,从而形成一个大的依赖树,要在单元测试的环境中完整地构建这样的依赖,是一件很困难的事情。为了测试类A,我们需要M

2021-09-18 11:23:56 359

原创 优雅的单测-Junit5

背景

2021-09-18 10:56:41 247

原创 LeetCode 精选百题斩-3-无重复字符的最长子串

题目信息题号:3题目描述:给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。题目难度:中等测试参数:参数一 输入:s = "abcabcbb" 输出:3参数二 输入:s = "bbbbb"输出:1参数三 输入:s = "pwwkew" 输出:3参数四 输入:s = "" 输出:0提示信息:0 <= s.length <= 5 * 104s 由英文字母、数字、符号和空格组成解法一

2021-09-16 22:01:30 87

原创 windows上搭建Skywalking+Elasticsearch的一次实践

前言近期公司内部在做技术拉伸项,考虑到之前有看过Skywalking的相关文章,但是一直也没有自己本地搭建实践一下,借此机会,尝试一把。做一下入门的尝试和学习。什么是SkywalkingSkywalking是一款国产APM(应用程序性能监视)工具,专为微服务、云原生架构和基于容器架构而设计。提供了分布式追踪、应用和服务依赖分析、服务网格遥测分析、度量聚合和可视化一体化解决方案主要支持功能度量指标可视化应用依赖拓扑图分布式调用追踪度量指标计算分析链路日志查询服务应用报警官网给的.

2021-09-16 16:57:33 1056

原创 LeetCode 精选百题斩-2-两数相加

题目信息题号:2题目描述:给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。题目难度:中等测试参数:参数一 输入:l1 = [2,4,3], l2 = [5,6,4] 输出:[7,0,8]参数二 输入:l1 = [0], l2 = [0]

2021-09-10 00:53:58 86

原创 LeetCode 精选百题斩-1-两数之和

题目信息题号:1题目描述:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。题目难度:简单测试参数:参数一 输入:nums = [2,7,11,15], target = 9 输出:[0,1]参数二 输入:nums = [3,2,4], target = 6 输出:[1

2021-09-08 01:54:00 98

原创 spring cloud alibaba -- 初识Nacos

前言最近公司小组内在流行做技术分享,于是自己就找了下之前学习的Nacos,整理了下资料,跟大家做了下简单的分享实践,由于自己也没有在项目中真实实操过,所以也不是很熟悉,只是作为Nacos入门跟大家作下分享。目录概述Nacos的基础架构图:Nacos地图:启动安装下载地址启动服务(本文以windows上启动集群示例)配置启动功能特点服务注册与发现(作为服务注册发现中心)动态配置服务(作为配置中心)动态DNS服务(负载均衡服务)Nacos Sync机制总结本文针对最新版Nacos做了一些入门介绍,以及.

2020-09-03 01:13:41 177

原创 windows10上搭建ELK实践

前言初次接触ELK还是在第一家外包公司的时候了,当时项目整体也是乱的不行,突然有一天驻留我们项目组的架构师给我们发了一个链接地址,告诉我们可以在这上面查看生产的日志信息。当时也是觉得牛逼的不行。后来换了一家公司,也接触多了通过ELK查看日志,排查问题。想着周末,自己在电脑上搞一搞如何搭建实现。本文重在如何在本机上实践,具体的日志系统如何如何重要,本文不做背景阐述。ELK其实就是Elast...

2020-03-08 02:12:36 8668 7

原创 记一次dubbo接口调用造成的数据插入重复问题

项目近期要上线,这段时间改bug改的躁动不安的,也没时间好好写点东西了。本篇文章想给大家分享的是昨天调试改bug碰到的一个大坑。dubbo的重试配置。问题出现的原因是,我在服务端接口里加了一段逻辑,导致程序执行时间增加了一些,消费端调用接口的时候超时了,导致触发的重试机制,数据重复推送到服务端,重复生成三条数据。大坑模拟复现简单搭建一下dubbo环境 dubbo-service dub...

2019-07-25 21:16:23 756

原创 数据库--总结数据库查询调优

在我们平时的工作项目中,会经常性的跟数据库打交道,如何写出一条优雅有高效的sql脚本,提高我们业务查询的效率是我们每一个程序员都必须要考虑的问题。博主在上家公司接手了一个外派项目,光是做sql优化就已经搞死了我们多少小伙伴。之后的几次面试经历也发现,对于数据库调优确实非常的重要,于是找了时间查了一些网上提供的方案,以及博主个人实际项目的总结,最终给出以下几条调优建议。Mysql调优总结0、开启...

2019-07-17 11:48:49 600

原创 数据库--浅谈Mysql索引类型以及不同索引之间的区别

目录简介常见Mysql索引类型索引种类索引优化索引失效场景总结简介索引是一种数据结构,能够快速检索数据库中的数据常见Mysql索引类型1、FullText 全文索引只有在MyISAM上支持只有char/varchar/text列上可以创建全文索引2、Hash 哈希索引Hash索引底层是哈希表对于精准查询非常高效,即在‘=’、‘in’条件下高效无法通过索引做区间查询,只能扫描全表...

2019-07-17 11:28:40 1965

原创 数据库--浅谈Mysql不同存储引擎之间的区别

目录MyISAM存储引擎InnoDB存储引擎Memory存储引擎Merge存储引擎InnoDB 和 MyISAM对比索引类型MyISAM存储引擎缺点:不支持事务、不支持外键优点:访问速度快,支持全文索引、压缩索引应用场景:对事务完整性没有要求或者以select/insert为主的应用基本上可以用这个引擎创建表InnoDB存储引擎缺点:相对MyISAM引擎写的处理速率会差一些,并且会占...

2019-07-17 11:20:02 330

原创 数据库--Mysql事务隔离级别

目录事务的四大特性(ACID)原子性(Atomicity)一致性(Consistency)隔离性(Isolation)持久性(Durability)mysql数据库四种事务隔离级别mysql数据库查询当前事务隔离级别:select @@tx_isolationmysql数据库默认的事务隔离级别是:Repeatable read(可重复读)mysql数据库设置事务隔离级别:set transacti...

2019-07-17 11:16:48 170

原创 网络安全--浅谈HTTP与HTTPS的区别

区别1、HTTP是超文本传输协议,信息是明文传输。HTTPS则是具有安全性的SSL加密传输协议。2、HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样。HTTP连接端口80,HTTPS连接端口是443。3、HTTPS连接是无连接、无状态的。HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP安全。持续更新中…...

2019-07-16 17:44:14 272

原创 网络安全--浅谈HTTPS协议

目录简介HTTPS基本原理HTTPS缺点简介HTTPS,安全的HTTP,也被称为HTTP over TLS,TLS的前身是SSL。HTTPS的安全基础是SSL。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议:SSL记录协议–建立在可靠的传输协议之上,为高层协议提供数据封装,压缩、加密等基本功能。SSL握手协议–建立在SSL记录协议之上,用户在实际...

2019-07-16 17:41:40 507

原创 网络安全--浅谈HTTP协议

目录简介HTTP请求HTTP响应HTTP报文格式HTTP协议版本网站访问量简介HTTP(HyperText Transfer Protocl) 建立在TCP上的无状态无连接的超文本传输协议HTTP请求客户端发起请求到服务端HTTP请求包括:1、状态行 请求方式Method、资源路径URL、协议版本Version2、请求头 访问的域名、用户代理、Cookie等3、请求报文 请求数据...

2019-07-16 17:31:56 461

原创 网络安全--浅谈TCP于UDP的区别

TCP简介请参考网络安全–浅谈TCP协议UDP简介请参考网络安全–浅谈UDP协议TCP与UDP的区别TCP是面向连接的,而UDP是无连接TCP是可靠传输(超时重传+数据应答),UDP是不可靠的TCP是面向字节流的,UDP面向数据报TCP面向点对点连接,UDP可以一对多基于TCP的网络协议有HTTP/HTTPS/FTP/SMTP等,基于UDP的网络协议有DNS/NFS/TFTP等...

2019-07-16 17:29:13 475

原创 网络安全--浅谈UDP协议

目录简介基于UDP的网络协议通讯方式应用场景简介UDP-传输控制协议三大特点:1、无连接的2、不可靠的3、面向数据报基于UDP的网络协议1、NFS:网络文件协议2、TFTP:简单文件传输协议3、DHCP:动态主机配置协议4、DNS:域名解析协议通讯方式广播:对同一网段内或者全网段的主机进行发送数据组播:对设置在同一个组内的主机发送数据应用场景视频通话(基于UDP没有...

2019-07-16 17:25:18 772

原创 网络安全--浅谈TCP协议

目录简介连接机制(三次握手,四次挥手)建立连接断开连接确认应答机制(ACK机制)超时重传机制滑动窗口流量控制拥塞控制延迟应答捎带应答面向字节流粘包问题TCP异常情况TCP保证的可靠性和高性能基于TCP常用协议简介TCP-传输控制协议报头:16位源端口号/16位目的端口号:表示数据从哪个进程来,到那个进程去32位序号:4位首部长度:表示该TCP报头有多少个4字节6位保留:保留数据6...

2019-07-16 17:23:57 356

原创 Java基础--Java的四种引用类型

目录java的引用类型强引用(StrongReference)软引用(SoftReference)弱引用(WeakReference)虚引用(PhantomReference)java的引用类型强引用(StrongReference)软引用(SoftReference)弱引用(WeakReference)虚引用(PhantomReference)强引用(StrongReference)...

2019-07-15 16:20:27 111

原创 Java--Java基础数据类型

目录基本类型整型 byte short int long浮点型 double float字符型 char布尔型 boolean自动装箱、自动拆箱基本类型byteshortintlongfloatdoublecharboolean整型 byte short int longbyte:1个字节8位 -128(-27)~127(27-1) 默认0short:2个字节16位 -...

2019-07-15 16:09:51 84

原创 基于springboot+mybatis+Sharding jdbc实现的分库分表、读写分离

这两天抽空搞了一下Sharding jdbc,鉴于现在做的项目中也用到了这块(不是我搞的),作为一名对技术痴迷的渣男,怎么可能无视它的存在,必须自己来搞一搞哈。搞起~项目搭建1、新建一个spring boot工程,添加依赖 <dependencies> <!--核心服务--> <dependency> ...

2019-07-11 17:19:41 1407 3

原创 记一次mysql主从同步失败的踩坑记录

踩坑过程  昨天在开发电脑上搭建了mysql的主从服务,并尝试搞了一下读写分离的实现机制。想着今天再来搞一下数据分表。于是一大早来了后就开始搞起来。可是当测试的时候却发现,从库的数据怎么都写不进去,检查了好久,还以为新搞得的分表配置逻辑有问题。咦~没问题啊,是不是数据库的同步的问题啊?于是带着疑问我尝试了一下手动在master里添加一个数据,然后到slave库里查看一下有没有。果然,没有,那就真...

2019-07-11 14:50:00 2008

原创 记一次安装mysql服务的踩坑记录

[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_gro

2019-07-10 20:53:38 140

原创 windows上mysql的主从配置

目录下载安装服务安装master服务1、bin目录下新建my.ini文件2、 开始安装3、 开始登陆安装Slave服务1、bin目录下新建my.ini文件2、开始安装3、开始登陆配置主从下载博主下载的是解压版mysql安装包8.0.16下载地址安装服务安装master服务1、bin目录下新建my.ini文件内容如下[mysql] # 设置mysql客户端默认字符集 defa...

2019-07-10 13:26:18 326

原创 Java基础--初步分析ArrayList源码

简介ArrayList作为Java集合容器,在我们的开发过程中是非常常见的。ArrayList继承了AbstractList,实现了List、RandomAccess、Cloneable以及Serializable接口,支持快速访问、复制以及序列化。ArrayList底层是基于数组的存储结构,支持null,可以通过索引进行随机访问,所以ArrayList的查询效率非常高。但是数组的长度是固...

2019-07-09 15:37:00 204

原创 基于zookeeper实现的分布式锁

目录摘要实现原理代码实现摘要在分布式解决方案中,分布式锁是一个很重要的部分。之前有写过一篇基于redis实现的分布式锁,为了实现在工作项目中生产环境多节点的定时任务抢占触发。前段时间又接手了一个社区项目的模块改版任务,实现需求是,用户通过APP端报名参加茶会活动,需要在报名接口增加一个分布式锁,以保证在并发请求下活动的名额能够正确的扣减。出于这个项目正好用到了zookeeper做服务注册发现...

2019-07-08 18:52:07 161

原创 Java基础--面向对象开发的六大原则

目录对象的六大原则单一职责原则开闭原则里氏替换原则依赖倒置原则接口隔离原则迪米特原则(最少知道原则)对象的六大原则单一职责原则(Single Responsibility Principle SRP)开闭原则(Open Close Principle OCP)里氏替换原则(Liskov Substitution Principle LSP)依赖倒置原则(Dependence Inve...

2019-07-08 15:10:16 150

原创 基于git版本管理的push事件撤销

前几年的互联网项目中大家还都比较多的使用svn做版本管理,随着git的不断优化,以及互联网架构模式的演进,git越来越受到开发人员的青睐。博主经历过的几个项目中也都是用到了git作为项目的版本管理。现在的大部分工程初始化后,除master分之外,都会增加dev以及test分支,以方便开发代码的管理(有的项目也会建立更多的分支进行管理)。一般来说,我们都会要求开发人员只允许在dev分支进行代码的commit和push操作。当然,有时候也避免不了某个不怕死的误在test或者其他非dev分支推送代码。博主就

2019-07-07 14:59:15 273

原创 Java基础--浅谈NIO

目录什么是NIO相比较传统I/O的区别NIO三大核心部分ChannelFileChannelSocketChannelSelectorBuffer使用步骤操作示例三个重要的方法文件映射到内存什么是NIO  NIO即NEW I/O,是在JDK1.4引入的一套新的I/O标准。NIO是基于Block,以块为基本单元处理数据。并且为所有的基础类型提供了Buffer支持。   数据从Channel中读...

2019-07-06 16:45:04 176

原创 Maven项目中jar冲突解决方案

目录导航问题解析解决方案一、版本排除二、版本锁定三、直接引入问题解析针对这个问题,我们首先要搞清楚的是maven的几大原则一、依赖传递假设A项目依赖B,B又依赖C,那么A也会依赖C依赖依赖依赖A项目B项目C项目二、声明优先原则假设maven项目中先后声明了同一个jar包的A版本和B版本,则maven会使用A版本使用不使用声明A版本声明B版本maven三、最近路径优先原则假设项目...

2019-05-16 00:42:25 456

原创 Windows上安装启动ZooKeeper服务

目录导航一、下载ZooKeeper安装包二、配置ZooKeeper三、启动服务一、下载ZooKeeper安装包本示例用的版本是3.4.13官网下载地址:ZooKeeper下载链接下载完解压即可,解压目录如下二、配置ZooKeeper在解压目录同级新建data/logs文件夹,用来存放ZooKeeper的相关数据和日志进入安装目录下的/conf文件夹,复制zoo_sample...

2019-05-15 23:51:44 6107 3

原创 java面试常见算法总结

java面试常见算法总结一个int[]数组 如何打印出重复次数前5的元素及重复次数/** * 排序 * @author v_liuwen * @date 2019/3/5 */public class SortDemo { public static void main(String[] args) { int[] nums = new int[]{1,3...

2019-03-05 18:23:27 1503

原创 AOP注解方式实现redis分布式抢占锁

很多项目中都会有一些需要做定时跑批的任务需求,大多数是通过spring注解的方式实现的,但是到了生产环境,多节点的部署可能会造成定时任务的多节点同时触发而可能会出现脏数据。之前的处理方案是通过在字典里配置指定生产节点处理定时任务。虽然此方法也能实现需求,但总觉得很low,所以自己就通过JAVA的AOP方式利用redis实现了一套分布式抢占锁,通过注解的方式解决生产环境多节点部署带来的定时任务触发。

2019-01-18 19:24:26 696

原创 windows上redis的安装、配置和启动

redis的下载安装下载redis本来是不支持windows的,但redis的工程师们非常良心的为我们开发了社区版供大家学习,下载地址:https://github.com/MicrosoftArchive/redis/releases Redis官方版本目前已经升级到了beta5.0, windows开放版本目前最高版本是3.2.100,不过对于我们开发学习已经足够了。1、下载后的压缩包...

2018-09-18 16:43:26 457 2

空空如也

空空如也

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

TA关注的人

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