自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (5)
  • 收藏
  • 关注

原创 关于java日志输出的一点心得

介绍之前有参与双11的压测的似乎和听了下大佬讲解的一些性能优化方面的说法,有记录下来但是一直没有整理。今天有点时候,就把我所知道的一些东西整理发布一下。这次先说下关于日志打印方面的一些。日志同步改异步日志打印是写入磁盘。所以尽量不要同步打印,可以把同步改异步处理解决改logback配置文件的写法。原写法示例: <appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">

2021-05-12 21:41:02 458

原创 idea中使用git操作介绍

git的简单介绍这里我只简单介绍一下,详细git学习建议看廖雪峰的git教学首先git分为这几个区Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓库还有有一个分支的概念。一个工作流程假设你领导安排一个工作给你,我们基于多分支开发,那么步骤如下:clone项目到你的idea上的在本地master建立一条分支把本地分支push到远端然后进行开发最后开发完成把分支发布到日常环境日常完成把分支发布到预发环

2021-05-05 15:24:55 405 1

原创 idea常用快捷键以及插件推荐

介绍现在的大部分java开发应该都是上来就是使用idea做默认的开发工作了。我在大学里面学的时候还是用myeclipse做开发的,然后后面切换到eclipse的。工作1年后才切换到idea的,其实开始的时候用的也是很不习惯,当时也没有使用git的习惯,也没有接触分布式微服务的概念。对于所有的应用不能一起打开就很怨念。后面随着自己的慢慢熟练之后感觉惊为天人。感觉idea的构建理念就是微服务的。快捷键自动提醒:Alt+回车:大小写转换: Ctrl+Shift+U(这个在写枚举类的时候特别好用)删除光标

2021-04-26 22:55:56 407

原创 java8日期时间api

介绍鉴于之前的java的时间工具类很不好用,java8给出了localDateTime,localDate,localTime这3个工具类用于处理时间。在mybatis中也可以把date转换为localDateTime,这个可以参照我之前的文章。localDateTime使用例子import java.time.*;import java.time.temporal.ChronoField;import java.time.temporal.ChronoUnit;import java.util

2021-04-26 22:07:45 111

原创 Optional类使用demo

