自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 selenium的基础用法

把以人为驱动的测试行为转化为机器执行的一种过程。自动化测试能够代替一部分的手工测试,自动化测试能够提高测试效率。

2023-04-23 18:58:04 227 1

原创 Linux的简单命令

r递归处理,将指定目录下的文件与子目录一并处理。若源文件或目录的形态,不属于目录或符号链接,则一律视为普通文件处理。touch命令参数可更改文档或目录的日期时间,包括存取时间和更改时间,或者新建一个不存在的文件。-f 或 --force 强行复制文件或目录, 不论目的文件或目录是否已经存在。-d 将目录象文件一样显示,而不是显示其下的文件。-R 或 --recursive递归处理,将指定目录下的文件及子目录一并处理。-a 列出目录下的所有文件,包括以 . 开头的隐含文件。3)移动端(Android内核)

2023-04-14 15:09:57 187

原创 五子棋对战

这里要注意多线程环境下, 多个用户同时使用同一个哈希表的时候, 进行添加和删除的时候, 会有线程安全的问题, 那么这里就需要使用 ConcurrentHashMap在多线程环境下, 按照等级分的队列, 在多线程环境下, 并发的进行入队的时候, 删除的队列中用户的时候, 也会有线程安全问题, 这里针对同一个队列就可以进行加锁。

2023-03-02 11:09:42 1256

原创 音乐播放器详解

前端:HTML+CSS+JavaScript+JQuery后端:Spring MVC+Spring Boot + MyBatis。

2023-03-01 19:51:30 2079

原创 Spring AOP

面向切面编程,它是一种思想,它是对某一类事情的集中处理Spring AOP是一个框架,提高了一种对AOP思想的实现例如, 在没有学习AOP之前, 之前的判断当前登录状态, 就需要在每一个页面都实现登录校验, 在有了AOP之后, 外面只需在某一处配置以下, 所有的页面就都可以实现登录验证了, 就不需要写太多重复的代码,@Aspect // 定义切面@Component// 切点 (配置拦截规则)// 这是一个空方法, 不需要有具体的实现}}AspectJ 支持三种通配符。

2022-09-11 19:11:39 333

原创 Spring MVC程序开发

MVC是ModelViewController的缩写,它是软件工程中的一种软件架构模式,它把软件系统分为模型,视图和控制器三个基本部分。Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。View(视图)是应用程序中处理数据显示的部分,通常视图是依据模型数据创建的。Controller(控制器)是应用程序中处理用户交互的部分,通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。2.SpringMVC的连接http8080/hello。...

2022-09-05 22:02:02 602

原创 Spring Boot的日志文件

第一步:在程序中获取日志对象第二步:调用日志对象的打印方法,将信息打印出来。

2022-09-01 20:06:29 1085

原创 Spring Boot

且两个配置文件中有相同的配置项,Spring Boot会优先考虑.properties,因为.properties的优先级更高一些。4)yml格式的配置文件写的时候容易出错(在key:value中间有个空格),而properties写法比较传统,但不易出错。2)一个项目中允许存在两种不同的配置,但是在项目中建议只使用一种配置文件的格式。5)支持更多的监控的指标,可以更好的了解项目的运行情况。Spring Boot的诞生是为了简化Spring程序的开发的。Spring的诞生是为了简化Java程序的开发的。..

2022-08-29 19:45:36 276

原创 Bean的作用域和生命周期

之前所说的作用域,是在程序中定义的某个变量的某个区域就叫做作用域,这里的Bean作用域不同Bean在Spring整个框架中的某中行为模式例如:singleton单例作用域,就表示Bean在整个Spring中只有一份,它是全局共享的,那么当其他人修改了这个值之后,那么另一个人读取到的就是被修改的值。

2022-08-22 22:01:07 274

原创 Spring 的读取和存储对象

这里配合@Autowired 和 @Resource 都可以。

2022-08-19 22:19:10 241

原创 Spring及Spring的创建和使用

