teamtalk源码解读
文章平均质量分 81
蘑菇街teamtalk即时通信项目源码源码解读,包括项目总结、项目中遇到的一些其他问题
hello world 999
日拱一卒无有尽,功不唐捐终到海,十年磨一剑,再见顶峰相见。
展开
-
【数据库连接池】01:连接池初始化
连接池不需要创建多个,所以可以通过单例模式来设计数据库连接池类,但是服务器肯定是多线程的,肯定会有多个线程都来获取连接池的单例,所以还需要保证数据库连接池的线程安全问题,CommonConnectionPool类设计:需要通过单例模式实现,并保证数据库连接池的线程安全问题(线程安全的单例),在整个系统中数据库连接池对象出现一次即可,有数据库连接需求时,从同一个数据库连接池中获取。封装Connection类,在该类内调用mysql提供的接口实现对数据库的增删改查,原创 2023-11-28 09:10:22 · 889 阅读 · 0 评论 -
【数据库连接池】02:连接池生产者操作
对于普通成员方法的调用依赖于对象,如果要将其设计成为一个线程函数,就必须将this指针所需要的对象绑定到该方法上(线程函数都是C接口,不支持面向对象),在创建生产者线程connProducer时,需要传入一个线程函数produceConnTask,使用绑定器为当前对象的成员方法produceConnTask,绑定一个当前对象,将线程函数写成类的成员函数,最大的好处是可以非常方便的访问当前对象的成员变量,produceConnTask具体的执行逻辑,创建一个生产者线程,作为数据库连接的生产者,原创 2023-11-28 09:12:03 · 489 阅读 · 0 评论 -
【数据库连接池】03:连接池消费者操作
shared_ptr构造函数第2个参数自动接收一个删除器(函数对象),直接使用lambda表达式创建一个删除器,并将其传入构造函数中。操作来归还连接,而是可以使用智能指针(智能指针出作用域会自动析构、进而释放Connection)还需要对智能指针重定义析构函数,在析构时不要将数据库连接释放掉,而是将连接归还到数据库连接池中,在外部使用完数据库连接后,可以不需要考虑再提供类似。ConnectionPool连接池需要向外部提供。接口,以便外部获取可用的空闲数据库连接,原创 2023-11-28 09:13:16 · 542 阅读 · 0 评论 -
【数据库连接池】04:连接池空闲连接回收
多余的连接如果超过指定的时间,还没有再次被使用到,就需要将连接进行回收,从而节省服务器资源,启动一个定时线程,定时扫描超过maxIdleTime的空闲连接,进行多余连接的回收操作。在初始化连接池时,添加刷新Connection连接的alivetime。在消费者生产Connection连接时,刷新连接的alivetime。在消费者使用完毕,归还数据库连接时,需要刷新连接的alivetime。原创 2023-11-28 09:14:25 · 1434 阅读 · 0 评论 -
URL信息截取与linux文件目录遍历
利用格式化输入sscanf函数实现主要功能:将参数str的字符串根据参数format字符串来转换并格式化数据,转换后的结果存于对应的参数中,指定长度指定字符为止包含指定字符集指定字符集为止举例:从中分别获取传输协议、网站域名、端口等信息。原创 2023-04-25 20:44:38 · 804 阅读 · 0 评论