自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

relife

韶华易逝,红颜易老。不负流年,不忘初心。

  • 博客(36)
  • 资源 (1)
  • 收藏
  • 关注

原创 java实现HTTP的post请求 json格式中文乱码问题

java,SpringMVC,jfinal,接口

2017-04-19 10:24:35 25754 4

原创 使用java代码对pdf进行切割

pdf切割

2024-02-27 15:35:13 965 1

原创 spring学习(一)spring-ioc、di和循环依赖

Spring比较重要的特性就包含IOC和DI,其中的过程也包含了循环依赖,线程安全等问题。bean中的各个参数id : 唯一标识 name : bean的名字,一个bean标签可以有多个别名,多个别名间使用空格/逗号/分号分割。 alias :bean的新的名字,一个bean标签可以有多个别名,多个别名间使用空格/逗号/分号分割。 class : 当前bean对象的具体类名 abstract : 对象不可直接使用。 必须被其他的bean对象继承。 设定对象的模板,可以减

2022-09-27 17:07:07 211

原创 垃圾收集器G1与ZGC

G1与ZGC

2022-03-17 16:47:21 1139

原创 jstat命令解析

jstat 命令分析

2022-01-21 15:47:03 7278

原创 关于openjdk的问题BeanCreationException和InvalidAlgorithmParameterException

BeanCreationException,InvalidAlgorithmParameterException

2021-12-29 20:20:43 815 1

原创 Linux的五种IO模型与Java的BIO、NIO、AIO

0. 前言要搞懂IO的发展,首先要先了解以下几个概念阻塞:发起的请求调用者要等待返回结果,否则当前线程无法处理其他事物。非阻塞:发起的请求调用者不要等待返回结果,否可以处理其他事物。同步:发起一个调用后,被调用者处理完请求之前,调用不返回。异步:发起一个调用后,调用者先返回已接到申请,再通过事件,回调等机制来通知调用者其返回结果。阻塞非阻塞区别在于,调用者需不需等待结果,才能处理其他事情,同步和异步,在于结果是通过调用返回的,还是通过事件回调等机制来通知调用者返回结果的。通俗来讲,只有同步阻塞

2021-01-26 18:13:12 971

原创 redis的持久化

