Is this you? As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.
Claim your profile
Articles by int Port
Webserver解决segmentation fault(core dump)段错问问题
前言 在完成了整个项目后,我用make命令编译了server,当我运行./server文件时,出现了段错误 在大量的代码中找出错因并不是一件容易的事,尤其是对新手程序员来说。而寻找bug的过程就像是侦探调查线索追查凶手一样,我们要通过一点一点的蛛丝马迹来剥离表象,找到真凶。 今天,就由我来扮演一次侦探,调查一番这个段错误到底出自谁手。 段错误:我们面临的是什么敌人 在解决问题之前,让我先来了解一下什么是段错误: "Segmentation fault (core dumped)" 是一种程序运行时错误,通常表示程序试图访问无效的内存地址。这种错误可能由多种原因引起,包括指针错误、数组越界、使用已释放的内存等。 一般情况下,解决段错误的方法是使用gdb调试段错误生成的core文件。但是许多人会发现系统不会生成core dump文件,这是因为 core dump文件是由linux系统进行生成,而且其往往较大,默认情况下,Linux是不允许生成core dump文件的。 我们可以使用 ulimit -c 命令来查看,如果是...
C++ Webserver从零开始:代码书写(十一)--封装数据库连接池
前言 Hello大家好,今晚睡不着,起来写博客了。其实我发现上一篇文章也就是 C++ Webserver从零开始:代码书写(十)——完成Locker类和Log类封装-CSDN博客 的可读性不是很好,这主要原因是因为我写博客主要使用的工具是语雀。而在语雀上编辑完后,复制到csdn上会少很多结构和UI上的东西。比如高亮块,给每个高亮块的颜色区分,代码块命名等。但每次我写完博客后往往处于十分疲惫的阶段,也就直接发上来发布就不管了。现在看起来非常影响可读性,但是我现在实在没有多余的精力去重新排版和规划。我尽量在整个专栏完成之后来一次大的风格统一和整理吧。 数据库连接池 这一节我们来写数据库的连接池,在动手之前我们先看看什么是池; 在程序设计思想中,"池"(Pool)通常指的是一种资源管理的模式,其中资源被集中管理并通过预先分配而不是按需创建。这种模式可以用于多种类型的资源,比如: 内存池 线程池 数据库连接池 那么,我们为什么要使用池呢?我们以数据库连接池举例,来说明一下池的优点和好处。 首先,我们先来看看数据库访问的一般流程: 当系统需要访问数据库时,先系统创建数据库连接...
【云备份|| 日志 day3】服务端配置信息模块
云备份day3 使用文件配置加载一些程序的运行关键信息可以让程序的运行更加灵活,且当需要修改部分内容时,不需要在代码上修改,只需要修改配置文件,然后重启服务器即可。 配置信息 热点判断时间 文件下载URL前缀路径 压缩包后缀名称 上传文件存放路径 压缩文件存放路径 服务端备份信息存放文件 服务器访问 IP 地址 服务器访问端口 采用json 格式将配置信息存放在Cloud.conf中,当启动服务器时,由服务器从.conf文件中读取关键数据。 Cloud.conf { “hot_time” : 30, “server_port” : 9090, “server_ip” : “1.1.1.1”, “url_prefix” : “/download/”, “arc_suffix” : “.lz”, “pack_dir” : “./packdir/”, “back_dir” : “./backdir/”, “manager_file” : “./back.dat” } 读取配置信息: 在服务器启动时,需要其自动化去加载数据,采取单例模式,在服务器启动时一起进行初始化。(懒汉模式) 代码:
TinyWebServer学习笔记-MySQL数据库连接-CSDN博客
为什么要用数据库连接池? 我们的网站允许用户注册,在没有池的情况下,假设只有一个人,那么流程就是,用户点击注册,通过socket将用户的账号和密码发送到服务器,然后就需要创建MySQL数据库连接,然后插入数据,插入完毕后销毁该连接;然而当用户很多时,这个设计就会花费大量的时间在数据库连接的创建和释放上。为了避免这种情况,引入池的概念,在程序初始化的时候,集中建立多个数据库连接,并集中管理,供程序使用,更见安全和可靠。 池是一组资源的机会,这组资源在服务器启动之初就被完全创建好并初始化,池是资源的容器,实现对资源的复用。是一种用空间换时间的技术。当系统开始处理客户请求的时候,如果需要相关资源,直接从池中获取,无需动态分配,当服务器处理完一个客户连接口,将相关资源放回池中,无需执行系统调用来释放资源。 如何设计? class connection_pool { public: MYSQL *GetConnection(); //获取数据库连接 bool ReleaseConnection(MYSQL *conn); //释放连接 int GetFreeConn(); //获取连接...
Show More
loading
Actions
Is this you?
As a journalist, you can create a free Muck Rack account to customize your profile, list your contact preferences, and upload a portfolio of your best work.Get in touch with int
Contact int, search articles and posts on X, monitor coverage, and track replies from one place.
Learn more about Muck Rack