毕业前
文章平均质量分 76
学生时期的一些文章,多数是阅读书籍、博客的总结。
Clay小志
目前还是一个计算机小白。
展开
-
计算机网络-拥塞控制/HTTP/URL
滑动窗口和流量控制 TCP利用滑动窗口实现流量控制,流量控制就是为了控制发送方发送速率,保证接收方来得及接收。接收方发送的确认报文中的窗口字段可以来控制发送方窗口大小,从而影响发送方的发送速率,将窗口字段设置为0,则发送方不能发送数据。流量控制是端到端的问题。拥塞控制 在某段时间内,对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况叫拥塞。拥塞控制就是为了防止过多的数据注入网络,使得网络中的路由器或者链路不致过载。前提是网络能够承受现有的网络负荷。拥塞控制是全局问题,原创 2021-07-18 14:58:49 · 946 阅读 · 1 评论 -
计算机网络-三次握手/四次挥手/可靠传输/ARQ协议
计算机网络TCP三次握手(同步SYN 确认ACK)发送端 —SYN标志的数据报 seq=x—>接收端 (SYN=1)发送端<—SYN/ACK标志的数据报 seq = y ack=x+1—接收端 (SYN=1 ACK=1)发送端—ACK标志的数据报 seq=x+1 ack=y+1—>接收端 (ACK=1)SYN=1而ACK=0,表明这是一条请求连接报文,对方同意连接应在响应报文段设置SYN=1 ACK=1. SYN=1就表示这是一个连接请求或者连接接受报文,只有ACK=1时原创 2021-07-17 11:36:53 · 407 阅读 · 1 评论 -
计算机网络-网络结构
计算机网络三种网络结构OSI:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层TCP/IP:网络接口层、网际层、传输层、应用层五层:物理层、数据链路层、网络层、传输层、应用层应用层 它的任务是通过应用进程间的交互来完成特定网络应用,应用层协议定义的时应用进程间的通信和交互规则,对于不同的网络应用需要不同的应用层协议,应用层交互的数据单元称为报文。应用层协议应当定义:应用进程交换的报文类型,如请求报文、响应报文各种报文类型的语法,如各个字段及其详细描述字段的语原创 2021-07-14 17:28:06 · 1158 阅读 · 0 评论 -
MySQL-select
select检索检索单个列select 列名 from table_name;# mysql 没有要求必须加分号,但加上没有坏处# sql语句不区分大小写,一般sql关键字大写,对所有的自己命名小写,便于阅读和理解。所有空格会被忽略,可以在一行,也可以在多行。检索多个列select 列名1,列名2,。。from table_name;# 除了最后一个列名后不加逗号,其余列名后加逗号。# sql语句一般返回原始、无格式的数据,这些是表示问题,不是检索问题。检索所有列sel原创 2021-07-21 10:33:41 · 416 阅读 · 0 评论 -
MarkDown常用语法学习
推荐编辑器:TyporaTypora官网也可以使用VSCode加插件写MarkDown。常用的语法如下:一级标题 # 一级标题二级标题 ## 二级标题三级标题### 三级标题四级标题#### 四级标题五级标题##### 五级标题六级标题###### 六级标题引用> 空格分割线---或者***图片![名称]()括号内路径可以是本地路径,也可以是在线路径。超链接[名称]()括号内放链接地址列表有序1.+空格+内容2.+空格+内容无序- 空原创 2020-05-20 09:45:34 · 127 阅读 · 0 评论 -
算法初识
算法定义:算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。特性:输入、输出、有穷性、确定性和可行性。输入输出:算法应具有零个或者多个输入,至少有一个或者多个输出,可以是打印输出,也可以是返回一个或者多个值。有穷性:是指算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每个步骤在可以接受的时间内完成。确定性:算法的每一步骤都具有确定的含义,不会出现二义性。在一定条件下,算法只有一条执行路径,相同的输入只能有唯一的输出结果。可行性:算法原创 2020-09-28 21:47:36 · 253 阅读 · 0 评论 -
C/C++编译过程学习记录
说来惭愧,我是一个二本院校的软件工程专业毕业的学生,到现在仿佛什么都还不会。对于大一下学期学的C语言,基础东西还有很多都不会,有些东西也许之前学过,但是我都忘记了。今天忽然看到桌子上的《C Primer Plus》,就拿起来翻了一会儿。翻了十多页,发现整天说的编译-链接-运行,我并不太清楚它这个过程做了什么,只知道编译成机器语言生成目标文件,再链接成可执行文件,反正每次写完源代码后就是一通点...原创 2020-03-29 15:59:07 · 104 阅读 · 0 评论 -
Vue安装axios后页面空白问题
问题 在使用npm install axios安装了axios,并在main.js中配置完成之后,启动Vue项目,访问页面为空白,查看页面元素,控制台报红TypeError: setting getter-only property "$axios",在参考某篇文章之后解决问题。解决1.安装 vue-cli2和vue-cli3和4安装方法还不一样,我使用的是vue-cli4.3.1,应使用npm add axios,vue-cli2.0使用的是npm install axios。2. 配置(我原创 2020-05-15 10:25:27 · 3175 阅读 · 1 评论 -
栈与队列初识
栈与队列栈栈是限定仅在表尾进行插入和删除操作的线性表。(撤销、后退功能常用结构)允许插入和删除的一端称为栈顶,也是表尾,另一端称为栈底,没有数据元素称为空栈,栈成为后进先出的线性表,LIFO结构。栈元素具有线性关系,即前驱后继关系。栈的插入操作,叫进栈、压栈、入栈;删除操作,叫出栈、弹栈。栈的抽象数据类型ADT 栈(Stack)// 理论上线性表的操作特性它都具备Data 同线性表,元素具有相同的类型,相邻元素具有前驱和后继关系。Operation InitStac原创 2020-10-09 22:10:56 · 476 阅读 · 0 评论 -
数据结构初识
基本概念数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。数据结构:是相互之间存在一种或者多种特定关系的数据元素集合。数据:是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合,包括数值、字符、声音、图像等等。数值等可以进行处理,而字符数据就需要进行非数值的处理,声音、图像、视频等也可以通过编码变成字符数据来处理。数据元素:是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理,也称为记录。例如人类中原创 2020-09-27 20:57:28 · 339 阅读 · 0 评论 -
Manjaro内存不足解决记录
1.Linux虚拟机 最近在家闲得没事做,就使用VMware装了一个linux虚拟机,虽然之前装过许多linux发行版的虚拟机,也装过win10+Deepin双系统,但是从来没具体了解过,也从来用来学习过。这次由于电脑上有很多开发环境,还有目前正在进行的项目,不敢去折腾双系统,万一像上次一样搞崩了就完了。想体验一下Linux的朋友也可以尝试一下,现在Linux也有很多漂亮友好的图形界面(毕竟...原创 2020-03-29 12:56:19 · 2858 阅读 · 2 评论 -
了解消息队列
消息队列什么是消息队列消息队列(Message Queue)是一种进程间通信或者同一进程的不同线程间的通信方式。消息:就是要传输的数据。队列:是一种先进先出的数据结构,用来存放消息。消息队列的模型如下:生产者:产生数据的单位消费者:消费数据的单位消息队列的两种模式点对点队列模型它允许多个生产者往同一队列发送消息,但是多个消费者是竞争关系,一条消息只能被其中一个消费者收到处理,而后删除。发布订阅模型队列模型无法给每个消费者一份消息,并且如果为每个消费者创建一个全量消息队列,会将每份原创 2021-07-24 16:27:43 · 179 阅读 · 0 评论 -
线性表初识
定义 零个或者多个数据元素的有限序列。是数据结构中最常用最简单的一种结构。元素是有顺序的,并且是有限个,若有多个元素,第一个元素无前驱,最后一个无后继,其他每个元素都有且只有一个前驱和后继。线性表的抽象数据类型ADT 线性表(List)Data 线性表的数据对象集合为{a1,a2,…an},每个元素的类型均为DataType。其中除了第一个元素外,每个元素有且只有一个直接前驱元素,除了最后一个元素外,每一个元素有且只有一个直接后继元素。数据元素之间的关系是**一对一的关系。**对于不同的应用原创 2020-10-07 18:03:58 · 315 阅读 · 0 评论 -
JavaWeb-Servlet/HTTP
JavaWeb-ServletServlet是JavaEE规范之一,也就是接口,是JavaEE的三大组件之一(Servlet程序、Filter过滤器、Listener监听器),它是运行在服务器上的Java小程序,它接收客户端发送过来的请求,并响应数据给客户端创建Servlet程序编写一个类实现Servlet的接口实现Servlet方法,处理请求,并响应数据web.xml配置Servlet程序的访问地址<!--Servlet标签给Tomcat配置Servlet程序--&g原创 2021-08-04 16:09:37 · 134 阅读 · 0 评论 -
JavaWeb-Tomcat
JavaWeb-TomcatJavaWeb是基于请求和响应来开发的。请求:客户端给服务器发送数据,Request响应:服务器给客户端回传数据,ResponseWeb资源分类静态:html、css、js、txt、MP4视频、jpg等动态:jsp页面、Servlet程序常用的Web服务器Tomcat:轻量级JavaWeb容器,当前应用最广的服务器,免费Jboss:开源的纯Java的EJB服务器,支持所有JavaEE规范GlassFish:收费Resin:应用较原创 2021-08-03 14:25:44 · 69 阅读 · 0 评论 -
面向对象复习二
面向对象编程中级IntelliJ IDEA以项目的概念管理源码,运行之后会产生out文件夹,将编译后的class文件存储在out文件夹快捷键删除当前行,自定义:ctrl + D复制当前行,自定义:crtl+alt+向下代码补全:alt+/注释:ctrl+/导入该行需要的类,先配置auto import再alt+enter快速格式化代码:ctrl+alt+L快速运行程序 自定义:alt+R生成构造方法:alt+insert查看一个类的层级关系:ctrl + H将光标放在一个方法上,原创 2021-07-13 14:26:42 · 107 阅读 · 0 评论 -
Java的数组学习记录
数组数组:是相同类型数据的有序集合,描述的是相同类型的若干个数据,按照一定先后顺序排列组合而成,可以通过下标来访问数组元素,下标从0开始。声明:dataType[] arrays;或者dataType array[];首选第一种创建:dataType[] arrays = new dataType[arraySize]获取数组长度:arrays.length依然满足 类型 变量名 = 变量值Java内存分析堆:存放new的对象和数组,可以被所有线程共享,不会存放别的对原创 2020-05-23 20:04:26 · 182 阅读 · 0 评论 -
JDK环境变量配置记录
写这篇文章呢只是为了以后再配Java环境的时候不去搜索环境搭建教程,虽然大学到现在我已经配过n次了,但是我还是记不住。趁这次搭建环境干脆记录一下好了。设备Windows10环境准备1.首先到该网站https://www.oracle.com/java/technologies/javase-downloads.html,注意区分JDK和OpenJDK,我的JDK是jdk1.8.0_...原创 2020-04-21 17:17:01 · 117 阅读 · 0 评论 -
接口/抽象类
Interface&Abstract Class抽象类-类的抽象,用来捕捉子类的通用特性的,包括属性和形为如果一个类中没有包含足够的信息描绘一个具体的对象,这样的类就是抽象类。普通类是一个完善的功能类,可以直接实例化对象,而抽象类不能,但是类的其他功能能依然存在成员变量、成员方法和构造方法(主要供子类调用)的访问方式和普通类一样。由于抽象类不能被实例化,所以抽象类必须被继承才能使用,所以要在设计阶段决定要不要设计抽象类。抽象类不一定有抽象方法,但是包含抽象方法一定要是抽象类通过abst原创 2021-07-07 14:06:41 · 109 阅读 · 0 评论 -
面向对象复习一
类与对象对象内存布局栈:存放引用,地址指向堆中的某一块区域,这里有各个存储单元,如果是字符串,则这里存放的依然是地址,指向方法区的常量池的一个存储单元。如果是基本数据类型,则直接存储再堆中。在实例化信息的时候,还会加载类的信息属性信息。行为,方法。先加载类信息,再实例化进行分配空间,最后将堆中空间的地址返回给栈中的引用。属性 = 成员变量注意细节访问修饰符 属性类型 属性名;是类的组成部分,一般是基本数据类型,也可以是引用类型。属性如果不赋值,有默认值,规则和数组一致。i原创 2021-07-13 14:23:35 · 90 阅读 · 0 评论 -
JVM内存模型/对象创建/强弱软虚引用
JVMJava虚拟机,屏蔽了操作系统的平台信息,当然JVM在执行字节码时还是要解释成具体操作平台的机器指令,通过JVM实现了平台无关性,在不通过平台运行时,不需要重新编译,只需部署JVM,一次编译,多处运行JVM运行时内存JDK1.7 线程隔离:每个线程都有一份程序计数器 是一块较小的内存空间,看作当前线程所执行的字节码的行号指示器,字节码解释器工作时,可以通过改变计数器来选取下一条要执行的指令,线程之间计数器互不影响,归线程私有。如果线程执行的是非native方法,则程序计数器中保存原创 2021-07-13 14:19:42 · 181 阅读 · 0 评论 -
Integer和int进行==比较
Integer&intint是Java的基本数据类型,而Integer是它的包装类,==在进行比较时,如果是基本类型,比较的是值,如果是引用类型,比较的是地址,也就是是否是同一个对象。public static void main(String[] args) { Integer a = new Integer(5); Integer b = new Integer(5); Integer c = 5; Integer d = 5;原创 2021-07-27 17:15:42 · 3403 阅读 · 0 评论 -
Java的方法学习记录
方法Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合。方法包含在类或者对象当中。设计原则:方法的本意是功能块,就是实现某个功能的语句块的集合,设计时,最好保持方法的原子性,就是一个方法完成一个功能。命名规则:最好使用驼峰命名,第一个单词首字母小写,其它首字母大写。Java的方法是一段用来完成特定功能的代码片段,包含方法头和方法体。方法头:修饰符(可选的,定义方法的访问类型)、返回值类型(没有返回值使用void)、方法名、参数(可选原创 2020-05-23 16:02:30 · 151 阅读 · 0 评论 -
JVM垃圾收集器及算法
垃圾收集判断对象死亡对堆垃圾回收前的第⼀步就是要判断哪些对象已经死亡引用计数法:给对象中添加⼀个引用计数器,每当有⼀个地方引用它,计数器就加1;当引用失效,计数器就减1;任何时候计数器为0的对象就是不可能再被使用的。可达性分析法:通过一些列称为GC Roots的对象作为起点,向下搜索,节点走多的路径为引用链,当一个对象到GC Roots没有任何引用链相连,则不可用。废弃常量假如常量池中存在字符串,如果当前没有任何String对象引用它,说明它是废弃的,如果这时发生内存回收的话,将会原创 2021-07-13 14:21:17 · 128 阅读 · 0 评论 -
Java面向对象学习记录
面向对象面向过程(POP)和面向对象(OOP) 二者都是一种思想,面向对象是相对于面向过程而言的。面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做。面向对象,将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则。类对一类事物的描述,是抽象的、概念上的,是现实世界在计算机中的反映,将数据(属性/成员变量)和对这些数据的操作(行为/方法)封装在一起,但是并没有开空间。对象是实际存在的该类事物的每个个体,称为原创 2020-05-24 20:40:35 · 224 阅读 · 0 评论 -
SpringBoot+MyBatis-Plus入门CRUD/乐观锁/自动填充
MyBatis-Plus实现数据库curd操作MP是什么是一个MyBatis的增强工具,在此基础上知做增强不做改变,为简化开发、提高效率而生。MP实现增删改查创建完项目(注意springboot的版本问题)首先要引入依赖及其相关依赖(使用了aliyun的仓库,有些版本下载失败,到https://maven.aliyun.com/mvn/search进行查询) <!--mybatis-plus依赖--> <dependency>原创 2021-07-12 22:17:26 · 251 阅读 · 0 评论 -
Java基础——关键字&标识符&变量&数据类型
关键字被Java语言赋予了特殊含义,用作专门用途的字符串关键字的所有字母都为小写(Java是区分大小写的) 访问权限修饰符关键字 private public protected 流程控制关键字 if else...原创 2020-04-25 20:57:25 · 212 阅读 · 0 评论 -
JDK/JRE/转义字符/常用DOS
Java的特点:Java语言是面向对象的。Java语言使健壮的,Java的强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。Java是跨平台的。Test.java(源文件)->(javac 编译)->Test.class(字节码文件)->Windows/Linux/Mac的JVM->Windows/Linux/MAC不需要重新编译,即可多平台执行,但是每种操作系统的JVM不一样,每个操作系统要安装对应的JDK(Java Development Kit原创 2021-07-05 09:53:38 · 99 阅读 · 0 评论 -
String/StringBuilder/StringBuffer
String 、StringBuilder、StringBuffer1. 可变性String: 字符串常量,字符串是不可变的。源码中:private final char value[];//通过final修饰的字符数组来存储字符//java 9 改用private final byte[] valueStringBuilder: 字符串常量,是可变的,源码中://继承AbstractStringBuilderchar[] value;//AbstractStringBuilder中原创 2021-07-05 10:57:02 · 183 阅读 · 1 评论 -
多线程JUC-Synchronized/Lock
JUC(重点)JUC是指java.util.concurrent、java.util.concurrent.atomic、java.util.concurrent.locks三个包基础一个进程可以包含至少一个线程,Java中默认至少是两个线程的,一个main线程,一个GC线程。Java本身是不可以创建线程的,而是调用本地方法start0开启线程,是C/C++编写的。并发:多线程操作同一个资源,单核处理器处理多个任务,快速交替,看似同时执行,假同时执行并行:多核处理器处理多个任务,真同时执行R原创 2021-08-11 12:00:21 · 109 阅读 · 0 评论 -
JUC-读写锁/阻塞队列/线程池
ReadWriteLock读操作可以多个线程同时进行,写操作只能有一个线程进行,写锁(独占锁),读锁(共享锁)读-读,可以共存读-写,不能共存写-写,不能共存class MyCache{ private volatile Map<String,Object> map = new HashMap<>(); private ReadWriteLock lock = new ReentrantReadWriteLock(); // 写 publi原创 2021-08-19 11:13:46 · 109 阅读 · 0 评论 -
多线程基础-常用方法/Synchronized
多线程线程常用方法setName:设置线程名称getName:返回线程名称start:开始线程,JVM底层调用该线程的start0方法,start底层会创建新的线程,run就是一个简单的方法调用,并不会新建线程run:调用线程对象的run方法setPriority:更改线程优先级,范围:MAX_PRIORITY-10、NORM_PRIORITY-5、MIN_PRIORITY-1getPriority:获取线程的优先级sleep:让当前线程休眠(毫秒),静态方法,T原创 2021-08-06 16:19:22 · 92 阅读 · 0 评论 -
多线程-Callable/CountDownLatch/CyclicBarrier/Semaphore
CallableCallable和Runnable类似,不同点有三个:Runnable不返回结果,Callable可以Runnable抛出被检查的异常,Callable可以。Runnable是run方法,Callable是call方法@FunctionalInterfacepublic interface Callable<V> { /** * Computes a result, or throws an exception if unable to do s原创 2021-08-12 14:12:32 · 166 阅读 · 0 评论 -
多线程基础-Thread/Runnable
public class Thread01 {public static void main(String[] args) throws InterruptedException { T t = new T(); t.start(); System.out.println("主线程休眠十秒"); Thread.sleep(10000); //通过设置线程的run方法的判断条件从而退出run方法,终止线程 t.setLoop(false);}}clas原创 2021-08-05 17:01:38 · 73 阅读 · 0 评论 -
JUC-函数式接口/Stream流
四大函数式接口(Consumer、Function、Predicate、Supplier)新技术:lambda表达式、链式编程、函数式接口、Stream流式计算函数式接口:只有一个方法的接口,在新版本的框架底层大量应用@FunctionalInterfacepublic interface Runnable { public abstract void run();}foreach(消费者类的函数式接口)Function一个输入参数,一个输出@FunctionalInterfac原创 2021-08-19 15:19:31 · 89 阅读 · 0 评论 -
JUC-JMM/Volatile/单例模式
JMMJava内存模型,是一个概念,不存在的东西,概念、约定关于JMM的一些同步约定:线程解锁前,必须把共享变量刷回主存线程加锁前,必须读取主存中的最新值到工作内存中加锁和解锁是同一把锁内存交互八种操作lockunlockreadloaduseassignstorewrite规则:不允许read和load、store和write单独出现不允许线程丢弃最近的assign操作,工作变量改变,必须告诉主存一个线程将没有assign的数据同步回主存一个新的变量必须从原创 2021-08-24 16:40:29 · 194 阅读 · 0 评论 -
多线程-集合安全
锁synchronized在方法上(非静态),锁的是方法调用者,也就是对象public static void main(String[] args) throws InterruptedException { H h = new H(); new Thread(()->{ h.hello(); },"A").start(); TimeUnit.SECONDS.sleep(1); new Thr原创 2021-08-12 11:28:53 · 84 阅读 · 0 评论 -
JUC-ForkJoin/异步回调
ForkJoin 分支合并并行执行任务,提高效率,在大数据量情况下。就是将大任务拆成小任务,最后将结果合并得到最终结果。特点:工作窃取,假如A线程有四个任务,B线程有两个任务,维护的都是双端队列,B线程执行完之后可能将A线程的子任务偷过来执行,提升效率。/*求和计算*/// 如何使用ForkJoin// ForkJoinPool// 计算任务ForkJoinPool.execute(ForkJoinTask task)// 计算类继承ForkJoinTaskpublic class Fork原创 2021-08-20 11:42:14 · 241 阅读 · 0 评论 -
设计模式-工厂模式/代理模式
工厂模式创建对象时不会对客户端暴露创建逻辑,并且通过使用一个共同的接口来指向新创建的对象,实现创建者和调用者分离,工厂模式分为简单工厂、工厂方法、抽象工厂,Spring中的IOC容器创建bean的过程就是用了工厂模式,容器中有个静态的Map集合存储对象,为了让每个对象只生产一次,让工厂符合单例模式。定义一个创建对象的接口,让其子类决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行优点:工厂模式是最常用的实例化对象模式,工厂方法代替new操作的一种模式降低程序的耦合性将选择实现类、创建对象原创 2021-08-30 16:16:26 · 244 阅读 · 0 评论 -
设计模式-六大原则/单例模式
设计模式概念:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。作用:为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。JDK、Spring等源码中许多地方用到了设计模式设计模式分类创建型模式:工厂方法、抽象工厂、单例、建造者、原型结构型模式:适配器、装饰器、代理、外观、桥接、组合、享元行为型模式:策略、模板方法、观察者、迭代子模式、责任链、命令、备忘录、状态、访问者、中介者、解释器六大原则开放封闭原则:软件实体对扩展是开放的,对于修改是封闭的,尽原创 2021-08-26 15:47:46 · 238 阅读 · 0 评论