自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 网络原理(下)

上一章我们介绍了网络层和数据链路层相关协议以及解释了DNS,今天来讲解HTTP协议以及HTTPS协议如果各位对文章的内容感兴趣的话,请点点小赞,关注一手不迷路,讲解的内容我会搭配我的理解用我自己的话去解释如果有什么问题的话,欢迎各位评论纠正 🤞🤞🤞N_0050-CSDN博客java SE_N_0050的博客-CSDN博客java数据结构_N_0050的博客-CSDN博客java EE_N_0050的博客-CSDN博客。

2024-07-20 01:00:22 710 15

原创 网络原理(中)

上一章我们介绍了传输层协议的报文格式以及协议机制,今天接着介绍网络层协议网络层要做的事情,主要是两个,也可以说是核心功能1.地址管理:制定一系列的规则,通过地址来描述一个设备在网络上所处的位置。类似我们收件的地址2.路由选择:因为网络环境比较复杂,一个节点到另外一个节点之间有不同的路径可以走,通过这种方式可以规划出合适的路径进行数据传输。前面初始网络提到过这点,类似快递要经过的路线有很多选择一条合适的去进行运送报头中的字段:1.32位源IP地址和32位目的IP地址:IP协议中最关键的内容,采用点分十进制表示

2024-07-18 11:20:11 753 10

原创 网络原理(上)

上一章我们介绍了网络的一些基础知识,今天来讲解一下网络原理相关的知识点,分三篇进行阐述内容有点多例子:打开外卖软件,相当于发起一个请求带有用户信息和位置信息,然后看到商家列表,这里就涉及程序和服务器之间的网络通信交互。这样服务器就根据请求中带有的信息进行处理然后返回响应(商家列表,每个商家包含头像、名称、地址等)开发中常见的格式:1.xmlHTML是xml的变种,xml是通用的数据格式,我们可以自定义。HTML是专属的数据格式,标签都定义好了的xml的特点:数据的可读性更好,但是标签写起来繁琐,传输的时候会

2024-07-17 01:06:30 936 29

原创 初始网络知识

上一章我们介绍了使用java代码操作文件,今天我们来聊聊网络的一些基础知识点,以便后续更深入的了解网络如果属于全球化的公共型广域网,则称为互联网(又称公网,外网),属于广域网的一个子集。有时在不严格的环境下说的广域网,其实是指互联网局域网和广域网的关系和区别:就比如一家公司,有很多分公司在不同的地区,每家分公司可以看作是一个局域网。我们可以通过网络连接将所有的分公司进行连接,这样就能实现跨地通信,这种就叫广域网可以想象平常我们的机房电脑就连接一个路由器那只能这几台电脑进行通信,但是如果路由路由之间再进行连接

2024-07-11 20:53:49 1494 35

原创 文件操作和IO流

上一章我们介绍了多线程进阶的相关内容,今天来介绍使用java代码对文件的一些操作1.绝对路径:就是上面这个以你的盘开头的C:\Windows\System322.相对路径:前提是指定了一个目录,作为基准目录,从基准目录出发沿着路线找你指定的文件,以 .(当前目录)或者 ..(当前目录的上一级目录)开头,结合上面的对比就看出来了1.文本类型:文件中保存的数据,都是字符串,保存的内容都属于合法的字符2.二进制类型:文件中保存的数据,都是二进制,保存的内容不一定是合法的字符首先说什么是字符,字符就是字母、数字、符

2024-07-09 23:43:15 943 28

原创 多线程(进阶)

上一章我们介绍了线程池的一些基本概念,今天接着分享多线程的相关知识,这些属于是面试比较常见的,大部分都是文本内容乐观锁:预测接下来锁冲突的概率小,就少做些工作称为"乐观锁",乐观锁认为多个线程访问同一个共享变量冲突的概率不大,线程可以不停地访问数据无需加锁也无需等待, 在访问的同时识别当前的数据是否出现访问冲突乐观锁的实现:可以引入一个版本号,借助版本号识别出当前的数据访问是否冲突也可以使用CAS 例子:就像你有问题问老师,乐观的人认为老师不忙肯定有时间,然后直接去找老师,老师如果确实没空就回去

