7z文件格式及其源码】的更多相关文章

7z文件格式及其源码的分析(四) 这是7z文件格式及其源码的分析系列的第四篇. 上一篇讲到了7z文件静态结构的尾header部分.这一篇开始,将从7z实际压缩流程开始详细介绍7z文件尾header的详细结构. 一, 第一个概念: coder. 在7z的压缩过程中, 一个非常核心的概念就是coder.  一个coder代表一个算法, 通常是指一个压缩或解压算法(也包括过滤算法和加密算法等). 例如, 在7z中lzma算法就是一个coder,  deflate算法也是一个coder.  7z中用于加…
7z文件格式及其源码的分析 本文是一个系列. 主要是分享我最近一年做7z文件开发的经验. 主要包括7z官方源码的结构分析, 以及7z文件格式的分析. 其中涉及到7z源码结构的各个细节, 以及7z文件格式的具体细节. 本文适合对象: 想要了解学习7z源码的开发人员, 想要了解7z文件格式细节, 做7z文件压缩器和解压器的开发人员, 以及其他压缩文件爱好者等等. 目前7z的最新稳定版是9.20, 而9.30版本还在alpha版本. 所以本文是基于其9.20版本.  我将尽可能详细的描述所有细节, 但…
7z文件格式及其源码的分析(二) 一. 准备工作: 1. 源码下载: 可以从官方中文主页下载:http://sparanoid.com/lab/7z/. 为了方便, 这里直接给出下载链接: http://downloads.sourceforge.net/sevenzip/7z920.tar.bz2 . 2. 工具准备: 源码中给的工程文件都是vc6.0的工程.  作者说他不喜欢新vs的界面. 哎.  不过没关系, 我们使用VS2008也一样可以. 有极少地方需要修改一下.  我们使用VS200…
这是7z文件格式及其源码的分析系列的第五篇. 上一篇讲到了7z文件压缩流程.最近太忙了,好久没更新,都快忘了写到哪了.:) 这一篇就说说7z文件的尾头的生成方式吧. 上一篇已经讲了尾header的结构了.它其实就是记录了压缩文件详细信息. 那么尾header是如何存储的呢? 先看一个图: 这是整个7z文件的结构.  最后面的绿色“尾文件头” 就是我们要说的目标. 7z的尾文件头有两种存储方式. 第一,  最简单的, 就是把尾文件头的内容直接写在后面, 不做任何处理. 这种方式最简单,但是却最不常…
这是7z文件格式及其源码的分析系列的第四篇. 上一篇讲到了7z文件静态结构的尾header部分.这一篇开始,将从7z实际压缩流程开始详细介绍7z文件尾header的详细结构. 一, 第一个概念: coder. 在7z的压缩过程中, 一个非常核心的概念就是coder.  一个coder代表一个算法, 通常是指一个压缩或解压算法(也包括过滤算法和加密算法等). 例如, 在7z中lzma算法就是一个coder,  deflate算法也是一个coder.  7z中用于加密的AES256算法也是一个cod…
上一篇在这里.  这是7z文件格式分析的第三篇, 相信有了前两篇的准备,你已经了解了7z源码的大致结构, 以及如何简单调试7z的源码了. 很多同学是不是迫不及待想要拔去7z的神秘外衣,看看究竟了. 好, 这就带你们一探乾坤. 本文开始,我们详细介绍7z的文件存储结构. 要了解7z的结构,  当然最好从官方的说明开始, 尽管这个说明非常简略, 但它的确是我入门时的救命稻草. 打开源码的 "DOC" 目录.  这里面就是官方所有的文档了. 其中只有二个文档跟结构相关: 1. 7zForma…
这是第二篇, 第一篇在这里: 这一篇开始分析7z的源码结构. 一. 准备工作: 1. 源码下载: 可以从官方中文主页下载:http://sparanoid.com/lab/7z/. 为了方便, 这里直接给出下载链接: http://downloads.sourceforge.net/sevenzip/7z920.tar.bz2 . 2. 工具准备: 源码中给的工程文件都是vc6.0的工程.  作者说他不喜欢新vs的界面. 哎.  不过没关系, 我们使用VS2008也一样可以. 有极少地方需要修改…
FileSystem及其源码分析 FileSystem这个抽象类提供了丰富的方法用于对文件系统的操作,包括上传.下载.删除.创建等.这里多说的文件系统通常指的是HDFS(DistributedFileSystem),其实,hadoop处理支持分布式文件系统,还提供了对诸如本地文件系统(LocalFileSystem).FTP文件系统(FTPFIle)的支持. 在这里我们主要介绍一下DistributedFileSystem的创建过程.如下代码: 主要包括两个阶段: 1. 加载配置文件 2. 初始…
详解CopyOnWrite容器及其源码 在jave.util.concurrent包下有这样两个类:CopyOnWriteArrayList和CopyOnWriteArraySet.其中利用到了CopyOnWrite机制,本篇就来聊聊CopyOnWrite技术与Java中的CopyOnWrite容器.主要包扩以下内容: 什么是CopyOnWrite CopyOnWriteArrayList CopyOnWriteArraySet CopyOnWrite适用场景 什么是CopyOnWrite 对于…
目录 Qt QComboBox之setEditable和currentTextChanged以及其源码分析 前言 问题的出现 问题分析 currentTextChanged信号触发 源码分析 Qt QComboBox之setEditable和currentTextChanged以及其源码分析 前言 最近做了一个QComboBox里有选项,然后选中选项之后就会自动触发条件搜索.然后我发现,在我初始化comboBox时,由于信号连接的原因会触发这个currentTextChanged信号.代码大致如…
本文会作为一个系列,分为以下部分来介绍: (1)见识一下这个界面框架: (2)界面框架如何进行开发: (3)辅助开发支持:Demo.模板.VsPackage制作. 框架源码如下所示. 本文介绍第(1)部分. 1 安装 现在我们就先来见识一下这个界面框架.首先,你可以通过以下链接来下载到这个框架的VS插件安装包:下载地址.下载解压后,文件如下: 双击这个文件,进行安装(目前只支持VS2012和VS2013,抛弃了VS2010,I am sorry). 点击安装,即可完成. 2 创建主程序 接着打开…
什么是Optional对象 Java 8中所谓的Optional对象,即一个容器对象,该对象可以包含一个null或非null值.如果该值不为null,则调用isPresent()方法将返回true,且调用get()方法会返回该值. 另外,该对象还有其它方法: 如可以使用orElse()方法给Optional对象设定默认值(当值为null时,会使用默认值): 使用ifPresent()方法来执行一段代码(当值不为null时,执行代码段). Optional主要被用于Java 8的Stream中,简…
以下内容基于jdk1.7.0_79源码: 什么是LinkedHashMap 继承自HashMap,一个有序的Map接口实现,这里的有序指的是元素可以按插入顺序或访问顺序排列: LinkedHashMap补充说明 与HashMap的异同:同样是基于散列表实现,区别是,LinkedHashMap内部多了一个双向循环链表的维护,该链表是有序的,可以按元素插入顺序或元素最近访问顺序(LRU)排列, 简单地说:LinkedHashMap=散列表+循环双向链表 LinkedHashMap的数组结构 用画图工…
@[CoordinatorLayout, Bahavior] CoordinatorLayout是android support design包中可以算是最重要的一个东西,运用它可以做出一些不错的特效,而其中的难点就是Bahavior的使用 拖动效果实例 CoordinatorLayout和Bahavior解析 关于NestScrolling机制 拖动效果实例 上述效果图中上部是一个LinearLayout中含有的一个EditText从而做成的一个简单的搜索框,而下部是一个ListView.我们…
  本文原创,转载请注明出处,本人Q1273314690(交流学习) 总结: 就是MARGIN决定了你的FUN调用几次,每次传递给你的是什么维度的内容,而...是传递给FUN的(每次调用的时候都会被传递给FUN).apply的返回值结果可能是向量,数组(含矩阵)或列表(具体要根据条件分类讨论,但实际上我们没有必要,直接看一下返回的结果就知道是什么类型了)   apply {base} Description Returns a vector or array or list of values…
