自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (2)
  • 收藏
  • 关注

原创 Nginx之获取客户端真实ip

X-Forwarded-For与X-Real-IP类似,也为HTTP头部,该头部包含了经过的所有代理服务器的IP地址。同样在多级代理下,每级代理(包括最初始的客户端)都需要传递X-Forwarded-For头部,并添加自身的ip .X-Forwarded-For头部的值由多个IP地址组成,以逗号分隔。Nginx会为每个请求创建一个结构体r,保存这个请求的上下文,而r包含一个connection结构体,保存了连接相关的信息,其中就包括了客户端的真实ip,因此nginx就可以采用此种方式获取客户端的真实ip。

2023-12-02 15:05:51 3399

原创 Cookie属性之secure、httponly

登录时,HSIAR会生成token等会话信息,设置到响应的Set-Cookie头部,返回给浏览器,浏览器会在application存储Cookie信息,当有同域的请求发起时,浏览器会将此域的Cookie(如果有的话)携带并发往服务端进行认证;经常会有安全测试不了解Cookie的属性,而认为某个属性是漏洞,最常见的就是secure,作者就见过几次漏洞报告,认为http协议下,Cookie的secure为false是一个安全漏洞,这其实是测试没有理解secure的真正作用。

2023-12-02 14:58:34 691

原创 TCP读写缓存自动调整

参考自《深入理解nginx》9.101 . 配置定义在进行网络通信时,内核会为TCP分配读写缓存,但是分配多大,linux提供了自动内存调整功能,在/proc/sys/net/ipv4下提供了一系列的配置,其中tcp_moderate_rcvbuf当该值等于1时,表示自动内存调整功能开启,关于TCP的配置如下:tcp_mem = 189144 252195 378288tcp_rmem = 4096 87380 6291456tcp_wmem = 4096 16384

2022-04-13 20:03:51 2338

原创 ssl双向验证— ssl_verify_depth的作用

前言关键词:根证书、中间证书、验证深度、ssl_verify_depth根证书与中间证书在进行ssl验证前,服务器一般会向CA申请公钥证书,即将自己的公开密钥交给CA,CA用自己的私钥向服务器的公钥数字签名并返回公钥证书,在数字签名的过程中,CA一般会用根目录颁发证书,这种证书叫做根证书。问题是,万一根目录颁发错了证书,或者需要撤销根,这时所有根目录颁发的证书都将失效,这样代价是巨大的,因此出现了中间根,顾名思义,CA用私钥对中间根进行签名,使它可信,因此由中间根颁发的证书也是可信的,即中间证书。当

2022-01-18 21:01:59 4033 2

原创 N皇后

