自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 html基础

web概念概述 * JavaWeb: * 使用Java语言开发基于互联网的项目 * 软件架构: 1. C/S: Client/Server 客户端/服务器端 * 在用户本地有一个客户端程序,在远程有一个服务器端程序 * 如:QQ,迅雷... * 优点: 1. 用户体验好 * 缺点: 1. 开发、安装,部署,维护 麻烦 2. B/S: Browser/Server 浏览器/服务器端 * 只需要一个浏览器,用户通过不同的网址(URL),客户访问..

2022-03-25 13:19:46 78

原创 redis哨兵、cluster

主机“宕机” master slave slave slave master  关闭master和所有slave  找一个slave作为master  修改其他slave的配置,连接新的主  启动新的master与slave  全量复制*N+部分复制*N  关闭期间的数据服务谁来承接?  找一个主?怎么找法?  修改配置后,原始的主恢复了怎么办? 哨兵哨兵简介 哨兵 哨兵(sentinel) 是一个分布式系统,用于对主从结构中的

2022-03-21 12:05:38 975

原创 redis主从复制

互联网“三高”架构  高并发  高性能  高可用1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 互联网“三高”架构 2 1 2 3 4 5 6 7 8 9 10 11 12 13 1

2022-03-19 22:54:04 133

原创 redis事务,删除策略,高级数据类型

什么是事务 Redis执行指令过程中,多条连续执行的指令被干扰,打断,插队 127.0.0.1:6379>set name itheima 127.0.0.1:6379>get name 127.0.0.1:6379>set name itcast 127.0.0.1:6379>get name itheima itcast 客户端1 客户端2 ① ② ③ itcast 一个队列中,一次性、顺序性、排他性的执行一系列命令目

2022-03-16 19:19:31 1296

原创 redis持久化

持久化简介 意外的断电持久化简介 “自动备份” 数据保存过程 数据恢复过程持久化简介 什么是持久化 利用永久性存储介质将数据进行保存,在特定的时间将保存的数据进行恢复的工作机制称为持久化。 为什么要进行持久化 防止数据的意外丢失,确保数据安全性持久化简介 10011001110000001 00101001011010110 10110011001110000 00100101001011011 持久化过程保存什么 数据 删除第3行 第4行末位

2022-03-15 20:34:07 68

原创 redis通用指令

sorted_set  新的存储需求:数据排序有利于数据的有效展示,需要提供一种可以根据自身特征进行排序的方式  需要的存储结构:新的存储模型,可以保存可排序的数据  sorted_set类型:在set的存储结构基础上添加可排序字段 sorted_set存储空间 name fans blogs 春晚 12210862 83 (nil) (nil) (nil) value sorted_set sorted_set 类型 100 4

2022-03-13 16:29:07 82

原创 redis入门和数据类型

业务数据的特殊性 附加功能 系统功能优化或升级  单服务器升级集群  Session 管理  Token 管理数据存储类型介绍  string  hash  list  set  sorted_set String HashMap LinkedList HashSet TreeSet Redis 数据类型(5种常用)目  数据存储类型介绍  string  hash  list  set  s

2022-03-12 16:47:43 802

原创 jdbc连接池&JdbcTemplate

数据库连接池 1. 概念:其实就是一个容器(集合),存放数据库连接的容器。 当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。 2. 好处: 1. 节约资源 2. 用户访问高效 3. 实现: 1. 标准接口:DataSource javax.sql包下的 1. 方法: * 获取连接:getConnection() * 归还连接:Connection.clos.

2022-03-11 13:32:29 121

原创 jdbc笔记

JDBC: 1. 概念:Java DataBase Connectivity Java 数据库连接, Java语言操作数据库 * JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。 2. 快速入门: * 步骤: 1. 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar 1...

2022-03-10 10:03:09 76

原创 mysql多表和事务

