自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 每日一题-二叉树

这道题还是比较难得我觉得,先来说说做法,他不是有中序和后序吗,我们可以根据后序最后一个元素,找到他的根,然后再在中序上找到他得左右分别有多少哥元素,这个样递归得时候,参数就搞定了,就是先定义一个方法,参数就为这两个数组,然后是最左边和最右边,先排null,如果右边小于左边就直接返回null,然后就找这个根,找到之后就是找到左边得个数,然后递归就OK了。在之前加上root1.val为两者相加即可。

2024-03-21 11:19:01 218

原创 网络体系结构

接下来就要进行计算机网络的学习,这也是我学习计算机网络的一个学习笔记,让我们开始学习上面那一张图是我们在学习计算机网络的时候的重点知识,今天的我学习了网络体系结构其中包括TCP/IP网络模型这是一个重点,然后还有OSI网络模型这也是一个重点,首先我会先介绍一下他们各自是什么;然后有几个比较重要的问题,为什么要设计分层网络模型,这两个模型各自有多少层,每一层的作用与顺序关系,这两个模型的差异点和共同点,ok重难点知道了之后让我记录一下今天的成果。

2024-03-20 10:04:42 1043

原创 每日一题——二叉树

这道题还是有点难度的,但是我感觉可以这样做,先设置一个value,Deep,让这个Deep深度为-1,然后创建一个方法,参数为root和deep,一开始祖传排null,然后就是如果left和right都为null,那好了,deep如果大于Deep的话,就是value就为root的值,然后Deep就为deep了,然后就是如果left不为null,那么就是回溯,right不为null,也回溯。然后就是如果left不为null了,就设置一个布尔类型的left用来递归,然后就是判断,right同理。

2024-03-20 10:04:03 178

原创 每日一题——二叉树

这道题有点复杂了就,我们要创建一个方法之前,先创建一个list集合,然后定义方法,方法里面的参数为root,string,list,如果root不为null的时候,我们要定义一个stringbuffer,把list传进去,然后就是在list里面添加root的val,然后就是left和right的排null,如果为null,就把stringbuffer利用tostring方法,传到list里面,然后不为null的话,就是进行下一步递归。再进行递归,分为外部和内部了。

2024-03-19 14:36:12 326

原创 计算机网络——HTTP

不一定,要看实际的GET请求,如果开发者是遵守规范,而且GET请求是用获取数据,就是安全且幂等的,如果GET请求是新增数据的话就不是安全且幂等的,举个例子就是如果你要实现的GET方法里是一个数据库记录的话,就要进行多次GET方法,也就是插入多个记录。3.GET请求的请求参数存放在URL中,但是浏览器对URL的长度有限制,所以导致了URL对GET请求的请求参数也有限制,但是POST的请求参数存放在请求体中,所以是没有限制的。请求行与请求头他是用\r\n来分割的,请求头和请求体是用空格来分割的。

2024-03-19 14:35:24 400

原创 并发安全容器

先来说一下他的实现原理,再jdk1.7以前时,他是使用分段数组+链表的形式,他是使用Segment数组和hashEntry数组来实现的。然后它也具有可重入锁的性质。前面不是说一个ConcurrentHashMap里面有一个Segment吗,这个Segment的个数一旦被初始化就无法改变了,默认的数量就为16个也就是说可以默认16个数组并发写。然后原理的话,就是他把那些数据分成一段段的(这个段就是Segment),然后给每一段数据配上一把锁,当一个线程占用锁去访问这段数据的时候,其他数据也能访问。

2024-03-05 12:38:34 320

原创 Java原子类和并发工具类

他的全称是compare and swap,比较并且交换,所以他是相当于通过一个原子操作,经过读取内存,比较数据,交换数据这个三个步骤,本质上是CPU指令的支撑CAS机制不是读取内存比较数据,交换数据吗,如果假如说这个数据是A,然后他变为了B,然后又变为了A,CAS他是检查不到的,但是他其实是变化了的,在某些场景可能问题不是很大,但是在有的场景中却容易出现问题。

