gcc,gdb,gprof使用
gcc, gdb, 和 gprof 是GNU工具链中的三个重要工具,分别用于编译、调试和性能分析C/C++程序。下面我将详细介绍这三个工具及其基本用法:
GCC (GNU Compiler Collection)GCC是一个广泛使用的开源编译器集合,主要用来编译C和C++代码,但同时也支持其他语言如Fortran、Ada、Go等。GCC能够将源代码转换成可执行文件,通常的使用步骤包括预处理、编译、汇编和链接四个阶段。
gcc -o output_file source_file.c
这里,source_file.c是你的C源代码文件,output_file是生成的可执行文件名。你可以添加各种选项来控制编译行为,比如:
-Wall 或 -Wextra 添加警告信息,帮助发现潜在的错误。-g 添加调试信息,便于使用gdb进行调试。-O0, -O1, -O2, -O3 控制优化级别,其中-O3提供了最高的优化等级
GDB (GNU Debugger)GDB是一个强大的源级调试器,用于调试用C/C++等语言编写的程序。它允许你查看和修改程序的内部状态,设置断点,单步执行 ...
c++
cpu眼中的变量
cpu眼中的变量就是内存地址在计算机科学中,CPU(中央处理器)眼中的变量是指内存地址。当我们在程序中声明一个变量时,实际上是在内存中为该变量分配了一块空间,而这块空间的地址就是CPU眼中的变量。CPU通过这个地址来读取或修改这块内存中的数据。例如,如果我们在C++中声明一个整型变量int a = 10;,那么在内存中就会有一块空间被分配给a,并存储值10,而a的内存地址就是CPU眼中的a。
内存分页
每一个进程都有一个自己的页表,页表记录了进程的虚拟地址空间到物理地址空间的映射关系。
模板
模板是C++中一种非常重要的语法,它允许我们定义一个通用类型,并使用该类型来创建不同类型的变量。例如,我们可以定义一个模板类MyClass,然后使用该模板
Mysql
sqlsql语法数据定义DDL
数据操纵DML
数据查询DQL
数据控制DCL
事务管理TPL
指针控制
mysql -u root -p //数据定义DDLcreate database database_name default character set utf8;show databases;drop database database_name;use database_name ;create table tablename(字段名1 字段类型1(字段长度),字段名2 字段类型2(字段长度));show tables;desc tablename; 查看表结构drop table tablename;alter table tablename xxx(操作) 修改表修改列名alter table tablename change 原列名 想改成的列名 列类型;修改表的名字alter table tablename rename 新表名 ;修改列的类型alter table tablename modify 列名 想改的类型;增加某列alter table tablena ...
Go vs C++ vs python
Go vs C++ vs python 基础知识对比回顾一下这几个软件的基础知识吧,也算对过去一年的总结。ps.都是最基本的东西,同时对比也看一下各语言的差别。
简介Python是一种高级编程语言,它非常适合于快速开发和原型设计。它也被称为解释型语言,因为它的代码在运行时被解释成机器代码。
Go是由Google开发的一种静态类型的编程语言。它在系统编程、网络编程和并发编程方面表现出色。
C++是一种高效的系统级静态类型编程语言,广泛用于开发操作系统、游戏和高性能应用程序。
一、变量和常量变量和常量是编程中必不可少的部分,也是很好理解的一部分。
标识符标识符就是我们在程序中需要用到的变量、常量、函数、属性、类、模块等需要我们来自己定义的名字
Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头。 举几个例子:abc, _, _123, a123
标识符都是一样的。
关键字关键字是指编程语言中预先定义好的具有特殊含义的标识符。 关键字和保留字都不建议用作变量名。
Go语言中有25个关键字: break default func ...
go 语言规范
go 语言规范System:
par_ltc: 晶体结构类型
nx, ny, nz: 模拟系统在三个维度上的大小
par_compB: 杂质浓度
par_compV: 空位浓度
Mutiple: 是否允许多个空位存在
Simulation time parameters:
par_time: 模拟总时间
time_conf: 输出体系状态的时间间隔
par_step: 总步数
step_log: 输出log文件的步数间隔
Read File:
read_file: 是否从文件中读取系统信息
filepath: 文件路径
Kinetic parameters:
par_temp: 模拟温度
par_beta: 波尔兹曼常数
par_dis_rec: 再生中心到复合中心的距离
par_muvA: 空位在缺陷中移动的速率
Starting number of atoms:
par_radius_start: 起始原子数量
Energy parameters:
par_eSPA, par_eSPB: A-B, B-B之间相互作用的势能参数
par_eSPA1A, par_ ...
卡方测验
卡方测验卡方检验是一种用于确定观察到的频率与期望频率之间差异的统计检验。它可以用于比较两个或更多组分类变量的频率分布,以确定它们是否来自同一总体。
下面是进行卡方检验的基本步骤:
提出假设:你需要提出原假设和备择假设。原假设是指两个或更多组之间没有显著差异,而备择假设则是指它们之间存在显著差异。
确定显著性水平:在进行卡方检验之前,你需要确定显著性水平,通常为0.05或0.01。这表示如果计算出的p值小于显著性水平,则可以拒绝原假设。
收集数据:你需要收集每个组的样本数据,并计算每个组的观察频率。
计算期望频率:根据原假设,计算每个组的期望频率。
计算卡方值:将观察频率和期望频率之间的差异平方除以期望频率,然后将所有结果相加,即可得到卡方值。
查找临界值:使用自由度和显著性水平查找卡方分布表格,以确定拒绝原假设所需的临界值。
进行统计检验:比较卡方值和临界值。如果卡方值大于临界值,则可以拒绝原假设,并认为组之间存在显著差异。如果卡方值小于或等于临界值,则不能拒绝原假设。
例子假设你是一位研究人员,想要确定在某个城市中,男性和女性的吸烟率是否存在显著差异。你随机选择了200名男性和2 ...
口红和显卡
看到一个关于口红和显卡的对比,哈哈哈
6500XT —》 卡姿兰
6600 —》 美宝莲 欧莱雅
3060ti —》 mac
3070ti —》 植村秀 nars
3080 —》 兰蔻 香奈儿 纪梵希 阿玛尼
3090ti —》 圣罗兰 迪奥
4080 —-》 cpb 卢丹氏
4090 —-》 女王权杖萝卜丁
口琴乐谱
口琴乐谱搜集的几个比较简单,适合初学者的乐曲
漠河舞厅1#1#23#5 #4#5【#2】【#1】#5 #4#5【#2】【#1】#4 3#23#2(#5)(#5)#1#1#23#4#53 #5#5#57#5 #5#5#4#4#4#56 (#5)#5#5#5#4#2#1#23#4#53#53#5#5#57#5 #5#5#4#4#4#56 (#5)#5#5#4#2【#1】#5#1 #176 #56 7#4(7) (7)7#5 6#56#5 【#1】#5#1 #176 #56 6#56#56 6#56#56#5#3#3#3#4#5 #1【#1】#5766#56 66673737 77【2】 【2】【#1】【#1】【1】【#1】【#1】【#1】【#1】777【#1】【2】 【2】【2】【2】6667【#1】 【#1】【#1】77【#1】【#1】 【4】【#1】7#5 #56#4 #1#5#4#1#1#1#23#4#53 #5#5#57#5 #5#5#4#4#4#56 (#5)#5#5#5#4#2 #1#23#4#53#53#5#5#57#5 #5#5#4# ...
Go vs C++ vs python 反射
反射goGo语言中的变量是分为两部分的:
类型信息:预先定义好的元信息。
值信息:程序运行过程中可动态变化的。
反射介绍反射是指在程序运行期间对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。
支持反射的语言可以在程序编译期间将变量的反射信息,如字段名称、类型信息、结构体信息等整合到可执行文件中,并给程序提供接口访问反射信息,这样就可以在程序运行期间获取类型的反射信息,并且有能力修改它们。
Go程序在运行期间使用reflect包访问程序的反射信息。
在上一篇博客中我们介绍了空接口。 空接口可以存储任意类型的变量,那我们如何知道这个空接口保存的数据是什么呢? 反射就是在运行时动态的获取一个变量的类型信息和值信息
reflect包在Go语言的反射机制中,任何接口值都由是一个具体类型和具体类型的值两部分组成的(我们在上一篇接口的博客中有介绍相关概念)。 在Go语言中反射的相关功能由内置的reflect包提供,任意接口值在反射中都可以理解为由reflect.Type和reflect.Value两部分 ...
计算机网络
计算机网络请说一下socket网络编程中客户端和服务端用到哪些函数?参考回答
服务器端函数:
(1)socket创建一个套接字
(2)bind绑定ip和port
(3)listen使套接字变为可以被动链接
(4)accept等待客户端的链接
(5)write/read接收发送数据
(6)close关闭连接
客户端函数:
(1)创建一个socket,用函数socket()
(2)bind绑定ip和port
(3)连接服务器,用函数connect()
(4)收发数据,用函数send()和recv(),或read()和write()
(5)close关闭连接
TCP 半连接队列和全连接队列在 TCP 三次握手的时候,Linux 内核会维护两个队列,分别是:
半连接队列,也称 SYN 队列;
全连接队列,也称 accept 队列;
服务端收到客户端发起的 SYN 请求后,内核会把该连接存储到半连接队列,并向客户端响应 SYN+ACK,接着客户端会返回 ACK,服务端收到第三次握手的 ACK 后,内核会把连接从半连接队列移除,然后创建新的完全的连接,并将其添加到 acce ...