学习中的疑问?
// 创建user表
USE yourdb;
CREATE TABLE user(
username char(50) NULL,
passwd char(50) NULL
)ENGINE=InnoDB;
疑问部分
ENGINE=InnoDB 存储引擎指定为innoDB的作用的意义?
报错部分
fatal error: mysql/mysql.h: No such file or directory?
进程结束后还占用大量内存?
ctrl+C关闭不了 使用命令ps aux查看进程iD 然后kill -9 进行关闭
知识学习和查漏补缺
epoll_create(5) 这个参数有什么作用?
在最初的 epoll_create() 实现中,大小参数
通知内核文件描述符的数量
调用者期望添加到 epoll 实例。 使用的内核
此信息作为最初空间量的提示
在描述事件的内部数据结构中分配。 (如果
必要时,如果调用者的
使用量超出了大小中给出的提示。)如今,此提示是
不再需要(内核动态调整所需的大小)
数据结构而不需要提示),但大小仍然必须是
大于零,以确保向后兼容性
新的 epoll 应用程序在旧内核上运行。
在 Linux 2.6.29 之前, /proc/sys/fs/epoll/max_user_instances
内核参数限制每个真实用户 ID 的实时 epolls,以及
导致 epoll_create() 因 EMFILE 溢出而失败。
由上面知道 参数大于0只是为了向前兼容
#、##、__VA_ARGS__的使用
信号量sem
管道pipe
下面是项目中封装的 类
class sem
{
public:
/*第一个参数是sem_t结构指针,该结构用于保存信号量的信息。
第二个参数控制信号量的类型,如果参数值为0,表示该信号量是局部的,否则其他程序就能共享这个信号量。
第三个参数是信号量的初始值。
*/
sem()
{
if (sem_init(&m_sem, 0, 0) != 0)
{
throw std::exception();
}
}
sem(int num)
{
if (sem_init(&m_sem, 0, num) != 0)
{
throw std::exception();
}
}
~sem()
{
sem_destroy(&m_sem);
}
bool wait()
{
return sem_wait(&m_sem) == 0;
}
bool post()
{
return sem_post(&m_sem) == 0;
}
private:
sem_t m_sem;
};
getopt 方法详解和使用示例 用于可执行文件可提供选择 自定义程序运行的方式
C/C++ 命令解析:getopt 方法详解和使用示例
具体代码部分在 config.cpp里面的 parse_arg 用来解析可供选择的运行方式 牛蛙牛蛙
void Config::parse_arg(int argc, char*argv[]){
int opt;
const char *str = "p:l:m:o:s:t:c:a:";
while ((opt = getopt(argc, argv, str)) != -1)
{
switch (opt)
{
case 'p':
{
PORT = atoi(optarg);
break;
}
case 'l':
{
LOGWrite = atoi(optarg);
break;
}
case 'm':
{
TRIGMode = atoi(optarg);
break;
}
case 'o':
{
OPT_LINGER = atoi(optarg);
break;
}
case 's':
{
sql_num = atoi(optarg);
break;
}
case 't':
{
thread_num = atoi(optarg);
break;
}
case 'c':
{
close_log = atoi(optarg);
break;
}
case 'a':
{
actor_model = atoi(optarg);
break;
}
default:
break;
}
}
}
模块部分
数据库连接池
liunx数据库常用api
mysql_init()
MYSQL *mysql_init(MYSQL *mysql)
描述
分配或初始化与mysql_real_connect()相适应的MYSQL对象。如果mysql是NULL指针,该函数将分配、初始化、并返回新对象。否则,将初始化对象,并返回对象的地址。如果mysql_init()分配了新的对象,当调用mysql_close()来关闭连接时。将释放该对象。
返回值
初始化的MYSQL*句柄。如果无足够内存以分配新的对象,返回NULL。
错误
在内存不足的情况下,返回NULL。
MYSQL *con = NULL;
con = mysql_init(con);
if (con == NULL)
{
LOG_ERROR("MySQL Error");
exit(1);
}