自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 问答 (21)
  • 收藏
  • 关注

原创 网络编程三要素

网络编程三要素协议IP地址端口协议就是我上一篇写的协议,可以去我专栏里面去看IP地址IP地址:指互联网协议地址(Internet Protocol Address),俗称IP。IP地址用来给一个网络中的计算机设备做唯一的编号。假如我们把“个人电脑”比作“一台电话”的话,那么“IP地址”就相当于“电话号码”。必须通过电话号码才能找到我IPv4:是一个32位的二进制数,通常被分为4个字节,表示成a.b.c.d 的形式,例如192.168.65.100 。其中a、b、c、d都是0~255之间的十进制整

2021-08-27 18:01:51 162 1

原创 网络编程入门介绍

网络编程软件结构网络通信协议UDP通信软件结构C/S结构 :全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。网络通信协议TCP/IP协议: 传输控制协议/因特网互联协议( Transmission Control Protocol/Internet Protocol),它定义了计算机如何连入因特网服务器启动,客户端去去去服务器,两者之间建立一个连接,之

2021-08-27 17:47:06 130

原创 http协议

http协议介绍工作原理消息结构请求方式(列举主流的请求方法)状态码介绍Http协议是Hyper Text Trtansfer Protocol,她的全称是超文本运输协议,是用于从万维网服务器传输超文本到本地浏览器的传送协议基于TCP/IP通信协议来传递数据,比如说html,文件,图片等等工作原理浏览器作为http客户端通过url向http服务端发送请求常见的http服务器有Tomcat,这是我们最常用的服务器,她接到请求后,向客户端响应发送响应信息http默认端口号是80,可以更改端口号,可

2021-08-27 11:17:27 152

原创 file类递归删除文件夹

