自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 问答 (3)
  • 收藏
  • 关注

原创 std::optional和std::variant学习

C++17引入的一种模板类,主要用来表示一个可以为空的变量。例如,对于二分查找,传统的方式在找不到时通常返回一个特殊值标记,如返回-1表示找不到item。上述方式可能会存在一些问题,因为调用接口的人可能并不会检查函数返回值而直接使用结果,此外不同程序员习惯不同,可能也会使用不同类型的特殊值,从而提高使用成本。使用optional可以方便得处理上述情况,只需将函数接口稍加修改即可。想要处理返回值也很方便optional的另一种常用场景为可空对象作为实参。

2023-12-27 14:45:28 403

原创 c++交替打印

#include <thread>#include <iostream>#include <mutex>#include <condition_variable> std::mutex data_mutex;std::condition_variable data_var;bool flag = true; void print...

2019-08-30 16:25:40 403

原创 C++ 简单工厂模式

#include <bits/stdc++.h>#include <conio.h>using namespace std;class Operation{private: int num1; int num2;public: virtual int cal()=0; int getn1(){ return...

2019-08-21 14:34:22 165

原创 C++单例模式

#include <iostream>#include <conio.h>using namespace std;/*******************************************************************************// Mayer's Singletonclass Singleton{pub...

2019-08-21 14:32:13 183

原创 NGINX输出问题解决过程

发现在编译了新写的ngx_http_nc_module时,以前的nginx_hello_module失效了,甚至连nginx的欢迎页面也进不去,打开浏览器的调试工具发现一直处于pending状态,真是让人费解。经过导师的帮助,通过gdb调试时发现,在nginx的ngx_http_core_module中的ngx_http_core_run_phases函数,调用了如下方法,...

2019-08-15 10:34:52 1959

原创 nginx输出问题

尝试使用nginx module来获取连接的socketfd,查看了ngx_http_request_t和ngx_connection_t发现获取fd很简单,假设有个结构体ngx_http_request_t *r,则可以使用r->connection->fd得到连接的socketfd。在自己的ngx_http_nc_module中尝试了一下,handler处理函数如下...

2019-08-15 10:20:45 590

原创 记一次nginx module 调试

参考了https://blog.csdn.net/xiajun07061225/article/details/9383883先进入nginx工作目录 /usr/local/nginx/sbin/使用gdb -q -tui(q选项是以安静模式启动,不显示GDB版本等信息。tui选项可以显示代码界面)然后在gdb中启动nginx shell ./nginx启动之后,可以...

2019-08-15 10:11:11 424

原创 Socket编程实现简单的C/S交互

学习了一下socket编程的基本知识。主要看了下《UNIX网络编程卷1:套接字联网API(第3版)》里面对socket、bind、listen、accept、connect等函数的介绍。然后参考了http://chinaunix.net/uid-28541347-id-4700074.html原文确实挺不错,对我启发很大,这里直接贴个简单的代码,是通过客户端连接服务器,在服务器中通过fo...

2019-08-14 15:11:41 859

原创 Nginx + fastcgi 简单实例

参考https://blog.csdn.net/allenlinrui/article/details/19419721一、介绍通用网关接口(Common Gateway Interface/CGI)描述了客户端和服务器程序之间传输数据的一种标准,可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数据。CGI 独立于任何语言的,CGI 程序可以用任何脚本语言或者是完全独立编程语言...

2019-08-14 11:21:37 3123

原创 记一次tls客户端配置

参照https://github.com/alfredh/retlshttps://github.com/creytiv/re/tree/sip_tls_verify首先安装需要的libre库https://github.com/creytiv/re/tree/sip_tls_verify进去下载之后MakeMake installLdconfig然后安...

2019-08-14 11:08:01 1191

原创 open read write

Open read write函数参考https://blog.csdn.net/ly52352148/article/details/528738191.open()函数头文件#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>定义函数:int...

2019-08-14 10:37:43 560

原创 fork,execl,dup2

