自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (6)
  • 问答 (1)
  • 收藏
  • 关注

原创 阿里云Redis百万千万读写慢排查实战

阿里云Redis百万千万读写慢排查实战,20万数据 100M,单条平均大小100K写入redis花费6-8分钟,计算一下NetWork有多少,公式2:100 *1024 KB/360S=284KB/S,发现只有这么点,验证实际是否这样,通过Prometheus+Grafana监控导入dashboard插件 redis和redis time streaming

2023-03-21 19:18:55 625

原创 mysql 的ACID底层原理

A(atomicity):原子性 C(consistency)[kənˈsɪstənsi] :一致性 I(isolation) [ˌaɪsəˈleɪʃn]:隔离性 D(durability)[dərəˈbɪlɪti]:持久性

2021-05-30 22:13:05 230

原创 后端服务接口幂等总结

什么是接口幂等?相信大家做后端开发的话都听过这个词语,可能刚毕业从事工作和对设计接口不太关注的猿友不太了解,是的,博主刚必会那会也不太清楚朦朦胧胧的好像听说过这个装逼的名称,咳咳扯的有点多了,直接进入主题什么是接口幂等?就是你提供的一个API网关接口对正确的请求参数无论请求多少次返回的接口都是一样的,说到这里大家是不是想到了查询,没错查询接口就是天经地义的幂等接口。那么我们的非查询类接口也要做...

2019-04-30 16:46:22 698

原创 redis缓存击穿、穿透、热点key、雪崩方案总结

缓存击穿首先,在将缓存击穿前,大家先来回忆下自己写缓存的方案,这里我简单画了下流程图:当我们缓存key设置过期时间,恰巧在这一刻这个key在某一刻被高并发的访问,把所有的请求都打到了DB中这就可能会导致DB挂了。这个跟后面说的缓存雪崩非常相似,这个和缓存雪崩的区别在于这里针对某一key缓存,但是雪崩则指的是多个key,要解决方案有很多,比如让一个线程构建缓存,另外线程等待知道构建好,或...

2018-10-29 10:10:57 2823

原创 如何用spring写自己的处理器,如下划线转驼峰处理器

前言今天说下如何用Spring写自己的一个参数处理器,相信大家在开发接口的时候都会遇到前端传递的参数是下划线的,但是我们后端的规范确是用驼峰格式的,那么这就需要一个参数绑定了,如果大家用过了这个jersey+ws(javax.ws.core)框架的开发restful接口,那么这就不需要自己去实现这个功能了,但是你如果是spring boot/mvc的话就没用这个功能了,spring暂时不支持参数绑...

2018-07-10 10:54:22 6564 1

原创 javax框架之@Valid对象嵌套的效验

