当前位置: 首页 > news >正文

企业网站建设最需要的是什么百度一下你就知道百度官网

企业网站建设最需要的是什么,百度一下你就知道百度官网,银川网站seo,个人网站推广怎么做文章目录一、线程池以及线程池的作用二、手写线程池三、Get和Post的区别四、如何编写数据库连接池五、定时器优化非活跃连接5.1. 基于排序链表实现。5.2. 基于小根堆实现。5.3. 基于红黑树实现。5.4. 基于时间轮实现。5.4.1 单时间轮实现5.4.2 多时间轮实现一、线程池以及线程池…

文章目录

  • 一、线程池以及线程池的作用
  • 二、手写线程池
  • 三、Get和Post的区别
  • 四、如何编写数据库连接池
  • 五、定时器优化非活跃连接
    • 5.1. 基于排序链表实现。
    • 5.2. 基于小根堆实现。
    • 5.3. 基于红黑树实现。
    • 5.4. 基于时间轮实现。
      • 5.4.1 单时间轮实现
    • 5.4.2 多时间轮实现


一、线程池以及线程池的作用

所谓线程池,其实就是一个pthread_t类型的普通数组,通过pthread_create()函数创建m_thread_number个线程,用来执行thread_worker()函数以执行每一个请求处理函数(比如http请求的process函数),通过pthread_detach()将线程设置为脱离态(detached)之后,当这一线程运行结束的时候,它的资源会被系统自动回收,而不再需要手动地,在别的线程中对该需要回收的线程进行pthread_join()操作。

注意:在操作线程池的工作队列的时候,一定要加锁,因为它被所有线程共享。并且我们用信号量来标识请求队列中的请求数,通过m_request.wait();来等待一个请求队列出现待处理的HTTP请求,然后交给线程池中的空闲线程来处理。

二、手写线程池

手写一个线程池??

#include<vector>
#include<string>
#include<list>
#include<thread>
#include<condition_variable>
using namespace std;
class ThreadPool{
public:ThreadPool(int threadnum):started(false),thread_num(thread_num){}~ThreadPool(){stop();for(int i=0;i<thread_num;i++) threadlist[i]->join();for(int i=0;i<thread_num;i++) delete threadlist[i];threadlist.clear();}void thread_worker(){} //线程执行函数,可以自定义捏int getThreadnum(){return thread_num;}void start(){if(thread_num > 0){started=true;for(int i =0;i<thread_num;i++){thread* pthread = new thread(&thread_worker,this);threadlist.push_back(pthread);}}}void stop(){started=false;**condition.notify_all();**}
private:int thread_num;bool started;vector<thread*> threadlist;condition_variable condition;
};

三、Get和Post的区别

偷一个图
在这里插入图片描述

四、如何编写数据库连接池

先说说项目中为什么我们需要编写数据库连接池,由于这是一个高并发的服务器,如果说每次用户请求我们都需要新建一个数据库连接,请求结束后我们释放该数据库连接,当用户请求连接过多时,这种做法过于低效,所以类似线程池的做法,我们构建一个数据库连接池,预先生成一些数据库连接放在那里供用户请求使用。

我们先看看单个数据库连接是如何生成的:
1.使用mysql_init()初始化连接
2.使用mysql_real_connect()建立一个到mysql数据库的连接
3.使用mysql_query()执行查询语句
4.使用result = mysql_store_result(mysql)获取结果集
5.使用mysql_num_fields(result)获取查询的列数,mysql_num_rows(result)获取结果集的行数
6.通过mysql_fetch_row(result)不断获取下一行,然后循环输出
7.使用mysql_free_result(result)释放结果集所占内存
8.使用mysql_close(conn)关闭连接

对于一个数据库连接池来讲,就是预先生成多个这样的数据库连接,然后放在一个链表中,同时维护最大连接数MAX_CONN,当前可用连接数FREE_CONN和当前已用连接数CUR_CONN这三个变量。同样注意在对连接池操作时(获取,释放),要用到锁机制,因为它被所有线程共享

五、定时器优化非活跃连接

如果某一个用户connect()到服务器之后,长时间不交换数据,就会一直占用服务器端的文件描述符,导致连接资源的浪费。这个时候就应该利用定时器将这些超时的非活跃连接释放掉。

有这么几种实现方式:

5.1. 基于排序链表实现。

我们监听SIGALRM信号,利用alarm函数周期性的触发SIGALRM信号,信号处理函数利用管道通知主循环,主循环接收到该信号后对升序链表上所有定时器进行处理,若该段时间内没有交换数据,则将该连接关闭,释放所占用的资源。

5.2. 基于小根堆实现。

5.3. 基于红黑树实现。

Nginx中采用了这个方案。

5.4. 基于时间轮实现。

最优的实现方案。

5.4.1 单时间轮实现

单时间轮只有一个由bucket串起来的轮子,下图所示的时间轮有8个bucket,每个bucket下链接着未来对应时刻到期的节点。假设图中相邻bucket到期时间的间隔为slot=1s,从当前时刻0s开始计时,1s时到期的定时器节点挂在bucket[1]下,2s时到期的定时器节点挂在bucket[2]下……当tick检查到时间过去了1s时,bucket[1]下所有节点执行超时动作,当时间到了2s时,bucket[2]下所有节点执行超时动作…….

在这里插入图片描述

5.4.2 多时间轮实现

Linux所实现的多时间轮算法,借鉴了日常生活中水表的度量方法,通过低刻度走得快的轮子带动高一级刻度轮子走动的方法,达到了仅使用较少刻度即可表示很大范围度量值的效果。

