自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(100)
  • 收藏
  • 关注

原创 sql小技巧

sql小技巧之1:根据投票数实时排序sql小技巧之2:用EXPLAIN查看sql的执行计划sql小技巧之3:查看存储地址的后缀名

2019-07-06 11:09:31 169

原创 docker容器中安装mysql

文章概要获取mysql镜像 查看本地镜像列表 安装mysql镜像 查看运行的镜像 进入mysql容器获取mysql镜像docker pull mysql:5.7.27查看本地镜像列表docker images运行mysql镜像docker run -p 3306:3306 --name mysql \-v /usr/local/docker/mysql/conf:/etc/mysql \-v /usr/local/docker/mysql/logs:/var/lo

2020-12-12 22:56:26 243

原创 windows下docker容器安装

之前一直用VMware在windows环境下使用Linux,最近发现,VirtualBox+vagrant 组合,也是非常好用的。后面关于容器的操作,默认情况下就用这个组合了。本章主要内容:VirtualBox下docker安装安装Oracle VM VirtualBox 安装vagrant 安装centos7 安装docker安装Oracle VM VirtualBox百度VirtualBox,下载windows版本,安装时将默认安装位置修改掉,不要在系统盘。其他一路傻逼式下一步即可。

2020-12-12 22:50:55 528

原创 【spring系列】之17:spring aop工程流程

AOP:【动态代理】* 指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式;* * 1、导入aop模块;Spring AOP:(spring-aspects)* 2、定义一个业务逻辑类(MathCalculator);在业务逻辑运行的时候将日志进行打印(方法之前、方法运行结束、方法出现异常,xxx)* 3、定义一个日志切面类(LogAspects):切面类里面的方法需要动态感知MathCalculator.div运行到哪里然后执行;* 通知方法:* .

2020-10-20 12:05:29 284

原创 【spring系列】之16:spring启动流程

Spring容器的refresh()【创建刷新】;1、prepareRefresh()刷新前的预处理; 1)、initPropertySources()初始化一些属性设置;子类自定义个性化的属性设置方法; 2)、getEnvironment().validateRequiredProperties();检验属性的合法等 3)、earlyApplicationEvents= new LinkedHashSet<ApplicationEvent>();保存容器中的一些早期的...

2020-10-19 09:50:06 149

原创 idea agent

http://fls.jetbrains-agent.com

2020-05-27 09:47:12 1347

原创 使用vue-cli创建项目骨架

1.安装nodejs2.通过以下命令设置npm的国内淘宝镜像站npm install -gd express --registry=http://registry.npm.taobao.org或者npm config set registry http://registry.npm.taobao.org3.安装vue-clinpm install -g vue-cli通常,我们使用中国版的npm,即cnpm安装cnpmnpm install -g cnpm -.

2020-05-13 23:20:23 265

原创 新版本的apidoc提交参数格式

最新版的apidoc,新增了可选的参数格式,但是通常我们对外提供的接口,都是json格式提交,但apidoc提供的json格式,是要自己手写的,这样测试起来难免太繁琐,那我们怎么去掉默认的,直接用form表单提交json格式的数据呢?很简单:C:\Users\admin\AppData\Roaming\npm\node_modules\apidoc\template\utils路...

2020-04-02 11:36:11 1927 1

原创 一招教你搞定springboot与springcloud的版本对应关系

现在很多公司,都选择使用springcloud作为微服务开发框架,但是由于springboot和springcloud的版本命名方式差异较大,经常在选择springcloud对应的springboot版本,让我们绞尽脑汁,很多时候可能还要花大量的时间去验证。今天,我来教你一个简单的方式,5分钟之内,绝对让你搞清他们的对应关系。按照下面几个步骤,就可以见证奇迹。1.在线访...

2020-03-06 21:51:48 11269 1

原创 zookeeper系列3::Zab一致性协议

最近面试过程中被问及zk的一致性协议,之前虽然在各种博客上看过,但没有深入脑子中,面试过程答的不是很好。今天抽空整理一下。我们将围绕一下几个问题来展开学习:什么是Zab协议? Zab协议有什么用? Zab协议的实现原理是什么? Zab协议中的核心是什么? Zab有哪些模式? Zab是如何保证数据一致性的? Zab的数据时如何同步的? Zab的选主过程是怎么样的?1.什...

2019-12-25 13:32:57 331

原创 线上故障排查之线上系统CPU负载过高排查

通常这个需要结合Linux命令和LDK的工具一起使用来排查。1.先用top命令找出CPU占比最高的程序2.使用ps -ef或者jps进一步定位,得知是一个怎么样的一个后台程序造成CPU负载过高3.定位到具体线程或者代码 3.1 ps -mp 进程号 -o THREAD,tid,time上图中定位到线程5102cpu占用率较高。因此知道线程id为5102命令参数解析:...

