当前位置:  编程技术>综合
本页文章导读:
    ▪Cache-control缓存控制      网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。 其作用根据不同的重新浏览方式分为以下几种情况: (1) 打开.........
    ▪Java/C#面试常见问题汇总       1.概述反射和序列化 反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对.........
    ▪iOS推送实现      iOS推送想必大家都很熟悉,在App没有在运行有新消息时顶部状态栏会出现提示信息,锁屏状态下会出现消息提示框,在App图标上也会有红色的角标。 当然这些提示方式用户是可以在设置中心.........

[1]Cache-control缓存控制
    来源:    发布时间: 2013-11-10
网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。
其作用根据不同的重新浏览方式分为以下几种情况:
(1) 打开新窗口如果指定cache-control的值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。而如果指定了max-age值,那么在此值内的时间里就不会重新访问服务器,例如: Cache-control: max-age=5 表示当访问此网页后的5秒内再次访问不会去服务器。
(2) 在地址栏回车如果值为private或must-revalidate(和网上说的不一样),则只有第一次访问时会访问服务器,以后就不再访问。如果值为no-cache,那么每次都会访问。如果值为max-age,则在过期之前不会重复访问。
(3) 按后退按扭如果值为private、must-revalidate、max-age,则不会重访问,而如果为no-cache,则每次都重复访问。
(4) 按刷新按扭无论为何值,都会重复访问 当指定Cache-control值为“no-cache”时,访问此页面不会在Internet临时文章夹留下页面备份。另外,通过指定“Expires”值也会影响到缓存。例如,指定Expires值为一个早已过去的时间,那么访问此网时若重复在地址栏按回车,那么每次都会重复访问: Expires: Fri, 31 Dec 1999 16:00:00 GMT 在ASP中,可以通过Response对象的Expires、ExpiresAbsolute属性控制Expires值;通过Response对象的CacheControl属性控制Cache-control的值,例如: Response.ExpiresAbsolute = #2000-1-1# ' 指定绝对的过期时间,这个时间用的是服务器当地时间,会被自动转换为GMT时间 Response.Expires = 20 ' 指定相对的过期时间,以分钟为单位,表示从当前时间起过多少分钟过期。 Response.CacheControl = "no-cache" Expires值是可以通过在Internet临时文件夹中查看临时文件的属性看到的。


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


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




    
[2]Java/C#面试常见问题汇总
    来源: 互联网  发布时间: 2013-11-10

1.概述反射和序列化

反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性

序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。

 2.用sealed修饰的类有什么特点

sealed 修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其它类的基类,则会发生编译时错误。

密封类不能同时为抽象类。

sealed 修饰符主要用于防止非有意的派生,但是它还能促使某些运行时优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。

3.面向对象的思想主要包括什么?

     继承 多态 封装
    封装:用抽象的数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型内部。 继承:子类拥有父类的所有数据和操作。 多态:一个程序中同名的不同方法共存的情况。有两种形式的多态– 重载与重写

4.什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?

应用程序域可以理解为一种轻量级进程。起到安全的作用。占用资源小。

基于公共语言运行库的语言编译器开发的代码称为托管代码;

装箱和拆箱发生值类型向引用类型转换,和引用类型向值类型转  重载:同一个函数参数不同

5.列举一下你所了解的XML技术及其应用 

xml可以用来做网页(xslt) xml可以当作数据库 xml可以用来保存对象的系列化

6.如何理解委托?

委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。

    委托具有以下特点:

委托类似于 C++ 函数指针,但它是类型安全的。委托允许将方法作为参数进行传递。

委托可用于定义回调方法。

委托可以链接在一起;例如,可以对一个事件调用多个方法。

方法不需要与委托签名精确匹配。

7.C#中的接口和类有什么异同。

接口不能实例化;
接口中的方法没有方法体{};
继承接口的类一定要实现接口中定义的方法;
类可以实例化,可以定义自己的字段,属性,方法等等;
类可以继承多个接口,但只能继承一个类!

8.接口和抽象类的区别是什么?

答:接口用于规范,抽象类用于共性。接口中只能声明方法,属性,事件,索引器。而抽象类中可以有方法的实现,也可以定义非静态的类变量。抽象类是 类,所以只能被单继承,但是接口却可以一次实现多个。抽象类可以提供某些方法的部分实现,接口不可以.抽象类的实例是它的子类给出的。接口的实例是实现接 口的类给出的。在抽象类中加入一个方法,那么它的子类就同时有了这个方法。而在接口中加入新的方法,那么实现它的类就要重新编写(这就是为什么说接口是一 个类的规范了)。接口成员被定义为公共的,但抽象类的成员也可以是私有的、受保护的、内部的或受保护的内部成员(其中受保护的内部成员只能在应用程序的代 码或派生类中访问)。此外接口不能包含字段、构造函数、析构函数、静态成员或常量。

9.进程和线程分别怎么理解?

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.
    线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行。一个程序至少有一个进程,一个进程至少有一个线程.

10.什么是SOAP,有哪些应用。

答:SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),可以允许任何类型的对象或代码,在任何平台上,以任何一直语言相互通信。

11. C#语言中,值类型和引用类型有何不同?

  【解答】

1.值类型和引用类型的区别在于,值类型的变量直接存放实际的数据,而引用类型的变量存放的则是数据的地址,即对象的引用。

