- 博客(117)
- 资源 (1)
- 收藏
- 关注
原创 合并整理(一)Docker常用命令
DockerDocker包括三个基本概念:镜像(Image)、容器(Container)、仓库(Repository)文章目录DockerDocker hello worldDocker 容器使用运行一个 web 应用Docker 镜像使用管理镜像创建镜像更新镜像构建镜像Docker 容器连接容器互联配置 DNSDocker 仓库管理Docker Dockerfile常用指令Docker ComposeDocker MachineSwarm 集群管理项目记录Docker hello world输出
2021-09-14 18:10:15 554 2
原创 数据结构(十)常用排序算法(插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序)
以下是我学习 常用排序算法 写的代码,及其注释我个人对排序的理解:其中包括: 插入排序 — 有序放到前面,拿无序中第一个数跟有序中的数比较大小,找到合适位置插入; 希尔排序 — (分组插排、缩小增量排序),当分组的个数为1时就排好了; 选择排序 — 有序放到前面,临时变量记录无序中最小数的下标,将其值与无序中第一个数交换(最小的记录下,比完交换); 堆排序 — 冒泡排序 — 有序放到后面,搬西瓜原理,将无序中最大的往后放(有大的就交换,往后冒泡); 快速排序 — 归并排序 —#includ
2020-09-05 16:42:58 326
原创 计算机网络总结
1、TCP/IP 模型2、TCP/IP各层的协议和接口ARP的存在层是有争议性的,书上有说,它在网络层进行封装(在IP报头之后)一般在数据链路层进行广播寻求MAC地址时,才会触发它3、各层基本概念//物理层: 该层为上层提供了一个传输数据的可靠的物理媒体,物理层确保了原始数据在各种物理媒体上传输//数据链路层数据链路层在不可靠的物理介质中提供可靠的传输。在物理层提供的服务基础上向上级提供
2020-08-21 20:33:45 3098 5
原创 基础算法总结(四)Algorithm(回溯 Back Tracking)
回溯(Back Tracking)BT定义: 回溯是一种通过穷举所有可能情况来找到所有解的算法。 如果一个候选解最后被发现并不是可行解,回溯算法会舍弃它,并在前面的一些步骤做出一些修改,并重新尝试找到可行解。 回溯算法一般会结合在搜索算法中。题目目录:第1题 电话号码的字母组合第2题 二进制手表第3题 组合总和第4题 活字印刷第5题 N皇后第6题 N皇后II第1题 电话号码的字母组合/*来源:力扣(LeetCode)链接:https://leetcode-cn.c
2020-08-09 11:34:44 312
原创 基础算法总结(三)Algorithm(广度优先搜索 Breadth First Search)
广度优先搜索(Breadth First Search) ------ 一石激起千层浪Bfs(){ 1. 建立起始步骤,队列初始化 2. 遍历队列中的每一种可能,whlie(队列不为空) { 通过队头元素带出下一步的所有可能,并且依次入队 { 判断当前情况是否达成目标:按照目标要求处理逻辑 } 继续遍历队列中的剩余情况 }}题目目录:第1题 迷宫问题第2题 员工的重要性第3题 N叉树的层序遍历第4题 腐烂的橘子第5题 单词接龙第
2020-08-09 11:18:55 424
原创 基础算法总结(二)Algorithm(深度优先搜索 Depth First Search)
深度优先搜索(Depth First Search)------ 一条道走到黑Dfs(当前这一步的处理逻辑) { 1. 判断边界,是否已经一条道走到黑了:向上回退 2. 尝试当下的每一种可能 3. 确定一种可能之后,继续下一步 Dfs(下一步)}题目目录:第1题 盒子放卡牌第2题 员工的重要性第3题 图像渲染第4题 岛屿的周长第5题 被围绕的区域第6题 岛屿数量第7题 岛屿的最大面积第1题 盒子放卡牌/*深度优先搜索(Depth First Search)---
2020-08-09 11:03:06 467
原创 基础算法总结(一)Algorithm(动态规划 Dynamic Programming)
动态规划(Dynamic Programming)DP定义: 动态规划是分治思想的延伸,通俗一点来说就是大事化小,小事化无的艺术。 在将大问题化解为小问题的分治过程中,保存对这些小问题已经处理好的结果,并供后面处理更大规模的问题时直接使用这些结果。动态规划具备了以下三个特点: 1. 把原来的问题分解成了几个相似的子问题。 2. 所有的子问题都只需要解决一次。 3. 储存子问题的解。动态规划的本质: 是对问题状态的定义和状态转移方程的定义(状态以及状态之间的递推关系)。动态规
2020-08-09 10:40:40 681
转载 科普类(三)ASCII编码,GB2312,GBK,unicode,UTF-8,UTF-16 的关系及发展史
很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为”字节“。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为“计算机”。开始计算机只在美国用,八位的字节一共可以组合出256(2的8次方)种不同的状态。 他们把其中...
2020-04-13 14:09:41 230
原创 小应用程序设计(五)通讯录(纯C语言写的,动态内存开辟,文件存储)
通讯录该通讯录中联系人信息包括:姓名性别年龄电话地址程序代码完善过程:简单的通讯录 》动态内存开辟 》文件方式存储该通讯录小程序实现了:增加 联系人删除 联系人修改 联系人查找 联系人排序 所有联系人显示 所有联系人清空 所有联系人重要部分(重点所在):使用动态内存开辟的方式,实现了当联系人数量到达上限时进行扩容的操作;并通过文件管理的方式,对通...
2020-02-21 16:03:48 337
原创 C语言(九)文件操作(二)
文件操作1.打开文件2.关闭文件3.读文件4.写文件5.文件的随机读写1.打开文件FILE* fp = fopen("文件路径","打开方式");"r", "w", "r+"return 0或非零:是进程的退出码<errno.h>int main(){ FILE* fp = fopen("./test.txt", "r"); if(fp == ...
2020-02-20 14:39:41 215
原创 C语言(八)文件操作(一)
文件操作文件是存在磁盘(或硬盘)中的,由操作系统管理的,打开文件会将文件加载到内存中,而内存掉电,数据会丢失,因此在对文件进行修改之后需要将内存中的数据写入到磁盘中去,即在对文件进行操作之后需要进行保存。在Linux中一切皆是文件,目录也是一种文件,是一种特殊文件(目录文件)。Linux中有7种文件类型:文件类型标识文件类型-普通文件d目录文件l符号链接文...
2020-02-20 11:54:17 285
原创 C语言(七)自定义类型(结构体,枚举,联合)踩过的坑
1.结构体struct主要要考虑到结构体在内存中的布局1.1 匿名结构体C语言支持匿名结构体,但在实际中没啥用,匿名结构体很少用。匿名函数(lambda 入 表达式)(回调函数)在实际中特别有用,但C语言不支持。// 匿名结构体类型struct{ int a; char b; float c;}x;struct{ int a; char b; float c;}a[...
2020-02-17 12:38:46 479
原创 Python(一)Python+OpenCV写的程序,用于批量裁剪图片
最近学习网络在线课程的过程中,为了课后复习方便,用手机截取了大量的图片,但截取的图片文件大占内存,且有左右的黑色无信息区域。想将这些图片打印出来作为课件留存,但左右的黑色区域不仅会耗费大量打印油墨,而且打印出来不美观。因此我自己写了一个Python程序使用OpenCV库的简单函数实现了对大量图片进行批量截图,截取需要的部分并保存:import cv2import os # """先保存文件...
2019-09-21 21:29:52 4153
原创 为什么全局变量必须用常量或常量表达式初始化?
最近在做项目时遇到的问题:宏定义后赋值的问题???并不是这个问题,跟宏没有关系,而是全局变量必须用常量或常量表达式赋值。我就很纳闷了,刚开始以为是宏定义不能够将赋值的变量再次赋给另一变量,纠结了好久,看来问题不在这儿,想想应该是全局变量不能够用变量初始化的原因,查询后总结如下:编译器无法在编译时求得一个非常量的值,它只能在运行时通过读取变量地址来间接得到变量的值,而全局变量在编译时就必...
2019-08-12 14:20:18 2160
原创 数据结构(九)排序基础(插入排序、选择排序、冒泡排序)
以下是我学习排序基础写的代码,及其注释我个人对排序的理解:其中包括: 冒泡排序、选择排序、插入排序.冒泡 — 有序放到后面,搬西瓜原理,将无序中最大的往后放(有大的就交换)选择 — 有序放到后面,小本本记录下标位置,最后比较晚往后放(最大的记录下,比完放)插入 — 有序放到前面,拿无序中的数跟有序中的数比较大小,找到合适位置插入#include <stdio.h>#incl...
2019-04-14 20:26:22 213
原创 数据结构(八)二叉堆 及排序
以下是我学习二叉堆的总结:#include <stdio.h>#include <assert.h>/** * 时间复杂度 O(log(n)) * 空间复杂度 O(1) * int tree[] 和 int size 合起来表示装堆的值的数组 * int rootIdx 表示要调整的结点的下标 */// 向下调整的代码void AdjustDown(i...
2019-04-13 21:11:56 167
原创 数据结构(七)二叉树 的一些题目(遍历 判断)
以下是我学习二叉树时做的一些题目的总结:#pragma once#include <stdlib.h>#include <stdio.h>#include <string.h>#include <assert.h>typedef struct Node { char value; struct Node *left; struc...
2019-04-13 21:09:53 435
原创 数据结构(六)二叉树 的一些题目
以下是我学习二叉树时做的一些题的总结:#pragma once#include <stdlib.h>#include <stdio.h>typedef struct Node { struct Node *left; struct Node *right; char value;} Node;//遍历树(前序,中序,后序)void Preorder(...
2019-04-13 21:05:18 188
原创 Linux(二)进程创建 fork() 关于 代码共享,数据独有 的理解
fork() 进程创建:需要包含头文件: <unistd.h>fork( ) 通过复制调用进程(就是复制了PCB),创建一个新的进程(子进程)子进程复制的就是父进程的PCB,(父子进程数据,代码看起来都一样)复制PCB — 代码共享(子进程并非从头开始),数据独有创建子进程的意义: 压力分摊 或 干其它事情如何分辨子进程: 返回值用返回值区分父子进程:父进程返回的是子...
2019-04-10 09:52:02 588
原创 Linux(一)进程创建 fork()
进程创建:创建进程使用 fork() 函数需要包含头文件 <unistd.h>fork( ) 通过复制调用进程(就是复制了PCB),创建一个新的进程(子进程)进程创建的源代码:#include <stdio.h>#include <unistd.h>int main(){printf("parent pid: %d\n",getpid());in...
2019-04-10 09:19:59 199
原创 SSH Secure File Transfer上传文件错误:encountered 1 errors during the transfer 的解决办法
SSH Secure File Transfer上传文件错误:encountered 1 errors during the transfer 的解决办法在使用SSH Secure File Transfer从本地向虚拟机传输文件时,提示错误:encountered 1 errors during the transfer!查了一下,原因是本地文件的路径中存在括号,将括号去掉或者把文件复制换...
2019-04-09 15:42:39 816
原创 数据结构(五)二叉树 基本操作
以下是学习二叉树时写的代码:typedef struct Node { int value; struct Node *left; struct Node *right;} Node;// 根 左子树 右子树void preorderTraversal(Node *root) { // 空树 if (root == NULL) { return; } printf("%...
2019-04-02 21:28:37 87
原创 数据结构(四)队列 和 栈
队列.h#include <queue>void Test() { std::queue<int> q; q.push(1); q.push(2); q.push(3); // 1, 2, 3 q.front(); // 1 q.pop(); // 2, 3 q.front(); // 2 q.pop(); // 3 q.size()...
2019-04-02 21:25:19 136
原创 数据结构(三)链表的基础以及扩展
以下是我在学习 链表 及其相关接口扩展操作时写的代码:1.函数定义的 .c 文件#include "LinkedList.h"#include <stdio.h>#include <stdlib.h>#include <assert.h>//1.初始化 / 销毁void LListInit(LList *llist) { llist->f...
2019-04-02 21:10:31 337
原创 数据结构(二)链表的相关操作
以下是我在学习 链表 及其相关接口操作时写的代码:1.函数定义的 .c 文件#include "LinkedList.h"#include <stdio.h>#include <stdlib.h>#include <assert.h>//1.初始化 / 销毁void LListInit(LList *llist) { llist->fir...
2019-03-21 19:08:59 150
原创 数据结构(一)顺序表的相关操作
以下是我在学习 顺序表 及其相关接口操作时写的代码:1.函数定义的 .c 文件#include "SequenceList.h"#include <stdio.h>#include <stdlib.h>#include <assert.h>//O(n)//static 修饰函数更改连接属性,从外部链接属性改变为内部链接属性//1.检查数据插入时...
2019-03-18 16:41:09 161
原创 C语言(五)写二分查找时犯的错,有关数组元素个数计算位置的问题
在今天写顺序表时,遇到了一些之前没注意的问题该问题是关于计算数组元素个数(即数组长度)的方法和位置问题代码:#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;int BinaryFind(int arr[], int v){ int left = 0, mid = 0, right = sizeof(arr) / sizeof(ar...
2019-03-18 16:32:22 172
原创 科普类(二)先有鸡还是先有蛋?看看C语言怎么说......
先有第一只鸡还是先有第一只鸡蛋?这是个悖论。先解释一下: 悖论—逻辑学指可以同时推导或证明两个互相矛盾的命题的命题或理论体系。没有鸡哪儿来的鸡蛋呢?同样,没有鸡蛋怎么孵出鸡呢?计算机语言中其实也有类似的现象。以C语言和它的编译器gcc为例。C语言的编译器是用C语言写的,这样看来应该先有C语言。可是如果没有C语言编译器,C语言也没法运行。这里C语言就好像鸡蛋,而C语言编译器就好像是鸡。鸡孵...
2019-03-14 16:15:47 799
原创 C语言(四)通用的排序函数qsort()对于double 类型数据排序时遇到的问题及解决
qsort()是C标准库中的一个通用的排序函数.qsort 的函数原型是:void qsort(voidbase, size_t num, size_t width, int(__cdeclcompare)(const void*,const void*));各参数:1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针qsort既能对整型数据进行排序...
2019-03-12 14:49:01 3123
原创 C语言(三)图解: 一级指针 和 二级指针, 数组 和 指针, 指针数组, 数组指针, 数组指针数组
以下是我学习一级指针和二级指针,数组和指针,指针数组,数组指针,数组指针数组的总结,画图更容易理解:①一级指针:是指针,该指针指向一块内存,该指针变量存放的就是这块内存的地址,这样说不直观,用图解释会简单明了:图解一级指针:②二级指针:是指针,该指针指向一个一级指针,该二级指针变量存放的就是一级指针的地址,这样说不直观,用图解释会简单明了:图解二级指针:③指针和数组指针...
2019-03-11 16:10:16 608 4
原创 C语言(二)使用fgets()代替gets()
在linux下C语言使用到gets这个函数,但是出现了如下警告:warning: ‘gets’ is deprecated (declared at /usr/include/stdio.h:638)虽然能够运行,但是看起来不是很好看,网上查找,发现可以用fgets函数来替代它。具体如下:gets函数由于它没有指定输入字符的大小,如果输入字符大于定义的数组长度的时候,那么就会发生内存越界...
2019-03-01 17:31:08 2623
原创 科普类(一)关于时间复杂度
百度百科:https://baike.baidu.com/item/时间复杂度/1894057?fr=aladdin别人CSDN的借鉴:https://blog.csdn.net/junjunba2689/article/details/78629771别人图解时间复杂度:http://www.cnblogs.com/jiqing9006/p/7615254.html杨氏矩阵关于时间复杂度的...
2018-11-27 20:08:22 149
原创 笔试题目(13)杨氏矩阵关于时间复杂度
杨氏矩阵:有一个二维数组.数组的每行从左到右是递增的,每列从上到下是递增的.在这样的数组中查找一个数字是否存在。如果存在返回坐标,不过不存在,返回不存在.时间复杂度小于O(N);例如数组:1 2 34 5 67 8 9【解决思路】:简单的办法是将二维数组遍历一遍,依次比较,但是这样的话时间复杂度肯定大于o(n),不符合题目要求。我们要想做到时间复杂度小于o(n),只能根据杨氏矩阵的性...
2018-11-27 20:07:04 474
原创 C语言(一)关于ungetc(ch, stdin);语句的使用
#define _CRT_SECURE_NO_WARNINGS#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;int main(){ int i = 0; int sum = 0; char ch; printf("请输入一串整数和任意数目的空格:"); while (scanf("%d&q
2018-11-26 11:03:06 4046 1
原创 小应用程序设计(四)扫雷游戏--更改(遇到‘0‘自动连续揭开‘0‘)
#define _CRT_SECURE_NO_WARNINGS#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;time.h&gt;#define TABLE_ROW 10#define TABLE_COL 10#define MINE_NUM 10void Menu(void){ //游戏菜
2018-11-26 10:34:14 167
原创 小应用程序设计(三)扫雷游戏(遇到‘0‘自动揭开周围8个)
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <time.h>#define TABLE_ROW 10#define TABLE_COL 10#define MINE_NUM 10void Menu(void){ //游戏菜单 p...
2018-11-26 10:32:25 305
原创 C++(一)C++中using namespace std 的作用
C++编程时几乎每次都敲上using namespace std;但这行代码究竟有什么作用呢?C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。早些的编码将标准库功能定义在全局空间里(所以并不需要注明使用什么命名空间),声明在带.h后缀的头文件里。C++标准为了和C区别开,也为了正确地使用命名空间,规定头文件不使用后缀.h。因此,当使用&amp;lt;iostream.h&amp;...
2018-11-26 10:26:08 39200 1
原创 小应用程序设计(二)三子棋小游戏
#define _CRT_SECURE_NO_WARNINGS#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;time.h&gt;#define ROW 3#define COL 3char g_board[ROW][COL];void Init(){ for (int row =
2018-11-12 20:36:20 227
原创 笔试题目(12)星号组成的菱形(任意大小)
#include "stdio.h"#include "stdlib.h"void space(i,row){ for (int k = 1; k &lt;= (row - i) / 2; ++k) //星号前或后应打印(j-i)/2个空格 { printf(" "); }}void star(i){ for (int l = 1; l
2018-10-31 10:26:33 337
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人