自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

0bug0warning的博客

keep on doing

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

原创 消息队列学习分享

如果你的系统使用消息队列主要场景是处理在线业务,比如在交易系统中用消息队列传递订单,那 RocketMQ 的低延迟和金融级的稳定性是你需要的。如果你需要处理海量的消息,像收集日志、监控信息或是前端的埋点这类数据,或是你的应用场景大量使用了大数据、流计算相关的开源产品,那 Kafka 是最适合你的消息队列。那什么是事务呢?如果我们需要对若干数据进行更新操作,为了保证这些数据的完整性和一致性,我们希望这些更新操作要么都成功,要么都失败。

2023-10-16 16:11:08 6364

原创 Mybatis插件拦截器实现异常条件拦截检测

在执行query方法之前都可以获取到我们要执行的原始sql,然后进行条件检测判断。所以我们可以织入我们代码的拦截类可以为 Executor、StatementHandler、ParameterHandler。实际开发过程中可能会因为各种原因导致对数据库操作的代码缺少where条件,对于查询操作可能会导致全表扫描,对于更新操作可能会导致整个表的字段错误更新。大多数场景都不是符合我们的预期的。可以检测where条件是否合法来决定打印error日志or抛出异常)example方式生成的sql条件检测调试。

2023-06-29 17:38:20 20584 3

原创 Effective Java 第3版 创建和销毁对象分享

一 前言最近在看Effective Java 第3版的相关内容,这里做个学习总结,加深一下印象。后面会抽出时间持续更新。二 创建和销毁对象的阅读分享2.1 用静态方法代替构造器背景:平常我们在创建类的对象的时候一般都是直接通过new的方式创建,这样是最直接也是最简单的方式,但是随着我们的类功能的不断扩展,字段不断增加。直接new的方式会给我们带来一些问题。类的属性太多调用方不知道该传什么必要的参数。 有些工具类不需要频繁的创建,只需要创建一个对象就可以支持各种应用场景调用。 不支持

2022-05-17 17:03:17 6848

原创 java实现重复的DNA序列

一 题目描述:所有 DNA 都由一系列缩写为 'A','C','G' 和 'T' 的核苷酸组成,例如:"ACGAATTCCG"。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。编写一个函数来找出所有目标子串,目标子串的长度为 10,且在 DNA 字符串 s 中出现次数超过一次。leetcode链接:重复的DNA序列二 算法思路因为题目的特殊性,我们可以采用空间换时间复杂度的思想,把10个长度单位的字符串存在集合中,如果出现了重复元素,直接放到结果集里即可。三 算

2022-01-26 16:15:01 1016

原创 java实现下一个排列

一 题目描述:实现获取【下一个排列】的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列(即,组合出下一个更大的整数)。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须原地修改,只允许使用额外常数空间。leetcode链接:实现下一个排列二 算法思路首先我们可以先在纸上尝试着用人体的思维去想怎么才能找到下一个更大的数,简单总结之后你可能找到以下的特点1 要先从权重小的位置开始找(也就是从个位找),拿个位去和前面的位置换。2 个位找不到..

2022-01-25 20:55:49 1000

原创 java实现不重复数组的全排列

