自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 买卖股票的最佳时机2

一个是今天新买了股票(dp[i-1][1]-prices[i])因为可以买卖多次而且同时只能持有一个所以要加上昨天的未持有最大利润。找到这两种情况的最大值:dp[i][0] = max(dp[i-1][0],dp[i-1][1]-prices[i]);找到这两种情况的最大值:dp[i][0] = max(dp[i-1][1],dp[i-1][0]+prices[i]);递推公式: dp[i][0] = max(dp[i-1][0],dp[i-1][1]-prices[i]);

2024-10-08 21:37:03 348

原创 买卖股票的最佳时机1

持有有两种情况,一个是持有的是之前买的股票,一个是今天新买的(-prices[i])因为只能买卖一次所以买新股票就为-prices[i]找到这两种情况的最大值:dp[i][0] = max(dp[i-1][1],dp[i-1][0]+prices[i]);找到这两种情况的最大值:dp[i][0] = max(dp[i-1][0],-prices[i]);递推公式: dp[i][0] = max(dp[i-1][0],-prices[i]);dp[i][0]表示第i天持有股票的最大利润。

2024-10-08 21:36:09 332

原创 算法:全排列

解题思路: 每个位置各个元素都可能出现,每个位置固定一个元素(通过交换元素到begin为止),对后面的元素(begin+1)进行全排列,直到走到只有一个元素,就保存结果,然后返回,返回后会再之前固定的元素交换回原来的位置。

2024-10-08 21:34:43 204

原创 TCP半连接队列与连接队列及安全问题,syn-flood攻击及防御手段

攻击原理为发送大量伪造sync报文,服务器响应确认报文至真实客户端,真实客户端没有发起该连接请求会丢弃确认报文,此时服务端继续重试,由于超时导致服务器端半连接队列一直满,致使服务器资源全部被占用,无法接收正常的连接,常见的SYN Flood攻击:客户端在短时间内发送大量的TCP SYN包至服务器,服务器会为每个TCP SYN包分配一个特定的数据区(半连接队列),只要这些SYN包具有不同的源地址。完成第一次握手后,服务端收到后回复SYN+ACK后,服务端进入SYN_RCVD状态,连接会放入半连接队列。

2024-10-08 21:30:54 431

原创 虚拟机连不上校园网?关于WMware的NAT模式和桥接模式

虚拟机突然连不上校园网了,发现是虚拟机桥接模式的原因。。。为什么??,先了解一下NAT 模式和桥接模式的原理和区别。

2024-10-08 21:06:43 634

原创 堆排序相关

建完堆后找最值,大根堆的最大值就是根,把根(数组第0个元素)与数组最后一个元素交换也就是放在数组尾部,数组长度-1(放在后面的不参与下次的构建,-1也方便下次根与最后元素的交换操作),然后调整那个新的根,得到新的大根堆,重复之前的操作(求下一个最大值树有几层就有几次操作)。2.2调整堆顶(放入后面的不参与,数组长度-1就是把那个元素除去要调整的范围了)2.1最值的放入后面,数组长度-1。调整: 找孩子中的最大值max与父亲比较。父节点一定比孩子节点大的完全二叉树。父节点一定比孩子节点小的完全二叉树。

2024-09-22 21:05:48 171

原创 插入排序相关

2.2倒序遍历有序数组,进行比较比有序大就放在有序的后面,比有序小就有序最后一个后移,无序的继续向前比较。核心思想:,分成两部分,一部分有序,一部分无序,将无序元素依次插入到有序的里面。最好O(n) 最坏O(n²) 平均O(n²)如果插入里面没有交换操作,要走n-1趟。1.标记有序的右边界,无序的左边界。2.循环将无序插入到有序。2.1保存当前的无序元素。

2024-09-22 20:15:21 181

原创 选择排序相关

遍历保存最小值的下标,放在对应的位置上,与对应位置上的数交换位置。

