Java
congduanxd
每天进步一点点
展开
-
偷点小懒——Java命令行编译运行批处理代码
初学Java时得先用cmd编译执行java代码,但是每次都很麻烦地得进入JDK目录,对一些菜鸟们来说cmd命令也不太想记,于是偶想到用批处理直接秒杀这一过程。将下列代码放进txt文档,后缀重命名为.bat,使用时仅需输入文件名。代码如下,仅供参考,欢迎拍砖:rem -原创 2011-09-04 02:35:24 · 1516 阅读 · 1 评论 -
[Understanding Java Garbage Collection]理解Java垃圾收集(一)
Understanding Java Garbage Collection理解Java垃圾收集原文链接:http://www.cubrid.org/blog/dev-platform/understanding-java-garbage-collection/了解Java中GC的工作机制有什么好处?除了满足软件工程师的求知欲之外,了解GC工作机制还能帮助你写出更好的Java程序。这是我自己非常个人和翻译 2015-03-24 21:32:29 · 1308 阅读 · 0 评论 -
JDK中LinkedList的实现分析
LinkedListJDK中的LinkedList是继承自AbstractSequentialList,并实现了List、Deque、Queue等接口,并支持拷贝和序列化。public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Queue<E>, Cloneable,原创 2015-04-15 22:40:15 · 889 阅读 · 0 评论 -
JDK中优先级队列PriorityQueue实现分析
Java优先级队列PriorityQueue我们知道,堆可以实现优先级队列。 优先级队列可以实现以下功能: 插入一个数值取出最小的数值(获得数值,并且删除)我们来看看JDK源码中的PriorityQueue的实现。 首先看一下注释的介绍: A PriorityQueue holds elements on a priority heap, which orders the ele原创 2015-04-21 22:54:55 · 2370 阅读 · 0 评论 -
Java初始化顺序
最近在写Java代码的时候,无意中调试发现一个问题。 问题是这样的: 有两个Class,其中AbstractClassA是一个抽象类,定义了一个抽象函数initInSuperClass(),这个抽象函数在其构造函数中被调用。另外一个ClassB继承自AbstractClassA,并且实现了抽象函数initInSuperClass()。两个Class中均有一个变量的定义和初始化,并在构造函数中被赋原创 2015-05-25 21:11:57 · 1888 阅读 · 0 评论 -
Java在try中return后finally还执不执行?
Java方法中,在try中return之后,后面的finally还执行吗? 测试代码如下:public int print(){ try { System.out.println("try"); return 1; } catch(Exception e){ return 0; } finally{原创 2015-09-07 22:57:09 · 5835 阅读 · 4 评论 -
Callable和Future、FutureTask
Java中除了Runnable接口,还有Callable接口。 两者区别是,后者可以有返回值,一般用于耗时计算。 Runnable接口在线程中用得比较多,一般可以作为线程执行体,Callable一般会与FutureTask进行 Java源码中。Callable接口的源码如下:/** * A task that returns a result and may throw an excepti原创 2015-09-24 22:25:46 · 2461 阅读 · 1 评论 -
Java Static代码块与构造方法初始化顺序
Java中Static代码块与构造方法的初始化顺序是怎么样的呢? 举个例子,也是笔试题常考的一类题目。三个Class,分别是ClassA,ClassB,ClassC,其中B继承自A,C继承自B。public class ClassA { static{ System.out.println("init in static A"); } public ClassA()原创 2015-09-06 17:31:58 · 3700 阅读 · 1 评论 -
360公司2016校园招聘笔试题大题一
题意大概是说,输入多行,每行一个数,然后分解成素数相乘的形式,并以7段数码管的显示方式打印。示例注意点分解的时候,可能有超过9的素数因子,比如13,需要转换成1和3进行打印代码import java.io.*;import java.util.*;public class Main { static char[][] numbers = { {' ', ' ','-',' ', '原创 2015-09-20 15:50:05 · 2987 阅读 · 2 评论 -
Java并发工具类CountDownLatch
java的并发工具中有一个CountDownLatch类,用于多个线程等待同一个信号。 想象一个场景,多个线程在处理不同的任务,需要在所有的线程执行到某个阶段之后,执行某一个任务。比如软件使用多线程加载不同的模块,等全部加载完成再启动下一步操作。看一下源码注释: A synchronization aid that allows one or more threads to wait unti原创 2015-09-20 19:28:15 · 2264 阅读 · 2 评论 -
Java双括号初始化
常用的初始化方式Java中可以使用括号进行初始化,并且分为静态代码块和非静态代码块。如下:public class Test { public static int num = 0; String s = ""; { s = "abc"; System.out.println("non static init"); } stati原创 2015-11-12 19:58:22 · 7029 阅读 · 6 评论 -
Java并发工具类CyclicBarrier
CyclicBarrier同步屏障java并发工具类中有一个叫做CyclicBarrier的类,与CountDownLatch类似,都可以实现线程间的同步,但是差别是CyclicBarrier是可重置的同步屏障。 想象一个场景,有N个人不同时间走到一扇门,因为门需要N个人合力才能推开,所以人不足N个时,只能阻塞在此,等到N个人都到了之后,可以推开门,继续进行之前的工作。CyclicBarrier就原创 2015-09-24 12:53:42 · 2176 阅读 · 0 评论 -
Java并发工具类LockSupport
LockSupportJ.U.C框架中有一个叫做LockSupport的类,可以精准地阻塞和唤醒特定的线程,并作为其他同步类的原语。 LockSupport包含一个park(Object blocker)和unpark(Object blocker)方法,分别用于阻塞和唤醒。举个例子,下面的代码包含一个线程thread1和主线程,在thread1中调用park方法,在主线程中调用unpark,然后原创 2015-09-24 13:32:00 · 3593 阅读 · 0 评论 -
了解Java的4种引用类型
Java引用类型Java中有两种类型,值类型和引用类型。其中引用类型有点类似指针,它保存着对象的地址。通过引用,可以对堆中的对象进行操作。《深入理解Java虚拟机 JVM高级特性与最佳实践》一书3.2.3节中对引用有如下描述: 在JDK 1.2之前,Java中的引用的定义很传统:如果reference类型的数据中存储的数值代表的是另一块内存的起始地址,就称这块内存代表着一个引用…… 在JD原创 2015-03-23 11:59:51 · 1404 阅读 · 0 评论 -
JDK中ArrayList的实现分析
JDK中ArrayList的实现分析 第一次使用Markdown写博客,使用MarkDownPad 2先写好拷贝过来的。查看Android中的JDK源码ArrayList的实现.JDK中的List类族,参考《Java程序性能优化》3.2.1节:ArrayList继承自AbstractList,后者是一个抽象类,又继承自AbstractCollection,并实现了List接口。public a原创 2015-03-20 11:28:44 · 1142 阅读 · 0 评论 -
[Understanding Java Garbage Collection]理解Java垃圾收集(二)
GC老年代老年代GC基本上是在空间慢的时候发生。执行过程与GC的类型有关,因此在你了解GC的种类之后更简单。根据JDK7,有5中GC类型。 Serial GCParallel GCParallel Old GC (Parallel Compacting GC)Concurrnt Mark & Sweep GC (or “CMS”)Garbage First(G1) GC以上里面,ser翻译 2015-03-25 21:46:36 · 1305 阅读 · 0 评论 -
java开发环境安装及环境变量配置(写给java初学者)
(个人愚见,欢迎拍砖)在Windows上编写和运行java程序(以下教程仅限Windows)首先须安装JDK。编译java代码可以通过命令行和集成开发环境(IDE,一般用eclipse)等方式,JDK和eclipse网上均可下载,我这有张光盘包含上诉资源,同学们要用可直接来取原创 2011-08-29 00:28:55 · 1638 阅读 · 0 评论 -
偷点小懒——批处理配置Java环境变量
感觉Java环境变量配置太复杂?来试试批处理吧,只需输入JDK安装目录,几秒钟完成配置。将如下代码放在记事本,改后缀为.bat,双击运行即可。echo offclsecho 1.配置JAVA_HOMEecho 请输入完整的JDK安装目录,形式为...\jdk原创 2011-09-04 18:07:52 · 1340 阅读 · 2 评论 -
Java任选课学习——Building小程序
上机题:设计并实现一个代表大楼的Building类,利用传递给该类构造方法的参数指定大楼的宽度与高度。每幢大楼均为黑色,上面有一些黄颜色的小窗户,窗户数量为随机数。创建一个程序,绘制多幢大楼(大楼个数也为随机数),如下:实现:(注:没有考虑窗户重叠现象)构原创 2011-09-30 15:52:20 · 1690 阅读 · 0 评论 -
Java定制系统日期显示
转自:http://topic.csdn.net/t/20040718/17/3186039.html1、具体类(和抽象类相对)java.util.Date 2、抽象类java.text.DateFormat 和它的一个具体子类,java.text.SimpleDat转载 2011-10-07 22:55:39 · 1039 阅读 · 0 评论 -
Eclipse中10个最有用的快捷键组合
<!--@page {margin:2cm}p {margin-bottom:0.21cm}-->转自百度一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合。通过这些组合可以更加容易的浏览源代码,使得整体的开发效率和质量得到提升。1.ctrl+shift+r:打开资源这可能是所有快捷键组合中最省时间的了。这组快捷键可以让转载 2011-11-04 13:25:53 · 1331 阅读 · 0 评论 -
ubuntu下eclipse打开java文件,注释内容为乱码的解决方法
转自:http://blog.csdn.net/lostpen/article/details/3428624今天打开了以前的工程,想看看以前写的代码,打开后发现以前的java源文件的注释变成了乱码,于是在google上开始了搜索,得到了结论:问题出现的原因:因为windows下默认的编码是GBK,在ubuntu下是UTF-8所以,所以在windows下的注释,在ubuntu下就变成了转载 2011-11-04 17:22:03 · 1206 阅读 · 0 评论 -
Eclipse代码提示功能设置(Java & C/C++)
Java:增强Eclipse 的代码提示功能,具体怎么样来配置?下面开始说步骤:1. 打开Eclipse,然后“window”→“Preferences”2. 选择“java”,展开,“Editor”,选择“Content Assist”。3. 选择“Content Assist”,然后看到右边,右边的“Auto-Activation”下面的“Auto Activation tri转载 2011-11-11 00:25:49 · 2192 阅读 · 1 评论 -
AES加密解密算法的Java实现
工作需要,花了两个下午将Aes算法了解了一下并用java实现了一遍(此处借鉴了老外的C#的实现),本人非信息安全专业和软件,代码还有漏洞,欢迎指出~~~先贴上代码:=================================================AES.java主要的类实现===================================================原创 2011-12-07 18:44:50 · 6371 阅读 · 9 评论 -
Java模拟时钟
import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.Panel;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java原创 2011-11-20 00:41:12 · 5135 阅读 · 1 评论 -
Java日期计算天数差需要注意的问题
最近在用Java实现公历转农历,当我在网上查找农历转换算法的时候,发现很多都是这样做的:使用历年观测的农历数据集,以1900-2099年之间为例,数据集包含每年农历的大小月定义,以及闰月是哪一个月。这样我们就可以用1900年到今天的天数,减去农历从1900年以来N年的总天数,就可以得到今年农历已经过去的天数,同样也可以算出今年农历这个农历月已经过去的天数,就可以得到几月初几。但是其中,我们需要计算原创 2014-12-16 23:46:05 · 2622 阅读 · 0 评论 -
Perl自动生成Android Activity的Java文件
开发Android时,每添加一个Activity,都需要新建一个Layout文件和一个Java文件,还不能忘记在Manifest中注册,然后在Java文件中使用findViewById找到控件,才能开始写逻辑代码,如果是按钮,需要添加OnClickListener。 于是写了一个简单的perl脚本,根据Layout文件,生成对应的Java文件,代码如下,读者可以修改实现更加完善的功能原创 2014-12-18 10:13:17 · 1162 阅读 · 0 评论 -
使用Maven构建Java项目
一、Maven是什么?Maven 是一个项目管理和构建自动化工具。Maven基于POM(Project object model),能够管理项目的构建、报表、文档等信息。我们这里主要讲的Maven的项目构建功能。有了Maven,我们可以方便的管理Java项目的生命周期和依赖。通过定义一个POM文件,我们就可以自动的完成编译、测试、打包甚至发布等过程。 二、为什么要用Maven?做过Java项目的童原创 2014-12-11 15:19:43 · 2426 阅读 · 1 评论 -
Java线程的状态
线程一般会有多种状态,Java的状态有: - NEW - RUNNABLE - BLOCKED - WAITING - TIMED_WAITING - TERMINATED对于各个状态的含义,直接看Thread.java中的源码注释:public enum State { /** * Thread state for a thread which has原创 2015-09-24 15:53:15 · 2573 阅读 · 2 评论