自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 mysql的锁机制

mysql的锁机制概述InnoDB行锁的种类记录锁间隙锁临键锁表锁InnoDB的锁类型读锁(共享锁)写锁(排他锁)(独占锁)意向锁MDL锁另一个角度分类乐观锁悲观锁锁等待和死锁如何避免死锁总结概述数据库的锁机制,是数据库为了保证数据的一致性,使各种共享资源在被访问时变得有序而设计的一种规则。InnoDB支持行锁,有时也会升级为表锁MyISAM只支持表锁多个并发事务修改数据,表锁会锁住整个表,不让多个事务同时修改,而行锁是锁住其中一行数据,其他行的数据依然可以由其他并发事务修改。表锁的特点:开销小

2021-09-02 21:37:55 208 1

原创 单例设计模式

单例设计模式概述如何实现饿汉式懒汉式概述设计模式是在大量的实践中总结和理论化之后优选的代码结构,编程风格,以及解决问题的思考方式。免去我们自己再思考和摸索。单例,顾名思义,单个实例。就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得对象实例的方法。要让类在一个虚拟机中只能产生一个对象,首先必须将类的构造器的访问权限设置为private,这样,就不能用new操作符在类的外部产生类的对象了,但在类内部仍可以产生该类的对象。因为在类的外部开始无法得到该类的对象,只

2021-08-31 23:54:38 100

原创 static关键字

static关键字概述使用修饰属性:静态变量修饰方法:静态方法注意点:概述通过new关键字产生对象,系统才会分配内存空间给对象,某些情况下,我们需要某些特定的数据在内存空间中只有一份,让类去共享这份数据。比如所有的中国人都有个国家名称,每一个中国人都共享这个国家名称,不必再每一个中国人的实例对象中都单独分配一个用于代表国家名称的变量。static可以达到这个效果。使用static:静态的static可以用来修饰:属性,方法,代码块,内部类。不能修饰构造器修饰属性:静态变量静态变量,静态属性,类

2021-08-31 13:59:23 112

原创 B树 B+树

B树 B+树概述如何保证查找效率B树的插入B树的删除:B+树概述以5叉查找树为例。//5叉排序树的节点定义struct Node { ElemType keys[4];//最多4个关键字 struct Node *child[5];//最多5个孩子 int num;// 节点中有几个关键字}如何保证查找效率若每个节点内关键字太少,导致树变高,要查更多层节点,效率低。规定:对于5叉排序树,规定除了根节点外,任何节点都至少有3个分叉,2个关键字。策略:m叉查找树中,规定除了根节点外,任

2021-08-16 19:07:04 999

原创 异常

异常概述JVM的默认处理方法概述异常:程序出现了不正常的情况Error:严重问题,不需要处理。一般预料之外,程序无法捕获,由虚拟机抛出。比如main函数调用main函数,导致栈溢出,Exception:称为异常类,表示程序本身可以处理的问题。可以预料,并写好代码规避。又分为运行时异常和非运行时异常。RuntimeException:在编译器是不检查的,出现问题后,需要我们回来修改代码。比如数组下标越界,除数为0.非RuntimeException:编译器就必须处理的,否则程序不能通过编译,就

2021-08-13 12:27:58 68

原创 反射

反射类加载器反射类加载器类加载:当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过类的加载,类的连接,类的初始化这三个步骤来对类进行初始化。一般来讲,不出现一般情况,JVM将会连续完成这三个步骤,把这三个步骤统称为类加载或者类初始化。类的加载:将class文件读入内存,并为之创建一个java.lang.Class对象。类的连接:验证阶段:检验被加载的类是否有正确的内部结构。准备阶段:复杂为类变量分配内存,并设置默认初始化值解析阶段:将类的二进制数据中的符号引用替换为直接引用。

2021-08-13 09:55:59 73

原创 变量 存储过程

变量分为系统变量和自定义变量系统变量又分为全局变量和会话变量自定义变量分为用户变量(相当于java中的全局变量)和局部变量系统变量:变量由系统提供,不是用户定义,属于服务器层面语法:查看所有的系统变量show global|session variables;查看满足条件的部分系统变量show global|session variables like '%char%';查看指定的某个系统变量select @@global|session.系统变量名;为某个系统变量赋值方式

