自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL索引篇

MySQL索引一、怎么知道一条SQL语句有没有使用索引?二、如何排查慢查询三、索引失效以及为什么失效四、索引为什么能提高查询性能五、为何选择B+树而不是B树六、索引分类七、什么时候创建以及什么时候不需要索引八、索引优化

2023-03-27 16:15:21 5745 2

原创 Mybatis

Mybatis一、什么是 MyBatis?二、XML中的标签三、动态sql四、#{}与${}的区别五、实体类中属性名与表中字段名不一样,怎么办六、MyBatis和ORM的区别七、MyBatis分页八、MyBatis如何获取自动生成的id九、MyBatis缓存

2023-03-26 19:02:03 608

原创 请求响应数据?Controler层注解!

1. 请求1.1概述1.2 简单参数1.2.1 原始方式1.2.2 SpringBoot方式1.2.3 参数名不一致1.3 实体参数1.3.1 简单实体对象1.3.2 复杂实体对象1.4 数组集合参数1.4.1 数组1.4.2 集合1.5 日期参数1.6 JSON参数1.7 路径参数2. 响应2.1 @ResponseBody2.2 统一响应结果

2023-03-24 17:44:36 571

原创 HTTP协议

一、HTTP概述二、HTTP请求数据格式GET请求方式和POST请求方式的区别三、HTTP响应数据格式常见的HTTP响应码四、其他相关问题1.Forward 和 Redirect 的区别2.HTTP与HTTPS协议的区别3.HTTP的长连接与短连接的区别4.HTTP协议与TCP/IP协议之间的关系无状态

2023-03-23 21:31:13 474

原创 Maven详细入门

一、是什么二、干什么1.方便的依赖管理2.统一的项目结构3.标准的项目构建流程三、怎么用1. Maven坐标2.依赖管理2.1 依赖配置2.2 依赖传递2.3 依赖范围2.4 生命周期2.5 依赖原则2.6 依赖解析机制2.7 插件解析机制

2023-03-23 16:32:14 425

原创 java多线程

线程:程序内部的一条执行路径(比如说我们之前学的main方法就是一条单独的执行路线)单线程:程序中如果只有一条执行路径,那么这个程序就是单线程的程序。多线程:多线程是指从软硬件上实现多条执行流程的技术。

2023-03-15 14:18:14 361

原创 JVM篇之内存及GC

HotSpot VM把GC分代收集扩展至方法区, 即使用Java堆的永久代来实现方法区, 这样 HotSpot 的垃圾收集器就可以像管理 Java 堆一样管理这部分内存, 而不必为方法区开发专门的内存管理器(永久代的内存回收的主要目标是针对常量池的回收和类型的卸载, 因此收益一般很小)一块较小的内存空间, 是当前线程所执行的字节码的行号指示器,每条线程都要有一个独立的程序计数器,这类内存也称为“线程私有”的内存。正在执行 java 方法的话,计数器记录的是虚拟机字节码指令的地址(当前指令的地址)。

2023-03-10 15:39:49 1220

原创 JVM篇之类加载机制

双亲委派模型的工作流程是:如果一个类加载器收到了类加载的请求,它首先不会自己去尝试加载这个类,而是把请求委托给父加载器去完成,依次向上,因此,所有的类加载请求最终都应该被传递到顶层的启动类加载器中,只有当父加载器在它的搜索范围中没有找到所需的类时,即无法完成该加载,子加载器才会尝试自己去加载该类。验证阶段是非常重要的,但不是必须的,它对程序运行期没有影响,如果所引用的类经过反复验证,那么可以考虑采用 -Xverifynone参数来关闭大部分的类验证措施,以缩短虚拟机类加载的时间。

2023-03-10 11:43:44 358

原创 Stream流和不可变集合

