成功为本站添加了Let’s Encrypt的https支持√ 附教程

之前一个二级域名ss.toodyao.com一直无法访问,以为是被捯饬坏了,后来试遍无数方法,nginx.conf都快背下来了,之后发现是域名被墙了x

因为本站可以上,而且还在同一个服务器下,所以完全没想到会是域名被墙。

被墙大概分这么几个级别:

不同情况不一样,程度依次加重
1 、仅仅是 ip 被墙→换 ip
2 、域名被 url 重置→上 https
3 、域名被国家出口 dns 污染→用国内 dns ,备案回国
4 、域名被省级 dns 污染→能到这程度不是一般人,收拾收拾投案自首吧

来源:V2EX

IP被墙经常遇到,这样看来ss.toodyao.com的情况应该是第二种,而且上https是早晚的事儿,之前嫌麻烦一直没用https,看到lnmp 1.4支持安装SSL证书后,决定上https。(添加https之后真的没被墙了)

以上是扯闲篇

下面是正文

0. 准备

  • 你的服务器
  • 相关知识

1. 安装/升级lnmp 1.4

为了方便用了lnmp自带的SSL安装功能

安装lnmp 1.4:

详细安装过程请参考:https://lnmp.org/install.html

如果你以前安装了lnmp 1.x版本,需升级到lnmp 1.4:

2. 添加SSL

使用 lnmp ssl add 来为你的站点添加SSL

输入相关信息如你的域名,根目录,URL重写的支持,日志等,之后选择2,使用Let’s Encrypt的SSL证书,接下来输入你的邮箱,等待相关安装完毕,重启nginx

3. 301重定向

需要将http访问重定向至https

找到你的nginx配置文件,如lnmp中为 /usr/local/nginx/conf/ ,各个虚拟主机的配置文件在 vhost 目录下,找到你域名的配置文件,或使用 nginx -t 校验命令查看配置文件的地址

在你的nginx配置文件中添加:

nginx -s reload 重载配置使其生效

4. 对WordPress的配置

如果是普通的网站,这是已经可以看到右上角绿色的小锁了,

对于WordPress站点来说,还要为图片、CSS、JS等元素添加SSL支持,才算是支持全站https

进入WordPress仪表盘->设置->常规,将WordPress地址和站点地址都加上 https://

保存后刷新主页,如果还没有小绿锁的话,可以打开网页源代码, Ctrl+F 查找 http ,仔细排查,比如导航栏上的自定义URL,未更新的站内图片,或者非https的外链图片等,并逐个修改。

5.  验证

有小绿锁啦~O(∩_∩)O~~

STL学习之lower_bound()和upper_bound()

lower_bound() 和 upper_bound() 使用二分法查找有序序列中的下界/上界的值,返回一个迭代器。

ForwardIter lower_bound(ForwardIter first, ForwardIter last,const _Tp& val)

返回一个非递减序列[first, last)中的第一个大于等于值val的位置。

ForwardIter upper_bound(ForwardIter first, ForwardIter last, const _Tp& val)

返回一个非递减序列[first, last)中第一个大于val的位置。

应注意大于等于和大于

POJ 2431 Expedition

http://poj.org/problem?id=2431

题意:驾驶一辆初始油量为P的车,路长L,一路有N个加油站,分别有油量为Ai,距终点Bi,每单位距离消耗1油量,问要到终点最少加油次数,无法到达终点输出-1

分析:当车走到没油的时候,优先选择之前油量最大的加油站加油(可多次),然后继续行驶,如果优先队列为空,则无法到达终点

将加油站距终点的距离转换为距起点的距离,并将终点看成距离L,油量0的加油站

 

在Sublime Text 3中配置gcc/g++编译器(一键编译运行)

这是第一篇用Markdown写的文章(≧∀≦)
好用!

