compress

《算法》笔记 17

你说的曾经没有我的故事 提交于 2020-02-27 08:34:01
读写二进制数据 基因组数据的压缩 游程编码 位图 霍夫曼压缩 前缀码和单词查找树 构造前缀码的单词查找树 写入和读取单词查找树 使用前缀码压缩 使用前缀码展开 LZW压缩 LZW的单词查找树 LZW的单词查找树 LZW压缩的展开 对数据进行压缩能够有效节省保存信息所需的空间和传输信息所需的时间。虽然计算机存储设备的成本在不断降低,但由于需要存储的数据在飞速膨胀,压缩算法仍有非常重要的意义,因为与以往相比,数据被压缩后节省的空间会更大。 ### 读写二进制数据 现代计算机系统中处理的所有类型的数据最终都是用二进制表示的,可以将它们都看作一串比特的序列。 数据压缩分为无损压缩和有损压缩,前者在压缩、展开后不会丢失任何信息,但后者不然。有损压缩常被用于图像、视频、音乐的压缩。对于无损压缩算法,评价的标准为压缩率,压缩率=压缩后体积/原始体积;对于有损压缩算法,评价标准除了压缩率外,还有主观的质量感受等。 接下来只讨论无损压缩算法。 之前的算法设计输入输出时,使用的都是基于java基础方法封装的StdIn和StdOut,它们处理的是由Unicode编码的字符流;但由于压缩算法会涉及到对比特流的操作,所以接下来使用BinaryStdIn和BinaryStdOut,BinaryStdIn.readBoolean()方法会从输入中读取一个比特并返回为布尔值,BinaryStdOut.write

linux压缩命令

馋奶兔 提交于 2020-02-26 02:05:43
把常用的tar解压命令总结 tar -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。 -z:有gzip属性的 -j:有bz2属性的 -Z:有compress属性的 -v:显示所有过程 -O:将文件解开到标准输出 下面的参数-f是必须的 -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。 # tar -cf all.tar *.jpg 这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。 # tar -rf all.tar *.gif 这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。 # tar -uf all.tar logo.gif 这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。 # tar -tf all.tar 这条命令是列出all.tar包中所有文件,-t是列出文件的意思 # tar -xf all.tar 这条命令是解出all.tar包中所有文件,-x是解开的意思 压缩 tar –cvf jpg.tar *.jpg

给函数或变量起名称

北城以北 提交于 2020-02-25 18:27:32
相信在平常编程过程中,给函数或变量起名称是一件令人头痛的事情。如果起的名称不能表达代码表达的逻辑,则别人看此代码会比较难受了。代码首先要给人看,其次才是机器运行。所以给函数或变量命名就非常重要了。 本篇文章主要介绍在Java(Java web)开发过程中给类,函数等的命名。在给函数或者变量命名是一个首要原则就是要尽力的表达代码想要表达的意思。下面会给出一些具体的建议 给类命名 Java中给类命名要遵循首字母大小,驼峰式命名。类名要表达具体的业务对象。在Web开发过程,经常需要建立VO,DTO,BO,Entity等对象(这些对象的含义可以参考阿里巴巴编程规范,里面有具体的介绍)。在给这些领域对象命名时,最好带上VO,DTO等后缀。 函数命令 在给函数命名时,取一个动词很关键,因为一般函数就是执行一个具体的逻辑。在《代码整洁之道》这本书中,作者告诉我们一个函数最好只做一件事情,不要让函数变得很复杂,如果函数复杂,那么如果想要重构就会变得比较困难。同时函数最好不要对于三个参数。 下面是一些常用的动词以及表达的含义,在平常的编程中可以尽量使用下面这些动词 动词选取 类别 单词 添加/插入/插入/创建/初始化/加载 add/append/insert/create/initialize/load 删除/销毁 delete, remove, destroy, drop 打开/开始/启动

Linux下的tar压缩解压缩命令详解

这一生的挚爱 提交于 2020-01-09 13:44:18
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> tar -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。 下面的参数是根据需要在压缩或解压档案时可选的。 -z:有gzip属性的 -j:有bz2属性的 -Z:有compress属性的 -v:显示所有过程 -O:将文件解开到标准输出 下面的参数-f是必须的 -f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。 案例: tar -cf all.tar *.jpg 这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。 tar -rf all.tar *.gif 这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。 tar -uf all.tar logo.gif 这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。 tar -tf all.tar 这条命令是列出all.tar包中所有文件,-t是列出文件的意思 tar -xf all.tar 这条命令是解出all.tar包中所有文件,-t是解开的意思 压缩 tar -cvf jpg

同步工具类 CountDownLatch 和 CyclicBarrier

混江龙づ霸主 提交于 2019-12-06 11:02:02
在开发中,一些异步操作会明显加快执行速度带来更好的体验,但同时也增加了开发的复杂度,想了用好多线程,就必须从这些方面去了解 线程的 wait() notify() notifyall() 方法 线程异步返回 Future ThreadLocal 类 线程池 ThreadPoolExecutor 同步工具类 CountDownLatch , CyclicBarrier , Semaphore , Phaser , Exchanger 估计上面每一个对于 2~3 年的 java 同学来说都是恶梦,比较难以理解,本文简单说下 CountDownLatch 和 CyclicBarrier CountDownLatch CountDownLatch 一般在执行时间较长的可分解的任务中比较常用,算是同步工具类中最容易理解的一个。 示例一: 一个简单的例子:有一个 100 万的 excel 数据导出,需要从数据库中查出数据,并封装成 excel 数据然后输出到前端。 稍微分析可以知道这个操作肯定会很费时间,它的瓶颈出在查询数据库数据和写 excel 上,如果我每 10 万数据一页读数据库并写 excel 成一个文件,最后把所有的 excel 使用 zip 打包,使用多线程,由于读数据库并不会加锁,性能将会有一个量级的提升(有实践过),这时会有一个问题,我启动多个线程后

