自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM学习笔记系列--垃圾回收算法

对象存活判断算法垃圾收集器在进行对象回收之前,必须判断哪些对象是可回收的,这就引出了对象存活判定算法。引用计数法 主流的虚拟机都没有选用引用计数器算法来管理内存,最主要的原因就是它很难解决对象之间相互循环引用的问题。可达性分析算法 算法的基本思路是通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的。可...

2020-09-08 11:13:27 195

原创 JVM学习笔记系列--java内存区域划分

Java运行时数据区域分为程序计数器、虚拟机栈、本地方法栈、堆、方法区(运行时常量池在方法区内)1.程序计数器线程私有,是唯一一个在java虚拟机中没有规定OutOfMemoryError(OOM)情况的区域2.虚拟机栈线程私有,生命周期与线程相同,为虚拟机执行java方法(也就是字节码)服务。如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError异常;虚拟机可以动态扩展,但如果扩展时无法申请到足够的内存,将抛出OOM异常3.本地方法栈线程私有,为虚拟

2020-09-06 17:15:18 193

原创 20200902面试过程中碰到的面试题

一.什么时候索引会失效1.联合索引使用的时候没有用到左列字段2.使用了or,但是字段没有都加上索引,会导致加了索引的字段也不会被索引3.like通配符在最左边,如like "%aa"4.在索引上使用了函数,!=(或<>),not in等5.如果where后面已经使用了索引,那么order by中的列是不会使用的6.类型的隐式转换,如索引是字符串,但是使用的时候没有加引号二.MySQL事务的隔离级别脏读:A事务处理过程中读取了B事务未提交的数据不可重复读:一个事

2020-09-02 21:34:31 244

原创 JUC并发编程工具包之Semaphore的使用

我们在工作中,通常会遇这样的问题,即因为大量的数据突然在某个时间里进入系统,造成数据库压力过大。对于这种问题,我们可以使用诸如MQ等中间件的方式来进行l流量削峰,除此之外,还有什么办法呢?首先我们可以想到锁,即在处理这些请求的方法上加上一个锁(比如synchronized关键字),让程序慢慢的一个一个处理,这样就不会造成数据库压力过大了。但是这样的话,处理的也太慢了吧。比如有10000个请求,即便这段处理程序1ms就完成,到最后一个请求处理完都过去10s了。那么有没有方法,让程序不是一个一个处理但是还是

2020-08-31 10:58:01 140

原创 一步步的利用设计模式优化存在大量if-else语句的代码

