- 博客(41)
- 收藏
- 关注
原创 每日一题——贪心算法
这道题目乍一看可能没有什么头绪,但是当你仔细想想就会明白一个道理,那就是,《论电子支付的重要性》哈哈哈哈,言归正传,其实很简单无非就是找钱,因为他只会给你5块10块和20块吗,也就是说你的找钱零钱就只有5块和10块,所以你就设置一个遍历,然后判断他给你的是那种情况,然后找钱就完事了,如果是5块,那你不用找钱,只需要five++就完事了,如果是10块那就是给他五块你自己ten++,要是20就有两种情况了,一个是给他一个10块一个五块,但是你还可以给他3张五块,就这么简单。这样一看就清晰明了多了。
2024-08-15 17:28:13
1318
2
原创 每日一题-贪心算法
这个题目一开始肯定是会懵,就比如说一开始先跳几步,之后再怎么跳,其实我们就可以用最大范围来算就行了,用局部最优推出全局最优。这道题目比上一道难不少,主要就是你需要计算那个最少跳跃数,
2024-08-15 17:26:05
1746
原创 每日一题——贪心算法
一开始有点理解错他的意思,以为是i是题目中会给出,所以一开始没有什么思路,然后当看了题解之后,就知道了原来i是自己订的,到时候自己找就可以,我的思路是,先按照绝对值的大小给他排列出来,然后给他遍历,负数就给他变成正数,当没负数的时候,再变小的正数,这就是贪心的思想由局部最小推出整体最小!该题的思路就是分两种情况,就是先从左往右比,如果右边的数比左边的大就加一,然后就反过来遍历,如果左边的数比右边的数大就加一;
2024-08-02 19:28:41
2403
原创 《MySQL是怎样运行的》快速查询秘籍——B+树索引
我们前面知道页与页之间是一个双向链表实现的,我们要找的话,是不是要按照这个链表一个一个找下去,然后找到,可行吗?B+树是多叉树,平衡二叉树、红黑树是二叉树,在同等数据量下,平衡二叉树、红黑树高度更高,磁盘O次数更多,性能更差,而且它们会频繁执行再平衡过程,来保证树形结构平衡。record_type:这个就是表示记录得类型,0表示普通记录,2表示Infimum记录,3表示Supermum记录,1表是就是目录项记录。最上面的节点叫做根节点,然后最下面的叫做叶子节点,中间的叫做非叶子节点。
2024-05-23 13:50:08
972
原创 《MySQL怎样运行的》—InnoDB数据页结构
在上一篇文章中我们讲了,InnoDB的数据页是InnoDB管理存储空间的基本单位,一个页的大小基本为16kb那你有没有疑问,就是说这个InnoDB的数据页的结构是什么样的,还有他这些结构分别有那些功能~接下来我们一一讲解。
2024-05-21 19:51:38
1401
原创 《MySQL怎样运行的》-从一条记录说起-InnoDB记录存储结构
我们都知道MySQL是用来存储数据的,那你有没有的疑问,他是怎么存储的,它实际上是在使用储存引擎,那如果有人问你MySQL的储存引擎有哪些你该怎么说呢,主要是有InnoDB,MyISAM还有MEMORY,后面两种在这里没有过多叙述,我们就来细说一下InnoDB这个储存引擎,我们知道数据存储在硬盘和磁盘里,如果我们想要在数据库里面拿出来,那我们还需不需要和云盘和磁盘打交道,但是这样太慢了,所以InnoDB就创建了页,将数据划分为若干个页,用页来磁盘与内存之间交互的基本单位。页的大小一般为16kb。
2024-05-21 14:25:16
1023
原创 《MySQL》是怎样运行的-第一部分
第一到三章讲的是让只会写SQL的小白重新审视MySQL到底是一个什么样的东西,然后介绍MySQL的服务器程序和客户端程序有哪些,启动选项和系统变量以及字符串之类的事情。从一条记录说起——InnoDB记录存储结构里面的思想。下一篇文章我们来说第四章。
2024-05-21 13:17:48
135
原创 《MySQL是怎样运行的》
明天我会开始更新,阅读的《MySQL是怎样运行的》这本书的笔记,这本书我我读到了第八章,真的特别好,明天会更新一下我读这本书前面章节的笔记~
2024-05-20 21:28:39
279
原创 每日一题-二叉树
这道题还是比较难得我觉得,先来说说做法,他不是有中序和后序吗,我们可以根据后序最后一个元素,找到他的根,然后再在中序上找到他得左右分别有多少哥元素,这个样递归得时候,参数就搞定了,就是先定义一个方法,参数就为这两个数组,然后是最左边和最右边,先排null,如果右边小于左边就直接返回null,然后就找这个根,找到之后就是找到左边得个数,然后递归就OK了。在之前加上root1.val为两者相加即可。
2024-03-21 11:19:01
303
原创 网络体系结构
接下来就要进行计算机网络的学习,这也是我学习计算机网络的一个学习笔记,让我们开始学习上面那一张图是我们在学习计算机网络的时候的重点知识,今天的我学习了网络体系结构其中包括TCP/IP网络模型这是一个重点,然后还有OSI网络模型这也是一个重点,首先我会先介绍一下他们各自是什么;然后有几个比较重要的问题,为什么要设计分层网络模型,这两个模型各自有多少层,每一层的作用与顺序关系,这两个模型的差异点和共同点,ok重难点知道了之后让我记录一下今天的成果。
2024-03-20 10:04:42
1180
原创 每日一题——二叉树
这道题还是有点难度的,但是我感觉可以这样做,先设置一个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
258
原创 每日一题——二叉树
这道题有点复杂了就,我们要创建一个方法之前,先创建一个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
409
原创 计算机网络——HTTP
不一定,要看实际的GET请求,如果开发者是遵守规范,而且GET请求是用获取数据,就是安全且幂等的,如果GET请求是新增数据的话就不是安全且幂等的,举个例子就是如果你要实现的GET方法里是一个数据库记录的话,就要进行多次GET方法,也就是插入多个记录。3.GET请求的请求参数存放在URL中,但是浏览器对URL的长度有限制,所以导致了URL对GET请求的请求参数也有限制,但是POST的请求参数存放在请求体中,所以是没有限制的。请求行与请求头他是用\r\n来分割的,请求头和请求体是用空格来分割的。
2024-03-19 14:35:24
456
原创 并发安全容器
先来说一下他的实现原理,再jdk1.7以前时,他是使用分段数组+链表的形式,他是使用Segment数组和hashEntry数组来实现的。然后它也具有可重入锁的性质。前面不是说一个ConcurrentHashMap里面有一个Segment吗,这个Segment的个数一旦被初始化就无法改变了,默认的数量就为16个也就是说可以默认16个数组并发写。然后原理的话,就是他把那些数据分成一段段的(这个段就是Segment),然后给每一段数据配上一把锁,当一个线程占用锁去访问这段数据的时候,其他数据也能访问。
2024-03-05 12:38:34
394
原创 Java原子类和并发工具类
他的全称是compare and swap,比较并且交换,所以他是相当于通过一个原子操作,经过读取内存,比较数据,交换数据这个三个步骤,本质上是CPU指令的支撑CAS机制不是读取内存比较数据,交换数据吗,如果假如说这个数据是A,然后他变为了B,然后又变为了A,CAS他是检查不到的,但是他其实是变化了的,在某些场景可能问题不是很大,但是在有的场景中却容易出现问题。
2024-03-05 12:37:56
429
原创 Java并发编程——锁
可重入锁的意思就是自己可以获得自己的内部锁,比说就是一个线程去获取到另一个对象中的锁,如果该锁没有释放的话,我们可以等下一次来的时候再获取该对象的锁,如果没有可重入性,那么就会造成死锁。同一个线程每获取到锁,锁的计数器就会加1,等到计数器为0的时候,他就会释放。
2024-03-04 10:47:33
541
原创 Java并发编程基础
对于Java来说,咱运行一段Java程序就是一个段进程。在一段进程中,我们可以创建多个线程,每一个线程都有自己独立的属性和本地内存。对于操作系统来讲,进程是操作系统分配资源的基本单位,线程是操作系统调度资源的基本单位。ThreadLocal是一个线程变量,对于ThreadLocal填充的变量来说,它只属于当前线程,也就是说对于其他线程来说他是独立的,ThreadLocal给其他线程也创立了副本内存空间。
2024-03-03 15:27:23
759
原创 Java并发编程理论基础
Java的内存模型简称JMM,他可以让线程对共享变量的改变使另外的线程可见,它还可以表示线程与内存之间的抽象关系,线程之间的共享变量存储在主内存中,对其中一个线程更改共享变量时,对存储在本地内存中,但是本地内存时JMM的一个抽象概念,并不真实存在。
2024-03-03 11:03:56
546
原创 集合总体复习
LinkedHashMap是HashMap的子类,底层使用双向链表来维护元素的插入顺序,当他遍历的时候就为该顺序,此顺序可以为元素的插入顺序也能为最近最少使用顺序(LRU),put,get,remove都为使用顺序,这样的话就能实现淘汰机制与内存管理,释放那些不经常访问的元素。
2024-03-02 10:14:46
1562
原创 集合复习补充
LinkedHashMap是HashMap的子类,底层使用双向链表来维护元素的插入顺序,当他遍历的时候就为该顺序,此顺序可以为元素的插入顺序也能为最近最少使用顺序(LRU),put,get,remove都为使用顺序,这样的话就能实现淘汰机制与内存管理,释放那些不经常访问的元素。
2024-03-02 10:13:53
351
原创 Java集合复习
获取数据时,也就是get方法,用hash(k)获取到hash值,然后结合长度获得数组下标,然后利用数组下标,按顺序遍历,利用equals方法比较获取v值。
2024-03-01 20:00:21
455
1
原创 MySQL自己梳理
按照数据结构分类分为 B+树类型,hash类型,full-text类型按照物理存储分为 聚簇类型和非聚簇类型按照字段特性分为 前缀索引,唯一索引,普通索引和主键索引按照字段个数分为 单列索引和联合索引B+树因为红黑树的书高而B+树的书高最多三四层,便于查询等操作1.B+树的非叶子节点存放的是索引数据,而B树的非叶子节点存放的是数据和索引数据,所以B+树的非叶子节点存放的索引数据就会更多,有利于他查询2.B+树的冗余节点比较多,所以在增删改等操作效率比较高3.B+树的叶子节点使用的是链表,所以在查询的时候就比
2023-12-04 19:23:19
108
原创 MySQL自己梳理
还有就是他们的性能上,我认为大部分情况下varchar的性能大于char因为char在存储时会用空格填充,所以就会性能降低,也不是绝对的,因为char的空格填充在分页,断页等情况下也是起大作用的,而用varchar就是导致性能降低。这个两个的区别还是挺大的,在内存储存上,InnoDB将数据和索引数据存放在一块,而MyISAM是将这两个分开放的,同时InnoDB的B+树的叶子节点储存的是数据和索引数据,而MyISAM储存的是数据地址和索引数据。普通索引的索引行是可以重复的,而唯一索引的索引行是不可以重复的。
2023-12-04 19:22:37
90
原创 MySQL基础
这部分就是为我之前学的MySQL也就是sql语法,做一个笔记让我们拭目以待1.基本的select语句2.运算符与排序和分页3.多表查询4.单行函数5.聚合函数6.子查询7.创建表和管理表8.约束。
2023-12-03 19:12:24
122
1
原创 每日一题字符串篇
这个题目的思路是就是创建一个临时的变量,然后用双指针进行交换不难。注意i++和++i的区别,i++是先用再加,而++i是先加再用。这个和上面其实差不多。
2023-11-26 15:25:34
100
1
原创 每日一题数组篇
什么叫做滑动窗口,他的意思的要找到最小的子数组,也就是咱可以定义两个指针在起始位置,然后在利用for循环来移动其中一个指针就比如说right吧另一个就是left,然后定义一个sum来计算总和,然后咱不是说要返回长度吗 而且还是最短的,所以咱就要在for循环之前定义个result它等于最大的数,然后就在,当sum>=target的时候,比较result和两个指针之间的长度,然后返回一个短的了,然后sum=sum-nums【left++】;然后如果减完之后他还大,那就继续比较,写一遍就明白了。
2023-11-26 15:24:43
110
1
原创 Java多线程
并发就是比如说你在打球的时候,有点渴了,然后喝了点水,这是不是你停止打球之后喝的水,虽然很快,看似是“同时进行”,其实是分开的,所以并发就是个样。所谓进程就是,一段程序的运行过程,当程序开始运行的时候,操作系统会为其开辟一个内存空间,,他也有自己的生命周期,有开始,运行和结束。线程同步的理解其实就是,有三个人在吃饭,只有一个叉子,当你用的时候,另外两个人就不能用了,这就是同步。yield方法是礼让,意思就是一开始cpu正在执行该线程,然后用了这个方法之后,让其他线程执行。
2023-11-12 18:58:44
59
1
原创 JavaIO流
接下来我们说一下流与文件的关系,比如说我买了个快递,是不是快递小哥要送到我手里,我要退货是不是快递小哥退到快递中心,这个快递小哥就是流,而我和快递中心就是文件和Java程序。打个比方,你和喝水的话,水流到你的肚子里面,是输入,你把水吐出来是输出。从Java程序到文件是输出流,从文件到Java程序是输入流。刚刚在上面我们不是说了输入流和输出流是什么嘛。o指的就是outputstream。I指的就是inputstream。我们这样的话就是覆盖,原有内容。什么是输入流什么是输出流。另一种是用数组,多个字节。
2023-11-12 18:56:08
88
1
原创 Java集合(重要一万六千字)
集合他和数组差不多,但是他比数组好用太多了,就比如说数组你只能制定长度,长度满了以后,你就不能再添加 了,或者说如果你再添加,你就只能再创建一个数组然后将数组复制过去(利用for循环)好处就是,可以动态变化,然后可以有特定的方法增删改查。比较方便1.list集合他的存入和取出的顺序其实是一致的,并且是可以重复的2.每个元素都有其对应的顺序索引,他是支持索引的3.list的实现子类其实有很多,我们之前只是展示了其中很少的一部分由此可见他是不包含5的也就是他是不包含toIndex完整代码在这。
2023-11-04 15:30:06
109
1
原创 Java常用类
然后就是第二中方式,new对象,我们之前讲过new创建对象的时候是在堆里面开辟一个空间,然后首先他会找value属性让他在常量池里面找有没有hsp的地址值,有的话拿过来,没有的话就创建,然后main就创建一个s2储存堆value的地址值。第二个我们刚刚讲过了,他是直接赋值,然后a在常量池里创建了地址值,然后b再赋值的时候,先再常量池里面找,常量池里面有他就不用再创建,所以就地址值相同。StringBuffer他和String一样,但是他的内容是可以增删的,他的长度是可变的,他是一个容器。
2023-11-04 15:27:22
92
1
原创 Java异常
System.out.println("我能编译出来");这样一段代码就可以将我们引入什么叫做异常,咱们看,代码出现异常ArithmeticException,然后后面的代码就没有编译出来,这就是异常在以后的实际开发中,开发一个软件可能会有成百上千的文件,但是因为这种微不足道的异常就让系统奔溃,是不是非常不现实,所以就出现了Java设计者的想法,异常捕获机制,try-catch我们来演示一下,还是那段代码,也就是选中代码块,然后按住快捷键Ctrl-alt-T 然后选中6try--catch。
2023-11-04 15:26:37
75
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
54
1
原创 Java面向对象
构造器其实是一种特殊的方法,他有空参构造,和有参构造两种,下面写一段代码来看一下就可以啦这就是构造器也就做构造方法多态分为行为多态和对象多态,多态是继承,在实现下的一种情况比如说teacher和student都是people的子类也是说,当父类变量接受子类对象的时候,这就叫做对象多态,p1与p2都是people类型,但是p1与p2都是指的对象不同,这种现象叫做对象多态。都可以调用run方法,但是两个run方法的行为不一样,这种现象叫做,行为多态。
2023-10-30 13:46:51
100
1
原创 Java基础--万字细节
统一码(Unicode),也叫万国码、单一码,由统一码联盟开发,是计算机科学领域里的一项业界标准,包括字符集编码方案等。统一码是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。可以用idea编写一段程序来看一下;编写一段程序找出‘你’’我‘’他‘在Unicode中的位置char ni = '你';char wo = '我';char ta = '他';
2023-10-27 20:23:24
284
1
原创 String Class - StringBuffer 和 StringBuilder - Java
前言StringBuffer 、 StringBuilder、 String 是三种数据类型首先来回顾下String类的特点:任何的字符串常量都是String对象,而且String的常量一旦声明不可改变,如果改变对象内容,改变的是其引用的指向而已。通常来讲String的操作比较简单,但是由于String的不可更改特性,为了方便字符串的修改,提供StringBuffer和StringBuilder类。
2023-10-12 19:45:49
69
原创 String Class - 字符串类型 - 下半部分
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考。
2023-10-12 07:00:00
254
原创 String Class - 字符串类型 - 上半部分讲解
在Java中,new String类型数据的时候,是不会存在内存重叠的情况,在Java中,字符串是一个对象,而我们new String 对象时,是产生一个新的对象,如果产生的对象是一样的,那还叫新对象?如果是引用类型变量之间的比较,且使用双等号来比较的话,比较的就是引用变量存储的地址。如果调用是引用类型的数据,就需要注意,调用者不能空引用/空指针。例题2: 将例题1中的 str,重新赋值会不会影响 str2的输出结果?数组的整体赋值 ,在Java中,只有一次机会,就是在定义数组的时候。
2023-10-11 09:25:51
120
原创 初识 Java
之前已经学习了一段时间的Java,想到要创建一个笔记,来让我们回忆一下之前学习的内容提示:以下是本篇文章正文内容,下面案例可供参考我的意思并不是说 Java就是世界上最好的语言,只是说我更加偏爱Java,不然也不会学,对吧。每个语言都是它的特性,Python 处理数据,C 处理底层代码,Java 后台运行。public class/*类*/ HelloWorld/*类名*/{// 下面的就是 类的内容,别称 类体;类体又可分为 2 个内容: 字段 和 方法组成。注意!
2023-10-11 08:51:24
124
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