当前位置: 首页 > news >正文

【C语言进阶】 12. 假期测评①

day01

1. 转义字符的判断

以下不正确的定义语句是( )
A: double x[5] = {2.0, 4.0, 6.0, 8.0, 10.0};
B: char c2[] = {‘\x10’, ‘\xa’, ‘\8’};
C: char c1[] = {‘1’,‘2’,‘3’,‘4’,‘5’};
D: int y[5+3]={0, 1, 3, 5, 7, 9};

【答案解析】 B
本题B选项考查转义字符,有如下格式,但八进制数字是0-7,没有8,故B选项中’\8’是错误的
\ddd ddd表示1到3个八进制数 如:\130 转义为 字符X
\xhh hh表示1到2位十六进制数 如:\x30 转义为 字符0

2. &数组名和数组名

有如下定义语句,则正确的输入语句是【多选】( )

int b;
char c[10];

A: scanf(“%d%s”,&b,&c);
B:scanf(“%d%s”,&b,c);
C: scanf(“%d%s”,b,c);
D: scanf(“%d%s”,b,&c);

【答案解析】AB
&c和c两个地址值是一样的,程序的效果相同, 也没错,但同时也必须把变量b的地址给scanf, 故CD错误,AB正确

3. 动态内存开辟的使用场景

在这里插入图片描述
在这里插入图片描述
这里设计的函数返回值为int* 返回一个整数列表,如果只是单纯的在函数体内部创建整数列表作为返回值,那么就大错特错,在函数体内创建的列表只在该函数体内有效,退出函数体,函数栈帧就销毁了,该指针属于野指针
在这里插入图片描述

day02

4. 计算字符个数(转义字符)

以下程序段的输出结果是( )

#include<stdio.h>
int main()
{char s[] = "\\123456\123456\t";printf("%d\n", strlen(s));return 0;
}

A: 12 B: 13 C: 16 D: 以上都不对