什么是Stream流?在Java 8中,得益于Lambda所带来的函数式编程, 引入了一个全新的Stream流概念。目的:用于简化集合和数组操作的API。先得到集合或者数组的Stream流(就是一根传送带)把元素放上去然后就用这个Stream流简化的API来方便的操作元素。/**目标:初步体验Stream流的方便与快捷Collections . addAll(names , "张三丰" , "张无忌" , "周芷若" , "赵敏" , "张强");

2023-03-01 11:24:30 284

原创 Java Map集合体系(HashMap、LinkedHashMap、TreeMap、集合嵌套)

Map集合是一种双列集合,每个元素包含两个数据。Map集合的每个元素的格式:key=value(键值对元素),一一对应。Map集合也被称为“键值对集合”。Collection集合的格式: [元素1,元素2,元素3…]Map集合的完整格式:{key1=value1 , key2=value2 , key3=value3 , …}

2023-02-28 23:01:04 894

原创 Java Set系列集合(Collections集合工具类、可变参数)

Set系列集合特点无序:存取顺序不一致不重复:可以去除重复无索引:没有带索引的方法,所以不能使用普通for循环遍历,也不能通过索引来获取元素。Set集合实现类特点HashSet : 无序、不重复、无索引。LinkedHashSet:有序、不重复、无索引。TreeSet:排序、不重复、无索引。Set集合的功能上基本上与Collection的API一致。//一行经典代码︰无序 不重复 无索引 // set sets = new LinkedHashSet();

2023-02-28 19:09:03 910

原创 Java List系列(ArrayList、LinekdList 以及遍历中删除重复元素时发生的异常和解决办法)

List集合系列List系列集合特点List集合特有方法List集合的遍历方式ArrayList集合的底层原理分析源码LinkedList集合的底层原理集合的并发修改异常问题(删除重复元素时)

2023-02-28 15:15:34 596

原创 Java集合概述(Collection集合)

集合一、集合与数组二、集合类体系结构三、泛型(约定集合存储数据类型)四、Collection集合常用API五、Collection集合的遍历方式5.1 迭代器遍历5.2 增强for循环(for each):5.3 lambda表达式六、Collection集合存储自定义类型的对象七、常见数据结构

2023-02-28 12:23:53 517

原创 面向对象和面向过程,面向对象三大特性

假设一个类有多个直接父类,这些父类包含相同的方法时,子类在调用该方法或者重写时,就会产生疑惑。由于面向对象由封装,继承,多态性的特性,可以设计出耦合度低的系统,使系统更加灵活,更加易于维护。把构成问题的事物分解成一个个对象,描述这个对象在解决整个问题中的属性和行为,最后让每个对象去执行自己的行为。分析解决问题的步骤,然后用函数把这些步骤一步一步地实现,最后在使用的时候一一调用即可。抽取多个类的一些共同属性及方法形成一个父类,让其余类继承这个父类,以实现代码的复用。缺点是没有面向对象易维护,易复用,易扩展。

2023-02-27 15:03:20 671

原创 Java static关键字(重新认识main方法)

因为static修饰的成员随着类的加载而加载, 优先于对象存在,所以在对象还没创建之前便可以直接访问,但是非静态成员则不行。test1()和test2()中,两个学生对象共享同一份school值。static 是静态的意思,可以修饰成员变量,也可以修饰成员方法。----私有该类的构造方法,目的:不让其他类再创建对象。工具类:不是描述事物的,而是帮我们完成一些事情。如果发现一个类所有方法,全是用static修饰。static修饰的成员变量,在内存中只有一份。例如:我们之前学的System类。

2023-02-26 15:15:27 392

原创 Java StringBuilder类(为什么更高效、常用方法、构造器)

public String toString​():通过toString()就可以实现把StringBuilder转换为String。StringBuffer类使用方法与StringBuilder一样,但是对多线程更为安全,留一个小问题在这里,为什么更为安全。public StringBuilder(String str):创建一个字符串缓冲区, 并初始化好指定的参数内容。public StringBuilder():创建一个空的字符串缓冲区(容器),初始容量是16个字符,会自动扩容。

2023-02-25 23:40:21 594

原创 java String类(超详细,含常用方法、面试题,内存图,案例)

一、String类的特点二、String 类的常见构造方法三、String常见的面试题1.字符常量池2.String s = "abc"与String s = new String("abc")区别3.字符拼接+4.常量优化机制四、String常用方法比较字符串内容遍历字符串截取字符串替换字符串切割字符串

2023-02-25 14:54:27 577

原创 类与对象(this 关键字、构造器)

当解决一个问题的时候,面向对象会把事物抽象成对象的概念,就是说这个问题里面有哪些对象,然后给对象赋一些属性和方法,然后让每个对象去执行自己的方法,问题得到解决。可以看到打印test1对象和test1对象所调用对象中打印this的值一样,test2对象同理,但tes1对象和test2对象不一样。可见:this代表当前类对象的引用地址,也就是说通过this可以定位到当前对象。代表当前类对象的引用地址,也就是说通过this可以定位到当前对象。这是一个类,里面只有一个方法,用来打印this的值。

2023-02-23 21:52:15 448

原创 java数组基础详解

java数组基础详解一、引言二、声明数组三、初始化数组3.1静态初始化3.2动态初始化四、访问数组元素五、遍历数组六.分析数组内存七、数组常见异常7.1索引越界异常ArrayindexOutOfBoundsException7.2空指针异常NullPointerException

2023-02-22 23:55:45 642

原创 初识微服务技术栈

目录什么是微服务?注册中心配置中心服务网关分布式缓存和数据库分布式搜素消息队列分布式日志服务系统的监控链路追踪持续集成1.认识微服务1.0.学习目标1.1.单体架构1.2.分布式架构1.3.微服务1.4.微服务技术对比1.5.SpringCloud1.6.总结什么是微服务?微服务等于Spring Cloud的吗?不等于,Spring Cloud仅仅是其中一部分。将一个单体的项目拆分为一个个独立的项目,每个项目完成一部分业务功能,将来独立开发和部署。我们把这样一个独立的项目称为一个微服务。一个大型

2022-01-05 12:24:17 639

原创 数据结构之究竟什么是树

最初的最初,先来看看树????的定义吧(三部曲之树是什么?)

2022-01-03 17:51:53 280

原创 栈(操作受限的线性表)---C语言版

目录一、栈的相关概念二、栈的基本操作三、顺序栈3.1 顺序栈的定义3.2 顺序栈的操作`InitStack(*S)`:构造一个空栈S`StackEmpty(S)`:若栈S为空栈,则返回TRUE,否则为FALSE。`Push(*S,e)`:插入元素e为新的栈顶元素`Pop(*S,*e)`:删除S的栈顶元素,并用e返回其值。`StackLength(S)`:返回栈S的元素个数,即栈的长度。`GetTop(S,*e)`:用e返回栈顶元素`StackTraverse(S)`:从栈底到栈顶依次遍历栈S,打印其中的元素

2021-12-30 18:15:51 1456

原创 从底层来看函数的调用和返回

目录一、引言二、参数和局部变量的实现2.1局部变量2.2参数---形参和实参2.3编译器是如何实现局部变量和参数的一、引言学c语言到现在,用了这么久的函数,可是我们为什么要使用函数呢?其实就是为了重用一段代码。使用函数,我们可以输入不同的值,通过返回值来得到结果。相关概念:在汇编语言中,使用指令"call"和"ret"通过改变PC(程序计数器)的值来改变执行顺序在这个过程中,也涉及到了数据的移动,像参数和返回值当然程序内部,还有一些局部变量二、参数和局部变量的实现2.1局部变量问

2021-12-28 17:57:55 639

原创 使用人脸客户端库快速实现对面部的分析---C#

目录效果展示:步骤一:安装人脸客户端库和窗口相关的库步骤二:声明初始化相关变量为资源的密钥和终结点创建变量客户端构造器图片相关变量窗口工具栏步骤三:MainWindiow窗口构造器步骤四:方法:BrowseButton_Click实现点击按钮以获取展示图片并调用UploadAndDetectFaces方法,在人脸周围显示矩形步骤五:方法FacePhoto_MouseMove:当鼠标移动到人脸矩形,显示相关的人脸描述信息步骤六:方法UploadAndDetectFaces:上传图片并且调用DetectWith

2021-12-27 15:56:54 611

原创 C语言中结构化数据(变量,指针,数组,字符串,结构体和联合)的内存表示

目录结构化数据表示一、内存地址:二、全局变量和局部变量的内存布局三、数据在内存中的表示四、数组在内存中的表示五、字符串在内存中的表示六、结构体的内存表示结构化数据表示一、内存地址:所有数据都存储在内存中内存是一个有编号的字节序列,以0x开始。那个编号计算内存的地址。通常来说,经过编译后变量名和变量类型都不见了,取而代之的是内存地址。二、全局变量和局部变量的内存布局通过一个例子,观察它们的内存地址#include<stdio.h>/*全局未初始化变量*/int globa

