转 HTTPS的建立过程(SSL建立安全会话的过程)
本文大部分整理自网络,相关文章请见文后参考。 SSL/TLS作为一种互联网安全加密技术,原理较为复杂,枯燥而无味,我也是试图理解之后重新整理,尽量做到层次清晰。正文开始。 1.SSL/TLS概览 1.1 整体结构 SSL是一个介于HTTP协议与TCP之间的一个可选层,其位置大致如下: SSL:(Secure Socket Layer,安全套接字层),为Netscape所研发,用以保障在Internet上数据传输之安全,利用数据加密(Encryption)技术,可确保数据在网络上之传输过程中不会
Vue路由以及前后端交互
路由跳转 this.$router.push('/course'); //这个是用来管理路由跳转的,可以直接写后缀
this.$router.push({name: course}); // 也可以写字典
是用来管理路由前进后退
this.$router.go(-1);后退
this.$router.go(1);前进
<router-link to="/course">课程页</router-link>
<router-link :to="{name: 'course'}">
python生成图片二维码(利用pillow)
首先 pip install pillow 然后 from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
import random
class ValidCodeImg:
def __init__(self, width=175, height=40, code_count=6, font_size=28, point_count=20, line_count=3,
Django之ORM操作.md
1.ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动 ORM是“对象-关系-映射”的简称。 类对象--->sql--->pymysql--->mysql服务端--->磁盘,orm其实就是将类对象的语法翻译成sql语句的一个引擎 2.字段,类型 常用字段 AutoField
自增的整形字段,必填参数p
前端随心记---------Vue3.0马上就要来了,TypeScript学会了没?
大家都知道Vue的作者是 尤 雨 溪,而像尤雨溪这种神级的开发者可能真的具有想改变世界的想法。而有的小伙伴可能要想:神也是人,改变世界也需要钱啊!而Vue既然是一款免费的框架,那它又是如何盈利的呢?首先Vue的发展很顺畅,其用户也非常活跃,并且也为众多的开发者创造了价值!大家可以假设一下:如果有一万个人在使用其框架,其中百分之一的人愿意每月给予作者10美元的赞助,其生存应该不会有太大问题。而Vue的用户何止一万人! 任何一个框架的诞生与生存都是有其道理的,而要在众多框架的竞争中求得发展并脱颖而
关闭Chrome浏览器的广告
生活没有绝对的对与错;代码就不一样了,错了就编译不过,也正是因为这样,编程的人思维有时也会陷入一种狭隘中,这就是把工作和生活没有分开。Win10 右下角的广告就像程序调试中的"警告",虽然一般不影响结果,但就是看着不爽。 不要广告 打开Chrome浏览器设置>高级>网站设置>通知 或者直接地址栏中输入:chrome://settings/content/notifications?search=%E9%80%9A%E7%9F%A5 在"允许"所有广告网址即可。
web常用自动化库——selenium总结
概述 selenium是一个模拟控制浏览器操作的自动化库,它可以做到元素定位,鼠标事件,浏览器事件,js脚本执行等操作 与request不同的是,request是单独请求一个http,而selenium则是以浏览器方式加载整个页面流,所以那些异步的请求也不用像request一样去分析接口,一切都像浏览器一样,所见即所得。 优点是: 1.所见即所得,不用考虑cookie,ajax,重定向等等,方便数据的查取 2.平时在我们在浏览器上做的操作(鼠标,浏览器操作等),基本都可以用这个实现,并且步骤动
希尔排序,直接插入排序
希尔排序可以说是对插入排序的一种优化,时间复杂度 nlgn, public static void sort(int a[])
{
for(int mid=a.length/2;mid>0;mid/=2) //mid表示增量的大小,每一次整除与2
//假如mid=1,则就是普通的直接插入排序,即从第二个元素开始对前面所有进行比较后 插入指定位置
for(int i=mid;i<a.length;i++)//分组
{
java函数参数默认值
Java与C++不同不支持方法中的参数带默认值,但是可以通过重载、可变参数来实现该功能 方法一:重载 public class Test{
/**
* @param args
*/
public String getName(String firstName,String secondName){
return firstName+"."+secondName;
}
publ
剑指offer——16二进制中1的个数
题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 有可能引起死循环解法: 每次判断最右端是不是1【与 & 1即可】,是就cnt++,然后右移一位,直到num为0,结束; 但是这只对正数有用,而负数右移是左端补充1,这样导致num最终成为 0xFFFFFFFF,从而右移成了死循环。 1 class Solution01 {
2 public:
3 int NumberOf1(int n) {
4 int cnt
C# yield checked,unchecked lock语句(C#学习笔记04)
特殊语句 yield语句 yield用于终止迭代 只能使用在返回类型必须为 IEnumerable、IEnumerable<T>、IEnumerator 或 IEnumerator<T>的方法、运算符、get访问器中 using System;
namespace statement
{
class Program
{
static System.Collections.Generic.IEnumerable<int> Range(int from,
Docker学习笔记--传送门(持续更新)
1、ubuntu下安装docker: https://www.cnblogs.com/salmonLeeson/p/11609699.html 2、为docker配置国内镜像加速器:https://www.cnblogs.com/salmonLeeson/p/11610139.html 3、docker下载镜像并运行容器:https://www.cnblogs.com/salmonLeeson/p/11650837.html
USACO1.6 Healthy Holsteins【dfs/bfs 爆搜】
题目传送门 饲料种数只有15 枚举每种选或不选一共也就只有$2^{15}=32768$ 爆搜可过 觉得bfs要快一些? 但是dfs更方便处理字典序 只需要顺序遍历并且先搞选它的情况就可以了 而且在这种规模的数据下我们也不需要它跑得很快对吧(笑) 1 /*
2 ID: Starry21
3 LANG: C++
4 TASK: holstein
5 */
6 #include<iostream>
7 #include<string>
parted分区的步骤
使用parted分区的步骤 1. fdisk -l ##查看一下当前的存储设备,这里可以看到新加入的磁盘,比如/dev/sdb 2. parted /dev/sdb ## 进入分区命令行模式,可以随时用help来查看命令用法 3. mklabel gpt ##将MBR格式的磁盘格式化为GPT格式 4. mkpart primary 0 -1 ## 将整个磁盘化为一个分区,一般命名为/dev/sdb1 5. print ##打印分区结果 6. quit ## 退出分区命令行模式 7. mkfs.
内核线程、轻量级进程、用户线程三种线程概念解惑(线程≠轻量级进程)
线程与进程概念 在现代操作系统中,进程支持多线程。 进程是资源管理的最小单元; 线程是程序执行的最小单元。 即线程作为调度和分配的基本单位,进程作为资源分配的基本单位 一个进程的组成实体可以分为两大部分:线程集和资源集。进程中的线程是动态的对象;代表了进程指令的执行。资源,包括地址空间、打开的文件、用户信息等等,由进程内的线程共享。 线程概念的产生 传统单线程进程的缺点 现实中有很多需要并发处理的任务,如数据库的服务器端、网络服务器、大容量计算等。 传统的UNIX进程是单线程的,单线程意味着程
Linux关闭SELinux的方法
1 [root@localhost ~]# cat /etc/selinux/config
2
3 # This file controls the state of SELinux on the system.
4 # SELINUX= can take one of these three values:
5 # enforcing - SELinux security policy is enforced.
6 # permissive - SEL
linux操作系统安装运行Redis
Redis是c语言开发的。 安装redis需要c语言的编译环境。如果没有gcc需要在线安装。yum install gcc-c++ 安装步骤: 第一步:redis的源码包上传到linux系统。 第二步:解压缩redis。 第三步:编译。进入redis源码目录。make 第四步:安装。make install PREFIX=/usr/local/redis PREFIX参数指定redis的安装目录。一般软件安装到/usr目录下 连接redis (端口号6379) 前端启动:(出现Redi
今日推荐
周排行