摘要: 机器语言是cpu唯一能够读懂的语言,早期的程序员写机器语言,实际上是直接写机器指令去命令底层硬件如何操作,但是机器语言都是16进制的数字,很不直观而且非常容易出错。之后就有了汇编语言,它是对机器语言用助记符来表示,然后由汇编器去查表,将助记符映射成机器语言。汇编语言和机器语言是一一对应的关系,一条汇 阅读全文
posted @ 2017-08-02 10:53 bili111 阅读(262) 评论(0) 推荐(0) 编辑
摘要: 等待方遵循的原则: 获取对象的锁,不满足条件就调用wait()方法,条件满足继续执行 通知方原则: 获取对象的锁,改变条件,然后notify 每个对象都有一个监视器锁,这个监视器锁的数据结构如下: wait()/notify()方法定义在Object类中。如果线程要调用对象的wait()方法,必须首 阅读全文
posted @ 2017-07-31 15:28 bili111 阅读(2818) 评论(0) 推荐(1) 编辑
摘要: 每个对象都有一个锁(Monitor,监视器锁),class对象也有锁,如果synchronized关键字修饰同步代码块,通过反编译可以看到,其实是有个monitorenter和monitorexit指令,也就是说,某个线程必须首先获得该对象的监视器锁,才能进入同步代码块,如果此时其它线程也去获取该对 阅读全文
posted @ 2017-07-31 13:09 bili111 阅读(1152) 评论(0) 推荐(0) 编辑
摘要: 操作系统内核是至高无尚的内功心法,只有掌握了内功,学习其他的武功才会轻而易举。 现在我们来谈谈java。JVM其实是操作系统中运行的进程,JVM有操作系统进程的所有共性,但是它却不是一个普通的进程,它有它特殊的地方,它将许多本来属于操作系统管理范畴的东西,移植到了JVM内部,减少系统调用的开销。 1 阅读全文
posted @ 2017-07-28 12:37 bili111 阅读(3177) 评论(1) 推荐(0) 编辑
摘要: 如果说操作系统是一辆车,那么操作系统内核就是发动机。操作系统内核是操作系统最核心的部分,负责调度cpu资源,管理进程和内存等。用户应用程序不能直接操作硬件,而是需要通过内核这个中间层,由内核真正的操纵硬件资源(硬件驱动程序也属于内核当中)。 操作系统内核的体系结构: Linux中每一个进程都依赖一个 阅读全文
posted @ 2017-07-27 19:51 bili111 阅读(1389) 评论(0) 推荐(0) 编辑
摘要: 操作系统中同时运行着多个进程,如何管理和调度这些进程,以合理利用系统资源,提高系统吞吐量呢? 进程是由操作系统内核创建的,每一个进程都分配得有4G的寻址空间(在32位操作系统中,一个指针长度是 4 字节,而 4 字节指针的寻址能力是从 0x00000000~0xFFFFFFFF ,最大值 0xFFF 阅读全文
posted @ 2017-07-26 15:40 bili111 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 计算机中的缓存大小是有限的,如果对所有数据都缓存,肯定是不现实的,所以需要有一种淘汰机制,用于将一些暂时没有用的数据给淘汰掉,以换入新鲜的数据进来,这样可以提高缓存的命中率,减少磁盘访问的次数。 LRU(Least Recently Used 最近最少使用)算法有两种策略(均以队列的方式实现),一种 阅读全文
posted @ 2017-07-06 11:19 bili111 阅读(1167) 评论(0) 推荐(0) 编辑
摘要: TCP报文段格式图: 序号:seq序号,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。 确认号:ack序号,只有ACK标志位为1时,确认序号字段才有效,Ack=seq+1。 标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等. ACK:确认序号有效。 SYN 阅读全文
posted @ 2017-07-05 11:41 bili111 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 阻塞IO和非阻塞IO: 阻塞IO:在代码进行 read() 调用时,线程会阻塞直至有可供读取的数据。同样, write()调用时,线程也会阻塞直至数据全部写入。换句话说,当你发了一个请求(或方法调用)之后,必须等待,直到程序返回结果,这段期间不能干其他事情。Everything is in sequ 阅读全文
posted @ 2017-06-23 11:25 bili111 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 这里所谓的前缀,中缀,后缀是根据操作符的位置来定的,如果操作符在操作数前面,则称为前缀表达式,例如“- + 1 × + 2 3 4 5”;如果操作符在操作数之间,则称为中缀表达式,例如 “1+((2+3)×4)-5”;如果操作符在操作数后面,则称为后缀表达式,例如“1 2 3 + 4 × + 5 - 阅读全文
posted @ 2017-06-16 15:36 bili111 阅读(15015) 评论(0) 推荐(1) 编辑