在开发过程中大家肯定都会校验前端传递参数,比如是否为空,长度等等今天就在这里对java bean的参数校验做一个深入的使用,相信如果服务端提供的接口请求类型Content-type如果是json的接口,就会存在一个复杂json的一个校验问题,下面举一个例子:{ "name":"测试活动123", "phone":"123", "address":{        "pro.

2018-07-05 18:30:38 11093 1

原创 spring aop+自定义注解+反射实现统一校验脚手架

前言最近刚到新公司接收项目,发现这里校验参数的没有做,纯硬编码的起判参数的值,想想自己都没怎么写博客,索性今天就来写一个校验框架都脚手架处理这类问题,主要是拓展spring-context都validate和javax.validation(不能分组校验),其实用javax也可以实现我这次写的内容,但是会不通用,对于每个业务校验都需要生成一个类,可能大家看到这里可能还不太懂请大家耐心往下面看,请恕...

2018-05-24 15:04:33 973

原创 Redis渐进式rehash过程图

1、准备rehash这时候是ga

2021-06-14 17:10:30 489

原创 iterm2如何像windows高逼格连接ssh服务器

前言相信刚刚接触macos系统的同学来说,不知道如何像windows里的xshell、secureCRT等连接服务器,今天讲的是在MAC OS系统如何高逼格连接服务器1、iterm2如何连接ssh服务器1.1 如果默认使用root,默认22端口,ssh 127.0.0.1,这时会弹出密码,输入密码即可1.2如果使用其他用户,非默认端口,ssh [email protected] 8080,这时会弹出密码,输入密码即可2、如何设置别名方式连接,也是今天要说的高逼格2.1 首先说一下为什么需要

2020-09-18 11:27:34 1167

原创 idea recent 项目名重复解决方案

前言现在使用idea作为开发工具已经是普遍了,不知道各位使用这么久知道idea如何打开最近访问过的文件吗,今天要告诉大家的是如何打开最近访问项目和同一个项目名称不同分支打开最近访问项目名重复的解决方案idea如何打开最近访问项目列表非常简单:File -> Open Recent项目名称相同不同分支显示重复,如何解决相信大家用过open recent都知道挺好用不用每次...

2019-10-11 16:03:13 1752

原创 mysql innodb行锁、表锁、意向锁

今天讲一下mysql的数据库引擎中的InnoDb下的行锁、表锁、意向锁等行锁mysql的行锁是通过索引加载的,即是行锁是加在索引响应的行上的,要是对应的SQL语句没有走索引,则会全表扫描行锁类型共享锁 和 排它锁共享锁(S锁)也叫读锁。当一个事务对某几行上读锁时,允许其他事务对这几行进行读操作,但不允许其进行写操作,也不允许其他事务给这几行上排它锁,但允许上读锁。 S...

2019-09-06 14:36:56 1717

原创 @Async注解导致循环依赖

异常信息Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'XXXAServiceImpl': Unsatisfied dependency expressed through field 'XXXXExecutor'; neste...

2019-08-29 15:33:02 3825

原创 mysql json类型查询对象和数组等格式

前沿 and 背景mysql5.7之后就推出了一种json类型的数据结构,其实json我们在很多场景下都会用到,因为json是数据格式是可变性的,比如用户拓展信息就可以方到json里面,因为个人和企业保存的字段可能会不同如营业执照、经营场所等。废话有点多开始主题,大家在后端开发的时候相信查询json格式比较多,像插入和更新不需要json相关函数的直接组装好json字符串操作就好了,本章主要讲解...

2019-07-25 10:54:40 5908

原创 idea性能优化整理

一、idea性能优化1、修改idea.vmoptions文件,操作:打开idea菜单help下面edit custom vm optionsidea.vmoptions文件配置如下:-server-Xms1024m-Xmx2048m-XX:ReservedCodeCacheSize=480m-XX:+UseConcMarkSweepGC-XX:SoftRefLRUPoli...

2019-05-28 15:12:52 1885

原创 mybatis插入insert useGeneratedKeys返回主键事务支持

继上次分享的mybatis插入insert返回注解id后今天和大家分享一个大家遇到的一个小问题,就是mybatis执行insert返回主键id时,当在service层的某个方法添加事务时会发现主键是返回不了的,如果是这种情况的话请耐心看下去。ok,还是继续上次使用useGeneratedKeys这种方式吧,说下这是最佳的一种,以下相信大家不会陌生吧<insert id="insert" pa...

2018-07-03 20:23:57 9910

原创 Mybatis操作mysql5.7中json类型乱码

mysql版本为5.7,mysql客户端查询json格式的数据是正常显示,但是通过项目中mybatis读取的时候缺乱码。 读取其他字段都是正常的,只有json格式的是乱码,也没有特殊设置json格式的字符集。追踪源码发现是mysql-connector-java 这个驱动jar包的版本过低,暂时不支持json类型,只需要把mysql-connector-java版本升级到5.1.40即可...

2018-04-27 10:38:49 3311

原创 mybatis插入返回自增主键

昨天下班到家以后收到一朋友问我一个问题:mysql中设置的是自增主键,然后在Mybatis执行insert语句后如何返回自增主键值,我说明天我到公司后写一篇博客给你Mybatis官网是这样说的:First, if your database supports auto-generated key fields (e.g. MySQL and SQL Server), then you can si...

2018-04-12 10:02:24 465

转载 Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean.

在 Intellij Idea 15 中使用maven时,所有 scope 为 provided 的依赖都是不会被加入到 classpath 中的,目前该bug尚未被修复(bug report)。如果你的web应用是部署到容器中的,那么这个bug不会影响使用,因为web应用中provided的依赖在容器运行时会被提供。如果你做Spring Boot开发,有带provided的依赖时,直接在IDE中...

2018-04-11 08:54:26 371

原创 mac下安装git后提示安装xcode

背景:mac系统下安装git成功后,还要提示安装xcode,原因是mac系统区别于windows等系统,xcode是mac开发的基础必要软件。我安装完git后,检查下git版本,提示1如下:$ git versionxcode-select: note: no developer tools were found at '/Applications/Xcode.app', req

2017-08-29 16:03:51 27918

转载 Windows下Git多账号配置,同一电脑多个ssh-key的管理

这一篇文章是对上一篇文章《Git-TortoiseGit完整配置流程》的拓展,所以需要对上一篇文章有所了解,当然直接往下看也可以,其中也有一些提到一些基础的操作。《Git-TortoiseGit完整配置流程》:http://www.cnblogs.com/popfisher/p/5466174.html。本文以配置github.com账号和git.oschina.net账号来逐步演

2017-08-29 15:35:30 408

原创 rabmitmq整合spring

之前讲了rabmitmq的控制台的相关配置,这些配置是再开发前必要的。下面讲讲真货,怎么运用到项目中1、首先创建连接池class="org.springframework.amqp.rabbit.connection.CachingConnectionFactory">2、创建rabbitTemplate 消息模板类

2017-07-31 18:07:41 378

原创 mysql服务端安装错误3534

window下zip方式安装mysql1、window下安装mysql后启动报错2、原因是my-default.ini配置文件不存在,需要配置文件在重启。3、如果还是不行使用命令:重新初始化即可。

2017-06-27 17:12:05 625

转载 线程池ThreadPoolExecutor详解

工作中多处接触到了ThreadPoolExecutor。趁着现在还算空,学习总结一下。 前记: jdk官方文档(javadoc)是学习的最好,最权威的参考。文章分上中下。上篇中主要介绍ThreadPoolExecutor接受任务相关的两方面入参的意义和区别,池大小参数corePoolSize和maximumPoolSize,BlockingQueue选型(Synch

2017-06-20 17:40:51 291

转载 八种架构设计模式及其优缺点概述(中)

1. 查询分离模式        这种模式主要解决单机数据库压力过大,从而导致业务缓慢甚至超时,查询响应时间变长的问题,也包括需要大量数据库服务器计算资源的查询请求。这个可以说是单库单应用模式的升级版本,也是技术架构迭代演进过程中的必经之路。        这种模式的一般设计见下图:        如上图所示,这种模式较单库单应用模式与内容分发模式多了几

2017-03-31 16:57:36 1204

转载 JVM堆栈入门

JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method)堆区:1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身栈区:1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不

2017-03-31 16:29:20 406

转载 sql性能调优

数据库的优化问题一、问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。系统优化中一个很重要的方面就是SQL语句的优 化。对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达

2017-03-31 16:27:18 324

转载 java面试讨论

第一阶段:三年我认为三年对于程序员来说是第一个门槛,这个阶段将会淘汰掉一批不适合写代码的人。这一阶段,我们走出校园,迈入社会,成为一名程序员,正式从书本 上的内容迈向真正的企业级开发。我们知道如何团队协作、如何使用项目管理工具、项目版本如何控制、我们写的代码如何测试如何在线上运行等等,积累了一定的 开发经验,也对代码有了一定深入的认识,是一个比较纯粹的Coder的阶段。第二阶段:五

2017-03-16 14:25:38 281

原创 Spring amqp rabbmit入门详解

前言:mq这东西网上的资料真是少啊,有的话也是全英文的,这两天我也一直在埋头钻研,也是个刚刚入门的菜鸟级别的。今天就跟大家分享下我这几天掌握的东西。1、安装rabbmitmq的安装配置,这个网上有一大堆,跳过自行补脑吧。2、mq这个东西里面有几个概念大家要搞清楚的,queue、exchange、routing key 、binding key、exchange type。3、 qu

2016-10-11 16:45:48 925

原创 dubbo配置文件报错

1、起因明明配置文件的语法等都没有问题,却会出现红叉叉,虽说这样也不影响程序的。但是对于一些有强迫症的程序员来说,这就很尴尬了,看着心里也不舒服。相信大家学过spring的都应该知道是不存在相关xsd的文件导致的,现在不知道的看了这篇文章也知道了。最后这句dubbo.xsd文件找不到所以才会报红叉叉。2、解决首先下载dubbo.xsd文件把dubbo.xsd文件配置到Ecl

2016-09-10 10:09:05 327

转载 Eclipse查看Jar包乱码

今天想看看公司jar源码的注释,但是打开后是乱码,所以就设置了一下:步骤1、在eclipse菜单栏中,Window–>Preferences–>General–>Content types将JAR Content , Java Class File 的Default encoding都设置为你要的编码。步骤2、光设置上面的还不行,还需要再设置Workspace的编码

2016-08-25 10:46:44 495

原创 maven脚本打包

今天感觉无聊就写了一个批处理bat的maven打包工具,针对的是分布式微服务哪种项目,可以根据输入的项目名称进行打包,有需要的兄弟拿去用吧。现在附上代码:echo off    echo 输入打包项目名称,请提前配置好打包项目路径  set /p project=     echo 您输入了项目名称为:%project%    echo 请检查输入的项目名称

2016-08-25 09:38:59 1493

原创 Eclipse配置Git

一、唠叨原来一直是用GIT的小乌龟进行pull、push、clone等操作,感觉特别的不方便,今天就抽空的去弄了下Eclipse的集成的GIT了,今天讲的是Eclipse的SSH key的配置,https比较简单就不说了,自行补脑吧。现在跟大家分享下,希望可以帮到看到我博客的码农们,哈哈。废话不多说,直接进入主题了。二、直入主题2.1、安装GIT,这里就不说了,一直Next就ok了,请

2016-08-02 15:14:09 328

原创 Eclipse安装反编译插件

前言:最近也是在研究Eclipse的反编译插件,为了在Eclipse打开class文件时,又要去找到jar包,把jar拉到本地的jd-gui反编译工具。这繁琐的动作,现在和大家分享下,在Eclipse装JadClipse插件。安装步骤:1、下载Eclipse所需插件工具,包括jad.exe、net.sf.jadclipse_3.3.0.jar。下载地址:http://download.

2016-06-03 11:48:31 452

原创 Windows下安装RabbitMQ

1、介绍RabbitMQ 是信息传输的中间者,用于各个服务器的异步进行消息转发、缓冲、和持久化。即:生产者Producer推送内容到消费者Coustomer。2、下载下载 rabbitMQ之前,我们需要下载erlang,原因是RabbitMQ的需要在erlang平台运行。erlang下载:http://erlang.org/download/otp_win64_

2016-04-29 10:42:16 522

转载 windows下安装redis

1、redis简介redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hashs(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis

2016-04-12 10:46:17 291

转载 多线程跑批

Excel文件中的记录比较多的话,要考虑使用多线程。可以考虑使用多线程设计模式中的Producer-Consumer模式。 首先,专门开辟一个线程(一个够用,多了无益,以下称之为Reader线程),该线程负责读取Excel文件中的记录。比如使用第三方工具POI,此时读取到的Excel记录是一个Java对象。该线程每次读取到记录都将其存入队列(如ArrayBlockingQueue)。它仅负责读取记

2016-03-31 14:16:19 2862

原创 多线程原理

线程在一定条件下,状态会发生变化。线程变化的状态转换图如下:1、新建状态(New):新创建了一个线程对象。2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。3、运行状态(Running):就绪状态的线程获取了CPU,执行程序代码。4、阻塞状态(B

2016-03-31 10:56:06 332

原创 面试之同步异步

笔者也是菜菜的满打满算也是3年的WEB开发经验,现在在的这家公司基本没用到什么牛逼的技术,什么东西也没学到,就想着下家公司要找一些技术设计面广,互联网这方便的行业。昨天去一家物联网的公司,被问到,你们的webservice数据通信是异步还是同步?对于一些对webservice掌握度不是很熟练的来说道说道,本鸟菜,请大神不要碰我。我也是先举了一个例子:有一天,我正在开发一个功能中,一位同事过

2016-03-23 13:17:25 594

转载 MyBatis自动生成代码

这两天需要用到MyBatis的代码自动生成的功能,由于MyBatis属于一种半自动的ORM框架,所以主要的工作就是配置Mapping映射文件,但是由于手写映射文件很容易出错,所以可利用MyBatis生成器自动生成实体类、DAO接口和Mapping映射文件。这样可以省去很多的功夫,将生成的代码copy到项目工程中即可。           使用自动生成有很多方式,可以在eclipse中安装插

2016-03-23 11:15:53 440

转载 面试之springmvc工作原理

SpringMvc工作流程描述      1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获;      2. DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Hand

2016-03-23 11:00:53 13651

charles V4.0.2破解版zip.zip

charles V4.0.2破解版.zip,可以抓各种接口,http、https等

2019-09-18

信息系统密码应用基本要求使用

信息系统密码应用基本要求使用,用于系统的安全技术解析过程

2018-11-30

spring aop+自定义注解+反射实现统一校验脚手架

初始化工程,支持基本数据格式校验 mark 2018.5.21 一口气写完的,还没有怎么测试,先提交上来再说 remark:最近刚到新公司接收项目,发现这里校验参数的没有做,纯硬编码的起判参数的值,主要是为了处理前端传的参数和后端字典的匹配 现在匆匆的实现了这个功能,后期有空会做更多的处理 未完待续....2018.5.21 2018.5.22 1、添加分组校验 2、修改校验值合法时必须传参标示问题,现在可以不传 3、错误描述添加统一配置 工程介绍:SpringBoot项目脚手架,利用spring aop+java反射实现自定义注解校验参数 源码里有使用都例子在DemoContorller example1:校验userName参数必填 @CheckParams(notNull = true) private String userName; example2:校验age参数为数值 @CheckParams(numeric = true) private String age; example3:校验phone参数非空、最小长度为1、最大长度为11 @CheckParams(notNull = true,minLen = 1,maxLen = 11) private String phone; example4:校验userType参数合法性,值在UserTypeEnum枚举中 @CheckParams(enumsValue= UserTypeEnum.class) private String userType;//主要是完成这个功能 example5:此例子是用于保存接口不用传递id参数,但是修改接口需要传id,此处用分组校验来实现, 下面的意思是:分组为UserParam的id不能为空 @CheckParams(notNull = true,groups=UserParam.class) private String id;

2018-05-24

maven脚本打包

这是自己写的一个maven批处理打包脚本,层级目录需要先配置好,这个打包针对的是分布式的项目,如果项目名字结构不同,需要自行修改,希望大家哪去有用。

2016-08-25

Eclipse反编译插件JadClipse

Eclipse反编译插件JadClipse,包含所有内容。

2016-06-03

支持jdk8版本dubbo-admin

如果是在JDK8下跑,会报错: org.springframework.beans.NotWritablePropertyException: Invalid property 'URIType' of bean class [com.alibaba.citrus.service.uribroker.uri.GenericURIBroker]: Bean property 'URIType' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter? 这个问题我也在网上找了很久也没有好的解决方案,最后还是自己看源码看出问题,现在奉献出来。支持jdk8版本dubbo-admin,直接压缩放到tomcat下

2016-05-26

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

TA关注的人

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