2024-03-05 12:37:56 360

原创 Java并发编程——锁

可重入锁的意思就是自己可以获得自己的内部锁,比说就是一个线程去获取到另一个对象中的锁,如果该锁没有释放的话,我们可以等下一次来的时候再获取该对象的锁,如果没有可重入性,那么就会造成死锁。同一个线程每获取到锁,锁的计数器就会加1,等到计数器为0的时候,他就会释放。

2024-03-04 10:47:33 467

原创 Java并发编程基础

对于Java来说,咱运行一段Java程序就是一个段进程。在一段进程中,我们可以创建多个线程,每一个线程都有自己独立的属性和本地内存。对于操作系统来讲,进程是操作系统分配资源的基本单位,线程是操作系统调度资源的基本单位。ThreadLocal是一个线程变量,对于ThreadLocal填充的变量来说,它只属于当前线程,也就是说对于其他线程来说他是独立的,ThreadLocal给其他线程也创立了副本内存空间。

2024-03-03 15:27:23 679

原创 Java并发编程理论基础

Java的内存模型简称JMM,他可以让线程对共享变量的改变使另外的线程可见,它还可以表示线程与内存之间的抽象关系,线程之间的共享变量存储在主内存中,对其中一个线程更改共享变量时,对存储在本地内存中,但是本地内存时JMM的一个抽象概念,并不真实存在。

2024-03-03 11:03:56 464

原创 集合总体复习

LinkedHashMap是HashMap的子类,底层使用双向链表来维护元素的插入顺序,当他遍历的时候就为该顺序,此顺序可以为元素的插入顺序也能为最近最少使用顺序(LRU),put,get,remove都为使用顺序,这样的话就能实现淘汰机制与内存管理,释放那些不经常访问的元素。

2024-03-02 10:14:46 1451

原创 集合复习补充

LinkedHashMap是HashMap的子类,底层使用双向链表来维护元素的插入顺序,当他遍历的时候就为该顺序,此顺序可以为元素的插入顺序也能为最近最少使用顺序(LRU),put,get,remove都为使用顺序,这样的话就能实现淘汰机制与内存管理,释放那些不经常访问的元素。

2024-03-02 10:13:53 298

原创 Java集合复习

获取数据时,也就是get方法,用hash(k)获取到hash值,然后结合长度获得数组下标,然后利用数组下标,按顺序遍历,利用equals方法比较获取v值。

2024-03-01 20:00:21 382 1

原创 MySQL自己梳理

按照数据结构分类分为 B+树类型,hash类型,full-text类型按照物理存储分为 聚簇类型和非聚簇类型按照字段特性分为 前缀索引,唯一索引,普通索引和主键索引按照字段个数分为 单列索引和联合索引B+树因为红黑树的书高而B+树的书高最多三四层,便于查询等操作1.B+树的非叶子节点存放的是索引数据,而B树的非叶子节点存放的是数据和索引数据,所以B+树的非叶子节点存放的索引数据就会更多,有利于他查询2.B+树的冗余节点比较多,所以在增删改等操作效率比较高3.B+树的叶子节点使用的是链表,所以在查询的时候就比

2023-12-04 19:23:19 31

原创 MySQL自己梳理

还有就是他们的性能上,我认为大部分情况下varchar的性能大于char因为char在存储时会用空格填充,所以就会性能降低,也不是绝对的,因为char的空格填充在分页,断页等情况下也是起大作用的,而用varchar就是导致性能降低。这个两个的区别还是挺大的,在内存储存上,InnoDB将数据和索引数据存放在一块,而MyISAM是将这两个分开放的,同时InnoDB的B+树的叶子节点储存的是数据和索引数据,而MyISAM储存的是数据地址和索引数据。普通索引的索引行是可以重复的,而唯一索引的索引行是不可以重复的。

2023-12-04 19:22:37 25

原创 MySQL基础