2024-07-07 18:54:15 1095 21

原创 线程池概念的详解

上一章我们介绍了什么是定时器以及如何去实现一个定时器,今天我们来讲解在多线程中同样很重要的一个内容线程池我们知道线程诞生的意义,是因为进程的创建和销毁的操作开销太大并且效率不高,但是呢如果频繁的创建和销毁线程,开销也不小下面使用两种办法,进一步提高线程效率简易解释:在应用程序启动时创建一定数量的线程,并将它们保存在线程池中。当需要执行任务时,从线程池中获取一个空闲的线程,将任务分配给该线程执行。当任务执行完毕后,线程将返回到线程池,可以被其他任务复用线程池可以看作是海王的鱼塘

2024-07-04 00:25:17 1078 30

原创 什么是定时器?

上一章我们介绍了阻塞队列以及生产者消息模式,今天我们来讲讲定时器举个例子,当客户端给服务器发送请求后,服务器半天没有响应,就像你发邮件一样,发的时候会转圈圈,成功了就会显示发送成功或者什么提示信息,如果服务器没有响应,你这边可能就一直在那转圈圈。我们也不知道是什么原因造成的,可能是请求没发过去,可能是响应丢了,也可能是服务器出现了问题。所以对于客户端来说,也可以说对用户来说,肯定不能一直等啊那体验多不好啊,所以设置一个等待时间(最大的期限),过了这个等待时间把电脑砸了,开个玩笑,过了这个最大期限

2024-07-03 00:40:33 784 16

原创 生产者消费模式

上一章我们介绍设计模式中的单例模式,今天我们来讲讲生产者消费模式多线程代码中比较常用的一种数据结构阻塞队列是一种特殊的队列,也遵守 "先进先出" 的原则,阻塞队列是一种线程安全的数据结构, 并且具有以下特性:1.线程安全2.带有阻塞特性 1.如果队列为空,出队列就会发生阻塞,阻塞到其他队列往队列里添加元素为止 2.如果队列为满,入队列就会发生堵塞,阻塞到其他队列从队列里取出元素为止阻塞队列的最大作用,就是可以用来实现"生产者消费模型"(一种常见的多线程代码编写方式)生产者消费模型例子:华莱士或者肯德基生产者

2024-07-02 12:10:51 965 4

原创 什么是单例模式?

上一章我们介绍了多线程下引发的安全问题,今天接着讲解多线程的内容,同样很重要,请细品开发过程中,会遇到很多经典场景,就是经常出现这种场景,针对这些频繁出现的场景,提出了这种设计模式,遇到什么场景我们就用什么设计模式像单例模式这样的思想,在很多地方有体现,例如final修饰的常量修改了会报错,以及接口实现了接口就必须重写里面的所有方法不然会报错等。但是呢,在语法上,没有对单例做出支持,只能通过编程技巧来达成类似的效果,此时我们需要编译器帮我们做出监督,如果创建出多个对象,编译器直接报错下面我们设计一个单例模式

2024-07-01 20:18:00 1017 18

原创 多线程引发的安全问题

上一章我们介绍了线程的一些基础知识点,例如创建线程、查看线程、中断线程、等待线程等知识点,今天我们讲解多线程下引发的安全问题线程安全(最复杂也最重要)产生线程安全问题的原因锁synchronized 的特性互斥性刷新内存可重入死锁(重要)如果各位对文章的内容感兴趣的话,请点点小赞,关注一手不迷路,讲解的内容我会搭配我的理解用我自己的话去解释如果有什么问题的话,欢迎各位评论纠正

2024-06-29 14:34:31 908 37

原创 多线程(基础)

