摘要: ReentrantLock的底层实现机制是AQS(Abstract Queued Synchronizer 抽象队列同步器)。AQS没有锁之类的概念,它有个state变量,是个int类型,为了好理解,可以把state当成锁,AQS围绕state提供两种基本操作“获取”和“释放”,有条双向队列存放阻塞 阅读全文
posted @ 2017-08-16 15:12 bili111 阅读(2294) 评论(1) 推荐(0) 编辑
摘要: 在分布式系统中,有一个基础的理论 CAP,Consistency一致性 Availability可用性 Partition Tolerance分区容忍性,任何一个系统都不可能同时满足这三个条件(高富帅或白富美很难同时满足),结构化存储(关系型数据库 RDBMS)满足的是CA,半结构化存储(Mongo 阅读全文
posted @ 2017-08-11 13:52 bili111 阅读(1694) 评论(0) 推荐(0) 编辑
摘要: QQ邮箱扫码登陆、淘宝网扫码登陆、微信网页版扫码登陆,你知道这些功能的实现原理吗,为什么手机扫一扫,浏览器客户端就登陆进去了?你有没有产生过这种好奇心,心中多问几个为什么。 当浏览器访问微信服务端时,服务端会将一个UID(全局唯一的)返回给浏览器,并封装到一个二维码中。同时,维持一个长连接,例如规定 阅读全文
posted @ 2017-08-10 11:16 bili111 阅读(558) 评论(0) 推荐(0) 编辑
摘要: 一个服务端同时可以接受多个客户端的连接,每个连接都是一个SocketChannel(Channel中的一种),这些Channel共同连接到Selector上(服务端仅需要一个选择器),channel会注册感兴趣的事件到Selector中,当调用Select方法返回后,会遍历所有的套接字描述符(服务端 阅读全文
posted @ 2017-08-09 17:03 bili111 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 一.Linux Bridge :Linux中的网桥 假设宿主机有 1 块与外网连接的物理网卡 eth0,上面跑了 1 个虚机 VM1,现在有个问题是: 如何让 VM1 能够访问外网? 至少有两种方案 将物理网卡eth0直接分配给VM1,但随之带来的问题很多: 宿主机就没有网卡,无法访问了; 新的虚机 阅读全文
posted @ 2017-08-07 11:28 bili111 阅读(1163) 评论(0) 推荐(0) 编辑
摘要: 一台物理服务器通常有好几块磁盘(/dev/sda,/dev/sdb),每个磁盘上都可以进行分区(例如对sda进行分区操作:fdisk /dev/sda,可以将sda分成sda1,sda2,sda5等分区,在设置分区的时候可以设置分区的大小)。 如何查看服务器磁盘的整体情况呢?使用lsblk命令 如何 阅读全文
posted @ 2017-08-05 17:48 bili111 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 你了解Ceph吗? Ceph是一种分布式存储系统,它可以将多台服务器组成一个超大集群,把这些机器中的磁盘资源整合到一块儿,形成一个大的资源池(PB级别),然后按需分配给应用使用。 那么你知道Ceph的架构吗? Ceph的底层实现是RADOS,RADOS是由C++写的,但是它向外界暴露了调用接口,即L 阅读全文
posted @ 2017-08-05 10:46 bili111 阅读(8580) 评论(0) 推荐(0) 编辑
摘要: 你知道在计算机世界里面是如何发送邮件的吗? google邮件服务器,是由很多台机器组成的集群,里面存放的是所有用户的邮件内容。如果你申请了google邮箱的帐号,那么在这个分布式存储系统中就会分一块空间给你使用(例如10G,是动态分配的)。 用户代理就是一个客户端,例如Foxmail,OutLook 阅读全文
posted @ 2017-08-04 11:10 bili111 阅读(363) 评论(0) 推荐(0) 编辑
摘要: monitorenter与monitorexit这两个控制多线程同步的bytecode原语,是JVM依赖操作系统互斥(mutex)来实现的(系统调用)。互斥是一种会导致线程挂起,并在较短的时间内又需要重新调度回原线程的,较为消耗资源的操作。 JDK1.6对线程进行了优化,目的就是减少多线程编程下对锁 阅读全文
posted @ 2017-08-02 21:03 bili111 阅读(591) 评论(0) 推荐(0) 编辑
摘要: java对象和数组是存放在堆中的,那么这些instance的数据结构是什么呢? 对象头:对象头存放的是这个对象的一些元数据信息。例如每个对象都有哈希值,GC分代年龄,锁状态标志等,这些信息就是存放在对象头中。 第一部分markword,用于存储对象自身的运行时数据,如哈希码(HashCode)、GC 阅读全文
posted @ 2017-08-02 15:05 bili111 阅读(2850) 评论(0) 推荐(0) 编辑