2021-12-18 21:29:26 1326

原创 8086指令集

8086指令集根据功能可划分为:1.数据传送类(Data transforming)2.算术运算类(Arithmetic operation)3.位与逻辑运算类(Bits and logic operation)4.字符串处理类(String operation)5.控制转移类(Branch and loop)6.处理器控制类(CPU control)8086指令集:描述一条指令,一般需要描述:1.指令的基本功能,也就是是它能干什么2.指令的影响:比如说,该指令如何影响PSW(FR

2021-12-17 16:24:56 2864

原创 指令一之操作数的寻址方式

目录一、引言视图指令段寄存器EIP如何发生改变二、操作数寻址方式(Operand-addressing Mode)1.寄存器寻址(Register Addressing)2.立即寻址(Immediate addressing)3.存储器寻址(Mermory addressing)3.1 直接寻址(direct addressing)3.2 寄存器间接寻址(register indirect addressing)3.3 寄存器相对寻址(register relative addressing)3.4 基址加

2021-12-16 20:39:34 4126

原创 遗落在时光里的静态链表(线性表的静态存储)---C语言版

总所周知,指针是c语言的灵魂,指针使得链表的实现简单明了起来。但是问题来了,在c语言还没有的时代,又想描述链表,怎么办呢?这就有了我们今天的主角静态链表首先,我们来解决一个最重要的问题,没有指针,怎么表示下一个元素的位置呢?当时的人们想出来的办法便是,用数组的下标来代替指针。我们把这个数组的下标叫做游标。第二个问题,当我们要往数组里插入元素时,如何确定数组里哪些分量未被使用,要插到哪个位置上呢?当我们删除一个元素的时候,要把这个删除后已经不存放数据的数组分量链接到哪里去,然后再次被使用呢?.

2021-12-09 14:39:11 996 2

原创 单链表(线性表的链式存储)---C语言版

单链表(线性表的链式存储)—C语言版一、相关说明逻辑上相邻的元素在物理位置上不一定相邻。优点:没有了顺序存储所具有的弱点(也就是说:插入和删除不需要移动元素,而只需要修改指针。)同时,由于不借助数组实现,在定义链表时,无需指定它的长度。缺点:也失去了顺序存储的优点非随机存取(不能直接找到某个特定序号的结点,需要从表头开始遍历)存储密度降低(除了存储本身信息外链表还要存储指针)二、单链表的定义定义线性表的链式存储又称为单链表,它是指通过一组任意的存储单位来存储线性表中的元

2021-12-07 22:46:29 2415

原创 循环链表(线性表的链式存储)---C语言版

目录循环链表一、循环单链表1、循环单链表定义2、循环单链表操作初始化表。构造一个空表。求表长3、含尾指针的循环单链表二、循环双链表1、循环双链表定义2、循环双链表操作初始化表。构造一个空表。根据数组创建双链表插入操作。在表L中的第i个位置上插入指定元素e。删除操作。删除表中L中第i个位置的元素,并用e返回删除的元素。三、 循环单链表完整源码四、 循环双链表完整源码循环链表特点:表中最后一个结点的指针域指向头结点,整个链表形成一个环。既然是环的话,那就不难想象,从表中任意一个结点出发都可以找到表中其他结

2021-12-07 22:46:15 1027

原创 双链表(线性表的链式存储)---C语言版

目录双链表(线性表的链式存储)---C语言版一、单链表的定义二、单链表上具体操作的实现和时间复杂度1、初始化表。构造一个空表。2、根据数组创建双链表(头插法和尾插法)3、插入操作。在表L中的第i个位置上插入指定元素e。4、删除操作。删除表中L中第i个位置的元素,并用e返回删除的元素。三、完整代码实现双链表(线性表的链式存储)—C语言版单链表结点中只有一个指向其后继结点的指针,使得单链表只能从头结点依次顺序地向后遍历。要访问某个结点的前驱结点,只能从头开始遍历。也就是说:访问后继结点的时间复杂度为O

2021-12-02 17:13:01 1184

原创 c语言程序的生命周期(编写、预处理、编译、汇编、链接、执行)

目录程序的生命周期一、引言二、程序经历的六个阶段1、阶段一:编辑(Edit)2、程序编译系统(Programs Compilation System)阶段二:预处理(Preprocess)阶段三:编译(Compile)阶段四:汇编(Assemble)阶段五:链接(Link)3、阶段六:执行(Execute)程序的生命周期一、引言什么是计算机系统(Computer System)?计算机系统是一起工作以运行计算机程序(Computer Program)的硬件和软件组件(hardware and so

2021-12-01 20:21:29 3418 1

原创 C语言中指针传参

目录C语言中指针传参一、如何改变参数的值1、常见的错误写法:2、解决办法使用指针二、与return进行比较1、使用return返回值:2、使用指针改变多个参数的值三、传入的参数是指针如何处理?使用指针的指针C语言中指针传参一、如何改变参数的值1、常见的错误写法:由于变量会随着栈的退出而销毁,所以下面的函数无法改变a的值。#include<stdio.h>void f(int b){ //参数b初始化为1 b=3;//改变b的值为3}//随着函数的结束,变量b被销毁,a

2021-11-27 18:09:40 8568

原创 顺序表(线性表的顺序存储)---C语言版

目录顺序表一、顺序表的定义二、顺序表上基本操作的具体实现1.`InitList_Sq(*L)`:初始化表。构造一个空的顺序表。分类一:主函数里声明的是一个指向顺序表的指针分类二:主函数里声明的是一个顺序表2. `Length(L)`:求表长。3.`ListInsert_Sq(*L,i,e)`:插入操作。在顺序表L中的第i个位置上插入指定元素e。4.`ListDelete_Sq(*L,i,*e)`:删除操作。删除表中L中第i个位置的元素,并用e返回删除的元素。5.`LocateElem(L,e)`:按值查找操

2021-11-27 15:36:47 1972

原创 线性表的定义和基本操作

线性表线性表的定义1. 线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表。2. 若用L命名线性表,则其一般表示为L=(a1,a2,…,ai,ai+1,…an)3. 表达式中a1是唯一"第一个”数据元素,又称为表头元素;an是唯一的"最后一个"数据元素,又称为表尾元素。4. 除第一个元素外,每个元素有且仅有一个直接前驱。除最后一个元素外,每个元素有且仅有一个直接后驱。我们将通过一个例子(下表)来对它的定义进行阐述idnam

2021-11-25 21:33:55 3021

原创 垃圾回收GC经典算法

目录垃圾回收GC(Garbage Collection)1、什么是垃圾2、为什么要有GC经典的GC算法1、基本的一些概念2、标记清除算法(Mark and Sweep)3、复制法(copy)4、引用计数法(Reference Counting)5、分代式垃圾回收法(Generational GC)垃圾回收GC(Garbage Collection)1、什么是垃圾c语言中malloc申请完内存后,需要手动回收free。当忘记回收时就产生了垃圾2、为什么要有GC经常忘记回收容易出现多次回收

2021-11-23 20:21:53 1161

原创 C语言中常见的内存相关的Bugs

目录常见的错误参考经典的scanf bug指针未正确初始化指针被释放时没有置空不要用return语句返回指向“栈内存”的指针内存覆盖常见一常见二常见三常见四常见五二次释放引用已经释放的内存内存泄漏常见的错误参考经典的scanf bugscanf需要传入的的变量对应的地址#include<stdio.h>int main(void){ int i; double j; //wrong!!!错误的写法 scanf("%d,%ld",i,j); //下面是正

2021-11-21 22:53:51 739

原创 C语言之指针

目录指针1、指针所占内存大小2、`*` 和 `&`3、 `++`自增与`--`自减与`*`指针间接访问cp++与++cpcp++++cp*cp++与 *++cp*cp++*++cp++*cp与(*cp)++++*cp(*cp)++4、指针的指针指针1、指针所占内存大小数据的地址和数据本身没有任何关系,由于指针是间接寻址,所以猜测所有类型的指针大小相同指针大小是由当前CPU运行模式的寻址位数决定,是固定的。证实如下:pointer.c#include<stdio.h>#

2021-11-20 20:16:52 774

原创 C语言中变量的静态分配(Static)和动态分配(Stack&Heap)

C语言中变量的静态分配(Static)和动态分配(Stack&Heap)变量的静态分配在编译和链接时确定的绝对地址。在程序运行时无法再改变其内存大小。当然,你可以修改程序,再重新编译它,但这样灵活性低。包含了哪些变量?全局变量和局部变量(staic关键字)全局变量和被static修饰的局部变量都可以将函数中此变量的值保存到下一次调用。但是被static修饰的局部变量对外不可见,仅在此函数中可见。保证了数据的安全性。通过一个例子进行诠释static.c#include

2021-11-19 17:19:51 3253

原创 纯HTML+CSS网页设计期末作业(个人网站)

目录纯HTML+CSS网页设计期末作业(个人网站)效果展示源码index.htmlindex.cssabout.htmlhobbies.htmlhobbies.cssme.htmlme.cssbook1.htmlbook.csssongci.htmlsongci.css缺陷纯HTML+CSS网页设计期末作业(个人网站)效果展示index 页面about 页面hobbies 页面书籍介绍页面元曲介绍页面源码index.html<!DOCTYPE html><h

2021-11-14 18:45:28 291091 390

空空如也

空空如也

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

TA关注的人

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