08 2017 档案
摘要:计算机是如何启动的呢? 要启动一台计算机,必须要让启动程序先运行,机器才能随之启动。然而通常又是,只有在机器启动后,程序才能运行,这本身就是自相矛盾的。pull oneself up by one`s bootstrap,也就是某人通过自己的鞋带将自己拉起来,也显然是不可能的。 所以必须实现一个机制
阅读全文
摘要:开启线程很容易,但是用户可能随时取消任务,怎么样让跑起来的线程正确地结束呢? 一个很容易想到的办法是,设置一个状态变量isCannelled,然后通过while(!isCannelled),执行循环体中的语句。如果某个时刻想中断线程,可以通过某个方法将isCannelled设置为true。但是这样做
阅读全文
摘要:runState 线程池的运行状态 running:表明线程池在运行当中,可以接受新的任务,也可以处理阻塞队列中的任务。 shutdown:不可以接受新的任务了,但是还可以执行阻塞队列中的任务。 stop:不可接收新任务,不可执行阻塞队列里的任务了,并且尝试终止所有在运行任务。 tidying:所有
阅读全文
摘要:ReentrantLock的底层实现机制是AQS(Abstract Queued Synchronizer 抽象队列同步器)。AQS没有锁之类的概念,它有个state变量,是个int类型,为了好理解,可以把state当成锁,AQS围绕state提供两种基本操作“获取”和“释放”,有条双向队列存放阻塞
阅读全文
摘要:在分布式系统中,有一个基础的理论 CAP,Consistency一致性 Availability可用性 Partition Tolerance分区容忍性,任何一个系统都不可能同时满足这三个条件(高富帅或白富美很难同时满足),结构化存储(关系型数据库 RDBMS)满足的是CA,半结构化存储(Mongo
阅读全文
摘要:QQ邮箱扫码登陆、淘宝网扫码登陆、微信网页版扫码登陆,你知道这些功能的实现原理吗,为什么手机扫一扫,浏览器客户端就登陆进去了?你有没有产生过这种好奇心,心中多问几个为什么。 当浏览器访问微信服务端时,服务端会将一个UID(全局唯一的)返回给浏览器,并封装到一个二维码中。同时,维持一个长连接,例如规定
阅读全文
摘要:一个服务端同时可以接受多个客户端的连接,每个连接都是一个SocketChannel(Channel中的一种),这些Channel共同连接到Selector上(服务端仅需要一个选择器),channel会注册感兴趣的事件到Selector中,当调用Select方法返回后,会遍历所有的套接字描述符(服务端
阅读全文
摘要:一.Linux Bridge :Linux中的网桥 假设宿主机有 1 块与外网连接的物理网卡 eth0,上面跑了 1 个虚机 VM1,现在有个问题是: 如何让 VM1 能够访问外网? 至少有两种方案 将物理网卡eth0直接分配给VM1,但随之带来的问题很多: 宿主机就没有网卡,无法访问了; 新的虚机
阅读全文
摘要:一台物理服务器通常有好几块磁盘(/dev/sda,/dev/sdb),每个磁盘上都可以进行分区(例如对sda进行分区操作:fdisk /dev/sda,可以将sda分成sda1,sda2,sda5等分区,在设置分区的时候可以设置分区的大小)。 如何查看服务器磁盘的整体情况呢?使用lsblk命令 如何
阅读全文
摘要:你了解Ceph吗? Ceph是一种分布式存储系统,它可以将多台服务器组成一个超大集群,把这些机器中的磁盘资源整合到一块儿,形成一个大的资源池(PB级别),然后按需分配给应用使用。 那么你知道Ceph的架构吗? Ceph的底层实现是RADOS,RADOS是由C++写的,但是它向外界暴露了调用接口,即L
阅读全文
摘要:你知道在计算机世界里面是如何发送邮件的吗? google邮件服务器,是由很多台机器组成的集群,里面存放的是所有用户的邮件内容。如果你申请了google邮箱的帐号,那么在这个分布式存储系统中就会分一块空间给你使用(例如10G,是动态分配的)。 用户代理就是一个客户端,例如Foxmail,OutLook
阅读全文
摘要:monitorenter与monitorexit这两个控制多线程同步的bytecode原语,是JVM依赖操作系统互斥(mutex)来实现的(系统调用)。互斥是一种会导致线程挂起,并在较短的时间内又需要重新调度回原线程的,较为消耗资源的操作。 JDK1.6对线程进行了优化,目的就是减少多线程编程下对锁
阅读全文
摘要:java对象和数组是存放在堆中的,那么这些instance的数据结构是什么呢? 对象头:对象头存放的是这个对象的一些元数据信息。例如每个对象都有哈希值,GC分代年龄,锁状态标志等,这些信息就是存放在对象头中。 第一部分markword,用于存储对象自身的运行时数据,如哈希码(HashCode)、GC
阅读全文
摘要:机器语言是cpu唯一能够读懂的语言,早期的程序员写机器语言,实际上是直接写机器指令去命令底层硬件如何操作,但是机器语言都是16进制的数字,很不直观而且非常容易出错。之后就有了汇编语言,它是对机器语言用助记符来表示,然后由汇编器去查表,将助记符映射成机器语言。汇编语言和机器语言是一一对应的关系,一条汇
阅读全文

浙公网安备 33010602011771号