目录1.Spring是什么?2.loc和DI是啥?有什么区别? 3.Spring最核心的功能是啥? 4.Spring项目的创建5.将Bean对象存储到Spring中6.获取并使用Bean对象 7. ApplicationContext VS BeanFactory 1)创建一个maven项目; 3)添加Spring依赖包 ,将以下代码粘贴到.xml文件下,然后刷新 4)创建一个启动类; 1)创建一个业务对象 2)将对象存储到Spr

2022-07-06 13:02:25 160

原创 多线程“八股文”

目录1.CAS1.1什么是CSA1.2CAS实现了原子类1.3CAS实现自旋锁1.4CAS中ABA问题2.Synchronized原理2.1Synchronized的特点2.2Synchronized锁加工的过程2.3其他优化操作3.Callable 接口4. JUC(java.util.concurrent)的常见类4.1ReentrantLock4.2原子类4.3信号量 4.4CountDownLatch5.HashTable 和 ConcurrentHashMapHashMapHashTableCon

2022-06-20 19:59:25 782

原创 MySQL数据库的索引与事务

目录1.索引1)索引的数据结构2)索引的使用2.事务1)脏读 2)不可重复读 3)幻读 3.MySQL的隔离级别索引:是一种特殊的文件,包含着对数据表里所有记录的引用指针,可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现。简单来说,数据库索引好比是一本书的目录,能够加快数据库的查询速度。作用:索引就是为了避免数据库进行顺序查找,提高查找的效率。索引付出的代价:空间的代价,需要浪费一定的空间;时间的代价,只针对增删改来说创建主键约束(primary key),唯一约束(uni

2022-06-04 10:38:10 304

原创 数据库操作增删查改(进阶)

1.数据库约束not null:指示某列不能存储null值(创建表时,可以指定某列不为空) create table student (id int not null, name varchar(20));unique:唯一约束(如果尝试插入重复的值,就会报错) create table student (id int unique, name varchar(20));default:默认值约束(此处可以把默认值...

2022-05-31 13:08:21 641

原创 MySQL基础操作与增删改查(基础版)

目录1.数据库基础操作2.常用数据类型3.表的操作1.数据库基础操作1)显示当前的数据库:show databases;2)创建数据库:create database [if not exists] 数据库名;3)使用数据库:use 数据库名;4)删除数据库:drop database [if exists] 数据库名;2.常用数据类型1)数值类型:2)字符串类型:3)日期类型:3.表的操作操作数据库中的表时,需要先使用该数据库; 1

2022-05-30 13:15:25 187

原创 HTTP协议与HTTPS

目录1.了解HTTP协议2.HTTP协议的报文格式1)请求报文格式2)响应报文格式3)报文格式的注意事项3.认识URL 1)分析一个具体的URL 2)URL中可省略的部分 3)关于URL encode和URL decode4.HTTP请求(Request) 1)GET方法 2)POST方法 3)其他相关方法5.认识请求报头(header)6.HTTP响应(Resp...

2022-05-26 22:17:53 2234

原创 CSS基本了解

1.CSS1)什么是CSSCSS能够对网页中元素位置的排版进行像素级精确控制,实现美化页面的效果,能够做到页面的样式和结构分离2)CSS基本语法选择器+{ 属性:属性值;}例如:<style> p{ font - size:10px; color:red; }</style><p> 你好</p>3)CSS的使用方式直接定义标...

2022-05-02 11:02:07 434

原创 简单了解html基本标签

1.HTML文件使用“!”+“TAB”快速生成头文件代码2.常见标签1)注释标签<!-- 注释 -->2)标题标签从h1 ~ h6,数字越大字体越大<h1>一级标题</h1>3)段落标签p标签表示一个段落<p> 第一段 <p>4)换行标签br是一个单标签,不需要结束标志,<br/>是规范写法<p>第一段 Lorem ipsum dolor sit amet .

2022-04-29 15:28:07 609

原创 计算机网络——IP

1.IP1.1 IP首部的格式版本:表示的是IP首部的版本号,IPv4的版本号为4首部长度:当没有可选项时,IP首部的长度为20字节服务类型:由8位组成,3位优先权字段(以弃用),4位TOS字段,和1位保留字段(必须置为0),4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能选择一个总长度:字段长为16bite,因此IP包的最大长度位65635标识:(ID)用于分片重组,同一个分片的标识值相同,不同分片的标识值不同标志:(Flags)长度为.

