首页
关于
Search
1
中兴2.5G光猫F7607p/G7615折腾
512 阅读
2
itv源地址
232 阅读
3
网盘相关参数获取
229 阅读
4
PS3游戏合集
137 阅读
5
创造球会2002
123 阅读
公共服务
游戏分享
PC
PS1
PS2
PS3
Switch
FC/SFC
Wii/U/NGC/N64
MD/SS/DC
软件资源
学习资料
操作系统
工业软件
学习园地
人工智能
程序设计
数据库
虚拟化
容器
运维
登录
Search
Tom
累计撰写
22
篇文章
累计收到
8
条评论
首页
栏目
公共服务
游戏分享
PC
PS1
PS2
PS3
Switch
FC/SFC
Wii/U/NGC/N64
MD/SS/DC
软件资源
学习资料
操作系统
工业软件
学习园地
人工智能
程序设计
数据库
虚拟化
容器
运维
页面
关于
搜索到
10
篇与
的结果
2024-10-10
C语言流程控制(条件判断与循环)
1. if 语句基本用法:if语句用于在程序中根据条件执行不同的操作。它会检查一个布尔表达式,如果表达式为真,代码块将被执行;否则,跳过代码块。语法结构:if (条件) { // 当条件为真时执行的代码 } else if (条件2) { // 如果第一个条件为假且条件2为真,执行此代码块 } else { // 如果前面的条件都不成立,执行此代码块 } #include <stdio.h> int main() { int score; printf("请输入你的成绩:"); scanf("%d", &score); if (score >= 90) { printf("成绩为A\n"); } else if (score >= 80) { printf("成绩为B\n"); } else if (score >= 70) { printf("成绩为C\n"); } else if (score >= 60) { printf("成绩为D\n"); } else { printf("成绩为F\n"); } return 0; } 2. switch 语句基本用法:switch语句用于处理多个条件选择,尤其适合当你需要检查一个变量的多个可能值时。switch语句中的case标签匹配变量的具体值,如果找到匹配项,执行对应的代码。语法结构:switch (变量) { case 值1: // 当变量的值等于值1时执行的代码 break; case 值2: // 当变量的值等于值2时执行的代码 break; ... default: // 当变量的值没有匹配的case时执行的代码 } #include <stdio.h> int main() { int day; printf("请输入一个数字(1-7):"); scanf("%d", &day); switch (day) { case 1: printf("今天是星期一\n"); break; case 2: printf("今天是星期二\n"); break; case 3: printf("今天是星期三\n"); break; case 4: printf("今天是星期四\n"); break; case 5: printf("今天是星期五\n"); break; case 6: printf("今天是星期六\n"); break; case 7: printf("今天是星期天\n"); break; default: printf("输入无效,请输入1到7之间的数字。\n"); } return 0; } 3. 嵌套条件判断基本用法:嵌套条件判断是指在一个if或else if代码块中再包含另一个if语句。这种结构用于处理多重条件情况,但嵌套层数不宜过多,以免程序难以维护和理解。语法结构:if (条件1) { if (条件2) { // 当条件1和条件2都为真时执行的代码 } else { // 当条件1为真但条件2为假时执行的代码 } } else { // 当条件1为假时执行的代码 } #include <stdio.h> int main() { int year; printf("请输入年份:"); scanf("%d", &year); if (year % 4 == 0) { if (year % 100 == 0) { if (year % 400 == 0) { printf("%d 是闰年。\n", year); } else { printf("%d 不是闰年。\n", year); } } else { printf("%d 是闰年。\n", year); } } else { printf("%d 不是闰年。\n", year); } return 0; }
2024年10月10日
37 阅读
0 评论
1 点赞
2024-09-09
数据库知识要点
MySQL简介MySQL是一个关系型数据库管理系统(RDBMS),以其高效、易用、开源等优点广泛应用于Web开发、数据存储和管理等领域。数据库的基本概念数据库:数据的有序集合,可以看作一个电子化的文件柜。表:数据库的基本存储结构,由行(记录)和列(字段)组成。字段:表的列,每一列有一个名称,指定了数据的类型。记录:表中的一行数据。-- 创建数据库 CREATE DATABASE school; -- 使用数据库 USE school; 数据类型数值类型:INT, FLOAT, DOUBLE, DECIMAL等。字符类型:CHAR, VARCHAR, TEXT等。日期和时间类型:DATE, TIME, DATETIME, TIMESTAMP等。布尔类型:BOOLEAN,通常用TINYINT(1)实现。-- 创建学生表,包含不同数据类型 CREATE TABLE students ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, age INT, score DECIMAL(5, 2), birth_date DATE );基本表操作创建表:使用CREATE TABLE语句。修改表:使用ALTER TABLE语句,可以增加、删除、修改字段。删除表:使用DROP TABLE语句删除整个表结构和数据。-- 添加新字段 ALTER TABLE students ADD COLUMN email VARCHAR(100); -- 修改字段 ALTER TABLE students MODIFY COLUMN age TINYINT; -- 删除字段 ALTER TABLE students DROP COLUMN email; -- 删除表 DROP TABLE students; 插入数据使用INSERT INTO语句将数据插入到表中,可以插入单条或多条记录。-- 插入单条记录 INSERT INTO students (name, age, score, birth_date) VALUES ('张三', 18, 85.50, '2005-09-01'); -- 插入多条记录 INSERT INTO students (name, age, score, birth_date) VALUES ('李四', 17, 90.00, '2006-08-15'), ('王五', 18, 78.00, '2005-07-20'); 查询数据基本查询:使用SELECT语句查询表中的数据。条件查询:WHERE子句用于筛选记录。排序:ORDER BY用于按指定列排序。分组:GROUP BY用于对查询结果进行分组。分页:LIMIT用于限制查询结果的数量。-- 查询所有学生 SELECT * FROM students; -- 条件查询,查找年龄大于17的学生 SELECT * FROM students WHERE age > 17; -- 按成绩降序排序 SELECT * FROM students ORDER BY score DESC; -- 分组统计各年龄的学生数量 SELECT age, COUNT(*) AS count FROM students GROUP BY age; -- 分页查询,获取前两条记录 SELECT * FROM students LIMIT 2; 更新数据使用UPDATE语句更新表中的数据,需要结合WHERE子句指定更新条件。-- 更新学生成绩 UPDATE students SET score = 88.50 WHERE name = '张三'; -- 批量更新,将所有学生年龄增加1岁 UPDATE students SET age = age + 1; 删除数据使用DELETE语句删除表中的记录,谨慎使用WHERE子句,否则会删除整张表的数据。-- 删除指定学生 DELETE FROM students WHERE name = '李四'; -- 删除所有记录(不删除表结构) DELETE FROM students; 常用函数字符串函数:CONCAT(), UPPER(), LOWER(), SUBSTRING()等。数学函数:ABS(), ROUND(), CEIL(), FLOOR()等。日期函数:NOW(), CURDATE(), DATE_ADD(), DATEDIFF()等。聚合函数:COUNT(), SUM(), AVG(), MIN(), MAX()等。-- 使用字符串函数将姓名拼接 SELECT CONCAT(name, '同学') AS new_name FROM students; -- 数学函数,取绝对值 SELECT ABS(-10) AS absolute_value; -- 日期函数,计算两个日期之间的天数 SELECT DATEDIFF('2024-09-01', '2024-08-01') AS days_diff; -- 聚合函数,计算平均成绩 SELECT AVG(score) AS avg_score FROM students; 联合查询(JOIN)在关系型数据库中,连表查询(Join)是用来从多个表中提取数据的操作。主要的连表方式有三种:内连接(INNER JOIN)、左连接(LEFT JOIN) 和 右连接(RIGHT JOIN)。每种连接方式的区别在于它们对匹配和不匹配数据的处理方式。区别内连接(INNER JOIN)只返回两个表中符合连接条件的匹配记录。如果没有匹配的记录,结果中不会包含这些记录。左连接(LEFT JOIN)返回左表的所有记录,以及左表中每条记录对应的右表的匹配记录。如果左表中的记录在右表中没有匹配,结果中该记录的右表字段为 NULL。右连接(RIGHT JOIN)返回右表的所有记录,以及右表中每条记录对应的左表的匹配记录。如果右表中的记录在左表中没有匹配,结果中该记录的左表字段为 NULL。示例表格表 1: students(学生信息表)student_idnameclass_id1Alice1012Bob1023Charlie1034DavidNULL表 2: classes(班级信息表)class_idclass_name101Mathematics102Science104Literature查询及结果1. 内连接(INNER JOIN)SELECT students.name, classes.class_name FROM students INNER JOIN classes ON students.class_id = classes.class_id;结果:nameclass_nameAliceMathematicsBobScience说明:仅返回 students.class_id 和 classes.class_id 匹配的记录。Charlie 和 David 的记录因为没有匹配的 class_id,被排除。2. 左连接(LEFT JOIN)SELECT students.name, classes.class_name FROM students LEFT JOIN classes ON students.class_id = classes.class_id;结果:nameclass_nameAliceMathematicsBobScienceCharlieNULLDavidNULL说明:返回 students 表的所有记录。Charlie 和 David 的 class_name 为 NULL,因为没有匹配的 class_id。3. 右连接(RIGHT JOIN)SELECT students.name, classes.class_name FROM students RIGHT JOIN classes ON students.class_id = classes.class_id;结果:nameclass_nameAliceMathematicsBobScienceNULLLiterature说明:返回 classes 表的所有记录。class_id = 104 的记录没有匹配的学生,name 为 NULL。总结表格操作返回的数据INNER JOIN两表中满足条件的匹配记录LEFT JOIN左表的所有记录 + 匹配的右表记录 (无匹配填 NULL)RIGHT JOIN右表的所有记录 + 匹配的左表记录 (无匹配填 NULL)这种不同的连接方式根据查询需求使用,可以灵活提取数据。索引定义:索引用于提高查询效率,可以在表的列上创建索引。类型:PRIMARY KEY(主键索引)、UNIQUE(唯一索引)、INDEX(普通索引)。创建与删除索引:使用CREATE INDEX和DROP INDEX语句。-- 创建索引 CREATE INDEX idx_name ON students (name); -- 查询使用索引 SELECT * FROM students WHERE name = '张三'; -- 删除索引 DROP INDEX idx_name ON students; 视图定义:视图是基于SQL查询结果的虚拟表,不存储实际数据。优点:简化复杂查询、提高数据安全性。创建与删除视图:使用CREATE VIEW和DROP VIEW语句。-- 创建视图 CREATE VIEW student_view AS SELECT name, age FROM students WHERE age >= 18; -- 查询视图 SELECT * FROM student_view; -- 删除视图 DROP VIEW student_view; 存储过程定义:存储过程是存储在数据库中的一组SQL语句,可以接收参数并执行复杂的逻辑。优点:提高代码重用性、封装逻辑、减少与数据库的交互次数。创建与调用存储过程:使用CREATE PROCEDURE和CALL语句。-- 创建存储过程 DELIMITER // CREATE PROCEDURE GetStudentByAge(IN min_age INT) BEGIN SELECT * FROM students WHERE age >= min_age; END // DELIMITER ; -- 调用存储过程 CALL GetStudentByAge(18);
2024年09月09日
53 阅读
1 评论
1 点赞
2024-09-09
C语言知识要点
C语言简介C语言是一种结构化的、过程化的编程语言,广泛用于系统软件开发,如操作系统、编译器等。其特点是简洁、高效,能直接操作硬件,是学习编程的基础语言之一。基本语法程序结构:C语言程序由头文件、主函数main()和其他函数组成。注释://用于单行注释,/ ... /用于多行注释。标识符:变量、函数名、常量名的命名规则,必须以字母或下划线开头。#include <stdio.h> int main() { // 单行注释 printf("Hello, World!\n"); // 输出Hello, World! return 0; }数据类型基本数据类型:int(整数),float(浮点数),double(双精度浮点数),char(字符)。修饰符:signed、unsigned、short、long可修饰基本数据类型。枚举类型:定义一组命名常量,增加代码可读性。#include <stdio.h> int main() { int a = 10; // 整型 float b = 5.5; // 浮点型 char c = 'A'; // 字符型 enum Day {MON, TUE, WED}; // 枚举类型 enum Day today = MON; printf("整数: %d, 浮点数: %.1f, 字符: %c, 枚举: %d\n", a, b, c, today); return 0; }运算符与表达式算术运算符:+, -, *, /, %(取模)。关系运算符:==, !=, <, >, <=, >=。逻辑运算符:&&(与),||(或),!(非)。位运算符:&, |, ^, ~, <<, >>。赋值运算符:=, +=, -=, *=, /=, %= 等。自增自减运算符:++, --。 #include <stdio.h> int main() { int a = 10, b = 20; int sum = a + b; // 算术运算 int isEqual = (a == b); // 关系运算 printf("和: %d, 相等: %d\n", sum, isEqual); // 输出和与相等结果 return 0; } 控制结构条件语句:if, else, switch。循环语句:while, do...while, for。跳转语句:break, continue, goto。#include <stdio.h> int main() { int num = 5; // if 语句 if (num > 0) { printf("正数\n"); } else { printf("非正数\n"); } // for 循环 for (int i = 0; i < 5; i++) { printf("计数: %d\n", i); } // switch 语句 switch (num) { case 1: printf("数字是 1\n"); break; case 5: printf("数字是 5\n"); break; default: printf("其他数字\n"); } return 0; }数组数组是相同数据类型元素的集合,可以是单维、二维或多维数组。#include <stdio.h> int main() { int numbers[5] = {1, 2, 3, 4, 5}; // 定义一维数组 int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}}; // 定义二维数组 printf("一维数组的第一个元素: %d\n", numbers[0]); printf("二维数组的元素: %d\n", matrix[1][2]); // 输出 6 return 0; }字符串C语言没有专门的字符串类型,字符串本质上是字符数组,以\0(空字符)结尾。#include <stdio.h> int main() { char str[] = "Hello"; printf("字符串: %s\n", str); return 0; }函数定义和调用:函数用于将代码模块化,避免重复代码,提高可维护性。参数传递:C语言支持按值传递和按地址传递。#include <stdio.h> // 函数定义 int add(int x, int y) { return x + y; } int main() { int result = add(10, 20); // 函数调用 printf("函数结果: %d\n", result); return 0; }指针定义:指针是存储变量地址的变量。指针与数组:指针可以操作数组,甚至可以作为函数参数来传递数组。空指针与悬空指针:必须正确初始化指针,避免野指针和悬空指针。#include <stdio.h> int main() { int a = 10; int *p = &a; // 定义指针并指向变量 a 的地址 printf("变量的值: %d, 指针指向的值: %d\n", a, *p); return 0; }结构体定义结构体:结构体是将不同类型数据组合在一起的用户自定义数据类型。结构体数组:结构体也可以形成数组,用于存储多个类似结构的数据。#include <stdio.h> // 定义结构体 struct Student { char name[20]; int age; float score; }; int main() { struct Student student1 = {"张三", 18, 89.5}; // 初始化结构体 printf("学生姓名: %s, 年龄: %d, 分数: %.2f\n", student1.name, student1.age, student1.score); return 0; } 文件操作文件指针:FILE *用于文件操作。基本操作:fopen, fclose, fread, fwrite, fprintf, fscanf等函数。#include <stdio.h> int main() { FILE *fp = fopen("example.txt", "w"); // 打开文件进行写操作 if (fp != NULL) { fprintf(fp, "Hello, file!"); // 写入文件 fclose(fp); // 关闭文件 printf("文件操作成功\n"); } else { printf("文件打开失败\n"); } return 0; }
2024年09月09日
24 阅读
0 评论
1 点赞
2024-03-07
中兴2.5G光猫F7607p/G7615折腾
telnet root、Zte521跳过ITMS注册电信固件和联通固件部分省份没注册ITMS服务器的话会劫持所有DNS请求的结果到192.168.1.1,使用如下命令手动欺骗ITMS注册结果,解决刷完后打开任意网页自动跳转LOID注册页面。sendcmd 1 DB set PDTCTUSERINFO 0 Status 0sendcmd 1 DB set PDTCTUSERINFO 0 Result 1sendcmd 1 DB save修改超级密码:修改超级帐号:sendcmd 1 DB set DevAuthInfo 0 User XXXXXX修改超级密码:sendcmd 1 DB set DevAuthInfo 0 Pass XXXXXX修改用户限制:sendcmd 1 DB p CltLmtsendcmd 1 DB set CltLmt 8 Max 20 (修改最大用户数为20,可以改成其他数目,最大数目不超过255)sendcmd 1 DB set CltLmt 8 Enable 0sendcmd 1 DB save修改Mac地址、SN等:查看系统参数信息:setmac show2修改格式:setmac 1 [ID] [内容]如修改PONMAC命令为:setmac 1 32769 MAC地址关闭TR069与定时上报功能:sendcmd 1 DB p MgtServer #查看一下当前的电信远程控制sendcmd 1 DB set MgtServer 0 URL http://127.0.0.1 把服务器 URL 改掉sendcmd 1 DB set MgtServer 0 Tr069Enable 0 sendcmd 1 DB set MgtServer 0 PeriodicInformEnable 0sendcmd 1 DB save删除定制版WiFi名字前缀(CMCC, ChinaNet):sendcmd 1 DB set WLANCfg 0 ESSIDPrefix #设置2.4G的ssid前缀为空 sendcmd 1 DB set WLANCfg 4 ESSIDPrefix #设置5G的ssid前缀为空 sendcmd 1 DB save关闭下行光口和WiFi关闭:ip link set mini-olt downrmmod opticalrmmod mtlkrmmod mtlkroot开启:insmod /kmodule/optical.koinsmod /kmodule/mtlkroot.koinsmod /kmodule/mtlk.ko查看固件版本和编译日期:hexdump -C -s 0x180 -n 128 /dev/mtd7 输出kernel分区的固件版本号和编译日期部分,移动联通为mtd7和mtd8,电信为mtd9和mtd10。00000180 5a 58 48 4e 20 46 37 36 30 37 50 20 55 4e 49 20 |ZXHN F7607P UNI |00000190 56 32 2e 30 2e 36 50 31 4e 32 00 00 00 00 00 00 |V2.0.6P1N2......|000001a0 01 00 00 00 00 48 08 00 40 00 54 04 7e f2 f6 49 |.....H..@.T.~..I|000001b0 00 00 7e 02 00 00 d6 01 17 07 c4 96 00 00 00 00 |..~.............|000001c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|000001d0 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 |................|000001e0 8d a4 a1 c0 32 30 32 32 30 35 31 36 32 32 35 32 |....202205162252|000001f0 34 33 00 00 00 00 00 00 ff ff ff ff ff ff ff ff |43..............|00000200查看硬件配置信息:cat /proc/capability/boardinfosystem:LINUXcpufac:ZXICcpumod:ZX2791322gwlmod:INTEL5gwlmod:INTELcpufre:1100MHZcpunum:4flshcap:256MBddrcap:512MB参考文章1、https://zhuanlan.zhihu.com/p/6720713582、https://www.right.com.cn/forum/thread-8281055-1-1.html
2024年03月07日
512 阅读
0 评论
0 点赞
2024-03-06
数据库基本操作
以下是MySQL数据库操作的基本命令及其说明文档:连接到MySQL服务器:mysql -u username -p-u选项用于指定用户名。-p选项提示输入密码。创建数据库:CREATE DATABASE database_name;创建一个名为database_name的新数据库。使用数据库:USE database_name;切换到指定的数据库。查看所有数据库:SHOW DATABASES;显示MySQL服务器上的所有数据库列表。创建表:CREATE TABLE table_name ( column1 datatype constraints, column2 datatype constraints, ... );CREATE TABLE users ( id INT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) UNIQUE ); 创建一个名为table_name的新表,定义列名、数据类型和约束。查看表结构:DESCRIBE table_name;或SHOW COLUMNS FROM table_name;显示指定表的列名、数据类型和约束。插入数据:INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);INSERT INTO users (username, email) VALUES ('tom', '10@163.com');向指定表中插入一条新记录。查询数据:SELECT column1, column2, ... FROM table_name WHERE condition;从指定表中检索数据,可以使用WHERE子句进行条件过滤。更新数据:UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;更新表中已有的数据。删除数据:DELETE FROM table_name WHERE condition;从指定表中删除符合条件的数据。删除表:DROP TABLE table_name;删除指定的表及其所有数据。删除数据库:DROP DATABASE database_name;删除指定的数据库及其中的所有表和数据。退出MySQL命令行:EXIT;或QUIT;退出MySQL命令行客户端。主键(Primary Key)和唯一约束(UNIQUE Constraint)是用于确保数据表中数据唯一性的两种方式,但它们有一些重要的区别:唯一性保证:主键:主键是表中的一列或一组列,其值在整个列中必须是唯一的,即不允许有重复值存在。每个表只能有一个主键,且主键列不能为空(NOT NULL)。唯一约束:唯一约束也确保列中的值是唯一的,但与主键不同的是,唯一约束可以应用于表中的多个列,而且可以允许空值。索引:主键:主键自动创建一个唯一性索引,以加速数据检索和唯一性检查。唯一约束:唯一约束也创建唯一性索引,但它允许多个NULL值。如果唯一约束应用于多个列,那么这些列的组合值必须是唯一的。用途:主键:主键通常用作表中的唯一标识符,用于唯一地标识每一行数据。唯一约束:唯一约束用于确保列中的值在整个表中是唯一的,但不一定是用作表的标识符。综上所述,主键和唯一约束都用于确保表中的数据唯一性,但它们的约束和用途略有不同。主键是唯一标识表中每个行的列或列组合,而唯一约束只是确保列中的值是唯一的,不一定是用作标识符。
2024年03月06日
80 阅读
0 评论
1 点赞
1
2