file类递归删除文件夹首先我们要明白递归的含义,就是把一个大问题分成一个一个的小问题去做,回到删除文件夹这里来,为什么要用递归呢,因为是首先file类不能一次性删完所有的,不能删除成功,只能输出二级目录,如果有多级就不能删除了,那么多级目录其实也是一个目录里面放了一个目录,那么就可以用递归方法来删了,我们来实现一把,上代码package file;import java.io.File;/** * @author 邓亚非 */public class Recursion { p

2021-08-26 23:59:00 556

原创 IO流之file-API

file类创建文件判断文件是否存在判断文件夹是否存在判断层级文件夹是否存在判断是否是一个文件判断是否是一个目录判断是否删除成功获取文件内容长度修改文件名称文件数组创建文件package file;import java.io.File;import java.io.IOException;/** * @author 邓亚非 */public class TestFile01 { public static void main(String[] args) { Fi

2021-08-26 23:54:32 75

原创 线程池和线程池的创建

线程池什么是线程池为什么需要线程池怎么创建线程池什么是线程池顾名思义,就是把多个线程创建好放在池子里,要想用哪个直接拿就行了,线程池是一种多线程处理方式,将多个任务放在队列中,创建线程之后自动启动这些任务,需要注意的是,这里的线程必须由实现了Runnable接口和Callable接口的线程对象为什么需要线程池如果并发的线程数量很多,并且每个线程都是执行一段时间就结束了,这种要创建多次的线程的效率会大大降低系统的效率,因为创建和销毁都需要时间怎么创建线程池1:创建缓存线程池package co

2021-08-26 20:44:53 89

原创 控制并发线程数的Semaphore

控制并发线程数的SemaphoreSemphone是信号量控制同时访问某一个资源的线程数量,以上厕所为例,假如10个人去上厕所,只有三个厕所,我们得让他们合理得去上厕所,不能出现争抢的情况,可以这么做,让他们一组一组的上,当有厕所上的时候下一批在去,租后一个人随机上1.构建线程类,重写run()方法 2.属性name代表人的姓名和控制并发线程数Semaphore类的属性,名为wc --利用此类,来控制10个人(线程)并发的执行,每次最多有3个线程执行(3个人去上厕所) --

2021-08-26 15:26:15 231

原创 同步屏障CyclicBarrier

CyclicBarrierCyclicBarrier并发工具类的作用类是让一组线程到达一个屏障,就是同步点时被阻塞,直到最后一个线程到达屏障是才会开始执行后面的代码,所有之前被拦截的线程才会被执行package com.concurrent;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;/** * @author 邓亚非 * 同步屏障工具类 */

2021-08-26 15:11:51 68

原创 CountDownLatch

CountDownLatchCountDownLatch允许一个或者多个线程等待其他线程完成操作,当然利用join也可以实现join用于让当前执行线程等待,知道子线程执行结束,她的原理是不停的检查join线程是否存活,如果子线程存活就让当前线程永远等待,就是谁子线程在执行,主线程就不可能执行,就会一直等待直到join线程终止后,线程的notify方法会被调用,在jvm里面实现的,在jkd1.5之后可以有并发包里面的CountDownLatch去实现这个功能我们来写一段代码测试一下CountDown

2021-08-26 14:59:24 93

原创 HashMap高并发情况下为什么会发生死循环

原因:其本质原因是因为它不支持线程安全更深入的原因就是它在多线程环境下会形成循环链表hashmap在jdk1.6的时候底层数据结构是数组加链表(entry)在多线程环境下会导致hashmap的entry链表线程环形数据结构,那么entry的节点就会永远不为空,就会线程循环链表,就是死循环hsahmap在jdk1.8的时候底层数据结构是数组,链表,红黑树,在多线程环境下会形成环行结构,产生死循环的问题我们来用代码模拟一下package com.concurrent;import java

2021-08-23 21:51:21 304 1

原创 Thread和Runable的区别

Thread和Runable的区别ThreadRunnable区别Threadpackage com.thread;/** * @author 邓亚非 */public class TestThread extends Thread { @Override public void run() { System.out.println("用Thread类创建线程"); }}Runnablepackage com.thread;/** *

2021-08-23 21:13:22 119

原创 notify和notifyAll

notify:notify只会唤醒众多等待线程中的其中一个线程用包子铺案例来演示一下package com.thread;/** * @author 邓亚非 */public class TestNotify { private static Object object=new Object(); public static void main(String[] args) { // 顾客1线程 new Thread(new R

2021-08-23 18:25:02 282

原创 匿名内部类创建多线程

匿名内部类创建线程方式一方式二方式三方式一基于Thread类 new Thread(){ @Override public void run() { for (int i = 0; i < 10; i++) { System.out.println(i); } } }.start();方式二

2021-08-23 18:14:09 283

原创 线程之间通信(包子铺)

我们对前一个线程通信博客做一个生活版的模拟,包子铺老板和顾客之间模拟线程通信,看一下代码吧package com.thread;/** * @author 邓亚非 * 包子铺老板 */public class Boss {// 创建同步对象 private static Object object=new Object(); public static void main(String[] args) {// 顾客线程 new Threa

2021-08-23 17:54:43 75

原创 无限等待和唤醒状态

无限等待waiting状态:一个正在无线等待的一个线程需要另一个线程执行notify()方法去唤醒我们来用代码模拟一下package com.thread;/** * @author 邓亚非 */public class Wait { public static void main(String[] args) { Object object=new Object();// 线程1 new Thread(new Runnable()

2021-08-23 17:38:31 141

原创 阻塞方法之锁阻塞

锁阻塞通过锁阻塞让线线程进入阻塞状态

2021-08-23 17:20:44 160

原创 通过计时让线程进入等待状态

通过模拟计时器让线程进入等待状态代码如下:package com.thread;/** * @author 邓亚非 */public class TimeWait implements Runnable{ public static void main(String[] args) { TimeWait timeWait=new TimeWait(); Thread thread=new Thread(timeWait); thre

2021-08-23 16:45:43 74

原创 线程安全的解决

线程安全问题当我们使用多个线程访问同一资源的时候,且多个线程中对资源有写的操作,就容易出现线程安全问题.要解决上述多线程并发访问一个资源的安全性问题:也就是解决重复票与不存在票问题比如说卖票,如果三个窗口就是三个线程同时卖100张票,如果同时迈出了一眼的票,就是出现了线程安全的问题我们来模拟一下我们创建一个卖票的线程package com.thread;/** * @author 邓亚非 */public class ThreadSafe implements Runnable{

2021-08-23 16:24:50 102

原创 浅谈高并发

浅谈高并发是指可以让软件系统在一段时间内能够处理大量的请求。比如每秒钟可以完成100万个请求每年的双十一的购物网站和app就会出现高并发的现象,这已经见怪不怪了哈哈哈下面我用代码来带大家体验一下高并发对cpu的消耗方式一:package com.thread;/** * @author 邓亚非 * 模拟高并发 */public class HighConcurrency extends Thread{ public static void main(String[] ar

2021-08-21 22:29:52 129

原创 生产者和消费者之间的线程通信

线程通信:生产者和消费者之间的关系前面几期已经跟大家讲了,不懂生产者和消费者之间的关系可以去看我之前的文章,今天主要讲他们之间的线程通信线程通信就是线程之间可以交流,你告诉我要干什么,我告诉你要干什么,有两个很重要的方法notify()和wait(),顾名思义一个通知,一个等待那么为什么要线程通信呢,既然他们两个是互不影响的,因为可能出现逻辑错误,比如说生产者在生产者的时候,此时消费者应该在等待,不能够去消费,比如说你去买面包,但是此时第一批已经卖完了,此时你是不可以消费的,所以说如果你还在消费

2021-08-21 21:49:49 149

原创 模拟死锁案例

我们来模拟一个死锁的案例现在有张三想要李四的画,李四想要张三的书。张三对李四说了:“你给我画,我就把书给你”。李四也对张三说了:“你给我书,我就把画给你”。此时,张三在等着李四的答复,而李四也在等着张三的答复,那么这样下去的最终结果就是张三得不到李四的画,李四也得不到张三的书。这实际上就是死锁的概念。张三类package com.thread;/** * @author 邓亚非 */public class ZhanSan { /** * 张三问李思要画

2021-08-21 17:09:37 68

原创 死锁和哲学家进餐问题

什么是死锁死锁的定义就是几个线程所需要的资源都在对方的手,而对方都不释放手中的所,就是不释放手里的资源,然后就这么等下去,就产生了一个死循环,就一直在等待(1) 因为系统资源不足。(2) 进程运行推进的顺序不合适。(3) 资源分配不当等。死锁不是程序一旦启动就会发生的,可以说她是一个偶然现象,我们必须得避免这种现象诞生通俗的说就是张三想要李四的画,李四想要张三的书,张三说你我想一想,等几天给你答复,李死说你也再等一下,过几天再给你答复,然后就这样一直等对方的答复,然后双方都得不到对方想要的对

2021-08-21 16:38:57 387

原创 wait和sleep的区别

wait通过wait方法进入阻塞后,要想被唤醒,必须等到和当前进入到等待池中的线程拥有同一把线程安全锁对象的另一个线程调用notify()方法唤醒,然后这次进入到锁池wait()方法必须放在同步方法当中,或者同步块中wait()方法是object类的sleepsleep()方法是指休眠指定时间之后,时间一旦达到,重新回到就绪状态,等到cpu分配资源sleep()方法会释放锁,而wait方法则不会sleep()方法是属于Thread类的...

2021-08-21 15:17:19 61

原创 工厂设计模式

什么是工厂设计模式工厂模式是平时开发过程中最常见的设计模式。工厂模式解决类的实例化问题,它属于创建型模式。试想你去披萨店买一个披萨。你只需要告诉老板要一个xx披萨。过一会就会有一个此类型的披萨被制作出来。而你完全不需要知道这个披萨是怎么被制作出来的。这个例子中你就是客户端代码,披萨店就是工厂,负责生产披萨。披萨是接口,而具体的某一种汉堡,比如说香辣披萨,就是实现了汉堡接口的类。接下来以代码来演示一下吧创建一个Pizza抽象类,因为我们要制作不同的披萨package factory;/**

2021-08-19 23:46:17 57

原创 数据库的三大范式

三大范式第一范式第二范式第三范式第一范式每一个列都不可以再拆分,就是说不能出现同样的字段,不能有同样的列第二范式在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主 键的一部分第三范式在第二范式的基础上,非主键只能依赖于主键,不能依赖于其他的列...

2021-08-17 22:11:22 64

原创 delete和truncate还有drop的区别

delete首先我们要明白delete是DML语句,其他两个都是DDL语句,delete操操作完还可以回滚,其他的两个执行非常快,删了就是删了,delete命令支持WHERE子句,可以使用带有DELETE的where子句来过滤和删除特定记录;而,truncate命令不支持WHERE子句。delete采用行级锁定,truncate采用表级锁定delete支持索引和视图,truncate不支持delete只能一条一条的删,我刚才删了张三,delete不能一次性删完所有的数据,更不要说破坏表结构这种

2021-08-17 22:03:35 481

原创 on和where的区别

on和where都出现在条查询当中,后面的语句都表示用来查询的条件,比如说筛选什么的,连接查询啊等等等onon作为条件查询的时候是是在生成临时表的时候,比如说左连接查询,这个时候不管条件是否正确,都会返回左边对应的数据行 ,第二个sql语句是用left join左连接查的,条件同样为假,但是还是会查询到左边的表的数据wherewhere作为查询条件时,是在临时表生成之后了,这个时候如果后面的查询条件不为真,就会全部过滤掉,但是没有出现报错,我在测试的时候后面的7777是没有的,找不到和77

2021-08-17 21:33:36 422

原创 MySql中的连接查询

内连接inner join 子句连接查询seelct * from student s inner join sc c on s.sno=c.cno;左外连接left join 子句连接查询seelct * from student s left join sc c on s.sno=c.cno;右外连接seelct * from student s right join sc c on s.sno=c.cno;全外连接full outer join 子句select s.

2021-08-17 21:09:19 78

原创 数据库关系描述

一对一对于实体a中的每一个实体,实体b中至多有一个实体和它联系起来,比如说一个班的班主任只能管理一个班,这就是大型的一对一的关系一对多对于实体a中的每一个实体,实体b中有n个和它有关系,这种关系就是一对多的关系,比如说一个班对应多个学生,每个学生只在一个班中,也就是说学生和班级之间就是一个一对多的关系多对多对于实体a中,实体b中有n个实体与之类型,在实体b中也有n个和实体a中的每一个实体有关系,那么就是多对多的关系,比如说:一个学生可以选多门课,一门课可以被多个学生选...

2021-08-17 20:43:34 494

原创 生产者和消费者

一,生产者生产一样东西的人就是消费者,java里面生产数据的线程就是生产者线程package jucdemo;import java.util.Random;/** * @author 邓亚非 * 生产者线程 */public class Producer extends Thread { private SuperMarket superMarket; private String name; public Producer(SuperMarket super

2021-08-15 17:42:57 74

原创 string,stringbuilder,stringbuffer三者的区别

stringstring 被final修饰,它是不可变的,是一个最终类,导致每次对string进行字符串的操作时都会新建一个对象,会造成大量的资源空间浪费,而且效率非常低下,package jucdemo;/** * @author 邓亚非 */public class TestString { public static void main(String[] args) { String string="哈哈哈"; string=string+"你

2021-08-15 16:30:54 70

原创 线程生命周期的状态

新生用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于新生状态。处于新生状态的线程有自己的内存空间,通过调用start方法进入就绪状态。 注意:不能对已经启动的线程再次调用start()方法,否则会出现java.lang.IllegalThreadStateException异常。就绪就绪状态的线程具备了运行的条件,但是还没有分配到cpu,在就绪队列当中等待状态也不是运行状态,只有当系统选中一个的等待执行的thread对象后,就会进入到执行状态,这个过程就是cpu调度,

2021-08-15 14:44:20 120

原创 浅谈线程安全和线程不安全

关于线程安全和线程不安全我打算以举例子的方式去说,这样说的比较容易理解问题:比如说全班去买票,那么整个班上的人不可以同时买到同一张票吧,应该是一个人对应一张票,即时你们是同一个地方的人,也不能买到一张票,所以在买票的高峰期就更不能出现这种情况了,线程安全:这里是引用...

2021-08-15 13:38:36 193

原创 主线程和子线程

主线程main方法本身就是一个主线程System.out.println(“开始下载”);System.out.println(“下载结束”);子线程继承Thread类的线程是子线程

2021-08-13 22:16:12 67

原创 多线程模拟电影下载

多线程模拟五部电影的下载package jucdemo;import javax.swing.*;import java.util.Random;/** * @author 邓亚非 */public class DownLoadMovie extends Thread{ private String mname; public DownLoadMovie(String mname){ this.mname=mname; } publi.

2021-08-13 22:04:21 134

原创 线程名字的设置和获取

获取:线程对象.getName()设置:线程对象.setName()常用方法run();//线程体,线程启动后,供CPU调度执行start();//线程启动方法sleep();//线程睡眠方法 根据我们指定的时间进行休眠 进入到阻塞状态getName();//获得线程名字的方法setName();//设置线程名字的方法...

2021-08-13 21:48:47 66

原创 线程的生命周期

生命周期新生就绪运行阻塞死亡新生使用new关键字创建一个线程类的时候,就处于新生状态就绪线程对象调用start()方法时,该线程就处于就绪状态,线程获得cpu执行权,获取处理器资源,等待执行运行线程的启动是调用start()方法而不是run()方法,记住永远不要调用run()方法,因为系统会把线程对象当成普通对象,run()方法也将变成一个普通方法去执行假如你直接调用了run()方法,不能直接通过this.getname()方法获得线程名,此时获取的是对象名,因为此时已经没有了线程体

2021-08-13 21:31:15 54

原创 线程和进程

什么是线程和进程线程进程线程线程是进程的最小组成单位,每个线程干自己的事单线程一个程序当中只产生了一个任务,也就是一格单独的线程,比如说我就看视频多线程多线程是指一个程序中产生了多个任务并且同时进行,比如说我一边和女朋友打电话一边打游戏,日常生活当中都是可以同时进行多线程侧重的是程序并行执行这样能够提高程序的执行效率,不想单线程逐次执行。线程创建线程的创建主要分为一下三种通过继承Thread类 run()无返回值通过继承Runable接口通过使用Execut

2021-08-13 20:55:58 62

原创 This application has no explicit mapping for /error, so you are seeing this as a fallback.

This application has no explicit mapping for /error, so you are seeing this as a fallback.这是我又出现的一个问题,其实这是我测试代码的时候报的错,所以我并不着急,其实就是访问的时候没有带参数哈哈哈,后来带上了参数,可以访问了,看到了后台有数据输出,所以写代码一定要细心啊哈哈哈...

2021-08-13 20:30:21 103

原创 Error starting ApplicationContext. To display the conditions report re-run y

Error starting ApplicationContext. To display the conditions report re-run y今天在启动springboot项目的时候出现了这个问题,那么该怎么解决呢,因为我在controller层下的这个类用的是rescontroller注解,然后没有加conponent注解,然后我就加上去试了一下,发现完美解决,程序正常启动希望对你们有所帮助,不要范这种低级错误...

2021-08-13 20:08:50 14399 4

空空如也

mybatis foreach查询

2022-02-17

vue 子理由下的组件可以当做子组件吗:可以通过父子组件传值吗

2022-02-12

新建的Springboot项目为什么访问localhost8080失败?

2021-09-04

就是在制作简历的时候app保存了我的简历,然后帮我投了,但是我还没有做完,甚至连头像还没有放上去,但是过段时间字节跳动打电话来了?我就感到很疑惑?

2021-08-22

img标签里面的src里面怎么填写本地c盘的文件路径啊

2021-08-22

电脑如果只有一个盘安装不了vue脚手架吗

2021-08-03

hashmap在计算hsah值的时候为什么要取余?什么时候要扩容

2021-07-28

mysql删除主键失败是什么原因?

2021-07-18

layui数据表格异步重载参数怎么写?

2021-07-15

localstroage怎么保存taken,希望能有代码展示?

2021-07-13

有些时候遇到一个问题非常复杂怎么都理解不了这个时候怎么调整

2021-07-09

web项目后台管理系统中有多少种实现权限管理的方法,如何实现动态加载菜单

2021-07-09

mybatis没有网络的情况下可以自动生成嘛

2021-07-08

layui数据表格修改一条数据之后然后怎么刷新这一条?

2021-07-06

使用idea做mybatis项目时报数据库连接失败?

2021-07-06

问一下哈希表是不是符号表啊,如果不是有什么区别?

2021-07-05

反转链表的核心思路是什么?

2021-07-05

平衡二叉树插入和删除之后判断是否平衡的问题

2021-07-03

layui的layer模块弹出一个表单

2021-07-01

什么是耦合度啊?为什么要解耦?怎么去解耦?

2021-06-22

在校大学生要进大厂必须掌握dubbo吗

2021-06-20

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

TA关注的人

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