2022-04-29 14:12:24 1444

原创 Tcp协议的相关特性

1)确认应答可靠性:简单来说就是发送方发出去数据之后,能够知道对方有没有收到~~保证可靠传输的核心机制,关键就是接受方收到消息之后,给发送方,返回一个应答报文(ACK),表示自己已经收到了举个例子说明:如果数据就是按照这样的方式传递没有什么问题,但如果收到的消息先是“滚”,其次才是“好呀好呀”,这是就会出现“误会”之所以会出现这种问题,是因为网络上,数据接收的顺序,不一定和发送的顺序完全一致!!,存在后发先到的情况,因此这时我们只要对消息进行编码就可以解决,如下:Tcp的针对

2022-04-18 17:35:26 589

原创 Tcp三次握手与四次挥手

2022-04-15 18:31:49 366

原创 UDP的报文结构及注意事项

为了理解起来更方便,可以写成以下方式UDP的封装如图:伪头部 : 只是为了提取 IP 数据报中的源IP,目的IP信息并加上协议等字段构造的数据。在实际传输中并不会发送,仅起到校验和计算使用,因此称之为伪首部。源端口号 : 一般是客户端程序请求时,由系统自动指定,端口号范围是 0 ~ 65535,0~ 1023为知名端口号。目的端口 : 一般是服务器的端口,一般是由编写程序的程序员自己指定,这样客户端才能根据ip地址和 port 成功访问服务器UDP 长度 : 是指整个UDP数据...

2022-04-15 17:10:36 271

原创 网络编程(Tcp与Udp编程示例)

Socket 套接字Socket套接字,是由系统提供用于网络通信的技术,是基于TCP/IP协议的网络通信的基本操作单元。基于Socket套接字的网络程序开发就是网络编程网络编程套接字,是操作系统给应用程序提供的一组API(叫做socket API)socket可以视为应用层和传输层之间的通信桥梁传输层的核心协议有两种,TCP,UDPsocket API也有对应的两组,分为以下两种:TCP:有连接;可靠传输;面向字节流;全双工UDP:无连接;不可靠传输;面向数据报;全双工有连接

2022-04-12 19:01:44 1839

原创 网络的一些基本概念

1.IP地址概念IP地址主要用于标识网络主机、其他网络设备(如路由器)的网络地址。简单说,IP地址用于定位主机的网络地址格式IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)通常用“点分十进制”的方式来表示,即a.b.c.d的形式(a,b,c,d都是0~255之间的十进制整数)特殊IP127.*的IP地址用于**本机环回(loop back)**测试,通常是127.0.0.12 .端口号概念在网络通信中,IP地址用于标识主机网络地址,端..

2022-04-09 19:52:25 1057

原创 线程池案例

简单来说:把线程提前创建好,放到池子里,后面需要用线程,直接从池子里取,就不必从系统这边申请首先我们需要知道线程池里有什么1)先能够描述任务(直接使用 Runnable)2)需要组织任务(直接使用BlockingQueue) //1.描述一个任务,直接使用Runnable,不需要额外创建类了 //2.直接使用一个数据结构来组织若干个任务 private BlockingDeque<Runnable> queue = new LinkedBlockingDeque

2022-03-31 14:45:05 477

原创 定时器案例

定时器:就好比一个闹钟,在一定时间之后,被唤醒并执行某个之前设定好的任务整体操作:1)描述一个任务:Runnable + time2)使用优先队列来组织若干个任务,PriorityBlockingQueue3)实现schedule方法来注册任务到队列中4)创建一个扫描线程,这个扫描线程不停的获取到队首元素,并且判断时间是否到达注意问题:让MyTask类能够支持比较,以及注意解决“忙等”问题说到计时器就需要Java.util.Timer包这个包的核心方法就一个,schedule

2022-03-31 14:30:37 740

原创 常见锁策略