上一章我们介绍了什么是进程,对于进程就了解那么多即可,我们作为java程序员更关注线程,线程内容比较多,所以我们要分好几部分才能讲完多进程编程的缺点:进程太重量效率不高,创建进程和销毁进程和调度进程消耗的时间都是比较多的(消耗在申请资源上),因为我们知道进程是系统资源分配的基本单元,所以在给进程分配资源的时候是一个大活。拿分配内存说,操作系统内部也有一定的数据结构,用来管理空闲的内存,当进程申请内存空间的时候,操作系统就会从这个数据结构中找到大小合适空闲的内存返回给进程。这里的数据结构可以提高一定的效率

2024-06-27 21:13:43 1078 16

原创 什么是进程?

上一章我们介绍了计算机组成的入门知识,了解这些之后,今天来聊聊进程正在运行的程序,已经跑起来的程序。有些进程是自动创建的,有些进程是我们自己手动创建的。自动创建的就是你一开机操作系统中有些程序就跟着一起运行,下面这张图里的就是一个个正在运行的程序也就是我们的进程每个进程要想执行,会消耗一定的系统资源(硬件资源),可以这样理解就比如你要办一个生日那肯定需要钱才能办,所以进程执行也是一个道理,但是不同进程执行消耗的资源不一样,例如你现在要建一栋楼,那需要人力、财力等等的资源才行每个进程,都是操作系统资源分配

2024-06-25 21:49:40 1006 16

原创 计算机组成入门知识

操作系统"内核" 操作系统里面最核心的功能模块,内核本质上是一种特殊的软件(简单点说内核就是为操作系系统提供驱动、内存管理、网络、IO等功能的软件代码)。它是操作系统中最核心的部分,负责管理系统资源和提供基础服务(系统调用接口、设备驱动、进程管理、资源管理、内存管理一些底层资源的管理)

2024-06-23 21:46:38 929 24

原创 MySQL JDBC编程

通过 java代码 操作 mysql数据库 统一所有操作数据库的接口 可以理解为这是java连接数据库的规范。数据库编程,是需要数据库服务器提供一些API(Application Programming Interface)应用程序编程接口供程序员去使用的,然后就能数据库进行交互,可以理解为一组已经实现的类和一组(函数或方法)或库

2024-06-08 19:06:47 1080 27

原创 MySQL索引与事务

索引 属于是针对 查询操作 引入的 优化手段 可以通过索引来加快查询的速度,避免针对表进行遍历,索引通过使用特殊的数据结构,可以快速查找和访问数据库表中的记录,从而避免全表扫描,提高查询效率,可以把索引所起的作用想象成书籍目录,可用于快速定位、检索数据

2024-06-04 15:21:51 917 19

原创 java17 新特性(实用)

顾名思义就是密封跟final的作用类似,但是呢又不完全类似,因为final修饰的类不能被继承,此时提高了一个新的关键字Sealed用来修饰密封类,废话不多说,直接上代码。java17对instance of进行了优化,在判断类型的时候,如果符合我们的条件直接创建一个符合类型的临时变量,老规矩看代码。这样大家应该能看的懂吧,这里再补充一下为什么最后一个map打印的是{1=17}首先java17引入了一个新的关键字var,它可以代替很多类型名,java17引入了一个新的类,java17引入了一个新的。

2024-06-03 21:25:49 832 5

原创 电商商城管理系统

电商商城管理系统,前端采用vue、后端采用java

2024-06-01 16:58:35 512 9

原创 MySQL CRUD进阶

上一章我们介绍了CRUD的一些基础操作,关于如何在表里进行增加记录、查询记录、修改记录以及删除记录的一些基础操作,今天我们学习CRUD(增删改查)进阶操作这一列不能填null值(相当于必填项),并且插入和修改都会被限制创建插入修改相当于填写的值不能重复,并且插入和修改都会被限制,且会让后续的 插入和修改数据 的时候,都会先触发一次 查询 的操作(通过这个查询,来确定当前这个记录是否已经存在)创建插入我们先插入一条数据,然后再插入一条数据但是id跟上一次插入的id一样,发现报错了,结合上面说的后续的插入和修改

