自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 资源 (4)
  • 收藏
  • 关注

原创 重学JVM之总结

我们知道,java文件经过编译后转换为class文件,然后经过类加载子系统加载到jvm中执行,这个过程如下图所示:class文件结构编译过程就是把java文件变为class文件的过程,用javac命令就可以,比如下面一段简单的代码:public class Math { public static final int initData = 666; public int cal(){ int a = 1; int b = 2; int

2020-05-31 22:00:09 265

原创 重学JVM之垃圾收集器

如下图展示的是垃圾收集器的作用范围是属于新生代还是老年代,如果两个垃圾收集器之间存在连线,则说明他们之间可以配合使用。Serial是一种单线程收集器优点:简单高效,拥有很高的单线程收集效率缺点:收集过程需要暂停所有线程,即STW算法:复制算法适用范围:新生代Serial OldSerial Old收集器是Serial收集器的老年代版本,也是一个单线程收集器,不同的是采用标记-整理算法,运行过程和Serial收集器一样。ParNew可以理解为Serial收集器的多线程版本。优点:在多C

2020-05-30 12:18:24 270

原创 重学JVM之栈结构

整个运行时数据区如下,其中堆跟方法区是线程共享的,虚拟机栈,本地方法栈,程序计数器是线程私有的。虚拟机栈随着线程的创建而创建,每一个线程都有一个虚拟机栈。每一个被线程执行的方法,称为该栈的栈帧,即每个方法对应一个栈帧。调用一个方法,就会向栈中压入一个栈帧;一个方法调用完成,就会把该栈帧从栈中弹出。比如main方法执行的时候就会创建一个对应的栈空间,main方法调用a方法,那么a方法则称为栈帧,栈帧的数据结构又分为以下几个部分局部变量表,就是指方法里面定义的常量等信息操作数栈:就是执行jvm指令对

2020-05-29 12:07:06 287

原创 重学JVM之类加载机制

java文件编译成class文件之后,必须要放到java虚拟机才能执行,类的整个生命周期如下第一步我们是进行加载,加载是由类加载器进行加载的,也就是说把clss文件变成字节流,然后放到虚拟机的一个过程,其中方法区放的是类信息,静态变量,常量,编译后的代码,同时在堆中生成一个代表该类的对象,作为方法区访问的入口类加载器工作原理如下 protected Class<?> loadClass(String name, boolean resolve) throws Cla

2020-05-22 17:14:36 154

原创 重学JVM之class文件结构

先准备一个简单的java文件public class Person { private String name = "jack"; private int age; private final double salary = 100; private static String address; private final static String hobby = "programming"; private static Object obj = new

2020-05-22 10:40:02 167

原创 HashMap1.8插入元素、扩容部分源码分析以及线程不安全的原因

先看几个关键的属性//默认数组初始化长度为16static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; //最大长度static final int MAXIMUM_CAPACITY = 1 << 30;//负载因子,扩容的阈值,比如说16*0.75=12,当数组使用了12的时候就会触发扩容static final float DEFAULT_LOAD_FACTOR = 0.75f;//当链表长度为8的时候转为红黑树sta

2020-05-10 22:59:38 464 1

原创 基于redisson实现分布式锁

有这样一个业务场景,窗口卖票,票的数量是一定的,很多人来抢票,如何才能使得票不会超卖呢,比如下面的代码是模拟卖票的场景public class SellTicket implements Runnable { private int tickets = 100; @Override public void run() { while (tickets>0){ try { Thread.sl

2020-05-09 22:37:22 799

原创 Spring boot整合Sharding-JDBC实现分库分表

写在前面本文基于一个普通Spring boot项目改造而来,具体可以看这一篇Spring boot整合mybatis generator实现自动生成代码从shardingsphere官网https://shardingsphere.apache.org/index_zh.html简介来看好像改造分库分表相当简单,只需要引入maven依赖即可,可是它并没有告诉你使用的版本号比如我的demo...

2020-04-21 22:52:46 535 1

原创 Spring boot整合mybatis generator实现自动生成代码

1、在idea新建一个工程一路next之后最后finish,工程就创建好了。2、测试工程是否正常建立一个controller和index.html文件,启动后访问能正常返回成功页面,说明工程搭建初步完成3.pom.xml文件中还要添加spring跟mybatis的整合的包,已经分页的插件等,最后pom文件如下<?xml version="1.0" encoding="UTF...

2020-04-20 08:07:04 482

原创 apache-maven安装及settings.xml文件设置

1、先去maven官网下载最新版的maven解压即可http://maven.apache.org/download.cgi2、配置环境变量新建环境变量然后编辑path系统变量,添加%maven_home%\bin;验证:打开cmd命令窗口运行:mvn –version出现以下信息说明安装成功3、设置settings.xml(1)新建repo文件夹,然后找到,添加文件夹的路...

2020-04-06 23:33:50 2587 1

原创 mysql索引的一些概念

在mysql中,建立索引的时候一般可选的索引类型有普通索引(Normal),最基本的索引,没有任何限制唯一索引(Unique),索引列的值必须唯一,但允许有空值,全文索引(FullText),效果类似like,但是比like效率高,多用于大文本字段的检索。还有一个主键索引,默认建表指定了主键就自动创建了主键索引,主键索引跟唯一索引的区别就是主键索引不允许为空聚集索引是指数据库表行中数...

2020-04-05 18:17:09 226

原创 ibatis-generator

ibatis-generator是个神器,支持自动生成xml文件,dao,model等,一般都满足日常的crud需求执行这个方法就可以生成了。然后把相应的代码复制到项目中去,即可使用...

2020-03-31 15:30:43 621

原创 js带预览功能上传图片

一般上传文件使用的是 ,看到的效果大概就是这样的如果要实现预览上传的图片功能,先要在div中开辟一个存放预览图片的地方,如下面的preview空间, <form id="save" enctype="multipart/form-data" > <div class="item"> ...

2020-03-31 10:57:18 275

原创 ibatis批量插入数据库

在大批量插入数据库的时候,如果用for循环一条条插入效率肯定会异常底下,本文介绍ibatis批量插入是如何做的,我这里使用多线程进行分批插入,一批插入一万条,实际插入交给子线程处理,这样可以节省前端等待时间。在dao层定义个线程池,线程池定义方式以及参数如下private static ThreadPoolExecutor executor = new ThreadPoolExecutor(1,...

2020-03-30 20:03:52 1151

原创 Mysql事务隔离级别

mysql有4种隔离级别未提交读在一个事务中,可以读取到其他事务未提交的数据变化,这种读取未提交的数据,叫做脏读现象(Dirty Read),本隔离级别很少用于实际应用。已提交读在一个事务中,可以读取到其他事务已经提交的数据变化,这种读取也就叫做不可重复读,因为两次同样的查询可能会得到不一样的结果。在已提交读的情况下,事务A进行select 操作,如果事务B进行了两次update操作并且...

2020-03-17 20:51:54 333

原创 redis两种持久化方式对比

Redis的所有数据都是存放在内存中的,表1-1是谷歌公司2009年给出的 各层级硬件执行速度,所以把数据放在内存中是Redis速度快的最主要原 因。·Redis是用C语言实现的,一般来说C语言实现的程序“距离”操作系统更 近,执行速度相对会更快。·Redis使用了单线程架构,预防了多线程可能产生的竞争问题。·作者对于Redis源代码可以说是精打细磨,曾经有人评价Redis是少有的 集性能和...

2020-03-16 13:32:06 189

原创 input框输入实时触发

有时候需要校验input框的值,比如说邮箱电话之类的正则校验,onblur事件是失去焦点的时候才触发,不够实时,input事件是马上触发比如下面这种情况,如果输入中文的话,这个时候不应该触发的,但是实际上已经校验了5次了,也太灵敏了,如果在js里面有调用后台方法的话就会频繁触发后台请求,也不是很好$('#email').on('input',function () { console.info...

2020-03-13 18:56:08 2827

原创 分享个时间插件datetimepicker

使用方法如下,html里面加上日期输入框,需要引入jquery跟bootstrap的相关js,大概代码如下<form class="form"> <div class="floor date-floor clearfix"> <br/><br/><br/> <div class="fl-t...

2020-03-13 10:56:50 183

原创 别以为随便写个密匙的key值就可以进行加解密了

我们都知道在使用加密解密的时候都需要密匙,但是密匙随便定义个可以吗,今天我就遇到这个坑,加密解密用的都是同一个密匙,在本地测试一切正常,然而部署到服务器的时候就亮了,解密的时候报了下面的错误,经查阅资料,原来是因为windows跟Linux的系统不同导致的,随便定义的密匙串是不行的javax.crypto.BadPaddingException: Given final block not pr...

2020-03-11 20:18:28 1265

原创 ajax请求后的返回结果显示[object Object]的原因

今天在进行ajax处理返回结果的时候发现返回打印的值显示是msg:[object Object],这谁能忍,然后就从前端请求到后端返回的格式一遍一遍检查各种参数,发觉也没有太大问题,最后经万能的度娘才明白如果我们的代码中有加号运行符,在这种情况下,会先调用toString()方法,将其他类型的东西转化为字符串,再和原始字符串拼接成一个字符串。所以直接输出返回的对象即可,不要再加一些别的内容拼...

2020-03-09 13:15:12 12095 5

原创 POI生成excel文件以及预览文件功能

最近在做一个功能,用户在付费购买后生成一批文档详情给用户下载,并且在付费之前可以预览部分文档,那么首先就是生成excel文件放在服务器的某个目录,然后把文件名路径存在订单表中,当用户付费后就可以根据订单表去进行下载,第一步首先是生成excel文件逻辑如下,先去查询得到一个list,然后遍历list的详情放到对应的excel表中,部分涉及到具体业务逻辑的字段用xxx代替。我这里生成的是xlsx文件...

2020-03-03 19:39:27 1117

原创 浅谈java GC的几种算法

最近在看<<深入理解java虚拟机>>这本书,对垃圾收集算法这部分内容做个笔记整理下java的运行时数据区如下,其实就是堆,栈,方法区,其中栈又分为虚拟机栈,本地方法栈,程序计数器,并且栈是属于线程私有,堆跟方法区是线程共享的。几乎所有的对象都是存放在堆中的,所以java堆是垃圾收集器管理的主要区域。可达性分析算法通过一些GC Roots作为起点,当一些对象没有任...

2020-03-02 06:47:40 2651 1

原创 idea

目前最新版本是2019.3.3,使用一个月后可如下操作,你懂的1.C:\Users\xxx.IntelliJIdea2019.3\config,删除eval2.C:\Users\xxx.IntelliJIdea2019.3\config\options,删除other.xml3.win+R,输入regedit,打开注册表找到这个目录HKEY_CURRENT_USER\Software...

2020-03-01 19:46:12 1130

原创 前端的一些基础

<div class="price-box"> <ul> <li id="single-month" class="active" > <h4 class="level">A</h4> <span class="price...

2020-02-27 15:15:42 143

原创 Form表单提交的一种方式

<form id="formSubmit" action="<%=basePath%>client/payment.do" method="post" class="form"> <s:hidden id="stime" name="searchCondition.stime" value=""/> <s:hidden id="etime" na...

2020-02-25 18:51:07 219

原创 文件压缩打包下载功能实现

前端js部分,思路如下,提供个下载的按钮,点击下载的时候拿到要下载的pdf链接,组装成表单提交到后台的action处理function download() { var pdf_url = $("#download").val(); var url ="downloadFiles.do?pdf_url="+pdf_url; var form = $('...

2020-02-21 18:57:23 345

原创 HTTP两种请求方式对比

今天在进行API接口测试的时候遇到个比较奇怪的事情,两个方法都是执行http请求,但是返回的结果有一个却是报错的,url在本地测试的时候两种方式却都是可以的,url切换到正式环境的第二种却是报错,我猜是因为有一些请求头信息没有传递过去,所以导致的错误,以此记录下,说明了请求方式1是兼容性比较好的代码如下:import org.apache.http.client.fluent.Request...

2020-02-21 18:26:43 441

原创 分布式ID生成方式之雪花算法

在数据量不大的情况下,单库单标完全满足现有业务,但是随着数据日益增大,分库分表是必然的操作,如果这时候用数据库的自增ID无法满足需求,因为假如有多张表都是存订单的信息,每个表都是自增的ID,那就会出现重复的ID号了,当然可以设置表的步长,比如表1的ID从1开始,每隔两步增长一次。表2的ID从2开始,那么他们的ID就会是1,3,5,7,9.......,2,4,6,8,10.....,但是这样后续...

2020-02-21 17:18:04 347

原创 Mysql原子性,持久性实现原理

事务的特性是原子性(Atomicity),一致性(Consistency),隔离性(Isolation),持久性(Durability),简称ACID,本文主要是说原子性和持久性。1.redo logmysql为了提升性能不会把每次的修改都实时同步到磁盘中,而是先存到缓存中,然后再使用线程去做缓冲池和磁盘中的同步。这样必然会存在问题,假如电脑突然停电,那么没有持久化到磁盘的信息必然会丢失,那么...

2020-02-19 22:55:24 2788 1

原创 mysql添加一列到指定位置

语法:alter table 表 add 新增字段 varchar(50) default null comment ‘注释’ after 要加在那个字段的后面比如:alter table order add TAX_FEE varchar(60) default null COMMENT ‘税率’ after TOTAL_FEE;某一列求和:SELECT sum(列) FROM XXX...

2020-01-17 17:12:55 1198

原创 使用https访问网站静态资源无法加载

最近发现公司m站使用https访问的时候,样式无法加载,F12查看发现js,css等样式还是以http开头的,并且提示This request has been blocked; the content must be served over HTTPS,因为HTTPS 承载的页面上不允许出现 http 请求,所以遇到http的样式就无法加载了。后台是使用 request.getScheme()...

2019-10-13 12:23:42 7831

原创 nginx设置请求的日志信息

如果需要查看用户在浏览器输入的请求信息,在nginx里面是可以设置打印输出记录的,在http模块中可以设置http {log_format access '{"head":"$scheme","host":"$host","ip":"$remote_addr","time":"[$time_iso8601]"}';access_log logs/ip.log access; }...

2019-10-13 11:06:33 942

原创 idea 提示 this configuration cannot edited

打开idea不明原因idea出现这个提示网上查找一遍,说是在setting–>plugins下把红色的取消再重新勾上就可以了最后重启,问题得以解决

2019-10-12 19:28:37 1001

原创 jquery实现后退并且刷新

今天在改一个功能的时候,需要先跳转到登录框,登录成功后再回到当前页面,用的是异步操作,所以在登录成功后调用window.history.go(-1); 但是发现只是回到上一页,页面并没有刷新,状态还是未登录前的状态,必须手动刷新一下才改变状态,这样体验很不友好,改为使用window.location.href=document.referrer;这样就能实现后退并刷新的效果了...

2019-07-29 17:08:09 1961 1

原创 413 Request Entity Too Large解决方法

上传excel文件是发现报了如下这个错误。意思是文件太大了。修改限制文件大小的方法是在nginx.conf的http{ }加上client_max_body_size 20m;当然实际大小可以按照情况填写,这样就可以解决文件大小限制了...

2019-04-18 13:00:11 1036

原创 mongoDb连接数据库配置报错Credentials need to specify username原因及解决方法

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mongo-client': Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchExceptio...

2019-04-12 14:51:46 4948

原创 form表单传递参数乱码解决方案

今天在处理一个搜索问题,挺简单的需求,就是输入框里面输入关键字,然后通过url把参数传递给后台,点击提交按钮的时候把获取到的关键词放到form的action,然后提交 //提交表单方法 function doSubmitDiqu(){ var keyword = $("#SearchWordId").val(); $("#searchForm").attr("action", "${p...

2019-04-11 19:14:53 2203 1

原创 Lucene原理个人总结

传统数据库无法满足的痛点在mysql中,我们根据关键字去搜索一般都是like %~~%,但是这样搜索的性能是很低的,因为没有走索引。相关性搜索,电商网站中的根据浏览记录做的商品推荐,在海量数据下直接查询数据库也是无法做到快速反应倒排索引引出倒排索引之前先说下HashMap,经典的key-value数据结构,搜索效率非常高,如果说HashMap是正向索引的话,那么倒排索引的数据结构跟Hash...

2019-03-10 12:22:12 158

原创 redis缓存穿透及解决方案

缓存访问的过程如下:(1)应用访问缓存,假如数据存在,则直接返回数据(2)数据在redis不存在,则去访问数据库,数据库查询到了直接返回应用,同时把结果写回redis(3)数据在redis不存在,数据库也不存在,返回空,一般来说空值是不会写入redis的,如果反复请求同一条数据,那么则会发生缓存穿透。当然解决方案是可以为这个key设置一个空值,同时写入redis,下次请求的时候就不会...

2019-03-06 06:26:21 14664 6

原创 关于分布式事务的一点思考

所谓事务,就是指满足ACID特性的过程,在跨库事务中,spring事务是无法满足一致性的,比如在一单商品交易中,存在多个库,多个表需要进行update操作,比如订单表,库存表,积分表等等,只有同时更新成功这三个表了才算是一个交易的完成,这个交易过程称之为分布式事务,也叫跨库事务,一般解决方案有TCC(两阶段提交协议),我之前也阐述过这个过程,也就是先预提交,比如更新三个表,再根据每个语句返回的状态...

2019-03-04 23:07:02 144

分库分表demo.zip

基于spring-boot跟sharding-jdbc整合实现的分库分表小demo,并且代码中整合了mybatis generator

2020-04-23

mybatis-generator.zip

mybatis-generator根据配置好的表名可以实现自动生成对应的model,mapping,dao层的文件

2020-04-20

ibatis-generator.zip

ibatis-generator自动生成表的xml,dao,model文件,并且支持分页查询,条件查询等,从而节省大量的自己写sql的时间

2020-04-08

时间插件datetimepicker

好用的时间插件datetimepicker,jquery+bootstrap+bootstrap-datetimepicker

2020-03-12

空空如也

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

TA关注的人

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