一 算法思想思路:全排列可以理解是一个树的递归的过程,每一个递归过程中的叶子结点就是一种可能的排列方式。利用递归可以很好的帮我们实现下面这颗树的完成深度优先遍历,得到我们想要的全排列。二 编码实现 public static List<List<Integer>> fullArray(List<Integer> number) { List<List<Integer>> result = Lists.

2022-01-25 16:05:58 1360

原创 并查集的概念和实际应用

一 并查集的概念概念:并查集是一种树形的结构,这种数据结构是把一些元素按照一定的关系组合在一起。比如在亲戚关系的场景下,并查集是由一个跟节点(根节点指向自己)和所有他的子节点(可能是他的孩子节点或者子孙节点)组成。并查集的图解:特点:并查集(除了跟节点)所有节点都指向他们的父节点,跟节点指向自己常见用法:首先把一批数据按照特点(比如按照父子关系)拆分到不同的集合中,变成并查集,然后用于处理业务逻辑二 并查集在项目中的实际应用项目背景需要做一个通过excel导入商品类目..

2021-11-23 18:55:21 705 1

原创 java函数式、lambda表达式、Stream流的原理,关系和应用

一 背景jdk7到jdk8引入了很多新的特性,函数式接口,新的Date API,stream流,lambda表达式,接口默认方法等。在这里主要对函数式接口、lambda表达式、stream流做简单的记录学习。欢迎大家一起学习交流。二 函数式接口的概念函数式接口一句话总结:只有一个抽象方法的接口称为函数式接口。可以用【@FunctionalInterface】注解检验是否是函数式接口,在jvm进行编译的的时候会检查接口是否符合函数式接口规范。函数式接口的几点特征:函数式接口只有一个抽象..

2021-11-12 17:57:36 1090

原创 多线程的原理、实践、应用

1 多线程的介绍1.1 操作系统的演进过程批处理操作系统(单道和多道):计算机能够自动地、成批地处理一个或多个用户的作业。不过单道批处理系统在进行I/O操作的时候,CPU资源是没有被利用的,为了能够更高效的利用cpu资源,多道批处理系统诞生了。单道批处理操作系统工作图示:多道(两道)批处理操作系统工作图示:分时操作系统批处理系统对于用户需要的计算机系统来说缺少交互性,工作之间的独立性。以及能在预期时间内完成用户需要的任务。分时操作系统产生了,它支持多用户交互式操作系...

2021-10-28 21:00:18 1224

原创 Apache POI处理EXCEL中的图片

1 背景最近做需求的时候需要做一个导入的功能,通过调研一些java导入的第三方jar包,最后选择了阿里的easyExcel,按照约定的规范能够简单快速的处理excel中的信息,通过@ExcelProperty注解和表头对应解析出excel的信息,使用的过程中发现了两个问题。第一个是如果excel中某一行完全是空行的话,excel会直接跳过这一行信息(不知道为什么要这么设计,对于某些业务来说带来一定的不方便性。) easyExcel不支持导入图片的信息,完全处理不了图片的信息。在github上也得.

2021-09-28 17:25:49 2533 5

原创 springboot中多种注解的使用

一@ControllerAdvice @ExceptionHandler注解简介:@ControllerAdvice注解可以简单理解为@controller注解的装饰注解,用法有三种:全局处理异常 请求参数预处理 预设全局数据其中全局处理异常是比较常见的方法(和@ExceptionHandler注解)配合使用。用法:import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframewo..

2021-09-14 21:48:14 470

原创 go语言time包时间和字符串转化 & 踩坑记录

一 正确使用姿势// 字符串转时间(带十分秒)time.ParseInLocation("2006-01-02 15:04:05", "2021-01-01 00:00:00", time.Local)time.Parse("2006-01-02 15:04:05", "2021-01-01 00:00:00")// 字符串转时间(不带十分秒)time.ParseInLocation("2006-01-02", "2021-01-01", time.Local)time.Parse("2.

2021-07-04 16:06:12 1509

原创 go语言踩坑记录

一 背景在用go语言开发项目的过程中,踩了一些坑,在这里做个记录。二 踩坑记录

2021-06-16 14:38:37 2157

原创 goland新建一个application项目

一 背景有时候出于某种原因我们想新建个简单的项目(比如为了验证一些简单的语法功能)。看了晚上很多的教程都比较繁琐,这里提供一个简单的方式新建一个application的项目。二 步骤1 首先你需要下载安装好goland并激活,下载安装好go,执行go version确定go的版本,这里我的版本是1.132 新建一个项目(用默认的$GOPATH)目录下新建就行(在$GOPATH的目录下的方便之处在于不需要再生成bin和pkg包了)2 新建一个main包新建一个main.g...

2021-05-18 20:48:43 291

原创 go语言使用tips

一 背景最近开始接触go语言的业务,在开发中遇到了一些问题。这里坐下总结和记录,防止踩类似的坑。二 使用tips1 go语言引用类型和指针类型2go语言的变量主要可以分为两种类型:引用类型和值类型。如果想在开发中快速明白两者的使用姿势的话,可以参考这篇文章:go中值传递、引用传递、指针传递的区别值类型有int、float、bool、array、sturct等。引用类型有slice,map,channel,interface。两者的简单区别在于作为形参传递的时候,在函数内部如果改变...

2021-05-18 20:30:28 249 1

原创 @Valid使用技巧 & 踩坑记录

一 背景在开发过程中,对于一些参数的校验,参数非空,参数长度限制,参数范围限制,嵌套结构参数校验等情况,用@Valid注解会省去很多手写的参数校验,简单又高效。二 使用样例和姿势1 校验的请求类import io.swagger.annotations.ApiModelProperty;import java.util.List;import javax.validation.Valid;import javax.validation.constraints.Max;impor..

2021-04-27 12:02:02 819

原创 搭建springboot服务 & 踩坑记录

一搭建springboot服务搭建一个springboot服务比较简单,推荐一篇朋友写的博客:使用idea创建一个SpringBoot项目想做做简单测试的同学看上面推荐的博客就可以了因为我需要利用工作现有的一些能力,所以需要安装springboot1.x版本,起初是打算新建个项目...

2021-04-02 16:51:43 287

原创 ES使用技巧 & 踩坑记录

一 es使tips可用postman直接import1 查看索引结构:curl --location --request GET 'http://127.0.0.1:4343/index_name/'2 查看某个索引的索引数量(ps:浏览器插件显示的数量是不准的)curl --location --request GET 'http://127.0.0.1:4343/index_name/_count'3 简单条件搜索es数据curl --location --re...

2021-03-28 19:23:37 817

原创 go语言环境配置 & 项目启动

一 安装go语言go语言各个版本之间兼容性比较差。所以可能你需要安装固定的版本1 安装最新版的gobrew install go2 查看go可以安装的版本brew search go3 安装指定版本的gobrew install go@1.134 查看安装的go语言的版本go version5 查看go的安装路径which go || where go6 查看go的环境变量go env主要关注go语言的GO...

2021-03-22 14:58:16 3414 3

原创 本地consul服务发现问题解决

一 背景难得迎来一次双休,欢乐了双休之后回来上班,突然发现项目不能启动了,服务发现一直是500,然后开始各种排查.二 过程1:配置文件指定boe环境2:redis问题3:environment virables加入变量参数4:配置文件加入变量参数5:建立文件,二进制文件转化三 收获1:在查问题的过程中,看了下公司封装consule的注册过程2:学了下@bean的知识3:@Value("#{}")与@Value("${}")的区别...

2020-12-18 20:22:16 1516

原创 搭建thrift服务 & logback配置日志文件路径

一 背景主要记录工作中的两个问题。搭建thrift服务和logback文件配置的服务器路径问题,自己在工作闲暇的时候想自己实现下提供thrift服务,之前做需求的时候一直是接入别人的thrift服务,java服务先编译下thrift客户端的文件,在启动类中注入我们需要的服务。python服务利用euler框架集成别人的thrift服务。所以想自己实践下利用公司已有的资源怎么提供一个thrift服务给别人调用。logback配置路径问题是在搭建好服务之后发现的,这里也mark下。二 搭建thrif..

2020-11-24 12:27:00 575

原创  postman使用tips

postman使用tips一 浏览器或自己pc系统的请求信息放在postman中1⃣️ copy curl2⃣️ import raw text二 请求中自动带上cookie1⃣️点击Cookies2⃣️添加附带cookie的域名3⃣️添加附带的cookie信息4⃣...

2020-11-10 14:39:59 182

原创  java.lang.IllegalStateException: READER问题解决

java.lang.IllegalStateException: READER问题解决一 背景在自测的过程中发现一个问题,在使用@requestBody注解时发现controller接收的request类拿不到body传的json数据,提示错误二 问题排查1 检查参数传的和后端的参数类型是否匹配(检验后是匹配的)2 是不是@requestBody后面的@valid注解...

2020-11-09 18:43:28 1551 1

原创 @JsonProperty使用详解

@JsonProperty使用详解一 背景在熟悉代码的过程中,看到了@JsonProperty注解的使用,查了下使用的方法,但是总觉得欠缺了点什么东西,所以自己实践了下这个注解的作用,由于时间原因没有熟悉究竟底层是怎么实现的.所以这里只是对使用和注意事项做下分析,底层实现的话这里先mark下.二 使用方式@JsonProperty注解主要用于实体类的属性上,作用可以简单的理解为在反序列化的时候给属性重命名...

2020-08-17 14:37:42 134165 3

原创 linux安装thrift0.9.2 maven不能下载依赖

linux执行sh build.sh时倒入依赖失败一 背景同事们搭建的一个java项目(父子工程项目,一个父工程,三个子工程),现在要介入进来开发.配置环境时遇到很多问题一 问题 原因 解决方法1 编译thrift版本需要安装0.9.2原因:thrift 0.9.2版本需要 openssl 1.0.2,但是19年底homebrew移除了对openssl 1.0.2的支持(官方参考:https://github...

2020-07-21 14:57:54 544

原创 Linux(Debian)下快速安装JDK

Linux下快速安装JDK1 安装yum

2020-07-07 11:00:34 1481

原创 python自动轨迹绘制

python自动轨迹绘制1 含义根据脚本绘制图形,通过编制数据的方式绘制图形,不同于利用turtle库编写代码的方式绘制图形。2 过程①写程序读取数据②根据数据绘制图形3 实例步骤①定义数据文件格式(接口)②编写程序,根据文件格式(接口)解析参数绘制图形。③编制数据文件(运行脚本得到图形)4 实例演示给定一个数据文本,每一行都是如下格式的数据,每个数据项有对应的含义...

2020-06-18 21:09:55 1815

原创 python读写文件常见操作方式

python读写文件1 文件读取全文本操作在一定场景下我们需要把文本全部内容读取出来,进行处理。python提供三种函数读取文件,分别是read readline readlines,read():读取文件的全部内容,加上参数可以指定读取的字符。readline():读取文件的一行。readlines():读取文件的所有行到内存中。不同场景下我们可以选择不同函数对文件进行读取。1.1...

2020-06-16 11:03:45 2088

原创 python本地删除项目之后的崎岖之路

python本地删除项目之后的崎岖之路一:背景今天是需求的最后提测时间, 但是有个kafka的服务还没有部署好. 晚上也没有睡好. 早上开始测试接口,本地起kafka测得还不错.但是换了一个账号之后页面报错了. 以为是因为rebase origin/maser的原因, 其实是index.html没有同步到master上,控制台其实...

2020-03-03 18:26:30 258

原创 leetcode--删除链表的倒数第n个结点

leetcode--删除链表的倒数第n个结点一:题目描述给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.二:题解分析这道...

2020-01-21 16:47:46 174

原创 leetcode--有效的括号

leetcode--有效的括号一:题目描述给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()" 输出: ...

2020-01-21 14:54:44 299

原创 leetcode--电话号码的字母组合

leetcode--电话号码的字母组合一:题目描述给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。示例:输入:"23"输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", ...

2020-01-20 17:07:21 254

原创 git提交代码到gerrit失败

git提交代码到gerrit失败一、前言tips:如果我们想在gerrit上管理代码。那么你的每次提交都要带上一个commit_id,这样才能保证你能push到远端的rfes/for/master上。(注意是这个Change_id)要每次提交代码的时候都带上一个这样的唯一标识:怎么生成唯一标识可自行...

2019-12-18 17:01:41 1907

原创 git蓝色消失 pycharm中的保存文件之后颜色消失

pycharm中的保存文件之后git颜色消失背景:在用pycharm开发中遇到一个特别诡异的问题,文件更改之后保存然后文件的颜色就消失了。都不知道自己改了什么文件解决方法:1:选中失效的项目。2:先移除项目的git关联->apply->ok。3:再次添加git的关联关系->apply->ok。...

2019-11-12 22:03:00 2304

原创 python在开发机上搭建项目

python在开发机上搭建项目一:背景1⃣️:公司的开发机上有很多本地未安装的环境,比如consule。而且可以提供独立IP。2⃣️:在开发机上启动项目可以方便理解业务,也能在后续的开发中在开发机上断电调试。二:过程过程及其痛苦...1⃣️本地和远程都要拉取项目,然后通过pycharm里的FSTP建立连接并且自动同...

2019-11-07 21:58:57 279

原创 python演练装饰器

python演练装饰器一:代码演示# -*- coding: UTF-8 -*-class Counter: def __init__(self, func): self.count = 0 self.func = func def __call__(self,...

2019-11-06 19:39:23 186

原创 Mapstruct使用介绍

Mapstruct使用介绍一:使用背景我们在读库之后(po->dto),返回前端数据(dto->vo)的需要转换函数,这时候我们一般会有以下几种方式1:手动编写convert函数2:利用反射工具进行映射(spring的BeanUtils, fastjson的JSON.parseObjec...

2019-10-24 20:11:40 2780

原创 git命令配置别名

git命令配置别名一:背景1:使用git时,我们通常需要打一大堆常用命令,而且在IDEA上开发使用终端(Terminal)时,是没有git提示的代码补全的。二:解决方式一般来说两种解决方式,可以配合使用。1:下载zsh,修改shell使用为zsh。使启动使终端可以达到git命令补全,还可以...

2019-10-21 17:10:53 704

原创 程序包org.apache.thrift.annotation不存在&IDEA上maven命令失效

程序包org.apache.thrift.annotation不存在&IDEA上maven命令失效问题一:程序包org.apache.thrift.annotation在编译项目的时候出现了这个问题,mvn clean install时候也会报这个错误。问题原因:父子工程中的两个子模块引入的依赖的版本不一致。改成一致版本问题解决。...

2019-10-20 14:59:07 8668 1

原创 git利用git reset,git rebase合并提交记录

git利用git reset,git rebase合并提交记录一:git rebase合并提交记录1:首先我们先试着提交几次记录(未push到远程仓库)。git log2:git checkout branch切换分支3:git rebase dev-test 合并最近的提交记录。4:git rebase -i 合并多条记录为...

2019-10-18 20:48:06 2279 3

空空如也

空空如也

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

TA关注的人

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