java
文章平均质量分 87
chance_66
好走的路都是下坡路
展开
-
Java并发:多线程安全总结
转自:https://www.jianshu.com/p/f67a2ede92d61.并发基础定义:一个cpu“同时”处理多个任务,而多个线程都在争取这个cpu资源1.1 优点充分发挥多核CPU的计算能力 方便进行业务拆分,提升应用性能1.2 缺点频繁切换上下文耗时 线程安全问题:原子性、有序性、重排序1.3 相关概念同步、异步:分别在于是否被调用的方法结束后,调用...转载 2019-12-23 12:00:30 · 196 阅读 · 0 评论 -
Comparator简单排序例子
代码:package test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;import java.util.Comparator;import java.util.Scanner;public class原创 2017-08-31 15:03:04 · 257 阅读 · 0 评论 -
java强引用、软引用、弱引用、虚引用
一、概述:众所周知,Java中是JVM负责内存的分配和回收,这是它的优点(使用方便,程序不用再像使用c那样操心内存),但同时也是它的缺点(不够灵活)。为了解决内存操作不灵活这个问题,可以采用软引用等方法。 在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这 就像在日常生活中,从商店购买了某样物品后,如果有用,就转载 2017-09-01 15:50:30 · 224 阅读 · 1 评论 -
java不确定参数个数方法例子
package test;public class myTest { // 根据输入的参数动态生成数组 public static int max(int... param) { int max = 0; int length = param.length; for (int i = 0; i < length; i++) {原创 2017-09-19 11:11:56 · 10476 阅读 · 0 评论 -
Thread 中 sleep、wait、yield、interrupt 区别
sleep:在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。该线程不丢失任何监视器的所属权。 通过调用sleep使任务进入休眠状态,在这种情况下,任务在指定的时间内不会运行。 调用sleep的时候锁并没有被释放。 休眠 Java SE5引入了更加显示的sleep()版本作为TimeUnit类的一部分,这个方法允许你指定sleep()转载 2017-07-28 09:45:31 · 507 阅读 · 0 评论 -
读取本地文件上传
Java读取本地一个文件,上传到本地另一个地方package test;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;public class myTest {原创 2017-11-22 11:37:20 · 3908 阅读 · 2 评论 -
Java中正则Matcher类的matches()、lookAt()和find()的区别
在Matcher类中有matches、lookingAt和find都是匹配目标的方法,但容易混淆,整理它们的区别如下: matches:整个匹配,只有整个字符序列完全匹配成功,才返回True,否则返回False。但如果前部分匹配成功,将移动下次匹配的位置。 lookingAt:部分匹配,总是从第一个字符进行匹配,匹配成功了不再继续匹配,匹配失败了,也不继续匹配。 find:部分匹配,从当前位置转载 2017-12-13 17:49:06 · 446 阅读 · 0 评论 -
java读取配置文件内容
一、使用org.apache.commons.configuration需要使用的是jar包:commons-collections-3.2.1.jar、commons-configuration-1.10.jar、commons-lang-2.6.jar和commons-logging-1.2.jar。 可以读取的配置文件:xml和properties1、读取xml文件package com.s转载 2017-12-25 16:33:57 · 951 阅读 · 0 评论 -
java中的Serializable接口的作用
Object serialization的定义:Object serialization 允许你将实现了Serializable接口的对象转换为字节序列,这些字节序列可以被完全存储以备以后重新生成原来的对象。实现java.io.Serializable 接口的类是可序列化的。没有实现此接口的类将不能使它们的任一状态被序列化或逆序列化。 例如: Integer实现了Serializable,所以转载 2017-12-25 17:19:54 · 234 阅读 · 2 评论 -
java简单爬取网页内容实例
获取返回的整个文件内容,输出到文件:package cn.chance.mavenTest;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import org.apache.commons.httpclient.HttpClien原创 2017-12-12 20:11:31 · 750 阅读 · 3 评论 -
List 复制之 浅拷贝与深拷贝
List浅拷贝众所周知,list本质上是数组,而数组的是以地址的形式进行存储。(listA中有一个元素Object)如上图将list A浅拷贝给list B,由于进行的是浅拷贝,所以直接将A的内容复制给了B,虽然listA和listB所在的地址不一样,但是两个list存储的对象仍然是同一个Object(因为把listA复制到listB时,浅拷贝不是复制Object到B,而是把Objec......原创 2018-01-15 18:00:24 · 8734 阅读 · 0 评论 -
Synchronized 对象锁、方法锁、类锁
首先的明白Java中锁的机制synchronized 在修饰代码块的时候需要一个reference对象作为锁的对象. 在修饰方法的时候默认是当前对象作为锁的对象. 在修饰类时候默认是当前类的Class对象作为锁的对象.线程同步的方法:synchronized、lock、reentrantLock分析 方法锁(synchronized修饰方法时)通过在方法声明中加入 synchronized关键字来...转载 2018-01-26 16:03:45 · 471 阅读 · 0 评论 -
list和array、json互转
java下,使List和Array、json互相转换。// List转换为Array:ArrayListString> list=new ArrayListString>();String[] strings = list.toArray(new String[list.size()]);// 将Array转成List:String[] s = {"a","b","c"}; //原创 2017-06-09 20:05:42 · 914 阅读 · 0 评论 -
Java代理模式
Java的三种代理模式1.代理模式代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.组成:抽象角色:通过接口或抽象类声明真实角色实现的业务方法。代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作...原创 2018-03-25 12:05:54 · 180 阅读 · 0 评论 -
c语言、Java计算二维数组的行数、列数
计算二维数组的行列数示例二维数组: int example[5][10]数组的总数为: sizeof(example) / sizeof(int) //sizeof(example)为该数组的大小(这里是5x10),sizeof(int)为int类型的大小(4)数组列数为: sizeof(example[0])/sizeof(int) //sizeof(example[0])为该数组一原创 2016-12-05 16:29:53 · 4708 阅读 · 3 评论 -
Java反射机制详解
转自:http://www.cnblogs.com/lzq198754/p/5780331.html1反射机制是什么反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。2反射机制能做什么反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;转载 2017-03-31 00:05:42 · 249 阅读 · 0 评论 -
java多线程简单例子
public class TestServer extends Thread { public TestServer() {// 构造方法 System.out.println("TestServer 已启动"); Thread thread1 = new Thread(new Runnable() { public void run()原创 2017-07-25 11:03:08 · 602 阅读 · 2 评论 -
Java迭代器Iterator
迭代器(Iterator) 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。 Java中的Iterator功能比较简单,并且只能单向移动: (1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:转载 2017-04-07 17:18:47 · 238 阅读 · 0 评论 -
Java创建树结构
实现一颗树,采用数组的存储方式,将树中的节点用Node类表示,方便与操作。 首先,整棵树的数组结构如下表所示,根节点的无父节点,用“-1”表示。 Index Data Parent 0 A -1 1 B 0 2 C 0 3 D 0 4 E转载 2017-04-07 15:46:49 · 5327 阅读 · 0 评论 -
Class.forName()用法
主要功能 Class.forName(xxx.xx.xx)返回的是一个类 Class.forName(xxx.xx.xx)的作用是要求JVM查找并加载指定的类, 也就是说JVM会执行该类的静态代码段 下面,通过解答以下三个问题的来详细讲解下Class.forName()的用法。 一.什么时候用Class.forName()? 先来个热身,给你一个字符串变量,它代表一个类的包名和类名,你怎转载 2017-03-30 23:46:36 · 650 阅读 · 0 评论 -
java的super和this用法
在Java中,this通常指当前对象(当前类)的,super则指父类(被extends的类)的; 注:方法名与类名一样的方法叫构造方法(构造函数) 举例在 me.java 文件里:class Person{ public static void outprint(String str){ System.out.println("I'm a person,name is "原创 2017-03-16 13:52:09 · 306 阅读 · 0 评论 -
Apache和Tomcat的区别
转自:http://blog.csdn.net/longzs/article/details/10959945一 apache支持静态页,tomcat支持动态的,比如servlet等, 一般使用apache+tomcat的话,apache只是作为一个转发,对jsp的处理是由tomcat来处理的。 apache可以支持php\cgi\perl,但是要使用java的话,你需要tomcat在apa转载 2017-06-28 16:18:14 · 422 阅读 · 0 评论 -
Java读取xls文件数据到二维数组
转自:http://blog.csdn.net/sinat_22797429/article/details/52900152package practice_1; import java.io.File; import java.io.FileInputStream; import java.util.ArrayList; import java.util.List; import转载 2017-06-21 16:58:08 · 2889 阅读 · 0 评论 -
把一个Array数组拷贝到另一个Array数组
arraycopy(被复制的数组, 从第几个元素开始复制, 要复制到的数组, 从第几个元素开始粘贴, 一共需要复制的元素个数);例子:// 把s1、s2拷贝到s3public class example{ public static void main(String[] args){ String s1[]={'a','b','c'}; String s2[原创 2017-06-09 20:42:55 · 3824 阅读 · 0 评论 -
java自定义异常
/*自定义异常*/ class ChushulingException extends Exception { public ChushulingException(String msg) { super(msg); } } class ChushufuException extends Exception {转载 2017-07-16 18:40:53 · 217 阅读 · 0 评论 -
Java生成一个随机数
生成0-149的整型随机数Random rand = new Random();int i = rand.nextInt(149); //int范围类的随机数(0-149)生成50-149的整型随机数Random rand = new Random();int i = rand.nextInt(99); //int范围类的随机数(0-99)i += 50; //(0-99)的数加上50,即可达原创 2017-06-25 22:50:41 · 997 阅读 · 0 评论 -
Java实现二叉树
package BinaryTree;public class main { public static void main(String[] args) { Node<String> nodes = initTree(); visit(nodes);// 遍历二叉树 System.out.println("===================原创 2017-07-20 13:56:47 · 208 阅读 · 1 评论 -
java中error与exception的区别
首先从继承方面来说,Error和Exception都是Throwable的子类。所以从根本上你可以理解他们是差不多的,程序出了问题就抛出。然后一般意义来讲,区别就是Error比Exception更严重,不易通过后续代码处理和修复,不应该被代码catch到的错误。而Exception是指严重程度较轻的程序问题,相较于Error更容易被后续代码处理和修复的,有些需要通过try catch代码处理,有些不转载 2017-08-01 13:53:04 · 597 阅读 · 0 评论 -
java.util.LinkedHashMap cannot be cast to com.XXX.XXX
HashMap转List时错误java.util.LinkedHashMap cannot be cast to com.XXX.XXXMap<String, Object> map = HashMap<>(); // 这里Object假设为集合List<Entity> list = (List<Entity>) map.get(key);for(Entity e : list){ //这里会出原创 2017-07-14 18:02:20 · 18460 阅读 · 2 评论 -
Dangling meta character '+' near index 1异常
对于单个匹配字段,如 + * | \ 等,可以使用类似于“\+”或者[+]进行处理:String str = "A+B+C";String[] array = str.split("\\+");// 或者 String[] array = str.split("[+]");// 处理连续特殊字段需要单独处理String str1 = "A++B++C"String[] array1原创 2017-08-03 14:31:47 · 2947 阅读 · 0 评论 -
JAVA中获取当前系统时间
一. 获取当前系统时间和日期并格式化输出:import java.util.Date;import java.text.SimpleDateFormat;public class NowString { public static void main(String[] args) { SimpleDateFormat df = new SimpleDateFormat(转载 2017-07-27 16:03:47 · 4577 阅读 · 0 评论 -
Java的多线程终止,守护线程
Java中线程分为两种类型:用户线程和守护(服务)线程。通过Thread.setDaemon(false)设置为用户线程;通过Thread.setDaemon(true)设置为守护线程;不设置则默认为用户线程。 结束单线程用 Thread.interrupt() 方法,多线程结束则需要设置守护线程。当不存在用户线程时,守护线程就会全部终结(可以理解为:守护线程是服务线程,用户线程是被服务线程,用户原创 2017-03-16 21:51:08 · 2729 阅读 · 0 评论