2024-05-04 20:57:26 1022 24

原创 MySQL CRUD操作

上一章我们介绍了数据库的一些基础操作,关于如何去创建一个数据库啊,还有使用数据库啊,删除数据库以及对表进行的一些基础操作,今天我们学习CRUD操作俗称(增删改查)还是那句话要对数据库进行操作的时候,要先选中你要进行操作的数据库使用 单引号 或者 双引号 表示 字符串,SQL没有 字符 这个类型表记录展示这里的null是 成功插入这条语句的id 为null 表记录展示插入datatime类型获取当前时刻的时间 now()方法 表记录展示把表中的的 所有行 和 所有列 都查询出来 select * 操作,算

2024-04-29 13:40:00 1332 10

原创 MySQL基础操作

MySQL的本体是 服务器 在服务器这边来负责存储和管理数据 把数据存储在硬盘上的,数据库通过硬盘去存储数据 希望存储的数据量大 持久化存储,少数数据库用内存去存储数据,追求速度最大化 例如redis

2024-04-26 20:56:32 1056 7

原创 反射、枚举、lambda表达式的使用

Java的反射(reflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,既然能拿到那么,我们就可以修改部分类型信息;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射(reflection)机制

2024-04-13 19:49:28 769 8

原创 java 数据结构 Map和Set

Map和set是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关

2024-04-04 14:57:39 988 8

原创 java 数据结构 排序算法

排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作,所有的排序默认都是从小到大排序稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。

2024-03-20 21:01:52 1103 1

原创 java 数据结构 优先级队列(PriorityQueue)

1. 优先级队列的构造// 创建一个空的优先级队列,底层默认容量是11// 创建一个空的优先级队列,底层的容量为initialCapacity// 用ArrayList对象来构造一个优先级队列的对象// q3中已经包含了三个元素注意:默认情况下,队列是小堆,如果需要大堆需要用户提供比较器// 用户自己定义的比较器:直接实现Comparator接口,然后重写该接口中的compare方法即可@Overridep.offer(4);p.offer(3);

2024-03-14 20:56:16 1029 2

原创 java 数据结构 二叉树

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看 起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:有一个特殊的结点,称为根结点,根结点没有前驱结点

2024-03-08 20:29:39 882 4

原创 java 数据结构栈和队列

栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈 顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。

2024-02-22 19:55:50 1415 2

原创 java 数据结构LinkedList类

在集合框架中,LinkedList也实现了List接口,具体如下:说明实现了List接口的底层使用了双向链表没有实现接口,因此LinkedList不支持随机访问的任意位置插入和删除元素时效率比较高,时间复杂度为O(1)比较适合任意位置插入的场景。

2024-02-19 22:13:59 1233 2

原创 java 数据结构ArrayList类

在集合框架中,List是一个接口,继承自Collection。List是个接口,并不能直接用来实例化Collection也是一个接口List。

2024-02-14 17:52:43 1464 1

原创 java数据结构前置知识以及认识泛型

Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces和其实现类 classes。如何理解这张图?

2024-02-13 18:55:09 1131 1

原创 java异常类

1.程序先执行 try 中的代码2.如果 try 中的代码出现异常, 就会结束 try 中的代码, 看和 catch 中的异常类型是否匹配.3.如果找到匹配的异常类型, 就会执行 catch 中的代码4.如果没有找到匹配的异常类型, 就会将异常向上传递到上层调用者.5.无论是否找到匹配的异常类型, finally 中的代码都会被执行到(在该方法结束之前执行).6.如果上层调用者也没有处理的了异常, 就继续向上传递.

2024-02-08 17:32:08 934 1

原创 轻松认识java中的String类

因为println()会调用String.valueOf()方法而String.valueOf()会调用toString()方法。final修饰类表明该类不想被继承,final修饰引用类型表明该引用变量不能引用其他对象,但是其引用对象中的内容是可以修改的。都是产生了新的对象,而不是对原来的对象进行修改,不是因为final,是因为私有的。1. 字符"|","*","+"都得加上转义字符,前面加上 "\\" .2. 而如果是 "\\" ,那么就得写成 "\\\\" .然后是String类的一些方法。

2024-02-06 20:29:27 823 2

原创 利用java实现简易版图书管理系统

明我们的书架已经满了,如果没有,就通过我们的bookList这个书架类的引用指向set方法根据你投。到书的位置然后赋给book这个引用,接着再把j+1的下标对应的内容,给到book这个引用,然后再。接着for循环遍历数组,也是一样,通过传入i然后遍历数组,如果名字一样说明找到了,直接结束这个循环,然后来到下面这个if循环,如果i跟总数量相同,我们就输出没有这本书,然后。我的注释也写的很清楚,为了不然数组越界,因为要用到覆盖的方法,然后通过书架get的方法得。地方,也是先进行分析,然后分配任务,开始干活。

2024-02-05 21:40:51 611 1

原创 java内部类的详细讲解以及接口的补充

因此,原对象和深拷贝的对象拥有独立的内部对象实例,对一个对象的修改不会影响到另一个对象。因此,原对象和浅拷贝的对象共享相同的内部对象实例。1. 成员内部类(普通内部类:未被static修饰的成员内部类 和 静态内部类:被static修饰的成员内部类)3. 在实例内部类方法中访问同名的成员时,优先访问自己的,如果要访问外部类同名的成员,必须:外部类名。6. 外部类中,不能直接访问实例内部类中的成员,如果要访问必须先要创建内部类的对象。内部类的分类:实例内部类、静态内部类、匿名内部类、局部内部类(不怎么用)

2024-02-04 16:45:14 781 1

原创 轻松理解java中的抽象类与接口

注意事项: 对于 sort 方法来说, 需要传入的数组的每个对象都是 "可比较" 的, 需要具备 compareTo 这样的能力,通过重写 compareTo 方法的方式, 就可以定义比较规则。抽象类必须被继承,并且继承后子类要重写父类中的抽象方法,否则子类也是抽象类,必须要使用。如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。接口中的方法是不能在接口中实现的,只能由实现接口的类来实现。如果类没有实现接口中的所有的抽象方法,则类必须设置为抽象类。

2024-02-03 18:02:59 1170 1

原创 详细解释java中的多态

1.必须在继承体系下,也就是向上转型2.子类必须要对父类中方法进行重写/覆盖3.通过父类的引用调用重写的方法完成以上,就会发生动态绑定,而动态绑定是多态的基础

2024-02-02 16:45:06 909 1

原创 Java中继承与组合的知识点

什么是继承?什么是组合?

2024-02-01 17:23:06 999 1

原创 Java中类和对象的知识点

什么是类?什么是对象?

2024-01-31 17:52:33 1236 1

原创 java基础知识点!!!

整型:字节类型byte(-128--127)、short(包装类型:short)、int(包装类型:Integer)、long(包装类型:long) 对应1、2 、4、 8 个字节 1字节等于8bit位。整个数组被视为一个对象。堆:用 new 创建的对象都是在堆上保存,堆是随着程序开始运行时而创建,随着程序的退出而销毁,堆中的数据只要还有在使用,就不会被销。数组的拷贝:创建一个指定长度的新数组,并将原始数组的元素复制到新数组中,这里表示拷贝的是array 一样的长度。通过该地址,引用变量便可以去操作对象。

2024-01-30 22:16:48 702 1

原创 VS实⽤调试技巧

F9:用来创建断点和取消断点的。F5:是配合F9一起使用的,启动调试,经常⽤来直接跳到下⼀个断点处。F10:启动调试,通常用来处理一个过程,例如一个函数。F11:通常用来处理一条语句,就是如果要想进入函数了解其中的细节的时候用,所以他配合F10一起使用。Ctrl + F5:开始执⾏不调试,如果你想让程序直接运⾏起来⽽不调试就可以直接使⽤。

2024-01-21 17:26:51 566 1

空空如也

空空如也

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

TA关注的人

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