【C刷题训练营】第四讲(打好基础很重要)
前言:
大家好,这是c语言刷题训练营的第四讲,打好基础便于对c语言语法与算法思维的提高,感谢你的来访与支持!
💥🎈个人主页:Dream_Chaser~ 🎈💥
✨✨刷题专栏:http://t.csdn.cn/baIPx
⛳⛳本篇内容:c语言刷题训练营 第四讲(牛客网)
目录
BC23-时间转换
解题思路:
BC24-总成绩和平均分计算
解题思路:
BC30-kiki和酸奶
解题思路:
BC31-发布会信息
解题思路:
BC32-输出学生信息
解题思路:
BC33-计算平均成绩
解题思路:
BC34-进制A+B
解题思路:
BC37-网购
解题思路:
BC39-争夺前五名
解题思路:
BC40-竞选社长
解题思路:
BC23-时间转换
来源: 时间转换_牛客题霸_牛客网 (nowcoder.com)
描述
给定秒数 seconds ,把秒转化成小时、分钟和秒。
数据范围: 0 <seconds < 100000000
输入描述:
一行,包括一个整数,即给定的秒数。
输出描述:
一行,包含三个整数,依次为输入整数对应的小时数、分钟数和秒数(可能为零),中间用一个空格隔开。
示例1
输入:3661
输出:1 1 1
解题思路:
代码实现:
#include <stdio.h>int main() {int seconds=0;scanf("%d",&seconds);int hour=0,min=0,sec=0;hour=seconds/3600;min=seconds%3600/60;sec=seconds%3600%60;printf("%d %d %d ",hour,min,sec);return 0;
}
执行:
中间的部分也可以写成这样:
BC24-总成绩和平均分计算
来源:总成绩和平均分计算_牛客题霸_牛客网 (nowcoder.com)
依次输入一个学生的 3 科成绩,在屏幕上输出该学生的总成绩以及平均成绩
输入描述:
一行, 3 科成绩,成绩之间用一个空格隔开。
输出描述:
一行,总成绩和平均成绩(小数点后保留两位),用一个空格隔开。
输入:79.5 80.0 98.0
输出:257.50 85.83
解题思路:
#include <stdio.h>int main() {double a=0.0,b=0.0,c=0.0;//三科成绩double sum=0.0;//总成绩double avg=0.0;//平均分 scanf("%lf %lf %lf",&a,&b,&c);//输入三科sum=a+b+c;avg=sum/3;//输出三科printf("%.2lf %.2lf",sum,avg);return 0;
}
方法二:
int main() {double score[3] = {0.0};//输入scanf("%lf %lf %lf",&score[0],&score[1],&score[2]);//计算double sum= score[0] + score[1] + score[2];double avg= sum/3.0;//输出printf("%.2lf %.2lf",sum,avg);return 0;
}
方法三:
int main()
{double score= 0.0;double sum= 0.0;//输入并计算int i= 0;for( i=0;i<3;i++){scanf("%lf",&score);sum += score;}printf("%.2lf %.2lf\n",sum,sum/3);return 0;
}
BC30-kiki和酸奶
来源:KiKi和酸奶_牛客题霸_牛客网 (nowcoder.com)
题目描述
BoBo买了一箱酸奶,里面有n盒未打开的酸奶, KiKi 喜欢喝酸奶,第一时间发现了酸奶。 KiKi 每 h 分钟能喝光一盒酸奶,并且KiKi 在喝光一盒酸奶之前不会喝另一个,那么经过 m 分钟后还有多少盒未打开的酸奶?
多组输入,每组输入仅一行,包括 n , h 和 m (均为整数)。输入数据保证 m <= n * h 。
输出描述
针对每组输入,输出也仅一行,剩下的未打开的酸奶盒数。
输入: 8 5 16输出: 4
解题思路:
方法一:
- 每组输入记得写上while(scanf() ! = EOF)
- 求剩下的未打开的酸奶盒数,实际的等于 已喝完的酸奶盒数(m / h) + 已打开的酸奶盒数(m % h)
图解:
代码实现:
#include <stdio.h>int main() {int n = 0;//给的酸奶数int h = 0;// 分/盒,喝一瓶酸奶的时间int m = 0;//总共给的时间//多组输入while (scanf("%d %d %d", &n, &h, &m) != EOF){n = n - (m / h + m % h);//剩下未打开的酸奶盒数}printf("%d", n);return 0;
}
执行:
方法二:
n = 0;//给的酸奶数
h = 0;// 分/盒,喝一瓶酸奶的时间
m = 0;//总共给的时间以n为8 ,h为5,m为16,为例子
当 m % h 不为 0 时,表示在16分钟的时间内,16 % 5 商为3,余1 ,则说明3瓶全喝完了,还剩个1瓶已经打开了,还没喝完
以n为8 ,h为4,m为16,为例子
当 m % h 为 0 时,表示在16分钟的时间内,16 % 4 商为4 ,则说明4瓶全喝完了 ,也没有打开的但未喝完的酸奶。
int main() {int n = 0;//给的酸奶数int h = 0;// 分/盒,喝一瓶酸奶的时间int m = 0;//总共给的时间while (scanf("%d %d %d", &n, &h, &m) != EOF){if (m % h)//不为0,说明有打开但未喝完的酸奶{printf("%d\n", n - m / h - 1);}else//为0,则说明在m分钟内全部喝完了{printf("%d\n", n - m / h);}}return 0;
}
执行:
BC31-发布会信息
来源:发布信息_牛客题霸_牛客网 (nowcoder.com)
无
I lost my cellphone!
解题思路:
直接把输出描述复制一下,粘贴到printf函数内打印即可
代码实现:
#include <stdio.h>
int main()
{printf("I lost my cellphone!\n");return 0;
}
执行:
BC32-输出学生信息
来源:输出学生信息_牛客题霸_牛客网 (nowcoder.com)
学生信息管理系统是学校教学管理的重要工具,现有一名学生基本信息如下:姓名 -Jack ,年龄 -18 ,性别-Man ,请按照输出样例的格式输出该学生的信息。
输入描述:
无
输出分为三行,分别为标题行,分隔行,信息行。第一行,标题行,每个标题之间间隔 4 个空格。第二行,分隔行,一共 21 个减号 "-" 。第三行,信息行,每列输出信息和标题首字母对齐。输出样例如下:Name Age Gender---------------------Jack 18 man
解题思路:
代码实现:
#include <stdio.h>
int main() {printf("Name Age Gender\n");printf("---------------------\n");printf("Jack 18 man\n");return 0;
}
代码执行:
BC33-计算平均成绩
来源:计算平均成绩_牛客题霸_牛客网 (nowcoder.com)
从键盘输入 5 个学生的成绩(整数),求他们的平均成绩(浮点数,保留一位小数)
一行,连续输入 5 个整数(范围 0~100 ),用空格分隔。
输出描述:
一行,输出5个数的平均数(保留一位小数)。
输入 75 80 43 67 96输出 72.2
解题思路:
int main() {int num[5] = {0};int i = 0;//输入for (i = 0; i < 5; i++) {scanf("%d", &num[i]);}//求和int sum = 0;for (i = 0; i < 5; i++) {sum = sum + num[i];}//输出printf("%.1lf", sum / 5.0);return 0;
}
写法二:
int main() {int i = 0;int num = 0;int sum=0;//输入for (i = 0; i < 5; i++) {scanf("%d", &num);//求和sum+=num;}//输出printf("%.1lf", sum / 5.0);return 0;
}
写法一和写法二执行:
BC34-进制A+B
来源:进制A+B_牛客题霸_牛客网 (nowcoder.com)
题目描述
输入一个十六进制数 a ,和一个八进制数 b ,输出 a+b 的十进制结果(范围 -231~231-1 )。
一行,一个十六进制数 a ,和一个八进制数 b ,中间间隔一个空格。
示例1
输入 0x12 05
输出 23
十六进制 Hexadecimal 一般以 0x 开头,例如 0xFF 。八进制 Octal ,一般以 0 开头,例如 07 。
解题思路:
%x 是 16 进制的数据形式
%o 是 8 进制的数据形式注意怎么输入十六进制和八进制即可解决此题
#include <stdio.h>int main() {int a=0,b =0;//%x 是 16 进制的数据形式//%o 是 8 进制的数据形式scanf("%x %o",&a,&b);printf("%d",a+b);return 0;
}
执行 :
BC37-网购
题目描述
KiKi 非常喜欢网购,在一家店铺他看中了一件衣服,他了解到, 如果今天是“双11”(11月11日)则这件衣服打7折,“双12” (12月12日)则这件衣服打8折,如果有优惠券可以额外减50元(优惠券只能在双11或双12使用) ,求 KiKi 最终所花的钱数。
一行,四个数字,第一个数表示小明看中的衣服价格,第二和第三个整数分别表示当天的月份、当天的日期、第四个整数表示是否有优惠券(有优惠券用1 表示,无优惠券用 0 表示)。
一行,小明实际花的钱数(保留两位小数)。(提示:不要指望商家倒找你钱)
输入 1000.0 11 11 1输出 650.00
输入 999.8 12 12 0输出 799.84
输入 66.6 11 11 1输出 0.00
解题思路:
方法一:
如果是11月11日
- 有优惠券:总价打7折,接着减50(假设买的东西不足50,那么商家不会倒贴找钱)。
- 无优惠券:总价打7折
如果是12月12日
- 有优惠券,总价打8折,接着减50(假设买的东西不足50,那么商家不会倒贴找钱)。
- 无优惠券:总价打7折。
代码实现:
#include <stdio.h>int main() {double price=0.0;int mon=0,days=0;int flag=0;scanf("%lf %d %d %d",&price,&mon,&days,&flag);//条件是11月11日,有优惠券if(mon==11&&days==11 && flag==1){ //价格打7折,减50price=price*0.7 - 50;//50块的券可以直接当作钱来付款,如果买的东西的价格不足50,商家不会找钱if(price<0){price=0;} }//条件是11月11日,无优惠券else if(mon==11&&days==11 && flag==0){ //价格打7折price=price*0.7;}//条件是12月12日,有优惠券else if(mon==12&&days==12 && flag==1){ //价格打8折,减50price= price*0.8-50;//50块的券可以直接当作钱来付款,如果买的东西的价格不足50,商家不会找钱if(price<0){price=0;} }//条件是12月12日,无优惠券else if(mon==12&&days==12 && flag==0){price = price*0.8;}//保留小数点后两位printf("%.2lf",price);return 0;
}
方法二:简化的写法
定义变量
price是价格,mon为月,days是日,
flag是1表示有优惠券,为0表示无优惠券
cut是折扣,last则表示实际花钱数
1️⃣如果是双11,cut*0.7
2️⃣如果是双12,cut*0.8
实际花出去的钱数 = 总价 * 折扣 - 优惠券(50 或 0)
也就是last= price * cut - flag * 50
如果花出去的钱小于0,那么商家不会倒贴,直接0元购
否则大于0,那就直接返回last
代码实现:
int main()
{double price=0.0;//价格int mon=0,days=0;//月,日int flag=0;//是否有优惠券double cut=1.0;//折扣double last=0.0;//实际花钱数//输入scanf("%lf %d %d %d",&price,&mon,&days,&flag);//双11打七折if(mon==11&&days==11){cut=0.7;}//双12打8折else if(mon==12 && days==12){cut=0.8;}//实际花出去的钱数 = 总价 * 折扣 - 优惠券(50 或 0)last= price * cut - flag * 50;//如果花出去的钱小于0,那么商家不会倒贴,直接0元购if(last<0.0){printf("%.2lf\n",0.0);}//否则大于0,那就直接返回lastelse{printf("%.2lf\n",last);}return 0;
}
执行:
BC39-争夺前五名
题目描述
期中考试开始了,大家都想取得好成绩,争夺前五名。从键盘输入n个学生成绩(不超过40个),输出每组排在前五高的成绩。
两行,第一行输入一个整数,表示 n 个学生( >=5 ),第二行输入 n 个学生成绩(整数表示,范围 0~100 ),用空格分隔。
输出描述:
一行,输出成绩最高的前五个,用空格分隔。
示例1
输入
6
99 45 78 67 72 88
输出
99 88 78 72 67
解题思路:
1️⃣成绩录入部分:
定义变量n为学生的成绩数量,定义一个大小为40的整型数组用于存储每个学生的成绩,定义for循环接着输入每个学生的成绩。
2️⃣排序部分:
①冒泡排序
用冒泡排序的思想,将学生的成绩排成升序
冒泡排序请看此篇文章:【C进阶】回调函数(指针进阶2,详解,小白必看)_Dream_Chaser~的博客-CSDN博客
代码实现:
#include<stdio.h>
//冒泡排序
int main() {int n = 0;//学生成绩的数量int arr[40] = { 0 };//存储成绩的数组int i = 0;scanf("%d", &n);for (i = 0; i < n; i++){scanf("%d", &arr[i]);//输入每个学生的成绩}//冒泡排序for (i = 0; i < n - 1; i++){int j = 0;int tmp = 0;for (j = 0; j < n - 1 - i; j++){if (arr[j] > arr[j + 1]){tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;}}}for (i = n - 1; i >= n - 5; i--)//注意这个地方i的范围,初值,以及判断条件{printf("%d ", arr[i]);}return 0;
}
②快速排序
利用qsort函数,实现学生成绩的升序排序
关于第④点函数指针
代码实现:
//快速排序
int cmp_int(const void* e1, const void* e2)
{return *(int*)e1 - *(int*)e2;
}int main() {//输入int n = 0;//个数int arr[40] = { 0 };//存放的是成绩int i = 0;scanf("%d", &n);for (i = 0; i < n; i++){scanf("%d", &arr[i]);}//排序 - 升序 - 后5个元素 - 就是最高的前5个成绩//qsort - C语言库函数qsort(arr, n, 4, cmp_int);for (i = n - 1; i >= n - 5; i--)//注意这个地方i的范围,初值,以及判断条件{printf("%d ", arr[i]);}return 0;
}
3️⃣输出部分:按降序的方式输出成绩排名最高的前5位学生
for (i = n - 1; i >= n - 5; i--)//注意这个地方i的范围,初值,以及判断条件{printf("%d ", arr[i]);}
以上两个排序的执行结果:
BC40-竞选社长
题目描述
假设你们社团要竞选社长,有两名候选人分别是A和 B ,社团每名同学必须并且只能投一票,最终得票多的人为社长。
输入描述:
一行,字符序列,包含A或B,输入以字符0结束。
输出描述:
一行,一个字符,A或B或E,输出A表示A得票数多,输出B表示B得票数多,输出E表示二人得票数相等。
示例1
输入 ABBABBAAB0
输出 B
解题思路:
写法一:
定义一个字符数组,利用gets函数输入一行字符。定义i作为循环的前进条件。定义while循环,循环的判定条件是字符数组buf[i]!=‘\0’,接着定义count_a和count_b用于计算字符'A'和字符'B'的数量。
最后输出部分,如果count_a>count_b,则输出,'A'。反之输出‘B’,如果两字符数量相等,则输出'E'。
int main() {char buf[100]={0};//输入gets(buf);//统计int count_a = 0;int count_b = 0;int i=0;while(buf[i]!='0'){if(buf[i] =='A'){count_a++;}if(buf[i]=='B'){count_b++;}i++;}//输出if(count_a > count_b){printf("A\n");}else if(count_a < count_b){printf("B\n");}else{printf("E\n");}return 0;
}
写法二:
与写法一大致思路相似,只是定义了一个flag作为判断条件,若遇到’A‘,则flag++ ,反之遇到‘B’则--。到最后若flag>0,则输出‘A’,反之则‘B’,若flag为0则输出‘E’。
int main()
{char buf[100] = {0};//输入gets(buf);//统计int flag=0;int i=0;while(buf[i]!='0'){if(buf[i] == 'A'){flag++;}if(buf[i] == 'B'){flag--;}i++;}//输出if(flag>0){printf("A\n");}else if(flag<0){printf("B\n");}else{printf("E\n");}return 0;
}
写法三:
从用户输入中逐个读取字符,并根据不同的字符进行不同的操作,直到遇到字符
'0'
或文件结束符(EOF)为止。
- 如果读取的字符是
'A'
,则执行flag++
,即将变量flag
的值加一。- 如果读取的字符是
'B'
,则执行flag--
,即将变量flag
的值减一。其它思路基本不变。
int main()
{//输入 int ch = 0;int flag = 0;while (((ch = getchar()) != '0') && ch != EOF){if (ch == 'A'){flag++;}if (ch == 'B'){flag--;}}if (flag > 0){printf("A\n");}else if (flag < 0){printf("B\n");}else{printf("E\n");}return 0;
}
写法一二三执行:
c语言刷题训练营第4讲到此结束,感谢大家支持!
相关文章:

