`
xdgj
  • 浏览: 36142 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论
文章列表
   由于学习数据库连接池,再次用到了Java的同步条件锁,对它的使用有了一点新的认识。这里先引用《Java 核心编程》的一段介绍:通常,一个线程进入临界区,却发现它必须等待某个条件满足后才能执行。你要使用一个条件 ...
import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.Driver; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Enumeration; import java.util.Vector; pu ...

const的用法

  1、什么是const?  常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。(当然,我们可以偷梁换柱进行更新:)  2、为什么引入const?  const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。  3、const有什么主要的作用?  (1)可以定义const常量,具有不可变性。 例如:  const int Max=100; int Array[Max];  (2)便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。例如: void f(const int i) { .........} ...
  C语言编译过程总结详解(转帖) 本来打算把编译部分的内容总结一下,偶然看到一位网友的文章写得很全面,故此稍加整理,以作备忘。        C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程。过程图解如下:           从图上可以看到,整个代码的编译过程分为编译和链接两个过程,编译对应图中的大括号括起的部分,其余则为链接过程。
  最近在学着使用开源的JGraph,为了能添加一个自己的cell,看了一堆帖子。这些帖子有一个特点,千篇一律,你转我的,我转你的,感觉太没意思了吧,始终只能画出锥形。后来还是直接搜索英文的了,搜到了The JGraph Tutorial。其中给了一个很好的例子,我略作了一些修改,功能是添加了一个自己的EllipseCell,画出了椭圆或者圆,这个取决于代码中的GraphConstants.setBounds(cells[1].getAttributes(), new Rectangle2D.Double(140,140,40,20))。(代码中没有进行注释,想进一步了解的可以下载英 文手 ...
JDK1.5中的线程池(java.util.concurrent.ThreadPoolExecutor)使用简介 在多线程大师Doug Lea的贡献下,在JDK1.5中加入了许多对并发特性的支持,例如:线程池。 一、简介 线程池类为 java.util.concurrent.ThreadPoolExecutor,常用构造方法为: ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, R ...
i++ ,++i,i=i++的问题    int i=0;       i=i++;       结果i是多少?       这是一个经常被提及的问题,答案一直五花八门。       具体测试一下以说明问题:       代码1:
  这里并不介绍同步条件锁的具体定义,只对下面代码进行简单描述。本人最近在学有关知识,发现只有自己实际编码才能有深刻的体会,遇到问题才能更好的理解问题。由于i开始为10,所以线程0被阻塞,接着i被赋成100,线程1执行,完成后唤醒线程0(本段代码意图是体现锁条件,不足之处望赐教,实验室网速太卡,格式都没法调) import java.util.Scanner; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concu ...
本函数可以进行群组匹配,群组的概念这里不进行详细描述,举个简单的例子,假设你的输入模式为(.*):(.*)([ap])m,输入字符串为11:60am,那么群组输出为(对应着括号内部的内容,这里的括号不是常规的括号,是这里的特殊标记,如果要表达括号得加上转义字符"\\("或“\\)”,注意英文符号和中文符号是不一样的)   11 60 a   import java.util.*; import java.util.regex.*;     public class test {    public static void main(String ...
jvm classLoader architecture : a, Bootstrap ClassLoader/启动类加载器主要负责jdk_home/lib目录下的核心 api 或 -Xbootclasspath 选项指定的jar包装入工作.   b, Extension ClassLoader/扩展类加载器主要负责jdk_home/lib/ext目录下的jar包或 -Djava.ext.dirs 指定目录下的jar包装入工作   c, System ClassLoader/系统类加载器主要负责java -classpath/-Djava.class.path所指的目录下的类与jar包 ...
昨天刚转载了《实现自己的事件》一文,由于源代码生成了一个窗口,为了简化理解,我就试图修改程序,不让生成窗口,直接在控制台输出时间,结果遇到了麻烦,程序没有显示就终止了。经过仔细分析javax.swing.Timer类,终于找出了原因。 Timer的构造函数 public Timer(int delay, ActionListener listener) 构造 Timer 时要指定一个延迟参数delay和一个 ActionListener。延迟参数用于设置初始延迟和事件触发之间的延迟(以毫秒为单位)。启动了计时器后,它将在向已注册侦听器触发第一个 ActionEvent 之前等待初始延 ...
当程序的某个模块被调用的时刻不确定,就类似于等待某个事件的发生。这时,可以定义自己的事件进行相应的处理。比如,等待用户的一次输入等。Java的事件模型依赖于委托,通过回调方法进行相应的事件处理。在事件源中,会有fireXXXEvent()就是激活相应的事件,其中会遍历事件源的监听器队列,调用相应监听器的事件处理的回调方法。当某个事件发生时,事件源会调用fireXXXEvent()。实现自己的事件时,需要定义相应的事件类型、事件监听器、事件源。这里可以把事件和事件源定义为接口,方便日后扩展。       这里,我实现的事件是一个定时器事件,当时间过了指定间隔,触发事件。其实,只需要一个Timer ...
学习jsp也有一个月了,对tomcat的配置算的上还是有点点经验可以和大家分享,下面就来说说对tomcat主机的配置吧: 1。在engine下面一个host就对应一个虚拟主机,也就是说一个计算机(对应一个ip)上可以存在多个站点,然后需要在相应的站点下建立自己的web应用,具体配置入下: 首先找到:C:\WINDOWS\system32\drivers\etc目录下的host文件,打开它可以看到有这样一句:127.0.0.1 localhost它的意思就是本机对应的虚拟主机名叫localhost,在tomcat的server.xml中当然会存在响应的: <Host appBase=&q ...
Java Timer类的使用介绍(转载) 所有类型的 Java 应用程序一般都需要计划重复执行的任务。企业应用程序需要计划每日的日志或者晚间批处理过程。一个 J2SE 或者 J2ME 日历应用程序需要根据用户的约定计划闹铃时间。不过,标准的调度类 Timer 和 TimerTask 没有足够的灵活性,无法支持通常需要的计划任务类型。在本文中,Java 开发人员 Tom White 向您展示了如何构建一个简单通用的计划框架,以用于执行任意复杂的计划任务。 我将把 java.util.Timer 和 java.util.TimerTask 统称为 Java 计时器框架,它们使程序员可以很容易地计划 ...
Global site tag (gtag.js) - Google Analytics