2024-09-22 19:41:06 133

原创 冒泡排序详解及优化

显然是不是的,那么我们怎么判断有序元素的范围,其实在冒泡排序中每次遇到不符合排序规则的元素就会发生交换,那么我们记录一下最后交换元素的位置,那他的后面就都是符合排序规则的有序元素。我们需要对所有元素进行排序没走一趟都会将最大/小值放在后面, 那么 i 在算法中的含义可以理解为后面有序元素的个数。首先 -i 是减去了后面有序元素的个数, 因为已经有序的元素就是已经确定了的, 不需要再次参与比较。那么既然i代表后续有序元素的个数,那么是不是有序一定是一个一个放在后面的?在内层循环比较中, 为什么比较的次数是。

2024-09-22 19:22:59 266

原创 归并排序的核心思想和实现

归并排序将待排序的数组不断地分割成较小的子数组,直到每个子数组只有一个元素,这个过程需要 (以 2 为底)的时间,因为每次分割都是将数组的规模减半。然后将这些子数组合并成有序的数组,合并操作需要n的时间,因为每次合并都要遍历整个数组。2.处理左和右: 左 起始~mid,右 mid+1~结束, 处理: 将数组变为有序。每次合并两个子数组时,都需要创建一个新的临时数组来存储合并后的结果。在归并过程中,需要额外的空间来存储临时的子数组。将多个有序数组进行合并变成一个有序的。1.获得中间位置mid。

2024-09-22 16:40:13 185

原创 快排的挖坑填补法和区间分割法以及快排的优化方案

3.遍历结束后把标准值(最后一个元素arr[end])与small+1的位置上元素交换。因为快排最理想的状况是标准值是中位数,多种标准值选择有利于避免选到极值作为标准值。先找一个标准值,将小于标准值的放在左侧,大于标准值的放在右侧,两边再重复此操作。标准值聚集,可以把与标准值相同的放到最左或最右,最后再与标准值的左或右边交换。如果选择begin为标准值那么就要在后面找一个小于标准值的元素填上。如果选择end为标准值那么就要在前面找一个大于标准值的元素填上。标准值的位置是第一个坑的位置。

2024-09-22 15:30:49 211

原创 Linux常用命令和函数

线程回收,接受线程返回值,如果不回收会引发僵尸线程(TCB)残留,默认情况下,线程均是回收态线程(PTHREAD_JOINABLE),这类线程退出后,需要进行join回收操作,否则导致内存泄露引发僵尸线程(TCB)残留。sigaction(SIGINT(对那个信号操作),&act(新的信号行为结构体),&oact(传出参数,传出旧的信号行为结构体,不要就传NULL))进程传递的数据被保存在info结构体中,整形被保存在info->si_int,地址数据被保存在info->si_ptr。

2024-08-08 19:10:44 594

原创 算法 归并排序

3.合并(合并两个有序数组,方法有点像合并两个有序链表)核心思想:将多个有序数组进行合并变成一个有序的。1.获得中间位置mid。2.左 起始~mid。右 mid+1~结束。

2024-07-24 15:24:06 249

原创 算法 基数排序

获得最大值位数(有几位处理几次,比如最大值是3位数,那么要进行个位十位百位三次处理)按位处理(从低到高每位都进行下面的处理,如果使用int存储数据最多进行十次)LSD低位优先 MSD高位优先。基于非比较,一定是稳定的。申请表头10个指针 0~9。元素根据规则入组(尾插)

2024-07-23 20:10:03 274

原创 算法 桶排序

1.进行桶的定义(申请表头数组(指针数组)) 指针别忘了初始化为null。2.元素根据分组规则入组。3.对各组的链表进行排序。

2024-07-23 19:51:44 150

原创 算法 堆 堆排序

