- 博客(27)
- 收藏
- 关注
原创 javaee-网络原理4
路由选择 = 路由器根据目标 IP 的网络号,决定数据包下一步发给谁,让它一步步从你这里走到目标设备。你可以把路由器当成快递中转站,路由表就是中转指南,路由选择就是按指南分拣包裹。数据链路层(了解):①①以太网以太网 = 现在最普遍的局域网技术标准说白了就是:网线 + 网卡 + 交换机 这套东西的统称。以太⽹帧格式:这里的地址是mac地址(不是ip地址)MAC 地址 = 设备出厂自带的 “物理身份证”,全世界唯一,烧在网卡里,改不了。(可以作为一个电脑的身份标识)
2026-04-14 19:15:51
381
原创 javaee-网络原理3
console.log("浏览器立即往下执行后续代码");AJAX 请求发出去之后,浏览器不会等服务器响应,直接立刻执行这一行。浏览器立即往下执行后续代码console.log("浏览器立即往下执行后续代码");AJAX 请求发出去之后,浏览器不会等服务器响应,直接立刻执行这一行。浏览器立即往下执行后续代码主要用途:登录/上传各种文件⑨即用 Java 语言里的 Socket 技术,手动拼接、发送一个 HTTP 请求数据包。
2026-04-07 22:25:14
480
原创 javaee-网络原理(理论)
①ip地址:标记一台网络设备所在位置端口号:一台主机上有多个程序同时用网,端口就是区分不同程序的网络协议:通信双方用于规定接收/发送 的数据格式的约定多个设备遵守同一协议才能通信②网络通信五元组:源ip源端口目的ip目的端口协议类型③协议分层:把网络通信的大任务,拆成好几层小任务,每层只干自己的事,互不干扰。如果我们设计一个协议,要完成网络通信中各种问题,那肯定会很复杂,很多。为了方便一点,就把整一大个协议分成多个小协议每层只做一层的事,,这就是。
2026-03-26 23:19:56
377
1
原创 javaee-文件操作/io
①文件(1)文件:一串长期保存在磁盘上的字节序列(2)树型结构组织和⽬录:目录(文件夹)是操作系统用「树形结构」组织文件的核心载体(3)⽂件路径:操作系统定位文件 / 文件夹的 “地址”(4)其他:即使是普通⽂件,根据其保存数据的不同,也经常被分为不同的类型,我们⼀般简单的划分为⽂本⽂件和⼆进制⽂件,分别指代保存被字符集编码的⽂本和按照标准格式保存的⾮被字符集编码过的⽂件②java中操作文件主要使用 java.io.File 这个类对文件进行操作(1)构造方法:注意要么用/要么用\\
2026-03-25 19:09:49
398
原创 javaee-多线程进阶
①常⻅的锁策略(1)乐观锁&悲观锁顾名思义乐观锁:加锁的时候,认为锁竞争不会很激烈,不需要做额外工作悲观锁:加锁的时候,认为锁竞争会很激烈,额外做一些工作(比如:加锁失败就等待 / 阻塞,直到拿到锁)(2)重量级锁&轻量级锁重量级锁:实现成本 / 开销维度大的锁,即运行更低效轻量级锁:实现成本 / 开销难度小的锁,运行更高效(3)挂起等待锁&自旋锁挂起等待锁:获取锁失败 → 线程被挂起(进入阻塞队列)→ 锁释放后被唤醒。
2026-03-23 23:20:33
404
1
原创 java数据结构-排序(自用记忆)
然后先把下标为i的存在临时变量temp中,然后定义一个for循环中的变量j(因为后面要用,所以在外面2定义j),然后启动j的循环,从j=i-1开始不断--,每一次--,如果j的数值>t,那就让下标j+1处的值为下标j处的值(这个部分就是把比下标i处的值小的值往前排,留出位置给临时变量temp)⑤交换排序:基本思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。它是通过堆来进行选择数据。
2026-02-03 16:14:41
642
原创 java数据结构-堆
维度向上调整(siftUp)向下调整(siftDown)触发场景插入新元素构建堆、取出堆顶、堆排序调整方向从下往上(子节点 → 父节点)从上往下(父节点 → 子节点)比较对象仅与父节点比较与左右子节点比较,先选出最优子节点解决问题子节点 “过大 / 过小” 破坏堆性质父节点 “过小 / 过大” 破坏堆性质④堆的创建:首先明确一个规律:两个向上调整和向下调整的代码在大根堆和小跟堆只有比较符号的区别所以下面都以大根堆为例堆类:成员变量有用来储存的数组和已使用容量(不是数组最大容量)
2026-02-01 17:08:10
565
原创 java数据结构-树
因为每次调用都要用到一次新的preIndex索引,索引是用来提取字符串每个位置上的字符的,那么干脆把它当场全局变量用,第一个方法初始化/更新preIndex的值,然后返回第二个方法(返回值都是TreeNode)第四种情况:a,b都不是空,而且a的val=b的val,那就返回a左子树和b左子树,a右子树和b右子树的&&,只有两边均为true整体才能返回true。第四种情况,就是a,b节点进入方法后发现二者并不相同,那就分别把a的左子树和b去比,a的右子树和b去比,如果有一个那就是true 所以用||
2026-01-31 16:22:45
562
原创 java数据结构-栈和队列
首先我们思考栈的原理,是先进后出,跟队列是相反的,那一个队列100%操作不了,所以可能要两个队列,怎么实现?我们先入完队列1的元素,队列2为空,然后队列1的size()-1个元素出列移到队列2,最后把队列1剩下的也就是最后入队的元素输出,那就刚刚好符合后进先出,这就是出栈。①概念:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出入队列:进行插入操作的一端称为队尾出队列:进行删除操作的一端称为队头。②队列使用:在Java中,Queue是个接口,底层是通过链表实现的。
2026-01-30 13:27:53
441
原创 java数据结构基础-链表
null,cur最后会停在一个null节点上,只有cur.next!如果是前后都有节点的情况插入:先让cur=head向前走index-1次,放在要插入的位置前一个,然后让newnode的next是cur.next,然后再让newnode的prev是cur,然后再让cur的下一个的上一个是newnode,然后cur的下一个是newnode。总结:先把newnode的前后接上,在改变cur的下一个的上一个(此时cur.next还是原来的,所以cur.next不是newnode),在改变cur的下一个。
2026-01-29 12:06:25
506
原创 java数据结构基础-顺序表
一.顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。二.ArrayList简介【说明】1. ArrayList是以泛型方式实现的,使用时必须要先实例化2. ArrayList实现了RandomAccess接口,表明ArrayList支持随机访问3. ArrayList实现了Cloneable接口,表明ArrayList是可以clone的。
2026-01-26 12:08:58
485
原创 java数据结构基础:时间和空间复杂度
n = 数组长度(输入规模);k = 循环执行次数(我们需要求 k 和 n 的关系)。核心结论:这段冒泡排序的空间复杂度是O(1);// 计算阶乘递归Factorial的空间复杂度?
2026-01-25 14:34:46
627
原创 java基础-图书管理系统项目(自用复盘)
Book:①书类,因为每一本书都有名字,作者,价格,小说类型,是否借出(默认false)等等属性所以单读建立一个类,全部用private修饰,那就建立一个类②构造方法就写一个有参构造,因为新添加的书肯定是未借出,跟boolean成员默认false一样,所以不用再构造方法里写③因为都是private修饰了,所以每个成员变量都要有set和get方法④重写toString:如果直接输出实例化的book会输出地址,但是如果重写toString,那就可以按你想要的格式输出,输出直接输出实例化的名字即可。
2026-01-24 15:19:17
662
原创 java基础-异常
在写程序时,有些特定的代码,不论程序是否发生异常,都需要执行,比如程序中打开的资源:网络连接、数据库连接、IO流等,在程序正常或者异常退出时,必须要对资源进进行回收。处在方法声明时参数列表之后,当方法中抛出编译时异常,用户不想处理该异常,此时就可以借助throws将异常抛给方法的调用者来处理。即当前方法不处理异常,提醒方法的调用者处理异常。2. 如果抛出异常类型与catch时异常类型不匹配,即异常不会被成功捕获,也就不会被处理,继续往外抛,直到JVM收到后中断程序----异常是按照类型来捕获的。
2026-01-22 17:48:47
537
原创 java基础-String类
①由于String的不可更改特性,为了方便字符串的修改,Java中又提供StringBuilder和StringBuffer类。String的内容不可修改,StringBuffer与StringBuilder的内容可以修改.也就是说String本身是一串地址,所以比较是否相同要用其自带的equal方法,不能直接用==String是一种不可变对象. 字符串中的内容是不可改变。所以所有涉及到可能修改字符串内容的操作都是创建一个新对象,改变的是新对象。常用方法(都是 实例化名字.方法名() 的格式!
2026-01-21 14:18:59
56
原创 java基础-抽象类+接口
一.抽象类①抽象类的概念:如果=一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象。直接理解为抽象类里的抽象方法(可以同时有抽象方法和普通方法!)不用写内容,写外壳就行,抽象类不能实例化,只能有人继承它,而且继承后必须重写里面的所有方法(@Override),不然会报错。可以有成员变量,跟普通类一样。②抽象类语法://抽象方法绝对不能写{}!!// 抽象类也是类,也可以增加普通方法和属性③抽象类特性:1.不能实例化抽象类的对象2.抽象方法不能是 private 的。
2026-01-21 12:54:51
559
原创 java基础-继承和多态
但是到了子类,想调用父类的无参构造就需要写super() (不写无参构造编译器也会自动生成无参构造),想调用有参构造,那就要输入数值,所以在有参构造方法里按照父类的有参构造写类型,然后super(对应父类有参构造的类型1,类型2) ,相当于传入。②向下转型:将一个子类对象经过向上转型之后当成父类方法使用,再无法调用子类的方法,但有时候可能需要调用子类特有的方法,此时:将父类引用再还原为子类对象即可,即向下转换。如果访问的成员变量子类中无,则访问父类继承下来的,如果父类也没有定义,则编译报错。
2026-01-20 20:38:32
581
原创 java基础-类和对象1
类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,只设计出需要什么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象才能实际存储数据,占用物理空间。java里一个包可以建立多个类,每个类之间可以进行连接和相互访问,有psvm的类一般就是运行代码的主类,其他新建的类,可以区分不同的对象,封装对应的操作代码。自定义类中:方法前面都用public,然后直接连着返回类型+名字(),输入用void类型(一般只要修改的方法都是void),输出获取就用相应的成员类型。
2025-12-09 20:00:32
587
原创 java基础-数组
数组在内存中是一段连续的空间,空间的编号都是从0开始的,依次递增,该编号称为数组的下标,数组可以通过下标访问其任意位置的元素。数据类型[][] 数组名称 = new 数据类型 [行数][列数] { 初始化数据 };静态初始化虽然没有指定数组的长度,编译器在编译时会根据{}中元素个数来确定数组的长度。引用变量并不直接存储对象本身,可以简单理解成存储的是对象在堆中空间的起始地址。③作为方法的返回值:如果返回值有多个,那么就可以返回数组,用数组接受方法的返回值。②类型[] 名字 = new 类型[大小]
2025-12-06 18:56:50
335
原创 java基础-方法的使用
重载的核心是「方法名相同,参数列表不同」,与返回值、修饰符无关;参数列表不同的判定维度:个数、类型、(类型不同时的)顺序;重载的目的是「让同一语义的方法适配不同入参」,提升代码可读性和复用性;编译器会根据「实参的个数、类型、顺序」自动匹配最匹配的重载方法。四.递归(简单介绍)一个方法在执行过程中调用自身, 就称为 "递归"递归的必要条件:1. 将原问题划分成其子问题,注意:子问题必须要与原问题的解法相同2. 递归出口所以一般递归的思路就是:①想好有哪些情况然后分开。
2025-12-05 20:05:38
625
原创 java基础-逻辑控制
/输入String类型(到空格不会停止,输入整行)System.out.printf(".nf",a) double类型也写f,n是保留n位小数输出。//输入String类型(到空格就停止)表达式1: 用于初始化循环变量初始值设置,在循环最开始时执行,且只执行一次。表达式2: 循环条件,满则循环继续,否则循环结束。
2025-12-04 19:21:50
274
原创 java基础-运算符
System.out.println(a) //到下面执行完后置++后a=2, 输出2。||只需要有1个及以上是true就能返回true ,两个都false才返回false。当 表达式1 的值为 false 时, 整个表达式的值为 表达式3 的值.注意第一个表达式得是返回boolean类型的,第二第三个是返回你想要的类型。当 表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值;System.out.println(a) //依旧输出2。②增量运算符 += -= *= %=
2025-12-02 12:55:51
193
原创 javase-数据类型与变量
整型:byte(8位),short(16位),int(32位),long(64位)long/float在赋值的时候后面要加大写L,eg:float a=10F。JRE=java Runtim Environment = java 环境。所以引用数据类型在后面比较的时候一般不能直接==,要用equal()浮点型:float(32位单精度),double(64位双精度),变量指向的是堆内存中对象的地址,而非对象本身。布尔类型:boolean(true/false)②引用数据类型:储存对象的引用(内存地址)
2025-12-02 10:33:25
231
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