
Java
文章平均质量分 53
hello_ljfbest
左手程序,右手写诗……
展开
-
java 线程基础
进程和线程的基础知识 进程:运行中的应用程序称为进程,拥有系统资源(cpu、内存)线程:进程中的一段代码,一个进程中可以有多段代码。本身不拥有资源(共享所在进程的资源)在java中,程序入口被自动创建为主线程,在主线程中可以创建多个子线程。区别: 1、是否占有资源问题 2、创建或撤销一个进程所需要的开销比创建或撤销一个线程所需要的开销大。 3、进程为重量原创 2011-11-15 21:04:58 · 968 阅读 · 0 评论 -
金山的一道有关线程的笔试题
金山的一道有关线程的笔试题在北京时参加金山校招的一道笔试题:四个线程,a b c d ,共享一个变量 i, ab 为加线程,cd 为减线程,四个线程依次执行,顺序为 abcd,输出为 0 1 2 1 0 1 2 1 0……当时觉得这道题还可以,不一会儿就写出来了,我的思路是:四个线程,ab为一个锁,cd为一个锁,两个锁交替执行,每个锁的两个线程交替执行。后来回校后,zw问这原创 2013-09-28 16:10:13 · 1059 阅读 · 0 评论 -
java反射及应用
通过JAVA反射能够知道这个类的所有属性和方法,并能够调用它的任意方法,这样就能够动态的获取对象信息以及动态调用对象的方法,所以说反射是Java被视为准动态语言的关键性质。反射的核心就是允许在运行时通过Java Reflection API来取得已知名字的Class类的相关信息,动态地生成此类。注意,这个类几乎所有的信息都能获取,如class隶属哪个package、class导入哪些classes原创 2013-09-26 16:33:52 · 832 阅读 · 0 评论 -
基于annotation的表单验证
现在的一些框架中提供了服务器端数据验证功能,很好用。springMVC使用了JSR-303 Validator(java标准)验证, 可以查看 JSR 303 - Bean Validation文档,使用时只需bean-validator.jar包即可,然后在实体类中采用注解形式标明验证条件。下面,用注解和反射实现一下加深这些框架对验证实现的原理.User实体只有username、pass原创 2013-09-26 16:28:44 · 1309 阅读 · 0 评论 -
java 常见错误积累
1,异常处理jvm提供了垃圾回收机制,垃圾回收机制属于java内存管理的一部分,它只是负责回收堆内存中分配出来的内存,至于程序中打开的物理资源,如输入/出流,垃圾回收机制是无能为力的,要正确关闭。通常结合finally块当java程序执行try/catch时遇到return或者throw语句时,return或throw会导致该方法立即结束。系统执行完retrun语句之后(注意,finall原创 2012-11-04 21:20:58 · 892 阅读 · 0 评论 -
类加载器
http://www.ibm.com/developerworks/cn/java/j-lo-classloader/index.html类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一。它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的。Java转载 2012-10-25 11:41:15 · 650 阅读 · 0 评论 -
Set集合
A了一道题,发现了自己关于java set一些基础知识的不足……http://acm.nyist.net/JudgeOnline/problem.php?pid=8起初以为判断两个元素的重复性是复写equals(),总是不对,后来查了下,是自己错了。Set集合的功能及函数和Collection一样的,常见的子类: HashSet : 数据结构是Hash表,保证元素唯一性的原理:原创 2012-09-15 18:53:16 · 999 阅读 · 0 评论 -
java内存分配
以下内容均来自互联网……一般Java在内存分配时会涉及到以下区域:寄存器:我们在程序中无法控制栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中。Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。堆:堆内存用来存放由new创建的对象和数组。在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。数组和对象本身占据的转载 2013-09-28 16:22:26 · 813 阅读 · 0 评论 -
java多态
1. 对于成员变量:如果父类中没有此成员变量,对象调用时编译不会通过;如果有那么输出的是父类中变量的值。也就是说编译和运行都会依据父类。class Father{ int num=10;}public class Son extends Father{ int num=20; public static void main(String[] args) { Father f=原创 2013-09-27 20:47:27 · 953 阅读 · 0 评论 -
关于一道简单的Java 基础面试题的剖析: short s1=1;s1 = s1 +1会报错吗?
关于一道Java面试题,今天没事就剖析了一下,供初学Java和不清楚的朋友参考学习。题目:short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?解答:Java规范有这样的规则[1.高位转低位需要强制转换 2.低位转高位自动转.]short s1转载 2013-11-07 17:45:32 · 1040 阅读 · 0 评论 -
tomcat与apache
tomcat与apachetomcat由 Apache 组织开发的一个 Servlet/JSP 容器,负责解析和运行JSP,由纯 Java 开发完成的,若系统的负荷压力不是太大的话也可以兼作 Web 服务器。 Jsp(JavaServer Page)是在普通Html中嵌入了Java代码的一个脚本,在这一点上,它与其它的脚本语言如Php(基于c/c++)一样,但它与其它语言不原创 2013-10-25 21:14:34 · 1341 阅读 · 0 评论 -
java 细节
class Father{ Father(){ System.out.println("fatherrun!"); }}class Son extends Father{ Son(){ System.out.println("sonrun!"); }}public class Demo {原创 2013-10-14 21:19:47 · 817 阅读 · 0 评论 -
java 方法和属性在继承中的易错处
java 方法和属性在继承中的易错处私有属性和方法可不可以被继承哪?看下面的运行结果:class Life{ private String name; public String getName(){ return this.name; } public void setName(String name){ thi原创 2013-09-28 16:19:29 · 983 阅读 · 0 评论 -
Java对象序列化
序列化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候又可再获得,就好比hibernate将对象保存到数据库中。类通过实现 java.io.Serializable 接口以启用其序列化功能。此接口没有方法或字段,仅用于标识可序列化的语义。序列化的过程就是对象写入字节流和从字节流中读取对象。将对象状态转换成字节流之后,可以用java.io包中的各种字节流类将其保存到文件中,管道到另一原创 2013-09-28 16:15:41 · 1082 阅读 · 0 评论 -
java 的初始化顺序
首先看一段代码来考考大家,请大家在不运行程序的情况下,输出以下代码的结果:class Insect { int i = 9; int j; Insect() { prt("i = " + i + ", j = " + j); j = 39; } static int x1 = prt("static Insect.x1 initialized"); s原创 2011-12-03 09:09:16 · 1062 阅读 · 4 评论 -
jdk jre jvm的关系
1、.JVM – java virtual machineJVM就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。这也是java跨平台的原因。2.、JRE –原创 2013-09-28 16:21:07 · 772 阅读 · 0 评论 -
java注解
注解在很多框架中开始流行起来,这源于注解的方便,java提供的常用三种注解:@Override,@Deprecated(用于方法上,标记此方法已过时),@SuppressWarnings。注解的格式:12345678@Retention(RetentionPolicy原创 2013-09-28 16:11:49 · 952 阅读 · 0 评论 -
理解ThreadLocal和匿名类
ThreadLocal是什么ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。ThreadLocal并不是一个Thread,而是Thread的局部变量,当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本原创 2012-10-10 11:24:59 · 1667 阅读 · 0 评论 -
java环境变量设置 找不到或无法加载主类 com.sun.tools.javac.Main
安装jdk1.7后,环境变量设置了,java,java -version 没事,但javac不能用:找不到或无法加载主类 com.sun.tools.javac.Main 明显是缺少jar,网上好多都说配置错了,真无语,回答的什么啊后来把360关了,可以了,出现此问题原因是竟是360:windows下配置JDK环境变量:1.安装JDK,安装过程中可以自定义安装目录等信息,例如我们选择原创 2011-09-01 13:06:26 · 7629 阅读 · 0 评论 -
网络编程
UDP:1,每个数据报中都给出了完整的地址信息,因此无需要建立发送方和接收方的连接。 2,UDP传输数据时是有大小限制的,每个被传输的数据报必须限定在64KB之内。 3,UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方TCP:1,面向连接的协议,在socket之间进行数据传输之前必然要建立连接,所以在TCP中需要连接时间。原创 2011-11-14 20:53:58 · 957 阅读 · 0 评论 -
NYOJ 239 月老的难题
描述月老准备给n个女孩与n个男孩牵红线,成就一对对美好的姻缘。现在,由于一些原因,部分男孩与女孩可能结成幸福的一家,部分可能不会结成幸福的家庭。现在已知哪些男孩与哪些女孩如果结婚的话,可以结成幸福的家庭,月老准备促成尽可能多的幸福家庭,请你帮他找出最多可能促成的幸福家庭数量吧。假设男孩们分别编号为1~n,女孩们也分别编号为1~n。输入第一行是一个原创 2011-11-30 11:52:45 · 1704 阅读 · 0 评论 -
java 两种方式实现自定义排序
package test;//Comparable 使对象本身具有可比性,这种方式称为元素的自然顺序或默认顺序//Comparator 元素自身不具备比较性或者比较性不是所需要的,在集合初始化让其具有比较性 (更实用)import java.util.*;//class public class TreeSetDemo { public static void main(Stri原创 2011-11-03 12:29:02 · 910 阅读 · 0 评论 -
实现的一个聊天程序
import java.io.*;import java.net.*;class Listen implements Runnable{ Socket s; Listen(Socket s) { this.s=s; } public void run() { String ip=s.getInetAddress().getHostAddress(); while原创 2011-11-17 15:27:29 · 675 阅读 · 0 评论 -
jdbc 基础学习
package study;import java.sql.*;import java.util.Scanner;//public class StudyJdbc {//// public static void main(String[] args) {// Connection conn = null;// Statement st = null;// ResultS原创 2011-12-19 10:39:58 · 906 阅读 · 0 评论 -
java 多态陷阱
照原来,先考考大家,在不运行的情况下说出下面程序的输出结果(请先注意这是关于多态的啊)package acm;//例一class Test extends Main { private void write() { System.out.println("Test"); }}public class Main { private void write() { Sy原创 2011-12-12 21:27:44 · 743 阅读 · 0 评论 -
java 线程死锁
死锁:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不能正常运行。简单的说就是:线程死锁时,第一个线程等待第二个线程释放资源,而同时第二个线程又在等待第一个线程释放资源。 导致死锁的根源在于不适当地运用“synchronized”关键词来管理线程对特定对象的访问线程间通信:就是多个线程在线程在操作同一个资源,但是操作的动作不同下面是两个线程间的通信原创 2011-11-16 08:53:03 · 854 阅读 · 0 评论 -
java io流
import java.io.*;/*io流细节@ blog.youkuaiyun.com/ljfbest*/class Test { public static void main(String[] args) throws IOException { /* FileWriter fw=new FileWriter(new File("a.txt"),true); //在原创 2011-11-13 17:56:12 · 822 阅读 · 0 评论 -
nextLine()和next()注意点
next()一定要读取到有效字符后才可以结束输入,对输入有效字符之前遇到的空格键、Tab键或Enter键等结束符,next()方法会自动将其去掉,只有在输入有效字符之后,next()方法才将其后输入的空格键、Tab键或Enter键等视为分隔符或结束符。简单地说,next()查找并返回来自此扫描器的下一个完整标记。完整标记的前后是与分隔模式匹配的输入信息,所以next方法不能得到带空格的字符串。原创 2012-04-27 19:17:38 · 1069 阅读 · 0 评论 -
java String 类细节
@Test public void StringTest(){ String s1="abc"; String s2="abc"; System.out.println(s1==s2);//true String s3=new String("abc"); String s4=new String("abc"); System.out.println(s3==s4);//原创 2012-04-16 11:53:17 · 1208 阅读 · 0 评论 -
java正则表达式学习
// //System.out.println(s.getBytes().length);//一个汉字一个长度// if(s.matches("\\w[\\w\u4e00-\u9fa5]{1,6}"))// System.out.println("true");; /* *匹配 */// //[abc] 匹配长度为1的字符串:a或b或c// Syst原创 2012-04-13 21:45:21 · 874 阅读 · 0 评论 -
日期处理
import java.util.*;import java.text.*;public class Main { public static void main(String[] args) throws Exception { DateFormat df=DateFormat.getDateInstance(); DateFormat dft=DateFormat.getDate原创 2011-12-16 13:00:45 · 863 阅读 · 0 评论