程序设计中使用的那些共享方法或者技术

简介: 前段时间看了个paper是讲述谷歌浏览器使用的压缩方法SDCH,其实原理还是比较简单的。 看了论文后就想总结一下程序中使用的一些共享方法或者技术吧。 1.Google最近发明的HTTP压缩算法SDCH   SDCH的全称是Shared Dictionary Compression over HTTP的简写。

前段时间看了个paper是讲述谷歌浏览器使用的压缩方法SDCH,其实原理还是比较简单的。

看了论文后就想总结一下程序中使用的一些共享方法或者技术吧。

1.Google最近发明的HTTP压缩算法SDCH

  SDCH的全称是Shared Dictionary Compression over HTTP的简写。

  SDCH的基于以下的事实:

  (1)在HTTP的传输文件之间有大量重复冗余的数据,从服务器端一次又一次的传输到请求端。

  (2)服务器端可以对这些文件之间的大量相同数据建立字典

  (3)客户端第一次访问时,请求字典与差异文件。之后每次访问,都只需要传输差异文件,结合本地的字典就可以还原相应文件。

2.HTTP中的压缩算法Gzip

  Gzip中使用的算法是LZ77算法和哈夫曼编码,是单个文件内部文本信息的前后参照,共享信息实现压缩。

  LZ77算法:如果文件中有两块内容相同,那么只要知道前一块的位置和大小,我们就可以确定后一块的内容。

    (1) http://jiurl.yeah.ne   http://jiurl.nease.net

         (2) http://jiurl.yeah.net  (http://jiurl.)nease(.net)

           (3) http://jiurl.yeah.net (22,13)nease(23,4)

  哈夫曼编码:是一种可变长度编码,实现最短的文本编码。其中,出现频率高的字符串使用短编码,出现频率低的使用长编码。

3.设计模式之单例模式、享元模式

  java单例模式:http://www.cnblogs.com/xudong-bupt/p/3433643.html

  单例模式是在系统中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。

  享元模式它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于当大量物件只是重复因而导致无法令人接受的使用大量内存。

4.数据库连接池

  数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。

  数据库连接池正是针对这个问题提出来的。数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而再不是重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。

5.格式信函发生器

   看如下的精悍短小的垃圾短信: 

  上面这种就是所谓的格式信函发生器,中间的大部分文字是不变的,只有一小部分信息会更新。

  编程中要是发送大量类似的邮件或者短信等就是这种情况啦。

6.布隆过滤器

  布隆过滤器在一定意义上也可以说成是共享数据吧。布隆过滤去主要用在大量数据的过滤、判定存在等情况。

  布隆过滤器中每个要过滤的对象或者字符串都会使用多个哈希函数的值置位同一个bit-vector

  举例说明:

    有1百万个已经存在的URL,要求任意给定一个URL判定是否在为这1百万个URL中,错误率低于1%。这种情况就是布隆过滤器的典型应用。

    设定n=1000000,bit-vector的位数为ver,哈希函数个数为k个,错误率为err。

    所以布隆过滤器错误率为:

        

7.报表制作(模板)软件

   ireport或者jasperreports是一个报表制作工具。

  一般的网上看到的数据,有时候网站提供导出功能,如WORD/PDF/EXCEL等。

  下图就是使用ireport制作的一个报表模板:   

其中$F{BILLNO}是数据源中的一个字段,$P表示在生成报表时程序传入的参数,new java.util会显示打印报表时的系统时间。

  下图是根据具体的数据源生成的报表:

  

8.面向对象程序设计语言中的继承

  这个使用面向对象程序设计语言的码农都知道。

  面向对象程序设计语言中的继承主要是用来减少子类的定义方法、变量的工作量,实现方法、变量的共享。

相关文章
|
9天前
|
机器学习/深度学习 存储 算法
程序设计:从基础到实践的艺术探索
程序设计:从基础到实践的艺术探索
10 0
|
2月前
|
算法 数据安全/隐私保护 C++
【软件设计师备考 专题 】程序设计的核心:结构化程序设计与面向对象程序设计(一)
【软件设计师备考 专题 】程序设计的核心:结构化程序设计与面向对象程序设计
37 0
|
2月前
|
设计模式 机器学习/深度学习 存储
|
2月前
|
SQL 算法 测试技术
【软件设计师备考 专题 】程序设计的核心:结构化程序设计与面向对象程序设计(二)
【软件设计师备考 专题 】程序设计的核心:结构化程序设计与面向对象程序设计
44 0
|
2月前
|
算法 测试技术 程序员
程序设计的任务与实现
程序设计是一项复杂且富有挑战性的任务,它要求程序员不仅掌握编程语言的基础知识,还需要具备逻辑思考、问题分析和解决问题的能力。在程序设计的过程中,我们会遇到各种各样的任务,包括需求分析、算法设计、代码编写、测试与调试等。本文将详细讨论程序设计的任务,并通过一个实例代码来展示其实现过程。
23 1
|
2月前
|
Python
程序设计 (2)
程序设计 (2)
14 0
|
2月前
|
算法 开发者
程序设计 (4)
程序设计 (4)
14 0
|
2月前
|
程序员
程序设计 (3)
程序设计 (3)
17 0
|
6月前
|
C++
20 C++ - 面向对象程序设计案例
20 C++ - 面向对象程序设计案例
53 0
|
7月前
|
人工智能 算法 数据挖掘
什么是程序设计
一、什么是程序设计 程序设计是指通过编写、测试和维护计算机程序来解决问题或实现特定功能的过程。它涉及到确定问题的需求、设计算法、选择合适的编程语言、编写代码、调试和测试程序等步骤。程序设计的目标是创建高效、可靠、易于理解和维护的软件。 二、程序设计具有以下特点 1. 抽象性:程序设计是一种高度抽象的活动,它涉及到将实际问题转化为计算机可以理解和执行的指令。 2. 逻辑性:程序设计需要遵循严格的逻辑结构和规则,以确保程序的正确性和可靠性。逻辑思维和分析能力是程序设计的重要组成部分。 3. 创造性:程序设计是一种创造性的活动,程序员需要在解决问题的过程中提出新的思路和方法,以实现更好的效果。
307 0