- 博客(48)
- 收藏
- 关注
原创 多线程---进阶(八股文)---文章后面写了面试会如何问和答案(!!!)
这个是Java1.7?中采取的技术.Java1.8中已经不再使⽤了.简单的说就是把若⼲个哈希桶分成⼀个"段"(Segment),针对每个段分别加锁.⽬的也是为了降低锁竞争的概率.当两个线程访问的数据恰好在同⼀个段上的时候,才触发锁竞争.
2024-07-21 13:58:59
555
原创 SpringBoot 介绍和使用(详细)
官⽅对于Maven的描述:引⽤来⾃:翻译过来就是:Maven是⼀个项⽬管理⼯具。基于POM(Project Object Model,项⽬对象模型)的概念,Maven可以通 过⼀⼩段描述信息来管理项⽬的构建,报告和⽂档的项⽬管理⼯具软件。⼤⽩话: Maven是⼀个项⽬管理⼯具, 通过pom.xml⽂件的配置获取jar包,⽽不⽤⼿动去添加jar包.2.2 为什么要去学Maven⼀句话: 简单, ⽅便, 提⾼我们的开发效率, 减少我们的开发Bug.
2024-07-21 09:00:00
547
原创 MySQL全解(基础)-(MySQL的安装与配置,数据库基础操作(CRUD,聚合,约束,联合查询),索引,事务)
存储数据用文件就可以了,为什么还要弄个数据库?文件保存数据有以下几个缺点:文件的安全性问题文件不利于数据查询和管理文件不利于存储海量数据文件在程序中控制不方便磁盘内存为了解决上述问题,专家们设计出更加利于管理数据的软件——数据库,它能更有效的管理数据。数据库可以提供远程服务,即通过远程连接来使用数据库,因此也称为数据库服务器。数据库大体可以分为 关系型数据库 和 非关系型数据库关系型数据库(RDBMS):是指采用了关系模型来组织数据的数据库。
2024-06-19 08:00:00
540
原创 反射,枚举以及lambda表达式
Java的反射(reflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,既然能拿到那么,我们就可以修改部分类型信息;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射(reflection)机制。Lambda表达式的优点很明显,在代码层次上来说,使代码变得非常的简洁。缺点也很明显,代码不易读。优点:1. 代码简洁,开发迅速2. 方便函数式编程3. 非常容易进行并行计算。
2024-06-15 20:00:48
776
原创 优先级队列(堆)和四个比较(==,equals,Comparable,Comparator)
本节具体阐述堆的概念和自己如何实现堆(底层)掌握PriorityQueue的使用。
2024-04-27 13:04:50
983
4
原创 CSS选择器的常见用法(标签选择器,class选择器,id选择器,复合选择器,通配符选择器)
⼀个类可以被多个标签使⽤, ⼀个标签也能使⽤多个类(多个类名要使⽤空格分割, 这种做法可以让 代码更好复⽤)id 是唯⼀的, 不能被多个标签使⽤ (是和 类选择器 最⼤的区别)
2024-04-22 22:17:33
227
原创 JVM(java虚拟机 详解三个主要的话题:1.JVM 中的内存区域划分2.JVM 的类加载机制3.JVM 中的垃圾回收算法)
JDK、JRE、JVM之间的关系?JDK(Java Development Kit):Java开发工具包,提供给Java程序员使用,包含了JRE,同时还包含了编译器javac与自带的调试工具Jconsole、jstack等。JRE(Java Runtime Environment):Java运行时环境,包含了JVM,Java基础类库。是使用Java语言编写程序运行的所需环境。
2024-04-21 15:15:02
1346
原创 一篇文章带你掌握⽹络原理--HTTP/HTTPS(HTTP各个部分详解和HTTPS加密详解)
HTTP(全称为"超⽂本传输协议")是⼀种应⽤⾮常⼴泛的应⽤层协议.HTTP诞⽣与1991年.⽬前已经发展为最主流使⽤的⼀种应⽤层协议.最新的HTTP3版本也正在完善中,⽬前Google/Facebook等公司的产品已经⽀持了.HTTP往往是基于传输层的TCP协议实现的.(HTTP1.0,HTTP1.1,HTTP2.0均为TCP,HTTP3基于UDP实现)⽬前我们主要使⽤的还是HTTP1.1和HTTP2.0.当前课堂上讨论的HTTP以1.1版本为主.
2024-04-20 13:59:20
1165
1
原创 网路原理-传输层UDP,TCP/IP(确认应答,超时重传,连接管理,三次握手,四次挥手,状态转换,流量控制,滑动窗口,拥塞控制,延时应答,捎带应答,异常情况,面向字节流)-网络层(IP协议,地址管理)
本节重点• 理解传输层的作⽤,深⼊理解TCP的各项特性和机制• 对整个TCP/IP协议有系统的理解• 对TCP/IP协议体系下的其他重要协议和技术有⼀定的了解。
2024-04-06 16:18:05
2273
14
原创 一篇文章带你掌握二叉树(附带二叉树基本操作完整代码演示,和两种思路)
【本长内容】1. 掌握树的基本概念2. 掌握二叉树概念及特性3. 掌握二叉树的基本操作4. 完成二叉树相关的面试题练习。
2024-04-05 22:24:41
956
原创 一篇文章带你了解和使用-网络编程套接字
DatagramSocket 是UDPSocket,⽤于发送和接收UDP数据报。DatagramSocket 构造⽅法:⽅法签名 ⽅法说明DatagramSocket() 创建⼀个UDP数据报套接字的Socket,绑定到本机任意⼀个随机端⼝(⼀般⽤于客⼾端)
2024-04-01 21:55:24
723
原创 一篇文章带你了解Java网络原理
独立模式:计算机之间相互独立;随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据,即以多个计算机协同⼯作来完成业务,就有了⽹络互连。⽹络互连:将多台计算机连接在⼀起,完成数据共享。数据共享本质是⽹络数据传输,即计算机之间通过局域⽹,即Local Area Network,简称LAN。Local即标识了局域⽹是本地,局部组建的⼀种私有⽹络。局域⽹内的主机之间能⽅便的进⾏⽹络通信,⼜称为内⽹;局域⽹和局域⽹之间在没有连接的情况下,是⽆法通信的。
2024-03-31 00:34:03
884
3
原创 网络原理-传输层-UDP报文结构
16位UDP长度:只是用2字节,16个二进制位记录整个数据报(UDP⾸部+UDP数据)的最⼤⻓度.并不是整个报文大小2字节.但是记录了16位,所以UDP大小就是2的16次方/1024=64kb;• 不可靠:没有确认机制,没有重传机制;我们注意到,UDP协议⾸部中有⼀个16位的最⼤⻓度.也就是说⼀个UDP能传输的数据最⼤⻓度是。如果我们需要传输的数据超过64K,就需要在应⽤层⼿动的分包,多次发送,并在接收端⼿动拼装;16位UDP校验和:用2字节,16个二进制位来校验,如果校验和出错,就会直接丢弃;
2024-03-28 23:44:03
651
原创 网络编程基本概念(一篇文章掌握基本内容的详细概念,IP,端口号,协议,协议分层,封装和分用,客户端和服务端,请求和回应,两台主机的通信)
IP地址主要⽤于标识⽹络主机、其他⽹络设备(如路由器)的⽹络地址。简单说,IP地址⽤于定位主机的⽹络地址。就像我们发送快递⼀样,需要知道对⽅的收货地址,快递员才能将包裹送到⽬的地。IP地址是⼀个32位的⼆进制数,通常被分割为4个“8位⼆进制数”(也就是4个字节),如:通常⽤“点分⼗进制”的⽅式来表⽰,即a.b.c.d的形式(a,b,c,d都是0~255之间的⼗进制整数)。如:100.4.5.6。
2024-03-26 22:44:52
1203
2
原创 JavaEE-文件操作和IO
我们先来看看 File 类中的常⻅属性、构造⽅法和⽅法属性修饰符及类型 属性 说明static String pathSeparator 依赖于系统的路径分隔符,String类型的表⽰static char pathSeparator 依赖于系统的路径分隔符,char类型的表⽰构造方法。
2024-03-23 23:15:38
910
2
原创 一篇文章了解和使用Map和Set(HashMap/TreeMap/HashSet/TreeSet)
本节目标]*掌握HashMap/TreeMap/HashSet/TreeSet的使用*掌握了解HashSet和HashSet背后的哈希原理和简单的实现。
2024-03-04 09:00:00
993
3
原创 计算机工作原理解析和解剖(基础版)
每个应⽤程序运⾏于现代操作系统之上时,操作系统会提供⼀种抽象,好像系统上只有这个程序在运⾏,所有的硬件资源都被这个程序在使⽤。这种假象是通过抽象了⼀个进程的概念来完成的,进程可以说是计算机科学中最重要和最成功的概念之⼀。
2024-01-26 00:29:03
629
原创 栈和队列(详解)
栈:一种特殊的线性表,其只允许在固定一端进行插入和删除元素的操作,进行数据插入和删除操作的一端称为栈顶,另一端称为栈底,栈中的数据遵守后进后出的原则.
2024-01-16 08:08:50
966
原创 LinkedList与链表
LinkedList的底层是双向链表结构(链表后面介绍),由于链表没有将元素存储在连续的空间中,元素存储在单独的节点中,然后通过引用将节点连接起来了,因此在在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。[说明]1.LinkedList实现了List接口2.LinkedList的底层使用了双向链表3.LinkedList没有实现RandomAccess接口,因此LinkedList不支持随机访问4.LinkedList的任意位置插入和删除元素时效率比较高,时间复杂度为O(1)
2023-12-26 15:50:45
1375
3
原创 ArrayList与顺序表(带完整实例)
在集合框架中,ArrayList是一个普通的类,实现了List接口,具体框架图如下:[说明]1.ArrayList是以泛型方式 实现的,使用时必须先实例化2.ArrayList实现了RandomAccess接口,表明ArrayList支持随机访问3.ArrayList实现了Cloneable接口,表明ArrayList是可以clone的4.ArrayList实现了Serializable接口,表明ArratList是支持序列化的。
2023-12-14 22:49:19
1030
4
原创 包装类 和 初阶泛型(详解)
一般的类和方法,只能使用具体的类型: 要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大。----- 来源《Java编程思想》对泛型的介绍。泛型是在JDK1.5引入的新的语法,通俗讲,泛型:就是适用于许多许多类型。从代码上讲,就是对类型实现了参数化.
2023-12-12 21:49:29
837
原创 初始集合框架+时间和空间复杂度(数据结构)
数据结构(Data Structure)是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合.算法(Algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为输出。简单来说算法就是一系列的计算步骤,用来将输入数据转化成输出结果。
2023-12-12 13:25:16
939
原创 详解异常 ! !(对异常有一个全面的认识)
Java 中虽然已经内置了丰富的异常类, 但是并不能完全表示实际开发中所遇到的一些异常,此时就需要维护符合我们实际情况的异常结构.例如, 我们实现一个用户登陆功能.if (!if (!System.out.println("登陆成功");此时我们在处理用户名密码错误的时候可能就需要抛出两种异常. 我们可以基于已有的异常类进行扩展(继承), 创建和我们业务相关的异常类.具体方式:1. 自定义异常类,然后继承自Exception 或者 RunTimeException。
2023-12-10 22:11:57
900
10
原创 对String类的操作 (超细节+演示)
由于String的不可更改特性,为了方便字符串的修改,Java中又提供StringBuilder和StringBuffer类。这两个类大部分功能是相同的,这里介绍 StringBuilder常用的一些方法,其它需要用到了大家可参阅 StringBuilder在线文档方法 说明。
2023-12-09 20:28:52
1003
3
原创 抽象类和接口(超重点!!)
说明:圆形,正方形,长方形都是图形,因此图形类和圆形和正方形还有长方形都是继承关系.虽然图形中也存在draw(),但由于图形类不是具体的图形,因此内部的draw()方法实际是没有办法实现的.由于图形类没有办法描述一个具体的图形,导致draw()方法无法具体实现,因此可以将图形类设计为"抽象类".
2023-12-06 23:15:01
1072
11
原创 继承 和 多肽(超重点 ! ! !)
[本节目标]1.继承2.组合3.多肽Java中使用类对现实世界中实体来进行描述,类经过实例化之后的产物对象,则可以用来表示现实中的实体,但是现实世界错综复杂,事物之间可能会存在一些关联,那在设计程序是就需要考虑。比如:狗和猫,它们都是一个动物有些动物就会有相同的习性,比如:猫和够都需要睡觉,都需要吃饭,但是吃的东西不同而已.通过上述代码发现:猫和狗的类中存在大量的重复代码,如下所示:那能否将这些共性抽取呢?面向对象思想中提出了继承的概念,专门用来进行共性抽取,实现代码复用。继承机制:是面向对象程序设
2023-12-02 14:02:18
896
5
原创 类和对象(详)
在java中定义需要用到class,具体语法如下://创建类field;//字段(属性) 或者 成员变量method;//行为 或者 成员方法class为定义类的关键字,ClasName为类的名字,{ }中为类的主体。类中包含的内容称为类的成员。属性主要是用来描述类的,称之为类的成员属性或者类成员变量。方法主要说明类具有哪些功能,称之为类的成员方法。//品牌//型号//重量//长//宽//高//颜色public void washClothes(){ //洗衣服。
2023-09-24 20:42:38
150
4
原创 Java(运算符+循环)万字超详细介绍 (囊括了按位,异或,for,while等基础和疑难知识)
注意:1.0x前缀的数字为十六进制数字十六进制可以看成是二进制的简化表示方式一个十六进制数字对应4个二进制位.2.0xf 表示10 进制的 15也就是二进制的 11113. printf 能够格式化输出内容x 表示按照十六进制输出4.\n表示换行符5.如果两个数相同,则异或为0
2023-09-16 17:40:19
892
20
原创 java的数据类型与变量(超详细每个都有小结论,习题巩固)
在上节课HelloWorld程序中,System.Out,println(Hello World");语句,不论程序何时运行,输出的都是HelloWorld,其实”Hello World”就是字面常量。常量即程序运行期间,固定不变的量称为常量,比如:一个礼拜七天,一年12个月等。其中: 100、3.14、A、true/false都是常量,将其称为字面常量.字面常量的分类:
2023-09-11 08:00:00
865
13
原创 一篇文章带你走进Java(保姆级)
Java是一种优秀的程序设计语言,它具有令人赏心悦目的语法和易于理解的语义。Java还是有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统,移动终端,企业服务器,大型机等各种场合。
2023-07-25 23:38:26
1352
32
原创 指针进阶(三)!!(通过习题来了解指针)(理解更加透彻)
地址是十六进制,所以1111------>F 1111------>F 1111------>F 1111------>F 1111------>F 1111------>F 1111------>F 1100----->C。16//计算的是第一行的大小(16),a是数组首元素的地址,就是第一行的地址,*a就是第一行,*a---> *(a+0) ---->a[0]和上面那道题一样,只是多了个*。4//(a + 0)不再是(a),所以a是首元素地址,是一个int,所以是4字节。
2023-07-22 13:37:08
339
8
原创 指针进阶(二)
回调函数就是一个通过函数指针调用函数,如果你把函数的指针(地址)作为参数传递给另外一个函数,当这个指针被用来调用其所指向的函数时,我们就说这个函数是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于该函数或条件进行响应。p1先和[ ]结合,说明p1是数组,数组的内容是什么呢?大家期待已久的指针续集来啦,新来的可以先从一看起,可以有更连贯的思维,阅读完指针的章节,就可以手撕指针啦。指向函数指针数组的指针是一个指针,指针指向一个数组,数组的元素都是函数指针。
2023-07-09 20:24:07
104
12
原创 指针的进阶(一)!!(全网最全教学)
因为这里str3和str4指向的是同一个常量字符串(常量字符串只会创建一个,地址是一样的),当str3和str4两个指针同时指向同一个常量字符串的时候,他们实际会指向同一个内存,所以str3和str4相同。p先和*结合,说明p是一个指针变量,然后指向的是一个大小为10个整形的数组,所以p是一个指针,指向一个数组,叫做数组指针。本例中&arr的类型是int(*)[10],是一种数组指针类型。既然数组指针指向的是数组,那数组指针中存放的应该是数组的地址。实际上:&arr表示的是数组的地址,而不是首元素的地址。
2023-07-06 22:02:00
97
8
原创 初阶指针(适合上手)!!
注意:允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针比较,但是不允许与指向第一个元素之前的那个内存位置的指针进行比较。在32位的机器上,地址是32个0或1组成的二进制序列,那地址就得用4个字节的空间来存放,所以一个指针变量的大小就应该是4个字节。那如果在64位机器上,如果有64个地址线,那一个指针变量的大小就是8个字节,才能存放一个地址。2.平时口语中说的指针,通常指的是指针变量,是用来存放内存地址的变量。指针变量也是变量,是变量就有地址,那指针变量的地址存在哪里?
2023-07-05 22:09:51
83
6
原创 算术转换之显性转换和隐性转换!!!!
显性转换:long doubledoublefloatunsigned long intlong intunsigned intintfloat a= 9.0;int b=(int)a;这种强制转换的叫做显性转换float a=9.1;int b=a;这种没有括号的叫做隐性转换这种隐性转换和float在内存中存储无关这是一篇有感而发的文章~~~~
2023-07-01 00:24:54
112
原创 c语言——操作符详解
如果某个操作符的各个操作数属于不同类型,那么除非其中一个操作数转换为另一个操作数类型,否则操作无法进行。为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整形,这种称为整形提升。如果我们写出的表达式不能通过操作符的属性来确定唯一 的计算路径,那这个表达式就是存在问题的。赋值操作符是一个很棒的操作符,他可以让你不满意的值,重新变成你满意的值。3.%操作符的两个操作数必须为整数,返回的是整除之后的余数。c的整形算术总是至少以缺省整形类型的精度来进行的。在编程中,记住,=是赋值,==才是等于。
2023-06-30 20:29:10
70
2
原创 c语言——数组
从这里就可以发现:数组名在不同的地方使用含义是不同的,数组名是首元素地址,但是有两个例外,第一个例外就是sizeof(arr)当做arr整个数组看待,第二个例外就是&arr,&arr+1就是整个数组跳过。c语言本身是不做数组下标的越界检查,编译器也不一定报错,但是编译器不报错,并不意味着是正确的。数组在创建的时候如果不想指定数组的大小就得初始化,数组的元素个数根据初始化内容决定。数组的初始化是指,在创建数组的同时给数组的一些内容一些合理的初始值。数组的运用很广泛,也是一个基础的知识,也是必须掌握的知识。
2023-06-30 11:59:13
74
原创 c语言离不开的分支和循环
其实也没什么,结构就是所以的语句被跳过而已,程序并不会被终止,也不会报错,因为这种情况在c中并不认为是个错误。continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行,而是直接跳到while语句的判断部分,进行下一次的循环入口判断。但是某些场合下,goto语句还是挺有用的,最常见的用法就是终止程序在某些深度嵌套 的结构的处理过程。从理论上讲,goto语句是没有必要的,实践中goto语句也可以很容易的写出代码。在循环中遇到break,就停止后后期的所以的循环,直接循环终止。
2023-06-30 09:17:25
121
5
原创 c语言核心难点——函数与递归
形式参数 是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程才实例化(也就是分配内存单元),所以叫形式参数。作用:1.告诉编译器有一个函数叫什么,参数是什么,返回类型是什么,但是具体是不是存在,函数声明决定不了。这种方式可以让函数和函数外边的变量建立起真正的联系,也就是函数内部可以直接操作函数外部的变量。无论是哪种类型的实参,在进行函数调用的时候,他们必须有确定的值,以便把这些值传给形参。函数的定义是指函数的具体实现,交代函数的功能实现。实参可以是:常量,变量,表达式,函数等。
2023-06-29 20:54:51
91
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人