介绍java8之后推出了Optional用于处理一些空指针代码import java.util.ArrayList;import java.util.List;import java.util.Optional;public class OptionalDemo { public void test1() { Integer a = null; int b = Optional.ofNullable(a).orElse(0); List&

2021-04-24 15:22:06 160

原创 java8使用stream流操作

介绍Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。也是从java8开始推荐得函数式编程。和stream流相得益彰常用方法stream中用我用的最多得几个方法介绍替代原先得for循环去重,获得特定条件得数值,筛选list转map操作具体例子package com.chen.hi.test;import java.io.BufferedReader;import java.io.FileNotFoundException;import

2021-04-21 21:18:18 120

原创 lombok建造者模式demo

介绍Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。也是从java8开始推荐得函数式编程。和stream流相得益彰常用方法stream中用我用的最多得几个方法介绍替代原先得for循环去重,获得特定条件得数值,筛选list转map操作具体例子import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;import

2021-04-20 23:45:54 364

原创 jdk原生线程池同步&异步使用方法举例

线程池使用例子package com.chen.hi.test;import java.util.ArrayList;import java.util.List;import java.util.concurrent.*;public class ThreadPoolExecutorTest { class Task implements Callable<String> { private String taskProperty; pub

2021-04-15 20:38:07 213

原创 java图片合并以及去除底部白边

背景最近有实现一个需求。会产生多张图片,这些图片的宽度一直,然后要进行拼接,拼接成一张长的图片返回。代码实现 /** * 底部截取白色 * 通过x,y坐标从下到上,如果该X轴上所有的点都是白色,就判断这一行需要截取,直到没有白色为止 * @param img * @return */ public static int getHeight(BufferedImage img) { int trimmedHeight = 0

2021-04-14 22:15:20 642

原创 2020年末总结

之前在的公司之前在菜鸟外包。有幸从零开始用spring cloud写了一个快递收件相关的业务。对于整个微服务体系的使用有了一些自己认识和理解。的简单。分库分表,redis,rocketmq,nacos等等中间件都有了一些自己的认识。单量也大约每日有500w左右。不说最佳实践,也算是有所实践吧。离职今年4月离开了菜鸟的外包公司。离职理由只是单纯的外包呆的很不稳定。而且项目也写的差不多了。不走也是被换项目组,和离职没啥区别。不如自己主动点。后面就开始找工作了。全托了今年疫情这个黑天鹅。导致我跳槽之后的市

2020-12-22 23:10:07 274 2

原创 spring cloud脚手架项目(十六)开发HTTP API 接口签名验证

前言最近有给写一个开发接口给第三方用。也趁机学习了一下有关如果提供一个接口的验签的过程也有参考到这篇文章:https://mp.weixin.qq.com/s/VJX6h2Fl_a5N3iCWe777nA如何接口安全问题需要解决3个问题:请求身份是否合法?请求参数是否被篡改?请求是否唯一?请求身份为开发者分配accessKey(开发者标识,确保唯一)和secretKey(用于接口加密,确保不易被穷举,生成算法不易被猜测)。防止篡改按照请求参数名的字母升序排列非空请求参数(包含Acces

2020-11-20 11:55:05 515 1

原创 spring cloud脚手架项目(十五)比简单责任链复杂一些的责任链实现

前言之前有介绍过简易的责任链的实现方式,今天再介绍上一个责任链的升级版本代码实现通用接口类public interface TestComponent { void execute(Context context);}4个实现类import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Component;@Slf4j@Componentpublic class OneTestCompone

2020-11-02 20:09:46 259

原创 spring cloud脚手架项目(十四)rocketmq使用事务消息

前言最近有看分布式的事务相关的内容。之前有配置过XA模式的分布式事务。然后又刚好看了有关rocketmq的最终一致性的相关方案。决定实践一下逻辑实现1、A 系统先发送一个 prepared 消息到 mq,如果这个 prepared 消息发送失败那么就直接取消操作别执行了;2、如果这个消息发送成功过了,那么接着执行本地事务,如果成功就告诉 mq 发送确认消息,如果失败就告诉 mq 回滚消息;3、如果发送了确认消息,那么此时 B 系统会接收到确认消息,然后执行本地的事务;4、mq 会自动定时轮询所有

2020-10-29 20:18:24 414

原创 spring cloud脚手架项目(十三)Fegin微服务应用之间请求追踪链路开发

前言在之前的一篇文章中,我写了一个aop日志打印的功能,通过注解的实现,可以让接口直接打印出入参和出参,并且在日志上添加uuid。因为当服务器的请求很多的时候,会发现日志都挤在一起,自己都不知道这个日志信息对应的调用链路的情况了。相关文章:spring cloud脚手架项目(五)日志模块之出入参数和日志链路追踪UUID2 实现效果上一篇文章的实现效果[430c8ee7-6d34-4414-8ccc-9042c4cc340c][2020-10-23 22:14:24.948][http-nio-87

2020-10-23 23:09:03 204

原创 spring cloud脚手架项目(十二)简易责任链写法

说明前面有一篇文章提到过一个设计模式,是工厂模式和策略模式的使用。在项目中非常的普遍。这次我要介绍的是责任链模式,这个模式也非常的常见。逻辑介绍假设我们需要做到一个订单下单,一般来说订单下单需要做到一层一层的检测。如果其中有一层检测错误,那就直接抛出下单失败。并且丢出错误信息即可。如果是一般的写法。那就是一个长代码if else 。如果校验规则越来越多。那么就可以使用责任链模式,把校验规则分开写,也会更加优雅。话不多说。直接上代码代码实现核心类,用于策略启动import org.springf

2020-10-21 23:22:35 332 1

原创 spring cloud脚手架项目(十一)logback配置

前言之前有写到一个aop日志输出,当时没有做好相关的logback配置。前几个月在新公司给老系统升级的时候重写了一个好用的aop的logback的配置。对于spring boot 的logback配置的xml文件也有了很好的理解。这次接机说明一下。也为下一篇文章讲到链路之间的日志uuid的添加做准备代码以下就是详细的xml配置文件。每一行我都做了对应的注释和说明<?xml version="1.0" encoding="UTF-8"?><configuration scan="t

2020-10-20 23:54:18 399

原创 spring cloud脚手架项目(十)简单好用的上下文写法

前言好久没更新之前的脚手架项目的文章了。其实我最近也写了蛮多的代码。在git记录里面可以看到,但是把demo转为实际的例子又需要一些语言表达,最近公司被迫9116,还没有补偿。也没什么心思写这个。最近准备重新准备一下面试,相对工作也会划水一点,打算把之前代码漏下的更新一下。介绍什么是上下文写法呢?想必在大家写代码的时候总会遇到,有一个逻辑特别复杂的代码。又是一线到底的逻辑,也不需要用到什么设计模式。但是就是复杂,判断多。一梭子写下来。一个方法500行。就想老太太的裹脚布,又臭又长。而且这种代码。刚写完

2020-10-19 22:42:04 346 1

原创 搭建docker registry私服

参考官方文档地址地址:https://hub.docker.com/_/registryhttps://hub.docker.com/_/registry文件非常简单,关键如下:搭建相关命令搭建私服# 创建docker私服镜像docker run -d -p 5000:5000 --restart always --name registry registry:2#查看所有镜像docker images#下载一个centos7的镜像docker pull centos:7#修改一个

2020-10-14 22:52:38 241

原创 Minikube安装以及一些踩坑的解决

安装k8s和docker我的测试系统是centos5.8的国内服务器参考文档:https://developer.aliyun.com/article/221687首先先安装k8s 1.19.2版本# 1.19.x 版本的安装# 腾讯云 docker hub 镜像# export REGISTRY_MIRROR="https://mirror.ccs.tencentyun.com"# DaoCloud 镜像# export REGISTRY_MIRROR="http://f1361db2.m

2020-09-29 11:49:36 10878 3

原创 mybatisGenerator工程项目,以及一些小优化

前言今天介绍一下myabtisGenerator项目。以及如何使用逆向工程准备工作准备创建一张订单表,建表语句如下CREATE TABLE `common_order` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id', `order_no` varchar(50) NOT NULL DEFAULT '0' COMMENT '订单号', `order_type` smallint(6) unsigned N

2020-08-24 20:14:02 193

原创 jstack分析线上jvm问题,以及如何获得java的dump文件

前言线上JVM问题排查一直是面试中逃不过的一环。大部分的说法也只是看oom日志,使用jstack或者是其他的分析工具进行分析。但是具体怎么做还是感觉有点含糊。不够清楚准备工作一个spring boot的项目,用docker打包启动。注意java进程不要占据Pid为1的位置。用shell脚本启动jar包即可分析过程首先需要查询java进程的id,使用top命令top结果如下top - 03:15:18 up 32 days, 39 min, 0 users, load average:

2020-08-17 11:52:47 1854

原创 docker安装nexus和gitlab

前言docker有关的中间件安装相关我也出了不少了。之前有个坏习惯就是喜欢去搜百度怎么安装然后发现其实有一个很简单的办法,就是直接在dockerhub搜索对应的容器镜像,基本都有官方给的安装方法,比自己一个个搜那些二手办法简单多了。一下2个都是基于官方方法安装的。参考地址:https://hub.docker.com/docker安装nexusnexus的镜像文档是真的全面。。非常的简单,并且准确。以下内容基本复制官方文档参考地址:https://hub.docker.com/r/sonatyp

2020-08-06 15:58:02 288

原创 docker使用dockerfile和shell脚本,动态参数控制

前言最近在写搞项目中的测试环境远程debug,需要修改一下dockerfile中的shell脚本配置启动java程序中的参数,所以有在研究dockerfile和shell脚本shell中传入参数shell脚本,名称为start.up#!/bin/basha=$1b=$2if [ "$a" == "1" ];thenecho "a=1"elseecho "a!=1" fiif [ "$b" == "2" ];thenecho "b=2"elseecho "b!=2" fil

2020-08-04 17:32:36 9527 5

原创 docker通过dockerfile构建spring boot项目

前言最近在新公司有分享到有关docker的东西,自己最近也有重新学习了一些东西。之前对于dockerfile自己一直有一种畏惧的心态,虽然一直看得懂,但是就是有一种说不上来的不自信,也几乎不写dockerfile。然后刚好趁着这个机会重新整理一下docker有关的新的知识前期准备既然是要启动一个spring cloud的项目,那么自然需要准备一个eureka的,这边可以参照我之前搭建过的eureka项目eureka搭建dockerfile的一般使用这个是我的eureka的docker启动的doc

2020-07-10 18:46:31 582

原创 疫情间找工作的记录,附上一些offer情况和面经

前言自从4月份离职以来,陆陆续续找了也有2个月的工作了。终于是找好了。疫情期间也没法出去旅游啥的。天天窝在家里也呆的快腻死了。工作吧工作吧。收到的offer,按时间排列,base杭州闪电购:18x13 双休卖好车:16x13 双休二维火:16x13 996菜划算:16x13 双休以下为不知名小公司18x13 双休17x13 双休17x13 大小周tips:阿里网易都找了内推,直接简历被pass,不给面试机会,哭o(╥﹏╥)o,毕竟也没面。也就不多BB了。之后再努力吧工作经历首先讲讲

2020-06-05 14:08:24 1578

原创 java多线程编程(5)ReentrantReadWriteLock和ReentrantLock

前言java中多线程编码中除了synchronized 关键词以外,就是使用lock接口实现锁。本次就讲一相关实现ReentrantLockimport java.util.concurrent.locks.ReentrantLock;public class Test20 extends Thread{ public static int result = 0; public static class Test extends Thread{ private R

2020-06-02 19:04:46 105

原创 java多线程编程(4)CountDownLatch,CyclicBarrier,Semaphore的举例使用

前言这3个组件具有相似的用途CountDownLatch倒数锁import java.util.concurrent.CountDownLatch;public class Test16 extends Thread{ //如果把3改为4,可以看到3个线程都等待在那里了 public static CountDownLatch countDownLatch = new CountDownLatch(3); public void run(){ System.out

2020-05-31 13:20:15 99

原创 java多线程编程(3)ThreadLocal的使用以及源码分析

前言本次源码基于JDK1.8版本源码分析get方法 public T get() { //获得对应的线程 Thread t = Thread.currentThread(); //通过线程获得对应的map ThreadLocalMap map = getMap(t); //判断map是否为空,不为空则拿到对应线程作为Key的value if (map != null) { Thre

2020-05-30 23:22:00 81

原创 java多线程编程(2)通过join按顺序依次打印ABC

前言这次的题目讲一个另一个多线程的关键字join,当使用join()的时候,当前线程会让出执行权,让join线程优先进行题目3个线程,打印出ACB代码public class Test14A extends Thread{ public void run(){ System.out.println("A start"); System.out.println("A"); }}public class Test14B extends Threa

2020-05-27 20:56:19 526

原创 java多线程编程(1)生产者消费者模式

前言最近也看完了<<并发编程的艺术>>,也零零散散的看了不少多线程有关的东西。早上写代码的时候看到一篇博客讲了使用notify和wait相关的一些东西。本人自己对多线程一直有点苦手,书本看了一大堆。但是实际使用依然头大。这次突然对于多线程编码有点感悟,记录于此。概念相关synchronized{}锁住的代码块,结束代码执行之后。会释放对应的锁wait和notify,可以在synchronized{}之中使用。即使拿到了锁,也会在代码块中释放出去。题目1现在有4个线程,2个

2020-05-26 13:26:33 215

原创 spring cloud脚手架项目(九)各层模型Pojo转换工具类BeanCopyUtil

前言编程中比较常见的问题就是controller层的DTO转为对应的数据操作层的DO。或者是在一系列service操作之后返回到controller层的DTO转换。或者是还需要把DTO转VO。模型介绍1、用户发出请求,表单的数据层被匹配为 VO2、展示层把 VO 转换为服务层对应方法锁要求的 DTO,传输给服务层3、服务层首先根据 DTO 的数据构造一个 DO,调用 DO 的业务方法完成具体业务4、服务层把 DO 转换为持久层对应的 PO,调用持久层持久化方法,把 PO 传递给它完成持久化操作

2020-05-15 20:37:49 411

原创 教训,数据库不加密的后果,我的数据库被绑架了!

原因最近这段时间有点空暇,所以在搭建自己的spring cloud脚手架。然后还特意去腾讯云低价弄了2台云服务器做自己的中间件的平台,把我的msyql,eureka,rocketmq,nacos,等等一系列中简单docker打包上去了。做我的脚手架中间件支撑,在github上也有同步。昨天,遇上事情了。过程由于我的代码放到github上去了。我的yml文件上的数据库连接账号密码是明文形式的。(这也是自己的重大问题。其实在公司开发的时候这些东西都是加密的)我昨天正在美滋滋的测试我的脚手架服务。突然数据库

2020-05-14 21:00:53 491 1

原创 spring cloud脚手架项目(八)nacos动态配置中心接入以及json配置

前言上一篇我接入了rocketmq和redis,本次要接入的中间件是阿里的nacos,用于当做配置中心。关于nacos的安装可以参考我之前写过的docker 安装naocos的文件介绍nacos是阿里用于spring cloud体系下的一个突破吧,可以用作注册发现和配置中心,支持自动刷新配置,我个人更加喜欢他的自动刷新配置功能,比spring cloud 的config和bus的动态配置有更多用法。常见用法就是用于动态刷新配置。举例:有一个项目由一个新功能上线。我也不确定这个功能是否好用,我需要及时

2020-05-13 10:14:51 4206 2

原创 spring cloud脚手架项目(七)redis和rocketmq接入

前言上一篇讲到了工厂类和工厂类对应的使用。本篇则讲到了mq和redis的整合。在mysql负载不过来过多请求的时候,我们需要缓存,这时候就是redis登场的时候了。以及我们的请求需要削峰,降低请求压力。就需要mq,我们本地接入的是rocketmqrocketmq和redis的docker安装可以考察我之前的代码参考博客:redis:https://www.cnblogs.com/L-Wirepuller/p/11150742.htmlrocketmq:https://juejin.im/post/

2020-05-13 10:14:00 641

原创 spring cloud脚手架项目(六)策略模式&工厂模式的使用以及二进制状态优化

前言第5,6篇分别做了全局的异常处理和aop日志。这样我们的项目的通用逻辑的处理以及基本没有问题了。本篇讲的是一个工厂类的使用参考博客:https://segmentfault.com/a/1190000022205403https://blog.csdn.net/u013129944/article/details/64443054背景假设目前有一个需求,你需要在用户走完一串逻辑之后,对用户进行一个消息通知。方式可以是短信,微信,邮件,电话通知等等通知方式,那么应该怎么做?很多人的回答可能就

2020-05-13 10:13:24 342

原创 spring cloud脚手架项目(六)spring boot全局异常捕获处理

前言上一章我们说了全局的aop日志处理和追踪UUID日志打印。这一节讲的是全局的异常捕获。代码中再也不需要填入无数的try catch这种无效代码来进行异常捕获,去抛出,返回对应的Spring mvc结果。都可以通过这节的代码来解决参考博客:https://www.cnblogs.com/xuwujing/p/10933082.html代码BaseException 自定义异常public class BaseException extends RuntimeException { pri

2020-05-12 10:35:37 297

原创 spring cloud脚手架项目(五)日志模块之出入参数和日志链路追踪UUID

前言之前4篇已经构建完成了一个基本的spring boot项目。换在我之前工作的时候,就是一个标准的SSM的Web项目了,已经可以配合数据库做一个单机Web后端服务器使用了。接下来需要开发的就是日志模块了。参考博客:https://www.cnblogs.com/quanxiaoha/p/10789843.htmlhttps://blog.csdn.net/xubin320121/article/details/93857126代码自定义Aop注解ParamsLogimport java.l

2020-05-12 10:33:56 436

原创 spring cloud脚手架项目(四)mybaits+druid多数据+atomikos分布式事务

前言本篇是我的spring cloud脚手架项目的第四篇。上篇讲的是feign接口。我们的spring boot项目已经可以做一个最基本的接口返回和微服务提供了。本篇讲的是所有项目常用的数据库相关配置的接入参考博客:https://blog.csdn.net/u012702547/article/details/103029910https://blog.csdn.net/m0_37809146/article/details/86673372https://blog.csdn.net/ypp91

2020-05-11 20:38:55 386

原创 spring cloud脚手架项目(三)feign接口调用

前言在结束技术选择和模块化项目搭建之后。我们的spring boot项目就可以启动了。这时候就需要聊到微服务的一个重大作用,RPC调用文章参考:feign问题处理:http://www.imooc.com/article/289005如何调用feign:https://segmentfault.com/a/1190000012496398feignfeign接口调用是spring cloud下常用的RPC调用,自带Spring Cloud Ribbon 与 Spring Cloud Hystri

2020-05-11 15:47:45 425

原创 spring cloud脚手架项目(二)模块化项目搭建以及maven分环境打包部署

前言个人从17年毕业,算上实习等等经历,也是机缘巧合,对于从零开始搭建项目这件事情在每一家公司都经历过了。到今天为止,也算是有点心得。现在就讲一下我从零开始搭建一个微服务应用的理解。模块化搭建现在的应用项目,都是追求一个模块化的概念,恰巧idea这个写代码工具的项目管理也是模块化的,和现在的情况如出一辙,很利于项目的管理。我觉得也是lide流行的原因之一吧。还有一个不得不提的就是maven的,他对于项目的构建非常重要,我在大学写java项目的时候,还需要自己去网上把jar包下载下来,完全不知道mav

2020-05-10 11:41:27 548

mybatisGeneral.zip

mybatisGenerator例子项目,可以生成对应的mybatisGenerator文件。并且把byte切换为int,日期类统一使用jdk1.8的localdatatime,并且会获得数据表中注释的文件添加到对应DO类的注释中

2020-08-24

mysql5.7.rar

mysql docker 配置文件,用于docker启动mysql的相关配置

2019-05-28

tomcat7.0.85.rar

docker 有关的tomcat 配置文件,用于启动tomcat配置选项

2019-05-28

redis.conf

redis.conf文件,修改完毕,可以直接在docker配置下启动。详情参照我的博客https://blog.csdn.net/qq_33562996/article/details/80538022

2019-05-28

中国省市区数据库表,用于mysql

中国省市区数据库表,对于中国的所有省市区的信息的录入。信息来源于民政局。参照博客:https://blog.csdn.net/qq_33562996/article/details/87081334

2019-02-12

空空如也

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

TA关注的人

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