- 博客(70)
- 收藏
- 关注
原创 【HCNA】-【网络模型】
一、网络模型分层思想:将复杂的流程分解为几个功能相对单一的子过程。网络标准化:规范不同的互联标准,兼容。1.OSI(Open System Interconnect)模型2.TCP/IP模型TCP/IP开发先于OSI,最终在市场上获得认可,目前所有厂商支持并使用。3.OSI模型和TCP/IP模型对应关系4.数据封装和解封应用数据需要经过每一层处理之后才能通过网络传输到目的端,OSI把每一层数据称为PDU(Protocol Data Unit,协议数据单元),TCP/IP根据不同层分别
2021-10-27 10:50:16 884
转载 计算机网络原理
计算机网络原理笔记(汇总)转载自博主JhonnyLee,谢谢。[第一章 概述](https://blog.csdn.net/LeeQiang8023/article/details/105746040)[第二章 物理层](https://blog.csdn.net/LeeQiang8023/article/details/105746377)[第三章 数据链路层](https://blog.csdn.net/LeeQiang8023/article/details/105758267)[ 第四章 网络层
2020-08-10 11:35:23 358
原创 【数据库】-【主从复制】
一、主从复制1.复制的基本原理slave会从master读取binlog(二进制日志)来进行数据同步。原理图三步骤1 master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;2 slave将master的binary log events拷贝到它的中继日志(relay log);3 slave重做中继日志中的事件,将改变应用到自己的数据库中。 MySQL复制是异步的且串行化的2.复制的基本原则①每个salve只有一个
2020-08-08 13:53:17 143
原创 【数据库】-【基础篇:约束】
一、约束1.约束含义一种限制,用于限制表中的数据,为了保证表中数据的准确性和可靠性。2.约束格式添加分类分为列级约束和表级约束。CREATE TABLE 表名{ 字段名 字段类型 列级约束, 字段名 字段类型, 表级约束}在创建表或修改表时添加。3.约束分类NOT NULL:非空,用于保证该字段的值不能为空。比如姓名,学号Null类型特征:所有的类型的值都可以是null,包括int、 float等数据类型空字符串””不等于null,0也不等于nulDEFAULT:默认
2020-08-06 13:53:40 318
原创 【数据库】-【MySQL锁机制】
一、锁的概述1.锁的定义锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。示例打个比方,我们到淘宝上买一件商品,商品只有一件库存,这个时候如果还有另一个人买,那么如何解决是你买到还是另一个人买到的问题?这里肯定要用到事
2020-08-06 11:40:00 113
原创 【数据库】-【索引优化分析:查询截取分析】
一、慢查询日志1.SQL优化步骤(1)慢查询的开启并捕获。(2)explain+慢SQL分析(3)show profile查询SQL在Mysql服务器里面的执行细节和生命周期情况。(4)SQL数据库服务器的参数调优。2.什么是慢查询日志MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。具体指运行时间超过long_query_time值的SQL,则会被记录到
2020-08-04 22:16:18 173
原创 【数据库】-【索引优化分析:性能分析】
一、MySQL常见瓶颈1.CPUCPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候。SQL中对大量数据进行比较、关联、排序、分组。最大的压力在于比较。2.IO磁盘I/O瓶颈放生在装入数据远大于内存容量的时候。实例内存满足不了缓存数据或排序等需要,导致产生大量物理 IO。查询执行效率低,扫描过多数据行。3.锁不适宜的锁的设置,导致线程阻塞,性能下降。死锁,线程之间交叉调用资源,导致死锁,程序卡住。4.服务器硬件top,free,iostat和vmstat来查看系统的状态。二
2020-08-03 17:09:33 319
原创 【数据库】-【索引优化分析:索引简介】
一、索引介绍1.什么是索引MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。可以得到索引的本质:索引是数据结构。索引的目的在于提高查询效率,可以类比字典。可以将索引理解为“排好序的快速查找数据结构”。2.索引详解在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构就是索引。下图就是一种可能的索引方式示例:左边是数据表,一共有两列七条记录,最左边的是数据记录
2020-07-21 10:45:51 168
原创 【数据结构与算法】-【多路查找树】
一、多路查找树1.二叉树存在的问题二叉树的操作效率较高,但是也存在问题。二叉树需要加载到内存的,如果二叉树的节点少,没有什么问题,但是如果二叉树的节点很多, 就存在如下问题:问题1:在构建二叉树时,需要多次进行i/o操作(海量数据存在数据库或文件中),节点海量,构建二叉树时,速度有影响;问题2:节点海量,也会造成二叉树的高度很大,会降低操作速度。2.多叉树简单介绍在二叉树中,每个节点有数据项,最多有两个子节点。如果允许每个节点可以有更多的数据项和更多的子节点,就是多叉树(multiway
2020-07-16 12:20:35 173
原创 【数据结构与算法】-【平衡二叉树(AVL树)】
一、平衡二叉树1.平衡二叉树基本介绍平衡二叉树也叫平衡二叉搜索树(Self-balancing binary search tree)又被称为AVL树, 可以保证查询效率较高。具有以下特点:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。平衡二叉树的常用实现方法有红黑树、AVL、替罪羊树、Treap、伸展树等。...
2020-07-16 11:26:02 148
原创 【数据结构与算法】-【二叉排序树(BST)】
一、二叉排序树1.二叉排序树介绍二叉排序树:BST: (Binary Sort(Search) Tree), 对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前节点的值小,右子节点的值比当前节点的值大。特别说明:如果有相同的值,可以将该节点放在左子节点或右子节点。比如针对数据 (7, 3, 10, 12, 5, 1, 9) ,对应的二叉排序树为:2.二叉排序树的删除二叉排序树的删除情况比较复杂,有下面三种情况需要考虑删除叶子节点 (比如:2, 5, 9, 12)删除只有一颗子树的节
2020-07-14 22:17:50 136
原创 【数据结构与算法】-【赫夫曼树】
一、赫夫曼树1.赫夫曼树基本介绍给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree), 还有的书翻译为霍夫曼树。赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近。2.赫夫曼树重要概念路径在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。路径长度通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。结点的权若将树中结点
2020-07-14 21:26:02 160
原创 【数据结构与算法】-【树】
一、二叉树1.为什么需要树这种数据结构数组存储方式的分析优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低链式存储方式的分析优点:在一定程度上对数组存储方式有优化(比如:插入一个数值节点,只需要将插入节点,链接到链表中即可, 删除效率也很好)。缺点:在进行检索时,效率仍然较低,比如(检索某个值,需要从头节点开始遍历)树存储方式的分析能提高数据存储,读取的效率, 比如利用 二叉排序
2020-07-11 17:17:21 125
原创 【数据结构与算法】-【哈希表】
一、哈希表1.哈希表基本介绍散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。2.哈希表的使用3.程序示例需求:有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,名字,住址…),当输入该员工的id时,要求查找到该员工的所有信息。要求:不使用数据库,速度越快越好=>哈希表(散列)
2020-07-11 15:52:20 144
原创 【数据结构与算法】-【递归】
一、递归1.递归介绍简单的说: 递归就是方法自己调用自己,每次调用时传入不同的变量.递归有助于编程者解决复杂的问题,同时可以让代码变得简洁。2.递归调用机制//打印问题. public static void test(int n) { if (n > 2) { test(n - 1); } //else { System.out.println("n=" + n); // }}//阶乘问题public static int factorial(int n) { i
2020-07-09 09:55:47 105
原创 【数据结构与算法】-【栈】
一、栈1.栈的介绍栈的英文为(stack),栈是一个先入后出(FILO-First In Last Out)的有序列表。栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)。根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。出栈(pop)入栈(push)2.栈的应用场景①子
2020-07-07 17:36:29 375
原创 【数据结构与算法】-【链表】
一、链表1.链表(Linked List)介绍链表是有序的列表,但是它在内存中是存储如下。链表特点①链表是以节点的方式来存储,是链式存储;②每个节点包含 data 域, next 域:指向下一个节点;③链表的各个节点不一定是连续存储;④链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定。二、单链表1.单链表介绍单链表(带头结点) 逻辑结构示意图如下2.单链表的创建添加(创建)①先创建一个head 头节点, 作用就是表示单链表的头。②后面我们每添加一个节点,就直接加入
2020-07-07 16:43:21 158
原创 【数据结构与算法】-【队列】
一、队列1.基本介绍队列是一个有序列表,可以用数组或是链表来实现。遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出。2.数组模拟队列队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如图, 其中 maxSize 是该队列的最大容量。因为队列的输出、输入是分别从前后端来处理,因此需要两个变量 front及 rear分别记录队列前后端的下标,front 会随着数据输出而改变,而 rear则是随着数据输入而改变,如图所示:。当我们将数据存入队列时称为”addQ
2020-07-07 11:53:50 113
原创 【数据结构与算法】-【稀疏数组】
一、稀疏数组1.基本介绍当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。实际需求编写的五子棋程序中,有存盘退出和续上盘的功能,因为该二维数组的很多值是默认值0, 因此记录了很多没有意义的数据 => 稀疏数组2.稀疏数组的处理方法记录数组一共有几行几列,有多少个不同的值,把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模。示例3.二维数组转稀疏数组的思路①遍历 原始的二维数组,得到有效数据的个数 sum②根据sum 就可以创
2020-07-07 11:04:20 372
原创 【数据库】-【基础篇:函数与运算符】
一、函数MySQL 有很多内置的函数,以下列出了这些函数的说明。1.MySQL 字符串函数ASCII(s)返回字符串 s 的第一个字符的 ASCII 码。实例返回 CustomerName 字段第一个字母的 ASCII 码:SELECT ASCII(CustomerName) AS NumCodeOfFirstCharFROM Customers;CHAR_LENGTH(s)返回字符串 s 的字符数实例返回字符串 RUNOOB 的字符数SELECT CHAR_LENGTH("R
2020-07-06 12:45:47 1062
原创 【数据库】-【基础篇:序列与重复】
一、序列由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现。1.使用 AUTO_INCREMENTMySQL 中最简单使用序列的方法就是使用 MySQL AUTO_INCREMENT 来定义列。实例以下实例中创建了数据表 insect, insect 表中 id 无需指定值可实现自动增长。mysql> CREATE TABLE insect -> ( -> id INT UNSIGNED NOT NULL
2020-07-06 11:43:41 368
原创 【数据库】-【基础篇:临时表与复制表】
一、临时表1.临时表概述临时表在我们需要保存一些临时数据时是非常有用的。临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。临时表在MySQL 3.23版本中添加,如果MySQL版本低于 3.23版本就无法使用MySQL的临时表。不过现在一般很少有再使用这么低版本的MySQL数据库服务了。如果使用了其他MySQL客户端程序连接MySQL数据库服务器来创建临时表,那么只有在关闭客户端程序时才会销毁临时表,当然也可以手动销毁。实例以下展示了使用MySQL 临时表的简单实例。
2020-07-03 22:23:27 196
原创 【数据库】-【基础篇:索引】
一、ALTER命令当我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令。先创建一张表,表名为:testalter_tbl。root@host# mysql -u root -p password;Enter password:*******mysql> use RUNOOB;Database changedmysql> create table testalter_tbl -> ( -> i INT, -> c
2020-07-03 16:37:53 119
原创 【数据库】-【基础篇:事务】
一、事务1.事务概述事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!①在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。②事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。③事务用来管理 insert,update,delete 语句。2.事务条件一般来说,事务是必须满足4个条件
2020-07-03 15:56:53 101
原创 【数据库】-【基础篇:操作检索结果】
一、操作检索结果1.UNION 操作符UNION 操作符用于连接两个以上的 SELECT 语句的结果组合到一个结果集合中。多个 SELECT 语句会删除重复的数据。语法MySQL UNION 操作符语法格式:SELECT expression1, expression2, ... expression_nFROM tables[WHERE conditions]UNION [ALL | DISTINCT]SELECT expression1, expression2, ... expres
2020-07-03 12:48:41 1036
原创 【数据库】-【基础篇:操作数据】
一、操作数据1.插入数据MySQL 表中使用 INSERT INTO SQL语句来插入数据。语法以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法:INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN );如果数据是字符型,必须使用单引号或者双引号,如:“valu
2020-07-03 11:27:00 138
原创 【数据库】-【基础篇:操作数据库】
一、连接数据库使用mysql二进制方式连接使用MySQL二进制方式进入到mysql命令提示符下来连接MySQL数据库。以下是从命令行中连接mysql服务器的简单实例:[root@host]# mysql -u root -pEnter password:******在登录成功后会出现 mysql> 命令提示窗口,你可以在上面执行任何 SQL 语句。以上命令执行后,登录成功输出结果如下:Welcome to the MySQL monitor. Commands end with ;
2020-07-03 10:44:33 102
原创 【数据库】-【基础篇:MySQL数据库】
一、数据库数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。RDBMS 即关系数据库管理系统(Relational Database Management Sy
2020-07-03 10:13:14 252
原创 【数据库】-【索引优化分析:问题分析】
一、存储引擎简介1.MyISAM和InnoDB二、索引优化1.问题:性能下降SQL慢、执行时间长、等待时间长①查阅语句写的差②索引失效
2020-07-02 21:48:41 852
原创 【Java并发编程】-【设计模式】
一、设计模式1.面向对象思想设计原则在实际的开发中,我们要想更深入的了解面向对象思想,就必须熟悉前人总结过的面向对象的思想的设计原则。单一职责原则核心思想是开发人员经常说的”高内聚,低耦合”。也就是说,每个类应该只有一个职责,对外只能提供一种功能,而引起类变化的原因应该只有一个。在设计模式中,所有的设计模式都遵循这一原则。开闭原则核心思想是:一个对象对扩展开放,对修改关闭。其实开闭原则的意思就是:对类的改动是通过增加代码进行的,而不是修改现有代码。也就是说软件开发人员一旦写出了可以运行的代码
2020-07-02 21:04:34 117
原创 【Java并发编程】-【线程组与线程池】
一、线程组Java中使用ThreadGroup来表示线程组,它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制。①public final ThreadGroup getThreadGroup()默认情况下,所有的线程都属于主线程组。②public final String getName()返回此线程组的名称。修改线程所在的组创建一个线程组,创建其他线程的时候,把其他线程的组指定为我们自己新建线程组。Thread(ThreadGroup group, Runnable ta
2020-07-02 12:43:55 175
原创 【Java并发编程】-【多线程基础】
一、多线程基础1.多线程概述进程:正在运行的程序,是系统进行资源分配和调用的独立单位。每一个进程都有它自己的内存空间和系统资源。线程:是进程中的单个顺序控制流,是一条执行路径,一个进程如果只有一条执行路径,则称为单线程程序。一个进程如果有多条执行路径,则称为多线程程序。2.Java程序运行原理java 命令会启动 java 虚拟机,启动 JVM,等于启动了一个应用程序,也就是启动了一个进程。该进程会自动启动一个 “主线程” ,然后主线程去调用某个类的 main 方法。所以 main方法运行在主
2020-07-01 22:24:12 104
原创 【数据结构与算法】-【排序:归并排序】
归并排序一、基本思想归并排序就是利用归并思想实现的排序方法。假设初始序列有n个元素,看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到n/2个长度为2或1的有序子序列;再两两归并,如此重复,直至得到一个长度为n的有序序列位置。二、代码实现...
2020-06-11 23:46:35 119
原创 【数据结构与算法】-【排序:堆排序】
堆排序一、基本思想堆排序就是利用堆进行排序的算法。二、代码实现/* * 堆排序利用了大根堆(或小根堆)堆顶记录的关键字最大(或最小)这一特征, 使得在当前无序区中选取最大(或最小)关键字的记录变得简单。 * (1)用大根堆排序的基本思想 * ① 先将初始文件R[1..n]建成一个大根堆,此堆为初始的无序区 * * ②再将关键字最大的记录R[1](即堆顶)和无序区的最后一个 记录R[n]交换,由此得到新的无序区R[1..n-1]和有序区R[n], * 且满足R[1..
2020-06-11 19:26:06 93
原创 【数据结构与算法】-【排序:希尔排序】
希尔排序1.基本思路将整个无序列分割成若干小的子序列分别进行插入排序,不断缩子序列跨度,至跨度为1,最后执行一次插入排序。2.代码实现/* * 希尔排序:先取一个小于n的整数d1作为第一个增量, * 把文件的全部记录分成(n除以d1)个组。所有距离为d1的倍数的记录放在同一个组中。 * 先在各组内进行直接插入排序;然后,取第二个增量d2<d1重复上述的分组和排序, * 直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有记录放在同一组中进行直接插入排
2020-06-11 19:04:08 133
原创 【数据结构与算法】-【排序:插入排序】
插入排序1.基本思想直接插入排序算法的基本操作时将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增加1的有序表。2.代码实现/* * 插入排序基本思想 * 将n个元素的数列分为已有序和无序两个部分,如插入排序过程示例下所示: * {{a1},{a2,a3,a4,…,an}} * {{a1⑴,a2⑴},{a3⑴,a4⑴ …,an⑴}} * {{a1(n-1),a2(n-1) ,…},{an(n-1)}} * 每次处理就是将无序数列的第一个元素与有序数列的
2020-06-11 18:17:42 116
原创 【数据结构与算法】-【排序:选择排序】
选择排序一、基本思想选择排序算法就是通过 n - i 次关键字间的比较,从 n - i + 1 个记录中选出关键字最小的记录,并和第i(1 <= i <= n)个记录交换。二、代码实现/* * 选择排序基本思路: * 把第一个元素依次和后面的所有元素进行比较。 * 第一次结束后,就会有最小值出现在最前面。 * 依次类推 */ public class SelectionSort { public static void sort(int[] data) { for (
2020-06-11 17:09:52 88
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人