这部分就是为我之前学的MySQL也就是sql语法,做一个笔记让我们拭目以待1.基本的select语句2.运算符与排序和分页3.多表查询4.单行函数5.聚合函数6.子查询7.创建表和管理表8.约束。

2023-12-03 19:12:24 28 1

原创 每日一题字符串篇

这个题目的思路是就是创建一个临时的变量,然后用双指针进行交换不难。注意i++和++i的区别,i++是先用再加,而++i是先加再用。这个和上面其实差不多。

2023-11-26 15:25:34 31 1

原创 每日一题数组篇

什么叫做滑动窗口,他的意思的要找到最小的子数组,也就是咱可以定义两个指针在起始位置,然后在利用for循环来移动其中一个指针就比如说right吧另一个就是left,然后定义一个sum来计算总和,然后咱不是说要返回长度吗 而且还是最短的,所以咱就要在for循环之前定义个result它等于最大的数,然后就在,当sum>=target的时候,比较result和两个指针之间的长度,然后返回一个短的了,然后sum=sum-nums【left++】;然后如果减完之后他还大,那就继续比较,写一遍就明白了。

2023-11-26 15:24:43 22 1

原创 Java多线程

并发就是比如说你在打球的时候,有点渴了,然后喝了点水,这是不是你停止打球之后喝的水,虽然很快,看似是“同时进行”,其实是分开的,所以并发就是个样。所谓进程就是,一段程序的运行过程,当程序开始运行的时候,操作系统会为其开辟一个内存空间,,他也有自己的生命周期,有开始,运行和结束。线程同步的理解其实就是,有三个人在吃饭,只有一个叉子,当你用的时候,另外两个人就不能用了,这就是同步。yield方法是礼让,意思就是一开始cpu正在执行该线程,然后用了这个方法之后,让其他线程执行。

2023-11-12 18:58:44 16 1

原创 JavaIO流

接下来我们说一下流与文件的关系,比如说我买了个快递,是不是快递小哥要送到我手里,我要退货是不是快递小哥退到快递中心,这个快递小哥就是流,而我和快递中心就是文件和Java程序。打个比方,你和喝水的话,水流到你的肚子里面,是输入,你把水吐出来是输出。从Java程序到文件是输出流,从文件到Java程序是输入流。刚刚在上面我们不是说了输入流和输出流是什么嘛。o指的就是outputstream。I指的就是inputstream。我们这样的话就是覆盖,原有内容。什么是输入流什么是输出流。另一种是用数组,多个字节。

2023-11-12 18:56:08 16 1

原创 Java泛型

泛型字面意思就是广泛的类型第四条就是这样理解在我们之前 我们就已经讲过了,就是这里还有自定义泛型接口自定义泛型方法。

2023-11-07 16:02:40 13

原创 Java集合(重要一万六千字)

集合他和数组差不多,但是他比数组好用太多了,就比如说数组你只能制定长度,长度满了以后,你就不能再添加 了,或者说如果你再添加,你就只能再创建一个数组然后将数组复制过去(利用for循环)好处就是,可以动态变化,然后可以有特定的方法增删改查。比较方便1.list集合他的存入和取出的顺序其实是一致的,并且是可以重复的2.每个元素都有其对应的顺序索引,他是支持索引的3.list的实现子类其实有很多,我们之前只是展示了其中很少的一部分由此可见他是不包含5的也就是他是不包含toIndex完整代码在这。

2023-11-04 15:30:06 38 1

原创 Java常用类

然后就是第二中方式,new对象,我们之前讲过new创建对象的时候是在堆里面开辟一个空间,然后首先他会找value属性让他在常量池里面找有没有hsp的地址值,有的话拿过来,没有的话就创建,然后main就创建一个s2储存堆value的地址值。第二个我们刚刚讲过了,他是直接赋值,然后a在常量池里创建了地址值,然后b再赋值的时候,先再常量池里面找,常量池里面有他就不用再创建,所以就地址值相同。StringBuffer他和String一样,但是他的内容是可以增删的,他的长度是可变的,他是一个容器。

2023-11-04 15:27:22 12 1