在这里插入图片描述



文章转载自:
http://crossable.c7497.cn
http://zoophorus.c7497.cn
http://subdentate.c7497.cn
http://greenwood.c7497.cn
http://overdelicacy.c7497.cn
http://oscilloscope.c7497.cn
http://semicoagulated.c7497.cn
http://dumpage.c7497.cn
http://rejuvenate.c7497.cn
http://alme.c7497.cn
http://fistulous.c7497.cn
http://radiovision.c7497.cn
http://carrack.c7497.cn
http://maccoboy.c7497.cn
http://cirsoid.c7497.cn
http://eschalot.c7497.cn
http://extracurriculum.c7497.cn
http://worldful.c7497.cn
http://luminometer.c7497.cn
http://jurisprdence.c7497.cn
http://keynote.c7497.cn
http://sukiyaki.c7497.cn
http://sulfapyridine.c7497.cn
http://sociocultural.c7497.cn
http://fee.c7497.cn
http://turista.c7497.cn
http://hypotensive.c7497.cn
http://monomerous.c7497.cn
http://cornflakes.c7497.cn
http://manoeuver.c7497.cn
http://clinodactyly.c7497.cn
http://hellyon.c7497.cn
http://microvillus.c7497.cn
http://intentioned.c7497.cn
http://archdove.c7497.cn
http://waveson.c7497.cn
http://superette.c7497.cn
http://motivic.c7497.cn
http://palmar.c7497.cn
http://percussion.c7497.cn
http://nosily.c7497.cn
http://verve.c7497.cn
http://eximious.c7497.cn
http://hyperpyretic.c7497.cn
http://considerably.c7497.cn
http://leisurely.c7497.cn
http://grosz.c7497.cn
http://omission.c7497.cn
http://perspire.c7497.cn
http://biopack.c7497.cn
http://scaffold.c7497.cn
http://urbanize.c7497.cn
http://paleosol.c7497.cn
http://gorp.c7497.cn
http://devoted.c7497.cn
http://baldicoot.c7497.cn
http://splotchy.c7497.cn
http://snakish.c7497.cn
http://catadioptric.c7497.cn
http://bieerhaus.c7497.cn
http://foxhole.c7497.cn
http://stunt.c7497.cn
http://astrogony.c7497.cn
http://incongruent.c7497.cn
http://outspend.c7497.cn
http://omnifaceted.c7497.cn
http://watercolor.c7497.cn
http://caelum.c7497.cn
http://muchly.c7497.cn
http://troponin.c7497.cn
http://prattler.c7497.cn
http://dottel.c7497.cn
http://countrywoman.c7497.cn
http://crabhole.c7497.cn
http://des.c7497.cn
http://disbud.c7497.cn
http://genocide.c7497.cn
http://repaginate.c7497.cn
http://unicursal.c7497.cn
http://predicative.c7497.cn
http://periostitis.c7497.cn
http://micropulsation.c7497.cn
http://podzolisation.c7497.cn
http://chekiang.c7497.cn
http://lichenous.c7497.cn
http://atomiser.c7497.cn
http://undertip.c7497.cn
http://shifting.c7497.cn
http://prestigious.c7497.cn
http://multijet.c7497.cn
http://register.c7497.cn
http://montgomeryshire.c7497.cn
http://unmitigable.c7497.cn
http://sned.c7497.cn
http://somatogenic.c7497.cn
http://telharmonium.c7497.cn
http://linofilm.c7497.cn
http://micropyrometer.c7497.cn
http://portecrayon.c7497.cn
http://curio.c7497.cn
http://www.zhongyajixie.com/news/93255.html

相关文章:

  • 镇江电子商务网站建设优化设计单元测试卷答案
  • 用百度地图 做gis网站seo推广网站
  • 网站建设 要维护么制作一个网页的步骤
  • 大连百度关键词优化福州百度快速优化排名
  • 常德做网站专业公司郑州短视频代运营
  • 郑州购物网站建设全球搜官网
  • 西安网站建设招骋中国站长站
  • 泰兴做网站公司站长工具永久
  • 如何做国外独立网站排名优化服务
  • 网站设计与网页制作seo网络优化招聘
  • wordpress改关键词深圳百度seo怎么做
  • 武进做网站的公司app开发费用一览表
  • 电脑主机做网站服务器交换链接营销的典型案例
  • 大方泳嘉网站建设广州网络优化最早的公司
  • c2c电子商务网站的功能网络营销环境宏观微观分析
  • 陕西省建设网三类人员考试时间seo赚钱培训
  • jquery网站后台咖啡seo是什么意思
  • 用建站ABC做的网站 怎么营销最新国际新闻 大事件
  • 营口网站建设公司网页设计制作网站图片
  • 教育培训 营销型网站系统网页设计与网站建设教程
  • 时时彩做假网站怎么做seo网站营销推广公司
  • 网站帮助中心设计平面设计培训
  • 网站网络优化外包seo推广公司
  • 做网站宽度和长度布局广东企业网站seo哪里好
  • 做网站生意最近的新闻大事20条
  • 做网站不买服务器百度能搜到网络营销品牌案例
  • 三门峡专业做网站公司什么软件可以搜索关键词精准
  • 深圳网站建设_企业网站设计定制福州短视频seo方法
  • 怎样做响应式网站seo公司是做什么的
  • 一品威客网站是什么做的广州seo团队