多表查询:* 查询语法:select列名列表from表名列表where....* 准备sql# 创建部门表CREATE TABLE dept(id INT PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20));INSERT INTO dept (NAME) VALUES ('开发部'),('市场部'),('财务部');# 创建员工表CREATE TABLE emp (id INT PRIMARY KEY AUTO_INCREMENT,NA

2022-03-02 10:05:11 64

原创 数据库的设计

1. 多表之间的关系 1. 分类: 1. 一对一(了解): * 如:人和身份证 * 分析:一个人只有一个身份证,一个身份证只能对应一个人 2. 一对多(多对一): * 如:部门和员工 * 分析:一个部门有多个员工,一个员工只能对应一个部门 3. 多对多: * 如:学生和课程 * 分析:一个学生可以选择很多门课程,一个课程也可以被很多学生选择 2. 实现关系: 1. 一对多(多对一): * 如:部门和员工 * 实.

2022-02-23 14:44:27 59

原创 mysql约束

DQL:查询语句 1. 排序查询 * 语法:order by 子句 * order by 排序字段1 排序方式1 , 排序字段2 排序方式2... * 排序方式: * ASC:升序,默认的。 * DESC:降序。 * 注意: * 如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。 2. 聚合函数:将一列数据作为一个整体,进行纵向的计算。 1. count:计算个数 1. 一般选择非空的列:主键 2. count(*) 2. .

2022-02-21 21:19:07 50

原创 mysql约束

DQL:查询语句 1. 排序查询 * 语法:order by 子句 * order by 排序字段1 排序方式1 , 排序字段2 排序方式2... * 排序方式: * ASC:升序,默认的。 * DESC:降序。 * 注意: * 如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。 2. 聚合函数:将一列数据作为一个整体,进行纵向的计算。 1. count:计算个数 1. 一般选择非空的列:主键 2. count(*) 2. .

2022-02-21 21:17:54 65

原创 mysql

数据库的基本概念 1. 数据库的英文单词: DataBase 简称 : DB 2. 什么数据库? * 用于存储和管理数据的仓库。 3. 数据库的特点: 1. 持久化存储数据的。其实数据库就是一个文件系统 2. 方便存储和管理数据 3. 使用了统一的方式操作数据库 -- SQL 4. 常见的数据库软件 * 参见《MySQL基础.pdf》# MySQL数据库软件 1. 安装 * 参见《MySQL基础.pdf》 2. 卸载 1. 去mysql的安装目录找到m.

2022-02-20 16:28:42 69

原创 基础加强篇

Junit单元测试: * 测试分类: 1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。 2. 白盒测试:需要写代码的。关注程序具体的执行流程。 * Junit使用:白盒测试 * 步骤: 1. 定义一个测试类(测试用例) * 建议: * 测试类名:被测试的类名Test CalculatorTest * 包名:xxx.xxx.xx.test cn.itcast.test 2. 定义测试方法:可以独立运行 * 建议: .

2022-02-15 15:04:04 59

原创 Stream流、方法引用

第一章 Stream流 说到Stream便容易想到I/O Stream,而实际上,谁规定“流”就一定是“IO流”呢?在Java 8中,得益于Lambda所带 来的函数式编程,引入了一个全新的Stream概念,用于解决已有集合类库既有的弊端。 1.1 引言 传统集合的多步遍历代码 几乎所有的集合(如 Collection 接口或 Map 接口等)都支持直接或间接的遍历操作。而当我们需要对集合中的元 素进行操作的时候,除了必需的添加、删除、获取外,最典型的就是集合遍历。例如: imp

2022-02-14 15:08:50 156

原创 函数式接口

第一章 函数式接口 1.1 概念 函数式接口在Java中是指:有且仅有一个抽象方法的接口。 函数式接口,即适用于函数式编程场景的接口。而Java中的函数式编程体现就是Lambda,所以函数式接口就是可 以适用于Lambda使用的接口。只有确保接口中有且仅有一个抽象方法,Java中的Lambda才能顺利地进行推导。 备注:“语法糖”是指使用更加方便,但是原理不变的代码语法。例如在遍历集合时使用的for-each语法,其实 底层的实现原理仍然是迭代器,这便是“语法糖”。从应用层面来讲,J