2019-12-23 21:33:57 1132

原创 线上故障排查之应用系统反应变慢

目录TOP命令vmstat命令free命令df命令iostat命令ifstat命令应用系统变慢,可能有多个原因,一般我们用以下几个命令来排查原因:整体情况 top cpu vmstat 内存 free 硬盘 df 磁盘IO iostat 网络IO ifstatTOP命令通常我们会先用top命令看一下整机的情况:通常我们看三个参数值: %...

2019-12-23 21:15:45 846

原创 Java虚拟机OOM之Metaspace

Java8及以后的版本使用Metaspace来替代永久代。Metaspace是方法区在HotSpot中的实现,它与持久代最大的区别在于:Metaspace并不在虚拟机内存中而是使用本地内存。也即在java8中,class metadata,被存储在叫作Metaspace的native memory中。永久代(java8后被原空间Metaspace取代了)存放了以下信息:虚拟机加载的...

2019-12-22 21:54:12 1540

原创 Java虚拟机OOM之unable to create new native thread

高并发请求服务器时,经常出现如下异常:java.lang.OutOfMemoryError:unable to create new native thread.准确的讲,该native thread错误与对应的平台有关。导致原因:你的应用创建了太多的线程,一个应用进程创建多个线程,超过系统承载极限 你的服务器并不允许你的应用程序创建这么多线程,linux系统默认允许单个进程可以创建...

2019-12-22 21:33:03 1761 1

原创 Java虚拟机OOM之GC Direct buffer memory

故障现象:java.lang.OutOfMemoryError:Direct buffer memory导致原因:写NIO程序经常使用ByteBuffer来读取或者写入数据,这是一种基于通道(Channel)与缓冲区(Buffer)的I/O方式。它可以使用native函数库直接分配堆外内存,然后通过一个存储在Java堆里面的DirectByteBuffer对象作为这块内存的引用进行...

2019-12-22 20:52:11 510

原创 Java虚拟机OOM之GC overhead limit exceeded

GC回收时间过长时会抛出OutOfMemoryError。过长的定义是:超过98%的时间用来做GC并且回收了不到2%的堆内存。连续多次GC都只回收了不到2%的极端情况下才会抛出。假如不抛出GC overhead limit错误会发生什么情况呢?那就是GC清理的这么点内存很快会再次填满,迫使GC再次执行,这样就会形成恶性循环,CPU使用率一直是100%,而GC却没有任何成果示例代码:...

2019-12-22 19:16:21 462

原创 Java虚拟机OOM之Java heap space

堆内存不足以分配对象时发生该错误。示例代码:public class JavaHeapSpaceDemo { public static void main(String[] args) { byte[] heap = new byte[50 * 1024 * 1024]; }}因为本机内存较大,手动设置堆内存大小为1M-Xms1M -X...

2019-12-22 18:01:22 441

原创 Java虚拟机OOM之StackOverflowError

