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

前段时间看了个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.面向对象程序设计语言中的继承

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

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

入门级:怎么使用C#进行套接字编程(一)

 

翻译一篇简单的文章学习下基础,此文针对我等对socket只听说未尝试阶段的水平。

How to C# Socket programming

C#通过他的命名空间像System.Net和System.Net.Sockets简化网络编程。套接字是指运行在同一个网络中的两个程序之间(服务端程序和客户端程序)进行来回通信(双向的)线路的终端节点。在C#里要用套接字应用通信我们需要有两个应用程序。一个服务端程序(server)和一个客户端程序(client)。

C#服务端套接字程序:C#服务端套接字程序运行在一台有绑定端口号并监听客户端请求的电脑上。
C#客户端套接字程序:C#客户端套接字程序必须得知道运行服务端套接字程序电脑的ip地址(或主机名)和指定监听客户端请求
的端口号。
一旦服务端和客户端的连接建立,他们便可以通过他们的套接字进行通信(读和写)。

在C#里用来套接字编程的通信协议有两种类型,他们分别是TCP/IP(传输控制协议/网际协议)通信,UDP/IP(用户数据报文协议/网际协议)通信。
在接下来的部分我们将在服务端套接字程序和客户端套接字程序之间使用tcp/ip通信协议进行通信。


以上图片展示了服务端和客户端进行通信的界面。
C#服务端套接字程序:服务端套接字程序通过C#控制台程序运行。这里的服务端监听着客户端的请求,并且当C#服务端获得客户端套接字的请求时,服务端向客户端发出一个响应。点击下面的链接查看服务端套接字程序的详细信息。

C#客户端套接字程序:C#客户端套接字程序是一个窗体程序。当客户端程序执行时,他将建立到服务端程序的链接并向服务端发出请求,同时他也接受来自服务端的响应。点击下面的链接查看客户端套接字编程的详细信息。

如何运行该程序?
这个C#套接字程序有两部分组成。
1、服务端套接字程序
2、客户端套接字程序
当你完成编码并生成服务端和客户端程序后,首先你必须从命令提示符中启动C#服务套接字程序,然后在你的服务程序正在运行的地方也就是DOS窗口里你将获得一个服务已启动的消息。
下一步就是在同一个网络里的同一台台电脑或其他的电脑上启动客户端套接字程序。当你启动客户端套接字程序时,他会建立到服务端的链接并在客户端窗口里显示客户端已启动的消息。同时你会在服务端的窗口里看到,已经接受来自客户端的链接的消息。

现在你的服务端套接字程序和客户端套接字程序已经建立连接并可以通信了。如果你想使服务端和客户端再次进行通信,点击客户端程序的按钮,然后你会看到新的消息显示在服务端和客户端的程序里。

入门级:怎么使用C#进行套接字编程(二)

快快乐乐敲代码,做一个专业的码农!
 
标签: socket

【ACM】杭电ACM题一直WA求高手看看代码

数据测试了好几个都没问题,可以就是WA不让过,检测了2个小时还是没发现有什么问题T_T!!求高手看看代码,小弟在此谢谢各位哦!

#include <stdio.h>
#include <stdlib.h>
#define max 1000
/* run this program using the console pauser or add your own getch, system("pause") or input loop */ int main(int argc, char *argv[]) {
int stu[max]; //学生的ID
int stur[max]; //学生的成绩
int rank,jack_id; //查找的ID
int flag[101];
int i,jack,n;
freopen("in.txt","r",stdin);
while(scanf("%d",&jack)!=EOF){
for( i=0 ; i<max ;i++) {
stu[i]=0;
stur[i]=0;
}
for( i=0 ; i<101 ;i++) {
flag[i]=1;
}
for( i=0 ; ;i++) {
scanf("%d%d",&stu[i],&stur[i]);
if(stu[i]==0&&stur[i]==0) break;
}
n=i;
for( i=0 ; i<n ; i++) {
if(jack==stu[i]) {
jack_id=i;
}
}
rank=1;
for( i=0 ; i<n ; i++) {
if((stur[i]>stur[jack_id])&&(flag[stur[i]]!=0)){ //找到比自己大的成绩rank++
rank++;
flag[stur[i]]=0;
} }
printf("%d\n",rank); } return 0;
}
 
 
 
分类: 总结汇总