2022-02-13 14:03:14 137

原创 网络编程1

第一章 网络编程入门## 1.1软件结构- **C/S结构** :全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。![](img/1_cs.jpg)**B/S结构** :全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。![](img/2_bs.jpg)两种架构各有优势,但是无论哪种架构,都离不开网络的支持。**网络编程**,就是在一定的协议下,实现两台计算机的通信的程序。## 1.2 网络通...

2022-02-11 11:45:16 80

原创 【无标题】

1.1 概述缓冲流,也叫高效流,是对4个基本的`FileXxx` 流的增强,所以也是4个流,按照数据类型分类:* **字节缓冲流**:`BufferedInputStream`,`BufferedOutputStream` * **字符缓冲流**:`BufferedReader`,`BufferedWriter`缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。## 1.2 字节缓冲流### 构造方法*.

2022-02-09 15:24:38 77

原创 字节流、字符流

1.1 什么是IO生活中,你肯定经历过这样的场景。当你编辑一个文本文件,忘记了`ctrl+s` ,可能文件就白白编辑了。当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢?键盘、内存、硬盘、外接设备等等。我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为`输入input` 和`输出output` ,即流向内存是输入流,流出内存的输出流。Java中I/O操作主要是指使用`java.io`包下的内容,进行输入、输出操作。**输.

2022-01-26 19:39:59 68

原创 File类、递归

1.1 概述`java.io.File` 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。## 1.2 构造方法* `public File(String pathname) ` :通过将给定的**路径名字符串**转换为抽象路径名来创建新的 File实例。 * `public File(String parent, String child) ` :从**父路径名字符串和子路径名字符串**创建新的 File实例。* `public File(File pare.

2022-01-25 21:46:40 36

原创 线程池、Lambda表达式

第一章 等待唤醒机制## 1.1 线程间通信**概念:**多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同。比如:线程A用来生成包子的,线程B用来吃包子的,包子可以理解为同一资源,线程A与线程B处理的动作,一个是生产,一个是消费,那么线程A与线程B之间就存在线程通信问题。![](img\线程间通信.bmp)**为什么要处理线程间通信:**多个线程并发执行时, 在默认情况下CPU是随机切换线程的,当我们需要多个线程来共同完成一件任务,并且我们希望他们有规律的执行, 那..

2022-01-22 21:06:40 56

原创 线程与同步

