nginx配置SSL
nginx如果使用https访问就需要配置SSL证书,而本文主要记录nginx如果配置SSL证书。
nginx安装ssl模块检测是否安装
1/usr/local/nginx/nginx -V
如果出现 configure arguments: –with-http_ssl_module, 则已安装(下面的步骤可以跳过,进入 nginx.conf 配置)。
进入nginx解压目录,添加ssl模块
1234# 进入你自己的nginx解压位置cd /usr/local/nginx-1.10.1./configure --with-http_ssl_module
执行以上一条命令出现(./configure:错误:SSL 模块需要 OpenSSL 库。),原因是因为缺少了 OpenSSL,那我们再来安装一个即可执行:yum -y install openssl openssl-devel 等待 OpenSSL 的安装完成后,再执行./configure
执行make命令重新编译((使用 make install 会重新安装 nginx),此时当前目录会出现 objs 文件夹。
123 ...
Hexo进阶
1:主题: ButterFly
ButterFly博客
2:唯一文章链接:hexo-abbrlink
Hexo-abbrlink
hexo默认的链接中,会将中文链接转换为一长串字符,而abbrlink可以为每一篇文章生成唯一的uri链接
安装
1npm install hexo-abbrlink --save
修改hexo配置文件config.yml
1234permalink: posts/:abbrlink.html # 此处可以自己设置,也可以直接使用 :/abbrlinkabbrlink: alg: crc32 #算法: crc16(default) and crc32 rep: hex #进制: dec(default) and hex
3:本地搜索:hexo-generator-search
hexo-generator-search
安装
1npm install hexo-generator-search --save
修改配置文件
1234search: path: search.xml field: post conten ...
MySQL练习
题目1 查询” 01 “课程比 “ 02 “课程成绩高的学生的信息及课程分数
123456789SELECT A.*, B.cid, B.scoreFROM ( SELECT sid, cid, score FROM sc WHERE cid = "01" ) A LEFT JOIN ( SELECT sid, cid, score FROM sc WHERE cid = "02" ) B ON A.sid = B.sidWHERE A.score > B.score
1.1 查询同时存在” 01 “课程和” 02 “课程的情况
123456789SELECT A.*, B.cid, B.scoreFROM ( SELECT sid, cid, score FROM sc WHERE cid = "01" ) A LEFT JOIN ( SELECT sid, cid, score FROM sc WHERE cid = "02" ) B ON A.sid = B.sidWHE ...
创建型模式
本博客大部分内容来于免费在线学习设计模式
创建型模式提供了创建对象的机制, 能够提升已有代码的灵活性和可复用性。
工厂方法模式工厂方法模式是一种创建型设计模式,其在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型。
抽象工厂模式抽象工厂(AbstractFactory)模式是一种为访问类提供一个创建一组相关或相互依赖对象的接口,且访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构。
生成器模式生成器模式是一种创建型设计模式,使你能够分步骤创建复杂对象。该模式允许你使用相同的创建代码生成不同类型和形式的对象。
原型模式原型模式是一种创建型设计模式,使你能够复制已有对象,而又无需使代码依赖它们所属的类。
单例模式单例模式是一种创建型设计模式,让你能够保证一个类只有一个实例,并提供一个访问该实例的全局节点。
参考
免费在线学习设计模式
C语言中文网-设计模式
设计模式-结构型模式
结构型模式
本博客大部分内容来于免费在线学习设计模式
结构型模式介绍如何将对象和类组装成较大的结构, 并同时保持结构的灵活和高效。
适配器模式适配器模式是一种结构型设计模式,它能使接口不兼容的对象能够相互合作。它结合了两个独立接口的功能。
桥接模式桥接模式是一种结构型设计模式, 可将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构, 从而能在开发时分别使用。
组合模式组合模式是一种结构型设计模式,又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象,你可以使用它将对象组合成树状结构,并且能像使用独立对象一样使用它们。
装饰模式装饰模式是一种结构型设计模式,允许你通过将对象放入包含行为的特殊封装对象中来为原对象绑定新的行为。即在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)。
外观模式外观模式是一种结构型设计模式, 能为程序库、 框架或其他复杂类提供一个简单的接口。
享元模式享元模式是一种结构型设计模式, 它摒弃了在每个对象中保存所有数据的方式, 通过共享多个对象所共有的相同状态, 让你能在有限的内存容量中载入更多对象。
代理模式代理模式是一种结 ...
行为型模式
本博客大部分内容来于免费在线学习设计模式
行为模式负责对象间的高效沟通和职责委派。
责任链模式责任链模式是一种行为设计模式,允许你将请求沿着处理者链进行发送。收到请求后,每个处理者均可对请求进行处理,或将其传递给链上的下个处理者。
命令模式命令模式是一种行为设计模式, 它可将请求转换为一个包含与请求相关的所有信息的独立对象。 该转换让你能根据不同的请求将方法参数化、 延迟请求执行或将其放入队列中, 且能实现可撤销操作。
迭代器模式迭代器模式是一种行为设计模式, 让你能在不暴露集合底层表现形式(列表、栈和树等)的情况下遍历集合中所有的元素。
中介者模式中介者模式是一种行为设计模式,能让你减少对象之间混乱无序的依赖关系。该模式会限制对象之间的直接交互,迫使它们通过一个中介者对象进行合作。
备忘录模式备忘录模式是一种行为设计模式, 允许在不暴露对象实现细节的情况下保存和恢复对象之前的状态。
观察者模式观察者模式是一种行为设计模式,允许你定义一种订阅机制,可在对象事件发生时通知多个“观察”该对象的其他对象。
状态模式状态模式是一种行为设计模式,让你能在一个对象的内部状态变化时改变其行为, ...
HTTP和HTTPS的区别
1:简介
HTTP是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使得开发和部署是那么的直截了当。
HTTP(超文本传输协议)被用于在Web浏览器和网站服务器之间,以明文方式传递信息,不提供任何方式的数据加密,因此使用HTTP协议传输隐私信息(如:银行卡号、密码等支付信息)非常不安全。
为了解决这一安全缺陷,网景公司设计了SSL(Secure Sockets Layer)协议,在HTTP的基础上加入了SSL(Secure Sockets Layer)协议,SSL依靠SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。从而诞生了HTTPS(安全套接字层超文本传输协议)。
简单来说,**HTTPS协议=”SSL/TSL+HTTP协议”**构建的可进行加密传输、身份认证的网络协议,是HTTP的安全版。
2:SSL/TSL
SSL(Secure Sockets Layer 安全套接字协议 ...
打开一个网站发生了什么?
1:概览从大致上讲:
客户端获取URL - > DNS解析 - > TCP连接 - >发送HTTP请求 - >服务器处理请求 - >返回报文 - >浏览器解析渲染页面 - > TCP断开连接。
2:详细步骤2-1:浏览器根据域名查询域名对应的服务器的IP地址查找顺序如下:浏览器DNS缓存 - > 操作系统DNS缓存 - > 路由器缓存 - > 本地(ISP)域名服务器缓存 - > 根域名服务器。
浏览器缓存:首先是查找浏览器缓存,浏览器会缓存DNS记录一段时间,不同浏览器保存的时常不等(2分钟到30分钟不等)。
系统缓存:如果在浏览器缓存里没有找到需要的记录,浏览器会做一个系统调用来查找这个网址的对应DNS信息。
路由器缓存:如果在系统缓存里没有找到找到对应的IP,请求会发向路由器,它一般会有自己的DNS缓存。
ISP DNS服务器:如果在路由器缓存里还是没有对应的IP,请求会被发送到ISP。
根域名服务器:如果还是没有,请求将发向根域名服务器进行搜索。找不到就说明此域名不存在。
2-2:浏览器主机根据IP地址与服务 ...
HashMap和Hashtable的区别
转自:HashMap 与 HashTable 的区别并加以修改
作者Hashtable:HashMap:
HashMap 比 Hashtable 多了一个并发大神:Doug Lea。
产生时间Hashtable 是 java 一开始发布时就提供的键值映射的数据结构,而 HashMap 产生于 JDK1.2。虽然 Hashtable 比 HashMap 出现的早一些,但是现在 Hashtable 基本上已经被弃用了。而 HashMap 已经成为应用最为广泛的一种数据类型了。
继承父类HashMap 是继承自AbstractMap类,而 Hashtable 是继承自Dictionary类。不过它们都实现了同时实现了map、Cloneable(可复制)、Serializable(可序列化)这三个接口
123456789public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, java.io.Serializable{ ...
MyBatis-Plus
1:Mybatis-Plus简介
官网文档
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
特性:
无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
内置代码生成器:采 ...