- 博客(17)
- 收藏
- 关注
原创 Docker学习笔记
将本地文件home/jackbewater/tomcat/test和/home/jackbewater/tomcat/tomcatlogs分别挂载到容器内的/usr/local/apache-tomcat-9.0.88/webapps/test和/usr/local/apache-tomcat-9.0.88/logs上(绑定挂载)而且,随着容器的运行,容器的内的数据会越来越大,这样不方便恢复和迁移。指定容器在运行时监听的网络端口,它并不会公开端口,仅起到声明的作用,公开端口需要容器运行时使用-p参数指定。
2024-05-05 19:08:54
658
2
原创 Ansible学习笔记
Ansible是一种开源的自动化工具,用于配置管理、应用程序部署、任务自动化和多台计算机系统之间的协调。它是一种基于Python语言的配置管理和自动化平台。通过SSH管理受控节点,将各种模块小程序推送到受控节点,并完成playbook的任务,完成后受控节点会自动删除这些模块。Ansible的特点:1.声明性语法: Ansible使用YAML语言来描述配置文件2.无需客户端: Ansible不需要在被管理的主机上安装客户端,只需在控制节点上安装即可。这简化了部署和配置过程。
2024-01-17 21:08:36
1469
2
原创 Docker学习笔记
Docker是一种开源的容器化平台,用于将应用程序及其依赖项打包成一个可移植的容器。Docker的主要目标是简化应用程序的部署和管理,并提供更高的灵活性、可移植性和可重复性。Docker容器是一个独立运行的执行单元,包含应用程序和其依赖项。容器是轻量级的,由Docker引擎负责管理其生命周期。容器是镜像的运行实例,容器包括了运行应用程序所需的所有内容,以及一个独立的文件系统。容器是动态的,可以启动、停止、删除,并且可以在不同的环境中移植。镜像是用于创建Docker容器的模板。它。
2024-01-15 22:15:36
1786
2
原创 【Linux学习笔记/文件系统】
但是如果内存中文件数据被更改过(nano编辑文件),此时该内存中的数据会被设置为【脏的】,此时所有的操作都还是在内存中执行,并没有写入到磁盘中。因为某些原因导致系统中断,会使得最后一个同步更新元数据的步骤并没有完成,此时就会发生元数据的内容与实际数据存放区产生不一致的情况,为避免这种情况,才有了日志文件系统。与区块对照表功能类似,inode记录的是使用过与未使用的inode号码。需要注意的是,不同的文件系统(如ext4、XFS、NTFS等)在inode和数据块的管理方式可能有所不同,但基本原理是相似的。
2023-10-27 19:30:34
96
3
原创 【Linux学习笔记/常用指令和基础概念】
x 权限可以让该目录成为工作目录,x 权限是 r 和 w 权限的基础,如果不能使一个目录成为工作目录,也就没办法读取文件列表以及对文件列表进行修改了。说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则 它会把前面指定的所有文件或目录复制到此目录中。1. 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将 所给的源文件或目录重命名为给定的目标文件名。功能:对于目录,该命令列出该目录下的所有子目录与文件。
2023-10-07 16:06:55
106
3
原创 【题目/相交链表】双指针法
这种双指针法的关键在于,通过在到达链表末尾时将指针移到另一个链表的头部,可以使两个指针最终相遇在相交节点处,或者同时到达链表末尾。这种方法具有时间复杂度O(m + n),其中m和n分别是链表A和链表B的长度。// 将链表A的节点插入set中。// 如果任一链表为空,则不存在相交节点。// 当两个指针相遇时,就是相交节点,或者它们都为空,表示没有相交节点。// 如果一个指针到达链表尾部,将其移到另一个链表的头部。
2023-09-17 10:19:32
58
2
原创 【题目/合并两个有序链表】
这个函数的目的是将两个有序链表合并成一个新的有序链表,它的时间复杂度是 O(m + n),其中 m 和 n 分别是两个输入链表的长度。这是因为在循环中,我们只需遍历一次两个输入链表,并将节点连接到新链表中。不断重复步骤2,直到其中一个链表为空。这时,将另一个非空链表的剩余部分连接到。的第一个节点是一个虚拟节点,不包含实际数据。作为合并后的链表,同时创建一个指向。当前节点的值,选择较小的节点连接到。向前移动一个节点,以准备下一次比较。进入一个循环,条件是。
2023-09-15 17:21:43
41
原创 【题目/删除排序链表中的重复元素】
这个函数对于删除链表中的重复元素是一个常见的解决方法,它具有时间复杂度为 O(n) 的效率,其中 n 是链表中的节点数。的下一个节点不为空。这是因为在循环中需要比较当前节点和下一个节点的值,所以需要确保这两个节点都存在。指针指向下一个节点的下一个节点,以跳过这个重复节点。的值是否等于下一个节点的值(即是否是重复元素)。如果是重复元素,就将当前节点的。如果当前节点的值不等于下一个节点的值,就将。,经过这个循环后,链表中的重复元素已被删除。移动到下一个节点,以继续检查下一个节点。在循环内部,检查当前节点。
2023-09-15 17:14:46
58
原创 【题目/长度最小的字数组】滑动窗口
是否仍然等于初始值,如果是,说明没有找到满足条件的子数组,返回0;来记录找到的最小长度的子数组,初始值设置为大于数组长度的任何值。,它们分别表示滑动窗口的左边界和右边界,初始值都为0。来记录滑动窗口内元素的和,初始值为0。,表示将窗口的左边界向右移动一个位置。,如果是,则计算当前子数组的长度。比较,将较小的值更新到。进入循环,循环的条件是。中,以扩展滑动窗口。缩小滑动窗口,通过将。,以便在循环中使用。
2023-09-12 23:06:43
34
原创 【题目/找出给定目标值在数组中的开始位置和结束位置】两次二分查找,分别找出开始位置与结束位置
创建vector数组,遍历给定的数组并将与目标值相同的元素的下标,放入新数组中。再通过新数组.size()方法得出与目标值相同元素的位置。// 如果开始位置仍然是初始值 -1,说明数组中不存在目标值,直接返回 {-1, -1}right = mid - 1;//继续在左边寻找开始位置。//继续在右边寻找结束位置。// 第一个二分查找,寻找开始位置。// 第二个二分查找,寻找结束位置。时间复杂度为O(lg n)的算法。
2023-09-10 16:15:53
77
1
原创 【题目/环形链表】快慢指针法
快慢指针法可以有效地判断链表是否有环。这种方法涉及两个指针,一个快指针和一个慢指针,它们以不同的速度遍历链表。如果链表有环,快指针最终会追赶上慢指针,从而产生循环。
2023-09-10 15:14:01
39
1
原创 【题目/二分查找】第一个错误版本
这个算法的核心思想是不断缩小查找范围,通过二分法的方式快速定位第一个坏版本。这种算法的时间复杂度是 O(log n),其中 n 是版本总数。相等,此时的值就是第一个坏版本的索引,因为区间已经缩小到只有一个版本。函数应该在实际使用中定义并实现,以根据具体情况判断版本是否为坏版本。,表示查找范围是从版本1到版本n。需要注意的是,这段代码中的。使用一个循环,直到左边界。
2023-09-07 22:50:30
43
原创 C++学习笔记
protected是保护权限,类内可以访问,类外不可以访问,子类可以访问。private是私有权限,类内可以访问,类外不可以访问,子类不可以访问。②静态成员函数只能访问静态成员变量,不能访问非静态成员变量,因为编译器不知道访问的到底是哪个对象的成员变量,而静态成员变量的数据是共享的不属于某个对象,所以静态成员函数只能访问静态成员变量。成员变量和成员函数分开储存的,非静态成员变量属于类的对象上, 非静态成员函数、静态成员变量、静态成员函数均不属于类的对象上,意思就是在计算对象占用内存是这些东西不计入其中。
2023-07-08 19:46:00
47
2
原创 【C语言】初学者眼中的动态内存管理
一.C/C++程序的内存开辟二.动态内存函数的介绍1.malloc2.free3.calloc4.realloc三.常见的动态内存错误1.对NULL指针的解引用操作2.对动态开辟空间的越界访问3.对非动态开辟内存使用free释放4.使用free释放一块动态开辟内存的一部分5.对同一块动态内存多次释放6.动态开辟内存忘记释放(内存泄漏)
2023-03-08 20:12:30
78
2
原创 【C语言】初学者眼中的指针(基础向)
通过&(取地址操作符,单目操作符)取出变量的内存起始地址,把起始地址存放到一个变量中,那么这个变量就是指针变量。char* 的指针解引用就只能访问一个字节,而 int* 的指针的解引用就能访问四个字节。指针是内存中一个最小单元的编号,也就是存放数据的地方的编号,简单的来说指针就是地址。short* 类型的指针是为了存放 short 类型变量的地址。char* 类型的指针是为了存放 char 类型变量的地址。int* 类型的指针是为了存放 int 类型变量的地址。变量有着不同的类型,指针变量也有类型。
2023-01-16 12:36:24
376
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人