0. 需求

  • Sublime好用
  • 写题用Sublime,编译运行用IDE,来回切换太麻烦
  • Sublime自带的C++ Single File Build System不够好用
  • 网上许多自定义的Build System编译和运行是分开的(即有一个Run选项)于是综合网上的各版本写了一个以下统一使用g++演示,如需gcc直接替换即可

1. 安装MinGW

a. 下载,并安装MinGW

官网:mingw.org,安装过程略

b. 配置环境变量

在Path中添加你MinGW中的 /bin目录

例如,我的MinGW安装在C盘根目录下,要添加的环境变量就是 C:\MinGW\Bin

注意各项之间用分号隔开(Win10可以直接点击新建)

c. 测试g++

  • 打开cmd,输入g++,显示fatal error则表示配置成功
  • 输入g++ -v可显示版本

2. 配置Build System

a. 新建Build System

在sublime中,选择 Tools->Build System->New Build System

将以下内容复制到新建的文件中

 

这一段代码在点Build之后会直接在弹出的cmd中运行,不会在sublime自带的console中显示

用了cmd的/c参数,很有意思,参见文末“参考”

如果要使用gcc,将g++改为gcc即可

保存到(默认就是),命名任意,例如C++.sublime-build

C:\Users\你的用户名\AppData\Roaming\Sublime Text 3\Packages\User

b. 备份Build System(可选)

C:\Users\你的用户名\AppData\Roaming\Sublime Text 3\Packages\User文件夹备份即可


3. 测试

Tools->Build System中选择你刚才保存的Build System(名称与文件名一样)

随便写一段程序,比如hello world,保存

点击 Tools->Build
或按 Ctrl+Shift+P输入 build,选择 Build With: C++
或按 Ctrl+B

开始编译运行

弹出cmd显示结果即配置成功

这样写题的时候再也不用来回切换sublime啦

#


2018-3-7 更新:添加c++11支持

 

 


参考:
Build Systems – Basics: http://docs.sublimetext.info/en/latest/reference/build_systems/basics.html

Cmd:
https://technet.microsoft.com/en-us/library/bb490880.aspx

如何让sublime text 2可以支持C语言的编译和run?: https://www.zhihu.com/question/20921786

STL学习之list的基本操作

挑一些不熟的、使用频率低的STL写,备忘用

vector, stack, queue等使用频率比较高,就不写了

参考了网上的一些文章

欢迎在评论区提意见~

1.定义一个list


 

2. 使用list的成员函数 push_back()push_front()插入一个元素到list中


 

3.成员函数 empty()

判断list是否为空

4.迭代器iterator


 

.begin()指向第一个元素, .end()指向最后一个元素的下一个位置,访问最后一个元素: .end()--
list容器中不能使用 .begin()+2来访问第三个对象,因为STL的list是一双链的list来实现的,不支持随机存取。vector和deque和一些其他的容器支持随机存取

5.使用STL的通用算法for_each()来遍历list

for_each()可以简化遍历工作

 

[ begin() , end() )的中的每一个元素应用函数 PrintIt

6.使用成员函数 sort()对list排序

这里使用的是list的成员函数 sort(),而不是通用算法 sort()。STL中有时容器支持它自己对一个特殊算法的实现,这通常是为了提高性能。
因为通用算法仅能为那些提供随机存取里面元素的容器排序,而由于list是作为一个连接的链表实现的,它不支持对它里面的元素随机存取。所以就需要一个特殊的 sort()成员函数来排序list。
默认升序
自定义比较函数 comp

 

 

7.使用list的成员函数 inster()插入元素到list中

注意, insert()函数把一个或若干个元素插入到你指出的iterator的位置。你的元素将出现在 iterator指出的位置以前。

8.删除list中的元素

a.使用成员函数 erase()
b.使用STL通用算法 remove()
c.使用成员函数 pop_front() / pop_back()删除链首/尾元素

 

9.使用STL通用算法 find()判断是否存在某元素


 

若没有找到元素则返回 listintergers.end()的值