示例代码:public class StackOverFlowErrorDemo { public static void main(String[] args) { stackOverflowError(); } private static void stackOverflowError() { stackOverflowErr...

2019-12-22 17:47:07 194

原创 排序算法之插入排序

介绍插入排序【Insertion Sorting】的基本思想是:把n个待排序的元素看成一个有序序列和无序序列,开始时有序序列中只有一个元素,无序序列中包含n-1个元素。排序过程中,每次从无序序列中取出第一个元素,把它与有序序列中的元素进行比较,将它插入到有序序列表中的适当位置,使之成为新的有序序列。示意图如下:代码 //插入排序 public static vo...

2019-12-21 12:56:35 108

原创 排序算法之选择排序

介绍选择排序【selectSort】的基本思想是:从待排序的序列中,按照指定的规则,选择某一个元素,再按照规定交换位置后达到排序的目的。例如,排序一个数组长度为n的arry[],第一次从array[0]--array[n-1]中选择最小值,与array[0]交换。第二次从array[1]--array[n-1]中选择最小值,与array[1]交换。。。。。第n-1次从arr...

2019-12-21 12:28:05 158

原创 排序算法之冒泡排序

介绍冒泡排序【Bubble sorting】的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前向后移动,就像水底的气泡一样逐渐向上冒。冒泡排序属于交换排序分类。优化因为排序过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,说明序列已有序,因此要在排序过程中设置一个标志flag,用来判断元素是...

2019-12-21 12:07:32 93

原创 排序算法概述

目录介绍排序分类介绍排序是将一组数据,按照指定的顺序进行排序的过程。排序分类排序分为两类内部排序 外部排序内部排序:需要将待处理的数据都加载到内存中进行排序。外部排序:一般是数据量过大,无法全部加载到内存中,需要借助外部存储才能进行的排序。常见的排序算法分类以及时间复杂度,空间复杂度如下图(网上找的图):...

2019-12-21 11:52:11 102

原创 设计模式之:策略模式

策略模式,一般用来对某个功能根据不同的策略做不同的响应,实现过程很也简单。将行为定义为策略接口,然后根据实际需要,我们去实现不同的具体策略。然后通过在抽象类中持有策略行为的接口,子类在继承抽象类时,默认提供一种策略。如果需要修改策略,只需要调用抽象类的设置策略方法即可。举个栗子:现在有一个教学行为策略的接口,TeachStrategy。它有两个具体的实现:教数学 M...

2019-12-20 17:34:47 129

原创 设计模式之:观察者模式

观察者模式通常用作一对多的通知,即多个观察者监听一个消息事件。通常,我们可以在消息事件的主体中维护一个观察者列表。在事件发生时,遍历自身维护的列表,将消息发布出去。public interface Subject { //注册新的观察者 public boolean registerObserver(StudentObserver so); //移除现有的某个...

2019-12-20 14:28:55 91 1

原创 rabbitMQ二之工作模式

目录1.工具类抽取2.简单队列2.1消息生产者2.2消息消费者2.2.1客户端自动应答2.2.2客户端手动应答3.工作队列3.1消息生产者3.2消息消费者4.发布订阅4.1消息生产者4.2消息消费者5.路由5.1消息生产者5.2消息消费者6.话题6.1消息生产者6.2消息消费者7.RPC8.发布者确认8.1事务机制...

2019-12-14 00:20:55 196

原创 自定义springboot-starter

目录源码分析spring.factoriesRedisAutoConfiguration启动器模块自动配置模块springboot的使用是如此的方便,引入一个响应的starter加上少许的配置,就能使用响应的功能了,那这些starter都是怎么实现的呢?不会写没有关系,但是作为程序员,我们要会复制粘贴。源码分析spring.factories在spring-...

2019-12-11 23:03:28 173

原创 zookeeper系列2:centos7下三节点集群安装

zookeeper的集群安装很简单,只需要在单台机器上安装好一台,然后拷贝至其他两台机器即可。一:下载并解压安装包在apache官网下载最新的zookeeper二进制包apache-zookeeper-3.5.6-bin.tar.gz将其解压在自己指定的安装目录下,我指定的目录如下:/usr/local/zookeeper二:修改配置文件解压以后,进入到conf目录()...

2019-12-04 21:45:39 195

原创 分布式定时任务之3:elasticjob状态一直是分片待调整

有时候看elasticjob控制台,发现有的定时任务状态时【分片待调整】,之前一直没有关心这个问题,以为等一会就好了。结果今天测试发现,等了半天也没有解决。影响测试小妹妹的心情了,之前以为是bug,后来发现一个共性,就是很久还没有正常的任务,启动后距离第一次执行的时间都非常久,感觉应该是这个问题,ok,手动修改执行时间,让他先跑一个试试,结果真的就ok了。...

2019-08-19 17:56:44 5468 1

原创 并发编程6:并发编程知识图谱,看完就知道该怎么学习并发编程了。

并发编程在面试中是经常被问到的考点。我在面试的时候经常发现,很多人想系统的学习一下并发编程的体系,但是不知道从何处开始,看书又有点乏味。故今天参照一下网上和书籍资料,对并发编程设计的内容,做一个简单的整理。方面后面按照体现章节的顺序,一点一点的学习并发编程。基础知识并发编程优缺点1.为什么用到并发编程?充分利用多核CPU的运算能力,方便业务拆分。2.并发编程的缺点有...

2019-07-24 17:33:59 1707

原创 zookeeper系列1:单机版安装

在用dubbo做开发的时候,一般都选用zookeeper作为服务注册中心。开发过程中,一般运维同事都会在公司的开发或者测试服务器上部署一个zk集群供大家开发测试用。但有时候,网络不同或者不在公司的局域网内时,会导致连不上zk,这样开发就会比较麻烦。我一般的做法,是在自己本地,搭建一个单机版的zk,在本地进行开发测试,等到需要时候,再将zk的地址切换到公司的zk上。下面简单说一下zk的单节点...

2019-07-13 12:15:47 180

原创 springCloudAlibaba1:配置中心

阿里版的springCloud没有使用config作为配置中心,而是采用了阿里自研的nacos作为配置中心注册和注册中心。nacos官网地址:https://nacos.io/zh-cn/docs/quick-start.html我们现在本地安装一个单机版的预热一下。windows版本安裝:1.现在最新的发布压缩包 nacos-server-1.10。顺便说下,nacos现...

2019-07-06 12:15:57 250

原创 mybatis源码阅读之9:批量插入数据

上一篇mybatis源码阅读之8:获取sqlSessionFactory对象在做项目的工程中,遇到过各种mybatis批量插入数据的需求。在各种水平的架构师提供的框架封装中,也出现了好几种对批量处理的不同封装。根据我看过的代码,大致可以分三种情况。第一种:代码级别循环调用同一个mapper的add/save操作。 @Autowired private EnterTypeMap...

2019-07-06 11:40:05 451

原创 博客章节汇总

Mybaits篇mybatis源码阅读之1:框架概述mybatis源码阅读之2:mybatis执行流程mybatis源码阅读之3:mybatis配置文件详解mybatis源码阅读之4:mybatis增删改查注意点mybatis源码阅读之5:mybatis底层参数封装过程mybatis源码阅读之6:mybatis缓存mybatis源码阅读之7:mybatis源码执行流程...

2019-07-06 10:49:01 130

原创 像点样的分布式/微服务系统需要具备的功能

现在不管是什么项目,介绍的时候,不带点SOA,微服务,分布式,集群这样的名词,都不好意思开口。那今天就正经点的说说这样的服务中,一般要具备哪些要素,以及具体的实现有哪些。今天就介绍工作中常用的三种:dubbo,springcloud,spingcloudalibaba。后期要是有空,会看下蚂蚁金服的sofa-rpc框架。dubbo:一种是阿里在维护的版本,另一种是apache在维护的版...

2019-06-23 12:52:15 313

原创 Skywalking6.1.0试水

今天看了下apache官网,skywalking已经正式从Apache毕业了,最新版本是6.1.0。今天就来看看最新版本的搭建和监控界面。具体的代码就以我本地的sample系统在window环境为例。整个流程如下:1.下载skywalking包 2.配置skywalking 3.配置agent 4.编写启动脚本 5.启动服务并查看界面1.下载skywalking压缩...

2019-06-12 17:05:00 3403 2

原创 sql小技巧之3:查看存储地址的后缀名

今天遇到了要查询数据库中保存在7牛云中的文件地址的后缀名,看产品居然在用肉眼一个一个数,几万条记录,想一下SQL应该一下就搞定了,试了一会,真的很快就搞定了。记录一下sql,以备后面还要使用。SELECT DISTINCT RIGHT ( RTRIM(VIDEO_URL), LOCATE( '.', R...

2019-06-04 19:42:43 219

转载 并发编程5:java内存模型以及happens-before

多线程的出现,就导致了线程安全问题的问世。出现线程安全问题一般是由两方面造成的:主内存和工作内存数据不一致 重排序既然由这两方面造成的,那就看看这两个东西到底是什么鬼吧。主内存和工作内存数据不一致java内存模型是共享内存的并发模型,线程之间主要通过读-写共享变量来完成隐式通信。1.哪些是共享变量在java程序中所有实例域,静态域和数组元素都是放在堆内存中(所有线程均可...

2019-03-13 18:28:30 149

原创 Java虚拟机5:jvm常见参数介绍

我们用IDEA开发的时候,配置不高的情况下经常会卡顿,这时候估计大家常有的做法,就是百度,参照网上,修改IDEA一系列的配置参数。那JVM中都有哪些常见参数呢?下面就来数一数,二四六七八。常用参数堆中各区大小分配:-Xms:初始堆大小-Xmx:最大堆大小-XX:NewSize=n:设置年轻代大小-XX:NewRatio=n:设置年轻代和年老代的比值。如:n=3,表示年轻代与...

2019-03-10 21:56:46 382

原创 Java虚拟机4:jvm优化(JDK自带的工具介绍)

上图是JDK安装目录下的文件列表,这个列表中,一般的同学,应该只用过java和javac这两个命令。今天我们要说的jvm优化,不是第三方的工具,就是JDK这么目录里自带的命令工具。1.jps打印HotSpot VM进程(不要和linux的ps混淆,ps是linux系统的所有在运行进程)。可以查看VMID,JVM参数,main()函数参数,主类名/Jar路径。2.jsta...

2019-03-09 23:20:56 664

原创 Java虚拟机3:jvm垃圾收集器

jvm中的垃圾收集器分为两种:ScavengeGC(次收集) Full GC(全收集)ScavengeGC(次收集)和Full GC(全收集)的区别是什么?新生代GC(ScavengeGC):指发生在新生代的GC,因为新生代的java对象大多都是生命周期较短,所以次收集非常频繁,一般回收速度也比较快,当Eden空间不足以为对象分配内存时,就会触发Scavenge GC。...

2019-03-07 22:21:52 205

空空如也

空空如也

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

TA关注的人

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