一位国外高中生实现在PDF中运行Linux系统。
PDF文件不仅仅是静态的文档,同时还支持Javascript,并有自己独立的标准库,一些浏览器(谷歌浏览器、火狐浏览器)将此作为PDF引擎的一部分来实现。
PDF中的JS完整规范只有Adobe Acrobat实现过,包含了一些能力,例如3D渲染、发出HTTP请求、监控用户点击等。
基于以上能力,只需要极少的IO就可以实现任何想要的计算。
一位国外高中生实现在PDF中运行Linux系统。
PDF文件不仅仅是静态的文档,同时还支持Javascript,并有自己独立的标准库,一些浏览器(谷歌浏览器、火狐浏览器)将此作为PDF引擎的一部分来实现。
PDF中的JS完整规范只有Adobe Acrobat实现过,包含了一些能力,例如3D渲染、发出HTTP请求、监控用户点击等。
基于以上能力,只需要极少的IO就可以实现任何想要的计算。
十亿行文本挑战赛(The One Billion Row Challenge,1BRC),是今年火遍外网的一项比赛,旨在测试利用Java从文本文件中聚合十亿行数据时的性能极限。参赛者可以使用并行处理、SIMD、优化GC或者其它方式,实现快速计算。
开发者大会之于工程师,就像拉萨之于朝圣者。今年的Google开发者大会刚好在北京举办,我有幸前往参加,见到了来自世界各地的个人开发者和爱好者。参加开发者大会不仅能扩展视野,也能让自己显得比较Geek~。
很久没有更新博客了,曾经规划了很多plan都没有执行,前段时间看到的一个有趣的项目:UCB的CS61b课程,实现一个Gitlet。从今天开始,持续更新。
Gitlet是一个类似于Git的版本控制系统,而版本控制系统本质上是计算机上文件的备份系统,Gitlet支持的功能主要包括:
使用OpenAI API Key还可以做很多有趣的事情。
本项目Fork自开源仓库ChatGPT-Next-Web,基于Vercel部署个人的ChatGPT网页服务,优点是不需要服务器且域名是免费的,操作简单,可以在PC端和移动端使用。主要练习了Vercel的使用和ChatGPT官网OpenAI API Key的使用。
HashMap结构设计。
以Arrays.sort()为例进行分析。
快速排序,是一种比较/交换排序算法,最早由英国的东尼·霍尔提出(另外一个知名贡献是提出了和操作系统相关的哲学家进餐问题,首次提出了管程的概念,实现共享资源的互斥访问)。
时间复杂度:快排的平均时间复杂度是O(nlogn)
,最坏时间复杂度是O(n^2)
。
基本思想:使用分治法将一个序列分为两个子序列,然后递归地排序两个子序列。
在Linux系统中,内存的分配与回收速率直接影响系统的存取效率。当内核频繁请求和释放不同大小的一组连续页框时,会导致许多外部空闲碎片,造成空间的浪费。使用伙伴算法可以有效地缓解该问题。伙伴关系机制是操作系统中的一种动态存储管理算法。在进行内存分配时,该算法通过不断平分较大的空闲内存块来获得较小的空闲内存块,直到获得所需要的内存块;在进行内存回收时,该算法尽可能地合并空闲块。