自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux中的零拷贝技术

一.传统的Linux数据传输方式传统的 Linux 系统的标准 I/O 接口(read、write)是基于数据拷贝的,也就是数据需要从内核高速缓存拷贝到用户缓存,或者从用户缓存拷贝到内核高速缓冲区的过程。 1.传统数据传输的优缺点: 好处:数据已经加载到了缓存中,一旦数据加载到缓存中就不再需要做磁盘IO操作 坏处: 需要做大量的用户态到内核态的切换,打打损耗了cpu的效率,同时也影响了数据的传输的速率;二.什么是零拷贝零拷贝技术的使用就是为了减少数据的拷贝次数,...

2021-07-23 16:36:31 283

原创 MySQL经典面试SQL汇总

MySQL经典面试SQL汇总1经典案例一.行转列,列转行1.行转列(顾名思义将多行转多列)案例:表结构数据如图所示;**分析:**按姓名将一个每个学生的多条分数记录合并成一行记录slq语句:##测试行转列(多行变多列)select user_NAME ,max(case course when '数学' Then score Else 0 end )数学,MAX(CASE course WHEN '英语' THEN score ELSE 0 END )英语,MAX(CASE cours

2020-12-14 20:52:56 298

原创 自定义线程池ThreadPoolExecutor

优雅使用线程池ThreadPoolExecutor实现自定义一.引言线程池想必大家也都用过,JDK的Executors 也自带一些线程池。但是不知道大家有没有想过,如何才是最优雅的方式去使用过线程池吗? 生产环境要怎么去配置自己的线程池才是合理的呢?为什么在阿里的开发手册中明确指出在使用线程池时一定要使用ThreadPoolExecutor?二.为什么要使用线程线程是稀缺资源,如果被无限制的创建,不 仅会消耗系统资源,还会降低系统的稳定性,因此Java中提供线程池对线程进行统一分配、 调优和监控的框

2020-11-28 15:34:29 1457 5

原创 Fastjson常用API

Fastjson常用API一.Fastjson常用的使用场景在前后端分离项目开发过程中常见的使用场景:场景1.前端请求后端服务接口时通常发送的是一个json格式的字符串,这时后端需要将这个字符串进行解析转换成一个JavaBean对象;场景2.有些时候为了数据在数据库中存储的方便经常需要将一个Java对象转换成一个json格式String对象,在数据库中使用一个字段进行保存;场景3.在接口中定义时,对于一些字段个数无法确定的对象,我们往往也会将这个对象定义成一个jsonData进行请求;以上几种场

2020-11-28 00:38:48 3661 7

原创 并发编程Callable使用及源码分析

并发编程Callable使用及源码分析一.带返回值的任务Callable介绍在日常开发中,为了提高应用的处理能力我们经常会使用到线程Executors处理任务,在使用线程池时避免不了需要调用线程池的execute(Runnable)或submit(Callable);对于大多数开发人员来说Runable接口并不陌生,实现起来也非常简单,只要实现Runnable接口重写run()方法即可。在日常的开发中使用最多的也是这种方式。但是如果我们想获取一个任务执行后的返回结果那么Runnable接口可能就无法满

2020-11-27 01:23:27 663 2

原创 mysql和redis双写一致性策略分析

mysql和redis双写一致性策略分析

2020-11-26 00:36:38 5257 5

原创 mybatis 批量操作增删改查

mybatis 批量操作增删改查一.foreach标签相关属性介绍在介绍批量操作之前首先需要了解一下关于批量操作的标签,我们都知道在Mybatis中我们使用foreach标签进行批量操作;foreach标签中相关属性介绍:这里值得注意的是:separator属性表示在元素之间使用什么样的分隔符进行分割,这里的元素是指在之间定义的部分为一个元素,正因有这个不同之处所以在进行IN操作和VALUES操作时会有所不同,后面会进行详细的讲解;二.批量增删改查操作讲解1.入参为List<?>

2020-11-20 21:04:53 592

原创 Mysql中B+Tree索引结构、遍历次数、磁盘io次数分析

