- 博客(82)
- 资源 (50)
- 收藏
- 关注
转载 redis源码分析之AOF重写
一、背景 AOF是Redis增量模式的持久化方式,随着redis的持续运行,会不断有新的数据写入AOF文件中,逐渐占用大量磁盘空间,还会降低Redis启动时候的回放加载效率。Redis中有rewrite机制来合并AOF历史记录。 说明:阅读此文需要对redis有一定的了解,比如redis配置文件、redis持久化概念、redis事件。 本文基于朋友发来的一份AOF重写日志,本文源码围绕此日志展开,通过日志+源码的方式来分析AOF重写过程,重写日志截图如下:为了后续看代码方便,...
2022-01-27 17:32:15
2259
原创 juc并发包整理
目录JUC提供了java并发编程需要的类,主要分几个大模块1 原子类操作2 锁3 阻塞队列4 并发集合5 同步器6 线程池7异步组合编程JUC的作者Doug Lea神一样的人物,其中以上很多类的实现底层实现都是基于AQS,对于想了解JUC包的思想,建议先看看AQS的实现.可以参考这篇文章AQS什么是AQSaqs全称为AbstractQueuedSynchronizer,它提供了一个FIFO队列,可以看成是一个用来实现同步锁以及其他涉及到同步功能的核心组件,常见的有:Reentran
2021-04-06 18:33:02
794
转载 【Redis】批量删除Key的三种方式
Redis 中有删除单个 Key 的指令 del,但好像没有批量删除 Key 的指令,不过我们可以借助 Linux的 xargs 指令来完成这个动作一.使用命令行批量删除redis的key语法./redis-cli -h IP -p PORT -a PASSWORD -n NUM keys ‘key*’ | xargs ./redis-cli -h IP -p PORT -a PASSWORD -n NUM delIP:redis服务器的IP地址PORT:redis服务的端口PASSWO
2021-04-02 18:00:26
16274
原创 Spring事务失效的 8 大原因,与事物传播行为对比测试!!!
https://mp.weixin.qq.com/s/1TEBnmWynN4nwc6Q-oZfvw
2021-04-02 13:55:38
366
原创 Mysql事务实现原理
开篇相信大家都用过事务以及了解他的特点(事物的四大特性),如原子性(Atomicity),一致性(Consistency),隔离型(Isolation)以及持久性(Durability)等。今天想跟大家一起研究下事务内部到底是怎么实现的,在讲解前我想先抛出个问题:事务想要做到什么效果?按我理解,无非是要做到可靠性以及并发处理。可靠性:数据库要保证当insert或update操作时抛异常或者数据库crash的时候需要保障数据的操作前后的一致,想要做到这个,我需要知道我修改之前和修改之后的状态,所以就有
2021-03-24 14:47:32
354
原创 dubbo的SPI
SPI(Service Provider Interface)本质是 将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。在Java中SPI是被用来设计给服务提供商做插件使用的。基于策略模式 来实现动态加载的机制。我们在程序只定义一个接口,具体的实现交个不同的服务提供者;在程序启动的时候,读取配置文件,由配置确定要调用哪一个实现;通过 SPI 机制为我们的程序提供拓展功能,在dubbo中,基于 SPI,我们可以很容易的对 Du
2021-03-16 17:29:04
134
原创 hashmap中为什么使用红黑树?
在回答这个问题之前,我们先了解一下有关二叉树的基本内容。①二叉排序树(又称二叉查找树):1)若左子树不为空,则左子树上所有结点的值均小于根结点的值。2)若右子树不为空,则右子树上所有结点的值均大于根节点的值。3)左右子树也为二叉排序树。②平衡二叉树(AVL树):是一种二叉查找树,当且仅当两个子树的高度差不超过1时,这个树是平衡二叉树。③红黑树:是许多二叉查找树中的一种,不严格的平衡二叉树,即不像AVL那样要求节点的 |balFact| <= 1,它只要求部分达到平衡,但是提出了为节点增
2021-03-11 14:55:01
4066
2
原创 ES索引结构、存储原理及 增量添加索引
ES索引结构及存储原理ES(ElasticSearch)是一款分布式全文检索框架,底层基于基于Lucene实现。Elasticsearch中的字段类型可以分为两类:精确值和全文。精确值 如它们听起来那样精确。例如日期或者用户 ID,但字符串也可以表示精确值,例如用户名或邮箱地址。对于精确值来讲,Foo 和 foo 是不同的,2014 和 2014-09-15 也是不同的。另一方面,全文 是指文本数据(通常以人类容易识别的语言书写),例如一个推文的内容或一封邮件的内容。精确值很容易查询。结果是二进制的:
2021-03-08 19:32:23
4693
1
原创 MongoDB的索引与执行计划
索引定义索引(Index)是帮助数据库高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。索引的数据结构现在的数据库(mongo,mysql等)索引多采用B-Tree数据结构,不懂BTree的同学先自行去了解下,个人觉得这篇文章比较易懂一些,http://www.cnblogs.com/coder2012/p/5309197.html为什么使用B-Tree(B+Tree)红黑树等数据结构也可以用来实现索引,但是文件系统及数据库系统普遍采用B-/+Tree作为索引结构。为什么
2021-03-04 18:55:24
877
2
转载 Java服务内存泄漏的排查
一、内存溢出和内存泄露一种通俗的说法。1、内存溢出:你申请了10个字节的空间,但是你在这个空间写入11或以上字节的数据,出现溢出。2、内存泄漏:你用new申请了一块内存,后来很长时间都不再使用了(按理应该释放),但是因为一直被某个或某些实例所持有导致 GC 不能回收,也就是该被释放的对象没有释放。下面具体介绍。1.1 内存溢出java.lang.OutOfMemoryError,是指程序在申请内存时,没有足够的内存空间供其使用,出现OutOfMemoryError。产生原因产生该错误的原因主
2021-03-02 18:39:05
523
1
原创 BIO、NIO和AIO的区别和应用
先弄清几个概念:1.同步:使用同步IO时,Java自己处理IO读写。2.异步:使用异步IO时,Java将IO读写委托给OS处理,需要将数据缓冲区地址和大小传给OS,完成后OS通知Java处理(回调)。3.阻塞:使用阻塞IO时,Java调用会一直阻塞到读写完成才返回。4.非阻塞:使用非阻塞IO时,如果不能立马读写,Java调用会马上返回,当IO事件分发器通知可读写时在进行读写,不断循环直到读写完成。下面是重点了(敲黑板!)!1.BIO:同步并阻塞,就是传统的 java.io 包,它是基于流模型实现
2021-02-25 17:19:02
248
原创 java类加载过程(双亲委派模型)和 破坏双亲委派 及 tomcat类加载器
一、java类加载过程(双亲委派模型)我们先来看一张图片,有助于理解类加载器与类加载过程。概念虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接时候用的Java类型。类的生命周期类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、(验证、准备、解析)连接、初始化、使用、卸载。其中验证、准备、解析统称为连接上图中,加载、验证、准备、初始化和卸载这5个阶段的顺序是确定的,类的加载过程必须严格按照这种顺序开始。解析阶段
2021-02-22 18:38:06
489
转载 SpringAOP配置与使用
SpringAOP简介 面向切面编程(Aspect Oriented Programming)提供了另一种角度来思考程序的结构,通过这种方式弥补面向对象编程(Object Oriented Programming)的不足。除了类以外,AOP提供了切面,切面对关注点进行模块化,例如横切多个类型和对象的事务管理(这些关注点术语通常称作横切(crosscutting)关注点)。Spring AOP是Spring的一个重要组件,但是Spring IOC并不依赖于Spring AOP,这意味着你可以自由选择...
2021-02-09 19:28:14
102
转载 REDIS缓存穿透,缓存击穿,缓存雪崩原因+解决方案
1、前言在我们日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度比较慢的问题而存在严重的性能弊端,一瞬间成千上万的请求到来,需要系统在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承受的,极其容易造成数据库系统瘫痪,最终导致服务宕机的严重生产问题。为了克服上述的问
2020-12-03 21:10:07
129
转载 幂等问题解决方案
概念幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。 在编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“getUsername()和setTrue()”函数就是一个幂等函数。用通俗的话讲:就是针对一个操作,不管做多少次,产生效果或返回的结果都是一样的举几个例子:
2020-11-26 12:18:23
368
转载 分布式唯一ID生成方案是什么样的?
分布式唯一ID生成方案是什么样的?(转) 一、前言分布式系统中我们会对一些数据量大的业务进行分拆,如:用户表,订单表。因为数据量巨大一张表无法承接,就会对其进行分库分表。但一旦涉及到分库分表,就会引申出分布式系统中唯一主键ID的生成问题,永不迁移数据和避免热点的文章中要求需要唯一ID的特性: 整个系统ID唯一 ID是数字类型,而且是趋势递增的 ID简短,查询效率快 什么是递增?如:第一次生成的ID为12,下一次生成的ID是13,再下一次生成的ID是14。这个就是生成
2020-11-26 12:07:30
106
原创 MySqL 锁的学习笔记
mysql的锁的概述 锁的概率:某个链接对某个资源(可以是一张表,也有可能是一行或者多行记录)进行加锁操作,根据锁的不同功能,决定在加锁期间,其他链接是否允许对该资源有相应的处理权限。 那么mysql究竟有哪几种类锁呢?一、按操作划分,可分为DML锁、DDL锁二、按锁的粒度划分,可分为表级锁、行级锁、页级锁(mysql BDB支持)三、按锁级别划分,可分为共享锁、排他锁四、按加锁方式划分,可分为自动锁、显示锁五、按使用方式划分,可分为乐观锁、悲观锁DML锁(dat
2020-11-04 17:36:19
187
1
原创 java学习笔记——商城项目练习——Activemq整合spring、添加商品时同步到索引库、商品详情页面展示(向业务逻辑中添加缓存)
Activemq整合spring1.1. 使用方法第一步:除了引用activemq的依赖外,还要引用相关的jar包。 <dependency> <groupId>org.springframework</groupId> <...
2019-12-19 17:37:22
231
原创 java学习笔记——商城项目练习——solrCloud集群搭建,使用solrJ管理集群,全局异常处理,ActiveMQ基础
solrCloud集群搭建什么是SolrCloudSolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud。当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高,这时需要使用SolrCl...
2019-12-17 11:35:23
207
原创 java学习笔记——商城项目练习——solr服务的安装与使用,数据库数据导入solr索引库,solrJ的使用,商城项目搜索功能实现
1,Solr服务搭建1.1. Solr的环境Solr是java开发。需要安装jdk。安装环境Linux。需要安装Tomcat。1.2. 搭建步骤第一步:把solr 的压缩包上传到Linux系统第二步:解压solr。第三步:安装Tomcat到目录/usr/local/solr/下,解...
2019-12-09 14:18:11
230
原创 java学习笔记——商城项目练习——redis的安装与使用,Redis集群,Jedis工具类的使用,商场项目使用Redis做缓存
Redis的安装1. Redis的安装 redisd的安装还是比较简单的,直接源码安装也很快。Redis是c语言开发的。安装redis需要c语言的编译环境。如果没有gcc需要在线安装。yum install gcc-c++安装步骤:第一步:redis的源码包上传到linux系统。第二...
2019-12-04 14:30:32
216
原创 java学习笔记——众筹项目练习——文件上传进度条、quartz石英调度
文件上传进度条 还记得在前面的文章我们实现的功能当中有文件上传的功能吗?今天我们来为文件上传美化一下,添加一个文件上传的进度条来实时显示文件上传的进度。说干就干!实现方法很简单,也就不使用任何插件了,我们的文件上传是使用ajax实现的。那我们就在ajax中获取到文件上传的实时信息,并这些实时信息显示在...
2019-08-16 19:58:33
338
2
原创 java学习笔记——众筹项目练习——前台系统的实名认证功能、ajax发送跨域请求、后台manager系统的实名认证人工审核
实名认证功能前面的文章中我们实现了后台manager系统中的流程管理功能,并且将实名认证的流程上传到了服务器并完成部署。不过,仅仅是长传和部署当然不是我们的目的啦!我们上传这个实名认证流程时为了可以让前台的广大用户可以使用这个流程,怎么才能使用这个功能呢?那当然是每个用户都需要的实名认证功能啦!...
2019-08-09 20:01:26
1756
1
原创 java学习笔记——众筹项目练习——前台web系统的注册、登录功能(使用httpclient进行远程调用),后台系统中的流程管理功能(activiti在项目中的使用)
前台web系统的注册、登录功能(httpclient的使用)现在我们来实现一下前台web端系统的注册与登录功能!在前边的文章中,我们对整个众筹系统的组织机构有了一些了解,整个系统中manager-web、scw-portal、scw-restapi三个项目时可以独立运行的war项目。manager-web是专门为系统管理人员提供服务的后台系统。scw-...
2019-07-24 19:47:10
601
原创 java学习笔记——众筹项目练习——后台manager程序广告管理、使用ajax发送数据
manager程序广告管理我们的众筹项目是由两个子系统组成的,管理员使用的manager系统和会员使用的众筹系统。在前面的文章中我们基本上已经将manager程序中的正删改查功能都介绍完啦!今天本来打算开始实行前台会员使用的众筹系统,可是打开众筹系统首页的原型页面时想到,首页展示的3个广告哪里来的???靠!当...
2019-06-26 17:53:41
373
1
原创 java学习笔记——众筹项目练习——工作流程框架Activiti5
工作流程框架Activiti5在我们实际的项目开发中,有时业务流程很复杂,类似的业务也很多。这样我们开发起来就会很复杂。像我们练习的众筹网项目中的资质认证模块,开发时的功能不过就是简单的增删改查,可是业务流程很繁琐,同时又有很多种情况。如果我们不使用工具自己来开发的话就会很麻烦!这时我们就需要使用工作流程框架啦!Acti...
2019-06-18 16:16:08
689
原创 java学习笔记——众筹项目练习——项目中的忘记密码(密码找回)与记住我(自动登录)功能 和 返回json数据低版本浏览器显示下载问题的解决、众筹系统架构重构
忘记密码(密码找回) 忘记密码(密码找回)这个功能可以说是目前所有为别人提供服务的软件系统都具备的基础功能啦!很普遍,因为总会有人忘记了自己的密码,这个时候就会选择忘记密码功能,根据自己注册账号时使用的证件号码(比如邮箱地址、手机号码、身份证号等)以某种方式(比如发邮件、发送手机短信息等)来重新设...
2019-06-10 16:02:04
1642
原创 java学习笔记——众筹项目练习——邮件开发
邮件开发前一篇文章我们完成了众筹项目中manager程序当中的整个权限管理的开发,项目中普通的增删改查,RBAC权限模型、以及页面中树形结构的显示,模态框的显示,我们都已经了解啦!接下来呢!我们应该尝试新的功能啦,也是很多程序都拥有的基本功能,(忘记密码与自动登录功能),相信这两个功能对我们来说...
2019-05-30 20:33:49
1619
原创 java学习笔记——众筹项目练习——后台manager程序--权限管理的全部功能,模糊查询数据的分页显示,全选与单选的联动,模态框与zTree的联合使用,RBAC权限模型的简单使用
权限管理在前面我练习了管理员的注册和登录,并成功的登录到了控制面板main.jsp页面,今天我们就来试着实现一下控制面板页面中的功能。在控制面板中,我们最先注意到的也是最重要的功能就是权限管理,并且在前面的文章中也介绍了RBAC权限模型的概念与数据库中表的实现。好,我们一起一点一点的来完...
2019-05-22 19:30:02
687
原创 java学习笔记——众筹项目练习——后台manager程序的用户模块-管理员登录功能、树形结构显示插件zTree的简单使用、RBAC权限模型介绍
用户模块-管理员登录功能有了前边我们练习管理员注册功能的基础,这个登录功能就简单多了,无非就是在登录页面取得用户的登录信息,在程序中进行查询数据库的操作,查到了表示,表示用户登录信息正确,登录成功并携带查询到的所有用户信息跳转到控制面板main.jsp,以供后序页面使用。如果没有查到,表示用户登录信息不正确,登录失...
2019-04-02 17:13:51
2084
原创 java学习笔记——众筹项目练习——后台manager程序的用户模块-管理员注册功能、form表单校验插件jquery-validation-1.13.1的使用、数据库表保存唯一账号设置
用户模块-管理员注册功能不管是前台程序,还是后台程序都是可以独立运行web服务程序,只是面向的用户不同而已,前台的用户更加广泛(所有需要此功能的用户)。后台的用户则是管理员,用于对整个程序平台的管理。不管是前台还是后台都需要数据库表存储各种信息,都需要界面来与用户进行互动,所以前边我们介绍了数据建模工具(PowerDesig...
2019-03-26 20:24:02
1765
原创 java学习笔记——众筹项目练习——数据建模工具(PowerDesigner)与前端框架bootstrap体验
数据建模工具(PowerDesigner)之前我们在生成数据库表的时候生成了许多的数据库表,如果我们在数据库中一张一张的创建每个表,实在是太麻烦了,并且也容易出错。所以这里我们需要使用数据建模工具(PowerDesigner)。(PowerDesigner)为我们提供了方便的数据库表设计方法,这里简单了解一下吧! 安装 安...
2019-03-20 19:27:12
800
原创 java学习笔记——众筹项目练习——基于maven的基础环境搭建
基于maven的基础环境搭建前面我们学习了如何使用maven,今天我们就使用maven来搭建一个基础的开发环境:根据项目模块进行拆分与依赖、根据maven整合ssm。 项目模块间的分包与依赖 为了在项目开发时更加简洁与快速,我们会对整个项目进行拆分,拆分的方式有两种:横线拆分与纵向拆分,横向拆分是...
2019-03-14 20:28:54
834
原创 java学习笔记——众筹项目练习——maven的安装与使用
Maven经过前面ssm等知识的学习,从这篇开始打算着手众筹小项目的练习,用于融合之前学过的知识,以此来记录自己的学习过程;首先来学习使用maven。1.Maven简介 1.1 Maven翻译为“专家”,“内行”1.2 Maven是跨平台的项目管理工具。作为Apache组织提供...
2019-02-12 11:38:34
780
原创 java学习笔记——mybatis 之 两个关于mybatis知识的补充(MBG-逆向工程 与 分页插件pageHelper)
MBG-逆向工程 MBG:MyBatis Generator:代码生成器;MyBatis官方提供的代码生成器;帮我们逆向生成;正向:table----javaBean---BookDao---dao.xml---xxx逆向工程:(table表需要我们自己创建)根据数据表t...
2019-01-28 17:14:33
295
原创 java学习笔记——mybatis 之 ssm整合
SSM整合前面我们学习了spring 、springmvc和 mybatis,今天我们来整合一下,集成开发环境,让他们能够一起为我们工作;SSM;Spring+SpringMVC+MyBatis1、导包 1)、Spring【aop核心】com.spri...
2019-01-23 16:23:50
201
原创 java学习笔记——mybatis 之 动态SQL、_parameter变量与_databaseId 变量、OGNL了解、缓存与添加第三方缓存库EHChache
前面学习使用mybatis时会发现,我们之前自己在程序中写sql访问数据库时,有时候情况会很复杂,需要程序自己根据实际的情况,进行各种判断,进行拼接字符串,最终生成响应的sql语句,列如:string sql;sql += "select * from t_cat";if(name != null && name != ""){sql += "name =...
2018-12-24 18:20:23
421
原创 java学习笔记——mybatis 之 mybatis介绍 、 helloworld程序 、全局配置文件 、SQL映射文件
1、MyBatis简介 希望:最好有一个框架能支持定制化sql,而且还功能强大;sql也不要硬编码在java文件中(导致维护修改起来比较麻烦); 1)、MyBatis将重要的步骤抽取出来可以人工定制,其他步骤自动化;2)、重要步骤都是写在配置文件中(好维护);3)、完全解决数据库的优化问题;4)、MyBatis底层就是对原生JDBC的一个简...
2018-09-25 18:19:10
196
原创 java学习笔记——springmvc 之 Spring整合SpringMVC
十五、Spring整合SpringMVC_提出问题 1、Spring 与SpringMVC的整合问题:需要进行 Spring 整合 SpringMVC 吗 ? 还是否需要再加入 Spring 的 IOC 容器 ? 是否需要在web.xml 文件中配置启动 Spring IOC 容器的 ContextLoaderListener ? 需要: 通常情况下, 类似于数据源, 事务,...
2018-09-05 15:32:16
255
原创 java学习笔记——springmvc 之 拦截器 与 异常处理 和 SpringMVC的运行流程总结
十二、 拦截器1、自定义拦截器概述Spring MVC也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必须实现HandlerInterceptor接口 preHandle():这个方法在业务处理器处理请求之前被调用,在该方法中对用户请求 request 进行处理。如果程序员决定该拦截器对请求进行拦截处理后还要调用其他的拦截器,或者是业务处理器去...
2018-09-04 18:33:02
1122
IM长连接相关工程代码与xmind图
2022-04-07
服务器远程登录工具SecureCRT
2022-04-07
ActiveMQ-5.12.0.zip
2019-12-17
商城项目的搜索功能示例代码-使用solrj.zip
2019-12-09
e3mall-内容管理功能中redis做缓存的使用.zip
2019-11-28
e3mall.zip
2019-11-26
FastDFS.zip
2019-11-20
nginx与keepalived和lvs高可用配置.zip
2019-11-13
zookeeper-3.4.6___dubbo-admin.zip
2019-10-31
lucene-IKAnalyzer2012_u6-lukeall.rar
2019-10-21
maven_git_Jenkins.rar
2019-10-18
securecrt(远程连接工具)_FileZilla-3(ftp连接工具).rar
2019-09-19
jdk-8_tomcat-7_MySQL-client-5_MySQL-server-5.rar
2019-09-19
使用activiti流程实名认证、ajax跨域.rar
2019-08-09
前台web系统的注册、登录功能(使用httpclient进行远程调用),后台系统中的流程管理功能(activiti在项目中的使用)列子程序代码.rar
2019-07-24
activiti插件与用户手册.rar
2019-06-18
javamail邮件开发.rar
2019-05-30
树形结构显示插件zTree_v3-3.5.28
2019-04-02
bootstrap库与中文说明文档还有jQuery库.rar
2019-03-20
数据建模工具(PowerDesigner165_破解文件)的压缩包
2019-03-20
Maven 和Maven下载的jar包库
2019-02-12
添加第三方缓存库EHChache使用的jar和xml
2018-12-29
mybatis练习helloworld需要的jar包
2018-09-25
hibernate-validator-5.0.0.CR2-dist.zip
2018-08-25
springmvc 之 RestfulCRUD实例练习工程
2018-08-23
springsource-tool-suite-3.8.1.RELEASE-e4.5.2-updatesite.zip
2018-08-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人