自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux环境下配置Java开发环境(JDK, Tomcat, mariadb)

注意:Linux下的安装过程需要以root用户身份进行操作  Linux环境下配置JDK最简单的办法就是基于yum进行安装, 安装过程:使用 yum list | grep JDK 命令查看yum中所有的JDK版本找到java-1.8版本的带有devel和x86_64后缀的安装包, Ctrl + Insert复制版本号((java-1.8.0-openjdk-devel.x86_64))在命令行输入yum install, 并通过Shift + Insert 快捷键将复制好的JDK版本粘贴在Instal

2022-07-03 13:32:31 776 1

原创 计算机网络 - http协议

1. 什么是http协议?2. 如何理解应用层协议?3. http协议格式4. http请求5. http响应6. 通过form表单构造http请求  HTTP协议(全称为"超文本传输协议"), 是一个应用十分广泛的应用层协议, http协议通常运行在TCP协议之上, 它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应.我们通过浏览器打开任意一个网站, 此时就需要通过http协议来传输数据.例如, 我们在浏览器中输入"www.baidu.com", 按下回车, 此时, 我们的浏览器就会

2022-07-02 19:39:01 639

原创 JavaWeb - CSS

1. 什么是CSS2. CSS的基本语法规范3. CSS的引入方式4. 常用选择器    标签选择器    类选择器    id选择器    通配符选择器    后代选择器    子选择器    并集选择器    伪类选择器5. 字体属性    字体样式    字体大小    字体粗细    字体倾斜6. 文本属性    文本颜色    文本对齐    文本装饰    文本缩进    行高7. 背景属性    背景颜色    背景图片    背景平铺  

2022-05-25 11:26:29 527

原创 JavaWeb - HTML

HTML结构  认识HTML标签  HTML文件基本结构  自动生成代码框架HTML中的常见标签  注释标签  标题标签  段落标签  换行标签  格式化标签  超链接标签  表格标签  列表标签  表单标签  无语义标签HTML结构认识HTML标签  HTML代码是由标签构成的, 形如:<body>hello world!</body>  " <> "内存放标签名, HTML中大部分标签都由开始标签和结束标签构成, 例如上面的&

2022-05-10 16:14:49 304

原创 计算机网络 - IP协议

IP协议是网络层中最重要的协议, 它主要完成两方面的工作:地址管理路由选择IP协议数据报:4位版本:IP协议的版本号, 现在使用的IP协议只有两种, 因此版本号也只有两种取值, 分别为4和64位首部长度:代表报头长度(与TCP协议相同, 报头长度可变)8位TOS:8位TOS中仅有四位有效, 分别为最小延时, 最大吞吐量, 最高可靠性, 最小成本, 这四位同一时刻只能实现一种状态(将一个设为1, 其他只能为0), IP协议能够规划两点间最合适的路径, 所谓"合适"就是在这四位TOS中选择一

2022-04-28 16:02:13 647

原创 计算机网络 - TCP协议与UDP协议