建完堆后找最值,大根堆的最大值就是根,把根(数组第0个元素)与数组最后一个元素交换也就是放在数组尾部,数组长度-1(放在后面的不参与下次的构建,-1也方便下次根与最后元素的交换操作),然后调整那个新的根,得到新的大根堆,重复之前的操作(求下一个最大值树有几层就有几次操作)。2.2调整堆顶(放入后面的不参与,数组长度-1就是把那个元素除去要调整的范围了)大根堆:每个父节点元素都要大于他的子节点元素。小根堆:每个父节点元素都要小于他的子节点元素。调整: 找孩子中的最大值max与父亲比较。

2024-07-23 19:31:33 289

原创 算法 快速排序QuickSort

2.遍历数组,如果数组元素比标准值小: 小区间扩张,arr[small+1]与arr[i]当前值进行交换。1.定义一个small边界,初值为begin-1 定义一个标准值为数组最后一个元素arr[end]先找一个标准值,将小于标准值的放在左侧,大于标准值的放在右侧,两边再重复此操作。标准值聚集,可以把与标准值相同的放到最左或最右,最后再与标准值的左或右边交换。3.遍历结束后把标准值放在small+1的位置上。从左向右找比标准值大的放入右侧坑。3.从右向左找比标准值小的放入左侧坑。1.找个标准值(枢轴)

2024-07-23 16:51:41 315

原创 算法 计数排序CountSort