2021-08-11 16:03:08 185

原创 对象的序列化

对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘上,或通过网络将这种二进制流传输到另一个网络节点。当其他程序获取了这种二进制流,就可以恢复成原来的Java对象。序列化的好处在于可将任何实现了Serializable接口的对象转化为字节数据,使其在保存和传输时可被还原。实现序列化两种方式:1.实现Serializable接口2.实现Externalizable接口使用Serializable接口实现:序列化:1.创建一个Object

2021-08-10 18:41:31 200

原创 MySQL常用命令总结

启动mysqlnet start mysql停止mysqlnet stop mysqlSQL分类:数据查询语言 DQL Data Query Language代表关键字:select数据操纵语言 DML Data Manipulation Language代表关键字:insert delete update数据定义语言 DDL Data Definition Language代表关键字:create drop alter事务控制语言 TCL Transactional Contro

2021-08-09 12:39:37 66

原创 事务

事务什么是事务(transaction)如何实现?事务四个特性(ACID)隔离级别验证read uncommitted验证read committed什么是事务(transaction)一个或一组sql语句组成一个执行单元 这个单元要么全部执行,要么全部不执行。一个事务是一个完整的业务逻辑是一个最小的工作单元 不可再分。如何实现?InnoDB存储引擎:提供一组用来记录事务性活动的日志文件。在事务的执行过程中,每一条DML的操作都会记录到“事务性活动的日志文件”中,在事务的执行过程中,我们可以提

2021-08-07 22:35:33 74

原创 数据库设计三范式

数据库设计三范式数据库设计三范式第一范式第二范式第三范式数据库设计三范式第一范式:要求任何一张表必须有主键,每一个字段原子性不可再分。第二范式:建立在第一范式的基础之上,要求所有非主键字段完全依赖主键,不要产生部分依赖。第三范式:建立在第二范式的基础之上,要求所有非主键字段直接依赖主键,不要产生传递依赖。目的:避免表中数据的冗余,空间的浪费。第一范式最核心 最重要的范式,所有表的设计都需要满足。必须有主键,并且每一个字段都是原子性不可再分。比如这个表,不满足第一范式,首先没有主键;联系方

2021-08-06 21:01:23 334

原创 Redis学习笔记

Redis学习笔记启动Redis服务通过Redis客户端进行连接简单测试查看redis的进程是否开启关闭服务启动Redis服务通过指定的配置文件启动服务redis-server kconfig/redis.conf通过Redis客户端进行连接redis-cli -p 6379简单测试查看redis的进程是否开启ps -ef|grep redis关闭服务shutdown再次查看进程 关闭成功...

2021-08-05 19:16:49 71

原创 多线程

多线程创建线程继承Thread类实现Runnable接口创建线程继承Thread类1.自定义线程类继承Thread类2.重写run()方法,编写线程执行体3.创建线程对象,调用start()方法启动线程package com.cpw.thread;//总结:注意:线程开启不一定立即执行,由CPU调度执行//步骤:继承Thread类,重写run()方法,调用stat()开启线程public class TestThread1 extends Thread{ @Override

2021-08-05 19:11:33 68

原创 树与二叉树

2021-07-31 15:30:55 67

原创 查找

