码农翻身阅读笔记-1

176 阅读2分钟

我是一个线程

  • 线程会有创建期,就绪期,等待期,运行期,销毁期,当然在其他资料书里也有new,runable,block,waiting,timed waiting ,terminated等状态的说法,本质上都差不多。
  • 线程执行的过程随时会被打断,碰到等待磁盘读取数据类似耗时的操作也会让出调度,而且就算到了可运行状态,也不一定马上执行。
  • 锁:多个线程对一条数据执行修改的时候,要注意线程安全问题,其实也就是静态变量和数据库的数据占多数,毕竟多线程操作自己栈里的变量也没什么问题,都是线程独有的,别人也修改不了。其实修改数据的原则应该就是,要么我改的时候别人不能改,要么我去改的时候一定保证他是最新值,不能改那就好说,加锁让别的线程不能执行,保证最新值就是先读他的值,然后真正修改的时候看看还是不是那个值,也就类似cas。

TCP/IP之大明王朝

  • 为了发送消息,会进行三次握手,主要目的是为了确认连接没问题。第一次握手是发送者发出的,告诉接受者我要发送了,但是并不知道自己的发送是不是成功了,也不知道自己有没有接收的能力,所以接收者收到消息后,会给出一条确认消息,就是所谓的第二次握手:收到了,你发吧。这时候接收者知道自己的接收能力是没问题的,但还不确定自己的发送能力是不是有问题。发送者收到消息后会发出第三次握手,我收到你的消息了,我要开始发送啦!发送者会根据是不是收到接收者的反馈消息知道自己的消息有没有丢失,一旦超时没收到确认消息就认为失败,基本就是重发。