UDP协议TCP协议TCP协议的可靠传输机制  确认应答  超时重传  连接管理    三次握手    四次挥手  滑动窗口  流量控制  拥塞控制  延时应答  捎带应答  面向字节流(粘包问题)  TCP的异常终止UDP协议UDP协议:UDP报文长度为2个字节, 也就是UDP报文的位数最大为65535一个完整的UDP报文格式:  校验和用来验证网络传输的这个数据是否正确(即使校验和正确, 也不能保证数据一定是正确的, 但如果校验和错误, 则说明数据一定发生了错误

2022-04-24 15:32:16 753

原创 计算机网络 - 初识网络

1. 网络互连2. 局域网和广域网3. IP地址和端口号4. 网络协议5. OSI七层模型6. TCP/IP模型7. 模拟实现网络通信1. 网络互连  几十年前, 在计算机刚刚兴起的时候, 计算机之间是相互独立的, 然而, 随着时代的发展, 越来越需要计算机之间的相互通信, 需要计算机之间进行共享数据, 传输数据, 也就是多个计算机协同完成业务, 于是, 网络互连由此产生.  网络互连:多台计算机连接在一起, 实现数据的共享. 数据共享的本质其实就是网络中的数据传输, 即计算机通过网络来

2022-04-12 19:37:23 2941

原创 JavaEE初阶 - 文件操作和IO

1. 什么是文件?2. 文件的分类3. 目录结构4. 绝对路径和相对路径5. 文件系统的操作(File类)6. 文件内容的操作    InputStream和OutputStream    Reader和Writer7. 文件操作的案例    删除指定文件    复制文件内容1. 什么是文件?  在计算机中, 文件是以计算机的磁盘为载体存储在计算机上的数据集合, 这些文件不仅包括普通文件(如txt, rar, zip, mp4等文件), 还可以包含目录.2. 文件的分类按照数据

2022-04-11 15:59:07 590

原创 LeeCode题目 - 用两个栈实现队列, 包含min函数的栈

剑指offer 09: 用两个栈实现队列剑指offer 30: 包含min函数的栈用两个栈实现队列题目链接:剑指offer 09:用两个栈实现队列题目描述:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例一:输入:[“CQueue”,“appendTail”,“deleteHead”,“deleteHead”]

2022-04-04 12:39:19 701

原创 JavaEE初阶 -多线程基础篇 (线程池)

为什么要使用线程池?Java标准库中的线程池实现一个线程池1. 为什么要使用线程池?  提前将线程创建好, 存在线程池中, 后面如果要使用线程可以直接从线程池中获取, 而不必从系统中申请, 线程结束之后也不是由系统销毁, 而是继续存入线程池中, 这样, 线程创建和销毁的速度会加快.那么, 为什么在线程池里取出线程比系统创建线程要快呢?  操作系统中存在两种状态, 用户态和内核态, 程序中的部分指令需要调用操作系统的API, 进一步的逻辑都会在内核中执行, 这种代码就是内核态的代码.  创建线

2022-04-02 13:17:43 571

原创 JavaEE初阶 - 多线程基础篇(定时器)

标准库中的定时器实现一个定时器定时器完整版代码1. 标准库中的计时器Java标准库中提供了一个Timer类, 通过Timer类中的核心方法schedule()即可创建一个定时器.public static void main(String[] args) { //创建Timer对象 Timer timer = new Timer(); //调用schedule()方法创建定时器 //schedule()方法共有两个参数 //1. 实现TimerTask接口

2022-04-02 09:19:59 382

原创 JavaEE初阶 - 多线程基础篇(生产者 - 消费者模型)

阻塞队列生产者 - 消费者模型标准库中的阻塞队列循环队列实现阻塞队列实现生产者 - 消费者模型阻塞队列阻塞队列是一个符合先进先出的队列, 相比于普通队列, 阻塞队列有一些其他方面的功能:线程安全产生阻塞效果1). 如果队列为空, 此时尝试出队列, 就会出现阻塞, 直到队列不为空为止2). 如果队列为满, 此时尝试入队列, 也会出现阻塞, 直到队列不为满为止基于上述特性, 就可以实现"生产者-消费者模型"(这是日常开发中, 处理多线程问题的一个典型的方式)生产者 - 消费者模型

2022-03-31 09:53:49 861

原创 JavaEE初阶 - 多线程基础篇 (饿汉模式与懒汉模式)

什么是单例模式?单例模式的两种实现饿汉模式懒汉模式两种模式的线程安全问题1. 什么是单例模式?单例模式是设计模式的一种, 设计模式就是针对这些场景给出一些经典的解决方案(类似于我们打游戏时的固定套路).单例模式能保证某个类在程序中只存在一份实例, 不会创建出多个实例.2. 单例模式的两种实现饿汉模式:在类加载的同时创建实例.懒汉模式:在类加载时不创建实例, 只有第一次使用这个类时才创建(也就是只有第一次创建实例时才会成功)举一个生活中的例子, 吃完饭后, 饿汉模式会立刻将所有的碗

2022-03-30 15:24:16 655

原创 JavaEE初阶 - 多线程基础篇 (死锁, 可重入锁, 线程通知和等待)

1. 死锁和可重入锁2. 死锁的必要条件3. Java标准库中有关线程安全的类4. 线程通知和等待死锁和可重入锁  同一个线程针对同一个锁, 连续加锁两次, 如果出现死锁, 那就是不可重入锁, 没有出现死锁, 就是可重入锁.连续加锁两次:synchronized public void func(){ synchronized (this){ System.out.println("连续加锁两次"); }}上述代码中, 外层加了一层锁之后, 里层又对同一

2022-03-29 16:31:54 408

原创 JavaEE初阶 - 多线程基础篇 (线程状态和线程安全)

