当前位置:  编程技术>综合
本页文章导读:
    ▪浏览器缓存        浏览器缓存 2.1.1. Expires 只要向浏览器输出过期时间HTTP协议头,不论是html还是动态脚本,都能被缓存。 HTML META <meta http-equive="Expires" content=" Mon, 10 Jan 2000 00:00:00 GMT"/> <meta ht.........
    ▪深入理解子类和父类之间关系        Java学习的第二篇总结!——子类和父类 深入分析,希望大家多多支持!       从内存角度去分析代码,可以从本质上理解一门语言!   子类从父类继承分成两种:     1.方法的继承: 方法.........
    ▪使用bat批处理脚本自动设置IP和IE代理      在不同的网络环境间切换时需要手动修改IP和IE代理设置,较为繁琐,可以通过编写相应的bat批处理脚本自动完成配置,做到一键切换。以下是一个示例:@echo off echo set ip... netsh interface ip set a.........

[1]浏览器缓存
    来源:    发布时间: 2013-11-10

 

浏览器缓存
2.1.1. Expires

只要向浏览器输出过期时间HTTP协议头,不论是html还是动态脚本,都能被缓存。

HTML META

				
<meta http-equive="Expires" content=" Mon, 10 Jan 2000 00:00:00 GMT"/>
<meta http-equive="Cache-Control" content="max-age=300"/>
<meta http-equive="Cache-Control" content="no-cache"/>
				
				

动态脚本

Expires: Mon, 10 Jan 2000 00:00:00 GMT
Cache-Control: max-age=300
Cache-Control: no-cache

header("Expires: " .gmdate ("D, d M Y H:i:s", time() + 3600 * 24 * 7). " GMT");
header("Cache-Control: max-age=300");
header("Cache-Control: no-cache");
				

很多web server都提供 Expires 模块

提示

有些浏览器可能不支持。

2.1.2. If-Modified-Since / Last-Modified

If-Modified-Since 小于 Last-Modified 返回 200

neo@neo-OptiPlex-780:/tmp$ curl -I http://www.163.com/
HTTP/1.1 200 OK
Server: nginx
Content-Type: text/html; charset=GBK
Transfer-Encoding: chunked
Vary: Accept-Encoding
Expires: Mon, 16 May 2011 08:12:05 GMT
Cache-Control: max-age=80
Vary: User-Agent
Vary: Accept
Age: 38
X-Via: 1.1 ls100:8106 (Cdn Cache Server V2.0), 1.1 lydx156:8106 (Cdn Cache Server V2.0)
Connection: keep-alive
Date: Mon, 16 May 2011 08:11:23 GMT
				

If-Modified-Since 大于 Last-Modified 返回 304

neo@neo-OptiPlex-780:/tmp$ curl -H "If-Modified-Since: Fri, 12 May 2012 18:53:33 GMT"  -I http://www.163.com/
HTTP/1.0 304 Not Modified
Content-Type: text/html; charset=GBK
Cache-Control: max-age=80
Age: 41
X-Via: 1.0 ls119:80 (Cdn Cache Server V2.0), 1.0 lydx154:8106 (Cdn Cache Server V2.0)
Connection: keep-alive
Date: Mon, 16 May 2011 08:11:14 GMT
Expires: Mon, 16 May 2011 08:11:14 GMT
				
2.1.3. ETag / If-None-Match
neo@neo-OptiPlex-780:/tmp$ curl -I http://images.example.com/test/test.html
HTTP/1.1 200 OK
Cache-Control: s-maxage=7200, max-age=900
Expires: Mon, 16 May 2011 09:48:45 GMT
Content-Type: text/html
Accept-Ranges: bytes
ETag: "1984705864"
Last-Modified: Mon, 16 May 2011 09:01:07 GMT
Content-Length: 22
Date: Mon, 16 May 2011 09:33:45 GMT
Server: lighttpd/1.4.26
				