一般情况下,我们在写代码的时候,会根据传入的不同参数选择不同的处理方式,比如这样public String eatLunch(String week) { String food = null; if ("Monday".equals(week)) { food = "肯德基"; } else if ("Tuesday".equals(week)) { food = "麦当劳"; } els

2020-08-27 18:23:59 1391 1

原创 在SpringBoot项目中使用JPA实现简单的数据库操作

集成准备首先确定使用SpringData Jpa,那么集成工作如下1. pom文件引入依赖<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.3.RELEASE</version> <rela

2020-07-28 10:02:11 491

原创 记录一个用Date类型接收数据库timestamp值所引发的问题

因为业务原因,同事做了一个判断当前时间和数据库表中某一行数据创建时间的比较,当创建时间和当前时间相比超过5分钟的时候就执行下一步操作,具体比较代码如下 private boolean getDatePoor(Date start, Date end, long time) { boolean flag = false; long diff = end.getTime() - start.getTime(); long sec = diff / 10

2020-07-20 16:27:26 2416

原创 使用工具(Postman)能调通但使用代码调不通的问题分析及解决方法

问题描述在和第三方对接开发接口的时候,出现了一个问题,即使用Postman发送报文过去给对方,对方能够返回结果过来,但是使用代码发送报文过去,却返回500错误。首先排除不是调用地址的问题,然后再排除不是调用方式的问题(即post请求变为了get请求)。然后再看看是不是报文内容有所不同,但是在代码里面报文发送之前就已经有日志打印了,发现报文内容和Postman里面是一模一样,那问题到底出现在哪里呢?问题分析找对方的人沟通,我代码发送请求给对方时,让他们看看他们收到的报文内容。结果傻眼了,用Post

2020-05-24 15:39:57 26231 1

原创 MyCat学习笔记

概念首先为什么要有MyCat大家都知道,随着业务量的增加,数据库里面的数据是会越来越多的,在数据量到达一定的量级之后,传统的sql语句的优化方式已经很难再提高数据查询效率了。那么,既然数据库在数据量不大的时候查询效率很高而在数据量大了之后变慢,那我们能不能把一张表里的数据拆分成多个表以提高查询效率呢?所以这就引出了分库分表的概念。以前有做过一个审批系统的系统升级项目,那会一张业务表的数据已经...

2020-05-03 11:30:52 180

原创 nginx的故障转移及其注意事项

nginx的故障转移其定义就是若集群中有一台服务器挂了或者是请求超时了,nginx会将已经发送至该服务器的请求重新发送到另一台服务器。nginx雪崩及处理方法一般情况下都会觉得这是一个很好的功能,但是这个好用的功能也会有坑。试想一下,在并发量很大的情况下,服务器太忙了处理用户请求出现了超时,因为故障转移机制,nginx会把这些个超时的请求交给集群中的其他服务器去处理。但是同样是一个集群,一般...

2020-05-01 16:11:24 2490

原创 SpringBoot工程整合ElasticSearch(通过Rest-High-Level-Client)并实现较复杂的查询

上一篇博客提到,REST Client的方式整合的项目实现复杂的查询比较麻烦,实现的方法是需要我们自己根据ES的语法写出符合语法的bean来,然后把这个bean发送http请求给服务端,这种方法也是我以前参与的一个项目的做法。但是ES本身是提供了java操作的api的,我们直接调用具体的类就能实现而不需要自己创建bean了。上一篇博客只是实现了ES单节点根据id来实现简单的增删改查,上一篇博客的...

2020-01-16 17:14:41 5449 3

原创 IDEA无法将新建的文件提交git的问题解决

今天在做项目的时候,我在git上由一个分支拉了一个新的分支,然后把对应工程的代码删除,然后重新下载到本地,接着checkout到新建的分支。为什么要新建这个分支,是因为我之前因为项目进度的问题做了一次代码回退,我需要把回退的代码重新在本地提交到develop分支。但是在我把原来写的代码在本地加上时(这些代码在原来的版本中我提交到过git),IDEA显示我无法将这些代码提交到线上。。。查资料后发...

2020-01-13 20:23:27 7130

原创 SpringBoot整合ES(REST Client方式)并实现简单的增删改查

首先有三种方式可以实现在java代码里操作ES,分别是Java API(TransportClient客户端),REST Client以及Data-ES,对于第一种,ES官方表示将在ES 8.0版本弃用,所以不是我们学习的重点。至于Data-ES,虽然它和SpringBoot集成的很好,容易上手,而且提供了很方便的api,但是据说不支持ES的权限数据,如果只是很简单的获取普通数据,Data-ES将...

2020-01-10 22:03:27 7354 2

原创 redis常见问题总结

1.什么是Redis?Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API的非关系型数据库。redis是一个以key-value存储的数据库结构型服务器,它支持的数据结构类型包括:字符串(String)、链表(lists)、哈希表(hash)、集合(set)、有序集合(Zset)等。为了保证...

2020-01-01 22:15:03 323

原创 Java操作redis的工具类

目录准备工作代码通用操作String(字符串)类型操作Hash(哈希)操作List(列表)操作Set(集合)操作准备工作首先引入pom依赖​<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-r...

2019-12-28 12:59:46 755 1

原创 SpringBoot工程启动时将数据库参数表参数加载到内存中

目录为什么需要将参数存入缓存?以及选择何种方式如何在项目启动的时候初始化数据如何实现定时刷新缓存参数为什么需要将参数存入缓存?以及选择何种方式为了避免频繁的查询数据库,我们需要将参数表的参数做成缓存,缓存的方式有两种,一种是加载到工程的内存中,另一种是加载到redis中。因为微服务的服务太多,如果用前一种方法的话,就需要多个服务都要初始化参数,而且如果参数变了,需要用到参数的服...

2019-12-28 10:49:34 3509 2

原创 Spring面试题以及答案

1.Spring的优点?(1)spring属于低侵入式设计,代码的污染极低;(2)spring的DI机制将对象之间的依赖关系交由框架处理,减低组件的耦合性;(3)Spring提供了AOP技术,支持将一些通用任务,如安全、事务、日志、权限等进行集中式管理,从而提供更好的复用。(4)spring对于主流的应用框架提供了集成支持。2.什么是控制反转(IOC)?什么是依赖注入?控制反转:...

2019-12-26 16:44:33 407

原创 探究分片副本数量等条件对ElasticSearch批量数据插入的影响

目录测试内容两套环境的配置对于简单文档的测试对于嵌套文档的测试TransportClient客户端多种测试方案综合比较测试结论关于分片和副本做出该测试的是公司的一位大佬,所以其实是转载测试内容分别在不同的环境下,测试不同的文档结构,分片和副本数量对于插入速率的影响。第二次指的是删除索引后重建索引的测试结果。两套环境的配置1. A机8核20G内...

2019-12-22 15:46:09 983

原创 Synchronized关键字

Synchronized关键字简介synchronized关键字解决的是多个线程之间访问资源的同步性,synchronized关键字可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。另外,在Java早期版本中,synchronized属于重量级锁,效率低下,因为监视器锁(monitor)是依赖于底层的操作系统的Mutex Lock来实现的,Java的线程是映射到操作系统的原生线...

2019-12-15 15:41:23 133

原创 Java的内存分配与垃圾回收

jvm内存结构分为五大区域:程序计数器、虚拟机栈、本地方法栈、堆区、方法区。各个区域特点如下堆区:(1).存储的全部是对象,每个对象都包含一个与之对应的class的信息(class的目的是得到操作指令)。(2).jvm只有一个堆区(heap),且被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身和数组本身。(3).通常可分为两个区块新生代和老年代。更新一点新生代可分为Ed...

2019-12-14 10:23:50 85

原创 Java类加载过程和JVM加载Class文件的原理

加载过程 类加载过程即是指JVM虚拟机把.class文件中类信息加载进内存,并进行解析生成对应的class对象的过程。JVM不是一开始就把所有的类都加载进内存中,而是只有第一次遇到某个需要运行的类时才会加载,且只加载一次。类加载的过程主要分为三个部分:加载、链接和初始化。而链接又可以细分为三个小部分:验证、准备和解析。加载指的是把class字节码文件从各个来源通过类加载...

2019-12-11 15:52:07 733

原创 Java集合的相关知识

ArrayList 和 Vector 的区别相同点:1.ArrayList和Vector底层都是用数组实现的。 2.若开始都是用空构造则默认的数组长度都为10。不同点:1.Vector是线程安全的(通过实现synchronize方法)而ArrayList是线程不安全的。 2.ArrayList如果需要扩容新数组的长度是原来数组的1....

2019-12-08 11:08:09 85

原创 mysql允许批量更新的实现(一个事务里执行多条sql)

首先需要在配置文件中添加allowMultiQueries=true这段话,如下所示url: jdbc:mysql://127.0.0.1:3306/db1?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true&allowMultiQueries...

2019-11-30 21:06:42 2452

原创 mybatis在springBoot框架下实现自动驼峰映射和解决自动映射不生效的问题

首先在springBoot下实现自动驼峰映射很简单,只需要在application.yml文件中加入如下就行就是这两句auto-mapping-behavior: partialmap-underscore-to-camel-case: true但是有一种情况下只这样配置是不行的,那就是存在不止一个数据源的时候,因为如果存在不止一个数据源,那么我们就必须使用自定义的配置,比如...

2019-11-28 21:29:34 4544 4

原创 docker几个命令

docker自动重启容器docker run -d --restart always限制重启次数,并且会在退出容器且返回值不是0的时候重启docker run -d --restart=on-failure:5另一个自动重启命令docker run -d --restart unless-stoppeddocker重启命令systemctl restart ...

2019-11-19 11:25:52 120

原创 在docker里安装ES和设置索引

安装ES 用docker命令下载镜像安装docker pullelasticsearch这样的命令是默认下载最新版,如果我们要指定安装某一版本,则可以这样首先用以下命令查询es的版本docker searchelasticsearch这样会列出一些版本,指定版本安装docker pullelasticsearchdocker.io/elasticse...

2019-11-18 22:23:43 2836

原创 基于数据库的分布式锁

首先创建表CREATE TABLE ap_task_lock ( id INT(30) NOT NULL COMMENT '锁编号', descs VARCHAR(250) COMMENT '描述', state VARCHAR(1) COMMENT '状态 0-未持有 1-持有', ip VARCHAR(30)...

2019-11-06 16:49:01 137

原创 mysql的load语句

mysql的insert语句因为需要在执行时产生binlog,插入效率不高。我们可以用其load语句实现快速 插入首先写上load语句:String loadSql = "load data local infile '"+fileName+"' into table " + tableName + "fields terminated by ',' encolsed by '\...

2019-08-14 17:53:26 717

空空如也

空空如也

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

TA关注的人

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