
Java后端前端
文章平均质量分 94
小小书童_9527
大家都是文化人
展开
-
Linux中的零拷贝技术
一.传统的Linux数据传输方式传统的 Linux 系统的标准 I/O 接口(read、write)是基于数据拷贝的,也就是数据需要从内核高速缓存拷贝到用户缓存,或者从用户缓存拷贝到内核高速缓冲区的过程。 1.传统数据传输的优缺点: 好处:数据已经加载到了缓存中,一旦数据加载到缓存中就不再需要做磁盘IO操作 坏处: 需要做大量的用户态到内核态的切换,打打损耗了cpu的效率,同时也影响了数据的传输的速率;二.什么是零拷贝零拷贝技术的使用就是为了减少数据的拷贝次数,...原创 2021-07-23 16:36:31 · 354 阅读 · 0 评论 -
Fastjson常用API
Fastjson常用API一.Fastjson常用的使用场景在前后端分离项目开发过程中常见的使用场景:场景1.前端请求后端服务接口时通常发送的是一个json格式的字符串,这时后端需要将这个字符串进行解析转换成一个JavaBean对象;场景2.有些时候为了数据在数据库中存储的方便经常需要将一个Java对象转换成一个json格式String对象,在数据库中使用一个字段进行保存;场景3.在接口中定义时,对于一些字段个数无法确定的对象,我们往往也会将这个对象定义成一个jsonData进行请求;以上几种场原创 2020-11-28 00:38:48 · 3783 阅读 · 7 评论 -
mysql和redis双写一致性策略分析
mysql和redis双写一致性策略分析原创 2020-11-26 00:36:38 · 5407 阅读 · 5 评论 -
mybatis 批量操作增删改查
mybatis 批量操作增删改查一.foreach标签相关属性介绍在介绍批量操作之前首先需要了解一下关于批量操作的标签,我们都知道在Mybatis中我们使用foreach标签进行批量操作;foreach标签中相关属性介绍:这里值得注意的是:separator属性表示在元素之间使用什么样的分隔符进行分割,这里的元素是指在之间定义的部分为一个元素,正因有这个不同之处所以在进行IN操作和VALUES操作时会有所不同,后面会进行详细的讲解;二.批量增删改查操作讲解1.入参为List<?>原创 2020-11-20 21:04:53 · 667 阅读 · 0 评论 -
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 · 4358 阅读 · 3 评论 -
SpringAOP应用之事务处理
SpringAOP应用之事务处理一.引言在Java服务端应用开发过程,Spring框架具有着举足轻重的作用,spring的出现为我们原本一些复杂的操作进行了透明化的封装,使得开发人员在编写代码时更加简洁,只需要把关注自己的业务即可;Spring框架的的两大作用:1.IOC(控制反转),DI(依赖注入)2.AOP (对特定的方法进行功能增强)本章我们主要讨论Spring的AOP技术,在Spring框架中AOP技术应用最为经典的案例就是对于事务的相关处理,下面就从Spring事务管理出发,帮助大家更原创 2020-11-02 23:48:16 · 398 阅读 · 0 评论 -
线程上下文切换时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 · 832 阅读 · 0 评论 -
ThreadLocal线程变量的底层原理
ThreadLocal线程变量的底层原理1. ThreadLocal是什么ThreadLocal提供线程局部变量。这些变量与普通的变量不同之处在于,每个访问这种变量的线程(通过它的get或set方法)都有自己的、独立初始化的变量副本。例如:private int a = 1;private User user;像上面定义的这两个变量在我们的每一个线程中都会有一个他的副本,当前的线程所独享,这样就可以避免在多线程并发执行过程中的数据相互干扰的问题;2. ThreadLocal内部主要方法介绍主原创 2020-10-16 14:30:02 · 515 阅读 · 3 评论 -
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 · 391 阅读 · 0 评论 -
Spring中ApplicationListener简单的使用讲解
Spring中ApplicationListener简单的使用讲解背景ApplicationListener是Spring事件机制的一部分,与抽象类ApplicationEvent类配合来完成ApplicationContext的事件机制。一.原理讲解如果容器中存在ApplicationListener的Bean,当ApplicationContext调用publishEvent方法时,对应的Bean会被触发。这一过程是典型的观察者模式的实现。ApplicationListener源码@Func原创 2020-09-24 22:27:30 · 738 阅读 · 0 评论 -
利用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 · 325 阅读 · 0 评论 -
synchronized 和 ReentrantLock 的实现原理分析
synchronized 和 ReentrantLock 的实现原理分析在 JDK 1.5 之前共享对象的协调机制只有 synchronized 和 volatile,在 JDK 1.5 中增加了新的机制 ReentrantLock,该机制的诞生并不是为了替代 synchronized,而是在 synchronized 不适用的情况下,提供一种可以选择的高级功能。本文将为大家分析synchro...原创 2020-05-05 10:39:54 · 282 阅读 · 1 评论 -
MyBatis标签实现的动态SQL语句
MyBatis标签实现的动态SQL语句一.mybatis动态SQL的概述MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处理器相似。在 MyBatis 之前的版本中,有很多的元...原创 2020-05-05 01:20:23 · 259 阅读 · 0 评论 -
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 · 2811 阅读 · 0 评论 -
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 · 11616 阅读 · 2 评论 -
SpringBoot与SpringCloud的版本对应关系
SpringBoot与SpringCloud的版本对应详细版问题分析初学spring cloud的朋友可能不知道,其实SpringBoot与SpringCloud需要版本对应,否则可能会造成很多意料之外的错误。因为无论是springboot还是springcould都已经做了相应的版本锁定和jar包冲突的排除,所以在使用springboot和springcould时一定要使用对应的版本进行开发...原创 2020-05-01 21:42:05 · 1167 阅读 · 0 评论 -
数据库四种隔离级别和数据库锁的原理
数据库四种隔离级别和对用的数据库锁的原理前言学习到了数据库的四种隔离级别,同时也对其原理产生一些兴趣,经过一些学习后写下感悟。一、四种隔离级别1. 未提交读未提交读的原理如下:事务对当前被读取的数据不加锁;事务在更新某数据的瞬间(就是发生更新的瞬间),必须先对其加行级共享锁,直到事务结束才释放。同时产生的问题就是脏读问题。所谓脏读:读取了错误的中间数据。行级共享锁通常也指读锁。...原创 2020-04-29 17:50:01 · 1077 阅读 · 0 评论 -
redis安装教程和开机自启动配置
redis 开机自启配置1、为了让redis-server能在系统启动时自动运行,需要将redis服务作为守护进程(daemon)来运行,找到一个redis.conf的文件,这个文件是redis服务运行时加载的配置,我们先观察一下其中的内容此文件内容非常长,但是大部分是注释,我们重点关注其中的几个设置daemonize和pidfile:其中daemonize默认值是false,pidfile...原创 2020-04-27 16:20:44 · 839 阅读 · 0 评论 -
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 · 307 阅读 · 0 评论 -
Swagger2高频注解解析
Swagger2常用注解说明这里只讲述@Api、@ApiOperation、@ApiImplicitParams、@ApiImplicitParam、@ApiParam、@ApiModel、@ApiModelProperty、ApiResponses、@ApiResponse这几个常用的。@Api:用在请求的类上,表示对类的说明常用参数:tags=“说明该类的作用,非空时将覆盖value的...原创 2020-04-16 22:58:34 · 386 阅读 · 0 评论 -
MongoDB GridFS原理分析
MongoDB GridFSGridFS简介GridFS是Mongo的一个子模块,使用GridFS可以基于MongoDB来持久存储文件。并且支持分布式应用(文件分布存储和读取)。作为MongoDB中二进制数据存储在数据库中的解决方案,通常用来处理大文件,对于MongoDB的BSON格式的数据(文档)存储有尺寸限制,最大为16M。但是在实际系统开发中,上传的图片或者文件可能尺寸会很大,此时我们可...原创 2020-04-15 20:02:03 · 682 阅读 · 0 评论 -
webservice、httpClient、dubbo的区别
webservice、httpClient、dubbo的区别在开发中,对于同一个war包中的对象方法我们可以直接调用,但是很多情况下需要在不同项目或者不同服务器进行相互调用webservicewebservice技术可以实现不同服务器项目直接的调用和交换数据,即使语言,协议,部署环境不同也可以实现。webService是使用soap协议而不是Http协议 ;WebService曾经认为是解决...原创 2020-04-14 19:35:50 · 393 阅读 · 1 评论 -
REST架构模式理解
REST架构模式理解万维网(World Wide Web)已经改变我们的生活方式,它不仅仅是一个超大的分布式应用它更是一个用于分布式计算的平台。Web服务、mashup(注1)及Aj锨应用都把web作为平台使用,而如今的Web服务却忽视了Web赖以成功的重要性――简单。本文通过用REST思想对已有的Web服务进行重构,thWeb服务回归“Web”理念。 一、REST和面向资源架构 ...原创 2020-04-14 22:54:45 · 428 阅读 · 1 评论