——java——
文章平均质量分 86
STILLxjy
不要让任何人打乱你生活的节奏
展开
-
(Redis) RDB与AOP持久化的实现与本质区别
Redis服务器Redis是一个键值对数据库服务器,服务器中通常包含着任意个非空数据库,而每个非空数据库中又可以包含任意个键值对,我们将服务器中的非空数据库以及它们的键值对统称为数据库状态。 例如,下图就是一个包含三个数据库以及数据控中的键值对的服务器的数据库状态。Redis是内存数据库,它将自己的数据库状态存在内存中,所以如果不想办法将存储在内存中的数据库状态保存在磁盘中,那么一旦服务器进程退出,服务器中的数据库状态也会消失不见。RDB持久化Redis提供了RDB持久化功能,可以将Redis内原创 2021-01-09 15:37:11 · 733 阅读 · 0 评论 -
(Redis) 跳跃表(skiplist)实现原理
跳跃表简介跳跃表(skiplist)是一种随机化的数据, 由 William Pugh 在论文《Skip lists: a probabilistic alternative to balanced trees》中提出, 跳跃表以有序的方式在层次化的链表中保存元素, 效率和平衡树媲美 —— 查找、删除、添加等操作都可以在对数期望时间下完成, 并且比起平衡树来说, 跳跃表的实现要简单直观得多。以下是个典型的跳跃表例子(图片来自维基百科):有序链表如下图所有,有一个有序(按score从小到大排序)双向原创 2021-01-05 22:41:52 · 626 阅读 · 1 评论 -
(Mysql) 事务隔离级别
事前准备为了故事的顺利发展,我们需要创建一个表:然后向这个表里插入一条数据:INSERT INTO hero VALUES(1, ‘刘备’, ‘蜀’);现在表里的数据就是这样的:事务隔离级别我们知道MySQL是一个客户端/服务器架构的软件,对于同一个服务器来说,可以有若干个客户端与之连接,每个客户端与服务器连接上之后,就可以称之为一个会话(Session)。每个客户端都可以在自己的会话中向服务器发出请求语句,一个请求语句可能是某个事务的一部分,也就是对于服务器来说可能同时处理多个事务。在事务原创 2021-01-04 21:20:38 · 331 阅读 · 0 评论 -
(Mysql) 事务简介
事务简介对于大部分程序员来说,他们的任务就是把现实世界的业务场景映射到数据库世界。比如银行为了存储人们的账户信息会建立一个account表:狗哥和猫爷是一对好基友,他们都到银行开一个账户,他们在现实世界中拥有的资产就会体现在数据库世界的account表中。比如现在狗哥有11元,猫爷只有2元,那么现实中的这个情况映射到数据库的account表就是这样:在某个特定的时刻,狗哥猫爷这些家伙在银行所拥有的资产是一个特定的值,这些特定的值也可以被描述为账户在这个特定的时刻现实世界的一个状态。随着时间的流逝,原创 2021-01-04 20:58:27 · 187 阅读 · 0 评论 -
(Mysql) MVCC多版本并发控制原理详解
版本链我们创建一个hero表:CREATE TABLE hero (number INT,name VARCHAR(100),country varchar(100),PRIMARY KEY (number)) Engine=InnoDB CHARSET=utf8;然后向这个表里插入一条数据:INSERT INTO hero VALUES(1, ‘刘备’, ‘蜀’);现在表里的数据就是这样的:对于使用InnoDB存储引擎的表来说,它的聚簇索引记录中除了包含用户定义的列外,还包含两个必原创 2021-01-04 20:16:41 · 926 阅读 · 0 评论 -
(MySql) InnoDB索引的本质和快速查询过程
本文涉及的范围包括:1:到底什么是InnoDB引擎的索引,它的本质是什么,是如何实现的,实现的思路是什么?2:根据索引的实现思路,当我们要查询一条数据(行记录)时,查询语句的查询过程是什么?说到数据库引擎的索引,我们都知道它的作用是提高数据的查询速度,即在成千上万条记录中,如何快速的找到我们需要的数据?要搞清楚这个过程,首先我们需要搞懂,我们插入到数据库中的数据是如何存储和表示的。InnoDB行格式:一条数据是如何存储的InnoDB定义了4中行格式:COMPACT行格式,Redundant行格式,原创 2020-12-21 20:58:46 · 1525 阅读 · 1 评论 -
[Java] 自定义验证码
效果展示:HTML代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Register</title> <script> window.onload = function(){ //获取图片对象 var img = document.ge原创 2020-07-09 16:14:05 · 176 阅读 · 0 评论 -
[Java 反射:框架设计的灵魂] 基于自定义注解,实现在不改变任何代码的前提下,可以创建任意对象,并执行任意方法
目录需求步骤实现需求实现一个“框架”类,在不改变任何代码的前提下,可以创建任意对象,并执行任意方法。步骤获取注解定义的位置的对象 (Class, Method, Field)获取指定的注解:getAnnotation(Class)调用注解中的抽象方法获取配置的属性值实现1:自定义一个名为Pro的注解类,包括抽象方法:className()methodName()2:实现框架类其中://2 获取类上的注解对象Pro an = reflectTest2Class.getAnn原创 2020-06-16 22:07:28 · 323 阅读 · 0 评论 -
[Java 反射:框架设计的灵魂] 基于配置文件,实现在不改变任何代码的前提下,可以创建任意对象,并执行任意方法
目录反射:基础概念获取Class对象的方法Class对象功能案例(反射的魅力)反射:基础概念框架:半成品软件。反射:将类的各个组成部分封装为其他对象,这就是反射机制。光看概念可能不太好理解,我们先来看看java代码的三个阶段:源代码阶段Class类对象阶段运行时阶段如上图,两个红色框中的内容。将javac编译获得的字节码文件加载进内存,并将类中定义的 成员变量,构造函数,成员方法 分别封装为 Field Constructor Method对象。这就是放射机制。好处:可以在程序运原创 2020-06-16 15:00:57 · 332 阅读 · 0 评论 -
[Spring XML] spring中基于XML的声明式事务控制配置步骤
目录1、配置事务管理器2、配置事务的通知3、配置AOP中的通用切入点表达式4、建立事务通知和切入点表达式的对应关系5、配置事务的属性1、配置事务管理器2、配置事务的通知此时我们需要导入事务的约束 tx名称空间和约束,同时也需要aop的使用tx:advice标签配置事务通知属性:id:给事务通知起一个唯一标识transaction-manager:给事务通知提供一个事务管理器引用3、配置AOP中的通用切入点表达式4、建立事务通知和切入点表达式的对应关系5、配置事务的属性是在事务的原创 2020-06-05 16:17:04 · 230 阅读 · 0 评论 -
[Spring XML] JdbcTemplate的使用方法详解
目录JdbcTemplate的基本使用方法JdbcTemplate基于Spring IOC的使用方法JdbcTemplate的CRUDJdbcTemplate基于持久层的使用JdbcDaoSupport的使用JdbcTemplate的基本使用方法1:数据库账户表信息2:账户实体类3:向账户表中添加一条新数据JdbcTemplate基于Spring IOC的使用方法1.添加bean.xml文件2:基于spring IOC容器获取JdbcTemplate对象,并执行添加语句JdbcT原创 2020-06-04 06:33:50 · 441 阅读 · 0 评论 -
[Spring XML] 手动实现动态代理:在不修改源码的情况下,对方法进行增强
目录代理(Proxy)的含义实现动态代理:实现基本业务代码基于接口的动态代理对方法进行修改(增强)基于子类的动态代理对方法进行修改(增强)代理(Proxy)的含义如上图所示,很久以前我们我们购买商品的方式是:消费者直接与产品生产厂家联系,厂家负责生产、销售、存储、售后等服务。这种模式下,生产厂家的工作十分的繁重且经营成本非常高。代理商/经销商的出现,极大的降低了生产厂家的成本。生产厂家只需要和固定的几个代理商达成合作关系即可,之后的销售工作都由代理商来(中介)完成。例如:一个生产电脑的厂商,它原创 2020-05-31 12:37:33 · 576 阅读 · 0 评论 -
[Spring XML] (二)Spring的控制反转(IoC)与依赖注入(Dependency Injection)
Spring的控制反转与依赖注入Spring的控制反转使用Spring框架创建对象Spring的依赖注入Spring的控制反转在使用工厂模式降低程序的耦合性博客中,我们已经实现了使用工厂模式来降低程序类之间的耦合性。原来: 我们在获取对象时,都是采用 new 的方式。 是主动的。现在: 我们获取对象时,跟工厂要,有工厂为我们查找或者创建对象。 是被动的。这种被动接收的方式获取对象的思想就是控制反转,它是 spring 框架的核心之一。使用Spring框架创建对象那么我们如何使用sprin原创 2020-05-24 23:19:32 · 197 阅读 · 0 评论 -
[Spring XML] (一)手动实现工厂模式解耦,降低程序的耦合性
使用工厂模式降低程序的耦合性传统MVC开发模式中的强耦合性问题使用工厂模式降低程序的耦合性工厂模式的优化:使用单例模式传统方式和工厂模式方法的对比图传统MVC开发模式中的强耦合性问题在传统的mvc开发模式中,自顶向下会分为:表现层,业务层和持久层。在类中存在相互的调用关系,比如:表现层调用业务层的对象,业务层会调用持久层的对象。如下图所示:如图所示,我们在表现层 new 了一个业务层的对象,在业务层 new 了一个持久层的对象。这样使得这3个类之间拥有很强的依赖关系(耦合性),没有Accoun原创 2020-05-24 22:06:13 · 491 阅读 · 2 评论 -
[Mybatis 注解开发] (一)环境搭建与基本CRUD操作
Mybatis注解开发环境搭建1.建立数据库2.搭建环境1.在IDEA中创建Maven工程2.添加坐标3.创建User实体4.创建持久层接口 IUserDao5.配置mybatis主配置文件:SqlMapConfig.xml5.1添加xml文件的约束5.2配置数据库连接信息5.3配置别名5.4指定带注解的dao接口的位置6.测试环境3.mybatis注解开发的CRUD操作3.1 添加操作(Create)3.2 读取操作(Retrieve)3.3 更新操作(Update)3.4 删除操作(Delete)3.4原创 2020-05-19 01:22:01 · 321 阅读 · 0 评论 -
[javascript] 实现二级联动菜单
效果演示:HTML代码:<!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> &...原创 2020-05-01 04:08:15 · 385 阅读 · 0 评论 -
[javascript] 表格间隔颜色显示,高亮,复选框全选,删除选中项
效果演示:HTML代码:table.csstable{ border:#249bdb 1px solid; width:500px; border-collapse:collapse;}table td{ border:#249bdb 1px solid; padding:10px;}table th{ border:#249bdb 1px solid; padd...原创 2020-04-30 14:27:51 · 234 阅读 · 0 评论 -
[java] 自定义web浏览器客户端和服务器通讯原理-Socket-ServerSocket
客户端服务器通讯原理自定义web浏览器客户端:自定义本地服务器:操作流程:总结:自定义命令行界面的IE浏览器:浏览器get和post两种提交方式的区别:自定义web浏览器客户端:我们自定义一个注册表单页面:源代码:<form action="http://192.168.43.237:9090" method="post"> <table border="2" bor...原创 2020-04-05 17:12:38 · 598 阅读 · 0 评论 -
HTML标签大全
HTML标签列表标签:有序列表和无序列表:表格标签:图片标签:超链接标签: 画中画标签: 框架标签: 表单标签: 其他标签: 超链接顶部位置列表标签:<!--HTML注释:列表标签,可用于做目录等 列表标签:<dl> (define list) 上层项目:<dt> (define title) 下层项目:<dd> (define d...原创 2020-04-05 16:28:50 · 8403 阅读 · 5 评论 -
[java] 网页爬虫-爬取网页中的邮箱信息
代码:import java.io.*;import java.util.regex.*;import java.net.*;class Spiders { public static void main(String[] args) throws Exception { getMai1s(); } public static void getMai1s() throws...原创 2020-04-02 17:51:18 · 902 阅读 · 2 评论 -
A New Day Has Come
A New Day Has Come歌手:Celine DionA New Day Has Come新的一天已经来临I was waiting for so long漫长等待For a miracle to come等待奇迹的出现Everyone told me to be strong大家告诉我要坚强Hold on and dont shed a tear坚定意志,不要把泪...原创 2020-04-02 17:32:25 · 335 阅读 · 0 评论 -
[正则表达式] 一文详解正则表达式(入门)-匹配-分割-替换-获取-
正则表达式正则表达式的定义正则表达式对比实例QQ号校验规则总结字符类预定义字符类:数量词:按照操作字符串的功能来分类讲解正则表达式的使用规则。功能1:字符串匹配功能2:字符串切割功能3:替换字符串功能4:获取,将字符串中符合规则的子串获取出来。测试代码正则表达式的定义正则表达式:符合一定规则的字符串表达式。|–作用:用于专门操作字符串。|–特点:用一些特定的符号来表示一些代码操作,简化书...原创 2020-04-01 22:41:06 · 787 阅读 · 0 评论 -
[java 网络编程] 使用UDP协议进行网络数据通讯
使用UDP协议进行网络数据通讯UDP数据发送端UDP数据接收端测试UDP数据发送端需求:通过udp传输方式,将一段文字数据发送出去。思路:建立udpsocket服务,可为发送网络应用程序指定一个端口:8888提供数据,并将数据封装到数据包中通过socket服务的发送功能,将数据发出去关闭资源import java.net.*;class UdpSend { publi...原创 2020-03-23 17:48:54 · 277 阅读 · 0 评论 -
Lucene第一讲 模板及其关键字 [详解]
Lucene 简介Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta 家族中的一个开源项目。也是目前最为流行的基于 Java 开源全文检索工具包。 目前已经有很多应用程序的搜索功能是基于 Lucene 的,比如 Eclipse 的帮助系统的搜索功能。Lucene 能够...原创 2018-03-23 15:45:37 · 266 阅读 · 0 评论 -
<java EE 项目 : MyForum (听说可以当毕业设计?)> 效果展示
这个项目的所有源码和材料我都会放在自己的云盘中,如有需要可以在评论区留言,我会及时发送~~主页: 联系我们 登入 登入成功 修改头像和密码 发表主题 发表成功 进入主题 发表评论 评论成功 删除评论 删除评论成功 发送邮件 编写邮件 发送邮件成功 收信箱 查看邮件 回复邮件 收信箱 发信箱 删除邮件 这个项目的所有源码和材料我都会放在自己的云盘中,如有需要可原创 2017-07-06 13:20:18 · 667 阅读 · 3 评论 -
<java EE 项目 : MyForum (听说可以当毕业设计?)> 需求说明
这一周花了大约5天的时间按照要求写了一个类似于论坛的项目。对于一个还在努力的算法小白,写一个这样的项目原以为会比较吃力,结果发现因为算法的功底,使得自己对于界面之间的逻辑关系和传值关系很容易把握。所以在比较顺利的情况下完成了。这个项目的所有源码和材料我都会放在自己的云盘中,如有需要可以在评论区留言,我会及时发送~~下面只是最初步的需求,具体效果请看后面的效果展示简单需求说明: 效果图:第一阶段原创 2017-07-06 12:48:38 · 660 阅读 · 8 评论 -
<java EE 项目:Attendance> 从一个简单项目看java web 开发的整体布局
需求说明:效果图:1:数据库: 2:导入信息页面: 3:导入成功后的数据库: 4:显示考情信息(3条): 项目整体格局: 注意:不用管最后一个servlet的包,这个是为了测试,将attenceAction.jsp用servlet来实现整体的布局,还是标准的三层结构:数据层Dao,业务层Biz,表示层Jsp源代码:实体: package com.attendance.entity;imp原创 2017-06-26 11:55:26 · 2448 阅读 · 0 评论 -
<java EE 项目:Musicstore>项目结构分析: 项目的3层结构之间的关系 :(表示层,业务层,数据层)
广州实训的第一个项目: 项目整体布局: 表示层,业务层,数据层 3层之间的调用关系:原创 2017-06-21 15:48:28 · 862 阅读 · 0 评论 -
<java EE 项目:petstore> 从一个简单项目看 java web 如何在本jsp页面上对用户输入的格式进行限制与验证
项目说明: 在我们写一些类似于登入注册页面,需要用户输入信息时,往往要对用户的输入信息的格式进行验证与限制。一般我们会将表单提交后在另一个Servlet或jsp页面上进行验证,但是一出错页面就会重新刷新,使得之前输入的信息丢失,这样用户体验就会很差。 现在的一些流行的网页,都是在输入未提交之前就会提醒用户,使用户能及时的进行修改。接下来,我们就通过一个小的练习,来看看 如何实现在本jsp页面上对原创 2017-06-28 10:21:56 · 2005 阅读 · 0 评论