【答案解析】A
这里考查转义字符,注意:==\ 表示字符’‘,\123表示字符’{',\t表示制表符,==这些都是一个字符

5. 浮点型的比较 和 数组的初始化

对于下面的说法,正确的是( )
A: 对于 struct X{short s;int i;char c;},sizeof(X)等于sizeof( s ) + sizeof( i ) + sizeof( c )
B: 对于某个double变量 a,可以使用 a == 0.0 来判断其是否为零
C: 初始化方式 char a[14] = “Hello, world!”; 和char a[14]; a = “Hello, world!”;的效果相同
D: 以上说法都不对

【答案解析】D
A选项,没有考虑内存对齐。
B选项,考察double类型的比较,由于浮点数存在误差,不能直接判断两个数是否相等,通常采用比较两数之差的绝对值是否小于一个很小的数字(具体的可自己设定这样一个数,作为误差)来确定是否相等。
C选项,a为数组首地址是常量不能改变,
在这里插入图片描述
所以A,B,C都是错的,选择D

6. while(~scanf(…))的用法

while (~scanf("%d%d",&n,&m)) 等效于 while (scanf("%d%d",&n,&m)!=EOF)​
因为读到文件的结束符时,scanf返回值是EOF,也就是-1,而~(-1)的作用就是对-1的按位取反。
-1的原码是1000 0001,因此-1的补码就是1111 1111。
~(-1)就是包括符号位都取反,变成0000 0000

day03

7. 全局变量的使用

以下程序的输出结果为( )

#include <stdio.h>
int i;
void prt()
{for (i = 5; i < 8; i++)printf("%c", '*');printf("\t");
}
int main()
{for (i = 5; i <= 8; i++)prt();return 0;
}

A: *** B: *** *** *** *** C: *** *** D: * * *

答案解析:
正确答案:A
全局变量i,在main()中修改为5,第一次在prt()中执行循环输出三次’*',i被修改为8, 回到main()中第二次调用prt()
时,i<8为假,循环结束没输出,执行一次print(“\t”),再次回到主函数后i++变为9, i<=8为假,循环结束;

8. 二分查找 和 追加思想

在这里插入图片描述

【答案解析】
暴力破解:遍历数组找出最小值即可
更优思想:采用二分查找,这个题主要分析三种旋转情况 [1, 2, 3, 4, 5],使用中间值与右端进行比较。

  1. 中间大于右边 [3, 4, 5, 1, 2],这种情况下,最小数一定在右边;则left = middle + 1
  2. 中间等于右边 [1, 0, 1, 1, 1], 这个是[0, 1, 1, 1, 1] 旋转过来的,这时候需要缩小范围 right–;,注意不能是
    left++,因为是非降序数组,所以要缩小右边范围,把较小值向右推,符合我们的判断规则。
  3. 中间小于右边 [5, 1, 2, 3, 4], 这种情况下,最小数字则在左半边;则right = middle
int minNumberInRotateArray(int* rotateArray, int rotateArrayLen) {if (rotateArrayLen == 0) return 0;int left = 0, right = rotateArrayLen - 1, mid;if (rotateArray[right] > rotateArray[left]) return rotateArray[0];while (left < right) {mid = left + (right - left) / 2;if (rotateArray[mid] > rotateArray[right]) left = mid + 1;else if (rotateArray[mid] == rotateArray[right]) right--;else right = mid;}return rotateArray[left];
}

最优思想:在数组后追加自身数组,找到第一个比之前数组元素小的数字

day04

9. for循环第一项

设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是( )
A: n=0;while(ch=getchar()!='\n')n++;
B: n=0;while(getchar()!='\n')n++;
C: for(n=0;getchar()!='\n';n++);
D: n=0;for(ch=getchar();ch!='\n';n++);

【答案解析】D
对于for循环,其中第一项初始化表达式: ch=getchar();只执行一次,因此ch只从输入流中取一个字符,
之后就再不会取字符,因此会死循环

10. 回车 == ‘\n’

若运行以下程序时,从键盘输入 ADescriptor<回车> ,则下面程序的运行结果是( )

#include <stdio.h>
int main()
{char c;int v0 = 0,v1 = 0,v2 = 0;do{switch (c = getchar()){case'a':case'A':case'e':case'E':case'i':case'I':case'o':case'O':case'u':case'U':v1 += 1;default:v0 += 1; v2 += 1;}} while (c != '\n');printf("v0=%d,v1=%d,v2=%d\n", v0, v1, v2);return 0;
}

A: v0=7,v1=4,v2=7
B: v0=8,v1=4,V2=8
C: v0=11,v1=4,v2=11
D: v0=12,v1=4,v2=12

答案解析:
在这里插入图片描述
正确答案:D
代码switch语句中没有break,则每次找到入口进入后,顺序执行到代码块结束为止。例如当c为’A’时,从case 'A’进入,
先后执行v1+=1;v0+=1;v2+=1;,而当c为’p’时,从default进入,先后执行v0+=1;v2+=1;,容易看出最终v0和v2是相
等的
而回车表示的 ’ \n ’ 10 ,会进入default 然后再跳出循环,所以一共是12次

11. 插入排序和选择排序的区别

以下程序段的功能是( )

int a[] = { 4, 0, 2, 3, 1 }, i, j, t;
for (i = 1; i < 5; i++)
{t = a[i];j = i - 1;while (j >= 0 && t < a[j]){a[j + 1] = a[j];--j;}a[j + 1] = t;
}

A: 对数组a进行插入排序(升序) B: 对数组a进行插入排序(升序)
C: 对数组a进行选择排序(升序) D: 对数组a进行选择排序(降序)

【答案解析】B
这是一个升序插入排序算法,读完即懂。结合画图分析
第i次排序时,t=a[i]作为临时变量保存这一次待插入值,j=i-1故而while循环中j是从下标i的前一项开始向下标0遍历,
判断t<a[j]为真时a[j+1]=a[j],j+1在遍历之初是等于i的,也就是将下标i位置用前边较大的值覆盖,依次把前边的元素后移,直到a[j]不大于t的时候将t插入到下标j+1位置,使得前i个元素达到有序,
方便第i+1次排序操作,所以第i次排序时前边i-1个元素都是有序的

12. 标记思想(最优) 和 排序思想(暴力)

1、【答案解析】:
使用标记的方式就可以找出重复的数字,数组中出现过哪个数字就把对应数字作为下标在对应位置1,表示已经标记出现过,如果哪个数据对应位已经置1,则表示就是重复的数字。有了重复的数字,拿 [1, n] 的总和减去去掉重复数据的数组总和就是丢失的数据。
标准版: 其实使用标记法时出现的数字对应位每次 ++ ,**则最后出现0次的就是丢失,出现2次的就是重复的,**这样的方式也可以,不过需要多一次遍历。

int* findErrorNums(int* nums, int numsSize, int* returnSize) {*returnSize = 2;//遍历nums数组,将其中数据对应的位置1, 哪一位如果已经重置过则意味着数据重复了int* arr = (int*)calloc(numsSize + 1, sizeof(int));//申请numsSize个整形空间,并初始化为0int* ret = (int*)calloc(*returnSize, sizeof(int));//申请2个整形空间,并初始化为0int cur_sum = 0, old_sum = 0;for (int i = 0; i < numsSize; i++) {if (arr[nums[i]] == 1) { //这个数字在上边数组的对应位置已经置过1了,则重复ret[0] = nums[i];//找到重复的数字}arr[nums[i]] = 1; //将标记数组的对应数据位置1old_sum += i + 1; // 1~n的求和cur_sum += nums[i]; //当前数组中的数据求和(多了一个重复的,少了一个丢失的)}ret[1] = old_sum - (cur_sum - ret[0]);//原始总和,减去去掉重复后的当前总和就是丢失的数字free(arr);return ret;
}

标准版:(自己实现)

int* findErrorNums(int* nums, int numsSize, int* returnSize) {*returnSize = 2;int* same = (int*)malloc(sizeof(int) * numsSize);assert(same);memset(same, 0, numsSize*4);for (int i = 0; i < numsSize; i++){same[nums[i]-1]++;}int* tmp = (int*)malloc(8);for (int i = 0; i < numsSize; i++){if (same[i] == 0){tmp[1] = i + 1;}if (same[i] == 2){tmp[0] = i + 1;}}return tmp;
}

暴力方法:将数组排好序,找到出现问题的地方,针对特殊情况还需要处理,非常麻烦 o(╥﹏╥)o
在这里插入图片描述

day05

12. 二分思想的运用场景

在这里插入图片描述
当题目中出现非降序和时间复杂度O(logN)的关键信息时,可采取二分的思想

13. unsigned 类型

在这里插入图片描述
在这里插入图片描述
如果使用int 类型,那么A^B得到的是若是负数-1,会发生溢出的现象(-1的补码为全1)死循环,所以采取unsigned int 类型

day06

14. do while循环

以下描述中正确的是( )
A: 由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B: do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C: 在do-while循环体中,不一定要有能使while后面表达式的值变为零(“假”)的操作
D: do-while循环中,根据情况可以省略while

【答案解析】C
do-while循环中的循环体通常都是复合语句代码块,A错误,
while(表达式)后面要写分号,B错误,
while不能省,D错误
C中如果出现没有使while后面表达式的值变为零(“假”)的操作,则表示死循环(do…while…是可以出现死循环的情况的类似于while(1))

15. 默认返回类型

在c语言中,一个函数不写返回值类型,默认的返回类型是( )
A: int B: char C: void D: 都不是

【答案解析】A
一个函数不写返回值类型,默认的返回类型是int(可不是void喔), 但不提倡这么做,代码可读性不高

day08

16. 数组的定义

下列定义数组的语句中正确的是【多选】( )
A:

#define size 10
char str1[size], str2[size+2];

B: char str[];
C: int num['10'];
D: int n=5; int a[n][n+2];

答案解析:
正确答案:AC
A选项:宏替换,没问题;
B选项:非法定义,一维数组必须定义数组元素个数;
C选项:字符’0’,转换成十进制为48,所以该选项最终为int num[48];
D选项:错误,数组定义下角标不能为变量,注:C99标准中支持了使用变量,这里不做特殊考虑。

17. 抵消思想

在这里插入图片描述
【答案解析】:
一个数组中有一个数字出现次数大于 n/2 ,从第 0 个字符开始,假设它就是最多的那个数字,遇到相同的数字则计数 +1 , 遇到不同的则计数 -1 ,其实就是互相消耗,等到计数为 0 的时候,表示本次互拼完毕,从下一个字符重新开始互拼**,但是归根结底出现次数大于 n/2 的这个数字数量更多,因此也是最后保留的字符。**
示例: “23335” 首先从字符 2 开始计数 1 ,遇到 3 ,不同则 -1 ,互拼消耗 重新从剩下的 “335” 开始的过程,这时候保存的字符为 3 ,遇到 3 则计数 +1 , 遇到5则计数 -1 ,在计数不为 0 时,走到末尾保存的字符就是个数超过 n/2的字符

int majorityElement(int* nums, int numsSize) {int count = 1;int tmp = nums[0];for (int i = 1; i < numsSize; i++) {if (tmp == nums[i]) {//与保存的字符相同则计数+1count++;}else {//与保存的字符不同则计数-1count--;//计数为0表示有可能保存的字符不是最多的字符,换下一个if (count == 0) tmp = nums[i + 1];}}return tmp;
}

day09

18. 指针数组

下列程序的输出是( )

#include<stdio.h>
int main()
{int a[12] = { 1,2,3,4,5,6,7,8,9,10,11,12 }, *p[4], i;for (i = 0; i < 4; i++)p[i] = &a[i * 3];//printf("%d\n",p[3][2]);return 0;
}

A: 上述程序有错误 B: 6 C: 8 D: 12

【答案解析】D
p是一个指针数组,(int* p[4]
p[i] = &a[i*3]相当于是把数组a每3个一组 分开并把每组的首地址存在p数组,此时p类似一个4行3列的二维数组,p[3][2]就是4行第3个元素12

19. 逗号表达式

以下逗号表达式的值为( )

(x = 4 * 5 , x * 5) , x + 5;

A: 25 B: 20 C: 100 D: 45

【答案解析】A
逗号表达式的优先级是最低的,所以最后计算 此题去掉括号后的表达式,和原表达式是等价的,先计算4*5并赋值给x,x变为20,中间x*5并没有改变x的值,最后一项x+5值是25,也就是整个表达式的值

20. 左右划分

在这里插入图片描述
【答案解析】:
暴力不考虑其他的因素的话,将所有数据乘积起来,然后遍历数组除以当前位置数据即可。
更优解法:将乘积分为两次进行,第一次先将每个位置左边的数据乘积计算出来放到返回数组中,后边第二次循环将
对应位置右边的数据乘积计算出来与返回数组对应位置的左半边乘积相乘得到结果。

示例: 一个数组 int nums[] = {2, 3, 4} 。 int left = 1, right = 1; 计算左侧乘积:
第0个元素的左边乘积, arr[0] = left 然后计算第1位左侧乘积 left*=nums[0] -> left = 1*2
第1个元素的左边乘积, arr[1] = left 然后计算第2位左侧乘积 left*=nums[1] -> left = 1*2*3
第2个元素的左边乘积, arr[2] = left 然后计算第3位左侧乘积 已经没必要了,因为第2元素是末尾元素了
一次循环完毕后,返回数组中每个元素存储的都是自己左侧元素的乘积。 arr[]中的值: [1, 2, 6] 计算右侧乘积:
第2个元素的右边乘积, arr[2] *= right 然后计算第1位右侧乘积 right*=nums[2] -> right =1*4
第1个元素的右边乘积, arr[1] *= right 然后计算第0位右侧乘积 right*=nums[1] -> right =1*4*3
第0个元素的右边乘积, arr[0] *= right 然后计算第-1位右侧乘积 -1位已经不需要计算了
循环完毕后,返回数组中的每个元素都是其他元素的乘积了 arr[2]*=1; arr[1]*=4; arr[0]*=12

空间复杂度:O(1)

int* productExceptSelf(int* nums, int numsSize, int* returnSize) {int* ret = (int*)malloc(numsSize * sizeof(int));*returnSize = numsSize;int left = 1, right = 1;//第一次循环,将当前位置左边的数字乘积填入返回数组中for (int i = 0; i < numsSize; i++) {ret[i] = left;// 1 nums[0] nums[0]*nums[1] num[0]*nums[1]*nums[2] ....left *= nums[i];}//第二次循环,对于返回数组的元素从后往前进行,每次乘以右边元素的乘积for (int i = numsSize - 1; i >= 0; i--) {ret[i] *= right; //最后一个成绩不需要乘以最后元素,乘以1就行right *= nums[i]; //right变化:1 nums[end] nums[end]*nums[end-1] .....}return ret;
}

空间复杂度:O(N) 更容易理解

/*** Note: The returned array must be malloced, assume caller calls free().*/
int* productExceptSelf(int* nums, int numsSize, int* returnSize)
{//除自身的乘积的的值 等于 左乘积 *  右乘积int leftPro[numsSize];int rightPro[numsSize];//左乘积leftPro[0] = 1;for(int i = 1; i < numsSize; i++){leftPro[i] =  leftPro[i-1] *  nums[i-1];}//右乘积rightPro[numsSize-1] = 1;for(int i = numsSize - 1 - 1; i  >= 0 ; i--){rightPro[i] =  rightPro[i+1] *  nums[i+1];}*returnSize = numsSize;// 返回数组int * returnNums = (int *)malloc(sizeof(int) * numsSize);for(int i =0; i < numsSize; i++){returnNums[i] = leftPro[i] * rightPro[i];}return returnNums;
}

在这里插入图片描述

相关文章:

【C语言进阶】 12. 假期测评①

day01 1. 转义字符的判断 以下不正确的定义语句是&#xff08; &#xff09; A: double x[5] {2.0, 4.0, 6.0, 8.0, 10.0}; B: char c2[] {‘\x10’, ‘\xa’, ‘\8’}; C: char c1[] {‘1’,‘2’,‘3’,‘4’,‘5’}; D: int y[53]{0, 1, 3, 5, 7, 9}; 【答案解析】 B 本…...

给程序加个进度条吧,1行Python代码,快速添加~

大家好&#xff0c;这里是程序员晚枫。 你在写代码的过程中&#xff0c;有没有遇到过以下问题&#xff1f; 已经写好的程序&#xff0c;想看看程序执行的进度&#xff1f; 在写代码批量处理文件的时候&#xff0c;如何显示现在处理到第几个文件了&#xff1f; &#x1f446…...

常见的Keil5编译报错及其原因和解决方法

以下是几种常见的Keil5编译报错及其原因和解决方法&#xff1a; "Error: L6218E: Undefined symbol"&#xff08;未定义符号错误&#xff09; 这通常是由于缺少对应的库文件或者代码中有未声明的变量或函数引起的。解决方法是检查相应的库文件是否已正确添加到工程中…...

Django 实现瀑布流

需求分析 现在是 "图片为王"的时代&#xff0c;在浏览一些网站时&#xff0c;经常会看到类似于这种满屏都是图片。图片大小不一&#xff0c;却按空间排列&#xff0c;就这是瀑布流布局。 以瀑布流形式布局&#xff0c;从数据库中取出图片每次取出等量&#xff08;7 …...

传输层协议----UDP/TCP

文章目录前言一、再谈端口号端口号的划分认识知名端口号(Well-Know Port Number)两个问题nestatpidof二、UDP协议UDP协议端格式UDP的特点面向数据报UDP的缓冲区UDP使用注意事项基于UDP的应用层协议二、TCP协议TCP协议段格式可靠性问题确认应答(ACK)机制流量控制六个标志位PSHUG…...

教你如何快速在Linux中找到某个目录中最大的文件

工作中经常会有查看某个目录下最大的文件的需求&#xff0c;比如在运维工作中&#xff0c;发现某个系统或功能不工作了&#xff0c;经排查发现是服务器空间满了…那么接下来就需要清理一下临时文件或者日志文件&#xff0c;或者其他不需要的文件&#xff0c;那么就会想要查看一…...

Java二叉树面试题讲解

Java二叉树面试题讲解&#x1f697;1.检查两颗树是否相同&#x1f695;2.另一颗树的子树&#x1f699;3.二叉树最大深度&#x1f68c;4.判断一颗二叉树是否是平衡二叉树&#x1f68e;5.对称二叉树&#x1f693;6.获取树中结点个数&#x1f691;7.判断一个树是不是完全二叉树&am…...

rancher2.6进阶之nfs动态创建pv配置

添加NFS client provisioner 动态提供K8s后端存储卷 1.1.前提说明 1.1.1.说明 NFS client provisioner 利用 NFS Server 给 Kubernetes 作为持久存储的后端,并且动态提供PV。 默认 rancher 2 的存储类中的提供者不包含NFS,需要手动添加;添加方式有两种: 1)从应用商店直接安…...

快速上手vue elementUI好看的登录界面

这是一个非常非常适合新手的vue登录界面&#xff0c;总体来说美观大气&#xff0c;axios那部分没有发&#xff0c;有需要的大家可以自己进行二次开发&#xff0c;继续编写。 用到了技术栈有 vue/cli 5.07 element-ui 2.15.9 适合入门级新手&#xff0c;展示下页面 emmm验证码…...

Vue趣味【Vue3+Element Plus+Canvas实现一个简易画板;支持导出为图片】

目录&#x1f31f;前言&#x1f31f;粉丝先看&#x1f31f;创建Vue3项目&#x1f31f;引入Element Plus&#x1f31f;实现代码&#xff08;详细注释&#xff09;&#x1f31f;写在最后&#x1f31f;JSON包里写函数&#xff0c;关注博主不迷路&#x1f31f;前言 哈喽小伙伴们&a…...

【Spring Cloud Alibaba】2.服务注册与发现(Nacos安装)

文章目录环境要求简介安装Nacos源码安装Docker安装数据库配置访问服务我们要搭建一个Spring Cloud Alibaba项目就绕不开Nacos&#xff0c;阿里巴巴提供的Nacos组件&#xff0c;可以提供服务注册与发现和分布式配置服务&#xff0c;拥有着淘宝双十一十几年的流量经验&#xff0c…...

深度学习 Day28——利用Pytorch实现好莱坞明星识别

深度学习 Day28——利用Pytorch实现好莱坞明星识别 文章目录深度学习 Day28——利用Pytorch实现好莱坞明星识别一、前言二、我的环境三、前期工作1、导入依赖项设置GPU2、导入数据集3、划分数据集四、调用官方的VGG16模型五、训练模型1、编写训练函数2、编写测试函数3、设置动态…...

Android中使用FCM进行消息推送

Firebase Cloud Message 的介绍 Firebase Cloud Message(FCM)是由Google推出的一种云端消息推送服务,它是由Google推出的Google Cloud Messaging(GCM)服务的升级版。在2016年5月,Google宣布将Google Cloud Messaging重命名为Firebase Cloud Message,作为Firebase的一部…...

从 X 入门Pytorch——BN、LN、IN、GN 四种归一化层的代码使用和原理

Pytorch中四种归一化层的原理和代码使用前言1 Batch Normalization&#xff08;2015年提出&#xff09;Pytorch官网解释原理Pytorch代码示例2 Layer Normalization&#xff08;2016年提出&#xff09;Pytorch官网解释原理Pytorch代码示例3 Instance Normalization&#xff08;2…...

Windows环境下实施域名访问的一些小知识

文章目录 前言一、windows域名访问流程二、网络域名访问配置设置DNS未正确设置DNS的结果三、本地hosts设置本地hosts本地hosts的优先机制本地hosts的内部访问次序示例一示例二总结前言 作为一种常见的操作系统,windows系统具有其特殊的域名访问管理机制。了解其访问机制,将有…...

78.qt QCustomPlot介绍

参考https://www.qcustomplot.com/index.php/tutorials/settingup 下载地址: https://www.qcustomplot.com/index.php/download 1.添加帮助文档 在QtCreator ——>工具——>选项——>帮助——>文档——>添加,选择qcustomplot.qch文件,确定,以后按F1就能跳转到…...

win32api之文件系统管理(七)

什么是文件系统 文件系统是一种用于管理计算机存储设备上文件和目录的机制。文件系统为文件和目录分配磁盘空间&#xff0c;管理文件和目录的存储和检索&#xff0c;以及提供对它们的访问和共享&#xff0c;以下是常见的两种文件系统&#xff1a; NTFSFAT32磁盘分区容量2T32G…...

点云规则格网化,且保存原始的点云索引

点云规则格网化&#xff0c;且保存原始的点云索引 点云深度学习Voxelize规则&#xff0c;参考PTV2&#xff1a;https://github.com/Gofinge/PointTransformerV2 1总执行文件 import numpy as np import torch from pcr.utils.registry import Registry TRANSFORMS Registry…...

入职第一天就被迫离职,找工作多月已读不回,面试拿不到offer我该怎么办?

大多数情况下&#xff0c;测试员的个人技能成长速度&#xff0c;远远大于公司规模或业务的成长速度。所以&#xff0c;跳槽成为了这个行业里最常见的一个词汇。 前言 前几天&#xff0c;我们一个粉丝跟我说&#xff0c;正常入职一家外包&#xff0c;什么都准备好了&#xff0…...

走进Vue【三】vue-router详解

目录&#x1f31f;前言&#x1f31f;路由&#x1f31f;什么是前端路由&#xff1f;&#x1f31f;前端路由优点缺点&#x1f31f;vue-router&#x1f31f;安装&#x1f31f;路由初体验1.路由组件router-linkrouter-view2.步骤1. 定义路由组件2. 定义路由3. 创建 router 实例4. 挂…...

html+css制作

<!DOCTYPE html> <html><head><meta charset"utf-8"><title>校园官网</title><style type"text/css">*{padding: 0;margin: 0;}#logo{width:30%;float: left;}.nav{width: 100%;height: 100px;background-color…...

Python实现rar、zip和7z文件的压缩和解压

一、7z压缩文件的压缩和解压 1、安装py7zr 我们要先安装py7zr第三方库&#xff1a; pip install py7zr如果python环境有问题&#xff0c;执行上面那一条安装语句老是安装在默认的python环境的话&#xff0c;我们可以执行下面这条语句&#xff0c;将第三方库安装在项目的虚拟…...

从Hive源码解读大数据开发为什么可以脱离SQL、Java、Scala

从Hive源码解读大数据开发为什么可以脱离SQL、Java、Scala 前言 【本文适合有一定计算机基础/半年工作经验的读者食用。立个Flg&#xff0c;愿天下不再有肤浅的SQL Boy】 谈到大数据开发&#xff0c;占据绝大多数人口的就是SQL Boy&#xff0c;不接受反驳&#xff0c;毕竟大…...

RocketMQ 事务消息 原理及使用方法解析

&#x1f34a; Java学习&#xff1a;Java从入门到精通总结 &#x1f34a; 深入浅出RocketMQ设计思想&#xff1a;深入浅出RocketMQ设计思想 &#x1f34a; 绝对不一样的职场干货&#xff1a;大厂最佳实践经验指南 &#x1f4c6; 最近更新&#xff1a;2023年3月24日 &#x…...

为什么 ChatGPT 输出时经常会中断,需要输入“继续” 才可以继续输出?

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;蚂蚁集团高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《EffectiveJava》独家解析》专栏作者。 热门文章推荐…...

PyTorch 之 基于经典网络架构训练图像分类模型

文章目录一、 模块简单介绍1. 数据预处理部分2. 网络模块设置3. 网络模型保存与测试二、数据读取与预处理操作1. 制作数据源2. 读取标签对应的实际名字3. 展示数据三、模型构建与实现1. 加载 models 中提供的模型&#xff0c;并且直接用训练的好权重当做初始化参数2. 参考 pyto…...

Scrapy的callback进入不了回调方法

一、前言 有的时候&#xff0c;Scrapy的callback方法直接被略过了&#xff0c;不去执行其中的回调方法&#xff0c;可能排查好久都排查不出来&#xff0c;我来教大家集中解决方法。 yield Request(urlurl, callbackself.parse_detail, cb_kwargs{item: item})二、解决方法 1…...

第二十一天 数据库开发-MySQL

目录 数据库开发-MySQL 前言 1. MySQL概述 1.1 安装 1.2 数据模型 1.3 SQL介绍 1.4 项目开发流程 2. 数据库设计-DDL 2.1 数据库操作 2.2 图形化工具 2.3 表操作 3. 数据库操作-DML 3.1 增加(insert) 3.2 修改(update) 3.3 删除(delete) 数据库开发-MySQL 前言 …...

蓝桥杯每日一真题—— [蓝桥杯 2021 省 AB2] 完全平方数(数论,质因数分解)

文章目录[蓝桥杯 2021 省 AB2] 完全平方数题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1样例 #2样例输入 #2样例输出 #2提示思路&#xff1a;理论补充&#xff1a;完全平方数的一个性质&#xff1a;完全平方数的质因子的指数一定为偶数最终思路&#xff1a;小插曲&am…...

Linux编辑器-vim

一、vim简述1&#xff09;vi/vim2&#xff09;检查vim是否安装2)如何用vim打开文件3)vim的几种模式命令模式插入模式末行模式可视化模式二、vim的基本操作1)进入vim&#xff08;命令行模式&#xff09;2)[命令行模式]切换至[插入模式]3)[插入模式]切换至[命令行模式]4)[命令行模…...