线程状态  1.Java中的6种线程状态  2. 线程状态转换图线程安全  1. 线程安全和线程不安全  2. 一个线程不安全的典型案例  3. 产生线程不安全的原因  4. 对内存可见性影响线程安全的分析  5. synchronized关键字线程状态1.Java中的6种线程状态NEW: 已经创建好了Thread对象, 但还没有调用start方法通过线程对象.getState()来查看当前线程的状态:public class Demo1 { public stati

2022-03-28 17:33:04 728

原创 JavaEE初阶 - 多线程基础篇 (Thread类的基本用法)

1. 创建线程  继承Thread类  实现Runnable接口  其他变形写法2. 比较单线程和多线程的运行效率3. Thread类的构造方法和属性4. 中断线程5. 线程等待6. 线程休眠  在Java标准库中提供了一个Thread类来表示/操作线程, 操作系统提供了一种关于线程的API(C语言风格, 因为操作系统是由C/C++实现的), Java将这组API封装成了Thread类.创建好的Thread对象和操作系统中的线程是一一对应的关系.1. 创建线程继承Thread类//

2022-03-24 16:13:56 793

原创 JavaEE初阶 - 进程与线程

进程与线程1. 操作系统2. 操作系统的功能3. 什么是进程?4. 操作系统对进程的管理5. 进程控制块(PCB)的属性6. 并行和并发7. 进程间通信8. 什么是线程?9. 引入多线程面试重点:进程和线程的区别与联系进程与线程1. 操作系统  操作系统是一组做计算机资源管理的软件的统称, 目前常见的操作系统有:Windows系列, Linux系列, iOS系列等.2. 操作系统的功能操作系统主要有两个功能:防止硬件被应用程序滥用向应用程序提供简单一致的机制来控制复杂的

2022-03-22 14:29:58 966

原创 MySQL学习笔记(第七节)(超详细解析索引和事务)

索引1. 什么是索引?2. 索引有什么作用?3. 索引的使用场景4. 使用索引5. 索引有哪些不足?6. 索引的底层数据结构  6.1 B树  6.2 B+树事务1. 什么是事务?2. 为什么要使用事务?3. 使用事务4. 事务的基本特性5. 事务的隔离性和并发性分析索引1. 什么是索引?  索引是一种特殊的文件, 包含着对数据表里所有记录的引用指针, 可以对数据表中的一列或多个列创建索引, 并制定索引, 不同类型的索引由不同的数据结构实现.  (通俗地讲, 索引就好比

2022-03-18 15:47:06 770

原创 MySQL学习笔记(第六节)

进阶查询 1. 聚合查询, 将多个行的数据进行关联MySQL中内置了一些聚合函数:count: 计算查询结果共有多少行.举例:有下图所示的表格:我们通过count 来分别查询表格的行数和chinese的行数:可以看出, null这样的值不会记录到查询结果中.sum:将查询结果进行相加select sum(chinese) from student; 就是将所有学生的语文成绩进行相加.注意: sum只能对数字进行相加, 无法对其他类型使用.group by 分组操作, 根据

2022-03-15 16:24:57 523

原创 MySQL学习笔记(第五节)

foreign key : 外键约束,针对两张表进行关联例如,这里有两张表:学生表:idnameclassID(所在班级的ID)1张三12李四13王五2班级表:classIDname1CS19012CS1902这种情况下可以使用外键来约束学生表和班级表的关系, 使学生表依赖班级表, 将学生表称为"子表", 班级表称为"父表", 学生表里的外键为 ‘classID’.创建外键:  先创建一个class表: 

2022-03-13 17:13:56 987

原创 MySQL学习笔记(第四节)

1. 通过 like 进行模糊查询:like需要搭配通配符来使用, 如果对方的字符串满足like所描述的形式, 则可以被查询到, 反之则不能.通畅和like进行搭配的通配符共有两个, 分别为% 和 _ %代表任意个任意字符, _ 代表任意一个字符.举例: 查询所有姓孙的学生的信息:  %指这个位置可以是任意个任意字符, 甚至可以是 0个, 而 _ 处只能是任意一个字符.(虽然 _ 只能表示一个字符,但可以同时使用多次, 例如我们可以通过两个 _ 来表示两个字符)  注意:上述例子中的"sun%

2022-03-10 20:25:54 581

原创 MySQL学习笔记(第三节)(select的基本操作)

查找语句  1.最基础的查找, 全列查找, 直接将一个表中的所有行和列全部查找出来.    select * from 表名;  这里查找到的表是一个"临时表",我们之前所说的数据库中的表都是在硬盘上的,通过select查询的结果并不在硬盘上,而是在内存中,进行输出之后,数据也就随之释放了.  select操作不会影响到服务器硬盘上保存的数据.  select * from 表名; 也是一个危险操作, 生产环境保存数据量可能非常大, 如果此时执行这个操作,服务器会持续读取硬盘数据, 瞬间将硬盘的

2022-03-09 18:27:12 971

原创 MySQL学习笔记(第二节)

数据库是一类管理数据的软件,往往把数据存储在硬盘上(持久化存储),很方便地进行层删改查MySQL是一个客户端 – 服务器结构的软件,在控制台上输入的任何一个命令,本质上都是通过网络的方式和服务器进行交互.  客户端:主动发起请求的一方.  服务器:被动接受请求的一方.  请求:客户端向服务器发送的数据.  响应:服务器给客户端返回的数据.每个数据库中可以存在数据表, 每个数据表的可以有很多行,每行称为一条"记录" , 每一行可以有很多列,每一列称为"字段".  MySQL要求每一行的列都是一

2022-03-09 10:17:30 190

原创 MySQL学习笔记(第一节)

显示当前服务器有哪些数据库:show databases; //(中间有空格,可以是一个或多个)(MySQL语句不区分大小写)创建数据库create database 数据库名;(数据库名不能是关键字,如果一定要用关键字,需要使用反引号引起来)反引号是键盘上esc下面的键(需要英文输入法)不能在一个服务器上创建多个同名数据库选中数据库/使用数据库在针对数据库进行进一步操作之前,需要先选中数据库再进行操作,具体方法是:use 数据库名;删除数据库drop database 数据库名;.

2022-03-09 09:19:40 270

原创 Java数据结构之二叉树经典面试OJ题(下)

二叉树遍历二叉树的分层遍历1. 二叉树遍历题目描述:示例1输入:abc##de#g##f###输出:c b e g d f a题目分析:  题目给定一个字符串,这个字符串是一个先序遍历结果(’ # ’ 代表当前节点为空),题目要求我们根据这个字符串创建二叉树并打印中序遍历结果,我们只需:遍历字符串,字符串当前位置的值不为空时,创建节点,并继续向后遍历字符串当前位置的值为空时,直接向后遍历创建完二叉树后对二叉树进行中序遍历,并打印中序遍历结果即可代码实现:import j

2022-02-13 11:47:40 492

原创 Java数据结构之二叉树经典面试OJ题(上)

1.检查两棵树是否相同2.另一棵树的子树3.二叉树的最大深度4.判断一颗二叉树是否是平衡二叉树5.对称二叉树6.二叉树的构建及遍历7.二叉树的分层遍历8.给定一个二叉树,找到该树中两个指定节点的最近公共祖先9.二叉搜索树转换为成排序双向链表10.根据一棵树的前序遍历与中序遍历构造二叉树11.根据一棵树的中序遍历与后序遍历构造二叉树12.二叉树创建字符串1. 检查两棵树是否相同题目:题目分析:根据题意,树结构相同且节点值相同的两棵树为相同的树当所有节点的结构都相同时,树的

2022-01-21 16:05:16 403 1

原创 Java数据结构之栈和队列的相互实现(LeetCode题目)

用栈实现队列题目:请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:    void push(int x) 将元素 x 推到队列的末尾    int pop() 从队列的开头移除并返回元素    int peek() 返回队列开头的元素    boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:    你只能使用标准的栈操作 —— 也就是只有 push to t

2022-01-16 18:37:13 420 2

原创 LeetCode — 有效的括号(Java实现)

题目给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例一:输入:s = “()”输出:true示例二:输入:s = “()[]{}”输出:true示例三:输入:s = “(]”输出:false示例四:输入:s = “([)]”输出:false示例五:输入:s = “{[]}”输出:true题目分析返回false共有

2022-01-15 18:38:59 336 1

原创 谈谈Java中super关键字的用法和细节

Java中对super关键字的深入理解,求点赞~~~

2022-01-14 18:45:35 461 12

原创 Java数据结构之栈的代码实现

Java数组和链表实现栈的模拟

2021-12-16 14:31:13 1878 1

原创 Java数据结构之普通队列和循环队列

超详细队列和循环队列解析(图解+数组代码实现)~~~~~

2021-12-14 21:03:05 889

原创 Java数据结构之稀疏数组

稀疏数组稀疏数组的应用场景二维数组转稀疏数组稀疏数组转二维数组稀疏数组的应用场景:在编写五子棋时,需要有存盘退出和读取游戏的功能,但当棋盘上的棋子非常少时,其余默认值均是0,这样就记录了很多无意义的值,因此我们会用到稀疏数组:下图是一个二维数组,这个数组中大部分元素都为0,那么就可以将这个数组转为稀疏数组:对于这个数组,我们设置一个n行3列稀疏数组来存放这个数组中不为0的元素:    第0行,我们存放原数组行、列数和不为0元素的个数,原数组共6行7列,数组中不为0的元素共8个,那么稀疏数

2021-12-13 12:42:12 614

原创 LeetCode题目 -- 加一(Java实现)

题目:给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例一:输入:digits = [1,2,3]输出:[1,2,4]解释:输入数组表示数字 123。示例二:输入:digits = [4,3,2,1]输出:[4,3,2,2]解释:输入数组表示数字 4321。示例三:输入:digits = [0]输出:[1]题目分析:实现数字加

2021-12-02 21:31:13 354 2

原创 Java中异常的处理

什么是异常?Java异常体系异常的用法异常的处理流程抛出异常自定义异常什么是异常?我们在之前的学习中已经接触过异常,例如:数组下标访问越界时:public class Test2 { public static void main(String[] args) { int[] array = {1,2,3,4,5}; System.out.println(array[5]); }}//结果:Exception in thread "m

2021-11-26 16:03:07 286 1

原创 图书管理系统(Java顺序表实现)

一、简介    实现此项目的目的是巩固并理解前面的知识点:类,抽象类,封装,继承,多态,接口等二、核心需求管理端  查阅书籍  增加书籍  删除书籍  打印书籍列表  退出系统用户端  查询书籍  借阅书籍  归还书籍  打印书籍列表  退出系统三、类的设计1. 创建图书类    图书类中包含图书的名称,价格,类型,作者和是否被借出等信息,并生成构造方法,Getter()和Setter()方法,toString方法(注意成员变量应该尽可能使用private关键字修饰)pu

2021-11-21 17:18:23 899

原创 Java面向对象编程(包,继承,多态,抽象类,接口)

一、包   1.1 导入包中的类   1.2 静态导入   1.3 把类放入包中   1.4 包的访问权限控制    1.5常见的系统包一、包包(package)是组织类的一种方式,包的存在是为了保证类的唯一性。1.1 导入包中的类在Java中已经提供了很多现成的类供我们使用,我们可以通过import关键字导入这些类,如:import java.util.Arrays;class Test{ public static void main(String[] args){ int

2021-11-18 17:20:21 613 5

原创 Java时间复杂度和空间复杂度

1. 算法效率2. 时间复杂度    2.1 时间复杂度的概念    2.2 大 O 的渐进表示法3. 空间复杂度1. 算法效率    算法效率分为两种,一种是时间效率,一种是空间效率,时间效率又称时间复杂度,空间效率又称空间复杂度。时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量的是算法额外需要的运行空间。在计算机才初步发展的年代,计算机的存储容量非常小,人们对算法空间复杂度的重视程度远远大于时间复杂度,但随着计算机技术的迅速发展,计算机的内存容量已经有了非常大的提高,所以现在

2021-11-03 12:21:58 270 2

原创 Java类和对象

1. 类与对象的初步认知我们都知道Java是一门面向对象的语言,c语言是一门面向过程的语言,那么什么是面向对象,什么又是面向过程呢?我们在Java中一直提到的类和对象又是什么呢?面向对象:面向对象就是把现实中的事务都抽象成为程序设计中的“对象”,其基本思想是一切皆对象,先设计组件,再完成拼装。面向过程:注重的是过程,在整个过程中所涉及的行为,就是功能。类和对象:类就是一类对象的统称。对象就是这一类具体化的一个实例。举个例子,人就是一个类,而具体到某个人,如"张三",这就是一个对象,一个类可以产生无数

2021-11-01 18:03:09 77

原创 Java数组的定义和应用

1. 数组基本用法   1.1 什么是数组   1.2 创建数组   1.3 数组的使用2. 数组作为方法的参数   2.1 基本用法   2.2 理解引用类型   2.3 认识null   2.4 初识JVM内存区域划分3. 数组作为方法的返回值4. 二维数组...

2021-10-28 13:59:24 127

原创 Java中的运算符

运算符1. 算术运算符      基本四则运算符(+ - * / %)      增量赋值运算符()      自增/自减运算符2. 关系运算符3. 逻辑运算符4. 位运算符5. 移位运算6. 条件运算符7. 运算符的优先级1. 算数运算符2. 关系运算符3. 逻辑运算符4. 位运算符5. 移位运算6. 条件运算符7. 运算符的优先级...

2021-10-21 10:32:32 106

空空如也

空空如也

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

TA关注的人

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