【C刷题训练营】第四讲(打好基础很重要)
前言: 大家好,这是c语言刷题训练营的第四讲,打好基础便于对c语言语法与算法思维的提高,感谢你的来访与支持! 💥🎈个人主页:Dream_Chaser~ 🎈💥 ✨✨刷题专栏…...
MySQL 某个字段存储不了内容
1. 原因 某个字段存储的内容过大 2. 解决 修改max_allowed_packet参数 max_allowed_packet参数是指mysql服务器端在一次传送数据包的过程当中最大允许的数据包大小。如果超过了设置的最大长度,则会数据库保持数据失败。 2.1 查询参数 show variables like %max…...

7.代理模式
1.UML 2.代码 #include <iostream> using namespace std;class Subject{ public:virtual void Request() 0; };class RealSubject:public Subject { public:virtual void Request(){cout << "RealSubject" << endl;} }; class Proxy:public Subj…...
单例模式的安全写法
要想知道怎么写单例模式,那么必须得知道什么是单例模式。单例模式是一种设计模式,它确保某个类只有一个实例,并且提供一个全局访问该实例的方法。单例模式不会创建实例副本,而是返回对已创建实例的引用。单例模式的创建可以分为两…...
牛客网SQL156
各个视频的平均完播率_牛客题霸_牛客网 方法一 select a.video_id,format(count(b.video_id)/count(a.video_id),3) 完播率 from (select uid,video_id,(end_time-start_time) 播放时长from tb_user_video_logwhere year(start_time)2021 or year(end_time)2021 ) a left joi…...

