java基础
文章平均质量分 61
咕噜咕叽
么么哒
展开
-
Jackson工具类
一、关于Jackson相关属性配置的详解,可以参见:http://a52071453.iteye.com/blog/2175398二、自己写了一个工具类,转换bean与json以及json与list和map,1、项目结构2、pom文件:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http:...原创 2018-10-10 15:44:14 · 2833 阅读 · 0 评论 -
java 代理模式(静态、jdk动态代理)
本次小案例,目标类返回的结果是string类型,值为hello world,代理类的增强效果是将目标类的结果转换为大写。。一、静态代理1、目标类的接口package statics.proxy;/** * 目标类的接口 * * @author LZJ * @create 2018-07-17 21:44 **/public interface DoInterface ...原创 2018-07-17 22:11:05 · 153 阅读 · 0 评论 -
Java类加载机制
&nbsp;说明:本文乃学习整理参考而来.一、Java类加载机制1.概述&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用转载 2018-07-17 20:47:58 · 123 阅读 · 0 评论 -
Java Objects.equals()的作用
Objects.equals()经常用在重写equals和hashcode的时候,,它内部的源码中自动进行了非空判断,避免了空指针异常,如下:public static boolean equals(Object a, Object b) { return (a == b) || (a != null && a.equals(b));}比如:根据Person类...原创 2018-07-17 20:38:07 · 2715 阅读 · 0 评论 -
GSON 操作JSON数组
关于GSON的入门级使用,这里就不提了,如有需要可以看这篇博文&nbsp;《Google Gson的使用方法,实现Json结构的相互转换》&nbsp;,写的很好,通俗易懂。我为什么写这篇文章呢?因为前几晚跟好友&nbsp;xiasuhuei321&nbsp;探讨了一下GS...转载 2018-07-10 14:52:10 · 1236 阅读 · 0 评论 -
Java合并文件
在实际项目中,在处理较大的文件时,常常将文件拆分为多个子文件进行处理,最后再合并这些子文件。Java中合并子文件最容易想到的就是利用BufferedStream进行读写。利用BufferedStream合并多个文件public static boolean mergeFiles(Stri...转载 2018-05-16 20:23:02 · 286 阅读 · 0 评论 -
java -cp & java jar的区别
java -cp 和 -classpath 一样,是指定类运行所依赖其他类的路径,通常是类库,jar包之类,需要全路径到jar包,window上分号“;”格式:java -cp .;myClass.jar packname.mainclassname 表达式支持通配符,例如:java -cp .;c:\classes01\myClass.jar;c:\classes02\*.jar pac...转载 2018-05-03 15:58:02 · 171 阅读 · 0 评论 -
ExecutorService里的shutdown 和 isTerminated
void shutdown()启动一次顺序关闭,执行以前提交的任务,但不接受新任务。若已经关闭,则调用没有其他作用。抛出:SecurityException - 如果安全管理器存在并且关闭,此 ExecutorService 可能操作某些不允许调用者修改的线程(因为它没有保持RuntimePermission("modifyThread")),或者安全管理器的 checkAccess 方法拒绝访问...转载 2018-03-28 20:38:50 · 16698 阅读 · 0 评论 -
使用CompletionService来维护处理线程的返回结果
[java] view plain copypublic interface CompletionService<V> { Future<V> submit(Callable<V> task); Future<V> submit(Runnable task, V result); ...转载 2018-03-28 20:33:55 · 925 阅读 · 0 评论 -
CompletionService简介、原理以及小案例
博客1:http://www.oschina.net/question/12_11255博客2:CompletionService简介CompletionService与ExecutorService类似都可以用来执行线程池的任务,ExecutorService继承了Executor接口,而CompletionService则是一个接口,那么为什么CompletionService不直接继承Exe...转载 2018-03-28 20:16:44 · 23572 阅读 · 7 评论 -
jdom操作xml文档
一:简介(引用)Jdom是一个开源项目,基于树形结构,利用纯java的技术对XML文档实现解析,生成,序列化以及多种操作。它是直接为java编程服务,利用java语言的特性(方法重载,集合),把SAX和DOM的功能结合起来,尽可能的把原来解析xml变得简单,我们使用Jdom解析xml会是一件轻松的事情。Jdom的优点:1、Jdom专用于java技术,比Dom应用占用更少内存。2、Jdom提供更加简...原创 2018-07-12 19:25:56 · 204 阅读 · 0 评论 -
java算法实例_优化斐波那契数列
一、动态规划、分治、递归的概念 动态规划:如果大问题分解为很多小问题后,小问题有互相重叠部分,则用递归的思路来分析问题,再使用存储中间结果+循环的思路来写代码!动态规划的三个特征:适用于最优解问题、有大量的重复子问题、子问题之间有依赖(不独立) 与递归的关系:这些重复的子问题,DP算法将其结果用一维或二维数组(邻接矩阵)保存下来,等下一次又要计算该子问题时,直接用已计算好的...原创 2018-09-29 18:19:13 · 673 阅读 · 0 评论 -
java复制bean
一、瞎扯 对于bean的复制(obj1-->obj2),常见的有两个工具类,一个是org.springframework.beans.BeanUtils,一个是org.apache.commons.beanutils.BeanUtils。。 至于两者的一些区别,请看博客: https://www.cnblogs.com/dongfangs...原创 2018-10-11 20:30:27 · 1232 阅读 · 0 评论 -
java算法实例_合并元素&&判断元素是否连通
案例1:简单的实现方式,直接遍历代码:package me.ele.union_find;import java.util.Arrays;import java.util.List;/** * 快速查找 UC(union find) * <p> * 有一些元素 a b c d e f g h ...... * * @author LZJ * @creat...原创 2018-10-03 15:11:18 · 404 阅读 · 0 评论 -
java算法实例_排序&&查找&&递归
目录:一、常见的排序 1、简单的桶排序 2、冒泡排序 3、选择排序 4、 插入排序 5、希尔排序 6、快速排序 7、堆排序二、二分查找和折半插入 1、二分查找 2、折半插入三、递归算法 1、案例1:遍历文件夹下的所有指定后缀名的文件,返回List集合 2、案例2:获取json ...原创 2018-03-05 21:47:09 · 1930 阅读 · 0 评论 -
Java中执行JScript代码
一、pom文件:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation...原创 2018-09-17 20:36:55 · 441 阅读 · 0 评论 -
jdk中的 Base64加密解密
严格意义上来说,JDK中的Base64不属于正儿八经的加密,只是为了不让密码过于明显而已。一、JDK1.7以前 JDK1.7加密后的密码用JDK1.8的进行解密会失败,原因是JDK1.7加密的内容后多了一行空白。 java中,Base64在JDK1.7以前,有自带的加密解密类,具体的实现原理自行百度。JDK中Base64的实现在JDK1.7之前是没有对外的公共...原创 2018-09-17 18:49:27 · 5470 阅读 · 0 评论 -
rpc远程框架的原理、核心技术点概念以及用java socket实现简单的rpc
《分布式服务框架原理与实践》一、RPC架构 rpc,全称remote procedure call,即远程过程调用。它是一种进程间的通信方式,允许像调用本地服务一样,调用远程的服务。有很多的具体实现,如spring的http invoker、facebook的thrift二进制私有协议通信。 rpc在80s,由bruce jay nelson提出,他在论文中做了如下...原创 2018-08-03 15:23:19 · 455 阅读 · 1 评论 -
Java泛型详解:<T>和Class<T>的使用。泛型类,泛型方法的详细使用实例
一、引入1、泛型是什么首先告诉大家ArrayList就是泛型。那ArrayList能完成哪些想不到的功能呢?先看看下面这段代码:[java] view plain copy ArrayList<String>&nbs...转载 2018-08-06 21:35:49 · 12665 阅读 · 1 评论 -
后台使用net.sf.json接收前台传入的JSON
主要方法:(主要用到的包是 net.sf.json 即:json-lib-2.3-jdk15.jar 完整相关jar包:commons-beanutils-1.7.0.jarcommons-collections-3.2.jar commons-lang-2.4.jar commons-logging-1.1.jar ezmorph-1.0.4.jar json-l...转载 2018-03-19 19:20:06 · 462 阅读 · 0 评论 -
展示 java中System.getProperty("") 获取的系统属性
代码://Java类路径System.out.println("---Java类路径----");System.out.println(System.getProperty("java.class.path"));//加载库时搜索的路径列表System.out.println("---加载库时搜索的路径列表----");System.out.println(System.getPr...原创 2018-08-03 17:59:32 · 1051 阅读 · 0 评论 -
java 模板方法设计模式
一、前言: 在生活中,完成某件事情是需要多个步骤的,比如淘宝购物粗略分为:登录,选择商品,付款这三个步骤。对于登录和付款这两个步骤而言,用户的使用都是一样的操作,不同的地方在于挑选商品不一致。 软件开发中也是一样,有的类的某个方法的实现,需要几个固定的步骤完成,对于该类的不同对象,有的步骤是不变的,有的步骤是大相径庭的,有的步骤可变可不变。这种情况就适用于模板设计模式。...原创 2018-07-20 21:46:41 · 172 阅读 · 0 评论 -
java 适配器模式
一、适配器模式的定义是:将某个类的接口转换为接口客户所需的类型,即解决的目的是,使原本由于接口不兼容而不能一起工作,不能一起管理的哪些类可以在一起工作,可以进行统一管理。二、定义比较抽象,下面以不同工种的不同工作内容为例,实现统一管理来解释适配器模式。需求:厨师的工作是cook(),程序员的工作是program(),不同的工种有着不同的工作内容,现在程序要讲(假如有30个工种)的工作内容全...原创 2018-07-20 20:47:11 · 228 阅读 · 0 评论 -
深入剖析线程池(继承关系、源码原理解析、小例子等)
在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 在Java中可以通过线程池来达到这样的效果。今天我...转载 2018-03-28 19:58:10 · 1599 阅读 · 0 评论 -
基于线程池的简单封装
public final class ThreadPoolUtils { public static final int FixedThread = 0; public static final int CachedThread = 1; public static final int SingleThread = 2; @IntDef({FixedThread, Cac...转载 2018-03-28 19:50:28 · 184 阅读 · 0 评论 -
java并发包中的线程池(ThreadPoolExecutor参数及特点、Executors提供的四种线程池)
为什么用线程池创建/销毁线程伴随着系统开销,过于频繁的创建/销毁线程,会很大程度上影响处理效率例如:记创建线程消耗时间T1,执行任务消耗时间T2,销毁线程消耗时间T3如果T1+T3>T2,那么是不是说开启一个线程来执行这个任务太不划算了!正好,线程池缓存线程,可用已有的闲置线程来执行新任务,避免了T1+T3带来的系统开销线程并发数量过多,抢占系统资源从而导致阻塞我们知道线程能共享系统资源,如...转载 2018-03-28 19:42:46 · 503 阅读 · 0 评论 -
java开发经常要用到的类库和API
寄语: 要相信,你遇到的问题,肯定不止你一个用过。 要相信,也许有很多人比你勤奋。 要相信,你用或者不用,轮子就在那里。本文说的类库和api不包括常用的框架,ssm等,因为这些已经广为人知,而且具备特定的功能。本文总结了日志、json解析、单测、xml解析、字节码处理、数据库连接池、集合类、邮件、加密、嵌入式sql数据库、jdbc故障诊断、以及序列化等常用的类库。日常开发都可能辉...原创 2018-03-02 14:37:51 · 1065 阅读 · 0 评论 -
Properties文件与ResourceBundle读取properties文件
博客1:Java中resourceBundle和Properties的区别第一种办法InputStream is = Test.class.getResourceAsStream("DbConfig.properties");Properties p = new Properties();p.load(is);System.out.println(p.get("jndi"));Test.class...转载 2018-03-15 20:43:02 · 947 阅读 · 0 评论 -
多个空格的正则表达式
一、借鉴别人:1234567891011121314151617181920212223public class Test { public static void main(String[] args) { String str = " kk kkk klaf fsaff fsge tg sagh ger fsaga "; //测试...原创 2018-03-15 20:13:40 · 65985 阅读 · 1 评论 -
Java并发编程(第三章):对象的共享
前一章讲到要编写正确的并发程序,关键问题在于:在访问共享的可变状态时需要进行正确的管理。以前,我们知道如何通过同步来避免多个线程同一时刻访问相同的数据,本章我们将介绍如何发布共享和发布对象,从而使得它们能够安全的由多个线程访问。。。这两章结合一起,进行成了构建安全类以及通过java current包来构建并发应用程序的基础。 我们已经知道同步代码块以及同步方法可以保证原子操作,一种常...原创 2018-02-11 17:25:37 · 293 阅读 · 0 评论 -
InetAddress.getLocalHost().getHostName()
该方法可以得到远程主机的域名,也可以得到本机名。getHostName方法的定义如下:[java] view plain copypublic String getHostName() 下面是三种创建InetAddress对象的方式,在这三种方式中,getHostName返回的值是不同的。1.使用ge转载 2018-02-05 19:48:41 · 9666 阅读 · 0 评论 -
pattern与matcher的理解
概念: java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包。它包括两个类:Pattern和Matcher Pattern 一个Pattern是一个正则表达式经编译后的表现模式。 Matcher 一个Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查。 首先一个Pattern实例订制了一个所用语法与PERL的类似转载 2018-02-05 18:22:10 · 282 阅读 · 0 评论 -
System.getProperties和System.getenv的区别
一、 getProperties:是指jvm的变量,即java system,大多与java程序相关 getenv:才是获得操作系统变量,比如path,之类的。二、System.getProperties():获取map集合,里面是所有的属性-属性值的键值对。System.getProperties(String str):参数即属性名称,根据参数名返回对应的属性值,原创 2018-02-05 17:37:33 · 1054 阅读 · 0 评论 -
JsonPath的使用
1. 介绍类似于XPath在xml文档中的定位,JsonPath表达式通常是用来路径检索或设置Json的。其表达式可以接受“dot–notation”和“bracket–notation”格式,例如$.store.book[0].title、$[‘store’][‘book’][0][‘title’]2. 操作符符号描述$转载 2018-02-02 20:36:10 · 1158 阅读 · 0 评论 -
Log4j
一、概述 log4j有三个组件:Loggers(记录器),Appenders(输出源),和Layout(布局)。通过配置这三个组件,可以使得日志1⃣️何种类别,何种格式输出。。1、Loggers Loggers:日志级别,常用的有四个级别(级别由低到高):debug、info、warn、error。log4j输出日志时,只输出不比配置的级别低的日志的信息。 2、Appenders Appender...原创 2018-02-05 14:12:57 · 156 阅读 · 0 评论 -
Java泛型中extends和super的区别?
问题来源:Java 泛型 <? super T> 中 super 怎么 理解?与 extends 有何不同? <? extends T>和<? super T>是Java泛型中的“通配符(Wildcards)”和“边界(Bounds)”的概念。<? extends T>:是指 “上界通配符(Upper Bounds Wildcards)”<? ...转载 2018-03-22 15:59:15 · 19788 阅读 · 4 评论 -
ExecutorService和ThreadPoolExecutor
文章译自:http://tutorials.jenkov.com/java-util-concurrent/index.html 抽空翻译了一下这个教程的文章,后面会陆续放出,如有不妥,请批评指正。 转自请注明出处。ExecutorServiceJava.util.concurrent.ExecutorService接口代表一种异步执行机制,它能够在后台执行任务。因此ExecutorService...转载 2018-03-28 19:39:53 · 7145 阅读 · 0 评论 -
Future和FutureTask的区别
注意:future.get().... 对于runnable对象而言,线程执行成功,返回null 对于callable对象而言,线程返回的就是call()方法的返回值[html] view plain copypackage com.z; import java.util.Date; import java.util.concurrent.*; publi...转载 2018-03-28 19:35:21 · 1421 阅读 · 0 评论 -
java中array list set之间的转换与注意点
一、array --> list/** * list set array之间的转换 * * @author LZJ * @create 2018-03-27 19:02 **/public class ListSetArrayConvert { public static void main(String[] args){ String[] strArra...原创 2018-03-27 19:32:24 · 195 阅读 · 0 评论 -
使用InetAddress类的getHostName方法
InetAddress---表示互联网协议(IP)地址我所知道的,常用的得到InetAddress实例的方法有三种://直接获取,获取的是本机: InetAddress.getLocalHost();//根据域名获取:如果参数为null,获得的是本机的IP地址 InetAddress.getByName("www.oracle.com"); ....原创 2018-03-27 18:29:30 · 6287 阅读 · 0 评论