摘要: 在实际的开发中,可能在一个运算符中出现多个运算符,那么计算时,就按照优先级级别的高低进行计算,级别高的运算符先运算,级别低的运算符后计算,具体运算符的优先级见下表:运算符优先级表优先级运算符结合性1()[].从左到右2!+(正) -(负)~++--从右向左3*/%从左向右4+(加)-(减)从左向右5<<>>>>>从左向右6<<=>>=instanceof从左向右7== !=从左向右8&(按位与)从左向右9^从左向右10|从左向右11&&从左向右12||从左向右13?:从右向左14=+=-=*=/=%=&a 阅读全文
posted @ 2012-10-15 22:29 C+养鱼人 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 原理: 首先要明白线程的工作原理,jvm有一个main memory,而每个线程有自己的working memory,一个线程对一个variable进行操作时,都要在自己的working memory里面建立一个copy,操作完之后再写入main memory。多个线程同时操作同一个variable,就可能会出现不可预知的结果。根据上面的解释,很容易想出相应的scenario。 而用synchronized的关键是建立一个monitor,这个monitor可以是要修改的variable也可以其他你认为合适的object比如method,然后通过给这个monitor加锁来实现线程安全... 阅读全文
posted @ 2012-10-15 22:23 C+养鱼人 阅读(394) 评论(0) 推荐(0) 编辑
摘要: String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全)简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。而如果是使用 StringBuffer 阅读全文
posted @ 2012-10-15 22:17 C+养鱼人 阅读(116) 评论(0) 推荐(0) 编辑
摘要: HTTP是Hyper Text Transfer Protocol的缩写,顾名思义,这个协议支持着超文本的传输。那么什么是超文本呢?说白了就是使用HTML编写的页面。通常,我们使用客户端浏览器访 问服务器的资源,最常见的URL也是以html为后缀的文件。因此,我们可以说超文本是网络上最主要的资源。 既然HTTP协议的目的在于支持超文本的传输,更加广义一些就是支持资源的传输,那么在客户端浏览器向HTTP服务器发送请求,继而HTTP服务器将相应的资源发回给客户端这样一个过程中,无论对于客户端还是服务器,都没有必要记录这个过程,因为每一次请求和响应都是相对独立的,就好像你在自动售货机前投下硬币购买. 阅读全文
posted @ 2012-10-15 21:56 C+养鱼人 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 大部分图形系统都可以比作工厂中的装配线(Assemble line)或者称为管道(Pipeline)。前一道的输出作为下道工序的输入。主CPU发出一个绘图指令,然后可能由硬件部件完成坐标变换,裁剪,添加颜色或是材质,最后在屏幕上显示出来。OpenGL ES 1.x 的工序是固定的,称为Fix-Function Pipeline,可以想象一个带有很多控制开关的机器,尽管加工的工序是固定的,但是可以通过打开或关闭开关来设置参数或者打开关闭某些功能。OpenGL ES 2.0 允许提供编程来控制一些重要的工序,一些“繁琐”的工序比如栅格化等仍然是固定的。下图显示了OpenGL ES 1.x 固定管道 阅读全文
posted @ 2012-10-11 22:30 C+养鱼人 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 之前写过一篇博客:用 Fiddler来调试HTTP,HTTPS。 这篇文章介绍另一个好用的抓包工具wireshark,用来获取网络数据封包,包括http,TCP,UDP,等网络协议包。记得大学的时候就学习过TCP的三次握手协议,那时候只是知道,虽然在书上看过很多TCP和UDP的资料,但是从来没有真正见过这些数据包, 老是感觉在云上飘一样,学得不踏实。有了wireshark就能截获这些网络数据包,可以清晰的看到数据包中的每一个字段。更能加深我们对网络协议的理 解。对我而言, wireshark 是学习网络协议最好的工具。阅读目录wireshark介绍wireshark不能做的wireshark 阅读全文
posted @ 2012-10-11 21:28 C+养鱼人 阅读(130) 评论(0) 推荐(0) 编辑
摘要: “一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web 服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型 有哪些?还有socket的基本函数,这些都是本文想介绍的。本文的主要内容如下:1、网络中进程之间如何通信?2、Socket是什么?3、socket的基本操作3.1、socket()函数3.2、bind()函数3.3、li 阅读全文
posted @ 2012-10-11 21:08 C+养鱼人 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 目录 一、介绍 二、渲染引擎 三、解析与DOM树构建 四、渲染树构建 五、布局 六、绘制 七、动态变化 八、渲染引擎的线程 九、CSS2可视模型 英文原文:How Browsers Work: Behind the Scenes of Modern Web Browsers 一、介绍 浏览器可以被认为是使用最广泛的软件,本文将介绍浏览器的工作原理,我们将看到,从你在地址栏输入google.com到你看到google主页过程中都发生了什么。 将讨论的浏览器 今天,有五种主流浏览器——IE、Firefox、Safari、Chrome及Opera。 本文将基于一些开源浏... 阅读全文
posted @ 2012-09-28 16:32 C+养鱼人 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 手机QQ浏览器是个壳浏览器(直接调用系统的UIWebView控件),壳浏览器可以保证快速的迭代(无需关心内核,可以做到很好的兼容性和容错能力,因为手机厂商都做了),这样手机QQ浏览器可以更关注壳上的交互体验,更关注内容建设,可以更关注用户的使用浏览器习惯,可以做到软件更小(虽然手机QQ浏览器对UIWebView控件的控制能力与很好的扩展和研究)。而Q立方浏览器是有内核的浏览器,手机QQ浏览器如果获得足够的市场份额,为了防止新进入者进入,那么建立自己的壁垒很重要。拥有内核可以提高竞争门槛(部分只有在有核的浏览器实现的功能),建立自己的行业标准,同时自身的企业的诉求也可以在核上实现。而内核浏览器需 阅读全文
posted @ 2012-09-27 21:44 C+养鱼人 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 为了区分不同应用进程间的网络通信和连接,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP 或 UDP)和使用的端口号。 Socket的原意是“插座”。通过将这3个参数结合起来,与一个“插座”Socket绑定,应用层就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。 accept()产生的Socket端口号是多少? 要写网络程序就必须用Socket,这是程序员都知道的。而且,面试的时候,我们也会问对方会不会Socket编程?一般来说,很多人都会 说,Socket编程基本就是listen, accept, 以及send, write等几个基 阅读全文
posted @ 2012-09-26 16:08 C+养鱼人 阅读(541) 评论(0) 推荐(1) 编辑