![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Service
文章平均质量分 53
暂代
须知少日拿云志,曾许人间第一流。
展开
-
STL线程安全讨论
最近在回头看STL里面的实现,也在进一步研究高性能服务器编程方面的东西,就想到那STL在多线程情况下是否安全呢?记录STL是数据结构和算法的精妙实现,因此为了追求极致的效率,内部并没有给所有的操作加锁。对于STL的容器而言,只有下面这两种情况可以保证线程安全:多个线程同时读取同一个容器的内容多个线程同时写不同的容器其他的情况,比方说:多个线程同时读、写同一个容器。这就不是线程安全...原创 2018-11-21 00:43:24 · 1676 阅读 · 0 评论 -
Nginx root路径修改后无法生效解决方案
记一次解决“Nginx 修改root路径后无法生效”的问题解决历程。在使用Nginx搭建一个静态网站的时候,想要通过让Nginx转发某个请求到后台的指定静态文件,最初修改的Nginx的部分配置如下:server { listen 80; server_name localhost; location / { root html; index index.html; }...原创 2019-08-08 16:13:31 · 13890 阅读 · 2 评论 -
Nginx使用指南之安装
一、pcre 和 pcre-devel安装PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。nginx也需要此库。命令:sudo yum...原创 2019-08-01 15:55:21 · 890 阅读 · 4 评论 -
gflags简明使用指南
一、gflags简单介绍gflags是google开源的一套命令行参数解析工具。通常在项目开发中会有一种需求:可以在代码运行的时候指定某些代码中某些参数的值如果没有显式指定,这些参数可以使用默认的值比如:服务器编程中需要用到IP和端口号。但是这两个变量有时候在具体使用程序的时候才会有具体的值,如果不用gflags可以这么写://test.cc#include <iostrea...原创 2019-07-16 14:08:49 · 1188 阅读 · 0 评论 -
如果ESTABLISHED队列满了,可是有连接需要从SYN队列转移
转载至:https://blog.csdn.net/yangbodong22011/article/details/60468820由于标题长度有限制,我把想要描述的问题再次描述下:内核通常会为每一个LISTEN状态的Socket维护两个队列:accept队列: listen()函数第二个参数BACKLOG指定,表示已完成连接的队列,等待被accept函数取走。SYN队列:由/pro...转载 2019-06-23 10:50:56 · 500 阅读 · 1 评论 -
使用C++封装一个socket通信框架
封装一组socket常用通信操作,header only 风格。#pragma once#include <unistd.h>#include <string>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <f...原创 2019-06-22 23:56:14 · 768 阅读 · 0 评论 -
Linux下IO多路复用
文章目录一、IO多路复用处理数据报文二、select1. 简介2. 函数原型2.1 参数说明2.2 fd_set结构说明2.3 timeval结构说明2.4 返回值说明3. 就绪条件3.1 读就绪3.2 写就绪4. 函数使用5. 函数特点6. 函数缺点三、poll1. 函数原型1.1 参数说明1.2 pollfd结构说明1.3 返回值说明2. 就绪条件3. 函数使用4. 优点5. 缺点四、epol...原创 2019-06-21 21:04:02 · 866 阅读 · 0 评论 -
Epoll的惊群效应
什么是惊群效应? 在多线程或者多进程环境中使用Epoll来处理事件,每个线程 / 进程都同时监听着socket,那么当socket中的某个事件就绪后或者添加新的事件进去,操作系统就不知道应该将哪个线程 / 进程唤醒来处理此次事件,所以操作系统的处理方法就是同时唤醒多个线程 / 进程,可是此时必定只有一个线程/进程能够获得处理此次事件的权利,那么其他没有竞争到处理权限的线程 / 进程就会失败,错...原创 2019-06-20 21:38:40 · 1379 阅读 · 0 评论 -
提高服务器性能的建议
对于这里所说的服务器,更精确的定义应该是每秒处理大量离散消息或者请求的服务程序,网络服务器更符合这种情况,但并非所有的网络程序都是严格意义上的服务器。使用“高性能请求处理程序”是一个很糟糕的标题,为了叙述起来简单,下面将简称为“服务器”。 本文不会涉及到多任务应用程序,在单个程序里同时处理多个任务现在已经很常见。比如你的浏览器可能就在做一些并...原创 2018-05-01 14:57:25 · 577 阅读 · 0 评论 -
socket编程 & 地址转换函数
接口字符串转 in_addr://head file#include <arpa/inet.h>//portint inet_aton(const char* strptr, struct in_addr* addrptr);in_addr_t inet_addr(const char* strptr);int inet_pton(int family, const ch...原创 2018-11-21 01:19:22 · 383 阅读 · 0 评论 -
django1.11x + postgresql9.4实现一个评论系统的demo
django1.11 + postgresql9.4实现一个评论系统的demo。这个项目本身很简陋,只是为了练习django和postgresql的交互实现的一个完整的数据流。原创 2019-10-04 23:00:16 · 368 阅读 · 0 评论