暂时未有相关云产品技术能力~
大一本科在读,热爱编程, 热爱敲代码,对新知识有强烈的渴望。
【Linux】进程优先级|进程并发概念|在vim中批量化注释
AnyTXT Searcher结合内网穿透实现快速在线办公搜索!
Linux Docker图形化工具Portainer如何进行远程访问
Cpolar和极简主义文件管理器:为用户提供高效稳定的个人云存储服务
如何在Docker部署Drupal并结合内网穿透实现远程访问
PostgreSQL 数据库实现公网远程连接
通过内网穿透实现文件共享,Python—行代码轻松实现公网访问
【eXtplorer】本地搭建免费在线文件管理器并实现在外远程登录
将Apache服务与内网穿透结合,让您的网站可以公网访问
【C++】递归,搜索与回溯算法入门介绍和专题一讲解
Linux 部署1Panel现代化运维管理面板&远程访问
【IIS搭建网站】本地电脑做服务器搭建web站点并公网访问「内网穿透」
【Linux】进程状态|僵尸进程|孤儿进程
使用端口映射实现Spring Boot服务端接口的公网远程调试:详细配置与步骤解析
Web网页浏览器远程访问jupyter notebook服务器【内网穿透】
【Linux】进程的基本属性|父子进程关系
群晖7.X版安装cpolar内网穿透
【C++】多态的实现及其底层原理
如何为树莓派上的WordPress博客网站配置自己的域名,并且外网可访问?
【C++】从0到1讲继承|复杂的菱形继承
启用window10专业版系统自带的远程桌面
在外远程NAS群晖Drive - 群晖Drive挂载电脑磁盘同步备份【无需公网IP】
VSCode使用Remote SSH远程连接Linux服务器【远程开发】
//简易的关机代码,下面介绍两种方法,一种方法用goto 语句,一种方法用while循环
将一面额为10元倍数的整钱(面额为大于等于10,并小于等于100)换成1元、2元和5元的零钱组合(每种面值都要有)。输入要换的面额(如10元),输出所有可能的换法数量(如2种)。
链表:顾名思义,就像一条铁链一样,把每一个铁链的链节点连接起来。 链表的基本结构如下: 链表每个节点的创建 首先,一条铁链,有多个节点,每两个节点之间会连接起来。 那么这些节点是如何创建的呢? —结构体—
1.创建结构体,对象为学生,结构体信息有学号,分数,总分,排名 2.使用函数实现不同的功能 2.1.输入学生的信息:
解决visual studio 对scanf ,strcpy,strcmp等函数的不安全警告报错 可以看到,编译器对scanf进行了报错,原因是说它不安全 编译器自己给了一种解决方案: 使用vs自带的 scanf_s,但是用这个函数,仅仅能够在vs上使用,在其他编译器可能无法使用。
1.学习总结 学习c语言已经有100天,从一个初出茅庐的无知青年,敲出第一个hello world 都激动的不行,到现在: 常见的数据类型, 变量的命名方式, 变量的分类 到变量的作用域和生命周期 常量 字符串和转义字符和注释的使用 选择语句 循环语句 函数 数组 操作符 常见的关键字 define定义常量和宏 指针 结构体 初识链表 初识文件管理等等等等 还有个人的重点笔记总结+笔试题精髓笔记
字符串函数的重点: 文章不长,是为了让你一点点消化所有内容: 在这里插入图片描述
strstr函数:在一个字符串中查找子串 学习新函数时,先去c库查找该函数的相关资料,更加助于你的学习
1.strstok函数的用法 直接看函数的声明: 参数1:要切割的地址,参数2:切割时的标记物 注意:strtok函数本身会记住第一次传过来的这个地址,第一次传过来时:如果这个地址为空,则strtok函数返回一个空指针,如果这个地址不为空,则返回传过来的首地址。 由于这个函数的第二个参数为要切割的标记物,假如这个标记物不存在,返回的也是第一次传进来的要切割的函数的首地址。 下面举例说明:
结构体重点😃 1.结构体内存对齐问题,是在计算结构体的大小时,对结构体成员在内存中的位置进行研究的问题。
什么是位段 位段的详细解释 位段其实也是一种结构体的类型 1.位段的成员是 int ,short int unsigned int , signed int , short , char 类型 2.位段的成员名后有一个冒号和一个数字 看一个例子:
BF 算法 BF 算法精讲 在学习到字符串的匹配问题时,了解到了BF算法和KMP算法。 对比这两个算法,先了解BF算法; 字符串匹配问题,比如说:有一个主串 “abbbcdef” , 子串 “bbc”,该问题就是在主串中查找子串。 肉眼可见,主串中的确存在子串bbc,返回值是子串在主串中第一次出现的首位置下标,也就是返回2. BF
KMP算法核心剖析: 关于KMP算法,建议先了解 BF算法 KMP算法是用来解决字符串匹配问题的高级算法,看完这篇文章,你应该能理解KMP算法。 KMP算法和BF算法唯一的区别在于:主串的i 并不会回退,子串的j也不会回退到0位置。 KMP算法的核心在于求出子串的next数组 所谓的next数组,其实存放的就是子串回退的位置的下标。 下面来演示如何求出一个子串的next 数组 假设有一个字符串:“ababcabcdab”, 求该字符串的next数组: 规定:next[0] = -1 , next[1] = 0 下面就来求next[2] ,next[3]…
柔性数组概念 对于柔性数组,也许你之前从未听说过,柔性数组,顾名思义,就是数组,它的柔性柔在元素个数可以动态变化, 即柔性数组是未知大小的,数组大小可以动态变化的。 在结构体中,最后一个元素允许是未知大小的数组,这个数组就叫柔性数组成员。 下面直接举例子来说明柔性数组。
大小端是什么? 计算机在内存存储中有两中存储模式: 大端字节序存储模式和小端字节序存储模式。 大端存储模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中。 小端存储模式,是指数据的低位保存在内存的低地址中,而数据的高位,保存在内存的高地址中。
整型提升: 在计算机中,一个数据的类型如果是char 类型,以整型的形式打印该char类型的值时,会自动转换成整型,叫做整型提升。 整型提升的规则: 整型提升是按照变量的数据类型的符号位来提升 举例说明整型提升的存在:
浮点数的存储规则: 根据国际标准IEEE(电气和电子工程协会) 754,任意一个二进制浮点数V可以表示成下面的形式: (-1)^S * M * 2^E (-1)^S表示符号位,当S=0,V为正数;当S=1,V为负数。 M表示有效数字,大于等于1,小于2。 2^E表示指数位。
首先分析代码,a是数组名,是数组首元素地址,&a取到整个数组的地址,+1跳过了整个数组,a强转成int*类型,然后赋值给ptr,此时ptr指向的就是数组a后面的地址,如下图:
当你遇到下图这个错误时,是由于SQLyog在8.0以上版本采用了新的加密方式。
我们知道,strcpy函数是拷贝字符串的,但是它并不能拷贝例如整型,结构体之类的东西,strcpy有一定的局限性,memcpy函数可以说涵盖了所有类型数据的拷贝。
1.为什么会存在动态内存分配? 我们现在知道的开辟内存方式是创建变量,创建数组。而这些东西是在栈区上开辟空间的,一旦创建完成,是无法更改的,是固定死的。就像数组,在创建数组时,已经指定了数组的大小,编译后无法再更改。 这时候就需要动态内存分配。
1.文件的打开和关闭 1.1 什么是文件指针? 每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名 字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统 声明的,取名FILE. 假如:我们要操作一个文件,名为text.txt ,首先要打开文件,打开文件的同时,操作系统会自动为该文件创建一个文件信息区,专门用来记录该文件的信息。
1.文件的打开和关闭 1.1 什么是文件指针? 每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名 字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统 声明的,取名FILE.
1.程序翻译环境和运行环境 假设一个test.c文件经过编译器编译运行后生成可执行文件test.exe,这中间存在两个过程: 一个是翻译,在这个环境中源代码被转换为可执行的机器指令。 一个是运行,它用于实际执行代码。 在翻译环境阶段,会进行编译和链接操作。 在汇编阶段,是将汇编指令转换成二进制指令。
1.程序翻译环境和运行环境 假设一个test.c文件经过编译器编译运行后生成可执行文件test.exe,这中间存在两个过程: 一个是翻译,在这个环境中源代码被转换为可执行的机器指令。 一个是运行,它用于实际执行代码。 在翻译环境阶段,会进行编译和链接操作。 在汇编阶段,是将汇编指令转换成二进制指令。 1.1程序翻译中的的编译和链接
1.时间复杂度 时间复杂度的定义:在计算机科学中,算法的时间复杂度是一个数学函数,它定量描述了该算法的额外运行时间。一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才知道。但是我们需要每个算法都上机测试吗?是可以都上机测试,但是这很麻烦,所以才有了时间复杂度个分析方式。一个算法所花费的时间与其中语句的执行次数成正比例,算法中的基本操作的执行次数,为法的时间复杂度。 即:找到某条基本语句与问题规模N之间的数学表达式,就是算出了该算法的时间复杂度。
以下题目均为IO型。 1.给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。