Mysql中B+Tree索引结构、遍历次数、磁盘io次数分析一.Mysql数据库常见存储引擎1.可以作为索引文件的数据结构:二叉树,红黑树,hash表,B-tree,B+tree,但是二叉树,红黑树受到树高问题限制,hash表无法进行索引排序无法进行查询,B-tree无法充分利用非叶子节点的存储能力,所以在mysql数据库中最常用的索引存储数据结果为B+tree;2.索引文件组织结构:聚簇索引:索引字段+全部其他表字段保存在一个文件中,索引树的叶子节点即表中全量数据;非聚簇索引:索引字段和表中全

2020-11-07 01:56:00 4004 3

原创 SpringAOP应用之事务处理

SpringAOP应用之事务处理一.引言在Java服务端应用开发过程,Spring框架具有着举足轻重的作用,spring的出现为我们原本一些复杂的操作进行了透明化的封装,使得开发人员在编写代码时更加简洁,只需要把关注自己的业务即可;Spring框架的的两大作用:1.IOC(控制反转),DI(依赖注入)2.AOP (对特定的方法进行功能增强)本章我们主要讨论Spring的AOP技术,在Spring框架中AOP技术应用最为经典的案例就是对于事务的相关处理,下面就从Spring事务管理出发,帮助大家更

2020-11-02 23:48:16 339

原创 线程上下文切换时TSS任务状态段作用分析