查找顺序查找折半查找(二分查找)递归非递归测试顺序查找package com.cpw.search;import java.util.Scanner;public class SeqSearch { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int arr[] = {1, 9, 11, -1, 34, 89}; Sys

2021-07-29 11:53:44 69

原创 哈希表(散列表)

哈希表基本介绍应用问题思路分析代码实现定义雇员节点定义单链表定义哈希表测试代码运行结果基本介绍散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。应用问题思路分析代码实现定义雇员节点class Emp { public int id; public String name; publ

2021-07-29 09:50:19 82

原创 排序算法

排序算法冒泡排序选择排序插入排序希尔排序快速排序归并排序冒泡排序思想:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部优化:因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志 flag 判断元素是否进行过交换。从而减少不必要的比较。package com.cpw.sort;import java.util.Arrays;public class

2021-07-28 11:04:01 117 1

原创 第三篇 栈

栈数组模拟栈数组模拟栈class ArrayStack { //栈的大小 private int maxSize; //数组 数组模拟栈 数据就放在该数组中 private int[] stack; //top表示栈顶 初始化为-1 private int top = -1; //构造器 public ArrayStack(int maxSize) { this.maxSize = maxSize; stack = new int[this.maxSize]; } //栈满

2021-07-22 13:50:37 61

原创 Linux学习笔记

Linux学习笔记—文件系统Linux系统的文件含义Linux系统的文件操作命令Linux系统的文件含义使用ls -l命令列目录时,输出信息的每一行得第一个字符代表文件类型。其中"-"表示普通文件"d"表示目录文件"c"表示块设备文件"l"表示符号链接文件Linux系统的文件操作命令cd命令该命令将当前目录改变至所指定的目录。Shell中"~"表示主目录,使用它可以代替路径名中主目录那一串字符,使命令行简介。cd … 上移一层目录cd 移到自己的主目录cd /home/a 移到用

2021-07-22 10:20:36 186

原创 第二篇 链表

链表单链表定义节点建立单链表测试代码 建立单链表(按照节点输入顺序)测试代码 建立单链表(按照节点编号顺序)删除节点修改节点获取链表长度查找倒数第K个节点单链表逆置利用栈实现链表逆置头插法实现链表逆置单链表合并(两个有序单链表 合并之后依然有序)双链表定义节点建立双向链表测试建立双向链表(按节点加入顺序)建立双向链表(按节点编号顺序)修改节点删除节点约瑟夫问题(循环链表)场景代码实现定义节点循环链表测试单链表定义节点class HeroNode { public int no; public St

2021-07-20 21:23:31 120 1

原创 第一篇 队列

第一篇 队列class CircleArray { private int maxSize; private int front; private int rear; private int[] arr; //初始化队列 public CircleArray(int arrMaxSize) { //front rear 初始值为0 这里不再赋值。因为默认会赋初值0; maxSize = arrMaxSize; arr = new int[maxSize]; } //判断队列

2021-07-18 19:12:15 48

原创 计算机网络—物理层

物理层物理层设备中继器集线器(多口中继器)物理层设备中继器诞生原因:由于存在损耗,在线路上传输的信号功率会逐渐衰减,衰减到一定程序时将造成信号失真,因此会导致接收错误。中继器的功能:再生数字信号对信号进行再生和还原,对衰减的信号进行放大,保持与原数据相同,以增加信号传输的距离,延长网络的长度。补充:放大器再生模拟信号中继器的两端:两端的网络部分是网段(冲突域),而不是子网,适用于完全相同的两类网络的互连,且两个网段速率要相同。集线器(多口中继器)功能:再生,放大信号对信号进行再生放大转发,对

2021-07-08 16:48:53 90

原创 操作系统第二章—进程的描述与控制

进程的描述与控制进程的定义,组成,组织方式,特征定义组成方式进程的组织链接方式索引方式进程的特征进程的状态与转换进程的状态进程状态的转换进程的定义,组成,组织方式,特征定义强调动态性程序:就是一个指令序列早期的计算机(只支持单道程序):因此只能有一个程序处于运行状态。这时CPU,内存,I/O设备都是只属于这个程序的。程序的代码放在程序段内,程序运行过程处理的数据放在数据段内(如变量)后来引入多道程序技术之后:内存中同时放入多道程序,各个程序的代码,运算数据存放的位置不同。那么操作系统要怎样

2021-07-08 16:46:02 263

原创 操作系统第四章—存储器管理

存储器管理内存的基础知识内存管理的概念内存空间的分配与回收如何进行分区的分配与回收操作?动态分区分配算法首次适应算法(First Fit)最佳适应算法(Best Fit)最坏适应算法(Worst Fit)邻近适应算法(Next Fit)内存空间的扩充(实现虚拟性)覆盖技术交换技术虚拟存储技术地址转换存储保护内存的基础知识内存管理的概念操作系统作为系统资源的管理者,需要对内存进行管理,主要有以下:1.操作系统负责内存空间的分配与回收2.操作系统需要提供某种技术从逻辑上对内存空间进行扩充3.操作系统

2021-07-08 16:45:39 244

原创 操作系统第三章—处理机调度与死锁

处理机调度与死锁调度算法先来先服务(FCFS)短作业优先(SJF)高响应比优先(HRRN)总结:时间片轮转(RR)优先级调度算法调度算法饥饿的概念:某进程/作业长期得不到服务先来先服务(FCFS)算法思想:主要从“公平”的角度考虑(排队买东西)算法规则:按照作业/进程到达的先后顺序进行服务用于作业/进程调度:用于作业调度时,考虑的是哪个作业先到达后备队列;用于进程调度时,考虑的是哪个进程先到达就绪队列是否可抢占?非抢占式的算法优缺点:优点:公平,算法实现简单缺点:排在长作业(进程)后面

2021-07-08 16:45:19 276

原创 计算机网络第五章—运输层

计算机网络运输层概述运输层端口号,复用,分用的概念UDP和TCP的对比运输层概述计算机网络体系结构中的物理层,数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的问题,实现了**主机到主机(端系统到端系统)**的通信。但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程如何为运行在不同主机上的应用进程提供直接的通信服务是运输层的任务,运输层协议又称为端到端协议运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑,所采用的路由选择协议等),它使应用进程看见的好像是在两个

2021-07-08 16:44:46 660

原创 计算机网络第四章—网络层

网络层功能概述数据交换方式电路交换报文交换分组交换比较总结数据报方式&虚电路方式功能概述主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务网络层传输单位是数据报功能一:路由选择与分组转发功能二:异构网络互联功能三:拥塞控制数据交换方式如何使数据通过网络核心【路由器】从源主机到目的主机?答案:数据交换电路交换电路交换阶段:1.建立连接(呼叫/电路建立)2.通信3.释放连接(拆除电路)特点:独占资源优点:通信时延小有序传输没有冲突实时性强缺点

2021-07-08 16:44:22 278

原创 操作系统第一章—操作系统引论

基本概念中断和异常系统调用什么是系统调用,有何作用系统调用和库函数的区别系统调用背后的过程总结:中断和异常系统调用什么是系统调用,有何作用什么是系统调用:系统调用有什么作用:系统调用作用:系统调用的分类(按功能):系统调用的相关处理需要在核心态下完成系统调用和库函数的区别不是所有库函数都会涉及系统调用系统调用背后的过程总结:...

2020-10-07 09:50:35 301

原创 计算机网络第三章—数据链路层

数据链路层停止等待协议为什么要有应用情况(2两种):无差错情况有差错情况数据帧丢失或检测到帧出错ACK丢失ACK迟到停止等待协议性能分析信道利用率和信道吞吐率总结后退N帧协议(GBN)GBN中的滑动窗口GBN发送方必须响应的三件事GBN接收方要做的事GBN重点总结:GBN性能分析:选择重传协议(SR)停止等待协议为什么要有为什么要有停止等待协议一:解决可靠传输问题二:解决流量控制问题含义:应用情况(2两种):无差错情况有差错情况数据帧丢失或检测到帧出错有了超时计数器,数据帧传

2020-09-28 09:01:48 347

原创 计算机网络第一章—概述

第一篇-基本概念计网性能指标速率带宽吞吐量时延发送时延(传输时延)传播时延排队时延处理时延时延带宽积往返时延RTT利用率计网性能指标速率带宽吞吐量吞吐量受网络的带宽或网络的额定速率的限制时延指数据(报文/分组/比特流)从网络(或链路)的一端传送到另一端所需要的时间,也称延迟或迟延 单位是s发送时延(传输时延)一般发生在机器内把要传输的数据放到信道上所用的时间。比如1010,如果发送速率(信道带宽)是2b/s.则传输时延是2s.也就是需要2s才能把这段数据全部放到信道上。传

2020-09-16 10:39:37 571

原创 C++学习笔记---多态

多态概述静态多态函数重载运算符重载()动态多态概述多态顾名思义为多种形态,同一个事物在不同场景下的多种形态多态分为静态多态和动态多态静态多态:函数重载和运算符重载属于静态多态,复用函数名动态多态:派生类和虚函数实现运行时多态二者的区别:静态多态的函数地址早绑定-编译阶段确定函数地址动态多态的函数地址晚绑定-运行阶段确定函数地址这篇博客主要详细记录动态多态静态多态函数重载运算符重载()动态多态class Animal {public: //虚函数 //函数名前面加上virtu

2020-07-07 14:30:23 1062

原创 Linux学习笔记 第一篇

Linux第一篇Linux目录结构Linux目录结构/bin 是Binary的缩写,这个目录存放着最经常使用的命令/home 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的/root 该目录为系统管理员,也称作超级权限者的用户主目录/boot 存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件/media linux系统会自动识别一些设备,例如U盘,光驱等等,当识别后,Linux会把识别的设备挂载到这个目录下/mnt

2020-07-06 15:36:18 90

原创 C++学习笔记 ---继承

继承继承中的对象模型继承中的对象模型问题:从父类继承过来的成员,哪些属于子类对象中//父类(基类)class Base {public: int m_A;protected: int m_B;private: int m_C;};//子类(派生类)class Son: public Base {public: int m_D;};void test01() { Son s1; cout << sizeof(s1) << endl;}打印结果为

2020-07-06 12:20:59 362 1

原创 数据结构--图的DFS和BFS算法题总结

文章目录有向图的创建、求度、遍历求解连通分量个数有向图的创建、求度、遍历题目描述从键盘接收有向图的顶点集,弧集,创建有向图,并完成下列任务:(1)计算结点的出度、入度以及度;(2) 从第一个顶点出发,求一个深度优先遍历序列;(3) 从第一个顶点顶点出发,求一个广度优先遍历序列。注意:以用户输入各个顶点的顺序为顶点的序号。 在深度和广度优先遍历中,优先选择序号小的顶点。...

2019-11-23 23:45:06 1251

原创 动态规划算法题总结

文章目录买卖股票的最佳时机1买卖股票的最佳时机 II买卖股票的最佳时机1题目链接int max(int a, int b) { return a > b ? a : b;}int maxProfit(int* prices, int pricesSize) { //边界 int buy = -prices[0]; int sell = 0; ...

2019-11-03 18:36:54 161

原创 求解魔法阵

魔方阵,古代又称“纵横图”,是指组成元素为自然数1、2、…、n2的平方的n×n的方阵,其中每个元素值都不相等,且每行、每列以及主、副对角线上各n个元素之和都相等。#include<stdio.h>#include<stdlib.h>#include<math.h>int main() { int n; int array[100][100] = {0...

2019-10-28 16:01:47 376

原创 求解马鞍点

问题 C: DS-5.3 求解马鞍点问题(by Yan)时间限制: 1 Sec 内存限制: 128 MB提交: 474 解决: 170[提交] [状态] [讨论版] [命题人:zengyan] 题目描述 若矩阵An*m中某个元素A[i][j]是矩阵第i行中值最小的元素,同时又是第j列中值最大的元素,则称元素A[i][j...

2019-10-28 15:31:40 1141

原创 数据结构—二叉树算法题总结

文章目录二叉树的最大深度二叉树的最小深度二叉树的最大深度方法一:递归int Max(int a, int b) { if (a > b) { return a; } else { return b; }}int maxDepth(struct TreeNode* root){ if (root == NULL) {...

2019-10-20 17:09:45 1238

原创 逆波兰表达式(算数表达式求解)

#include <stdio.h>#include <stdlib.h>#define MAX 1000typedef struct Stack { int elem[MAX]; int top;}Stack;typedef struct Stack2 { int elem[MAX]; int top;}Stack2;/...

2019-10-08 11:15:15 274

原创 原地算法

题目描述给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2],函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。你不需要考虑数组中超出新长度后面的元素。示例 2:给定 ...

2019-10-05 13:56:13 530

空空如也

空空如也

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

TA关注的人

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