首页 文章 精选 留言 我的
优秀的个人博客,低调大师

微信关注我们

原文链接:https://blog.51cto.com/11138521/2646515

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

图解 | 你管这破玩意叫文件系统?

你手里有一块硬盘,大小为 1T 你还有一堆文件 这些文件在硬盘看来,就是一堆二进制数据而已 你准备把这些文件存储在硬盘上,并在需要的时候读取出来。要设计怎样的软件,才能更方便地在硬盘中读写这些文件呢? 1 首先我不想和复杂的扇区,设备驱动等细节打交道,因此我先实现了一个简单的功能,将硬盘按逻辑分成一个个的块,并可以以块为单位进行读写。每个块就定义为两个物理扇区的大小,即 1024 字节,就是 1KB 啦。硬盘太大不好分析,我们就假设你的硬盘只有 1MB,那么这块硬盘则有 1024 个块。 OK,我们开始存文件啦!准备一个文件 随便选个块放进去,3 号块吧! 成功!首战告捷! 2 再存一个文件!诶?发现问题了,万一这个文件也存到了 3 号块,不是把原来的文件覆盖了么?不行,得有一个地方记录,现在可使用的块有哪些,像这样。 块 0:未使用 块 1:未使用 块 2:未使用 块 3:已使用 块 4:未使用 ... 块 1023:未使用 那我们就用 0 号块,来记录所有块的使用情况吧!怎么记录呢?位图! 那我们给块 0 起个名字,叫块位图,之后这个块 0 就专门用来记录所有块的使用情况,不再用来...

话说 wait、notify 、 notifyAll

一、前言 说起java的线程之间的通信,难免会想起它,他就是 wait 、notify、notifyAll 他们三个都是Object类的方法, 受到 final 和 native 加持 ,也就造就了他们是不能被重写的 wait() 等待 ,意味让出当前线程的锁,进入等待状态,让其他线程先用会儿锁 ,这里注意了,什么叫让出当前线程的锁? 也就是你当前线程必须要先获得锁,所以它一般会与synchronized(我的上一篇文章有写)配合使用官方注释: The current thread must own this object's monitor. wait要抛出InterruptedException异常 需要try catch 因为线程wait期间可能会被打断。 notify() 唤醒一个wait()的线程,当notify所在的代码块的锁释放之后,wait的线程开始抢锁,嗯....... ,Object类里注释写的是唤醒wait线程是任意(arbitrary)的 ,但是可以由具体实现自行裁决,我看hotspot实现好像是用的双向链表,notify的时候是从head拿出一个唤醒,所以我称...

相关文章

发表评论

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle

Oracle

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat

Apache Tomcat

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse

Eclipse

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。