Ajax jquery 原理分析及其使用

Posted by & filed under Uncategorized.

引用: 关于异步与同步 异步传输是面向字符的传输,它的单位是字符; 同步传输是面向比特的传输,它的单位是桢,它传输的时候要求接受方和发送方的时钟是保持一致的。 XMLHttpRequest对象的属性。      onreadystatechange  每次状态改变所触发事件的事件处理程序。      responseText     从服务器进程返回数据的字符串形式。      responseXML    从服务器进程返回的DOM兼容的文档数据对象。      status           从服务器返回的数字代码,比如常见的404(未找到)和200(已就绪)      statusText       伴随状态码的字符串信息      readyState       对象状态值      Read more […]

JS下载文件|无刷新下载文件

Posted by & filed under Uncategorized.

后台代码Handler.ashx   [csharp] view plaincopy <%@ WebHandler Language=”C#” Class=”Handler” %> using System; using System.Web; public class Handler : IHttpHandler {     public void ProcessRequest (HttpContext context) {         string fileName = “web.config”;//客户端保存的文件名         string filePath = context.Server.MapPath(“web.config”);//路径         //以字符流的形式下载文件         System.IO.FileStream fs = new System.IO.FileStream(filePath, System.IO.FileMode.Open);         byte[] bytes = new byte[(int)fs.Length];         fs.Read(bytes, 0, bytes.Length);         fs.Close();         context.Response.ContentType = “application/octet-stream”;         //通知浏览器下载文件而不是打开         context.Response.AddHeader(“Content-Disposition”, “attachment; filename=” + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));         context.Response.BinaryWrite(bytes);         context.Response.Flush();         context.Response.End();     }     public bool IsReusable {         get {             return false;         }     } } 前端代码:     [html] view Read more […]

Java生产者与消费者(下)

Posted by & filed under Uncategorized.

本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处!   上一讲我们让消费者和生产者都各停1毫秒,实际上大多并不是这样的。第二讲,我们讲一个极端的例子和一个正常的例子,假设您已经看过上一讲,我们只改变Consumer和Producer,来看结果。 Java生产者与消费者(上) 名词解释 wait:当前线程不运行,处理等待状态,等待notify;所以也不会往下执行。 您可能会有疑问前例中的为什么要用while循环而非if语句? 主要是防止多线程操作时,例桌子已经占满,两个生产线程均处理等待状态,但消费线程通过notifyAll打开其等待状态,就造成生产过量的蛋糕,而导致生产消费模式失败,所以不能用if语句。 sleep:暂停当前线程若干时间,之后继续运行 Special Read more […]

javascript模块化编程(二)—AMD规范

Posted by & filed under Uncategorized.

一、js的模块化规范: 服务器端:commonjs 浏览器端:AMD(”Asynchronous Module Definition”的缩写,意思就是”异步模块定义”) 二、为什么采用AMD 如下代码   [javascript] view plaincopy var math = require(‘math’);   math.add(2, 3); 必须等待math.js加载完成,否则会出现加载时间很长现象   三、define define(id?, dependencies?, factory);   其中: id: 模块标识,可以省略。 dependencies: 所依赖的模块,可以省略。 factory: 模块的实现,或者一个JavaScript对象。 以下是使用AMD模式开发的简单三层结构(基础库/UI层/应用层): base.js [javascript] view plaincopy define(function() {     return {         mix: function(source, target) {         }     }; }); ui.js   [javascript] view Read more […]

C++虚指针实现及效率

Posted by & filed under Uncategorized.

  转载自:http://blog.chinaunix.net/space.php?uid=22257012&do=blog&id=2655107 单继承虚函数例子 class Point { public: virtual ~Point(); virtual Point& mult( float ) = 0; //  other operations  float x() const { return _x; } virtual float y() const { return 0; } virtual float z() const { return 0; } //  protected: Point( float x = 0.0 ); float _x; }; class Point2d : public Point { public: Point2d( float x = 0.0, float y = 0.0 ) : Point( x ), _y( y ) {} ~Point2d(); // overridden base class virtual functions Point2d& mult( float ); float y() const { return _y; } //  other operations  protected: float _y; }; class Point3d: public Point2d { public: Point3d( float x = 0.0, float y = 0.0, float z = 0.0 ) : Point2d( x, y ), _z( z ) {} ~Point3d(); // overridden base class virtual functions Point3d& mult( float ); float z() const { return _z; } //  other operations  protected: float _z; };   Vtable和VPTR结构 虚函数的实现是通过VTable和vptr。每一个带有虚函数的类都有一个VTable,在编译器生成,每一个带有虚函数的类实例都有一个vptr,该类实例vptr指向该类的VTable,在运行期生成。   如图左部的类实例内存结构,编译器为之生成__vptr__Point的指针,指向该类的VTable。 VTable的结构是一个函数指针数组,数组的每个元素是一个函数指针,指向该类虚函数的地址。因为基类Point的Point::mult()为纯虚函数,因此Point对应的mult函数指针指向一个pure_virtual_called(),抛出调用纯虚函数错误。   如图VTable所示,Point类和其子类的析构函数均在VTable[1],mult在VTable[2],y在VTable[3],z在VTable[4]。如果Point2d增加Point2d自己的虚函数,同时Point3d继承Point2d的虚函数,他们相同的虚函数接口同样对应于相同的VTable数组下标,如VTable[5],此由编译器保证,因而编译器对于虚函数接口能将其转换为函数指针数组的下标。   故,当调用 ptr->z(); 编译器实际调用的是: ( Read more […]

