java基础
文章平均质量分 71
Altynai0514
人类的生活因为优秀的程序员和美妙的程序而变得更加美好
展开
-
Executor, ExecutorService 和 Executors 间的不同
java.util.concurrent.Executor, java.util.concurrent.ExecutorService, java.util.concurrent. Executors 这三者均是 Java Executor 框架的一部分,用来提供线程池的功能。因为创建和管理线程非常心累,并且操作系统通常对线程数有限制,所以建议使用线程池来并发执行任务,而不是每次请求进来时创建一个转载 2017-07-18 10:49:46 · 410 阅读 · 0 评论 -
Java上的try catch并不影响性能
最近因为担心自己开发的库不稳定,会影响到接入产品的正常运行,在代码的不少地方都加了一层try catch,主要是为了避免自己的一些异常抛出导致,应用crash,捕获的异常也并没有做什么特别的处理,只是在log中输出该异常的信息。try catch多了后,就开始担心会不会影响性能,以前学C或C++的时候好像曾经被警告过要尽量少使用try catch,好像是在压栈的时候会更消耗神马的,其实说真的并没有转载 2015-06-17 17:01:52 · 562 阅读 · 0 评论 -
Java并发编程:Lock
转自:http://www.cnblogs.com/dolphin0520/p/3923167.html转载 2015-11-02 23:28:59 · 228 阅读 · 0 评论 -
double类型相加(減、乘、除)结果会有些误差
前提介绍 今天在调试代码的时候发现了一个double类型数据相减的有趣问题,148163.1 - 82692.09大家猜猜结果等于多少,经过调试最终为5471.010000000009。是不是很奇怪,下面将说明这其中的奥妙!原因说明 double属于floating binary point types,也就是说都double型的数值在相加减的时候原创 2017-02-23 13:58:16 · 12754 阅读 · 0 评论 -
ScheduleFactory
/* * file name: ScheduleFactory.java * copyright: Unis Cloud Information Technology Co., Ltd. Copyright 2015, All rights reserved * description: * mofidy staff: zheng * mofidy time: 2015年8原创 2015-08-22 09:50:44 · 1007 阅读 · 0 评论 -
jstack分析
1、查出某个异常进程可以使用top命令查看进程的cpu或mem使用率来分析,例pid=5617。2、查出该异常进程中的异常线程可以使用ps mp 5617 -o THREAD,tid命令来查看,例tid=324。3、使用jstack跟踪3.1 使用jstack pid > /home/jstack.log将线程栈信息输出到临时文件。3.2 将该异常的线程号换成换成16进制:原创 2017-03-01 17:15:28 · 1723 阅读 · 0 评论 -
什么是数据持久化?
1.什么是持久化?本人找了好多文章都没有找到满意的答案,最后是从孙卫琴写的《精通hibernate:Java对象持久化技术详解》中,看到如下的解释,感觉还是比较完整的。摘抄如下:狭义的理解: “持久化”仅仅指把域对象永久保存到数据库中;广义的理解,“持久化”包括和数据库相关的各种操作。● 保存:把域对象永久保存到数据库。● 更新:更新数据库中域对象的状态。●转载 2016-06-07 11:21:42 · 404 阅读 · 0 评论 -
不同线程之间的通信方式
实现不同线程间的通讯:共享内存;消息队列;管道原创 2017-02-20 16:51:49 · 371 阅读 · 0 评论 -
堆栈简介
栈:主要存放基本类型数据(byte、short、int、long、float、double、char、boolean)和对象的引用变量。 优点:存取速度比较快,仅次于寄存器;栈的数据可以共享。 缺点:存在栈中的数据大小与生存期必须确定,缺乏灵活性。堆:主要存放对象实体,是一个运行时数据区,类的对象和数组从中分配空间(通过new、new array等指令建立)。原创 2017-02-28 11:31:43 · 438 阅读 · 0 评论 -
comparator接口与Comparable接口的区别
1. Comparator 和 Comparable 相同的地方他们都是java的一个接口, 并且是用来对自定义的class比较大小的,什么是自定义class: 如 public class Person{ String name; int age }.当我们有这么一个personList,里面包含了person1, person2, persion3....., 我们用Collect转载 2015-12-06 20:52:25 · 374 阅读 · 0 评论 -
JAVA基础知识
1.JAVA:write once,run anywhere2.JAVA优势:跨平台、安全、完全面向对象、简单、健壮3.java源文件-(编译器javac.exe编译)-java平台可以执行的字节码文件-(JVM java.exe解释)-本地机器码-机器运行(编译、解释的过程)过程:编译源文件.java-java编译生成.class文件-java运行.class文件4.java有51个关键原创 2015-12-02 22:56:38 · 313 阅读 · 0 评论 -
JAVA的值传递还是引用传递——只有值传递
JAVA的值传递还是引用传递——只有值传递java语言深入(java中是传值还是引用)关键字: java基础深入 熟悉C的程序员都用过指针,对指针可谓爱之深恨之切。指针是指向一块内存地址的内存数据(有些拗口),也就是说指针本身是一个占用4字节内存的 int(32 位系统内),而这个int值恰恰又是另一块内存的地址。比如"hello"这个字串,存放在@0x0000F000这个地址到转载 2015-11-21 21:31:52 · 368 阅读 · 0 评论 -
Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法
方案一:用Eclipse自带的Export功能步骤1:准备主清单文件 “MANIFEST.MF”,由于是打包引用了第三方jar包的Java项目,故需要自定义配置文件MANIFEST.MF,在该项目下建立文件MANIFEST.MF,内容如下:Manifest-Version: 1.0Class-Path: lib/commons-codec.jar lib/commons-转载 2015-06-11 14:30:55 · 449 阅读 · 0 评论 -
undefined与null的区别
undefined与null的区别作者: 阮一峰大多数计算机语言,有且仅有一个表示"无"的值,比如,C语言的NULL,Java语言的null,Python语言的None,Ruby语言的nil。有点奇怪的是,JavaScript语言居然有两个表示"无"的值:undefined和null。这是为什么?一、相似性在J转载 2014-09-26 14:51:06 · 379 阅读 · 0 评论 -
Java 并发编程:深入剖析 ThreadLocal
以下是本文目录大纲:对ThreadLocal的理解深入解析ThreadLocal类ThreadLocal的应用场景若有不正之处请多多谅解,并欢迎批评指正。一.对ThreadLocal的理解ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,其实意思差不多。可转载 2017-07-12 22:30:05 · 338 阅读 · 0 评论 -
HashMap 和 HashTable 到底哪不同 ?
HashMap和HashTable有什么不同?在面试和被面试的过程中,我问过也被问过这个问题,也见过了不少回答,今天决定写一写自己心目中的理想答案。代码版本JDK每一版本都在改进。本文讨论的HashMap和HashTable基于JDK 1.7.0_67。源码见这里1. 时间HashTable产生于JDK 1.1,而Ha转载 2017-07-11 22:53:40 · 400 阅读 · 0 评论 -
为什么 Java 要把字符串设计成不可变的
String是Java中一个不可变的类,所以他一旦被实例化就无法被修改。不可变类的实例一旦创建,其成员变量的值就不能被修改。不可变类有很多优势。本文总结了为什么字符串被设计成不可变的。将涉及到内存、同步和数据结构相关的知识。字符串池字符串池是方法区中的一部分特殊存储。当一个字符串被被创建的时候,首先会去这个字符串池中查找,如果找到,直接返回对该字符串的引用。转载 2017-07-11 21:16:38 · 317 阅读 · 0 评论 -
40个Java多线程问题总结
1、多线程有什么用?一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓”知其然知其所以然”,”会用”只是”知其然”,”为什么用”才是”知其所以然”,只有达到”知其然知其所以然”的程度才可以说是把一个知识点运用自如。OK,下面说说我对这个问题的看法: (1)发挥多核CPU的优势 随着工业的进步,现在的笔记本、台式机乃至商用的应用服转载 2017-06-05 22:08:29 · 222 阅读 · 0 评论 -
JVM调优总结 -Xms -Xmx -Xmn -Xss
堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统 下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:java -Xmx3550m -X转载 2017-04-26 20:51:14 · 212 阅读 · 0 评论 -
java中对象与字节数组相互转换
将字节转换为对象public static Object ByteToObject(byte[] bytes) { Object obj = null; try { // bytearray to object ByteArrayInputStream bi = new ByteArrayInputStream(bytes); ObjectInputStream oi = ne转载 2017-05-27 14:23:03 · 320 阅读 · 0 评论 -
Arrays.asList() 返回的list不能add,remove
Arrays.asList()返回的是List,而且是一个定长的List,所以不能转换为ArrayList,只能转换为AbstractList原因在于asList()方法返回的是某个数组的列表形式,返回的列表只是数组的另一个视图,而数组本身并没有消失,对列表的任何操作最终都反映在数组上. 所以不支持remove,add方法的下面是一段很简单的测试代码:转载 2015-11-09 12:08:12 · 2054 阅读 · 1 评论 -
session和cookie讲述
一、介绍Cookie是Web服务器发送给客户端的一小段信息,客户端请求时可以读取该信息发送到服务器端,进而进行用户的识别。对于客户端的每次请求,服务器都会将Cookie发送到客户端,在客户端可以进行保存,以便下次使用。客户端可以采用两种方式来保存这个Cookie对象,一种方式是 保存在客户端内存中,称为临时Cookie,浏览器关闭后 这个Cookie对象将消失。另外一种方式是保存在客户原创 2017-03-06 22:33:50 · 266 阅读 · 0 评论 -
java项目(用户管理)包结构
用户管理目录结构|-- data| |-- usermanagement.sql //usermanagement的刷库脚本 |-- sourcecode| |-- usermanagement // 项目名| | |-- pom.xml // maven管理配置文件| | |-- src // 源码目录| | |原创 2017-02-27 17:14:42 · 1092 阅读 · 0 评论 -
java项目编码规范
1 实现面向接口编程,service类都要实现接口,2 避免使用内部类,反射,抽象类。3 除日志,常量,枚举类以外不能有字符串出现。4 exception 统一在service层处理、不允许 catch Exception、尽量不使用synchronized,使用时需要CCB评审,除注释外代码中不可出现中文,建议用英文做注释。5 异常处理需要catch具体异常,不允许直接catch原创 2017-02-27 17:10:10 · 362 阅读 · 0 评论 -
精选30道Java笔试题解答
1. 下面哪些是Thread类的方法()A start() B run() C exit() D getPriority()答案:ABD解析:看Java API docs吧:http://docs.oracle.com/javase/7/docs/api/,exit()是System类的方法,如System.exit(0)。转载 2014-10-14 14:59:48 · 731 阅读 · 0 评论 -
JAVA多线程和并发基础面试问答(转载)
Java多线程面试问题1. 进程和线程之间有什么不同?一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用。而线程是在进程中执行的一个任务。Java运行环境是一个包含了不同的类和程序的单一进程。线程可以被称为轻量级进程。线程需要较少的资源来创建和驻留在进程中,并且可以共享进程中的资源。2. 多线程编程的好处是什么?在多线程程序中,多个线转载 2015-11-11 00:26:29 · 309 阅读 · 0 评论 -
SimpleJdbc: 用于简化数据库操作的Java库
转载地址:http://www.liaoxuefeng.com/article/001373892027458cb0198ae4f83452e8889be0cd552900a000我不喜欢Hibernate之类的ORM,因为它会自动给你把一对多和多对一的级联记录给查出来,一级缓存没啥用,二级缓存用处不大。取出的对象还是经过CGLIB代理的,Attach/Detach的状态尤其令人讨厌。对企转载 2015-10-25 21:48:37 · 463 阅读 · 0 评论 -
Eclipse中启动tomcat 浏览器无法访问8080端口
大家都知道,Eclipse配置web服务器的时候是通过tomcat目录,然后建立一个虚拟的目录.在Eclipse中总是可以看到一个叫server的文件夹.里面存着一些tomcat服务器的配置信息,而且在server.xml中同时也配置这你要运行的工程的虚拟目录.当然,而当你用Eclipse启动tomcat是始终无法在浏览器中访问8080端口,这是什么原因呢?首先,我先把Eclipse中的tom转载 2015-01-03 23:49:49 · 868 阅读 · 0 评论 -
js中的‘==’和‘===’
首先,== equality 等同,=== identity 恒等。 ==, 两边值类型不同的时候,要先进行类型转换,再比较。 ===,不做类型转换,类型不同的一定不等。 下面分别说明: 先说 ===,这个比较简单。下面的规则用来判断两个值是否===相等: 1、如果类型不同,就[不相等] 2、如果两个都是数值,并且是同一个值,那么[相等];(!例外)的是,如果其中至少一转载 2014-11-02 16:07:37 · 384 阅读 · 0 评论 -
获取java项目路径
一 相对路径的获得说明:相对路径(即不写明时候到底相对谁)均可通过以下方式获得(不论是一般的java项目还是web项目)String relativelyPath=System.getProperty("user.dir"); 上述相对路径中,java项目中的文件是相对于项目的根目录web项目中的文件路径视不同的web服务器不同而不同(tomcat是相对于 tomcat安装目录\b转载 2014-08-11 11:18:23 · 404 阅读 · 0 评论 -
java去除字符串空格
1. String.trim()trim()是去掉首尾空格 2.str.replace(" ", ""); 去掉所有空格,包括首尾、中间String str = " hell o ";String str2 = str.replaceAll(" ", "");System.out.println(str2); 3.或者replaceAll("转载 2014-07-11 09:12:02 · 863 阅读 · 0 评论 -
线程问题
public class JoinTest implements Runnable{ public static int a = 0; public void run() { for (int k = 0; k 5; k++) { a = a + 1; } }原创 2014-07-28 03:05:49 · 518 阅读 · 0 评论 -
Java中获取windows、Linux和windows7的MAC地址
Java代码 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.InetAddress; import java.net.NetworkInterface; /** *转载 2014-07-25 13:13:27 · 2920 阅读 · 0 评论 -
java中的length属性和length()方法和size()方法
1 java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性.2 java中的length()方法是针对字符串String说的,如果想看这个字符串的长度则用到length()这个方法.3.java中的size()方法是针对泛型集合说的,如果想看这个泛型有多少个元素,就调用此方法来查看! 这个例子来演示这两个方法和一个属性的转载 2014-03-21 15:21:52 · 892 阅读 · 0 评论 -
常见公共问题
1. Code Style(HQL关键字全大写,包名全小写,方法名动宾结构)2. 注意分层:Action用于数据组装转换,以及页面跳转;Service用于处理业务逻辑(有异常必须抛出);Dao仅操作数据库(不抛出异常)3. 尽量减少if else语句4. 建BaseDao,将dao的公共方法抽取出来5. 解决sql注入问题6. 解决脚本注入问题7.转载 2014-03-05 18:18:09 · 587 阅读 · 0 评论 -
比较“==”和equals()区别
比较“==”和equals()区别原创 2013-10-11 15:59:46 · 1523 阅读 · 0 评论 -
换行符'\n'和回车符'\r'
换行符‘\n’和回车符‘\r’顾名思义,换行符就是另起一行,回车符就是回到一行的开头,所以我们平时编写文件的回车符应该确切来说叫做回车换行符 '\n' 10 换行(newline)'\r' 13 回车(return)也可以表示为'\x0a'和'\x0d'.(16进制)在windows系统下,回车换行符号是"\r\n".但是在Linux等系统下是没有"\r"符号的。在解原创 2013-12-30 13:19:42 · 1141 阅读 · 0 评论 -
java参数传递机制
Java中的参数传递机制一直以来大家都争论不休,究竟是“传值”还是“传址(传引用)”,争论的双方各执一词,互不相让。不但“菜鸟”们一头雾水,一些“老鸟”也只知道结果却说不出所以然来。我相信看过下面的内容后,你就会明白一些。先看基本类型作为参数传递的例子:public class Test1 { public static void main(String[] args) {转载 2013-10-13 12:58:46 · 858 阅读 · 0 评论 -
java泛型
泛型:Java中泛型的作用就是【进行编译期间类型检查】 java 泛型是java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建转载 2014-12-18 00:26:56 · 402 阅读 · 0 评论 -
颠倒数组中的所有元素
原题:编写一个泛型方法,接收任意数组,并颠倒数组中的元素。思想: 1.记住数组第一个和最后一个元素位置; 2.交换这两个位置上的元素; 3.第一个元素++,最后一个元素--,直到两个元素相逢。public void reverse(T arr[]){ int start = 0; int end = arr.length-1; do{ T temp = arr[start];原创 2014-12-22 23:06:43 · 1249 阅读 · 1 评论