本文会作为一个系列,分为以下部分来介绍: (1)见识一下这个界面框架: (2)界面框架如何进行开发: (3)辅助开发支持:Demo.模板.VsPackage制作. 框架源码如下所示. 本文介绍第(1)部分. 1 安装 现在我们就先来见识一下这个界面框架.首先,你可以通过以下链接来下载到这个框架的VS插件安装包:下载地址.下载解压后,文件如下: 双击这个文件,进行安装(目前只支持VS2012和VS2013,抛弃了VS2010,I am sorry). 点击安装,即可完成. 2 创建主程序 接着打开…
刚开始摸node.js, 在用express 4.x 的过程中 有一个connect-flash的玩意 如上图, 在 /reg 页面提交注册信息的时候 如若两次输入的密码不匹配则调用请求对象req的flash方法写入提示消息: 然后 在展示 /reg 页面的时候取出抛给视图模版: 看起来就像个字典对象 这个包必须在引用 express-session 包的前提下才能使用 why1 ,并且写入的值 在取出一次后即销毁 why2. 这非常像asp.net mvc里边的 tempdata对象 开源的东…
String,StringBuffer,StringBuilder的区别这个问题几乎是面试必问的题,这里做了一些总结: 1.先来分析一下这三个类之间的关系 乍一看它们都是用于处理字符串的java类,而且长得也都差不多,相信肯定有人会以为StringBuffer和StringBuilder都是继承自String这个类,即认为String类是其他两个类的超类.这种想法似乎很合理,但其实是不对的,事实上StringBuffer和StringBuilder确实是继承自某个类,但是这个类并不是String…
前言 开心一刻 那年去相亲,地点在饭店里,威特先上了两杯水,男方绅士的喝了一口,咧嘴咋舌轻放桌面,手抚额头闭眼一脸陶醉,白水硬是喝出了82年拉菲的感觉.如此有生活情调的幽默男人,果断拿下,相处后却发现他比较木讷,问他为什么那天喝水那么有趣,他仰头道:鬼知道那杯水怎么那么烫啊! 是什么 FactoryBean的源码比较简单,大家可以细读下其注释,我做了简单的如下翻译 /** * 实现此接口的bean不能用作普通bean.此bean暴露的对象是通过getObject()创建的对象,而不是它自身 */…
HTML5已经相当强大,在HTML5平台上,我们可以完成很多非常复杂的动画效果,包括游戏在内.早期我们只能利用flash来实现网络游戏,现在我们又多了一种选择,即用HTML5制作游戏.相比flash,HTML5更加灵活方便,随着浏览器技术的不断升级,HTML5一定会广泛使用,至少在网页动画方面,下面是一些利用HTML5完成的游戏作品. HTML5版切水果游戏 这曾是风靡全球的一款手机APP游戏切水果,现在JS小组已经将其改版成HTML5,并将其开源. 核心Javascript代码: Ucren.…
FBV(function base views) 就是在视图里使用函数处理请求. CBV(class base views) 就是在视图里使用类处理请求. Python是一个面向对象的编程语言,如果只用函数来开发,有很多面向对象的优点就错失了(继承.封装.多态).所以Django在后来加入了Class-Based-View.可以让我们用类写View.这样做的优点主要下面两种: 提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承) 可以用不同的函数针对不同的HTTP方法处理,而不是…
关于 I/O 的类可以分为四种: 关于字节的操作:InputStream 和 OutPutStream: 关于字符的操作:Writer 和 Reader: 关于磁盘的操作:File: 关于网络的操作:Socket( Socket 类不在 java.io 包中). 在本篇博客中主要讲述前两种 I/O,即字符流与字节流,并会提及磁盘IO.首先我们来看一下字节流与字符流的实现关系,如下图 一.字节流 在字节流的类中,最顶层的是 Inputstream 抽象类和 OutputStream 抽象类,两者定…
深度学习广泛应用于各个领域.基于transformer的预训练模型(gpt/bertd等)基本已统治NLP深度学习领域,可见transformer的重要性.本文结合<Attention is all you need>Harvard 的代码<Annotated Transformer>深入理解transformer模型. Harvard的代码在python3.6 torch 1.0.1 上跑不通,本文做了很多修改.修改后的代码地址:Transformer. 1 模型的思想 Tran…
1.链表介绍 链表是一种物理单元上非连续,非顺序的存储结构.链表由一系列的姐点组成,结点可以在运行时动态生成.每个结点包含两个部分,一个是存储数据元素的数据域,一个是存储下一个结点的指针域 双链表是链表的一种,每个结点既有前驱指针,也有后驱指针 2.LinkList 源码分析1)构造方法public LinkList(){} public LinkedList(Collection <? extend E> c){this();addAll(c)} 2) 元素插入第一种插入方式public b…
1.数组介绍 因为数组在存储数据时是按顺序存储的,存储的内存也是连续的,所以其特点是读取数据比较容易,插入删除比较困难 2.arraylist源码分析 1)构造方法(默认容量为10) 2)插入数据 扩容操作 newCapacity = oldCapacity +oldCapacity >>1 3) 删除操作 4)遍历操作 arraylist在进行遍历操作时 删除元素会报错 for(Integer num:list){ if(num==12) list.remove(); } 只能通过迭代器来删…
公司项目在需要将页面的文本导出成DPF,和支持打印时,一直没有做过这样的功能,花了一点时间将其做了出来,并且本着开源的思想和技术分享的目的,将自己的编码经验分享给大家,希望对大家有用. 现在是有一个文本在我的div的代码块中. 1 <h3 id="tatemplatecode"> </h3> 3 <div class="publishinfo"> 4 <span id="publisher"><…
小侃一下 日常开发中, 或许不会直接new线程或线程池, 但这些线程相关的基础或思想是非常重要的, 参考林迪效应; 就算没有直接用到, 可能间接也用到了类似的思想或原理, 例如tomcat, jetty, 数据库连接池, MQ; 本文不会对线程的基础知识进行介绍, 所以最好已"进食"关于线程的基础知识, 再"食用"本文更佳; 由于在下的工作及其它原因, 前后花费了数月的时间才完成这篇博客, 希望能帮助到想要了解ThreadPoolExecutor线程池源码和原理的同…
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com,源码版本是1.19 又是一个周末,可以愉快的坐下来静静的品味一段源码,这一篇涉及到资源的回收,工作量是很大的,篇幅会比较长,我们可以看到k8s在资源不够时会怎么做的,k8s在回收资源的时候有哪些考虑,我们的pod为什么会无端端的被干掉等等. limit&request 在k8s中,CPU和内存的资源主要是通过这limit&request来进行限制的,在yaml文件中的定义如下:…
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 源码版本是1.19 这次讲解的是k8s的调度器部分的代码,相对来说比较复杂,慢慢的梳理清楚逻辑花费了不少的时间,不过在梳理过程中也对k8s有了一个更深刻的理解. 调度的逻辑介绍 调度器的主要职责,就是为一个新创建出来的 Pod,寻找一个最合适的节点(Node).kube-scheduler 就是 Kubernetes 集群的默认调度器. 默认调度器会首先调用一组Filter过滤器,也就…
简介 在Go服务中,对于每个请求,都会起一个协程去处理.在处理协程中,也会起很多协程去访问资源,比如数据库,比如RPC,这些协程还需要访问请求维度的一些信息比如说请求方的身份,授权信息等等.当一个请求被取消或者超时的时候,其他所有协程都应该立即被取消以释放资源. Golang的context包就是用来传递请求维度的数据.信号.超时给处理该请求的所有协程的.在处理请求的方法调用链中,必须传递context,当然也可以使用WithCancel, WithDeadline, WithTimeout或者…