/ 得到名次i < nSize;i++) {

2024-07-23 15:41:53 870

原创 算法 希尔排序ShellSort

随着增量逐渐减少,每组包含的关键词越来越多,当增量减至 1 时,整个文件恰被分成一组,算法便终止。希尔排序是插入排序的一种又称“缩小增量排序”,是直接插入排序算法的一种更。希尔排序是把记录按下标的一定增量分组,对每组使用。插入排序的放大版,分组,各组分别Insert。

2024-07-23 15:17:06 212

原创 算法 插入排序

2.2倒序遍历有序数组,进行比较比有序大就放在有序的后面,比有序小就让有序的后移,无序的继续向前比较。核心思想:,分成两部分,一部分有序,一部分无序,将无序元素依次插入到有序的里面。: 1.元素少(小于16个) 2.距最终排序位置不远时。2.1保存当前的无序元素。插入里面没有交换操作,要走n-1趟。1.标记有序的右边界,无序的左边界。2.循环将无序插入到有序。

2024-07-23 15:12:02 273

原创 算法 选择排序

遍历保存最大值的下标,放在对应的位置上,与对应位置上的数交换位置。

2024-07-23 15:07:47 211

原创 算法 冒泡排序

标记上一次最后交换的位置,下次遍历到他就可以结束了。相邻的两个元素进行大小比较,前>后交换。

2024-07-23 15:06:33 216

原创 算法 AOV网,拓扑排序

AOV网是有向图的一类应用,在AOV网中,用顶点表示某个有一定规模的“工程”里的不同活动,用图中的边表示各项活动之间的先后顺序关系。用来为一个项目中具备依赖关系的活动求可执行的线性顺序,为DAG有向无环图服务,两者是充分必要条件。用来为一个项目中具备依赖关系的活动求可执行的线性顺序,为DAG有向无环图服务,两者是充分必要条件。如果剩下入度非0的顶点,就说明中有回路,不存在拓扑序列。4.有新的入度为0的顶点就加入队列保存再重复3。4.有新的入度为0的顶点就加入队列保存再重复3。2.把入度为0的顶点加入队列。

2024-07-22 20:24:49 706

原创 算法 回溯法backTracking---字符串的排列组合

无重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合,字符串每个字符均不相同。

2024-07-22 20:12:53 269

原创 Linux 文件系统ext2

磁盘一个扇区大小为512字节格式化:磁盘分成若干BLOCK,可以设置为 1024,2048,4096---4kb 叫做一个IO块(IO操作的最小单元)1Block = 4096(byte) = 8扇区(1扇区大小为512byte) 1Block = 32768(bit)多个block用Block Group管理PC文件系统之前有一个大小的记录磁盘分了几个区占一个块,记录了块的大小,文件系统版本号,上次mount(挂载)的时间。

2024-07-20 20:51:43 666

原创 Linux 文件IO

从终端设备或网络读则不一定,如果从终端输入的数据没有换行符,调用read读终端设备就会阻塞,如果网络上没有接收到数据包,调用read从网络读就会阻塞,至于会阻塞多长时间也是不确定的,如果一直没有数据到达就一直阻塞在那里。和fseek一样,偏移量允许超过文件末尾,这种情况下对该文件的下一次写操作将延长文件,中间空洞的部分读出来都是0。CPU处于该进程的上下文环境中,程序计数器(eip)里保存着该进程的指令地址,通用寄存器里保存着该进程运算过程的中间结果,正在执行该进程的指令,正在读写该进程的地址空间。

2024-07-19 18:50:06 773

原创 Linux小问题

ln -s aa xx,ln aa yy,硬链接是给文件内容再定义一个inode链接计数器会+1删除源文件后新的不会失效链接计数器会-1,符号连接是给文件的inode定义一个inode,链接计数器不会增加,删除源文件,符号链接会失效。一次编写,终身受益,重用性极强,不用再写复杂的编译命令,节省编译时间,第一次编译的时候不会节省编译时间,会把.c文件编译成.o文件保存,下次编译只会编译修改过的.c文件,根据.c文件和.o文件的创建时候来判断是否修改。查看变量:print(p) 变量名。逐语句:step(s)

2024-07-19 14:13:31 22

原创 数据库小问题

第一范式:每个列都是原子的不可再分。第二范式:每个非主键列,必须依赖整个主键,不能是主键的一部分。第三范式:每个非主键列,必须直接依赖于主键,不能依赖其他非主键列。事务transaction是一组sql语句,作为一个单元,要么全部执行,要么全不执行。ACID原子性:事务是一个原子操作单元,要么全部执行,要么全不执行。一个错误全部回滚。一致性:事务在开始和完成时数据库的完整性约束没有被破坏,事务开始之前和结束之后数据库状态必须保持一致。隔离性:多个事务并发执行时,每个事务都应该与其他事务隔离。

2024-07-19 12:19:58 953

原创 MySQL 数据库的几种范式

第一范式 (1NF):第二范式 (2NF):第三范式 (3NF):

2024-07-19 11:30:54 157

原创 计算机网络小问题

CS模型是一种网络架构指的是客户端服务端模型客户端指定,协议任意,特点是双向通信:客户端发送请求,服务端处理并返回结果,专用服务器:服务器通常是专门的硬件设备或网络服务,分布式:支持在不同的物理位置上部署服务器和客户端,通过网络进行通信。

2024-07-19 11:25:05 117

原创 Linux Makefile

没有数据类型,默认都是字符串。变量名可以由字母、数字、下划线构成,不能以数字开头,为了于高级语言区分,一般都使用全大写。使用:$(变量名)

2024-07-18 12:56:59 1231

原创 Linux 编译和调试

调试。

2024-07-18 10:19:23 507

原创 Linux 用户管理

此命令删除用户bowen在系统文件(主要是/etc/passwd,/etc/shadow,/etc/group等)中的记录,同时删除用户的主目录。想让新创建的用户使用sudo需要在 /etc/sudoers.d/目录下创建一个与新用户同名的文件,文件内容为。常用的选项是-r,他的作用是把用户的主目录一起删除。-m 用户家目录不存在时,自动创建该目录。-g 指定所属组,该组必须已经存在。-G 指定附属组,该组必须已经存在。sudo passwd 要设置密码的用户名。这样新创建的用户就可以使用sudo了。

2024-07-17 18:06:28 190

原创 Linux VIM

Vi是“visual interface”的简称,它在linux上的地位就仿佛edit程序在DOS上一样。它可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制。Vi不是一个排版程序,它不像word或wps那样可以对字体、格式、段落等其他属性进行编排,它只是一个文本编辑程序。Vi没有菜单,只有命令,且命令繁多。Vi有三种基本工作模式+ 命令模式+ 文本输入模式+ 末行模式。

2024-07-17 17:29:52 1047

原创 Linux 关机重启

shutdown –c 将刚才下的 shutdown指令取消,必须切换至其他tty,登入之后,才能下次一指令。shutdown –t3 –r now 立刻重新开机,但在警告和删除processes之间,延迟3秒钟。-t 秒数:设定在切换至不同的runlevel之前,警告和删除二讯号之间的延迟时间(秒)。shutdown –h 10:42 ‘Hey|Go away|’ 10:42分关机.-n:不经过init,由shutdown指令本身来做关机动作。-f:重新开机时,跳过fsck指令,不检查档案系统。

2024-07-17 16:09:49 283

原创 Linux 其他命令

可以查看命令和函数的帮助文档,man 2可以看系统函数的帮助文档,man 3可以看库函数的帮助文档。shift-pageup 上翻。shift-pagedown 下翻。并不是真正的清除了而是把记录都翻上面去了。新开终端 ctrl+shift+n。创建终端 Ctrl+Shift+t。切换标签 Alt+n (n=1)

2024-07-17 16:09:29 293

原创 Linux 网络管理

有时我们想从网络上的某台主机上下载文件,可是又不知道那台主机是否开着,就需要使用ping命令查看。不带参数使用nslookup命令时,出现提示符“>”,在后面输入要查询的IP地址或域名并回车即可。查询用户的信息,通常会显示系统中某个用户的用户名、主目录、停滞时间、登录时间、登录shell等信息。给网卡ens33配置临时IP sudo ifconfig ens33 IP。如果用户已经设置好域名服务器,就可以用这个命令查看不同主机的IP地址对应的域名。查询一台机器的IP地址和其对应的域名。

2024-07-17 12:00:38 393

原创 Linux 进程管理

ps命令用于监控后台进程的工作情况,因为后台进程是不和屏幕键盘这些标准输入/输出设备进行通信的,所以如果需要检测其情况,便可以使用ps命令了。参数job是一个或多个进程的PID,或者是命名名称,或者是作业号(作业号前面要带一个%号)。其中,job是一个或多个进程的PID、命令名称或者作业号,在参数前要带%号。RSS 进程使用的驻留集大小或者是实际内存的大小,kbytes字节。)状态的进程,15不可以,9号信号能结束的进程更多所以我们用的更多的是9。VSZ 进程所使用的虚存的大小(Virtual Size)

2024-07-17 11:42:44 541

原创 Linux 压缩包管理

打bz2压缩包:tar jcvf 包名(xxx.tar.bz2) 文件或目录名。打gz压缩包:tar zcvf 包名(xxx.tar.gz) 文件或目录名。打tar压缩包:tar cvf 包名(xxx.tar) 文件或目录名。打zip包:zip -r 包名(xxx.zip) 文件或目录名。解bz2压缩包:tar jxvf 包名(xxx.tar.bz2)解gz压缩包:tar zxvf 包名(xxx.tar.gz)解tar压缩包 :tar xvf 包名(xxx.tar)

2024-07-17 10:14:22 334

原创 Linux 安装和卸载软件

sudo apt-get clean && sudo apt-get autoclean 清理无用的包。sudo apt-get install package ---reinstall 重新安装包。sudo apt-get remove package –purge 删除包,包括配置文件等。sudo apt-get build-dep package 安装相关的编译环境。sudo apt-get dist-upgrade 升级系统。sudo apt-get upgrade 更新已安装的包。

2024-07-17 09:37:55 239

空空如也

空空如也

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

TA关注的人

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