摘要: 上一篇:Java线程(三) Timer和TimerTask可以做为实现线程的第三种方式,前两中方式分别是继承自Thread类和实现Runnable接口。 Timer是一种线程设施,用于安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行,可以看成一个定时器,可... 阅读全文
posted @ 2012-04-08 00:43 高爽|Coder 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 上一篇:Java线程(二) 上一篇讲述了线程的互斥(同步),但是在很多情况下,仅仅同步是不够的,还需要线程与线程协作(通信),生产者/消费者模式是一个经典的线程同步以及通信的模型。 假设有这样一种情况,有一个盘子,盘子里只能放一个鸡蛋,A线程专门往盘子里放鸡蛋,如果盘子里有鸡蛋,则一直等到盘子里没鸡蛋,B线程专门从盘子里取鸡蛋,如果盘子里没鸡蛋,则一直等到盘子里有鸡蛋。这里盘子是一个互斥区,每次放鸡蛋是互斥的,每次取鸡蛋也是互斥的,A线程放鸡蛋,如果这时B线程要取鸡蛋,由于A没有释放锁,B线程处于等待状态,进入阻塞队列,放鸡蛋之后,要通知B线程取鸡蛋,B线程进入就绪队列,反... 阅读全文
posted @ 2012-04-06 22:46 高爽|Coder 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 上一篇:Java线程(一) 上篇通过一个简单的例子说明了线程安全与不安全,在例子中不安全的情况下输出的结果恰好是逐个递增的,为什么会产生这样的结果呢,因为建立的Count对象是线程共享的,一个线程改变了其成员变量num值,下一个线程正巧读到了修改后的num,所以会递增输出。 要说明线程同步问题首先要说明Java线程的两个特性,可见性和有序性。多个线程之间是不能直接传递数据交互的,它们之间的交互只能通过共享变量来实现。拿上篇博文中的例子来说明,在多个线程之间共享了Count类的一个对象,这个对象是被创建在主内存(堆内存)中,每个线程都有自己的工作内存(线程栈),工作内存存储了... 阅读全文
posted @ 2012-04-04 10:49 高爽|Coder 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 作为一个Java web开发人员,很少也不需要去处理线程,因为服务器已经帮我们处理好了。记得大一刚学Java的时候,老师带着我们做了一个局域网聊天室,用到了AWT、Socket、多线程、I/O,编写的客户端和服务器,当时做出来很兴奋,回学校给同学们演示,感觉自己好NB,呵呵,扯远了。上次在百度开发者大会上看到一个提示语,自己写的代码,6个月不看也是别人的代码,自己学的知识也同样如此,学完的知识如果不使用或者不常常回顾,那么还不是自己的知识。大学零零散散搞了不到四年的Java,我相信很多人都跟我一样,JavaSE基础没打牢,就急忙忙、兴冲冲的搞JavaEE了,然后学习一下前台开发(htm... 阅读全文
posted @ 2012-04-02 12:13 高爽|Coder 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 转自网络1. 面试面试官:熟悉哪种语言? 应聘者:C# 面试官:知道什么叫类么? 应聘者:我这人实在,工作努力,不知道什么叫累。 面试官:知道什么是包? 应聘者:我这人实在,平常不带包,也不用公司准备了。 面试官:知道什么是接口吗? 应聘者:我这个人工作认真,从来不找借口偷懒。 面试官:知道什么是继承么? 应聘者:我是孤儿没什么可以继承的。 面试官:知道什么叫对象么? 应聘者:知道,不过我工作努力,上进心强,暂时还没有打算找对象。 面试官:知道多态么? 应聘者:知道,我很保守的。我认为让心爱的女人为了自已一时的快乐去堕胎是不道德的行为!请问这和C#有什么关系?2. 自行车一个程序员骑着一个很漂 阅读全文
posted @ 2012-03-30 17:59 高爽|Coder 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 大家点击我的博客主页详细资料里的邮箱就可以给我发邮件了,那么这个效果是怎么实现的呢? 1. 简单的链接 效果:给我发邮件 代码:<a href="Mailto:ghsau@163.com">给我发邮件</a> 这样会调启系统默认的邮件程序发送给ghsau@163.com,并且收件人那里已经填上了我邮箱的地址。 2. 复杂的链接 效果:给我发邮件 代码:<a href="Mailto:ghsau@163.com?CC=ghsau@163.com&BCC=ghsau@163.com&Subject=Hello&Bo 阅读全文
posted @ 2012-03-30 12:39 高爽|Coder 阅读(892) 评论(0) 推荐(0) 编辑
摘要: 上一篇:基础算法(一) 1. 冒泡排序(BubbleSort) 原理:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数... 阅读全文
posted @ 2012-03-30 12:12 高爽|Coder 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 这两个月总结了不少Flex相关知识点,在此做个目录,以后更新文章也会更新目录,方便自己查看。 Flex事件 Flex事件机制(一):事件的介绍以及处理事件的方式。 Flex事件机制(二):使用事件在父子组件之间传递数据,这篇博文上首页了。 Flex事件机制(三):使用事件在任意组件之间传递数据。 Flex回调函数 Flex回调函数(一):介绍回调函数,使用回调函数在父子组件之间传递数据。 Flex反射 Flex反射得到属性和属性的值 Flex开发 Flex开发常遇问题 Flex结构 使用代码分离构建自定义组件 ... 阅读全文
posted @ 2012-03-28 23:11 高爽|Coder 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 首先要说明一下什么是回调函数?有什么作用? 回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方法直接调用,而是在特定的事件或条件发生时由另一个方法调用的,用于对该事件或条件进行相应。 回调函数实现的过程: 1. 定义一个回调函数; 2. 提供函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者; 3. 当特定的事件或条件发生的时候,调用者使用函数指针调用回调函数对事件进行处理。 回调函数使调用者和被调用者分开,所... 阅读全文
posted @ 2012-03-27 21:56 高爽|Coder 阅读(460) 评论(0) 推荐(0) 编辑
摘要: 上一篇主要以代码的方式说明了如何使用自定义事件在父子组件之间传递数据,那么在开发中,我们可能会遇到另一种情况,就是想在任意一个地方监听到任意一个组件中被触发的事件,这样事件处理更灵活,并不局限于父子组件之间,那么下面就说明这种情况如何处理。 Flex中所有的组件都间接继承自EventDispatcher,通过查看Flex API,了解一下这个类中的方法。 如图所见,该类包含了派发事件、监听事件、移出事件等方法,那么通过这个类就可以实现本文开篇所提出的那种情况,分析一下,监听事件的对象和派发事件的对象必须是同一个对象,这样事件才能被捕获,所以我们需要写一个单例的类,并且组合E... 阅读全文
posted @ 2012-03-26 20:53 高爽|Coder 阅读(157) 评论(0) 推荐(0) 编辑