同步工具类 CountDownLatch 和 CyclicBarrier

一曲冷凌霜 提交于 2019-12-05 00:51:38
在开发中,一些异步操作会明显加快执行速度带来更好的体验,但同时也增加了开发的复杂度,想了用好多线程,就必须从这些方面去了解 线程的 wait() notify() notifyall() 方法 线程异步返回 Future ThreadLocal 类 线程池 ThreadPoolExecutor 同步工具类 CountDownLatch , CyclicBarrier , Semaphore , Phaser , Exchanger 估计上面每一个对于 2~3 年的 java 同学来说都是恶梦,比较难以理解,本文简单说下 CountDownLatch 和 CyclicBarrier CountDownLatch CountDownLatch 一般在执行时间较长的可分解的任务中比较常用,算是同步工具类中最容易理解的一个。 示例一: 一个简单的例子:有一个 100 万的 excel 数据导出,需要从数据库中查出数据,并封装成 excel 数据然后输出到前端。 稍微分析可以知道这个操作肯定会很费时间,它的瓶颈出在查询数据库数据和写 excel 上,如果我每 10 万数据一页读数据库并写 excel 成一个文件,最后把所有的 excel 使用 zip 打包,使用多线程,由于读数据库并不会加锁,性能将会有一个量级的提升(有实践过),这时会有一个问题,我启动多个线程后

同步工具类 CountDownLatch 和 CyclicBarrier

喜你入骨 提交于 2019-12-05 00:40:20
在开发中,一些异步操作会明显加快执行速度带来更好的体验,但同时也增加了开发的复杂度,想了用好多线程,就必须从这些方面去了解 线程的 wait() notify() notifyall() 方法 线程异步返回 Future ThreadLocal 类 线程池 ThreadPoolExecutor 同步工具类 CountDownLatch , CyclicBarrier , Semaphore , Phaser , Exchanger 估计上面每一个对于 2~3 年的 java 同学来说都是恶梦,比较难以理解,本文简单说下 CountDownLatch 和 CyclicBarrier CountDownLatch CountDownLatch 一般在执行时间较长的可分解的任务中比较常用,算是同步工具类中最容易理解的一个。 示例一: 一个简单的例子:有一个 100 万的 excel 数据导出,需要从数据库中查出数据,并封装成 excel 数据然后输出到前端。 稍微分析可以知道这个操作肯定会很费时间,它的瓶颈出在查询数据库数据和写 excel 上,如果我每 10 万数据一页读数据库并写 excel 成一个文件,最后把所有的 excel 使用 zip 打包,使用多线程,由于读数据库并不会加锁,性能将会有一个量级的提升(有实践过),这时会有一个问题,我启动多个线程后

聊聊feign的RequestInterceptor

ぃ、小莉子 提交于 2019-12-02 10:10:19
序 本文主要研究一下feign的RequestInterceptor RequestInterceptor feign-core-10.2.3-sources.jar!/feign/RequestInterceptor.java public interface RequestInterceptor { /** * Called for every request. Add data using methods on the supplied {@link RequestTemplate}. */ void apply(RequestTemplate template); } RequestInterceptor接口定义了apply方法,其参数为RequestTemplate;它有一个抽象类为BaseRequestInterceptor,还有几个实现类分别为BasicAuthRequestInterceptor、FeignAcceptGzipEncodingInterceptor、FeignContentGzipEncodingInterceptor BasicAuthRequestInterceptor feign-core-10.2.3-sources.jar!/feign/auth/BasicAuthRequestInterceptor.java public class

PDF compress on CentOS

我怕爱的太早我们不能终老 提交于 2019-11-30 14:59:00
扫描出来的PDF文件都很大,8页12M+, 所以需要压缩. 本来想随便下载一个PDF工具,去做掉. 但是发现,大多数都收费. 也没仔细找免费工具. 去github上转了一圈,发现了一个项目,还不错. 原来12M的pdf文件, 压完了不超过3M. yum install ghostscript An interpreter for the PostScript language and for PDF. 2. compress-pdf https://github.com/jbenet/compress-pdf.git 挺简单的. 方便操作. compress-pdf filename outfilename 来源: https://my.oschina.net/joryqiao/blog/3112012

前端对图片进行本地压缩预览并上传实践

你说的曾经没有我的故事 提交于 2019-11-30 04:06:46
相信做过前端的小伙伴们都写过图片上传,最简单的方式是通过表单提交,一个<input type="file">加一个 <button type="submit"> ,外面包一层form就搞定了。( button默认的type是submit,这里可以省略,之所以特别写出来,是因为以前碰到过form标签里面写了一个<button>标签,一点击就莫名奇妙地把表单提交了,希望大家引以为戒 ) 但是表单提交会刷新整个页面,于是有心的朋友为了做无刷新的表单提交,可能就会搞一个 隐藏的iframe ,然后将 form标签的target 指向这个iframe,这样用户就感知不到页面的刷新。 更细心点的朋友可能会在<input type="file">加上一个 accept="image/*" 属性,使文件选择框只能选择图片,不过如果你在chrome上这样写可能会碰到窗口打开非常慢的情况,并不是电脑卡,根本原因是当打开文件选择器时,chrome会访问谷歌服务器来拉取图片的 mime-type ,但是因为天朝的科学上网机制,谷歌当然是访问不了的,所以会有几秒连接超时前的卡顿,如果你有速度够快的梯子,应该可以避免这种情况。比较适应国情的方法是直接在accept里面写上你需要的mime-type,只要是在chrome的白名单里面,就不会去访问谷歌啦,比如: <input type="file" name=