IT英雄榜
有些程序在调试、兼容性、平台移植等情况下可能想要通过简单地设置一些参数就生成一个不同的软件,这当然可以通过变量设置,把所有可能用到的代码都写进去,在初始化时配置,但在不同的情况下可能只用到一部分代码,就没必要把所有的代码都写进去,就可以用条件编译,通过预编译指令设置编译条件,在不同的需要时编译不同的代码。(一)条件编译方法 条件编译是通过预编译指令来实现的,主要方法有:1、#if, #elif,
曾经用VC做过一个聊天程序,目的是熟悉socket编程模型。当然也放到了简历上,没想到每次面试都会被问到有哪些网络模型,早就记不清楚了,只能知道个大概。虽然不用面试了,但还是很有必要把它总结一下,学一点东西,就要把它搞清楚。 没有研究过socket发展史,但通过这些网络模型的分析与比较,也大概明白了其发展过程。最先出现的是阻塞模型,这个模型是讲解计算机网络
WaitForSingleObject的用法 DWORD WaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds);参数hHandle是一个事件的句柄,第二个参数dwMilliseconds是时间间隔。如果时间是有信号状态返回WAIT_OBJECT_0,如果时间超过dwMilliseconds值但时间事件还是无信
经常遇到volatile变量,总是很模糊,今天上网找了两篇文章,觉得说得很好,就此收藏了 文章一: 第一次接触到关键字volatile,不知为何物,只是模糊的记得java关键字里面好像有它。查了些资料,整理如下: Volatile修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。
查看setCharacterEncoding API文档,进一步发现: Calling setContentType(java.lang.String) with the String of text/html and calling this method with the String of UTF-8 is equivalent with calling setContentType wi
又碰到servlet 输出中文乱码的问题,恼火。研究了一下,有了新的发现和认识。 原始代码: java 代码 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExceptio
Java定时器(java.util.Timer)有定时触发计划任务的功能,通过配置定时器的间隔时间,在某一间隔时间段之后会自动有规律的调用预先所 安排的计划任务(java.util.TimerTask)。另外,由于我们希望当Web工程启动时,定时器能自动开始计时,在整个Web工程的生命期 里,定时器能在每晚深夜触发一次报表计算引擎。因此定时器的存放位置也值得考查,不能简单的存在于单个Servlet
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java
javac:Java编译器,将Java源代码换成字节代 java:Java解释器,直接从类文件执行Java应用程序代码 appletviewer(小程序浏览器):一种执行HTML文件上的Java小程序类的Java浏览器 javadoc:根据Java源代码及其说明语句生成的HTML文档 jdb:Java调试器,可以逐行地执行程序、设置断点和检查变量 javah:产生可以调用Java过程的C过程,或建
Tomcat相信大家已经很熟悉了,作为一种免费而强大的java web server,得到了很多java爱好者的青睐,最新版本的tomcat5支持servlet2.4和jsp2.0,今天我将采用Tomcat5和Ms sqlserver 000一起来开始数据库连接池配置之旅。需要的准备1、jdk 我使用的版本1.4.012、Tomcat 5 我使用的是5.0.16版本 下载地址:[u
在一个线程对象调用start方法后只是说明它被激活,进入了就绪状态,并不能马上执行,需要的等到虚拟机的调度才可以真正运行,,呵呵,最近看程序老是觉得线程对象一调用start就马上运行了,搞的自己老是看代码的时候很糊涂,后来突然才意思到调用start后并不是马上就运行啊,哎,糊涂啊,......写在博客上,免得自己老是糊涂, 再贴上两张线程状态图,经常看下, 图1 图2
最近看线程,今天复习时发觉自己并没有搞明白sleep,interrupt和wait,notify的区别,以前曾见人这么分析二者: sleep()方法是使线程停止一段时间的方法。在sleep 时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃执行,除非(a)"醒来"的线程具有更高的优先级。 (b)正在运行的线程因为其它原因而阻塞。 w
在现代的操作系统中,有一个很重要的概念――线程,几乎所有目前流行的操作系统都支持线程,线程来源于操作系统中进程的概念,进程有自己的虚拟地址空间以及正文段、数据段及堆栈,而且各自占有不同的系统资源(例如文件、环境变量等等)。与此不同,线程不能单独存在,它依附于进程,只能由进程派生。如果一个进程派生出了两个线程,那这两个线程共享此进程的全局变量和代码段,但每个线程各拥有各自的堆栈,因此它们拥有各自的局
Java对多线程的支持与同步机制深受大家的喜爱,似乎看起来使用了synchronized关键字就可以轻松地解决多线程共享数据同步问题。到底如何?――还得对synchronized关键字的作用进行深入了解才可定论。 总的说来,synchronized关键字可以作为函数的修饰符,也可作为函数内的语句,也就是平时说的同步方法和同步语句块。如果再细的分类,synchronized可作用于
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号