neo@neo-OptiPlex-780:/tmp$ curl -H 'If-None-Match: "1984705864"' -I http://images.example.com/test/test.html
HTTP/1.1 304 Not Modified
Cache-Control: s-maxage=7200, max-age=900
Expires: Mon, 16 May 2011 09:48:32 GMT
Content-Type: text/html
Accept-Ranges: bytes
ETag: "1984705864"
Last-Modified: Mon, 16 May 2011 09:01:07 GMT
Date: Mon, 16 May 2011 09:33:32 GMT
Server: lighttpd/1.4.26
				
2.2. CDN/逆向代理缓存

具有代表性的逆向代理服务器:

  • Squid

  • Nginx

  • Varnish

  • Apache cache module

  • 其它逆向代理服务器

  • 一些提供cache的硬件设备

  • 最近几年出现了的 China Cache 服务商,也称CDN

  • 很多CDN厂商使用Squid 二次开发做为CDN节点,通过全球负载均衡使用分发

    这些CDN厂商主要做了一下二次开发

  • logs 日志集中

  • 流量限制

  • push,pull操作

  • url 刷新

  • s-maxage 与 max-age用法类似,s-maxage针对代理服务器缓存。同样适用于CDN

    s-maxage 与 max-age 组合使用可以提高CDN性能

    2.3. 负载均衡设备

    F5 Big-IP, Array 等设备都提供硬件加速,其原理与squid, apache提供的功能大同小异

    其中Array 页面压缩采用硬件压缩卡实现,SSL加速也采用硬件实现

    2.4. WEB服务器缓存

    例如,通过配置apache实现自身 cache

    2.5. 应用程序缓存

    在这个领域百花齐放,相信你一定能找到适合你的。这些cache会为你提供一些api,来访问它。

    代表性的 memcached 据我所是sina广泛使用,腾讯也曾经使用过后来开发了TC(Tencent Cache),台湾雅虎则使用APC Cache。

    另外模板引擎也有自己的缓存系统

    2.6. 数据库缓存

    数据库本身就有这个配置选项,如果需要你仍然可以在数据库前面加一道Cache。

    例如PostgreSQL, MySQL 都提供参数可以将memcached编译到它内部



    已有 0 人发表留言,猛击->>这里<<-参与讨论


    ITeye推荐
    • —软件人才免语言低担保 赴美带薪读研!—




        
    [2]深入理解子类和父类之间关系
        来源:    发布时间: 2013-11-10

     

    Java学习的第二篇总结!——子类和父类 深入分析,希望大家多多支持!    

     

    从内存角度去分析代码,可以从本质上理解一门语言!

     

    子类从父类继承分成两种:

     

     

    1.方法的继承:

    方法的继承,父类直接把自己的方法转移到子类中去,当然前提是父类的方法修饰符的访问范围是子类可以访问的范围,但是如果子类已经重写了父类的方法,这时候这个方法就不能重父类转移到子类中。

     

     

    2.成员变量的继承 :

    成员变量就会有点奇妙了,它不会从父类转移到子类,而是保留在父类中,这就会出现,子类和父类可能同时拥有两个相同名字的变量。

     

    下面用一段代码来说明这种相对比较复杂的关系:

     

     

     

    package com.text;

    public class Test {
    
    	public static void main(String[] args) {
    		Father a = new Father();
    		Chilren b = new Chilren();
    		Father c = new Chilren();
    		a.getAge();
    		System.out.println(a.age);
    		b.getAge();
    		System.out.println(b.age);
    		c.getAge();
    		System.out.println(c.age);
    	}
    }
    
    class Father {
    	int age = 40;
    
    	public void getAge() {
    		System.out.println(age);
    	}
    }
    
    class Chilren extends Father {
    	int age = 18;
    
    	public void getAge() {
    		System.out.println(age);
    	}
    }
    

     输出

    40
    40
    18
    18
    18
    40

     

     

    前四个结果可以理解,但是最后两个结果有人可能会问为什么结果会不一样,这段代码就体现了,成员变量继承和方法继承的区别。

     

     

    可以得出结论: 

    Father c = new Chilren();

     在以上父类引用指向子类对象情况下,访问变量看的是引用类型,所以c.age是父类的成员变量,而c.getAge()访问到的是子类Chilren的方法,所以在这个方法中用到的age变量是Chilren的变量

     

     

    反正一句话,访问变量看声明,访问方法看实际对象类型(new出来的类型)

     

     

    接下来对代码做部分修改

     

    public static void main(String[] args) {

    		Chilren b = new Chilren();
    		Father c = b
    		System.out.println(b.age);
    		System.out.println(c.age);
    	}

     

    输出
    18
    40

     

         b 和c 两个引用都是指向内存中同一个对象,但是打印出来的结果却是不同,这就说明了,内存中保存了两个 age的值,一个是18 一个是40 。

     

         这里就会产生一些疑问,在内存中他们是怎么存储的?这时候会想到有个super关键字,通过super. 可以访问到父类的变量和方法,这里有人会说:“super.代表的就是一个父类对象,因为他指向父类”  之前我也是这么想,但是看过一些书后知道其实不是这样

     

          其实super.不是“东西”,说道super.自然会想到this.,有人把他们归为同类,其实他们大大不同

     

    this:是一个真真实实对象,代表的就是当前对象,可以用 return this;  去返回一个对象。

     

    super:不能一个对象,不是指向父类对象的意思,super只是修饰了他后边的内容,告诉JVM,后面这部                          分内容不是当前对象所属类的内容而已,若用return super,JVM是不允许的,是一种错误的语法。

     

     

    		Chilren b = new Chilren();
    		Father c = b

     回归到上面这段代码,这里并不是说内存中有两个对象 b 和 c ,内存中其实就只有一个 b对象 ,只是c 不仅有自己的实例 变量,同时也存在父类所定义的全部实例变量。

     

            所以可以得出结论:在实例化一个子类的同时,系统会给子类所有实例变量分配内存,也会给他的父类的实例变量分配内存,及时父子类中存在重名的实例变量,也会两个都分配内存的,这个时候子类只是隐藏了父类的这个变量,但还是会给它分配内存,然后可以用super来访问属于父类的变量。

     

     

     


     



    已有 0 人发表留言,猛击->>这里<<-参与讨论


    ITeye推荐
    • —软件人才免语言低担保 赴美带薪读研!—




        
    [3]使用bat批处理脚本自动设置IP和IE代理
        来源: 互联网  发布时间: 2013-11-10

    在不同的网络环境间切换时需要手动修改IP和IE代理设置,较为繁琐,可以通过编写相应的bat批处理脚本自动完成配置,做到一键切换。以下是一个示例:


    @echo off
    
    echo set ip...
    netsh interface ip set address name="本地连接" source=static addr=xxx.xxx.xxx.xxx mask=xxx.xxx.xxx.xxx
    
    echo set gateway....
    netsh interface ip set address name="本地连接" source=static gateway=xxx.xxx.xxx.xxx gwmetric=1
    
    echo set IE proxy: proxy.sony.com.cn:8080...
    reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnable /t REG_DWORD /d 1 /f
    reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer /d "xxx.xxx.xxx.xxx:80" /f
    reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyOverride /t REG_SZ /d "" /f
    
    echo flash...
    ipconfig /flushdns


    其中xxx.xxx.xxx.xxx为对应属性的IP。如第11行中的"xxx.xxx.xxx.xxx:80"为目标代理服务器的IP和端口(80),两者都可以根据自己的环境修改。

    作者:bluishglc 发表于2013-1-8 13:49:52 原文链接
    阅读:5 评论:0 查看评论

        
    最新技术文章:
    ▪error while loading shared libraries的解決方法    ▪版本控制的极佳实践    ▪安装多个jdk,多个tomcat版本的冲突问题
    ▪简单选择排序算法    ▪国外 Android资源大集合 和个人学习android收藏    ▪.NET MVC 给loading数据加 ajax 等待loading效果
    ▪http代理工作原理(3)    ▪关注细节-TWaver Android    ▪Spring怎样把Bean实例暴露出来?
    ▪java写入excel2007的操作    ▪http代理工作原理(1)    ▪浅谈三层架构
    ▪http代理工作原理(2)    ▪解析三层架构……如何分层?    ▪linux PS命令
    ▪secureMRT Linux命令汉字出现乱码    ▪把C++类成员方法直接作为线程回调函数    ▪weak-and算法原理演示(wand)
    ▪53个要点提高PHP编程效率    ▪linux僵尸进程    ▪java 序列化到mysql数据库中
    ▪利用ndk编译ffmpeg    ▪活用CSS巧妙解决超长文本内容显示问题    ▪通过DBMS_RANDOM得到随机
    ▪CodeSmith 使用教程(8): CodeTemplate对象    ▪android4.0 进程回收机制    ▪仿天猫首页-产品分类
    ▪从Samples中入门IOS开发(四)------ 基于socket的...    ▪工作趣事 之 重装服务器后的网站不能正常访...    ▪java序列化学习笔记
    ▪Office 2010下VBA Addressof的应用    ▪一起来学ASP.NET Ajax(二)之初识ASP.NET Ajax    ▪更改CentOS yum 源为163的源
    ▪ORACLE 常用表达式    ▪记录一下,AS3反射功能的实现方法    ▪u盘文件系统问题
    ▪java设计模式-观察者模式初探    ▪MANIFEST.MF格式总结    ▪Android 4.2 Wifi Display核心分析 (一)
    ▪Perl 正则表达式 记忆方法    ▪.NET MVC 给loading数据加 ajax 等待laoding效果    ▪java 类之访问权限
    ▪extjs在myeclipse提示    ▪xml不提示问题    ▪Android应用程序运行的性能设计
    ▪sharepoint 2010 自定义列表启用版本记录控制 如...    ▪解决UIScrollView截获touch事件的一个极其简单有...    ▪Chain of Responsibility -- 责任链模式
    ▪java写入excel2007的操作    ▪http代理工作原理(1)    ▪浅谈三层架构 iis7站长之家
    ▪kohana基本安装配置    ▪MVVM开发模式实例解析    ▪sharepoint 2010 设置pdf文件在浏览器中访问
    ▪spring+hibernate+事务    ▪MyEclipse中文乱码,编码格式设置,文件编码格...    ▪struts+spring+hibernate用jquery实现数据分页异步加...
    ▪windows平台c++开发"麻烦"总结    ▪Android Wifi几点    ▪Myeclipse中JDBC连接池的配置
    ▪优化后的冒泡排序算法    ▪elasticsearch RESTful搜索引擎-(java jest 使用[入门])...    ▪MyEclipse下安装SVN插件SubEclipse的方法
    ▪100个windows平台C++开发错误之七编程    ▪串口转以太网模块WIZ140SR/WIZ145SR 数据手册(版...    ▪初识XML(三)Schema
    ▪Deep Copy VS Shallow Copy    ▪iphone游戏开发之cocos2d (七) 自定义精灵类,实...    ▪100个windows平台C++开发错误之八编程
    ▪C++程序的内存布局    ▪将不确定变为确定系列~Linq的批量操作靠的住...    ▪DIV始终保持在浏览器中央,兼容各浏览器版本
    ▪Activity生命周期管理之三——Stopping或者Restarti...    ▪《C语言参悟之旅》-读书笔记(八)    ▪C++函数参数小结
    ▪android Content Provider详解九    ▪简单的图片无缝滚动效果    ▪required artifact is missing.
    ▪c++编程风格----读书笔记(1)    ▪codeforces round 160    ▪【Visual C++】游戏开发笔记四十 浅墨DirectX教程...
    ▪【D3D11游戏编程】学习笔记十八:模板缓冲区...    ▪codeforces 70D 动态凸包    ▪c++编程风格----读书笔记(2)
    ▪Android窗口管理服务WindowManagerService计算Activity...    ▪keytool 错误: java.io.FileNotFoundException: MyAndroidKey....    ▪《HTTP权威指南》读书笔记---缓存
    ▪markdown    ▪[设计模式]总结    ▪网站用户行为分析在用户市场领域的应用
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3