自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 缓存之Redis(总结篇)

一、什么是RedisRedis是一种用C语言开发的数据库,Redis的数据是存在内存中的,也叫内存数据库,读写速度非常快,常常用来做缓存。Redis支持丰富的数据类型,除了k/v类型的数据,还支持list、set、hash、zset。Redis支持数据的持久化,可以将内存中的数据存在磁盘中,重新加载的时候再读取出来。Redis有灾难恢复机制,因为其支持持久化。Redis在内存快使用完之后,将内存中不用的数据存到磁盘中。Redis支持集群模式。Redis是单线程的IO多路复用模型。(Redis

2021-03-27 18:59:22 248

原创 布隆过滤器

布隆过滤器是bit向量或bit数组和一系列随机映射函数(哈希函数)组成的。它占用空间小并且插入和查询效果高,但是其返回的结果是概率性的,即某个值可能存在或一定不存在。如字符串“kk”,经过三个哈希函数计算出三个hash值,即映射到bit数组中三个下标,将这三个下标所对应的值设为1,过滤时,则先计算出“kk”的三个哈希值下标,在bit数组中查三个对应下标的值是否全部为1,若全部为1,则“kk”存在,否则不存在。但是若布隆过滤器中存的值太多的话,可能会存在下标重叠,即“kkk”,“hhh”各有一部分哈希值对

2021-03-27 18:15:45 183

原创 Java虚拟机(JVM)(一篇全在这了)

先上网上大神整理的一张思维导图,对整体理解JVM非常有帮助1、JVM内存区域JVM内存区域就是Java虚拟机在执行Java程序的过程中把它管理的内存划分为若干个不同的数据区域,也叫运行时数据区。jdk1.8和之前的版本有所不同。jdk1.8之前:jdk1.8:(1)jdk1.8和jdk1.7以及之前的区别jdk1.8和之前不同的是,jdk1.8彻底移除了方法区,取之的是元空间,元空间使用的是直接内存。jdk1.7以及之前,堆内存可以分为三个部分:新生代、老生代和永生代内存。而永生代也被

2021-03-18 17:13:15 379 1

原创 Java集合之ConcurrentHashMap

1、ConcurrentHashMap简介在之前分析HashMap集合的时候,可以看到HashMap并没有进行过同步相关的处理,所以HashMap是线程不安全的。ConcurrentHashMap集合则是线程安全且高效的map集合。所以在涉及多线程开发的时候,一般都用ConcurrentHashMap集合。ConcurrentHashMap集合的实现在jdk1.7和jdk1.8有所不同,本文主要解析jdk1.8的ConcurrentHashMap集合。2、ConcurrentHashMap存储结构

2021-03-15 12:11:42 591

原创 Java高并发之线程池

1、为什么使用线程池池化技术的思想主要是为了减少每次获取资源的消耗,提高资源的利用率;线程池、数据库连接池等都是这个设计思路。(1)降低资源的消耗;通过重复利用已经创建的线程降低线程新建和销毁时产生的消耗。(2)提高响应速度;当任务到达时,不需要等线程创建就可以直接执行任务。(3)提高线程的可管理性;线程是稀缺资源,如果无限的创建线程,不仅消耗系统资源,还会影响系统的稳定性,使用线程池可以同一个调优、分配和监控线程。2、Executor框架Java1.5之后通过Executor框架来实现线程池。

2021-03-12 15:13:30 308

原创 Java高并发之volatile 关键字

1、

2021-03-11 15:13:03 1348 13

原创 Volatile和Synchronized关键字实现单例模式(线程安全)

Volatile和Synchronized双重校验锁实现线程安全的单例模式package com.kk.first.thread;public class TestSingle { private static volatile TestSingle testSingle; private TestSingle() {} public static TestSingle getInstance() { if (testSingle == null) { synchroniz

2021-03-11 15:11:02 202

原创 Java高并发之synchronized关键字

1、synchronized 简介synchronized关键字是解决多线程之间访问资源的同步性。synchronized关键字可以保证被其修饰的方法或者代码块在同一时刻只能被一个线程访问。在JDK1.6之前,synchronized是重量级锁,开销大,因为监视器锁是依赖于底层的操作系统来实现的,Java的线程是映射到操作系统的原生线程之上的,就是是说要挂起或者唤醒一个线程,需要操作系统的帮忙,而操作系统实现线程之间的切换需要从用户空间切换到内核空间,这个切换耗时长,所有时间成本高,导致效率低下。在J

2021-03-10 20:18:20 183

原创 Java高并发之多线程

1、什么是多线程进程中有多个线程,对于多核cpu来说,多个线程可以同时执行,提高了cpu的利用率。2、为什么要用多线程(1)从计算机底层来说:线程是轻量级的进程,是程序的最小执行单元;对于多核cpu而言,多个线程可以同时执行,减少了线程间切换的开销,即提高了cpu的利用率,同时也提高了程序的效率。(2)从当前业务场景来说:目前动不动就要求百万级、千万级的并发量,而多线程正是开发高并发系统的基础。(3)在单核时代,多线程主要是用来提高cpu和IO设备的综合利用率。只有一个线程时,当cpu计算时,IO

2021-03-09 17:44:05 337

原创 Java高并发入门之进程与线程

1、什么是进程与线程(1)进程:是程序的一次执行过程,是系统运行程序的基本单位;系统的一个进程就是程序从创建、运行到消亡的过程。进程有自己独立的一块内存空间(虚空间)在Java中,当我们启动一个main函数其实就是启动了一个JVM进程,main函数所在的线程就是这个进程的一个线程,也叫主线程。更直观的就是,打开电脑的任务管理器,就可以看到当前Windows的运行进程。(2)线程:线程和进程相似,但是线程是比进程更小的一个执行单位,一个进程在执行过程中可以产生多个线程。与进程不同的是,多个线程共享进

2021-03-08 17:07:18 103

原创 Java集合之HashMap

1、HashMap简介

2021-03-07 13:48:07 87 3

原创 深入解析Java集合之ArrayList

1、ArrayList简介ArrayList底层是数组队列,相当于动态数组。与Java中的数组相比,它的容量能动态增长。ArrayList继承了AstractList,实现了List, RandomAccess, Cloneable, java.io.Serializable这些接口。所以ArrayList是支持快速访问,复制(克隆)和序列化的。实现了List接口,则ArrayList中的元素是有序的,可以重复的,也允许存入null值。ArrayList底层是使用Object[]存储的,是不同步的

2021-03-05 15:41:45 94 3

原创 I/O模型(同步阻塞I/O,同步非阻塞I/O,I/O多路复用,信号驱动I/O,异步I/O)

1、I/O是什么?根据冯·诺依曼结构,计算机结构分为5大部分:运算器、控制器、存储器、输入设备、输出设备。从计算机结构上来说,IO就是计算机系统和外部设备(输入设备、输出设备,硬盘等也属于外部设备)之间的通信的过程。从应用程序上看,为了保证操作系统的稳定性和安全性,一个进程的地址空间分为用户空间(User space)和内核空间(Kernel space)。我们平时运行的应用程序都是运行在用户空间的,只用内核空间才能进行系统态级别的资源操作,如文件管理、内存管理,进程通信等。而用户空间的程序是不能

2021-03-03 18:21:09 456 2

原创 深入解析Java代理模式(静态代理和动态代理)

1、什么是代理模式代理模式就是使用代理对象来替代真实对象的访问,这样就可以在不修改目标对象的基础上,增加新的功能操作,扩展目标对象的功能。简单来说,代理就是增强目标方法的功能。举例来说,比如一个service方法中有增删改查等诸多操作数据库的方法,每个方法在完成自己本身业务逻辑的情况下,还需要在业务逻辑前后增加开启事务和提交事务的逻辑。这样会造成大量的重复代码,这时候,我们就可以使用代理模式,把service作为目标对象,再新建一个增强类,这个类中有两个方法,开启事务和提交事务。再创建一个代理类,用来

2021-03-03 11:02:52 180

原创 深入解析Java反射原理

1.什么是反射Java反射就是在运行时,对于任意一个类,程序都能获取这个类的所有属性和方法。对于任意一个对象,程序都能调用它的所有方法和属性。这种动态获取类的信息和动态调用对象方法和属性的功能成为Java的反射机制。Java反射就是把类的各种成分映射成一个个Java对象要想解析一个类,首先需要获取到这个类的字节码文件对象,也就是.class文件。而且一个类有且只有一个.class文件。2.怎么获取类的字节码文件Java提供了四种方式来获取字节码文件对象。如cn.com.kk.TestClass这个

2021-03-02 10:23:45 161 2

原创 深入解析equals()和hashCode()方法之间的关系

一、hashCode()方法是干什么的hashCode()方法是获取哈希值,也就是获取散列码,实际上返回的是一个int值;这个哈希码的作用是确定该对象在哈希表中索引的位置。hashCode()方法定义在Object.java类中,也就是说Java中所有的类都包含有hashCode()方法。虽然每个类都有hashCode()方法,但是只有当创建这个类的散列表时,hashCode()方法才有作用(作用:用于确定这个类的对象在其散列表中的位置),其他情况,如单独创建这个类的对象或者创建这个类的数组对象,ha

2021-02-27 15:02:29 243

原创 深入解析equals()与“==”的差异

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-02-26 18:35:06 62

原创 深入解析Java数组转集合Arrays.asList()方法

String[] tem = {"aa","bb","cc"};List<String> list = Arrays.asList(tem);System.out.println(list.get(1));// bbSystem.out.println(list.add("dd"));// 报错 java.lang.UnsupportedOperationException在使用Arrays.asList()方法将数组转为集合后,调用集合的get()方法没有问题,但是add()方法就报

2021-02-26 10:28:15 339

原创 MySQL数据库自定义函数创建失败问题

MySQL数据库自定义函数创建失败问题1.案例1.案例目前在项目中,执行创建mysql的函数出错,mysql 创建函数出错信息如下:Caused by: java.sql.SQLException: This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less sa

2020-12-15 16:33:48 1112 1

原创 JPA 唯一约束条件@UniqueConstraint注解在Oracle失效问题(数据库表名字段名长度问题)

问题描述:使用JPA创建表,在实体类上加如下注解,在mysql中创建表并创建唯一约束条件,但是在Oracle中创建表后 唯一约束条件却创建不了。@Table(name="ABCD_ORGMAP", uniqueConstraints = { @UniqueConstraint(name = "UNIQ_ABCD_ORGMAP_GROUP_REPORTO...

2019-09-06 09:57:54 3230

原创 vue axios(下载文件流)设置返回值类型responseType:'blob'无效的问题

我在做vue项目时,要求使用axios异步下载后端传输的文件流,百度了一下,so it`s easy. 巴拉巴拉一顿操作,OK搞定。然而一测试,凉凉,下载的文件要嘛是空的,要吗是乱码。F12一看,浏览器拿到的不是Blob类型的,而是一串字符串乱码。操作如下:1.写axios接口import axios from 'axios'export const uploadFileRequest =...

2019-07-29 18:11:24 56271 72

原创 键盘样子的注释

/**** ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐* │Esc│ │ F1│ F2│ F3│ F4│ │ F5│ F6│ F7│ F8│ │ F9│F10│F11│F12│ │P/S│S L│P/B│ ┌┐ ┌┐ ┌┐* └───┘ └───┴───┴───┴...

2019-07-22 11:41:07 117

原创 static关键字

一、在理解static关键字之前,首先理顺java中类的加载时机,在类初始化的时候加载类,类的初始化有以下4中常用场景来触发:(1)用new关键字来创建该类的对象时(2)读取该类的一个静态变量时(被final修饰的静态常量除外-编译期把结果放在常量池)(3)设置该类的一个静态变量时(被final修饰的静态常量除外-编译期把结果放在常量池)(4)调用该类的一个静态方法时目前存疑点:调用该类...

2019-06-28 19:07:07 135

原创 iview表格文字超出后使用省略号

直接上代码吧 ,针对描述这一列,如果字数超出单元格,则显示省略号…{title: '描述', key: 'describe', render:(h, params) => { return h('div', [ h('span', { style: {display: 'inline-block', width: '...

2019-05-17 14:07:10 5313

原创 logback文件详解(动态指定根目录)

我的例子<?xml version="1.0" encoding="UTF-8"?><configuration debug="false" scan="true" scanPeriod="30 seconds" packagingData="true"> <!-- 设置 logger context 名称,一旦设置不可改变,默认为default --&g...

2019-05-15 14:45:34 8885

原创 spring boot + gradle + mybatis + vue(eclipse-STS)前后端分离入门教程(第一部分:后端)

在做springboot项目时,公司要求是springboot+gradle+mybatis+vue,同时,我又习惯了用ecplise来开发, 在网上找了许多资料都不是很全, 于是自己经过磕磕碰碰的尝试整合,终于基于要求做了一个简单的用户管理系统。

2019-03-27 16:21:55 1925 2

原创 Gradle下载安装与和eclipse(STS)集成

前言简单的说,Gradle是一个构建工具,在java中功能大体上使用同maven一样,就是使用方式不同...吧啦吧啦...Gradle下载点击下载各个版本的Gradle一般下载all版本,里面包含了Gradle SDK的所有相关内容,包括:源码、文档、示例等。示例:我用的是4.6版本的。Gradle安装下载完之后,解压。再配置环境变量。我们右键“这台电脑”–>“属性”–&...

2019-03-27 16:17:47 1864

原创 java中使用poi导出ppt(图片和表格)

java使用POI导出PPT(超简单方法,包含图片和表格)在做项目中遇到一个需求,将职员的信息导出成一个形式固定的ppt文档,poi有许多方法可以实现,因为我是一名Java小白,于是便想用最简单的方法来实现,代码如下: 该需求需要用到poi的jar包: https://download.csdn.net/download/weixin_42142057/10652136public s...

2018-09-07 17:07:49 5860 2

原创 Java中使用freemarker导出word文档(详细案例,含图片和表格)

Java中使用freemarker导出word文档(自己真实项目案例)最近做了一个项目,有一个需求是要将职员的一些数据按照指定的样式导出成一个word文档出来,由于自己是一个Java小白,不懂,于是便在网上找方法,网上介绍的有很多,因为原来用poi导出过ppt,于是便想用poi来做,但是由于时间不够,最终选择了用freemarker来做,在做的过程中遇到了一些问题,但最终还是完成了。于是把自己...

2018-09-07 14:33:46 17018 12

tda分析线程dump的工具

解压后双击就可使用,用于分析线程dump,排查服务性能问题。这样应该可以了吧,以后自用,还不够!非要50字,无语

2020-11-17

fileupload上传文件jar包

包含commons-fileupload-1.3.3.jar和commons-io-2.6.jar这两个用于文件上传的jar包。

2019-02-19

java VisualVM之插件TAD

线程dump分析插件TAD,用于jdk自带的java VisualVM性能分析工具。内附安装说明。

2019-02-19

poi-3.8.jar包

poi是一个强大的工具,可以实现对多个形式文档的读写操作。

2018-09-07

freemarker.jar包

本jar包主要用于在Java中导出word文档、pdf文档、ppt文档等。

2018-09-07

空空如也

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

TA关注的人

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