目录
Linux
- 压缩: zip 压缩包名 源文件或源目录
- 加权限:chmod 777 test.sh
- 建目录 :mkdir
- 目录:cd切换,ls查看
- 文件:增touch/删/改配置文件(vim :wq/q!)/查
- 查看日志:tail -f XX.log ;tail -n 1000 显示最后1000行
- 查看磁盘:df -h(根据大小展示)
- 查看进程:ps -aux | grep;
-a:现行终端机所有程序,u:以用户为主格式,x:所有程序,不以终端机区分 - 占用CPU/内存MEM:top
- 当前位置:pwd
- 杀死进程:kill -9 pid
awk文本分析工具
NF:当前行字段(单词/列)的数目
NR:当前行行号
RS:记录分隔符
FS:字段分隔符
$0:当前行的所有字段
$ n:当前行的第n个字段
-F:修改间隔符-F"XX"
-F不在单引号里
正则表达式在单引号里,不在{}里
/^XX/:从开始处匹配
/n$/:从结尾匹配
/a/:判断作用:如果有a则XX
1.打印第3列和第4列(用"\t"将两个$隔开) awk ‘{print $3"\t"$4}’ marks.txt
2.打印包含a的行(用/a/,/a/不在体中,$0所有列)
3.统计有a的行数 awk ‘/a/{++cnt} END {print “Count=”,cnt}’ marks.txt
4.字符串长度>18的行 awk ‘length($0)>18 {print $0}’ xx.txt
5.第一列文件名,第二列版本号,打印每个文件最大版本号。
awk ‘{if(fle[$1]<$2) fle[$1]=$2}END{if(i in code) print i,fle[i]}’ xx.txt
6.找到第一列中出现最多的IP,第二列中出现最多的用户名。
awk ‘BEGIN{maxip=0 maxname=0}{ip[$1]++ name[$2]++}END{for(i in ip){if(ip[i]>maxip)maxip=ip[i] for(j in name){if(name[j]>maxname)}}}’ xx.txt
7.显示所有电话号码,电话号码以“:”分割 awk -F":"‘print $2’ xx.txt
8.显示Dan的电话号码:awk -F":"’/^Dan/{print $2}’ xx.txt
9.以D开头的所有姓 awk -F":"’{print $1}’ xx.txt|awk ‘/^D/{print $2}’ xx.txt
10.以C或E开头的名:awk ‘/1/{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 1}̲' xx.txt awk '…i]++;}END{for i in array }print i,array[i]’
- 过滤空格 ifconfig |grep eth* | awk -F ‘[ ]+’ ‘{print $1}’
- 统计第2列“apple”的个数:awk ‘print( $ 2)’ file|awk ‘BEGIN{c = 0}{/apple/c++{print $0}}’ file
awk -v name=Jerry ‘BEGIN{printf “Name=%s\n”,name}’ - 行列转换:NR是行i是列
awk ‘for(i=1;i<=NF;i++){arr[NR,i]=$i}END{for(u=1;u<=NF;u++){for(v=1;v<=NR;v++)(arrnew[u,v]=)}}’ xx.txt
SQL
- 事务:是对数据库的操作序列;
- 事务隔离机制:
读未提交(“脏读”、“不可重复读”、“幻读”)
读已提交
可重复读(Mysql默认)
串行化顺序执行(开销大) - 索引(唯一,速度,随机/顺序;B+数/hashmap)alter table tablename add primarykey(col);
- 什么时候使用索引:排序,表连接
- 存储引擎:买萨姆(性能/读),in no DB(支持事务&外键/写)
计算机网络
TCP/IP五层协议
- TCP/IP 5层:应(HTTP/FTP 应-表-会)/传(tcp)/网(IP)/数/物
- UDP/TCP:无/连接;最大/可靠 交付;多/一 对一;
- TCP三次握手,两次不行吗
发送/接收方,请求连接/确认报文,滞留失效,超时重传 - 挥手:释放连接
HTTP
- HTTP:超文本传输协议(对目标服务器生成请求报文/对目标计算机生成响应报文)
请求:行(GET/POST ;URL) 头Connection:keep-alive(重用链接)
响应:行(状态码)头:set-cookie(保证cookie安全)客户端的cookie是服务器设置的,客户的登陆状态放cookie - HTTPS
HTTP 先和 SSL通信(加密:混合非/对称公有-私有<窃听>/认证:CA数字证书<伪装>/完整性保护:MD5报文摘要<篡改>),再由 SSL 和 TCP 通信,隧道进行通信。
CA证书:服务器运营向CA申请-公有密钥-数字签名-绑定证书
服务器证书->客户端->公有密钥-使用数字签名验证 - Https测试
1)http/https登录。https正常登录,地址栏锁,网站部署SSL。http/https正常,没有设置强制https登录,或者说没有设置http链接自动跳转https链接;相反s。
2)可以通过SSL体检网站,输入域名进行SSL体检。这样可以直观看出网站有没有部署SSL,SSL证书链,哪个证书链。 - HTTP REST格式:
请求体格式:json
GET获取,POST创建,PUT替换,DELETE删除资源 - GET/POST/PUT
浏览器发送请求的场景:地址栏输入数据/表单数据编码在请求的body里
请求作用:(REST接口规范)GET获取,POST创建一个资源,
GET 资源定位符:获得资源/列表,可以实现浏览器缓存
REST 资源定位符{key:value}:创建一个资源(表单里的值)
PUT 资源定位符{key:value}:替换(replace)
数据传输:url:支持ASCII/percent encoding编码,IE8 2083 IE11 2047; Body:Content-Type定义请求格式,支持UTF-8,不容易出错 - 状态码
100 (继续) 请求者应当继续提出请求(较大的文件需要上传并保存,先询问)
204范围请求
3重定向:请求的资源已分配新的URI(统一资源标志符),301/302:永久/暂时定向,
4XX/5XX:客户端/服务器,
400请求语法错误;
402
403禁止,没有权限
404找不到资源/找:请求url;nginx配置不当
500服务器内部错误/找:日志>代码>参数
502错误网关:服务器挂了
503服务器不能处理HTTP请求:临时超载/服务器进行维护
504网关超时:单次调用/配置;压测/压力过大
DNS
- DNS:域名系统协议,分布式数据库
1)域名>IP地址(浏览器缓存/路由器缓存/DNS缓存)
2)TCP连接
3)>服务器(HTTP请求)TCP提供可靠传输
IP协议(网络层)路由器之间传送
4)服务器处理请求>响应>客户端(返回HTTP响应)
5)浏览器解析渲染界面
6)连接结束
JAVA
String/StringBuffer/stringBuilder
可变性;安全性(多线程 安(final定义)/安(synchronised同步原语)/不安);性能
方法:(tocharArray(),length(),equals(),isEmpty(),split(’,’),StringBuffer-append())
String->stringBuffer(连接):String.tocharArray(),for(),append()
容器:集合,键值对
-list有序:linked增删;Arraylist查
-set不重:hash,linkedhash有序,tree有序
-queue
-Map(hash,linkedHash,Tree有序,hashtable线安synchronize)
hashtable/hashmap:线程安全/不安全;效率低/高;不支持/支持Null key/value;容量11/2n+1 16/2n
- 重载/重写:一个类/父子类;参数不同/相同;返回值可不同/范围;访问修饰符可不同/范围
final/finally/finalize
final关键字:变量存储到常量池
finally{}标识代码块:无论trycatch是否抛出异常都会被执行
finallize:JVM对对象进行回收
JVM:java虚拟机(为类提供加载机制)
java编译-class文件-读到内存-在堆区创建class对象-封装 类在方法区的数据结构-提供访问方法的接口
JVM内存模型
栈:存放局部变量
堆:存放所有new出来的东西
方法区:被虚拟机加载的类信息、常量、静态常量等。
程序计数器(和系统相关)
本地方法栈
垃圾回收机制
释放垃圾占用的空间,防止内存溢出,清除/回收 内存堆中已经死亡的或者长时间没有使用的对象。
- 算法:引用计数法:给每个对象加一个计数器,当有地方引用该对象时计数器+1,当引用失效时计数器-1;
线程
是进程中的实际运作单位,一个进程中可并发多个线程,每条线程并行执行不同的任务,共享内存。
- 线程安全
共享数据=多条线程-并行执行程序,线程安全的代码-同步机制-保证各个线程正常执行,不会数据污染 - sychronized线程同步原语:放在范围操作符(public等)后,其他线程要想在此时调用该方法,只能排队
- volatile:不同线程对变量操作时的可见性,
-sychronized/ volatile
1)锁定变量,当前线程可访问,其他被阻塞。/ 告诉jvm变量在寄存器中值不确定的,需要从主存中读取;
2)在变量、方法、和类级别/变量
3)线程的阻塞 / 不会
4)标记的变量可以被编译器优化 / 不会
Spring
是一个开源框架, 轻量级的IoC/AOP的容器框架,用于解耦。
- IOC:控制反转,其中最常见的方式叫做依赖注入,通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用传递(注入)给它。将对象交给容器管理,在spring配置文件中配置bean->设置属性,spring容器启动->初始化bean,调用时->分配bean给类
- AOP:面向切面编程,在运行时,动态地将代码切入到类的指定方法、指定位置上的编程思想
- IOC(控制反转), DI(依赖注入),DL(依赖查找)
后台向前端传数据
json数据:JSONObject类,把数据放到List集合/map集合中,向前端传JSONObject对象。
Socket
TCP/IP是协议栈,用Socket具体实现,提供对外的操作接口(API),Socket接口。
- 步骤:服务器监听,客户端请求,连接确认。"打开—读/写—关闭"模式
- 类:Socket和ServerSocket
- 方法:listen(),accept(),connection,write,read
消息队列 (MQ)
- 存放消息,先进先出,顺序消费(生产/消费者)
- 使用:用户->数据库,高并发,发布订阅模式(多接收)
redis
- redis/数据库
内存/磁盘;单线程;hashmap,快速;数据结构简单(str计数/hash信息登陆/set排重/lis列表t/sortset排行榜) - 为什么要用redis:支持高可用:哨兵监控;高并发:主写复从读
- 缓存数据库 双写一致::数写/删缓/数存缓;worker
- 并发竞争:
时候:多个系统同时对一个key值操作
解决:分布式锁,互斥来防止彼此干扰来保证一致性 - 持久化:
快照:副本-复制主从
只追加文件:操作数据库的命令存到硬盘的AOF文件 - 命令:
String:mset,mget 一次存放多个值,一次取出多个值 ;Del删除键的值(删除成功返回1否则返回0);
Exists查询键值是否存在(存在则返回1不凡则0);
Type查询类型
TTL 以秒为单位返回 key 的剩余过期时间。
java和c++的区别
设计模式
单例模式:
Hadoop:在分布式服务器集上存储海量数据,运行分布式分析程序的框架
高可用:主从结构,高可用集群,两个NameNodejie’dian
HDFS存储/MapReduce计算
HDFS:分布式/冗余备份/动态扩展/存大量数据
MapReduce:编程模型
map:每个文件分片由单独de机器处理
reduce:各台机器计算结果汇总得到最后结果
垃圾回收机制
挑一个你测得最好的
接口编写
测试环境搭建
多线程编程
内存结构
虚拟内存/物理内存
CE ↩︎