摘要: int a; a在内存中占四个字节long b; b在内存中占八个字节,把b强制转换成a, 就会少掉四个字节的信息,如果b的值不超过int型能表示的最大值,则不会有信息丢失,但是如果b的值超过了int 型能表示的最大值,高位的那四个字节的数据就会丢失和0xff与操作(a&0xff)为了让负的变为正的,与操作是:相同为1,不同为0所以int转换byte的的时候:View Code byte[] returnInt = new byte[4]; returnInt[0] = (byte)((intValueParm >>> 24) & 0xFF); returnI 阅读全文
posted @ 2012-11-08 16:48 softwa 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 每次看到H>>>2,这样的就容易混淆,到底是怎么进行位移的,今天在网上查了查,写个日志记下来,:1、<<(左移) 运算规则:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。 左移n位,相当于乘以2的n次方2、>>(带符号右移) 运算规则:按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补符号位,即正数补0,负数补1. 右移n位,相当于除以2的n次方3、>>>(无符号右移)运算规则:按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补0。其他结构和>>相 阅读全文
posted @ 2012-11-08 16:31 softwa 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 租个空间用wordpress搭建博客,安装主题时:会弹出输入主机名,ftp用户名,ftp密码,我输入后,提示连接不上:“执行请求动作,连接信息必需提供。(在wordpress后台自动升级以及更新删除主题或者插件的时候。)需要输入FTP账户信息。”确定自己的密码没错,然后通过客户端flashfxp能连上服务器,就奇怪了,咨询客服,他们说第三方的问题不帮忙解决,然后才上百度搜,搜发现不止我一个人遇到这个问题,网上的解释是:运行php的用户和当前安装的用户不是同一个,就会报错。照着网上给的解决办法,修改之后果然好使,修改如下:在 wp-config.php 中加入以下代码:// ** FTP SET 阅读全文
posted @ 2012-11-07 00:38 softwa 阅读(618) 评论(0) 推荐(0) 编辑
摘要: 生产者消费者问题是研究多线程程序时绕不开的问题,它的描述是有一块生产者和消费者共享的有界缓冲区,生产者往缓冲区放入产品,消费者从缓冲区取走产品,这个过程可以无休止的执行,不能因缓冲区满生产者放不进产品而终止,也不能因缓冲区空消费者无产品可取而终止。解决生产者消费者问题的方法有两种,一种是采用某种机制保持生产者和消费者之间的同步,一种是在生产者和消费者之间建立一个管道。前一种有较高的效率并且可控制性较好,比较常用,后一种由于管道缓冲区不易控制及被传输数据对象不易封装等原因,比较少用。同步问题的核心在于,CPU是按时间片轮询的方式执行程序,我们无法知道某一个线程是否被执行、是否被抢占、是否结束等, 阅读全文
posted @ 2012-10-17 15:52 softwa 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 在多线程程序设计中,经常会遇到一个线程等待一个或多个线程的场景,遇到这样的场景应该如何解决?如果是一个线程等待一个线程,则可以通过await()和notify()来实现;如果是一个线程等待多个线程,则就可以使用CountDownLatch和CyclicBarrier来实现比较好的控制。下面来详细描述下CountDownLatch的应用场景:例如:百米赛跑:8名运动员同时起跑,由于速度的快慢,肯定有会出现先到终点和晚到终点的情况,而终点有个统计成绩的仪器,当所有选手到达终点时,它会统计所有人的成绩并进行排序,然后把结果发送到汇报成绩的系统。其实这就是一个CountDownLatch的应用场景:一 阅读全文
posted @ 2012-10-12 10:50 softwa 阅读(682) 评论(0) 推荐(0) 编辑
摘要: 最近在研究java动态代理这块,以前也看了很多次java动态代理,感觉一直不是怎么明白,这两天看了看又明白了些,现给出我参考网上写的一个demojdk动态代理实现:View Code import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;public class DynamicProxy implements InvocationHandler { private Target target; public DynamicPr... 阅读全文
posted @ 2012-09-29 10:04 softwa 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 在自实现1中写了0.1版本,基本上只是完成了线程池需要的三个基本要素,任务队列,工作线程,线程池管理器今天在上一个版本的基础上改了下:姑且算作1.0版,基本上能跑通测试,接下来还需要进一步优化,调整他们之间的关系这里画个简单的图:Task:需要完成的任务,一般是一个接口,我们的任务区实现该接口线程管理器:用于创建,销毁线程,主要管理一个任务队列TaskThread:用于真正去执行任务的线程下面是他们的代码:Task:View Code public class Task { //索引为了测试打印用 private int index; public Task(int inde... 阅读全文
posted @ 2012-09-26 16:19 softwa 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 在写线程池代码的时候,最初始报IllegalMonitorStateException异常,检查发现 在没有进行同步的对象上调用notify,wait操作,所以报该异常api中解释:public class IllegalMonitorStateExceptionextends RuntimeException抛出的异常表明某一线程已经试图等待对象的监视器,或者试图通知其他正在等待对象的监视器而本身没有指定监视器的线程。 从以下版本开始: JDK1.0 另请参见:Object.notify(), Object.notifyAll(), Object.wait(), Object.wait(lo 阅读全文
posted @ 2012-09-26 15:44 softwa 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 一直想好好的研究研java有关线程,并发包的东西,一直也没去做,最近因为工作中用到了,正好趁此机会好好的学习下。看着并发包实现的线程池,功能也确实挺多的,总觉得理解的不够透彻,感觉总是别人的东西,所以决定自己从最简单的开始写,慢慢的优化,然后慢慢的对比他的源代码,这样应该能比较深入的理解。今天开始写了个最简单的原始版本,姑且算作0.1版本,里面没有用到锁等机制。一共分为三部分:1、任务类(Task)View Code public class Task { public void doTask() { System.out.println("do the task"); . 阅读全文
posted @ 2012-09-24 21:20 softwa 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 之前看过一部分jdk的源码,发现看了之后又忘了,或者是看的不够深入,有次去面试:问我hashmap怎么实现的,结果我答的不怎么样,没答出一些关键部分,现在再重新开读读jdk的util包下的一些源代码:特别声明:小弟发博客纯属学习,若有错误,不当之处请指出!!!首先,我们大家都知道hashmap内部用的是散列实现,但是具体怎么实现的呢?如果解决冲突的呢?实现原理:hashmap用数组实现,数组中存放的是Entry类型的元素,每个Entry元素其实是一个key-value对,持有下一个元素的引用,这就说明table数组中的Entry元素还是某个Entry链表的首节点,指向该链表的下一个元素,所以h 阅读全文
posted @ 2012-09-13 22:17 softwa 阅读(571) 评论(0) 推荐(0) 编辑