探秘 http 响应报文结构
HTTP 响应报文通过通信双方建立的 TCP 连接传送,传送完成后根据 HTTP 协议中的 Connection 字段确定是否要继续保持 TCP 连接。HTTP 响应报文由状态行、响应头部 和 响应包体 3 个部分组成,如下图所示:
实例以访问 www.baidu.com 为例,我们可以 < kbd>⌥</kbd> +⌘ +j</kbd > 打开 Chrome Dev Tools 来看一个实例。
、
展开 Response Headers 选项,我们得到了响应报文。
123456789101112131415161718192021HTTP/1.1 200 OKBdpagetype: 2Bdqid: 0xb8a2e3a70000a2abCache-Control: privateConnection: Keep-AliveContent-Encoding: gzipContent-Type: text/html;charset=utf-8Date: Mon, 01 Oct 2018 08:11:18 GMTExpires: Mon, 01 Oct ...
踩坑记之 Mysql 访问拒绝故障
问题产生今天用命令行登陆 mysql 时出现了 Error。
12mysql -uroot -pERROR 16958 (28000): Access denied for user 'root'@'localhost'
起初我以为是 root 密码错了,于是就去 mysql 官方文档查了下改密码的方法
关闭 mysql 进程然后再建立一个改密码的 sql 文件
1234$ systemctl stop mysql.service$ cd /tmp && vim init.sql #xxxxxx 代表要修改的密码 alter user 'root'@'localhost' identified by 'xxxxxx';
安全模式启动 mysql
1$ mysqld_safe --defaults-file=/etc/mysql/my.cnf --init-file=/tmp/init.sql &
然后重启 mysql
1$ systemctl restart m ...
Linux 中的 env 是什么
env 是环境 Environment 的缩写,正如它的名字一样,它用于 显示系统中已存在的环境变量 ,以及 在定义的环境中执行指令 ,一般位于 /usr/bin/env。
env 作为脚本解释器指定程序用 env 启动是因为脚本解释器在 linux 可能被安装于不同目录,所以要在 PATH 环境变量中找
123456$ /usr/bin/env...SHELL=/bin/zsh...PATH=/Users/maywzh/.pyenv/shims:/Users/maywzh/.pyenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Wireshark.app/Contents/MacOS
以 python 为例在这里我们使用了 pyenv 来管理多版本 python,它的具体可见 https://github.com/pyenv/pyenv
它可以选用特定环境使用的 python 版本,把 ~/.pyenv/shims 作为一个垫片路径,里面是选定的 python 版本的解释器。
123$ ls / ...
Linux GNU-gcc 简明教程
gcc/g++ 是 GNU 工具包中强大的 c/c++ 编译工具,结合 make 工具,可以做到自动化编译功能。
一般来说,编译 c 语言使用 gcc,编译 c++ 语言使用 g++,两者的命令几乎相同。
编译流程分为四步,预处理、编译、汇编、链接
样例程序
123456789101112131415161718/************************* hello.cpp *************************/ #include <IOSTREAM> static int t = 1; #define T 9 using namespace std; typedef int Status; int main() { Status i = 1; cout << T * i << endl; //Test Cout return 0; }
指定输出文件 -o表示指定输出的文件,o 为小写
1$ g++ [- 选项] inputfile -o outputfile
预处理 -E使用预处理器 c ...
Linux 进程管理之 ipcs
ipcs - 查询进程间通信状态ipcs 是 Linux 下显示进程间通信设施状态的工具。可以显示消息队列、共享内存和信号量的信息。可以为程序员提供大量信息来分析程序运行状态。
IPC 资源查询查看系统使用的 IPC 资源1234567891011$ipcs------ Shared Memory Segments --------key shmid owner perms bytes nattch status------ Semaphore Arrays --------key semid owner perms nsems0x00000000 229376 weber 600 1------ Message Queues --------key msqid owner perms used-bytes messages
分别查询 IPC 资源:
123$ipcs -m # 查看系统使用的 IPC ...
Linux 进程管理之 ps
ps - 进程查看器Linux 中的 ps 命令是 Process Status 的缩写。ps 命令用来列出系统中当前运行的那些进程。ps 命令列出的是当前那些进程的快照,就是执行 ps 命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用 top 命令。
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。
ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用 top linux 下的任务管理器 工具。
注:kill 命令用于杀死进程。
进程状态linux 上进程有 5 种状态:
运行 (正在运行或在运行队列中等待)
中断 (休眠中,受阻,在等待某个条件的形成或接受到信号)
不可中断 (收到信号不唤醒和不可运行,进程必须等待直到有中断发生)
僵死 (进程已终止,但进程描述符存在,直到父进程 ...
Nginx 配置初步
Nginx 是一款轻量级的 Web 服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。这里实践一下 nginx 的配置
安装下载必要组件
nginx 下载地址
1http://nginx.org/en/download.html
pcre 库下载地址,nginx 需要
1http://sourceforge.net/projects/pcre/files/pcre/
zlib 下载地址,nginx 需要
1http://www.zlib.net/
openssl 下载地址,nginx 需要
1https://github.com/openssl/openssl
在同级目录下,解压安装 zlib、openssl、pcre
进入 nginx 目录,进行配置安装
123456789./configure \ --prefix=/usr/local/nginx \ --with-http_ssl_module \ --with-http_flv_module \ --with-http_stub_status_module \ --wit ...
如何分辨 CLI、Terminal、Console 和 Shell
CLI 命令行界面、Terminal 终端 、Console 控制台和 Shell,是几个比较容易混淆的概念。
虽然经常在工作中遇到这些概念,但常常处于半知半解的状态,下文通过聊聊计算机发展史的方式初步探讨一下这些术语。
一句话概括
命令行界面 (CLI) = 使用文本命令进行交互的用户界面
终端 (Terminal) = TTY = 文本输入 / 输出环境
控制台 (Console) = 一种特殊的终端
Shell = 命令行解释器,执行用户输入的命令并返回结果
命令行界面 (CLI)
命令行界面(英语:Command-line Interface,缩写:CLI)是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。
命令行界面相对于我们日常使用的图形用户界面 (GUI) 而言,是一种操作效率极高的操作系统管理和控制方式。
▲ 命令行界面
▲ 图形界面
尽管图形界面人机交互更加友好和现代化,但相对于直观的命令行界面来说,其操作效率远远不如,所以现代所有的操作系统都提供了命令行的操作方式。例如 ...
计算机科学中最重要的 32 个算法
奥地利符号计算研究所(Research Institute for Symbolic Computation,简称 RISC)的 Christoph Koutschan 博士在自己的页面上发布了 一篇文章,提到他做了一个调查,参与者大多数是计算机科学家,他请这些科学家投票选出最重要的算法,以下是这次调查的结果,按照英文名称字母顺序排序。
A 搜索算法 —— 图形搜索算法,从给定起点到给定终点计算出路径。其中使用了一种启发式的估算,为每个节点估算通过该节点的最佳路径,并以之为各个地点排定次序。算法以得到的次序访问这些节点。因此,A 搜索算法是最佳优先搜索的范例。
集束搜索(又名定向搜索,Beam Search)—— 最佳优先搜索算法的优化。使用启发式函数评估它检查的每个节点的能力。不过,集束搜索只能在每个深度中发现最前面的 m 个最符合条件的节点,m 是固定数字 —— 集束的宽度。
二分查找(Binary Search)—— 在线性数组中找特定值的算法,每个步骤去掉一半不符合要求的数据。
分支界定算法(Branch and Bound)—— 在多种最优化问题中寻找特定最优化 ...
刷题几种语言的输入输出姿势
总结一波自己常用的 Python、Java、Golang 的输入输出技巧。
输入70% Common 输入输出输入两个整数,输入一个矩阵类型
Go123456789101112131415161718package mainimport "fmt"func main() { var m, n int fmt.Scanln (&m, &n) var hash [][]int = make([][]int, m) for i := 0; i < m; i++ { hash [i] = make([]int, n) for j := 0; j < n; j++ { fmt.Scan (&hash [i][j]) } } fmt.Println (hash)}
Java12345678910111213141516171819202122232425262728293031import java.util.*;public class IODemo { ...