0. 前言redis作为内存数据库,为什么要持久化?redis的数据储存到内存里,大部分情景下作为缓存,在得到快速高效的优点下,也无可避免的会存在特殊情况(断电)下,数据丢失的问题。数据一旦丢失,面临缓存雪崩,所有请求,没有redis缓存的情况下,大量请求直接去关系型数据库里查询,数据库就会挂掉。redis的持久化,顾名思义,将数据保存在磁盘里。目前分为两种持久化机制,RDB (Redis DataBase)和 AOF (Append Only File)。1. RDB(Redis DataBase

2020-12-29 21:45:58 136

原创 redis6在linux的安装使用

0. 安装环境redis版本:6.0.6CentOS版本: 7.5 64位(腾讯云环境)redis中文官网:http://www.redis.cn/redis压缩包下载链接:http://download.redis.io/releases/redis-6.0.6.tar.gzredis下载、解压、编译Redis操作命令:http://www.redis.cn/download.html很多操作都是官网上有的,我这主要按照官网的操作命令解决可能出现的问题,大家直接看我下边的步骤也可以,基本和

2020-12-24 16:02:26 233

原创 传统IO到零拷贝

文件传输发展1.以前IO2.DMA解决了什么问题3.零copy4.PageCache5.大文件怎么做1.没有DMA的I/Oread()方法用户进程调用read方法,CPU发送指令到磁盘控制器磁盘控制器接收指令后,把数据放入磁盘控制器的内部缓冲区,产生一个中断。CPU收到中断指令后,把磁盘缓冲区的数据读进自己的寄存器,然后把寄存器的数据写入内存。此时,这个过程中CPU需要被占用。2.DMA(直接内存访问)Direct Memory Access数据搬运交给DMA用户进程调用r

2020-11-16 14:45:01 197

原创 线程安全(十)AQS(AbstractQueuedSynchronizer)

0.以ReentrantLock切入aqs全称为AbstractQueuedSynchronizer,它提供了一个FIFO队列,可以看成是一个用来实现同步锁以及其他涉及到同步功能的核心组件AQS是一个抽象类,主要是通过继承的方式来使用,它本身没有实现任何的同步接口,仅仅是定义了同步状态的获取以及释放的方法来提供自定义的同步组件。AQS独占 和 共享前言:首选说一下AQS的实现机制,它提供了一个FIFO队列,所有未获取锁的对象都会放入这个对列,然后,每个线程都会轮询访问,只有前驱是head节点,以及

2020-09-15 17:40:50 298

原创 Mybatis流式查询之ResultHanlde

0.前言如果目标数据量过大,又需要全量查询,不能分页的情况,例如导出excel,就需要流式查询1. 实例1.1.Mybaits的jar包引入注:idea必须配置build,否则扫描不到src下的xml文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSche

2020-07-22 16:44:54 6910

原创 代理模式(静态代理与动态代理)

0.前言代理模式,即通过代理对象访问目标对象。先了解下JVM 的类加载机制中的加载阶段通过一个类的全名或其它途径来获取这个类的二进制字节流将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构在内存中生成一个代表这个类的 Class 对象,作为方法区中对这个类访问的入口如果要实现的在方法前后增加处理,我们可以切入的对象或者说结点包括在编译器修改源代码(静态代理)、在运行期字节码加载前修改字节码或字节码加载后动态创建代理类的字节码。大体实现分为以下五种静态代理动态代理动态字节

2020-07-10 11:09:51 232

原创 MDC和NDC(log4j打印自定义属性)

0.前言服务器日志打印时是按时间节点依次打印,在请求数过多时,很男凭借肉眼判断出一次请求的上下文。由此引出,如果每个request都带有唯一的标识,查询日志上下文时是不是就很方便.1.logj自带的NDC和MDC1.1.NDC(Nested Diagnostic Context)NDC采用栈的机制存储上下文,线程独立的,子线程会从父线程拷贝上下文。:方法:NDC.push(message);保存信息NDC.pop();删除栈顶消息NDC.remove();清除所有消息log4j配置:

2020-07-04 15:54:33 1018

原创 线程安全(九)CyclicBarrier

0.前言障碍器类,循环栅栏看过源码。此工具类依靠Condition和ReetrantLock实现了屏障功能,当所有子任务执行完成,屏障解除,下一任务才会继续,而且屏障会恢复。1.源码解析1.1.属性 // 可重入锁 private final ReentrantLock lock = new ReentrantLock(); /** Condition to wait on until tripped */ // 条件 private final Conditi

2020-06-22 17:40:06 340

原创 SpringCache

缓存话不多说,上图

2020-06-12 16:08:22 123

原创 线程安全(八)Semaphore

0.前言Semaphore :信号量,使用AQS类型的同步状态持有当前可用许可的数量。1.方法分析1.1.构造方法:Semaphore(int permits):创建具有给定许可数的计数信号量并设置为非公平信号量。Semaphore(int permits,boolean fair):当fair等于true时,创建具有给定许可数的计数信号量并设置为公平信号量。1.2.方法void acquire():从此信号量获取一个许可前线程将一直阻塞。void acquire(int n):从此信号量

2020-06-05 11:12:48 587 1

原创 线程安全(七)ThreadLocal和java的四种引用

1.JAVA四种引用类型1.1.强引用处于可达状态,JVM不会回收,没有任何引用指向时,就被回收了,是内存泄漏的主要原因1.2.软引用SoftReference,垃圾回收机制运行,不会回收,内存一旦不够,就回收(-Xmx),常用于缓存1.3.弱引用WeakReference,垃圾回收机制一运行,就回收,ThreadLocal有使用。ThreadLocal// set方法 publ...

2020-05-02 17:03:53 425

原创 线程安全(六)线程池

线程池1.Executor 与ExecutorService接口1.1.Executor接口// 提交任务的办法void execute(Runnable command);1.2.ExecutorService接口 // 关闭线程池,已提交的任务继续执行,不接受继续提交新任务 void shutdown(); // 关闭线程池,尝试停止正在执行的所有...

2020-05-02 15:12:53 904 1

原创 线程安全(五)线程状态和线程创建

本文写了线程的状态与创建方式,以及如何在java和jvm里如何存储。

2020-04-23 14:22:34 482

原创 线程安全(四)Java内存模型与volatile关键字

volatile

2020-04-16 17:35:03 235

原创 线程安全(三)实现方法sychronized与ReentrantLock(阻塞同步)

sychronized和lock

2020-04-14 16:22:39 1166

原创 线程安全(一)java对象头分析以及锁状态

对象头和锁状态

2020-04-09 17:55:18 927

原创 TCP连接的三次握手和四次挥手

1.TCP报文段首部格式为什么要介绍下首部格式,因为有几个概念需要先了解序号(Sequence number):TCP是面向字节流的,传送的每一个字节都按顺序编号,首部的序号字段值指的是本报文所发送的数据的第一个字节的序号。下一次发送的的序号值应为这次的序号加上数据字节长度。确认号(Acknowledgement number):期望对方下一个报文段的第一个数据字节的序号。确认ACK(A...

2020-02-03 15:08:26 309

原创 BeanFactory与ApplicationContext接口的区别

1.类图BeanFactoryBeanFactory常用的实现类是DefaultListableBeanFactory,调用者只需要使用getBean()方法就可以获得指定的引用,无须关心Bean的实例化过程。创建Spring容器的实例时,必须提供Spring容器管理的Bean的详细配置信息。Spring的配置信息通常采用XML配置文件来设置,因此,创建BeanFactory实例时,应该提供...

2020-01-17 16:49:55 580

原创 Spring Bean 的生命周期

Spring Bean 的生命周期

2019-12-12 16:55:21 149

原创 kafka代码样例(三)

写在最前目前很多java技术都需要linux环境,真是让人妥协啊。。。。。。 感觉学习需要分为三步 1. kafka原理 2. kafka环境搭建(需要Linux环境,搭建集群) 3. kafka代码 今天写下第三步kafka代码pom文件&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:x...

2018-03-12 00:00:26 508

原创 redis在windows的安装使用

windows下安装redis直接百度搜索redis的windows版本 我下的版本是: Redis-x64-3.2.100.zip (之后所有需要的东西我都会上传一份,包括这个压缩包,以及客户端工具) 解压后是这样 修改密码在redis.windows.conf下 在大概444行左右 windows启动数据库以及修改数据密码和操作数据命令启动服务端在解压...

2018-03-05 23:01:00 3563

原创 单例模式

概述单例模式*:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 单例模式从对象实例化的“急切”和“延迟“分为饿汉式单例模式和懒汉式单例模式。 饿汉式单例 优点:线程安全 缺点:加载类时会马上创建此唯一的单件实例,无法延迟加载懒汉式单例 优点:第一次使用时才会创建,即延迟加载 缺点:多线程危险单线程饿汉式单例public class Singleton

2018-01-31 11:38:55 207

原创 HashMap源码解析(jdk1.8)

写在篇头其实这是在我写完下边所有方法解析后写的。每次看源码,有些时候都不知道每一步的意义在哪里,缺少了自己的思考,直接看会枯燥,甚至不知所云。今天突然想换种说明方式。为什么会有HashMap这种结构,为了实现什么目的?为什么用这种结构?比其他结构的好在哪里? 实例:我知道了一个人的姓名,我想找他所有信息。怎么存储,怎么查找。 简单的键值对结构被设计出来Node; 如果很多

2018-01-19 18:05:49 268

原创 ArrayList源码解析

前提介绍:接口ListListE> 接口父接口CollectionE>有序的Collection,也称序列。ArrayList概述父类关系java.lang.Objectjava.util.AbstractCollectionjava.util.AbstractListjava.util.ArrayList实现接口List, RandomAccess, C

2018-01-17 16:32:33 305

原创 ConcurrentLinkedQueue的原理以及CAS机制在其中的应用

ConcurrentLinkedQueue是一个线程安全队列,区别于阻塞算法的锁机制,它使用了基于CAS机制的非阻塞算法。

2017-12-13 17:03:04 847

原创 线程安全(二)java中的CAS机制

java中的CAS机制

2017-12-11 18:25:35 1781

原创 Spring Cloud 配置文件切换(profiles的应用)

SpringCloud项目读取多种配置一种是properties文件,一种是yml文件,两种文件格式都支持多种配置(profiles)。

2017-12-06 14:58:16 10249 4

原创 三种工厂模式的学习

三种工厂模式分别为简单工厂模式(静态工厂)、工厂模式、抽向工厂模式

2017-11-16 10:41:26 974 3

原创 java实现HTTP的post请求 key-value格式与json格式的区别

java实现http形式的post请求key-value格式与json格式的区别

2017-06-06 18:06:28 13883

redis安装包(windows版)及客户端

windows下的redis安装包及客户端http://blog.csdn.net/do_finsh/article/details/79448723

2018-03-05

空空如也

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

TA关注的人

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