Fork execl dup2实习需要用到上面的几个函数。先通过一个简单的例子来学习一下。先写一个a.c代码输出hello附:在b.c代码中fork一个进程,将a.c的输出重定位到OUTPUT.txt中。fork()函数。一个现有进程可以调用fork函数创建一个新进程。 由fork创建的新进程被称为子进程(child ...

2019-08-14 10:28:43 416

原创 Nginx module开发 简单实例——filter模块

上篇笔记完成了一个简单的handler模块hello_module,本篇笔记将在上篇笔记的基础上增加一个filter模块,目的是将hanlder模块输出内容加粗变颜色。文章参考了http://tengine.taobao.org/book/chapter_04.html一、filter模块介绍 过滤(filter)模块是过滤响应头和内容的模块,可以对回复的头和内容进行处...

2019-08-14 10:16:06 822

原创 Nginx module开发 简单实例——hello world

以最简单的hello world为例。开发一个handler模块完成参考http://tengine.taobao.org/book/chapter_03.htmlhandler模块开发需要完成3步编写模块基本结构。包括模块的定义,模块上下文结构,模块的配置结构等。 实现handler的挂载函数。根据模块的需求选择正确的挂载方式。 编写handler处理函数。模块的功能主要通...

2019-08-14 10:01:48 845

原创 Nginx 配置

下载安装包nginx-1.14.2.tarhttp://nginx.org/en/download.htmlopenssl-1.1.1b.tar.gzhttps://ftp.openssl.org/source/old/1.1.1/1.放到/home/zbr/src目录下解压Tar –zxvf openssl-1.1.1b.tar.gz2.进入解压目录后./configMake...

2019-08-13 16:42:47 144

原创 一些杂笔记

http://tengine.taobao.org/book/chapter_04.html nginx模块开发工具书https://www.kancloud.cn/digest/understandingnginx/202597nginx基础知识https://blog.csdn.net/chaoyu168/article/details/49906145 客户端服务端简单认证htt...

2019-08-13 14:56:52 181

原创 旋转数组的最小数字

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。思路可以使用二分查找,使用两个指针lo和hi,lo为0,hi为size-1,因为递增数组旋转后的数组可以划分成两个有序的递增数组,所以要找的就是其分界点的位置,当a[lo]>a[hi

2017-08-05 14:57:22 277

原创 文章标题

栈混洗所谓栈混洗就是序列以某一顺序压入,给定另一个序列看其是否是压入序列的一个输出。用三个栈比较容易理解,A是入栈序列,每次只允许从A中push元素到S或者从S中push元素到A 例如序列1,2,3. 3,2,1就可以是它的一个输出序列,而3 1 2 就不会是它的一个输出序列。对于一个长度为n的序列,其满足栈混洗的数目sp(n)≤n!,具体来说,sp(n)=(2n)!/((n+1)!n!)。

2017-08-02 14:51:18 262

原创 括号匹配

遇到左括号入栈,遇到右括号看其与最上方的括号是否匹配,是则出栈,最后看栈是否为空即可#include#includeusing namespace std;bool ismatched(string s){ int l=s.length(); stack stk; if(s[0]==')'||s[0]==']'||s[0]=='}') return false; for(in

2017-08-01 15:15:26 301

原创 字符串翻转

string reverseString(string s) { char c; for(int i=0;i<s.length()/2;i++){ c=s[s.length()-i-1]; s[s.length()-i-1]=s[i]; s[i]=c; } return s;}可以使用一个中间变量存储后半段的值,这样只需要对前半段遍历,然后交换即可

2017-07-13 17:42:22 237

原创 文章标题

ex2写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。 可以用位操作来解。比如考虑5+6 5 –>101     6–>110step1:  (5&6)<<1=1000  =>8 5^6=011=>3step2:(8&3)<<1=0————————>跳出循环 8^3=1011=11——————————>结果所以写出int Add(int num1,int nu

2017-07-06 17:37:16 225

原创 欢迎使用CSDN-markdown编辑器

c++随笔在网上看了些东西比较有启发。 比如对于斐波拉契数列的实现,我以前很喜欢使用二分递归法,比如int fib(int n){ return (n<2)?n:fib(n-1)+fib(n-2);}然而,考虑一下他的时间复杂度T(n)=T(n-1)+T(n-2)+1,可以计算出T(n)=O(2^n).这显然不是个有效算法。 而使用迭代法:int fib(int n){ int

2017-07-06 15:30:08 238

原创 c++十进制转二进制

可以使用栈来做。#include #include using namespace std;int main(){ int n,ans; cin>>n; stack stk; while(n!=0){ ans=n%2; n=n/2; stk.push(ans); } while(!stk.empty()){ cout<<stk.top(); stk.pop()

2017-07-04 16:10:22 1138

原创 ex1

编写一个函数,确定需要改变几个位,才能将整数A转变成整数B。给定两个整数int A,int B。请返回需要改变的数位个数。测试样例:10,5返回:4#include using namespace std;int mntranscnt(int m,int n){ int t=m^n; int count=0; while(t!=0){  

2017-07-04 15:53:00 377

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除