2.值类型变量直接把变量的值保存在堆栈中,引用类型的变量把实际数据的地址保存在堆栈中,而实际数据则保存在堆中。注意,堆和堆栈是两个不同的概念,在内存中的存储位置也不相同,堆一般用于存储可变长度的数据,如字符串类型;而堆栈则用于存储固定长度的数据,如整型类型的数据int(每个int变量占用四个字节)。由数据存储的位置可以得知,当把一个值变量赋给另一个值变量时,会在堆栈中保存两个完全相同的值;而把一个引用变量赋给另一个引用变量,则会在堆栈中保存对同一个堆位置的两个引用,即在堆栈中保存的是同一个堆的地址。

3.在进行数据操作时,对于值类型,由于每个变量都有自己的值,因此对一个变量的操作不会影响到其它变量;对于引用类型的变量,对一个变量的数据进行操作就是对这个变量在堆中的数据进行操作,如果两个引用类型的变量引用同一个对象,实际含义就是它们在堆栈中保存的堆的地址相同,因此对一个变量的操作就会影响到引用同一个对象的另一个变量。

12. 结构和类的区别是什么?

1) 结构是一个值类型,保存在栈上,而类是一个引用类型,保存在受管制的堆上

    
[3]iOS推送实现
    来源: 互联网  发布时间: 2013-11-10

iOS推送想必大家都很熟悉,在App没有在运行有新消息时顶部状态栏会出现提示信息,锁屏状态下会出现消息提示框,在App图标上也会有红色的角标。

当然这些提示方式用户是可以在设置中心定制的。

下面我就结合网上教程和自己的实践来详细讲解一下在iOS上实现推送通知。

开始之前先说明一下要完成应用的推送先要准备的东西:

一.因为iOS应用在模拟器上无法实现推送通知所以我们要在真机上测试我们的应用,有朋友会想这不很easy吗,只要有真机测试证书不就OK了。其实不然,iOS应用要实现推送功能就必须使用配置了推送通知功能的证书。

二.因为我这里测试的推送服务器是用的国外的一个免费的推送测试服务器(https://api.parse.com)

三.上面两步只是准备工作,这里才是建立我们App的地方,怎样准备好了吗,抖抖精神继续往下看吧。


先说申请测试证书:

1、打开钥匙串访问程序

2.钥匙串访问>证书助理>从证书颁发机构请求证书

3.在用户电子邮件地址添入你的邮箱,常用名称写上你的名字,CA电子邮件地址不填也行,下面选存储到磁盘,然后继续

4.默认是保存到桌面上,成功的话会生成一个CertificateSigningRequest.certSigningRequest的文件


5.下面是到开发者中心请求证书。在浏览器打开https://developer.apple.com登陆开发者中心

6.在Certificates一栏的右边点击Request Certificate按钮


7.点击选择文件处选择刚才保存到桌面上的那个文件,然后点Submit

8.点Download按钮把生成的cer文件下载到本地,双击它会加入到钥匙串中


9.点New App IDs创建一个新的App ID


在填写上面那一栏的时候可以随意,不过需要你记住,最下面那个Bundle Identifier填写的时候一定注意不要使用通配符*,填完了点Submit


10.等等,还需要配置App ID,点App ID最右边的Configure


勾选Enable for Apple Push Notification service,这里有两种Push SSL Certificate上面那个是开发用的下面那个是上线产品用的我们这只是测试所以只配置上面那个就可以了


继续,

继续,

11.下面安装这个证书,双击它安装到系统,安装完后我们需要提取p12文件,

选中这个证书,在文件>导出项目中导出p12文件,导出时会让你输入密码,无视它直接下一步。



12.这一步来创建真机测试用的mobileprovision文件了,还回到刚才网页上

.点左边Provisioning选项卡然后点右边New Profile按钮创建一个新的profile文件


这一步完成后刷新一下把生成的profile文件下载下来拽到XCode图标上安装,这时会自动打开Xcode的Organizer,别忘了也拽到你的iPhone或iPad上进行安装


上面这一大堆只是第一步,下面说说第二步:

这里是设置我们应用的推送服务器的,点开https://api.parse.com注册一个免费账户



App名字填好记住,其它的随意写

在Dashboard面板的Push notifications选项卡进行一下设置


等等



下面开始创建工程了,先下载SDK http://parse-ios.s3.amazonaws.com/761fb838b39ee452a84377505e975e66/parse-starter-project-1.1.25.zip

新建一个XCode工程,注意在工程plist文件里把Bundle identifier设置成和第9步一样的,同时还要加上好多framework,注意那个Parse.framework是上面下载的这个SDK里面的把它也加入到工程里。




一切看来还算顺利,下面开始编码,

在AppDelegate.h文件先引入头文件

#import <Parse/Parse.h>

在application:(UIApplication *)application didFinishLaunchingWithOptions方法中加入下面代码:

[application registerForRemoteNotificationTypes:

     UIRemoteNotificationTypeBadge |

     UIRemoteNotificationTypeAlert |

     UIRemoteNotificationTypeSound];

    [Parse setApplicationId:@"上面那个Application ID"

                  clientKey:@"上面那个Client Key"];

再添加这几个方法

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

    NSLog(@"My token is: %@", deviceToken);

    [PFPushstoreDeviceToken:deviceToken];// Send parse the device token

    // Subscribe this user to the broadcast channel, ""

    [[PFInstallationcurrentInstallation] addUniqueObject:@""forKey:@"channels"];

    [[PFInstallationcurrentInstallation] saveEventually];

}

- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error

{

    NSLog(@"Failed to get token, error: %@", error);

}

- (

    
最新技术文章:
▪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 -- 责任链模式
▪运行skyeye缺少libbfd-2.18.50.0.2.20071001.so问题    ▪sharepoint 2010 使用sharepoint脚本STSNavigate方法实...    ▪让javascript显原型!
▪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