代码改变世界

itoa函数的递归实现(二级指针实现)

2015-09-14 15:34 by OshynSong, 1114 阅读, 1 推荐, 收藏, 编辑
摘要:问题提出《C Programming Language》书中在递归这一节预留了两个使用递归实现的函数,其中itoa函数是用来将一个整数转换为一个字符串。书中已有使用循环实现的版本,但是直接得到的是反序的结果,需要最后调用reverse函数。而递归版本则可以避免这个问题。首先使用原接口void ito... 阅读全文

二叉树——查找两个任意节点的最近祖先

2014-04-27 19:02 by OshynSong, 1752 阅读, 0 推荐, 收藏, 编辑
摘要:很久没有用过二叉树了,最近由于需要用到了,发现很多知识需要巩固了,中间涉及到一个算法就是找任意两个节点的最近祖先。通过本人回顾和演算,最终提出了下面一个方法,网上也有很多其他的方式实现,再次仅对自己好几个小时的工作作个记录和积累吧! 程序是用C语言写的,个人觉得如果用C#实现会更加方便。首先是数据结... 阅读全文

C#多线程(二)

2014-03-27 17:20 by OshynSong, 995 阅读, 2 推荐, 收藏, 编辑
摘要:一、线程池每次创建一个线程,都会花费几百微秒级别的时间来创建一个私有的局部栈,每个线程默认使用1M的内存。这个可以在使用Thread类的构造函数时设置:[csharp]view plaincopyprint?newThread(newThreadStart(Go),2);newThread(newParameterizedThreadStart(Go("hello")),3);提供的两种构造函数方式都提供了对应的设置线程局部栈的大小。线程池通过共享和回收线程的方式来分配这些内存,这样可以使多线程运行在一个非常细粒度级别上而不影响性能。这对于充分利用多核处理器,使用分而治之的 阅读全文

C#多线程(一)

2014-03-27 16:49 by OshynSong, 3019 阅读, 6 推荐, 收藏, 编辑
摘要:一、定义与理解1、定义线程是操作系统分配CPU时间片的基本单位,每个运行的引用程序为一个进程,这个进程可以包含一个或多个线程。线程是进程中的执行流程,每个线程可以得到一小段程序的执行时间,在单核处理器中,由于切换线程速度很快因此感觉像是线程同时允许,其实任意时刻都只有一个线程运行,但是在多核处理器中,可以实现混合时间片和真实的并发执行。但是由于操作系统自己的服务或者其他应用程序执行,也不能保证一个进程中的多个线程同时运行。线程被一个CLR委托给操作系统的进程协调函数管理,确保所有线程都可以被分配适当的执行时间,同时保证在等待或阻止的线程不占用执行时间。2、理解线程与进程的关键区别是:进程是彼此 阅读全文

Websocket协议之php实现

