【Java杂项】
RobertLab
全栈不是一个岗位,而是一种思维。
展开
-
java中的23中设计模式
设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化转载 2014-09-22 22:08:49 · 1037 阅读 · 0 评论 -
JDK7 与 JDK8 中 HashMap 的实现
JDK7中的HashMapHashMap底层维护一个数组,数组中的每一项都是一个Entrytransient Entry[] table;我们向 HashMap 中所放置的对象实际上是存储在该数组当中;而Map中的key,value则以Entry的形式存放在数组中static class转载 2017-09-12 11:16:40 · 220 阅读 · 0 评论 -
多线程中的Lock小结
1.lock和synchronized的区别1)Lock不是Java语言内置的,synchronized是Java语言的关键字,因此是内置特性。Lock是一个类,通过这个类可以实现同步访问;2)Lock和synchronized有一点非常大的不同,采用synchronized不需要用户去手动释放锁,当synchronized方法或者synchronized代码块执行完之后,系统会自原创 2017-09-01 11:11:48 · 335 阅读 · 0 评论 -
Java抽象类与接口的区别
很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题。本文我们将仔细讨论这些话题。在讨论它们之间的不同点之前,我们先看看抽象类、接口各自的特性。抽象类抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板。以JDK中的GenericServlet为例:原创 2017-06-07 16:34:54 · 386 阅读 · 0 评论 -
BIO,NIO,AIO的区别
一、看图网上很多IO资料,对新手来说,越看越晕。根据自己的理解,总结对比了一下BIO、NIO、AIO。BIO:线程发起IO请求,不管内核是否准备好IO操作,从发起请求起,线程一直阻塞,直到操作完成。如下图:NIO(reactor模型):线程发起IO请求,立即返回;内核在做好IO操作的准备之后,通过调用注册的回调函数通知线程做IO操作,线程开始阻塞,直到操作完成。如下图:AIO(proactor模型...原创 2017-04-21 11:00:36 · 32807 阅读 · 6 评论 -
List排序
Collections对List集合中的数据进行排序有时候需要对集合中的元素按照一定的规则进行排序,这就需要用到Java中提供的对集合进行操作的工具类Collections,其中的sort方法先看一个简单的例子:[java] view plain copy public static void main(String[原创 2017-03-27 14:45:56 · 279 阅读 · 0 评论 -
java发送http的get、post请求
package wzh.Http;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.URL;import java.net.URLConnection;import j原创 2017-04-10 18:09:18 · 326 阅读 · 0 评论 -
你真的会用三目运算符吗?
写在前面:三目运算符是我们经常在代码中使用的,a= (b==null?0:1); 这样一行代码可以代替一个 if-else,可以使代码变得清爽易读。但是,三目运算符也是有一定的语言规范的。在运用不恰当的时候会导致意想不到的问题。前段时间遇到(一个由于使用三目运算符导致的问题,其实是因为有三目运算符和自动拆箱同时使用(虽然自动拆箱不是我主动用的)。一、三目运算符对原创 2017-01-21 22:17:58 · 25813 阅读 · 0 评论 -
SFTP中创建文件目录,上传文件(*)
/** * sftp连接 */ public void connect(String username, String host, int port, String password) { try { if (sftp != null) { log.info("sftp is not null"); } JSch jsch = new原创 2017-10-31 13:05:26 · 23965 阅读 · 4 评论 -
Java 代码运行洞察库 Metrics
Metrics是一个java库,能够为你提供无与伦比的代码运行洞察功能。它是由yammer开发的,用于检测jvm上后端服务的运行状况。Metrics提供了一个强大的工具集,用于度量你的生产环境上关键组件的行为。Metrics提供了一组通用的模块库用于支持比如Guice,Jetty,Log4j,Apache HttpClient,EhCache,Logback,Spring等,也提供对比转载 2017-10-31 18:15:27 · 732 阅读 · 0 评论 -
Java中常用的加密方式
一、Java常用加密方式Base64加密算法(编码方式)MD5加密(消息摘要算法,验证信息完整性)对称加密算法非对称加密算法数字签名算法数字证书二、分类按加密算法是否需要key被分为两类: 不基于key的有: Base64算法、MD5基于key的有: 对称加密算法、非对称加密算法、数字签名算法、数字证书按加密算法是否可逆被分为两类: 单向加密算法(不可解密):MD5、SHA、原创 2017-12-28 14:27:22 · 15310 阅读 · 2 评论 -
java poi技术操作excel之读取Excel
代码:package com.csii.rwexcel;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.text.SimpleDateFormat;import org.原创 2016-06-13 17:15:27 · 20407 阅读 · 2 评论 -
单点登录SSO的实现原理
单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁,例如像阿里巴巴这样的网站,在网站的背后是成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作,如果每个子系统都需要用户认证,不仅用户会疯掉,各子系统也会为这种重复认证授权的逻辑搞转载 2016-09-22 17:25:53 · 353 阅读 · 0 评论 -
各个日志框架的简介以及使用规范
各个日志框架的简介以及使用规范目的规范java程序员对于日志的使用规范背景首先看下我们现在的项目使用日志的状况引入的依赖使用方式123456import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;p转载 2017-03-02 19:53:45 · 1676 阅读 · 0 评论 -
Java中IDEA(Eclipse)远程调试
一、启动远程Target JVM(服务器启动服务参数配置)假设我们要远程调试服务器程序 ServerMain(Main类),执行如下命令,启动远程Target JVM: java -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=6789 testR/ServerMain参数说明:transport:debu原创 2017-11-30 13:45:45 · 621 阅读 · 0 评论 -
JMX、MBean以及pojo-mbean学习
最近在看一个开源的Cache框架,里面提到使用JMX来查看Cache的命中率以及响应时间等,于是翻了一些JMX的文章,整理了一下。问题:什么是JMX?问题:JMX的架构是什么样子的?问题:JMX以及Mbean中的 概念都有那些?问题:如何编写一个简单的Standard MBean?问题:如何编写一个DynamicMBean?原创 2017-10-25 15:37:04 · 811 阅读 · 0 评论 -
Java集合---ConcurrentHashMap原理分析
一、背景:线程不安全的HashMap 因为多线程环境下,使用Hashmap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。 效率低下的HashTable容器 HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下HashTable的效率非常低下。因为当一个线程转载 2017-10-25 14:45:05 · 196 阅读 · 0 评论 -
【guava.jar】LoadingCache的使用
缓存,在我们日常开发中是必不可少的一种解决性能问题的方法。简单的说,cache 就是为了提升系统性能而开辟的一块内存空间。 缓存的主要作用是暂时在内存中保存业务系统的数据处理结果,并且等待下次访问使用。在日常开发的很多场合,由于受限于硬盘IO的? 缓存在很多系统和架构中都用广泛的应用,例如: 1.CPU缓存 2.操作系统缓存 3.本地缓存 4.分布式缓存转载 2017-10-25 11:25:16 · 1177 阅读 · 0 评论 -
Cookie/Session机制详解
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session。1.1 Cookie机制原创 2016-12-19 13:48:57 · 336 阅读 · 0 评论 -
正则表达式(靓号过滤)
一般公司在开发一类对的号码时,会预留一些号码给以后升级的会员使用,比如旺旺靓号,QQ号等,采用正则表达式实现较好,通过规则引擎的后台页面做成实时可配置的也是不错的选择。一. 一般会有如下的正则需求 参考文档:菜鸟教程(正则表达式) 代码如下:Java代码 public class CreditCodeRegexValidateState原创 2016-12-21 17:06:25 · 9963 阅读 · 3 评论 -
java jxl工具包操作excel文件
JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。因为它是使用Java编写的,所以我们在Web应用中可以通过JSP、Servlet来调用API实现对Excel数据表的访问。下载:Java Excel AP转载 2016-06-13 09:43:10 · 3918 阅读 · 0 评论 -
java 死锁及解决
Java线程死锁如何避免这一悲剧 Java线程死锁需要如何解决,这个问题一直在我们不断的使用中需要只有不断的关键。不幸的是,使用上锁会带来其他问题。让我们来看一些常见问题以及相应的解决方法: Java线程死锁 Java线程死锁是一个经典的多线程问题,因为不同的线程都在等待那些根本不可能被释放的锁,从而导致所有的工作都无法完成。假设有两个线程,分别代表两个饥饿的人,他们必须共享转载 2016-05-19 14:51:16 · 692 阅读 · 0 评论 -
JAVA中重写equals()方法为什么要重写hashcode()方法说明
重写hashCode()时最重要的原因就是:无论何时,对同一个对象调用hashCode()都应该生成同样的值。如果在将一个对象用put()方法添 加进HashMap时产生一个hashCode()值,而用get()取出时却产生了另外一个 hashCode()值,那么就无法重新取得该对象了。所以,如果你的hashCode()方法依赖于对象中易变的数据,那用户就要小心了,因为此数据发 生变化时,hash原创 2016-05-19 14:08:31 · 486 阅读 · 0 评论 -
List Set Map 的用法和区别
1.List,Set,Map是否继承自Collection接口? 类层次关系如下:Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack├Set│├HashSet│├LinkedHashSet│└TreeSetMap├Hashtable├HashMap└TreeM原创 2016-05-19 09:47:03 · 529 阅读 · 0 评论 -
详细介绍java中的垃圾回收机制
详细介绍Java垃圾回收机制垃圾收集GC(Garbage Collection)是Java语言的核心技术之一,之前我们曾专门探讨过Java 7新增的垃圾回收器G1的新特性,但在JVM的内部运行机制上看,Java的垃圾回收原理与机制并未改变。垃圾收集的目的在于清除不再使用的对象。GC通过确定对象是否被活动对象引用来确定是否收集该对象。GC首先要判断该对象是否是时候可以收集。两种常用的方法原创 2014-09-17 14:38:27 · 819 阅读 · 1 评论 -
ArrayList,Vector,LiskedList的区别
ArrayList 和Vector是采用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,都允许直接序号索引元素,但是插入数据要设计到数组元素移动等内存操作,所以索引数据快插入数据慢,Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,LinkedList使用双向链表实现存储,按序号索引数据需要进行向前或向后遍历,但是插入数据时只需要原创 2014-09-17 14:29:18 · 1058 阅读 · 0 评论 -
String,StringBuffer,StringBuilder的区别
String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常原创 2014-09-17 14:20:37 · 438 阅读 · 0 评论 -
java中的内部类总结
Java内部类不是很好理解,但说白了其实也就是一个类中还包含着另外一个类如同一个人是由大脑、肢体、器官等身体结果组成,而内部类相当于其中的某个器官之一,例如心脏:它也有自己的属性和行为(血液、跳动)显然,此处不能单方面用属性或者方法表示一个心脏,而需要一个类而心脏又在人体当中,正如同是内部类在外部内当中 实例1:内部类的基本结构?1原创 2014-09-26 23:52:11 · 576 阅读 · 0 评论 -
SFTP上传文件详解
JSch是Java Secure Channel的缩写。JSch是一个SSH2的纯Java实现。它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到你自己的应用程序。 本文只介绍如何使用JSch实现的SFTP功能。 SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供转载 2016-06-21 09:27:51 · 19924 阅读 · 5 评论 -
Java中Json构造和解析
一.使用Java中的Json需要的jar包,下载地址如下:正在上传资源,过5分钟再看二.使用,代码如下:import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import net.sf.j原创 2016-08-04 10:20:27 · 1526 阅读 · 1 评论 -
Java线程之Callable和Future
本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果。 Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被Future拿到,也就是说,Future可以拿到异步执行任务的返回值,下面来看一个简单的转载 2016-11-22 21:10:47 · 349 阅读 · 1 评论 -
深入理解HTTP Session
session在web开发中是一个非常重要的概念,这个概念很抽象,很难定义,也是最让人迷惑的一个名词,也是最多被滥用的名字之一,在不同的场合,session一次的含义也很不相同。这里只探讨HTTP Session。为了说明问题,这里基于Java Servlet理解Session的概念与原理,这里所说Servlet已经涵盖了JSP技术,因为JSP最终也会被编译为Servl原创 2016-12-14 20:35:39 · 308 阅读 · 0 评论 -
java中导入Excel中的数据及往Excel中写数据
这个是读取Excel中的数据例子:import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.ArrayList;import java.util.List; import jxl.C转载 2015-01-13 18:48:35 · 2761 阅读 · 0 评论 -
java中的Font
Font 类 位于 java.awt 中 字体由三种属性决定: 1) 字体名(family name) 字体名可以分成两大类: 中文字体:宋体、楷体、黑体等; 英文字体:Arial、Times New Roman等等; 小知识: 对于英文字体中有两个术语:“等宽字体”与“变宽字体”,等宽字体是指每一英文字母的宽度一样大;而变宽字转载 2013-12-23 10:59:59 · 1130 阅读 · 0 评论 -
Java实现简单的单点登录
摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中。本文从业务的角度分析了单点登录的需求和应用领域;从技术本身的角度分析了单点登录技术的内部机制和实现手段,并且给出Web-SSO和桌面SSO的实现、源代码和详细讲解;还从安全和性能的角度对现有的实现技术进行进一步分析,指出相应的风险和需要改进的方面。本文除了从多个方面和角度给出了对单点登录(SSO)的全面分析,还并且讨论了如何原创 2016-09-22 17:21:36 · 412 阅读 · 0 评论 -
java poi技术操作excel之写Excel(向Excel中写入值)
写值到Excel:import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.util.List;import java.util.Map;import org.apache.poi.hssf.usermodel.HSSFCell;import o原创 2016-08-09 17:19:21 · 24690 阅读 · 2 评论 -
Java中JDBC连接,封装版
JDBC连接完美封装版:import java.sql.CallableStatement;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaD原创 2016-08-04 15:52:42 · 504 阅读 · 0 评论 -
Java加载本地/远程jar包
文章目录一般使用jar的方式动态加载jar一般使用jar的方式通过maven将模块编译打包成jar,再通过pom依赖引入动态加载jar在开发过程中,有时候需要根据配置,动态的加载本地、远程jar包到当前的jvm中,代码实现如下:LoadJarUtil类:import org.slf4j.Logger;import org.slf4j.LoggerFactory;import ...原创 2018-10-17 11:33:21 · 5946 阅读 · 3 评论