HTTP压缩算法SDCH的更多相关文章

  1. GZip、deflate和sdch压缩(网摘整理)

    GZip和deflate: gzip是一种数据格式,默认且目前仅使用deflate算法压缩data部分:deflate是一种压缩算法,是huffman编码的一种加强. deflate与gzip解压的代 ...

  2. 从python爬虫引发出的gzip,deflate,sdch,br压缩算法分析

    今天在使用python爬虫时遇到一个奇怪的问题,使用的是自带的urllib库,在解析网页时获取到的为b'\x1f\x8b\x08\x00\x00\x00\x00...等十六进制数字,尝试使用chard ...

  3. ZIP压缩算法详细分析及解压实例解释

    最近自己实现了一个ZIP压缩数据的解压程序,觉得有必要把ZIP压缩格式进行一下详细总结,数据压缩是一门通信原理和计算机科学都会涉及到的学科,在通信原理中,一般称为信源编码,在计算机科学里,一般称为数据 ...

  4. LZ77压缩算法编码原理详解(结合图片和简单代码)

    前言 LZ77算法是无损压缩算法,由以色列人Abraham Lempel发表于1977年.LZ77是典型的基于字典的压缩算法,现在很多压缩技术都是基于LZ77.鉴于其在数据压缩领域的地位,本文将结合图 ...

  5. Java数据结构之对称矩阵的压缩算法---

    特殊矩阵 特殊矩阵是指这样一类矩阵,其中有许多值相同的元素或有许多零元素,且值相同的元素或零元素的分布有一定规律.一般采用二维数组来存储矩阵元素.但是,对于特殊矩阵,可以通过找出矩阵中所有值相同元素的 ...

  6. HBase中的压缩算法比较 GZIP、LZO、Zippy、Snappy [转]

    网址: http://www.cnblogs.com/panfeng412/archive/2012/12/24/applications-scenario-summary-of-compressio ...

  7. LZW压缩算法

    转载自http://www.cnblogs.com/jillzhang/archive/2006/11/06/551298.html 记录此处仅自己供学习之用 lzw解压缩算法: 用单个字符初始化字符 ...

  8. atitit.压缩算法 ZLib ,gzip ,zip 最佳实践 java .net php

    atitit.压缩算法 ZLib ,gzip ,zip   最佳实践  java .net php 1. 压缩算法的归类::: 纯算法,带归档算法 1 2. zlib(适合字符串压缩) 1 3. gz ...

  9. lucene底层数据结构——FST,针对field使用列存储,delta encode压缩doc ids数组,LZ4压缩算法

    参考: http://www.slideshare.net/lucenerevolution/what-is-inaluceneagrandfinal http://www.slideshare.ne ...

随机推荐

  1. Android复制WIN8点击下沉倾斜系统瓷砖效果

    ※效果 ※使用说明 Java代码 import android.app.Activity; import android.os.Bundle; import android.widget.Toast; ...

  2. jvm对大对象分配内存的特殊处理(转)

    前段日子在和leader交流技术的时候,偶然听到jvm在分配内存空间给大对象时,如果young区空间不足会直接在old区切一块过去.对于这个结论很好奇,也比较怀疑,所以就上网搜了下,发现还真有这么回事 ...

  3. Poj Roadblocks(次短路)

    Description Bessie has moved to a small farm and sometimes enjoys returning to visit one of her best ...

  4. uva 11987 Almost Union-Find (并检查集合)

    标题效果: 三操作. 1. 合并两个集合 2.代替所述第二组的第一个元素 3.输出设置数量,并.. IDEAS: 使用p该元素的记录数,其中集合,建立并查集. #include <cstdio& ...

  5. 【高德地图API】如何获得行政区域?如何制作行政规划图?

    原文:[高德地图API]如何获得行政区域?如何制作行政规划图? 什么是行政规划图?如何获得每个行政区域的边界轮廓图?举例:重庆市 江北区.如图: 官方类参考:http://developer.amap ...

  6. BCM策略路由交换芯片

    BCM几个交换芯片的寄存器和相关的路由 EGR_L3_NEXT_HOP.EGR_L3_INTF.ING_L3_NEXT_HOP BCM XGS系列SDK中和路由相关的几个命令 l3 l3table. ...

  7. 【百度地图API】——国内首款团购网站的地图插件

    原文:[百度地图API]--国内首款团购网站的地图插件 摘要: 本文介绍了一款应用在团购网站上的地图插件,适用于目前非常流行的团购网站.使用这款地图插件,无需任何编程技术,你就把商家的位置轻松地标注在 ...

  8. cfs

    转自:http://www.cnblogs.com/openix/p/3254394.html 下文中对于红黑树或链表组织的就绪队列,统称为用队列组织的就绪队列.                    ...

  9. Codeforces 461B Appleman and Tree(木dp)

    题目链接:Codeforces 461B Appleman and Tree 题目大意:一棵树,以0节点为根节点,给定每一个节点的父亲节点,以及每一个点的颜色(0表示白色,1表示黑色),切断这棵树的k ...

  10. Linux常用命令汇总-速查

    对Linux新手有用的20个命令 对中级Linux用户有用的20个命令 对Linux专家非常有用的20个命令 20个最受欢迎的Linux命令 20个有趣的Linux命令