2014-03-11 09:34 by OshynSong, 4074 阅读, 2 推荐, 收藏, 编辑
摘要:前面学习了HTML5中websocket的握手协议、打开和关闭连接等基础内容,最近用php实现了与浏览器websocket的双向通信。在学习概念的时候觉得看懂了的内容,真正在实践过程中还是会遇到各种问题,网上也有一些关于php的websocket的实现,但是只有自己亲手写过之后才知道其中的感受。其中,google有一个开源的phpwebsocket类(https://code.google.com/p/phpwebsocket/),但是从其握手过程中可以明显看出,这还是最初的websocket协议,请求头中使用了两个KEY,并非version 13(现行版本)。下面是本人实践过程,同时封装好了 阅读全文

Websocket协议数据帧传输和关闭连接

2014-03-07 00:52 by OshynSong, 3356 阅读, 2 推荐, 收藏, 编辑
摘要:之前总结了关于Websocket协议的握手连接方式等其他细节,现在对socket连接建立后的数据帧传输和关闭细节总结。一、数据帧格式数据传输使用的是一系列数据帧,出于安全考虑和避免网络截获,客户端发送的数据帧必须进行掩码处理后才能发送到服务器,不论是否是在TLS安全协议上都要进行掩码处理。服务器如果没有收到掩码处理的数据帧时应该关闭连接,发送一个1002的状态码。服务器不能将发送到客户端的数据进行掩码处理,如果客户端收到掩码处理的数据帧必须关闭连接。基本的数据帧为一个opcode、一个payload长度和发送的应用数据,根据ABNF的定义,详细信息如下图这里使用的是数据存储的位(bit),当进 阅读全文

Websocket协议之握手连接

2014-02-28 22:59 by OshynSong, 19968 阅读, 2 推荐, 收藏, 编辑
摘要:Websocket协议是为了解决web即时应用中服务器与客户端浏览器全双工通信的问题而设计的,是完全意义上的Web应用端的双向通信技术,可以取代之前使用半双工HTTP协议而模拟全双工通信,同时克服了带宽和访问速度等的诸多问题。协议定义为ws和wss协议,分别为普通请求和基于SSL的安全传输,占用端口与http协议系统,ws为80端口,wss为443端口,这样可以支持HTTP代理。协议包含两个部分,第一个是“握手”,第二个是数据传输。一、Websocket URI定义的两个协议框架ws和wss与http类似,而且各自部分的要求也是在HTTP协议中使用的一样,各自的URI如下:ws-URI = & 阅读全文

javascript进阶——Ajax

2014-02-25 00:08 by OshynSong, 490 阅读, 0 推荐, 收藏, 编辑
摘要:统的Web 页面和应用中,用户每点击页面上的某个部分,浏览器就会向服务器发出一个请求,等待服务器做出响应,然后返回一个完整新网页,但在大多数情况下用户不得不忍受页面闪烁和长时间的等待。随着Web技术的发展和用户体验要求的提高,异步编程是提高用户体验,同时仅仅修改页面中需要修改的部分而大量减少网络流量,增加了实时性。这种异步编程的出现就是以Jesse James Garrett提出的Ajax这一名词得到最广泛的应用。Ajax是异步javascript与XML的缩写,就是对创建异步Web动态应用的一个统称。一、基础回顾1、HTTP请求建立连接:IE6及以前版本使用ActiveXObject创建,I 阅读全文

即时Web通信总结

2014-02-24 21:57 by OshynSong, 2612 阅读, 2 推荐, 收藏, 编辑
摘要:即时Web通信在一些对数据实时性要求特别严格的应用中十分重要,如监控系统、报价系统、股票交易系统和即时在线聊天应用等,由于http协议设计当初是为了服务器端响应客户端的请求而设计的,只能在客户端主动发送请求后进行处理然后返回结果。为了实现上述各种即时应用的功能,出现了一系列“Hack”的手段来模拟实现服务器端主动推送信息的功能,也就是模拟了服务器和客户端直接全双工的通信。这样主要考虑的是如下问题:客户端如何接收、处理信息,是否需要使用套接口或是使用远程调用。客户端呈现给用户的是 HTML 页面还是 Java applet 或 Flash 窗口。如果使用套接口和远程调用,怎么和 JavaScri 阅读全文

javascript进阶——分离式DOM脚本编程

2014-02-24 00:21 by OshynSong, 1164 阅读, 0 推荐, 收藏, 编辑
摘要:编写分离式(unobstrusive)代码意味着对HTML内容的完全分离:数据来自服务器端,javascript代码用来动态化和交互。这种分离的好处是在不同浏览器之间使用是可以完全降级或升级运行,对于高级特性浏览器提供更丰富的交互,不支持高级特性的浏览器可以降级运行其所支持的部分。一、DOMDOM是表达XML文档的应用最广泛的方式,虽然可能未必是最快或者最轻量级和最易使用的,但是大部分web开发语言都提供了其实现。javascript最终的操作都是和网页里的HTML元素进行交互,而HTML是XML的一个子集,因此DOM是简化操作的出色工具,是开发分离式javascript代码的第一步,无非就是 阅读全文