原创 Java异常

System.out.println("我能编译出来");这样一段代码就可以将我们引入什么叫做异常,咱们看,代码出现异常ArithmeticException,然后后面的代码就没有编译出来,这就是异常在以后的实际开发中,开发一个软件可能会有成百上千的文件,但是因为这种微不足道的异常就让系统奔溃,是不是非常不现实,所以就出现了Java设计者的想法,异常捕获机制,try-catch我们来演示一下,还是那段代码,也就是选中代码块,然后按住快捷键Ctrl-alt-T 然后选中6try--catch。

2023-11-04 15:26:37 15 1

原创 Java枚举与注解

season spring = new season("春天","舒服");season summer = new season("夏天","炎热");season autumn = new season("秋天","凉爽");season winter = new season("冬天","寒冷");//season other = new season("其他","~~~");

2023-10-31 11:59:21 14 1

原创 Java面向对象

构造器其实是一种特殊的方法,他有空参构造,和有参构造两种,下面写一段代码来看一下就可以啦这就是构造器也就做构造方法多态分为行为多态和对象多态,多态是继承,在实现下的一种情况比如说teacher和student都是people的子类也是说,当父类变量接受子类对象的时候,这就叫做对象多态,p1与p2都是people类型,但是p1与p2都是指的对象不同,这种现象叫做对象多态。都可以调用run方法,但是两个run方法的行为不一样,这种现象叫做,行为多态。

2023-10-30 13:46:51 33 1

原创 Java基础--万字细节

统一码(Unicode),也叫万国码、单一码,由统一码联盟开发,是计算机科学领域里的一项业界标准,包括字符集编码方案等。统一码是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。可以用idea编写一段程序来看一下;编写一段程序找出‘你’’我‘’他‘在Unicode中的位置char ni = '你';char wo = '我';char ta = '他';

2023-10-27 20:23:24 33 1

原创 String Class - StringBuffer 和 StringBuilder - Java

前言StringBuffer 、 StringBuilder、 String 是三种数据类型首先来回顾下String类的特点:任何的字符串常量都是String对象,而且String的常量一旦声明不可改变,如果改变对象内容,改变的是其引用的指向而已。通常来讲String的操作比较简单,但是由于String的不可更改特性,为了方便字符串的修改,提供StringBuffer和StringBuilder类。

2023-10-12 19:45:49 17

原创 String Class - 字符串类型 - 下半部分

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考。

2023-10-12 07:00:00 73

原创 String Class - 字符串类型 - 上半部分讲解

在Java中,new String类型数据的时候,是不会存在内存重叠的情况,在Java中,字符串是一个对象,而我们new String 对象时,是产生一个新的对象,如果产生的对象是一样的,那还叫新对象?如果是引用类型变量之间的比较,且使用双等号来比较的话,比较的就是引用变量存储的地址。如果调用是引用类型的数据,就需要注意,调用者不能空引用/空指针。例题2: 将例题1中的 str,重新赋值会不会影响 str2的输出结果?数组的整体赋值 ,在Java中,只有一次机会,就是在定义数组的时候。

2023-10-11 09:25:51 51

原创 初识 Java

之前已经学习了一段时间的Java,想到要创建一个笔记,来让我们回忆一下之前学习的内容提示:以下是本篇文章正文内容,下面案例可供参考我的意思并不是说 Java就是世界上最好的语言,只是说我更加偏爱Java,不然也不会学,对吧。每个语言都是它的特性,Python 处理数据,C 处理底层代码,Java 后台运行。public class/*类*/ HelloWorld/*类名*/{// 下面的就是 类的内容,别称 类体;类体又可分为 2 个内容: 字段 和 方法组成。注意!

2023-10-11 08:51:24 17

原创 寒假学习C语言第一天

学习C语言

2023-01-06 09:40:48 54

Java基础,5000+字可以一看

Java基础,5000+字可以一看

2023-10-27

圣诞树(1).dwg

圣诞树(1).dwg

2022-12-26

空空如也

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

TA关注的人

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