【MongoDB】docker部署社区版(一)
0、背景介绍 项目中使用MongoDB了,服务器挂掉,自己在本地搭一个试试。 1、版本选择 首先有社区版和和商业版。我选的是社区版。链接:https://hub.docker.com/r/mongodb/mongodb-community-server/tags 1.1、标签选择 看到标签有两个大类…...

【Graph Net学习】GNN/GCN代码实战
一、简介 GNN(Graph Neural Network)和GCN(Graph Convolutional Network)都是基于图结构的神经网络模型。本文目标就是打代码基础,未用PyG,来扒一扒Graph Net两个基础算法的原理。直接上代码。 二、代码 …...

RocketMQ 发送顺序消息
文章目录 顺序消息应用场景消息组(MessageGroup)顺序性生产的顺序性MQ 存储的顺序性消费的顺序性 rocketmq-client-java 示例(gRPC 协议)1. 创建 FIFO 主题生产者代码消费者代码解决办法解决后执行结果 rocketmq-client 示例&…...

【面试经典150 | 双指针】判断子序列
文章目录 写在前面Tag题目来源题目解题解题思路方法一:双指针方法二:动态规划 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对…...
自动驾驶信息安全方案
目录 1. 修订历史... 3 2. 概述... 4 2.1 目的... 4 2.2 适用范围... 4 2.3 参考文档... 4 2.4 术语和缩写... 4 3. 安全分析... 5 4. 总体设计... 6 4.1 ACU的安全防护... 7 4.1.1 系统安全引导... 7 4.1.2 密钥安全存储... 8 4.1.3 应…...
【云原生】kubernetes中pod(最小的资源管理组件)
目录 前言 一、pod 1.1pause容器使得Pod中的所有容器可以共享两种资源: 1.2 通常把Pod分为两类 1.2.1自主式Pod 1.2.2控制器管理的Pod 1.3 Pod 容器的分类 1.3.1基础容器(infrastructure container) 1.3.2初始化容器(initc…...
[DB]数据库--lowdb
[DB]数据库--lowdb lowdb基本应用获取数据数据变更写入文件 lodash的使用获取数据lodash方法使用数据变更写入文件 lowdb lowdb ,是一个基于文件存储的非关系型数据库 基于loadsh的轻量级数据库 可用于在json中存储数据,大小一般为0~200M的json文件 方便简单的数…...

Kotlin | 在for、forEach循环中正确的使用break、continue
文章目录 for循环中使用break、continueLabel标签forEach中如何退出循环资料 Kotlin 有三种结构化跳转表达式: return:默认从最直接包围它的函数或者匿名函数返回。break:终止最直接包围它的循环。continue:继续下一次最直接包围…...

【C++】详解std::mutex
2023年9月11日,周一中午开始 2023年9月11日,周一晚上23:25写完 目录 概述头文件std::mutex类的成员类型方法没有std::mutex会产生什么问题问题一:数据竞争问题二:不一致lock和unlock死锁 概述 std::mutex是C标准库中…...

Matlab图像处理-Lab模型
Lab模型 Lab模型是由CIE(国际照明委员会)制定的一种彩色模型。该模型与设备无关,弥补了RGB模型和CMYK模型必须依赖于设备颜色特性的不足; 另外,自然界中的任何颜色都可以在Lab空间中表现出来,也就是说RGB和…...
分布式ETL工具Sqoop实践
Mysql数据准备 1、在node02节点登录Mysql。 mysql -uroot -proot2、新建数据库testdb。 create database testdb;3、新建数据表ts。 use testdb; create table ts(id int, name varchar(10), age int, sex char(1));4、向表中插入数据。 insert into ts values(10001,张三…...

展会预告 | 图扑邀您共聚 IOTE 国际物联网展·深圳站
参展时间:9 月 20 日- 22 日 图扑展位:9 号馆 9B 35-1 参展地址:深圳国际会展中心(宝安新馆) IOTE 2023 第二十届国际物联网展深圳站,将于 9 月 20 日- 22 日在深圳国际会展中心(宝安…...

如何下载安装 WampServer 并结合 cpolar 内网穿透,轻松实现对本地服务的公网访问
文章目录 前言1.WampServer下载安装2.WampServer启动3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 Wamp 是一个 Windows系统下的 Apache PHP Mysql 集成安装环境,是一组常用来…...
iOS添加Mapbox地图库
配置凭据 注册并导航到Account页面。你将需要: 公共访问令牌: 从帐户的tokens页面,你可以复制默认的公共令牌或单击"create a token"按钮来创建新的公共令牌。 带有Downloads:Read范围的秘密访问令牌: 从你帐户的t…...

destoon根据目录下的html文件生成地图索引
因为项目需要,destoon根据目录下的html文件生成地图索引,操作方法,代码如下: <?php $new_array array(); function loopDir($dir,&$new_array,$modurl) {$handle opendir($dir);header("Content-Type:text/xml&qu…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...

通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...
6️⃣Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙
Go 语言中的哈希、加密与序列化:通往区块链世界的钥匙 一、前言:离区块链还有多远? 区块链听起来可能遥不可及,似乎是只有密码学专家和资深工程师才能涉足的领域。但事实上,构建一个区块链的核心并不复杂,尤其当你已经掌握了一门系统编程语言,比如 Go。 要真正理解区…...