线程上下文切换时TSS任务状态段作用分析1 什么是TSSTSS 全称task state segment,是指在操作系统进程管理的过程中,任务(进程/线程)切换时保存任务线程信息。任务状态段TSS的结构TSS段的最小长度为104字节,低104字节依照下列格式存放数据。在这104字节以外还可以存放I/O许可位图以及其他信息,相应增加TSS段长度。静态字段(通常不会被改变,任务创建时设置):(1) I/O位图基地址字段:I/O许可位图相对TSS开始处的16位偏移值;(I/O许可位图基址大于或等于

2020-10-17 21:00:53 722

原创 ThreadLocal线程变量的底层原理

ThreadLocal线程变量的底层原理1. ThreadLocal是什么ThreadLocal提供线程局部变量。这些变量与普通的变量不同之处在于,每个访问这种变量的线程(通过它的get或set方法)都有自己的、独立初始化的变量副本。例如:private int a = 1;private User user;像上面定义的这两个变量在我们的每一个线程中都会有一个他的副本,当前的线程所独享,这样就可以避免在多线程并发执行过程中的数据相互干扰的问题;2. ThreadLocal内部主要方法介绍主

2020-10-16 14:30:02 452 3

原创 Java多线程中notify,notifyAll,interrupt,join,sleep,yield的基本操作

Java多线程中notify,notifyAll,interrupt,join,sleep的基本操作一.Java中线程的生命周期二.notify,notifyAll,interrupt,join,sleep的基本操作(一)notify和notifyAll操作notify方法的工作情况package com.zczpeng.thread;public class NotifyTheadTest { /** * @param args */ public s

2020-09-29 15:51:07 424

原创 Servlet中的Filter和SpringMVC的Intercepter的异同

Servlet中的Filter和SpringMVC的Intercepter的异同1.相同点:Filter和Intercepter都是AOP的思想,都可以对方法进行增强,都可以进行方法的拦截;2.不同点:2.1Filter是Servlet规范的一套技术,是Servlet中研发的技术,属于Web容器中的技术;Intercepter属于SpringMVC框架中自己研发的技术。2.2Filter属于Servlet容器范畴所以Filter只能拦截到打到web容器上的web请求例如前端请求Tomcat容器;而

2020-09-28 18:16:04 324

原创 SpringAOP的5种增强类型应用讲解

SpringAOP的5种增强类型应用讲解一.前言spring框架中为我们提供的增强包括针对切面的增强和针对切入点的增强,对一个方法的增强底层使用的是动态代理,所以在学习springAop增强之前大家有必要先了解一下动态代理相关内容;本文分别采用继承接口和使用配置文件来实现增强。二.springAOP自带的增强类型按照增强在目标类方法中的连接点位置,可以分为5种:1.前置增强:org.springframework.aop.BeforeAdvice是前置增强顶层接口,因为Spring只持方法的增强

2020-09-27 21:26:05 1859

原创 我最常用的12种设计模式

我最常用的12种设计模式1.策略模式(Strategy): 定义了算法家族, 分别封装起来, 让它们之间可以互相替换.比如Collections.sort(List list, Comparator c); 可以通过实现多个Comparator接口来达到多种排序的目的.2.装饰着模式(Decorator): 动态的给一个对象添加一些额外的职责. 比如java.io包. BufferedInputStream封装了FileInputStream, 它们都实现了InputStream接口, 但前者实现了r

2020-09-25 00:51:37 315

原创 Spring中ApplicationListener简单的使用讲解

Spring中ApplicationListener简单的使用讲解背景ApplicationListener是Spring事件机制的一部分,与抽象类ApplicationEvent类配合来完成ApplicationContext的事件机制。一.原理讲解如果容器中存在ApplicationListener的Bean,当ApplicationContext调用publishEvent方法时,对应的Bean会被触发。这一过程是典型的观察者模式的实现。ApplicationListener源码@Func

2020-09-24 22:27:30 693

原创 利用BeanMap进行对象与Map的相互转换

利用BeanMap进行对象与Map的相互转换一.javabean与map转换的多种方式介绍1、通过ObjectMapper先将bean转换为json,再将json转换为map,但是这种方法比较绕,且效率很低,经测试,循环转换10000个bean,就需要12秒!!!不推荐使用2、通过java反射,获取bean类的属性和值,再转换到map对应的键值对中,这种方法次之,但稍微有点麻烦3、通过net.sf.cglib.beans.BeanMap类中的方法,这种方式效率极高,它跟第二种方式的区别就是因为使用了

2020-06-14 21:41:26 278

原创 linux中安装JDK+elasticsearch

linux中安装elasticsearch相关问题及解决办法安装单机版elasticsearch相关细节问题一.es与jdk的关系由于es是使用Java语言实现的搜索引擎,所以在linux上安装es之前一定要保证自己的虚拟机上已经安装了对应版本的jdk;1.简单介绍一下linux上安装jdk,下载jdk.gz安装包,上传到linux指定目录下,使用tar -zxvf 命令进行解压;2.配置环境变量进入 /etc/profile 文件中编辑export JAVA_HOME=/usr/local

2020-05-24 00:20:13 745

原创 线程池原理讲解及实际开发中如何正确使用线程池

详解 ThreadPoolExecutor 的参数含义及源码执行流程

2020-05-06 17:57:37 1313

原创 synchronized 和 ReentrantLock 的实现原理分析

synchronized 和 ReentrantLock 的实现原理分析在 JDK 1.5 之前共享对象的协调机制只有 synchronized 和 volatile,在 JDK 1.5 中增加了新的机制 ReentrantLock,该机制的诞生并不是为了替代 synchronized,而是在 synchronized 不适用的情况下,提供一种可以选择的高级功能。本文将为大家分析synchro...

2020-05-05 10:39:54 245 1

原创 MyBatis标签实现的动态SQL语句

MyBatis标签实现的动态SQL语句一.mybatis动态SQL的概述MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处理器相似。在 MyBatis 之前的版本中,有很多的元...

2020-05-05 01:20:23 228

原创 SVN配置及简单操作

SVN实际开发环境配置及操作src="//player.bilibili.com/player.html?aid=7959491&cid=13073189&page=1" scrolling=“no” border=“0” allowfullscreen=“true”> 视频原址:黑马程序员SVN视频教程什么是SVN?SVN是Subversion的简称,是一个开放源代码...

2020-05-03 12:24:02 2724

原创 idea环境下springboot项目父子多模块打包部署过程讲解

idea环境下springboot项目父子多模块打包部署过程讲解我们以一个使用idea构建的项目为例为大家讲解如何对springboot的父子模1块工程进行打包部署;1.项目工程结构父工程:ewe-hr子模块:core 不依赖其它模块子模块:user依赖core子模块:hr依赖user和core,并且hr模块是我们启动类application所在的模块2.各个子模块的pom文件的配置...

2020-05-01 23:05:58 10847 2

原创 SpringBoot与SpringCloud的版本对应关系

SpringBoot与SpringCloud的版本对应详细版问题分析初学spring cloud的朋友可能不知道,其实SpringBoot与SpringCloud需要版本对应,否则可能会造成很多意料之外的错误。因为无论是springboot还是springcould都已经做了相应的版本锁定和jar包冲突的排除,所以在使用springboot和springcould时一定要使用对应的版本进行开发...

2020-05-01 21:42:05 1086

原创 数据库四种隔离级别和数据库锁的原理

数据库四种隔离级别和对用的数据库锁的原理前言学习到了数据库的四种隔离级别,同时也对其原理产生一些兴趣,经过一些学习后写下感悟。一、四种隔离级别1. 未提交读未提交读的原理如下:事务对当前被读取的数据不加锁;事务在更新某数据的瞬间(就是发生更新的瞬间),必须先对其加行级共享锁,直到事务结束才释放。同时产生的问题就是脏读问题。所谓脏读:读取了错误的中间数据。行级共享锁通常也指读锁。...

2020-04-29 17:50:01 1004

原创 redis安装教程和开机自启动配置

redis 开机自启配置1、为了让redis-server能在系统启动时自动运行,需要将redis服务作为守护进程(daemon)来运行,找到一个redis.conf的文件,这个文件是redis服务运行时加载的配置,我们先观察一下其中的内容此文件内容非常长,但是大部分是注释,我们重点关注其中的几个设置daemonize和pidfile:其中daemonize默认值是false,pidfile...

2020-04-27 16:20:44 757

原创 java中四种线程池

介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用。本文是基础篇,后面会分享下线程池一些高级功能。1、new Thread的弊端执行一个异步任务你还只是如下new Thread吗?new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stu...

2020-04-25 21:43:52 263

原创 Swagger2高频注解解析

Swagger2常用注解说明这里只讲述@Api、@ApiOperation、@ApiImplicitParams、@ApiImplicitParam、@ApiParam、@ApiModel、@ApiModelProperty、ApiResponses、@ApiResponse这几个常用的。@Api:用在请求的类上,表示对类的说明常用参数:tags=“说明该类的作用,非空时将覆盖value的...

2020-04-16 22:58:34 320

原创 MongoDB GridFS原理分析

MongoDB GridFSGridFS简介GridFS是Mongo的一个子模块,使用GridFS可以基于MongoDB来持久存储文件。并且支持分布式应用(文件分布存储和读取)。作为MongoDB中二进制数据存储在数据库中的解决方案,通常用来处理大文件,对于MongoDB的BSON格式的数据(文档)存储有尺寸限制,最大为16M。但是在实际系统开发中,上传的图片或者文件可能尺寸会很大,此时我们可...

2020-04-15 20:02:03 605

原创 REST架构模式理解

REST架构模式理解万维网(World Wide Web)已经改变我们的生活方式,它不仅仅是一个超大的分布式应用它更是一个用于分布式计算的平台。Web服务、mashup(注1)及Aj锨应用都把web作为平台使用,而如今的Web服务却忽视了Web赖以成功的重要性――简单。本文通过用REST思想对已有的Web服务进行重构,thWeb服务回归“Web”理念。    一、REST和面向资源架构  ...

2020-04-14 22:54:45 373 1

原创 webservice、httpClient、dubbo的区别

webservice、httpClient、dubbo的区别在开发中,对于同一个war包中的对象方法我们可以直接调用,但是很多情况下需要在不同项目或者不同服务器进行相互调用webservicewebservice技术可以实现不同服务器项目直接的调用和交换数据,即使语言,协议,部署环境不同也可以实现。webService是使用soap协议而不是Http协议 ;WebService曾经认为是解决...

2020-04-14 19:35:50 355 1

空空如也

空空如也

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

TA关注的人

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