C/C++:读取文件小细节

Posted by & filed under Uncategorized.

以C中读文件时,要非常小心,用二进制处理和用文本方式处理,对于用文本方式写入的文件,操作结果是相同的,但是对于用二进制写入的文件,结果却是大为不同.例如用其对.exe文件进行读取, #include <iostream> #include <ctime> #include <fstream> using namespace std; int main(){ FILE* fp; fp = fopen(“d.txt”, “wb”); char* str = “biao”; fwrite(str, strlen(str), 1, fp); fclose(fp); fp = fopen(“test.exe”, “rb”); fseek(fp, 0L, SEEK_END); int length = ftell(fp); cout << “File length: ” << length << endl; rewind(fp); char ch; int count = 0; while (!feof(fp)) { ch = fgetc(fp); //cout << ch; count++; } cout << endl << count << endl; cout << Read more […]

Dll分配的内存块,应用释放的问题

Posted by & filed under Uncategorized.

转载自:http://blog.csdn.net/blz_wowar/article/details/2176536 写了个程序,在DLL中用malloc分配了一块内存,但是在exe程序中释放,结果程序crash,原因就是: 其原因可能是堆被损坏,这也说明 TestMySticker.exe 中或它所加载的任何 DLL 中有 bug。 想了半天以为是自己的写法有问题,后终于在google上找到了原因,汗。。。   以下文字引用自 http://hi.baidu.com/huhe/blog/item/0b422edd1f1563d98c1029a3.html 很感谢作者的分析 一个模块一个堆,一个线程一个栈。 dll里malloc的内存,在exe里free会出错。 CRT(C运行时期库)不是使用进程缺省的堆来实现malloc(new中调用malloc)的,而是使用一个全局句柄HANDLE _crtheap来分配内存的。这个_crtheap是在XXXCRTStartUp(CRT提供的进口点函数)中创建的。 由于CRT静态连接,则楼主的DLL里有也有一个CRT,因此也有一个_crtheap。而在dll中的new使用dll中的_crtheap句柄分配堆,在exe中的delete使用exe中的_crtheap释放堆,当然失败! 解决办法: 1。在DLL中输出一个函数给EXE调用,专门用来释放由DLL分配的内存; 2。用GlobalAlloc()代替new,用GlobalFree()代替delete; 3。使用单一的堆,分配内存使用HeapAlloc(GetProcessHeap(),0,size),释放内存使用HeapFree(GetProcessHeap(),0,p); 4。把dll和exe的Settings的C/C++选项卡的Code   Read more […]

linux测试磁盘读写IO速度的方法

Posted by & filed under Uncategorized.

  运维工作中,有时会遇到类似于IO特别高,但不能判定是IO瓶颈还是软件参数设置不当导致热盘的问题.这时候通常希望能知道磁盘的读写速度,来进行下一步的决策。 下面是两种测试方法: (1)使用hdparm命令 这是一个是用来获取ATA/IDE硬盘的参数的命令,是由早期Linux IDE驱动的开发和维护人员 Mark Lord开发编写的( hdparm has been written by Mark Lord <mlord@pobox.com>, the primary developer and maintainer of the (E)IDE driver for Linux, with suggestions from many netfolk).该命令应该也是仅用于Linux系统,对于UNIX系统,ATA/IDE硬盘用的可能比较少,一般大型的系统都是使用磁盘阵列的。 使用方法很简单 复制代码 代码如下: # Read more […]

JForum源代码研究—权限阻截与跳转到原请求页面

Posted by & filed under Uncategorized.

JForum源代码研究—权限拦截与跳转到原请求页面 先体验一下在未登录的情况下,点击“发表主题”:跳转到登录页面,登录成功后,跳转到“发表新主题”页面。   这是很多Web应用中常见的“权限拦截”。JForum是如何实现的呢?   在JForum中有Group和Role的概念。每个用户(包括未登录的匿名游客)都至少属于一个组。每个组都有一套权限(Permissions),或者称之为角色(Roles)。虽然组与组之间可以有父子关系,但仅仅是名义上的,子组不能继承父组的权限。   JForum预定义了多个权限: 是否为管理员?  如果选“是”的话,则属于该组的所有用户均可访问管理员控制台。 是否限制分类?  Read more […]