Backend Dev
暂代
须知少日拿云志,曾许人间第一流。
展开
-
项目中大量if...else...优化策略
项目中大量if...else..优化策略。网上关于这种优化的大都是java代码,所以特地记录一下我的想法,填补一下C++代码的空缺。Python来处理这个也类似,基本把map换成dict就行了。原创 2019-12-28 19:54:51 · 831 阅读 · 3 评论 -
django1.11x + postgresql9.4实现一个评论系统的demo
django1.11 + postgresql9.4实现一个评论系统的demo。这个项目本身很简陋,只是为了练习django和postgresql的交互实现的一个完整的数据流。原创 2019-10-04 23:00:16 · 387 阅读 · 0 评论 -
Python2.7.5生成验证码
开发网站登陆 / 注册页面的时候往往需要实现验证码模块用于反爬虫机制,这里介绍用python2来来实现生成验证码的功能。这里用到了graphic-verification-code库,这个库依赖于PIL库。原创 2019-08-17 16:57:16 · 222 阅读 · 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 · 13988 阅读 · 2 评论 -
gflags简明使用指南
一、gflags简单介绍gflags是google开源的一套命令行参数解析工具。通常在项目开发中会有一种需求:可以在代码运行的时候指定某些代码中某些参数的值如果没有显式指定,这些参数可以使用默认的值比如:服务器编程中需要用到IP和端口号。但是这两个变量有时候在具体使用程序的时候才会有具体的值,如果不用gflags可以这么写://test.cc#include <iostrea...原创 2019-07-16 14:08:49 · 1232 阅读 · 0 评论 -
线程相关笔记
注意:本篇文章不是系统的线程知识讲解,更多的是一些实用的线程常识和个人的笔记总结。如果读者想要获取更系统的OS线程知识讲解,那么本篇文章并不能很好的对你带来帮助,请移步至更详细系统的OS线程相关教程。一、简介线程,有时又被称为轻量级进程,是程序执行流的最小单元。一个标准的线程由线程ID、当前指令指针(PC)、寄存器集合和堆栈组成。通常意义上,一个进程由一个到多个线程组成,各个线程之间共享...原创 2019-07-09 12:41:12 · 184 阅读 · 0 评论 -
深入探索 Linux listen() 函数 backlog 的含义
转载至:https://blog.csdn.net/yangbodong22011/article/details/603997281:listen()回顾以及问题引入listen()函数是网络编程中用来使服务器端开始监听端口的系统调用,首先来回顾下listen()函数的定义: 有关于第二个参数含义的问题网上有好几种说法,我总结了下主要有这么3种:Kernel会为LISTEN状态...转载 2019-06-23 10:44:33 · 285 阅读 · 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 · 520 阅读 · 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 · 784 阅读 · 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 · 1464 阅读 · 0 评论 -
Epoll的惊群效应
什么是惊群效应? 在多线程或者多进程环境中使用Epoll来处理事件,每个线程 / 进程都同时监听着socket,那么当socket中的某个事件就绪后或者添加新的事件进去,操作系统就不知道应该将哪个线程 / 进程唤醒来处理此次事件,所以操作系统的处理方法就是同时唤醒多个线程 / 进程,可是此时必定只有一个线程/进程能够获得处理此次事件的权利,那么其他没有竞争到处理权限的线程 / 进程就会失败,错...原创 2019-06-20 21:38:40 · 1463 阅读 · 0 评论 -
Boost库安装及使用记录
Boost库是为C++语言标准库提供扩展的一些C++程序库的总称。文章目录一、前言Linux下安装Boost库二、Boost algorithm字符串切分字符大小写转换字符替换一、前言如果想要在项目中使用Boost库,首先要在开发环境安装Boost库。这里提供Linux Centos7.2开发环境下安装 Boost1.67 的方法。Linux下安装Boost库 1. 到官网下载需...原创 2019-05-12 11:15:02 · 475 阅读 · 0 评论