- 博客(63)
- 收藏
- 关注
原创 Redis进阶(持久化、复制、集群、多线程、缓存)
将内存中的数据写到磁盘中。为什么Redis需要持久化:Redis缓存是基于内存的,当服务器宕机或发生意外的时候,数据可能会丢失,所以需要将内存中的数据以一定的方式存储到磁盘中,方便数据恢复。在一定的间隔时间内将内存中的数据写入到磁盘中,专业术语称之为snapshots(快照)。类似照相机每间隔一定时间拍摄一张照片。RDB是Redis默认的持久化方式。在redis.conf中可以找到关于间隔时间的说明:见1.2.3中自动触发部分。将服务器的的所有写操作记录进日志,数据恢复时根据所有写操作命令重建数据。
2024-03-22 04:13:42
938
1
原创 Redis基本使用
SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模块就叫做提供了对不同Redis客户端的整合(Lettuce和Jedis)提供了RedisTemplate统一API来操作Redis支持Redis的发布订阅模型支持Redis哨兵和Redis集群支持基于Lettuce的响应式编程支持基于JDK、JSON、字符串、Spring对象的数据序列化及反序列化支持基于Redis的JDKCollection实现。
2024-03-14 18:03:36
1040
原创 SpringMVC学习记录
MVC:即Model(模型) View(视图) Controller(控制器) ,是一种设计模式。Model代表一个存取数据的对象或 JAVA POJO,View代表模型包含的数据的可视化,Controller作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。-SpringMVC是Spring框架基于Servlet API构建的原始Web框架,全称Spring Web MVC。简化来自前端数据的接收和简化对前端数据的响应。
2024-03-07 01:37:11
1200
原创 Mybatis学习记录
Mybatis学习记录1.快速开始示例1.1 什么是MyMyBatis?1.2 代码示例2.基本使用2.1 #{}和${}2.2 参数传入2.2.1 概念说明2.2.2 单个简单类型2.2.3 实体类型2.2.4 零散简单数据类型2.2.5 Map类型2.3 返回值2.3.1 单个简单类型2.3.2 实体类型2.3.3 Map类型2.3.4 List类型3.多表映射3.1 什么是多表映射3.2 对一映射3.3 对多映射3.4 对一映射和对多映射的说明4.动态语句4.1 为什么需要动态语句4.2 if whe
2024-03-05 02:50:25
1028
原创 Tomcat和Servlet学习记录
简单来说,Tomcat是Web服务器Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
2024-02-29 21:07:41
975
原创 Spring 学习记录
XML方式配置XML+注解方式配置完全注解方式配置Spring-tx是Spring框架支持以声明性的方式管理事务,而不是编程式的方式。将事务的控制和业务逻辑分离开来,提高代码的可读性和可维护性try {// 开启事务:关闭事务的自动提交// 核心操作// 业务代码// 提交事务// 回滚事务}finally{// 释放数据库连接编程式事务:手动编写程序来管理事务,即通过编写代码的方式直接控制事务的提交和回滚。声明式事务:使用注解或 XML 配置的方式来控制事务的提交和回滚。
2024-02-29 21:06:06
953
原创 MySQL-流程控制语句
流程控制语句IF 语句CASE语句IF 语句语法1. MySQL内置 if条件语句 (如果表达式为真则执行值1,否则执行值2)if(条件,值1,值2)2. if-then-else (只能应用在begin-end中)if 条件1 then 语句1;elseif 条件2 then 语句2;......else 语句n; end if代码示例# 创建存储过程,判断两个输入的参数哪一个更大create procedure comp (in k1 int, in k2 int,
2021-03-06 15:03:33
327
2
原创 MySQL-存储过程、存储函数
存储过程、存储函数1. 存储过程2. 存储函数1. 存储过程 可以有0个或多个返回值,适合批量插入、更新创建存储过程delimiter 结束标记符creat procedure 存储过程名(参数列表)begin 存储过程体end 结束标记符delimiter ;#delimiter 结束符 指的是程序以该结束符结束#delimiter ; 指的是后面的程序仍旧以 ; 参数列表 (参数模式 参数名 参数类型)参数模式有①in:作为输入参数被存储过程内
2021-03-06 01:21:27
191
原创 MySQL-变量
变量1.系统变量1.1 全局变量1.2 会话变量2. 自定义变量2.1 用户变量2.2 局部变量1.系统变量系统变量由系统自定义而不是用户自定义,属于服务器层面1.1 全局变量对所有会话有效。如果更改全局变量的值,那么更改的值会在重启服务器后失效1.查看所有全局变量show global variables2.查看满足条件的全局变show global variables 条件3.查看指定的全局变量select @@ global.全局变量名称4.为指定全局变量赋值set @@
2021-03-06 00:04:30
112
1
原创 MySQL-事务
事务1.什么是事务2. 事务的属性( ACID )3. 并发操作带来的数据的不一致性4. 事务的创建5. MySQL的事务隔离级别1.什么是事务事务由一个或多个SQL语句组成的相互依赖且不可分割的整体。如果单元中某条SQL语句一旦执行失败或产生错误,整个事务中的语句将会回滚。所有受到影响的数据将返回到事物开始以前的状态。如果单元中的所有SQL语句均执行成功则事物被顺利执行例如:A给B转账500元,那么A账户将会-500元,B账户+500元。那么为了转账的安全性,需要将A账户-500元的操作和B账户+
2021-03-05 00:02:12
170
2
原创 MySQL-常用函数
常用函数1. 单行函数1.1字符函数1.2 数学函数1.3 日期函数1.4 流程控制函数2. 分组函数1. 单行函数1.1字符函数length() 获取参数值的字节个数concat() 拼接字符串upper() 将字符串转换为大写lower() 将字符串转换为小写substr() 截取指定数量字符的instr() 返回子串第一次出现的索引,如果找不到则返回0trim() 剔除首尾的空格或指定字符lpad() 用指定的字符实现左填充到指定长度(
2021-03-04 22:51:17
136
1
原创 MySQL-常用语句(定义、查询、操纵、控制)
MySQL-常用语句1. 创建数据库2. 创建表3. 修改表结构4. 约束4.1 约束类型4.2 对约束的几点说明5. 数据查询5.1 条件查询5.1.1 比较大小(=, >, <, >=, <=, != ,<> )5.1.2 多重条件 ( NOT、AND、OR )5.1.3 范围查询 ( between and )5.1.4 模糊查询( like )5.1.5 空值查询 ( NULL )5.1.6 集合查询 ( IN )5.2 相关函数5.3 分组查询5.4 排序查询5
2021-03-04 14:21:15
1239
1
原创 MySQL-数据类型
MySQL数据类型字符串整数字符串① 定长字符串在创建表时指定。例如char (10),那么即使实际使用时未占满10个,也会用空格或NULL填充剩余空间② 变长字符串存储任意长度的文本,创建表时即使指定了大小,使用时未占满指定大小,那么只会占用实际使用大小。例如 varchar(10),使用时实际占用了5个,那么存储空间只占用5个③ 不管使用何种形式的字符串数据类型,串值都必须括在单引号内④ 如果数字只是使用,建议保存为字符串类型。如果数值涉及到计算就保存为相应的数值类型。比如邮编 01234
2021-03-03 12:32:36
102
原创 MySQL-关系代数运算
关系代数运算1. 运算符分类2. 集合操作运算符3. 专门的关系运算符3.1 σ( 选择 )3.2 π ( 投影 )3.3 ÷ ( 除 )3.4 连接3.4.1 连接、等值连接3.4.2 自然连接3.5 外连接(自然连接+失配元素)3.5.0 为何需要外连接3.5.1 左外连接(自然连接+左表失配元素)3.5.2 右外连接(自然连接+右表失配元素)3.5.3 全外连接(自然连接+左右表失配元素)1. 运算符分类集合:并( U )、交( ∩ )、差( — )、笛卡尔积( × )比较:大于( >)、小于(
2021-03-02 21:28:09
5469
1
原创 MySQL-关系数据库
关系模型1. 笛卡尔积2. 关系1. 笛卡尔积给定一组任意集合 D1,D2,…DnD_1,D_2,…D_nD1,D2,…Dn则n个集合的笛卡儿积为:D1×D2×…×Dn=(d1,d2,…dn)∣di∈Di,i=1,2…,n D_1×D_2×…×D_n={(d_1,d_2,…d_n)| d_i∈ D_i, i=1,2…,n}D1×D2×…×Dn=(d1,d2,…dn)∣di∈Di,i=1,2…,n例如:A ={0,1}、B ={ a, b ,c }则A×B= { (0,a)
2021-03-02 17:36:15
111
原创 MySQL-数据库基础概念
数据库基础1. 相关概念2. E-R图1. 相关概念DB、DBMS、DBS数据库(DataBase,简称DB):存放数据的仓库。或看成一个用来存储和管理需要的各种信息的通用容器。数据库数据具有永久存储、有组织、可共享的基本特点数据库管理系统(DatadBase Management System,简称DBMS)是位于用户与操作系统之间的一层数据管理软件数据库系统(DataBase System,简称DBS):一般由数据库、数据库管理系统、应用系统、数据库管理员和用户构成数据库系统的特点
2021-03-02 15:55:34
351
原创 反射概述
Java反射概述1. 反射机制概述2. Class类1. 反射机制概述什么是反射?加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象包含了完整的类的结构信息。我们可以通过这个Class类型的对象看到类的结构。这个对象就像一面镜子,透过这个镜子可以看到类的结构,所以我们形象的称之为 " 反射 "反射机制允许程序在执行期借助于 API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法反射机制提供的功能在运行时判断任意一个对象所属
2021-03-01 16:55:23
130
1
原创 网络编程概述
网络编程概述1. 网络通信要素2. InetAddress类3. Socket4. 基于Socket的TCP网络编程5. 基于Socket的UDP网络编程1. 网络通信要素网络中的主机间实现通信需要指明地址( IP、端口号)并遵守一定的网络通信协议(HTTP、FTP、TCP、UDP、IP 等)OSI 7层模型、TCP/IP 5层模型、对应的网络协议IP地址IP地址用于唯一标识 Internet 上的计算机。IPV4:32位(4个字节),表示范围为0—2^32。以点分十进制表示,如192.16
2021-02-24 23:33:24
64
原创 Java IO流概述
IO流解析1. 概述1. 概述Java程序中,数据的输入、输出操作以“流(stream)” 的方式进行I/O是Input/Output的缩写。I/O技术用于处理设备之间的数据传输。如读、写文件、网络通讯等(1)流的分类按操作数据单位:字节流(8 bit)、字符流(16 bit)按数据流的流向:输入流、输出流按流的角色:节点流(直接操作数据)、处理流(操纵节点流)抽象基类字节流字符流输入流InputStreamReader输出流OutputStrea
2021-02-21 20:40:31
122
原创 字节流 FileInputStream、FileOutputStream 解析
FileInputStream、FileOutputStream1. FileInputStream2. FileOutputStream字节流:顾名思义读取的是字节1. FileInputStream读取方法read()int read() // 从输入流中读取数据的1个字节。返回 0 到 255 范围内的 int 字节值。到达流末尾而没有可用的字节则返回值 -1int read(byte[] b)//将b.length个字节大小的数据读入数组。如果已到达流的末尾,则返回 -1。否则返
2021-02-21 15:35:35
416
原创 字符流 FileReader、FileWriter 解析
字符流1. FileReader2. FileWriter3. 通过FileReader、FileWriter实现文本的复制1. FileReader读取方法 read( )int read()//读取单个字符。将读取的字符转换成整数并返回(范围在 0 到 65535 之间),如果已到达流的末尾则返回 -1int read(char[] cbuf) //将字符读入数组。如果已到达流的末尾,则返回 -1。否则返回本次读取的字符数int read(char[] cbuf,int off,in
2021-02-20 21:41:07
396
2
原创 Java char字符
Unicode并不是一种编码方式,只是为每一个文字、符号分配了唯一的数字编号。编号范围从0x000000到0x10FFFF(0-1114111),Unicode编号写成16进制并在前面加U+。具体的编码方式有UTF-8、UTF-16、UTF-32在 Java内部进行字符处理时,采用的都是Unicode,具体编码格式是UTF-16BE( 使用两个或四个字节表示一个字符 )。Unicode编号范围在65536以内的占两个字节,超出范围的占四个字节,BE (Big Endian)就是先输出高位字节,再输出低位.
2021-02-20 18:57:25
191
原创 常见编码方式(ASKII、GBK、UTF-8等)
常见编码方式1.美国1.1 ASCII2. 西欧2.1 ISO-8859-12.2 windows-12523. 中国3.1 GB23123.2 GBK3.3 GB180304. 港澳台4.1 Big55. 世界通用5.1 Unicode5.2 UTF-325.3 UTF-165.4 UTF-86.总结1.美国1.1 ASCII世界上虽然有各种各样的字符,但计算机发明之初没有考虑那么多,基本上只考虑了美国的需求。美国大概只需要128个字符,美国就规定了这128个字符的二进制表示方法,这个方法是一个标准
2021-02-20 16:25:07
7768
原创 File类的使用
构造器(只是在内存层面创建对象而并未在磁盘创建文件)public File(String pathname) //以pathname为路径创建File对象,可以是绝对路径或者相对路径public File(String parent,String child) //以parent为父路径,child为子路径创建File对象public File(File parent,String child)//以File类型的parent为父路径,String类型的child为子路径创建File对象.
2021-02-19 19:22:53
86
原创 Java 泛型解析
类A是类B的父类 G<A> 、G<B> 不具备子父类关系,而是并列关系 A<G> 是 B<G> 的父类 比如:Object类是String类的父类 但是:ArrayList<Object> 并不是ArrayList<String> 的父类 Object<List>是String<List>的父类
2021-02-14 22:32:36
150
2
原创 Java 集合总结
Java集合1集合框架2.Collection 接口常用方法2.1 常用方法2.2 几点说明1集合框架2.Collection 接口常用方法2.1 常用方法boolean add(Object obj) // 添加boolean addAll(Collection coll) // 将coll集合中的元素添加到当前的集合 int size() // 获取有效元素的个数void clear() // 清空集合boolean isEmpty() // 判断是否是空集合boolea
2021-02-12 22:29:44
77
1
原创 Iterator 迭代器
Collection接口继承于Iterable接口。该接口有 iterator() 方法,那么所有实现了Collection接口的集合类都有一个 iterator() 方法,用以返回一个实现了Iterator接口的对象Iterator 仅用于遍历集合,其本身并不提供承装对象的能力集合对象每次调用 iterator() 方法都得到一个全新的迭代器对象,默认游标都在集合的第一个元素之前常用方法boolean hasnext( ) // 如果集合中仍有元素则返回trueboolean next( ).
2021-02-12 22:25:08
288
原创 深入理解HashMap(源码解析)
HashMap1. HashMap概述2. 源码解析(JDK7)2.1 概述2.2 添加元素过程2.3 源码分析2.4 几点说明3. 源码解析(JDK8)1. HashMap概述key-value 允许使用nullkey构成的集合是Set:无序的、不可重复的。所以key所在的类要重写 equals()、hashCode()方法value构成的集合是Collection:无序的、可以重复的。所以value所在的类要重写:equals()HashMap 判断两个 key 相等的标准:两个 key 的
2021-02-12 19:28:10
270
1
原创 ArrayList 与 LinkedList
ArrayList 与 LinkedList1.List2.ArrayList2.1 ArrayList 特点2.2 ArrayList源码分析(JDK7)2.3 ArrayList源码分析(JDK8)1.ListList 集合:元素有序、且可重复List是Collection的子接口,ArrayList 与 LinkedList是 List 的实现类2.ArrayList2.1 ArrayList 特点线程不安全底层使用 Object 数组存储查询、更改速度快,增加、删除速度慢
2021-02-09 18:25:04
108
原创 Java 多线程总结
多线程1.Thread类1.1 常用方法1.2 代码示例2.多线程的创建2.1创建方式1:继承Thread类2.2 Start()方法、run()方法2.3 创建方式2:实现Runnable接口2.4关于创建方式2中start方法的说明3.线程优先级3.1 线程的调度3.2 优先级等级3.3 相关方法3.4 两点说明4.线程的生命周期1.Thread类1.1 常用方法1.void start() 启动当前线程;调用当前线程的run()方法2.void run() 通常需要重写Thread类中的此方
2021-02-07 20:46:06
109
原创 Java 比较器 Comparable、Comparator
Java比较器1.自然排序:Comparable1.1 Comparable接口1.2 Comparable 的典型实现1.3 自定义类实现Comparable接口2.定制排序:Comparator2.1 Comparator 接口2.2 重写compare(T o1,T o2)使String 降序排列3.Comparable、Comparator区别4. 关于Comparable接口的一点说明1.自然排序:Comparable1.1 Comparable接口public interface Comp
2021-02-05 16:51:02
134
1
原创 Java 有关日期和时间的类
有关日期和时间的类1.JDK8之前的类1.1 java.lang.System1.1 java.util.Date1.JDK8之前的类1.1 java.lang.System public static native long currentTimeMillis(); 返回当前时间与1970年1月1日0时0分0秒之间的时间差(以毫秒为单位)。 1.可以用来表示当前时间与1970-1-1 00:00:00的时间差 2.可以用来计算任意两个时刻的时间差public static native l
2021-02-01 19:47:11
272
原创 String、StringBuffer、StringBuilder
1.String、StringBuffer、StringBuilder三者异同String : 不可变字符序列。底层使用char[ ]存储(声明为final,所以不可变)StringBuffer :可变字符序列。线程安全效率低。底层使用char[ ]存储StringBuilder(JDK5新增) :可变字符序列。线程不安全效率高。底层使用char[ ]存储继承关系2.String、StringBuffer、StringBuilder 源码分析StringString str = ne
2021-01-31 16:03:50
75
原创 Java常用类——String类总结
String类总结1.String类概述1.1 String类声明1.2 JVM中涉及字符串的内存结构1.3 创建String对象(以JDK8为例)1.3.1 JVM 中堆、栈、方法区和字符串常量池1.3.2 == 和 equals()区别1.3.3 字面量方式创建String对象1.3.4使用new创建String对象1.4 字符串拼接2.String类常用函数2.1 常用函数2.2 字符串与字符数组、字节数组的相互转换1.String类概述1.1 String类声明public final cla
2021-01-30 21:04:30
189
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人