大开眼界,这代码写的是在漂亮,思路极其清楚对每一行、列、左斜、右斜建立访问数组,来记录它们是否存在皇后右斜的和是相等的左斜的差是相等的,但是如果用数组记录得话,会出现负数,所以统一+ n-1,其实只要+ >= n-1 都行,不过越大数组开的越大,所以class Solution {public: vector<vector<string>> solveNQueens(int n) { vector<vector<string>

2020-11-21 19:10:28 88

原创 岛屿695

岛屿的最大面积给定一个包含了一些 0 和 1 的非空二维数组 grid 。一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0.

2020-11-20 16:32:41 154

原创 Effective C++告诉我的那些事(一)

这里写目录标题为什么要用static const对象初始化的顺序构造函数有哪些坑为什么要用static conststatic 保证变量为类作用域,对象共享,即变量是唯一一份const保证变量不被修改static const 保证变量唯一且不被修改对象初始化的顺序构造函数有哪些坑...

2020-11-03 19:04:54 75

原创 redis-3种特殊类型

3种特殊类型1.geospatial 地理位置2.HyperLogLog3.Bitmaps1.geospatial 地理位置朋友的定位,附近的人,打车距离计算这个功能可以推算地理位置的信息,两地之间的距离,方圆几里的人geoadd 添加数据#########################################################################################################参数 key() val()#有效

2020-10-28 19:52:02 210

原创 Redis-zset

zset(有序集合)########################################################################################################127.0.0.1:6379> zadd myset 1 one #添加一个值(integer) 1127.0.0.1:6379> zadd myset 2 two(integer) 1127.0.0.1:6379> zadd myset 3 thr

2020-10-28 19:48:52 66

原创 Redis-hash

hashMap集合,(key,)hash本质和string没有太多区别string是一个值hash是一个键值对####################################################127.0.0.1:6379> hset myhash z1 j1 #插入一个键值对(integer) 1127.0.0.1:6379> hget myhash z1 #获取一个值"j1"127.0.0.1:6379> hmset myhash z

2020-10-28 19:47:36 74

原创 Redis-set

sets开头####################################################127.0.0.1:6379> sadd myset hello #set集合添加值(integer) 1127.0.0.1:6379> sadd myset hello1(integer) 1127.0.0.1:6379> sadd myset hello2(integer) 1127.0.0.1:6379> sadd myset hello3

2020-10-28 19:46:32 112 1

原创 Redis-list

list基本的数据类型,列表list可以玩成一个栈、队列、阻塞队列所有的命令是l开头的####################################################//添加 lpush rpush可以存在重复值127.0.0.1:6379> lpush list one(integer) 1127.0.0.1:6379> lpush list two(integer) 2127.0.0.1:6379> lpush list three

2020-10-28 19:45:30 62

原创 redis

stringstringstringstring使用场景:value除了是我们的字符串还可以是数字!计数器 比如文章的阅读量统计多单位的数量粉丝数append key "hello" #追加字符串---拼接如果当前字符串不存在,就相当于set了一个字符串strlen key #获得字符串的长度exists key #是否存在keyincr key #某个key增加1decr key

2020-10-28 19:43:48 71

原创 Redis前文

1.NoSql概述1.DAL数据库访问层网站的瓶颈:1.数据量如果太大,一个机器放不下2.数据索引,3,访问量(读写混合),一个服务器承受不了2.Memcached(缓存) + MySQL+垂直拆分(读写分离)网站80%都在读,每次都要查询数据库,十分麻烦,所以可以提供缓存来提高访问效率。发展过程:优化数据结构和索引==》》文件缓存(I/O)==》》Memcache(缓存)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CIA7hZmc-16038808710

2020-10-28 18:35:59 130

原创 分数比较大小

业余的业余连专业选手的尾气都闻不到,难受题目描述Bobo has two fractions a/x and b/y. He wants to compare them. Find the result.输入描述:The input consists of several test cases and is terminated by end-of-file.Each test case contains four integers x, a, y, b.0 <= x, y <=

2020-10-24 22:08:29 344

原创 move与forward分析

move 转移语句move的作用很简单,可以把左值和右值都转换为右值,比如vector已经有了右值的拷贝构造和赋值函数,目的是为减少临时对象的构造,提高效率。本文的主旨不是为了探讨对象的优化问题,所以对于左值、右值、临时对象、explicit(比较有意思的关键字)不会一一分析。一个右值变量本质还是一个左值,在传递的时候,会丧失它的右值属性,对于提供了左值和右值的接口来说,这样就丧失了本意。对于下面的例子来说,只会匹配左值,的但是是show(std::move(tmp));时,会将左值转换为右值,这样

2020-10-22 21:50:20 1698 1

原创 MySQL的基础原理

这里写目录标题存储引擎MyISAM与InnoDB索引InnoDB事务分布式事务锁机制表锁与行锁读写锁意向锁乐观锁与悲观锁触发器存储引擎MyISAM与InnoDB索引InnoDB事务分布式事务锁机制表锁与行锁读写锁意向锁乐观锁与悲观锁触发器一个事件到来,触发器被触发,去执行其他操作...

2020-08-18 22:25:39 650

原创 如何保证对象的安全

单线程下的对象安全是容易保证的,因为构造与析构都由自己控制,所以本线程可以控制当前对象的生命周期,但是多线程下,对象的存在与否就变得扑簌迷离了。**1.保证对象线程安全的第一步,构造函数。1.1 构造函数可以注册回调函数吗?不可以,因为在对象的构造中,对象可能还没初始化完成,其他线程通过回调函数调用这个有可能是半成品的对象,后果难以预计。1.2 那我把这个回调函数写在最后一行,此时对象已经注册成功了,是不是就可以了?也不可以,当这个类是基类,基类构造成功了,但是派生类还要继续执行构造,此时通过th

2020-08-13 22:46:59 328

原创 muduo库模块梳理(一)

muduo库的模块还时比较多的,正确的梳理模块的交互,我觉得是看源码的第一步。

2020-08-10 21:59:07 141

原创 函数形参---内联函数

形参带默认值的函数1==》》给默认值,需要从右向左给,压栈的时候从右向左压。int sum(int a = 10,int b)//这样是错误的2==》》给默认值调用效率高3==》》定义可以给形参默认值,声明也可以4==》》不管是声明给默认值,还是定义出给,形参默认值只能给一次//这样是可以的int sum(int a,int b=10);int sum(int a = 10,i...

2020-08-10 16:23:57 321

原创 五种C++智能指针

1.不带引用计数的智能指 auto_ptr, scoped_ptr, unique_ptr

2020-08-04 20:53:33 126

原创 遍历有序数组为何比无序数组快

最近看到2篇有意思的文章,提出了2个问题1.为什么遍历有序数组比无序数组快?2.arr[i][j] 与 arr[j][i]的区别?让我们来看看第一个问题,下面给出2段代码图1//sort(vec.begin(),vec.end()); clock_t begin = clock(); for(int i = 0;i<10000;++i){ for(int j = 0;j <vec.size();++j){ if(vec[j] &g

2020-07-27 21:29:08 301

原创 继承与多态

继承1.继承的意义:(1):代码的重用:派生类只需要定义自己特有的成员,共享的成员都由继承而来,减少代码的冗余度。(2):在基类中给派生类提供统一的虚函数接口,方便使派生类进行重写操作,实现多态调用。2.派生类继承的成员的访问限定:继承方式 基类的访问限定 派生类的访问限定 外部访问限定publicpub...

2020-07-25 22:38:02 157

原创 函数模板---类模板

函数模板template<typename T> //模板参数列表在函数调用点,编译器用用户指定的类型,从原模版实例化一份函数代码出来不进行编译,因为不知道类型模板的实例化==》》发生在调用的时候模板函数==》》需要被编译器所编译的模板类参数==》》typename/class模板非类型化参数==》》非类型参数都是常量(整数、地址、引用),只能使用,不能修改...

2020-07-25 22:37:34 55

原创 实现简单的线程池

重点:多线程、锁简单的线程池,并未使用I/O复用,有时间可以写一个epoll的

2020-07-14 10:05:49 83

原创 用epoll实现的简单服务器

回顾I/O复用之epollepoll相比于select、poll还是有很多优点,在此重温一下epoll如有错误,欢迎指正#define _GNU_SOURCE_ //使用EPOLLRDHUP的代价#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<assert.h>#include<sys/types.h>

2020-07-10 21:21:51 232

翻译 阻塞与非阻塞、同步与异步

阻塞与非阻塞:阻塞:若接受缓冲区的数据未准备好,进程阻塞,释放cpu,等待数据准备完成非阻塞:应用程序反复轮询接受缓冲区,数据未准备好,返回size == 0 && errno = EAGAIN;进程不会阻塞,依旧可以进行其他工作总结:阻塞非阻塞都是同步的同步与异步同步:应用程序读取数据时,是应用程序从接受缓冲区copy数据,整个进程需要等待数据的copy完成异步:copy由内核完成,数据copy完成(到buf内),通知应用程序。由于copy是由内核完成,所以应用程序

2020-06-23 09:51:08 176

原创 函数重载

函数重载:1==》》前提是在同一作用域2==》》函数名相同,参数列表不同的函数构成重载3==》》与函数的返回值没有关系

2020-05-12 21:15:16 95

原创 leetcode-对称二叉树

检查一个二叉树是否是镜像的1.递归实现毫无疑问,递归的实现比较容易,我的版本是从根节点的左右孩子开始,先判断根的特殊情况,再进入递归,判断是在回溯的时候判断。官方解法是把2个root当作第一次左右传入,这个想法很好,代码也好看看完官方代码修改后,最快的一次可以100% bool isSymmetric(TreeNode* root) { if(root == nullpt...

2019-12-02 12:36:19 67

原创 Linux

int open(char *pathname,int flag,/int mode/); 打开普通文件,pathname文件路径+文件名 flag打开方式 O_RDONLY O_WRONLY O_RDWR失败返回-1 成功则返回打开的文件标识符 如果要设置多个选项,只要按位或就行int read(int fd,void *buff,int size);fd...

2019-09-18 11:29:15 107

原创 MySql 基础语句学习

多表联合查询:1.带in的子查询2.内连接查询3.外连接查询:左连接查询和右连接查询现在创建数据库supermarket,在其中创建 uesr、product、user_order 3个表,简单模拟商场的用户、商品、订单。用户: id name age sex vip商品: id name price mount订单:orderid...

2019-09-15 20:37:17 139

原创 MySQL基本语句的学习

MySQL、SQL Server、Oracle 都是关系型数据库MySQL社区版是免费并且完全开源的二维表数据库系统与文件系统有很大的区别这里转载一位博主总结的2个系统的区别,有时间慢慢看。https://blog.csdn.net/hiddpy/article/details/80817184MySQL的基础语句一大特点是不区分大小写,命令一般后面加冒号。RDBMS 关系型数据库...

2019-09-09 12:52:17 137

原创 c++实现一个简单的循环队列

实现一个循环队列队列的特点就是先进先出,尾插头出。涉及到循环,,,无论是数组还是链表,重点在于取余!!!,防止溢出。。。例如数组大小为5,当队尾为4时,( 且 队头!= 队尾 ),再入队后,队尾应改变为0,需用取余。#includeusing namespace std;class Queue {public://构造函数Queue(int size = 10) {_que...

2019-09-02 22:29:48 413

原创 复习:类和对象、深拷贝与浅拷贝

学习笔记。。。。。。。。。1…类和对象、this指针对象为类的实例化一个类拥有成员方法和成员变量,成员方法可以重载对象共享public中的成员方法,但private中的成员变量是各自私有的,成员方法也可以属于private,反之成员变量也一样当多个对象调用成员方法时,方法需要know哪个对象,所以成员方法一编译,都会加一个类类型的this指针,接受对象的地址,,对象在调用时方法时,会默...

2019-09-01 14:57:27 130

原创 Hadoop3.1.2集群搭建及简单的排序,统计实现

第一部分:Hadoop集群搭建安装虚拟机Vmware安装Linux系统下载/安装jdk配置Hadoop第二部分:用MapReduce解决数据排序搭建Hadoop-3.1.2-eclipse环境在eclipse上编译MapReduce程序打包程序,创建测试文本应用MapReduce进行数据排序1.可以从官网下载最新的VMware,这里给出激活码(FC7D0-D1YDL-M8D...

2019-08-21 21:22:20 1252

Xftp-6.0.0095p.zip

亲测可用,可以在搭建Hadoop3.1.2中使用。功能:可以将window中与Linux中的文件互通

2019-08-18

Xshell6_wm_onlinedown.zip

此为xshell6.0版本,亲测可用,可以在搭建Hadoop3.1.2中使用。

2019-08-18

空空如也

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

TA关注的人

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