1.悲观锁与乐观锁悲观锁:预期锁冲突的概率很高(做的工作更多,付出的成本更多,更低效)乐观锁:预期锁冲突的概率很低(做的工作更少,付出的成本更低,更低效)2.读写锁与普通的互斥锁读写锁:多个线程之间,数据的读取方之间不会产生线程安全问题,但数据的写入方互相之间以及和读者之间都需要进行互斥,如果两种场景下都用同一个锁,就会产生极大的性能消耗。读写锁:可以分为三个操作:1)加读锁(如果代码只是进行读操作,就加读锁)2)加写锁(如果代码中进行了修改操作,就加写锁)3)解锁针对读

2022-03-30 19:40:20 325

原创 线程安全的单例模式

单例模式具体的实现方式,分为“饿汉”和“懒汉”两种。饿汉模式:类加载的同时创建实例//通过Singleton这个类来实现单例模式,保证Singleton这个类只是唯一实例//饿汉模式class Singleton{ //1.使用static创建一个实例,并且立即进行实例化 // 这个instance对应的实例,就是该类的唯一实例 private static Singleton instance = new Singleton(); //2.为了防止程序员在

2022-03-27 20:53:51 1896

原创 线程安全问题的原因及解决方案

线程安全问题:简单来说,就是在多线程的调度下,导致出现了一些随机性,随机性使代码出现 了一些bug =>线程不安全造成线程不安全的原因有哪些呢?1)抢占式执行,调度过程随机(也是万恶之源,无法解决)2)多个线程同时修改同一个变量(可以适当调整代码结构,避免这种情况)3)针对变量的操作,不是原子的(加锁,synchronized)4)内存可见性,一个线程频繁读,一个线程写(使用volatile)5)指令重排序(使用synchronized)解决方法:1)使用synchro

2022-03-25 20:49:46 3311

原创 Java线程的所有状态

NEW(初始状态): 安排了工作, 还未开始行动RUNNABLE(运行状态): 可工作的. 又可以分成正在工作中和即将开始工作.BLOCKED(阻塞状态): 这几个都表示排队等着其他事情,表示线程阻塞于锁WAITING(等待状态): 这几个都表示排队等着其他事情TIMED_WAITING(超时等待状态): 这几个都表示排队等着其他事情(可以在指定的时间内自行返回)TERMINATED(终止状态): 工作完成了1,初始状态(NEW)实现Runnable接口和继承Thread可以得到一个线程类,

2022-03-25 10:45:37 81

原创 Thread类的基本用法线程中断 线程等待 线程休眠 获取线程实例

1,线程的创建五种方式(2条消息) Thread 类创建线程的五种基本写法_许七安402的博客-CSDN博客2,线程中断线程停下来的关键,是要让线程对应的run方法执行完~有两种方法(还有一个特殊的,是main这个线程,对于main来说,得是main方法执行完,线程就完了)(1)可以手动的设置一个标志位(自己创建的变量,Boolean),来控制线程是否要执行结束~~ private static boolean isQuit = false; public static vo

2022-03-23 20:43:16 532

原创 Thread 类创建线程的五种基本写法

1,创建子类,继承自Threadclass MyThread extends Thread{ @Override public void run() { System.out.println("Hello thread"); }}public class Dome1 { public static void main(String[] args) { Thread t = new MyThread(); t.start

2022-03-22 22:49:00 1348

原创 进程与线程的区别

1,进程(简单来说就是跑起来的程序)为啥要有进程?因为我们的系统支持多任务了~~程序猿也就需要“并发编程”通过多进程,是完全可以实现并发编程的~~但有一个比较大缺点:如果需要频繁的创建/销毁进程,或者需要频繁的调度进程,这些事情的成本比较高~~如何解决这个问题?有两个方法:1,进程池:进程池虽然能解决上述问题,提高效率,同时也有问题,池子里的限制进程,不适用的时候也在消耗资源,消耗的系统资源太多了~~2,使用线程来实现并发编程~线程比进程更轻量,每个进程可以执行一个任务,每个

2022-03-21 22:50:51 422

原创 进程的理解

进程的详解

2022-03-21 22:14:30 705

空空如也

空空如也

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

TA关注的人

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