![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 83
w563847254
这个作者很懒,什么都没留下…
展开
-
java poi操作EXCEL
本文转载至http://blog.csdn.net/zhangao0086/article/details/6382063 使用这套API操作Excel时,将对Excel进行全程锁定,所以不能有其他程序访问同一文件.package poi; import java.io.FileOutputStream;import java.util.Calendar;转载 2013-06-09 10:11:44 · 521 阅读 · 0 评论 -
FutureTask相关
FutureTask类实现了RunnableFuture接口,RunnableFuture接口继承了Future和Runnable两个接口,所以FutureTask可以当成线程执行。FutureTask持有一个Callable属性,FutureTask的两个构造方法都跟这个Callable属性相关。 第一个构造方法直接接收一个Callbale对象: public FutureTask(原创 2017-03-22 17:29:44 · 243 阅读 · 0 评论 -
多线程基础
多线程的最底层依赖于Unsafe的compareAndSwap(CAS)和LockSupport的park和unpark操作。cas需要传递两个参数:expect和update。先跟第一个参数expect进行比较,如果等于第一个参数,那么就将该值设置为第二个参数,这是由硬件提供的原子操作,所以不会存在并发问题。cas会返回一个boolean值表示这次更新是否成功,通常会用循环去不断的尝试原创 2017-03-20 09:52:03 · 212 阅读 · 0 评论 -
ThreadLocal的理解
许多人喜欢把ThreadLocal和多线程放在一起,其实这两者并没有太大的联系。ThreadLocal其实是提供了一个线程范围的上下文引用。如果你需要在两个没有关联的对象或者两个不互相调用的平行的方法之间共用一些线程级别的参数,那么就可以使用ThreadLocal。 从内存角度理解的话,其实一个线程就是一个虚拟机栈中的栈,这个线程调用的方法就是这个栈的栈帧。线程对方法的开始调用和调用原创 2017-03-20 09:39:32 · 296 阅读 · 0 评论 -
Head First设计模式整理
最近看了head first的设计模式颇有心得,赶紧趁热整理下,便于以后观看。运用设计模式的最基本的思想其实是眼光,因为设计模式的使用并不能帮助你简化该功能的实现,相反经常会让这个功能的实现变得更复杂。因为使用设计模式是为了让代码更加健壮和更有弹性。说白了就是让以后更好的维护和扩展。当你写代码的时候开始想我这样写如果以后要改了好不好改,如果要增加一个功能好不好增加的时候你就开始进入设计模式的大原创 2016-08-07 22:57:11 · 2200 阅读 · 0 评论 -
Thinking in java学习1
Smalltalk的五项基本特征:1、万物皆对象。将对象想成一种特殊的变量(对象也是一种变量);它存储数据(对象的属性),而且还可以让你“提要求”,命令它进行某些操作(对象的方法)。从理论上讲,你可以把所有待解决的问题中的概念性组件(狗,建筑,服务等)都表示成程序里的对象。2、程序就是一组相互之间传递消息,告诉对方该干些什么的对象。你只要向那个对象“发一个消息”,就能向他提出要求。更确切的原创 2013-08-06 10:55:22 · 513 阅读 · 0 评论 -
thinking in java 学习5
关于在编程中是否使用继承:在面向对象的编程中,判断是否需要使用继承时,就问一下你是不是需要把新类向上转型为基类,如果你必须向上转型,那么继承就是必须的,如果不需要,那么就该再看看是不是应该用继承了。Final关键字:(final表示不变,static表示只有一个)Final的数据:final修饰的数据称为常量。常量能用于下列两种情况:1、可以是“编译时的常量”,这样就再也不能改了。原创 2013-08-12 13:51:09 · 522 阅读 · 0 评论 -
thinking in java 学习4
this关键字:java如何判断是哪个对象调用了类的方法呢?事实上编译器暗中做了许多事情。调用方法的那个对象的引用会被当做一个非常重要的参数传给对象所调用的方法。如Test t1 = new Test(), t2 = new Test(); t1.test();t2.test();实际上在编译器内部这两个方法调用就成了Test.test(t1);Test.test(t2);假设你想在方原创 2013-08-08 16:11:12 · 490 阅读 · 0 评论 -
Thinking in java学习3
位运算符:位运算符能让你逐位操控基本类型的数据。两个参数的相对应的各位分别进行布尔运算,其结果就是位运算的结果。与运算符(&):输入位都是一则返回一,否则为零(只要有0就返回0)或运算符(|):输入的两位当中只要有一个一,则返回一,否则返回0(只要有1就返回1)异或运算符(^):输入的两位中有且只有一个一,则返回一,否则返回0(相同为0,不同为1)非运算符(~):这是一个单元运算符原创 2013-08-07 15:11:04 · 469 阅读 · 0 评论 -
Thinking in java学习2
数据存在哪里:1、寄存器(registers)。这是反映最快的存储,因为它所处位置不同:在处理器里。不过寄存器的数量非常有限,所以它是由编译器分配的。你非但不能直接控制寄存器,甚至连它在的证据也找不到。2、栈(stack)。位于"常规内存区"里,处理器可以通过栈指针对他进行直接访问。栈指针向下移就创建了新的存储空间,向上移就释放内存空间。只是仅次于寄存器的最快、最有效率的分配内存的方法。由原创 2013-08-06 18:54:36 · 499 阅读 · 0 评论 -
java多线程与并发总结
此文转载于http://www.cnblogs.com/yshb/archive/2012/06/15/2550367.html1. 计算机系统使用高速缓存来作为内存与处理器之间的缓冲,将运算需要用到的数据复制到缓存中,让计算能快速进行;当运算结束后再从缓存同步回内存之中,这样处理器就无需等待缓慢的内存读写了。缓存一致性:多处理器系统中,因为共享同一主内存,当多个处理器的转载 2013-07-31 14:35:37 · 697 阅读 · 0 评论 -
java反射
惭愧啊惭愧,搞了这么久才回头看看反射这个神器,看样子有必要再把java基础好好研究研究啊!个人感觉java反射涉及到的几个关键的类就是java.lang.Class、java.lang.reflect.Method、java.lang.reflect.Field三个类。Class类可以获取到class对象的所有相关信息,包括公有、私有的属性和方法以及父类的信息和方法。Class的几个比原创 2013-07-30 14:26:30 · 547 阅读 · 0 评论 -
java动态代理
关于java代理,我觉得一种比较形象的解释就是明星和经纪人。明星的主要任务是唱歌和演戏,如果所有的事都由明星来做那么明星就会累死,所以需要一个经纪人来帮他分担其他的任务。这也正是java所倡导的单一职责原则:一个类,只有一个引起它变化的原因。应该只有一个职责。每一个职责都是变化的一个轴线,如果一个类有一个以上的职责,这些职责就耦合在了一起。这会导致脆弱的设计。当一个职责发生变化时,可能会影响其它的原创 2013-07-30 16:51:03 · 539 阅读 · 0 评论 -
java文件读写操作大全
java文件读写操作大全转自http://blog.sina.com.cn/s/blog_4a9f789a0100ik3p.html一.获得控制台用户输入的信息 public String getInputMessage() throws IOException...{ System.out.println("请输入您的命令∶");转载 2013-06-08 11:29:34 · 417 阅读 · 0 评论