Java编程小知识

Java编程小知识

一、操作系统

1、进程和线程
(1)进程是容器,中有线程,进程中有逻辑内存(寻址空间),文件/网络句柄
(2)线程中有栈、PC(下一条指令的地址—指向内存)、TLS(独立内存,存放变量)
(3)进程之间无法相互通信,需要端口

2、存储和寻址
(1)从快到慢:寄存器、缓存、内存、硬盘
(2)寻址空间:指针可以取到的范围,32位—4G,32位系统可以使用4G

  • 64位操作系统—约10……19Bytes
  • 64位JVM—可以使用更大的内存,需要重新编译

(3)指针—指向逻辑内存,进程独立232或264----对应物理内存或者虚拟内存分页到虚拟内存
物理内存再次转向寄存器

3、网络基础–七层网络
(1)节点上—数据链路层(数据包)—网络层(路由器)—传输层(TCP/IP协议)-----应用层(email协议等)
(2)历史发展上迭代进化
不可靠、不安全:丢包、重复包,出差,乱序,中间人攻击、窃取、篡改

4、滑动窗口协议
(1)TCP协议中使用,维持发送方/接收包缓冲区
(2)当无滑动窗口时:发送包发送、确认,但吞吐量低
(3)将一部分包发送,确认后发送剩余未发送,然后读取剩下的包补上窗口
(4)参与流量和阻塞控制

5、网络抓包WireShark

二、数据库与事务

1、关系型数据库
(1)基础:基于关系代数理论
(2)缺点:表结构不直观,实现复杂,速度慢
(3)优点:健壮性高,社区庞大

2、事务
(1)ACID

Atomicity\Consistency\Isolation\Durability

(2)事务的隔离级别

  • Read uncommitted
  • Read Committed
  • Repeatable Reads
  • Serializable

三、数据

1、整数

32int的范围: -2^31---2^31-1

2、浮点数
(1)符号位|指数部分|基数部分

浮点数比较 a==b ? ---错误   Math.abs(a-b)<eps

3、Object

引用类型,用a==b判断是否为同一个Object
用a.equals(b)或Objects.equals(a,b)判断是否相等

4、数学归纳法
(1)用于证明断言对所有自然数成立

证明对于N=1成立
证明N>1时:如果对于N-1成立,那么对于N成立

(2)递归书写方法

  • 严格定义递归函数作用,包括参数、返回值,side-effect
  • 先一般,后特殊
  • 每次调用必须缩小问题规模
  • 每次问题规模缩小程度必须为1

5、递归开销
Stack:函数调用开销、Stack Overflow

循环控制:
(1)定义循环不变式,并在循环体每次结束后保持循环不变式
(2)先一般,后特殊
(3)每次必须向前推进循环不变式中涉及的变量值
(4)每次推进的规模必须为1

6、不可变性
(1)不可变对象Immutable Objects

可以引用传递,可以缓存

(2)线程安全
(3)final 关键字

类申明 ----类不可以被继承
函数申明----函数不可以在派生类中重写
变量申明----变量不可以指向其他对象

(4)static final变量----定义常量,名称一般大写

实现不可变性
Final关键字无法保证不可变性
从接口定义,类的实现上保证不可变性
posted @ 2020-03-15 21:23  李泽坤  阅读(84)  评论(0编辑  收藏  举报