JavaSE
javac demo.java
对文件进行编译
java demo
运行该Java文件
大小写字母的转换:小写字母为[97-122]大写字母为[65-90],转换就+或-32
三目运算符:1>2 ? 3 : 4 (判断 1>2 如果为 true 则执行3 否则执行4 此处执行4)
逻辑结构:
switch (x) {
case 1: //判断x是否为1
break;
default; //以上全不符合
break;
随机数:
Random random = new Random();
int randNum= random.nextInt( bound:100); // [0,100)
开根号:
int n=9;
int i = Math,sqrt(n);
System.out.println(i);
for each:
for(int x:array){
System.out.print(x+ " ");//此处表示数组中每个元素的输出
}
获取输入:
Scanner sc = new Scanner(System.in);
//定义,sc为变量名
int i = sc.nextInt();
String name = sc.next();
可变参数编程:int... tmp
通常放在方法中接收参数,用for each来遍历所有数据
public static int sum(int... tmp){
//这里 int...tmp表示tmp可以接收多个变量,调用方法时可传多个参数
int sum = 0 ;
for(int a:tmp){
sum = sum+a;
}
return sum;
}
代码块:先执行静态代码块(先父后子),在执行实例代码块(先父后子),最后执行构造方法
向上(下)转型:向上转型就是把子类对象转为父类对象,向下转型就是父类对象转为子类对象,向下转型不安全,容易出错
字符串的截取:substring()
括号内一个参数为从参数位置开始截取到结尾,两个参数为截取两个参数的中间位置(从0开始,截取规则:[) )
查找str中是否存在子字符串str.contains()
查找str中是否存在子字符串并返回其位置str.indexOf()
若给两个参数则为从某位置开始查找
字符串的替换:replaceFrist()
replaceAll()
去掉开始和结尾的空格:str.trim()
大小写的转换:str.toUpperCase()
str.toLowerCase()
接口不可以实例化,但是可以使用接口创建数组(数组中存储子类对象)
多态:一种事物的多种形态:(一个方法的不同作用,子类重写。如:动物叫声)
数据结构
排序:插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序等
插入排序:第一个默认为有序,从第二个开始比,跟前面作比较。
希尔排序:对数据进行分组进行插入排序,分组逐渐减小直到为1,若干个插入排序
选择排序:每次找出最大数放在最后面(或最小放在最前)
堆排序:默认为大堆,每次把根元素放在第(length-次数)位
冒泡排序:每次与下一位做比较,调换位置
快速排序:找一个基准,比基准大的放后面,比基准小的放前面
归并排序:分为若干份再进行合并
MAP:key-value 结构 key唯一
SET:key 结构
HashCode: hashCode相同,equals不一定相同;但equals相同,hashCode一定相同
数据库
--去重distinct,根据查询结果中某几列的值进行去重,此处为id这一列进行去重,也可以对多列进行去重。
select distinct id from staff;
--以多列进行排序,如果第一列排序时两个值相同,则按第二列进行排序依次类推desc为降序
select * from staff order by age desc,id;
--查找name以唐开头的,_表示只有一个字符,而%表示有一个或多个字符
select * from staff where name like '唐%';
--查找name为null的
select * from staff where name is null;
--查询成绩前三的学生姓名及总分(需要对成绩总和排序)
select name,chinese+english+math from exam_result order by chinese+english+math desc limit 3;
--查询成绩第4-第6这三名学生的信息(offset为从第几个开始查询,默认为0,查第四名则从第三个开始查)
--所以时通过offset来确定起始位置,通过limit来确定结果长度。
select name,chinese+english+math from exam_result order by chinese+english+math desc limit 3 offset 3;
--把name为123的数学成绩修改为88,由于name类型为varchar,则需加单引号
update exam_result set math = 88 where name = '123';
--统计本表name有多少条数据(不包含null)
select count(name) from students;
--统计本表id列总和(不包括null)
select sum(id) from students;
--统计本表中id列平均值(不包括null)
select avg(id) from students;
--查找每个职位的平均工资
select role,avg(salary),count(*),sum(salary) from staff2 group by role;
--查找平均工资高于5000的职位(分组之后的条件)
select role,avg(salary) from staff2 group by role having avg(salary)>5000;
--查看无多余信息的两个表的合并表 内连接
select people.people_id, people.name, city.id, city.city_name from people, city where people.city_id = city.id;
select people.people_id, people.name, city.id, city.city_name from people join city on people.city_id = city.id;
-- 左外连接
select people.name, city.city_name from people left join city on people.city_id = city.id;
WEB
在 url(query string) 中用 urlencode 来对要查询的关键字进行转义,用 urldecode 来把转义后的结果转义为原关键字。
状态码的分类:
1XX 信息型状态码 表示接收的请求正在处理
2XX 成功状态码 请求正常处理完毕
3XX 重定向状态码 进行附加操作完成请求
4XX 客户端错误状态码 服务器无法处理请求
5XX 服务器错误状态码 服务器处理请求错误
Linux:
su 用户名
useradd 用户名
passwd 用户名
userdel 用户名
ls
ll
pwd
cd
cd..
touch 文件名
rm 文件名
cat 文件名
echo "内容" > 文件名
mkdir 目录名
cp 文件名 位置
mv 文件名 位置
man 某命令
less 文件名
head 文件名
head -n 数字 文件名
tail 与head用法一样,结尾
date 日期
HTTP请求:
GET
POST
PUT
DELETE
HEAD
OPTIONS
HTTPS 的安全基础是 SSL。SSL 协议为数据通讯提供安全支持。SSL 协议可分为两层:SSL 记录协议为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL 握手协议用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
对称加密和非对称加密
对称加密:加密和解密使用同一份密钥
非对称加密:存在两个密钥,一个公钥,一个私钥
UDP的特点:
无连接:知道目的端口和目的IP就直接进行传输,不需要建立链接
不可靠:只传输,不论成败,若因为网络故障等传输失败,不会给应用层返回错误信息
面向数据报:不能灵活的控制读写数据的次数和数量,在面对一个较大文件时,不会对其进行拆分、合并,只能一味的进行传输
UDP优点:
传输速度快
能够支持广播
因此 UDP不适合传输比较大的数据,对于要求效率高,可靠性不高的场景下会考虑使用UDP协议,如机房
TCP的核心机制:
确认应答机制(保证可靠性的核心机制。可靠性,就是为了应对丢包)
超时重传机制(避免丢包后重复发送信息,根据序号实现)
UDP和TCP 的区别:
UDP协议无连接,TCP协议有链接
UDP协议是不可靠传输,TCP协议是可靠传输(可靠指的是能否知道数据是否发送成功,与安全无关)
UDP协议面向数据报,TCP协议面向字节流(数据报与字节都是传输数据的基本单位,一个数据报等于若干个字节。)
进程:
进程包含线程,一个进程可能有一个或多个线程
进程是资源分配的基本单位,线程是系统调度执行的基本单位
进程和进程之间是相互独立的,而线程与线程之间是共享资源的(如果某个线程出现问题,可能导致整个进程终止,因此其它线程也就无法工作了)
单进程,单线程
多进程,单线程
单进程,多线程