- 博客(65)
- 收藏
- 关注
原创 C语言:结构体偏移量和内存对齐
stddef.h下的offset计算结构体属性相对结构体首地址偏移量#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>#include<stddef.h>//offsetof函数所在头文件struct Teacher { char a; int b;};void test0201() { struct Teach
2022-05-27 17:28:21
418
原创 C语言:数组进阶I
一维数组名不作为指向数组首地址的指针使用计算数组大小:sizeof(arr)对数组名取地址:&arr得到数组指针,步长是整个数组的长度数组名是一个指针常量,指针的指向不可以修改,而指针指向的值可以修改数组指针的定义方式先定义数组类型,再通过类型定义数组指针void test0201() { int arr[5] = { 1,2,3,4,5 }; //array_type表示存放5个int类型元素的数组的数组类型 typedef int(array_type)[5];
2022-05-26 16:11:51
136
原创 算法笔记-排序:选择排序
实现思路:每次循环选取满足条件的值后,将满足条件的值交换到指定位置#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>void test01() { int arr[] = { 2,5,1,3,4 }; for (size_t i = 0; i < 4; i++) { int min_index = i;//记录最小值的下标
2022-05-26 15:36:40
60
原创 C语言:位运算
位运算按位取反:~void test0901() { int num = 2; printf("~num=%d\n", ~num);//输出-3,原码+反码+1=0}按位与:&全真为真,一假为假void test0902() { int num = 123; if ((num & 1) == 1) { printf("num为奇数\n"); } else { printf("num为偶数\n"); }}按位或:|全假为假,一真为真v
2022-05-26 09:09:45
85
原创 交换两个数据的三种方法
交换num1与num2的值方法一:int num1 = 5;int num2 = 9;num1 = num1 ^ num2;num2 = num1 ^ num2;num1 = num1 ^ num2;printf("num1=%d,num2=%d", num1, num2);方法二:int num1 = 5;int num2 = 9;num1 = num1 + num2;num2 = num1 - num2;num1 = num1 - num2;printf("num1
2022-05-26 08:40:37
187
原创 将10,000,000以内的数字翻译为英文
将10,000,000以内的数字翻译为英文题目来源:HJ42 学英语import java.util.*;public class Main{ public static void main(String[] args) { String[] digit = {"one","two","three","four","five","six","seven","eight","nine","ten", "eleven","twelve","thirt
2022-05-25 19:27:03
101
原创 rocketmq基础:发送消息、延时消费、消费重试
rocketmq支持3种消息发送方式//rocketmq-spring-boot-starter提供的操作rocketmq的类@Autowiredprivate RocketMQTemplaterocketMQTemplate;同步消息(sync message)producer向broker发送消息,broker服务器返回发送结果后再继续往下执行public void sendSyncMsg(Stringtopic,String msg){ rocketMQTemplate.sync
2022-05-11 16:07:09
2004
原创 springboot下rocketmq的基础使用
添加pom依赖<parent> <artifactId>spring-boot-starter-parent</artifactId> <groupId>org.springframework.boot</groupId> <version>2.1.3.RELEASE</version> </parent> <dependencies>
2022-05-11 14:21:56
253
原创 linux安装单机rocketmq
下载http://archive.apache.org/dist/rocketmq/4.5.0/rocketmq-all-4.5.0-bin-release.zip安装将下载的安装包上传到linux服务器,解压修改runbroker.sh,runserver.sh启动参数(启动参数默认使用内存达到8g,修改内存大小以免内存不够用导致启动失败)JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=12
2022-05-11 13:03:51
485
原创 C语言:文件操作
文件操作系统文件标准输入:stdin,编号0,printf-标准输出标准输出:stdout,编号1,scanf-标准输入标准错误:stderr,编号2,perror-标准错误应用程序启动时,自动被打开;程序执行结束时,自动被关闭文件指针文件指针定义:FILE *fp;文件指针初始化:fp = fopen();操作文件:使用文件读写函数来完成,fputc,fgets,fputs,fgets,fread,fwrite等文件分类设备文件屏幕、键盘、磁盘、网卡、声卡、显卡、扬声器等磁
2022-05-05 12:48:34
1323
原创 C语言:结构体、联合体、枚举
结构体不同类型数据的集合数组是相同类型数据的集合结构体定义语法#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#include <string.h>//定义结构体struct student { char name[200]; unsigned int age; char tel[16]; float scores[3]; char sex;} st
2022-05-04 17:06:09
761
原创 C语言:作用域与内存
局部变量概念:定义在函数内部的变量作用域:从定义位置开始,到包裹该变量的第一个右大括号结束全局变量概念:定义在函数外部的变量作用域:从定义位置开始,默认到文件结束位置,其他文件如果想使用,可以使用声明的方式将作用域导出1.extern修饰的全局变量可以使用其他文件的定义2.全局变量的默认值为0//test15.c#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>int a = 10;int main15(void)
2022-05-04 10:55:31
178
原创 C语言:字符串处理函数
指针和字符串字符串定义数组定义的字符串是变量,可读可写;指针定义的字符串是常量,可读不可写;字符串做函数参数字符做函数参数不用提供字符串长度的参数,因为每个字符串都是’\0’结尾字符串处理函数头文件:<string.h>字符串拷贝char* strcpy(char* dest,const char* src);函数作用:将src的内容拷贝到dest,函数返回值和dest一致char* strncpy(char* dest,const char* src,size_t
2022-05-01 20:19:32
363
原创 C语言:函数
函数作用代码复用,减少主函数代码量,使主函数逻辑更清晰;函数分类系统库函数:标准c库,libc使用步骤:引入头文件(声明函数)根据函数原型调用函数用户自定义函数使用步骤:提供函数原型、函数实现函数定义包含函数原型和函数体函数原型:返回值类型、函数名、形参列表函数体:具体函数实现函数调用函数名(实参列表)1.函数调用时,实参列表与函数定义的形参列表必须严格对应(参数个数、类型、顺序必须一致)2.实参列表不包含类型名,形参列表要包含类型名函数声明函数声明
2022-05-01 14:01:26
268
原创 C语言:指针
指针和内存单元指针:地址内存单元:计算机中内存最小的存储单位。目前计算机的存储单位即一个内存单元为一个字节(8bit),每一个内存单元都有一个唯一的"编号",这个"编号"称为内存单元的地址。指针变量:存地址的变量指针定义和使用指针定义形式linux常用:int *p;windowns常用:int* p;其他:int * p;指针的解引用(也叫间接引用)*p将p变量的内容取出,当成地址看待,找到该地址对应的内存空间做左值,存数据到空间中做右值,取出空间中的内容#
2022-05-01 10:44:14
198
原创 C语言:实现自定义strlen
strlen:计算字符串长度#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>//通过数组遍历计数int mystrlen(char str[]) { int i = 0; while (str[i]) { i++; } return i;}//通过指针遍历计数int mystrlen1(char* str) { int i = 0; while (*str) { i++; str++; } return
2022-05-01 10:11:52
942
原创 C语言:字符串
字符数组 和 字符串区别字符数组是一个一个字符的集合char str[10] = {'h','e','l','l','o'};//未初始化的以0(对应字符'\0')填充字符串以\0结尾char str[] = "hello";//存储结构为{'h','e','l','l','o','\0'}printf(“%s\n”,str);//使用%s匹配字符串打印时必须碰到’\0’才会结束字符串操作函数gets:获取一个字符串,返回字符串的首地址【不安全】char *gets(
2022-04-30 09:58:10
195
原创 C语言:数组
概述相同数据类型的有序集合数组元素地址连续数组名为地址,是数组首元素的地址#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>int main(void) { int arr[] = {10,20,30,40,50,60,70,80,90,100}; printf("arr = %p\n", arr); printf("&arr[0] = %p\n", &arr[0]); printf("&arr[1] =
2022-04-29 12:35:23
649
原创 C语言:程序流程结构
选择结构if-else#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>int main(void) { int score; scanf("%d", &score); if (score >= 90) { printf("score=%d,优秀\n", score); } else if(score>=70){ printf("score=%d,良好\n", score); } else i
2022-04-29 08:15:02
942
原创 C语言:字符串格式化输入输出
字符串格式化输入输出printf函数%%:显示一个%,''对%无效,需要用"%%"输出%%ns:显示n个字符的字符串,不足n用空格在左侧填充%0ns:显示n个字符的字符串,不足n用0在左侧填充%-ns:显示n个字符的字符串,不足n用空格在右侧填充putchar函数:输出一个字符scanf函数:从键盘接收用户输入//输入整数int a;scanf("%d", &a);//输入整数int a, b, c;scanf("%d %d %d", &a, &am
2022-04-28 09:52:48
1965
原创 C语言:数据类型
常量:不会变化的数据字符常量:‘a’字符串常量: “hello”整型常量:10浮点型常量:3.121592宏常量:#define PI 3.141592const关键字修饰的变量:const int a = 10const修饰的变量是只读变量,但是可以通过指针修改数值,所有表示常量时建议使用宏定义的常量变量:会变化的数据定义语法:类型名 变量名 = 变量值变量定义:int a = 1;变量声明:int a;extern int a;1.变量定
2022-04-27 12:39:17
126
原创 c程序从源文件到可执行文件
预处理gcc -E hello.c -o hello.i头文件展开:不检查语法错误,可以展开任意文件宏定义替换:将定义的宏符号替换为对应的值替换注释:将注释替换为空行展开条件编译:根据条件来展开指令(#ifdef/#endif)编译gcc -S hello.i -o hello.s逐行检查语法错误(最耗时的过程)将c程序翻译成汇编指令汇编gcc -c hello.s -o hello.o将汇编指令翻译成对应的二进制编码链接gcc hello.o -o hello.e.
2022-04-26 11:53:11
218
原创 C语言入门:helloworld
环境安装1. vs安装https://blog.csdn.net/qq_36556893/article/details/88603729?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159966152919725250333957%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=159966152919725250333957&am
2022-04-26 08:51:32
3041
原创 SpringMVC获取数据细节
请求中文乱码问题在web.xml中添加如下过滤器:<!-- 解决请求参数乱码问题 --> <filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
2022-03-04 18:56:50
262
原创 java学习笔记-集合
java学习笔记-集合集合的特点存储空间可变集合的体系结构#mermaid-svg-0EC4pY7JRBUX7LSv .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-0EC4pY7JRBUX7LSv .label text{fill:#333}#mermaid-svg-0EC4pY7JRBUX7LSv .
2021-12-22 21:02:34
79
原创 算法笔记-排序:冒泡排序
算法笔记-排序:冒泡排序冒泡排序说明将序列中的元素两两比较,大(小)的往后移动,直到所有数据按从小到大(从大到小)排列。冒泡排序实现public class ArrayDemo { public static void main(String[] args) { int[] arr = {24, 69, 80, 57, 13}; System.out.println("排序前:" + arrayToString(arr)); for (int
2021-12-21 17:27:27
292
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人