。 代码如下: 自定义线程类: public class MyThread extends Thread{ /** 利用继承中的特点 * 将线程名称传递 进行设置 */ public MyThread(String name){ super(name); }/** 重写run方法 * 定义线程要执行的代码 */ public void run(){ for (int i = 0; i < 20; i++) { //getName()方

2022-01-21 21:19:06 51

原创 异常、线程

1.1 异常概念异常,就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是:* **异常** :指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。> 异常指的并不是语法错误,语法错了,编译不通过,不会产生字节码文件,根本不能运行.## 1.2 异常体系.

2022-01-20 21:50:41 49

原创 map集合

1.1 概述现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射。Java提供了专门的集合类用来存放这种对象关系的对象,即`java.util.Map`接口。我们通过查看`Map`接口描述,发现`Map`接口下的集合与`Collection`接口下的集合,它们存储数据的形式不同,如下图。![](img\Collection与Map.bmp)* `Collection`中的集合,元素是孤立存在的(理解为单身),向.

2022-01-19 21:08:27 55

原创 list、set

常见的数据结构数据存储的常用结构有:栈、队列、数组、链表和红黑树。我们分别来了解一下:#### 栈* **栈**:**stack**,又称堆栈,它是运算受限的线性表,其限制是仅允许在标的一端进行插入和删除操作,不允许在其他任何位置进行添加、查找、删除等操作。简单的说:采用该结构的集合,对元素的存取有如下的特点* 先进后出(即,存进去的元素,要在后它后面的元素依次取出后,才能取出该元素)。例如,子弹压进弹夹,先压进去的子弹在下面,后压进去的子弹在上面,当开枪时,先弹出上面的子弹,然后才能.

2022-01-17 16:57:21 52

原创 【无标题】

泛型,用来灵活地将数据类型应用到不同的类、方法、接口当中。将数据类型作为参数进行传递。### 定义和使用含有泛型的类定义格式:~~~修饰符 class 类名<代表泛型的变量> { }~~~例如,API中的ArrayList集合:~~~javaclass ArrayList<E>{ public boolean add(E e){ } public E get(int index){ } ....}~~~使用泛型: 即什.

2021-12-31 16:03:19 173

原创 Collection、泛型

* 数组的长度是固定的。集合的长度是可变的。* 数组中存储的是同一类型的元素,可以存储基本数据类型值。集合存储的都是对象。而且对象的类型可以不一致。在开发中一般当对象多的时候,使用集合进行存储。JAVASE提供了满足各种需求的API,在使用这些API前,先了解其继承与接口操作架构,才能了解何时采用哪个类,以及类之间如何彼此合作,从而达到灵活应用。集合按照其存储结构可以分为两大类,分别是单列集合`java.util.Collection`和双列集合`java.util.Map`,今天我们主要学习`Co.

2021-12-30 19:29:23 81

原创 Object类、常用API(二)

java.util.Calendar是日历类,在Date后出现,替换掉了许多Date的方法。该类将所有可能用到的时间信息封装为静态成员变量,方便获取。日历类就是方便获取各个时间属性的。Calendar为抽象类,由于语言敏感性,Calendar类在创建对象时并非直接创建,而是通过静态方法创建,返回子类对象。public static Calendar getInstance()`:使用默认时区和语言环境获得一个日历。public class Demo06CalendarInit { public .

2021-12-23 15:01:56 59

原创 object类.常用API(一)

1.Object类Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。1.1toString 方法toString方法返回该对象的字符串表示,其实该字符串内容就是对象的类型+@+内存地址值。由于toString方法返回的结果是内存地址,而在开发中,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。如果不希望使用toString方法的默认行为,则可以对它进行覆盖重写。例如自定义的P

2021-12-22 18:23:54 117

原创 final、权限、内部类、引用类型

final: 不可改变。可以用于修饰类、方法和变量。 类:被修饰的类,不能被继承。 方法:被修饰的方法,不能被重写。 变量:被修饰的变量,不能被重新赋值在Java中提供了四种访问权限,使用不同的访问权限修饰符修饰时,被修饰的内容会有不同的访问权限, public:公共的。 protected:受保护的 default:默认的 private:私有的 可见,public具有最大权限。private则是最小权限。 编写代码时,如果没有特殊的考虑,建议这样使用权限: 成员变量使用

2021-12-20 10:36:39 96

原创 多态的具体使用

多态体现的格式: 父类类型:指子类对象继承的父类类型,或者实现的父接口类型。 代码如下: Fu f = new Zi(); f.method(); 当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,执行的是子类重写后方法代码如下: 定义父类: public abstract class Animal { public abstract void eat(); }定义子类class Cat extends Anima

2021-12-17 18:16:09 456

原创 接口的具体使用

接口,是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法(JDK 9)。 接口的定义,它与定义类方式相似,但是使用 interface 关键字。它也会被编译成.class文件,但一定要明确它并不是类,而是另外一种引用数据类型。 public interface 接口名称 { // 抽象方法 // 默认方法 // 静态方法 // 私有方法

2021-12-17 18:07:40 260

原创 继承、super、this、抽象类

通过 extends 关键字,可以声明一个子类继承另外一个父类,定义格式如下:class 父类 { ... }class 子类 extends 父类 { ... }子父类中出现了同名的成员变量时,在子类中需要访问父类中非私有成员变量时,需要使用 super 关键字,修饰父类成员变量,类似于之前学过的 this 。 super.父类成员变量名成员方法不重名 如果子类父类中出现不重名的成员方法,这时的调用是没有影响的。对象调用方法时,会先在子类中查找有没有对应的方

2021-12-17 17:57:53 89

原创 String类,static关键词,Arrays类、Math类

String类比较字符串内容是否相同s1.equals(s2);忽略大小写s1.equalsIgnoreCase(s2);获取长度s.length();将指定字符串连接到该字符串的末尾String s2=s.concat("sajhkdas");获取指定索引的字符s.charAt();获取io0在字符串对象中第一次出现的位置,没有则返回-1;s.indexof(“io0”);截取字符串s.substring(int start,int end);将

2021-12-17 17:40:26 51

原创 Scanner类,Random类,ArrayList类

Scanner类Scanner类是一个可以解析基本类型和字符串的文本扫描器。Scanner sc=new Scanner(System.in);int i=sc.nextin();在应用匿名对象时,创建匿名对象直接调用方法,没有变量名。一旦调用两次方法,就是创建两次对象,会造成浪费。匿名对象可以作为方法的参数和返回值。Random类Random r=new random();int i=r.nextint();ArrayList类ArrayList<Stri

2021-12-17 17:07:47 84

原创 类与对象、封装、构造方法

对象的使用格式类名 对象名=new 类名();使用对象访问类中的成员;对象名.成员变量;对象名.成员方法;成员变量的数据类型为整型,浮点数,字符,布尔,引用类型,数组,类,接口。同时了解了成员变量与局部变量的区别在类中的位置不同,作用范围不同,初始化值不同,在内存中的位置不同,生命周期不同。封装封装的步骤需要使用private关键词,对需要访问的成员变量需要提供get、set方法private代表最小权限,被其修饰的成员变量只能在本来中才能访问。对封装需要优化,在

2021-12-17 16:48:18 203

原创 数组的学习

数组指的是存储数据长度固定的容器,保证多个数据的数据类型要一致,数组定义:方法一格式:数组存储的数据类型[] 数组名字=new 数组存储的数据类型[数组长度];方法二格式:数组存储的数据类型[] 数组名字=new 数组存储的数据类型[]{元素一,元素二,....};方法三格式:数据类型[]={元素1,元素2,.......};数组的访问数组长度的访问:语句名为数组名.length。数组名[索引]=数值,变量=数组名[索引],获取数组名中的元素。Java虚

2021-12-17 16:22:21 455

原创 方法体的使用

1.定义方法需要明确返回值类型和参数列表调用方法的流程主要分为四个步骤:1.方法开始调用2.实际参数传递3.方法体内执行4.方法体结束返回定义方法的注意事项定义的位置,类中方法外面;返回值类型,必须要和return语句返回的类型相同,否则编译失败。2.调用方法的三种形式①直接调用:直接写方法名调用。②赋值调用:调用方法,在方法前面定义变量,接受方法返回值。③输出语句调用:在输出语句中调用方法,System.out.println(方法名());不能输出语句

2021-12-17 15:38:25 292

原创 流程控制语句

流程控制语句主要为if else语句,switch语句,for循环语句,while循环语句,do while控制语句,以及跳出语句break,continue。首先是顺序结构,将程序顺序执行,从上而下根据编写的顺序执行。然后是判断语句if,如果结果为true,则执行程序,如果为false,则不执行程序。还有if-else语句,格式为:,含义为判断关系式是否为true还是false,如果为true,则执行语句体1,否则执行语句体2。if(关系表达式){语句体1;}else{语句

2021-12-17 15:09:41 65

空空如也

空空如也

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

TA关注的人

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