- 博客(78)
- 收藏
- 关注
原创 计网入门还没到放弃
但是返回的SYN+ACK报文也会有很多,这时客户端对比了很多的SYN+ACK报文,比如有n个SYN+ACK报文,那么客户端就会发送n-1个RST报文去让进服务端断开连接,只有最后一个是ACK报文。第三次挥手:服务端 -> 客户端,发送FIN报文,客户端接收到ack报文后进入FIN_WAIT2状态,服务端处理完数据后,发送FIN报文,进入LAST_ACK状态。ACK报文没有重发机制。第四次挥手,客户端向服务端发送ACK报文,同意服务端断开连接,服务端接收到ACK报文后,断开连接。
2024-06-25 03:58:45 831
原创 智能BI项目技术点总结
小于20MB:是否满足.xlsx:(成本要高一些):比如敏感内容,建议用第三方的审核功能。扩展点:接入腾讯云的图片万象数据审核(COS对象存储的审核功能)文件大小通过springboot自带的文件大小限制配置即可完成。文件后缀,不仅要满足使用截取后缀的方法来检查,还要通过检查文件的MIME类型,最后仍然要通过检验文件的内容来检查是否为符合的文件。
2024-06-24 00:49:58 424
原创 初见SpringCloud ing
服务注册:微服务在启动时,会将自己的信息(如 IP 地址、端口、服务名称等)注册到 Consul。服务发现:其他微服务可以通过 Consul 查询到已注册的服务,并通过这些信息进行通信。Consul 可以作为配置中心,管理分布式系统的配置。Spring Cloud Consul 可以将配置信息存储在 Consul 中,并在应用启动时或者运行时动态获取和更新这些配置信息。
2024-06-23 01:09:04 428
原创 Redis晋级之路!!
选择16384个槽位,而不是更多的槽位,主要原因是① 16384个槽位基本可以所有场景下的需求,这个数量的槽位可以满足1000个redis节点进行分配。作者认为一般不会超过1000个redis节点,如果超过1000个redis节点,会导致网络过于拥堵,网络也会难以管理。② 如果选择65536个槽位,每一次心跳包的消息头大小到达8KB的大小,发送的心跳包就太大了。③ 同时也是为了适应CRC16算法。
2024-06-20 14:52:22 492
原创 MySQL从放弃到疯狂
存储引擎常用的命令InnoDB是MySQL的默认事务性引擎,支持锁:行级锁、适合高并发操作索引:B+数索引、集群索引缓存:缓存数据和索引外键MyISAM是非事务性引擎,支持锁:表锁索引:B+树索引、全文索引缓存:只缓存索引不支持外键。
2024-06-18 00:22:59 484 1
原创 LeetCode esay mid 记录
0x555是十六进制数,转换为二进制为 0101 0101 0101。在2的幂的基础上,加上n%3==1的特性。推导过程可以结合官网部分观看。感觉一般也用不到 emmm。
2024-06-17 15:48:07 276
原创 Git从入门到放弃
Git是一个开源的分布式版本控制系统,专为高效、快速地处理各种规模的项目版本管理而设计。集中式版本控制系统SVN、CVS、VSS等,缺点是存在就单点故障问题,如果中心服务器崩溃,则无法正常使用,甚至导致数据丢失。分布式版本控制系统Git、Mercurial、Bazaar、Darcs等。
2024-06-08 22:52:46 767
原创 2024/4/19 2024/4/16 MySQL存储引擎
InnoDB和MyISAM在数据存储上也有很大的区别,InnoDB是将表数据和索引数据存放在同一个文件的,而MyISAM是将表数据和索引数据分开存储的,所以,InnoDB引擎B+树索引中的叶子结点存储的是索引和数据,MyISAM引擎B+树索引中的叶子结点存储的是索引和数据地址。char 是固定长度的字符串类型,它在数据库中占用固定的存储空间,无论实际存储的数据长度是多少,都会占用定义时指定的固定长度,如果实际存储的字符长度小于定义的长度,系统会自动填充为空格。MySQL缓存是不能替代redis的。
2024-04-19 14:37:35 430
原创 2024/4/19 2024/4/16 MySQL语法面试题
count(主键)是对主键值进行遍历,比count(1)多了遍历一个主键值,所以count(1)效果更好。delete是对数据的逻辑删除,drop是删除整表,truncate是删除表中所有数据。但是非主键可能有null值,所以可能结果会小于count(主键)的结果。count(*)相当于count(0),与count(1)的效率相同。count(主键)和 count(非主键)结果可能不同,也可能相同。内连接返回两个表匹配的行,外连接返回两个表匹配和不匹配的行。where是对连接之后的表的过滤条件。
2024-04-19 12:04:17 232
原创 2024/4/19 MySQL索引结构
如果查询语句的查询条件用了二级索引,但是查询的数据不是主键值,也不是二级索引值,这时在二级索引找到主键后,就需要回表才能查到数据,需要扫描两次B+树。在索引页中主要记录的是主键与页号,假设是主键id类型是bigint,那就是8字节,页号固定为4字节,那么索引页中一条数据也就是12byte,那么一个索引页可以存储 15 * 1024 / 12 ≈。叶子节点中存放的是真正的行数据,这个影响的因素就会多很多,比如字段的类型,字段的数量。我比较常用的是B+树索引,因为它是InnoDB引擎默认使用的索引类型,
2024-04-19 11:07:40 874
原创 2024/4/16 MySQL存储引擎
MySQL在更新数据的时候,MySQL为了保证事务的隔离性,是需要加锁的,而Redis更新操作都是不需要加锁的,还有MySQL为了保证事务的持久性,还需要刷盘redolog日志和binlog日志,Redis可以选择不持久化数据。char 是固定长度的字符串类型,它在数据库中占用固定的存储空间,无论实际存储的数据长度是多少,都会占用定义时指定的固定长度,如果实际存储的字符串长度小于定义的长度,系统会自动用空格填充。会基于查询成本的考虑,会判断每个索引的执行成本,从中选择查询成本最小的执行计划。
2024-04-16 17:30:55 590
原创 2024/4/16 MySQL语法面试题
drop 是删除表结构和表中所有的数据,truncate 是只删除表中所有的记录,表结构不会被删除,drop 和 truncate 删除的数据都是不可以回滚的,并且删除表会立即释放磁盘空间。而且,delete 删除数据只是给数据打上删除标签,目的是为了空间复用,所以delete删除数据后,磁盘大小不会缩减。count(主键) 是对主键进行遍历,相比于count(*)和count(1)多了一步读取主键值。内连接是只返回两个表匹配的数据行,外连接可以返回两个表匹配和不匹配的数据行。
2024-04-16 09:53:27 223
原创 数据结构复习
基础知识数据结构的三要素: 逻辑结构、物理结构、数据的运算逻辑结构:集合、线性结构、树形结构、图形或网状型结构物理结构(存储结构):顺序存储、链式存储、索引存储、散列存储数据的运算:施加在数据上的运算包括运算的定义和实现。运算的定义是针对逻辑结构的,指出运算的功能;运算的实现是针对存储结构的,指出运算的具体操作步骤。集合:结构中的数据元素之间除“同属一个集合”外,别无关系。线性关系:结构中的数据元素之间只存在一对一的关系。树形结构:结构中的数据元素存在一对多的关系。图状或网状结构:结构中
2022-07-24 14:11:25 314
原创 考研复试面试四选二内容
抖动产生的原因及解决方法抖动是指页面置换过程中出现的频繁缺页现象。主要是由于有些进程频繁访问的页面数目高于可用的物理页帧数。解决方法有:①局部置换策略:就是当缺页率很高的时候为该进程分配若干物理块,当缺页率低的时候适当的减少分配的物理块。②引入工作集算法:基于局部性原理,工作集使用最近访问过的页面来确定工作集。一般来说只要分配给进程的物理块数大于工作集就可以。DBMS 的功能① 数据库定义功能:提供数据描述语言,定义数据库的三级结构及其相互之间的映像,定义数据库的完整性、安全性控制等约束。②
2022-03-07 08:17:39 2754
转载 Java基础:函数式接口
函数式接口的介绍1. 如果一个接口中,只声明了一个抽象方法,则此接口就称为函数式接口。 我们可以在一个接口上使用 @FunctionalInterface 注解, 这样做可以检查它是否是一个函数式接口。 2.java内置的4大核心函数式接口 消费型接口 Consumer<T> void accept(T t) 供给型接口 Supplier<T> T get() 函数型接口 Function<T,R>
2021-06-24 18:26:09 102
原创 Java基础:Optional类和lambda表达式
Optional类:为了在程序中避免出现空指针异常而创建的。常用的方法:ofNullable(T t)orElse(T t)Optional.of(T t) : 创建一个 Optional 实例,t必须非空;Optional.empty() : 创建一个空的 Optional 实例Optional.ofNullable(T t):t可以为nullOptional.of(对象):对象不能为空 public void test1(){ Girl girl = new
2021-06-24 18:11:46 924 1
原创 Java基础:反射
反射的概述Reflection是被视为动态语言的关键,反射机制允许程序在执行期间,借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性和方法。加载完类后,产生一个class类型的对象,包含完整的类的结果信息。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为:反射动态语言:Object-C,C#,JavaScript,PHP,Pyehon,静态语言:Java,C,C++Java反射机制提供的功能: 1.运行时判断任意
2021-06-24 17:13:26 127
原创 Java基础:网络编程
网络编程的概述计算机网络:将各个网络连接起来网络编程的目的:直接或间接地通过网络协议与其他计算机实现数据交换,进行通讯通信双方地址:1.IP 2.端口号 一定的规则: 1.OSI模型 2.TCP/IP模型Ip地址:唯一表示一台主机Java中使用InetAddress类代表IPIPV4 和 IPV6 IPV4 : 四个字节组成 IPV6: 十六个字节组成域名:www.baidu.com
2021-06-23 21:59:57 101
原创 Java基础:I/O流
File的构造器1.File file = new File("hello.txt");2.File file2 = new File(parent路径,child路径);例如:new File("Z:\\code_file","Idea_2019_3.5");3.File file3 = new File(file2,"hello.txt");File类的常用方法File file = new File("hello.txt");//getAbsolutePath():获取绝对路径f
2021-06-23 21:45:09 194
原创 Java基础:泛型
泛型为什么要使用泛型?防止了,在类型转换时发生类型转换异常的错误。泛型的使用//包装类的泛型使用ArrayList<Integer> list = new ArrayList<>();通配符在泛型中的使用 //通配符的使用 List<Object> list1 = null; List<String> list2 = null; //通配符:? //List<
2021-06-23 19:31:54 104
原创 Java基础:集合
数组数组的特点1、一旦初始化后,其长度就确定了。2、一旦定义好数组后,其元素的类型也就确定了。我们就只能操作指定类型的数据了。—>比如:String[] arr ; int[] arr1;数组的缺点1、一旦建立,长度就不可更改2、数组中提供的方法非常有限,对于添加、删除、插入数据等操作,非常不便。3、获取数组中实际元素的个数的需求,数组没有现成的属性或方法可用。4、数组存储数据的特点:有序、可重复,对于无序、不可重复的需求,不能满足。集合框架 | --
2021-05-24 13:29:13 114
转载 Java基础:注解
注解的说明1、Annotation 其实就是代码里的特殊标记, 这些标记可以在编译, 类加载, 运行时被读取, 并执行相应的处理。通过使用 Annotation,程序员可以在不改变原有逻辑的情况下, 在源文件中嵌入一些补充信息。2、在JavaSE中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等。在JavaEE/Android中注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替JavaEE旧版中所遗留的繁冗代码和XML配置等。3、Annocation的使用示例示例一:生成文档相关的
2021-05-19 20:47:02 110
原创 Java基础:枚举类
以前的枚举类class Season{ private final String seasonName; private final String seasonDesc; private Season(String seasonName,String seasonDesc){ this.seasonName = seasonName; this.seasonDesc = seasonDesc; } public static fi
2021-05-19 20:09:45 97
转载 Java基础: System、Math、BigInteger、BigDecimal
System String javaVersion = System.getProperty("java.version"); System.out.println("java的version:" + javaVersion); String javaHome = System.getProperty("java.home"); System.out.println("java的home:" + javaHome); String osN
2021-05-19 19:58:00 102
原创 Java基础:比较器
自然排序class day21_22 implements Comparable { private String name; private double price; public day21_22() { } public String getName() { return name; } public void setName(String name) { this.name = name; }
2021-05-19 19:48:32 93
原创 Java基础:时间类的使用
时间类Date类 /* System.currentTimeMillis():返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。称为时间戳 */ System.out.println(System.currentTimeMillis()); /* Date类 */ //java.util.Date Date utildate = new Date(); Date utildate2
2021-05-19 19:46:19 344
原创 Java基础:String类的使用
对于String的说明 1.String类:声明为final的,不可被继承的 2.String实现了Serializable接口,表示字符串是支持序列化的 实现了Comparable接口,表示可以比较大小 3.String内部定义了final char[] value用来存储字符信息 4.String:代表不可变的字符序列。简称:不可变性 重新赋值时,只是改变了地址值,有一个新的数值 ⭐5.通过字面量的方式直接赋值,数据放在常量区内。 ⭐
2021-05-19 18:22:21 151
原创 Java基础:多线程
多线程的创建方式(4种方法)1. 继承Thread类//main public static void main(String[] args) { //多线程的创建方式 1 : extends Thread MyThread1 myThread1 = new MyThread1(); myThread1.start(); }//线程public class MyThread1 extends Thread{ @Override
2021-05-19 18:02:52 206
原创 Java面向对象
面向对象的内容框架1.类和类的成员:属性、方法、构造器、代码块、内部类2.面向对象的三大特征:封装性、继承性、多态性3.其他关键字:this、super、static、abstract、interface、import等什么是面向对象?面向过程(POP)与面向对象(OOP) 两者都是一种思想,面向对象是相对于过程而言的。 面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做。 面向对象,将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。类和类的成员类(cl
2021-05-14 13:50:45 215 1
原创 5(栈的应用)迷宫求解
#include<stdio.h>#include<stdlib.h>#include<string.h>#define Max 100typedef struct { int row, col; int data; int di;//方向 1右 2下 3左 4上 int printFeet;//是否走过 0没走过 1走}MazeNode;typedef struct { MazeNode data[Max]; int top;}Sta
2021-04-30 15:41:52 203 1
原创 5 (栈的应用)行编辑系统
#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct { char data[100]; int top = -1;}Stack;bool isEmpty(Stack s) { if (s.top == -1) return true; return false;}bool overflow(Stack s) { if (s.top == 99) return t
2021-04-27 10:56:24 157
原创 5 (栈的应用)括号匹配
#include<stdio.h>#include<stdlib.h>#include<string.h>typedef struct { char data[100]; int top = -1;}Stack;bool isEmpty(Stack s) { if (s.top == -1) return true; return false;}bool overflow(Stack s) { if (s.top == 99) return t
2021-04-27 10:26:37 82
原创 0 简答题
一 顺序表和链表的比较1、存取(读写)方式:顺序表可以顺序存取,也可以随机存取,链表只能从表头顺序存取元素。例如在第i个位置上执行存或取的操作,顺序表仅需一次访问,而链表则需从表头开始依次访问i次。2、逻辑结构与物理站构:采用顺序存储时,逻辑上相邻的元素,对应的物理存储位置也相邻。而采用链式存储时,逻辑上相邻的元素,物理存储位置不一定相邻,对应的逻辑关系是通过指针链接来表示的。3、查找、插入和删除操作:对于按值查找,顺序表无序时,两者的时间复杂度均为 O(n)∶ 顺序表有序时,可采用折半查找,此时的
2021-04-27 09:59:59 198
原创 5 栈
栈(stack):是只允许在一段进行插入或删除操作的线性表。首先,栈是一种线性表,但限定这种线性表只能在某一段进行插入和删除操作。栈顶(Top):线性表允许进行插入删除的那一段。栈底(Bottom):固定的,不进行插入和删除的另一端。后进先出(Last In First Out,LIFO)卡特兰数(Catalan)栈数据结构typedef struct { char elem[stack_size]; int top;}seqStack;初始化void initStack(seq
2021-04-27 09:59:43 79
原创 5 *进制转换为*进制(c语言实现)
前言进制转换一共有12种,需要手写的进制转换只有6种,即转为10进制和10进制转为进制,其他6种可以用前面6种转换而来。所以,我们应该熟练掌握前6种进制转换。代码实现#include<stdio.h>#include<stdlib.h>#include<string.h>int conversion2to10(int BIN[], int BINlen);char *conversion2to16(int BIN[], int BINlen, int
2021-04-27 09:58:43 349
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人