java
几钱清风
这个作者很懒,什么都没留下…
展开
-
JSP、Thymeleaf、Velocity、Freemarker对比数据
I updated the POM to reflect the latest releases of Freemarker (2.3.23). I considered the beta release of Thymeleaf as they claim a significant performance boost. Velocity & JSP are the same as be...原创 2019-11-11 20:00:52 · 787 阅读 · 0 评论 -
java 字符串split踩坑日记
System.out.println(":ab:cd:ef::".split(":").length);//末尾分隔符全部忽略 System.out.println(":ab:cd:ef::".split(":",-1).length);//不忽略任何一个分隔符 System.out.println(StringUtils.split(":ab:cd:ef::",":").原创 2016-11-28 14:40:24 · 296 阅读 · 0 评论 -
fastjson缺陷--map转换json时出现$ref的情况
fastjson把map等对象转换为json时出现$ref的情况"颜色": [ { "$ref": "$.itemSkuList[0].itemSpecificationList[0]" }, { "$ref": "$.itemSkuList[1].itemSpecificationList[0]"原创 2017-01-09 13:38:24 · 4540 阅读 · 0 评论 -
java 可变参数的问题 String... params
java中经常会使用的可变参数private String getHdfsPath(String originalHdfsPath, String... params)使用可变参数是判断参数个数时需要注意,不要使用params == null这种形式,因为params不会是null直接判断可变参数长度即可if (params.length > 0 && params[0原创 2017-02-17 11:25:58 · 6637 阅读 · 0 评论 -
Gson存在的问题(更准确地说是它不同的做法)
1、Gson在gson.toJson时,如果内容中含有单引号等符号时,会对某些符号进行Unicode话,例如单引号就会被转义为\u0027,同样的内容FastJson不会对这些符号转义,使用过程中可酌情选择原创 2017-03-08 08:51:07 · 541 阅读 · 0 评论 -
static静态代码块小结
1.一个class中全部是静态方法,如何在类load时初始化这个类?2.如何才能不去反复初始化或者冗余的null校验;static可以解决这个问题;即静态代码块: private static String str1 = "123"; static { str1 = "456"; } public static Str原创 2017-05-12 15:55:59 · 359 阅读 · 0 评论 -
HttpClient连接SSL
/** * HttpClient连接SSL */ public void ssl() { CloseableHttpClient httpclient = null; try { KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()原创 2017-11-09 20:29:27 · 499 阅读 · 0 评论 -
COOKIE的SECURE属性
cookie-secure的值改为true,true意味着"指示浏览器仅通过 HTTPS 连接传回 cookie。这可以确保 cookie ID 是安全的,且仅用于使用 HTTPS 的网站。如果启用此功能,则 HTTP 上的会话 Cookie 将不再起作用。原创 2017-11-17 16:03:29 · 7518 阅读 · 0 评论 -
String,StringBuffer,StringBuillder的底层结构
一:StringBuffer的底层(1)线程安全的字符串操作类(2)通过synchronized关键字声明同步方法,保证多线程环境下数据安全 public synchronized StringBuffer append(String str) { super.append(str); return this; }(3)底层存储数据的Char[]数组,...原创 2018-02-11 14:39:33 · 2729 阅读 · 0 评论 -
java.lang.NoClassDefFoundError: javax/servlet/SessionCookieConfig
java.lang.NoClassDefFoundError: javax/servlet/SessionCookieConfig at org.springframework.test.context.web.AbstractGenericWebContextLoader.configureWebResources(AbstractGenericWebContextLoader.java:20...原创 2018-03-08 17:36:56 · 788 阅读 · 0 评论 -
TDDL动态数据源基本说明
公司访问不了原网址,故在这里转载TDDL动态数据源基本说明总体描述TDDL动态数据源主要分为2层,每一层都实现了jdbc规范,以方便地集成到各种orm框架或者直接使用.每一层都各司其职. 整体结构如上图,TGroupDataSource(tddl group ds)默认情况下依赖TAtomDataSource(tddl atom ds),但是可以扩展依赖普通数据源.这一层主要的职责是解决读写分离以...原创 2018-05-30 18:42:40 · 1576 阅读 · 0 评论 -
使用new SecureRandom().nextDouble()替换Math.random()
Math.random()在一定的时候是可预知的;安全级别较低;原创 2018-07-02 17:47:37 · 6860 阅读 · 0 评论 -
spring boot单元测试中出现response、request依赖注入错误
是因为UT时并不会启动http容器;需要在测试类首部增加注解:@WebAppConfiguration完整代码如下:@WebAppConfiguration@ActiveProfiles("test")@RunWith(SpringJUnit4ClassRunner.class)@SpringApplicationConfiguration(HacksawApplicatio...原创 2018-07-18 16:35:18 · 2289 阅读 · 1 评论 -
hadoop依赖包小坑
依赖hadoop-client做一下Hadoop操作时要注意下 <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId...原创 2018-07-25 17:49:12 · 1701 阅读 · 0 评论 -
不要滥用ArrayList 的 ensureCapacity方法
ensureCapacity(int minCapacity)这个方法实现的是将数组进行扩容,扩容至原数组的1.5被,如果minCapacity大于原数组的1.5被则扩容到minCapacity;但是ArrayList中有size属性,这个值并未变化,所以当你通过index新增数组时会出现数组越界;因为ArrayList内部是通过size属性进行数组索引界限检查的;java.l...原创 2018-08-20 17:42:58 · 1164 阅读 · 2 评论 -
让Logback日志中显示主机名与IP地址及一切你想显示的
1.创建一个类继承自ch.qos.logback.classic.pattern.ClassicConverter 2.重新方法@Override public String convert(ILoggingEvent event) {} 3.配置logback.xml<conversionRule conversionWord="sulong" conv...原创 2018-12-11 18:47:44 · 11242 阅读 · 2 评论 -
Java HashMap的死循环
在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历过,本来觉得没什么好写的,因为Java的HashMap是非线程安全的,所以在并发下必然出现问题。但是,我发现近几年,很多人都经历过这个事(在网上查“HashMap Infinite Loo...原创 2019-09-16 21:22:41 · 140 阅读 · 0 评论 -
javap -c 字节码含义
栈和局部变量操作 将常量压入栈的指令 aconst_null 将null对象引用压入栈 iconst_m1 将int类型常量-1压入栈 iconst_0 将int类型常量0压入栈 iconst_1 将int类型常量1压入栈 iconst_2 将int类型常量2压入栈 iconst_3原创 2016-11-01 21:38:49 · 2590 阅读 · 1 评论 -
java获取机器名及所有网卡IP
获取机器名: public String getLocalHostName() { String hostName; try { InetAddress addr = InetAddress.getLocalHost(); hostName = addr.getHostName(); } ca原创 2016-11-09 17:19:49 · 5915 阅读 · 0 评论 -
web.xml文件详解
web.xml文件详解 前言:一般的web工程中都会用到web.xml,web.xml主要用来配置,可以方便的开发web工程。web.xml主要用来配置Filter、Listener、Servlet等。但是要说明的是web.xml并不是必须的,一个web工程可以没有web.xml文件。1、WEB工程加载web.xml过程 经过个人测试,WEB工程加载顺序与元素转载 2015-06-05 15:06:43 · 362 阅读 · 0 评论 -
获取网络图片宽高
public static Integer[] computeWHWithoutLocPic(String picUrl){ if(StringUtils.isBlank(picUrl)){ return null; } Integer[] picWHPair = new Integer[2]; BufferedImage bufferedImage原创 2016-03-16 17:17:52 · 412 阅读 · 0 评论 -
java中的PO/VO/DAO/BO/POJO简单介绍
PO: persistant object持久对象 最形象的理解就是一个PO就是数据库中的一条记录。 好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。 BO: business object业务对象 主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。 比如一个简历,有教育经历、工作经历、社会 关系等等。 我们可以把教育经历对应一原创 2016-05-14 13:54:50 · 282 阅读 · 0 评论 -
map的引用传递浅谈
map作为参数传递到方法中,其实质是引用的传递,但是如果所传参数map=null,这个时候,方法中对map的操作将不会影响map的值,因此,如果想完成map的引用传递,必须在map最开始的地方给map实例化:if (null == additionalInfo) additionalInfo = new HashMap();原创 2016-06-08 12:48:37 · 9496 阅读 · 0 评论 -
Java命令——javap
一般情况下,很少有人使用javap对class文件进行反编译,因为有很多成熟的反编译工具可以使用,比如jad。但是,javap还可以查看java编译器为我们生成的字节码。通过它,可以对照源代码和字节码,从而了解很多编译器内部的工作。实例javap命令分解一个class文件,它根据options来决定到底输出什么。如果没有使用options,那么javap将会输出包,类里的prote原创 2016-06-12 20:56:56 · 365 阅读 · 0 评论 -
JVM常用参数
-XX:+ 启用选项-XX:-不启用选项-XX:=-XX:=堆设置-Xms :初始堆大小-Xmx :最大堆大小-Xmn:新生代大小。通常为 Xmx 的 1/3 或 1/4。新生代 = Eden + 2 个 Survivor 空间。实际可用空间为 = Eden + 1 个 Survivor,即 90%-XX:NewSize=n :设置年轻代大小-XX:NewR原创 2016-07-04 21:23:42 · 331 阅读 · 0 评论 -
四种线程安全的单例设计模式
1.描述: Singleton(单例)是设计模式的一种,为了保证一个类仅有一个实例,并提供一个访问它的全局访问点。2.主要特点: 1)单例类确保自己只有一个实例(构造函数私有:不被外部实例化,也不被继承)。 2)单例类必须自己创建自己的实例。 3)单例类必须为其他对象提供唯一的实例。3.单例模式的应用:原创 2016-08-27 10:57:04 · 885 阅读 · 0 评论 -
java创建线程的三种方法
Java中创建线程主要有三种方式:一、继承Thread类创建线程类(1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。(2)创建Thread子类的实例,即创建了线程对象。(3)调用线程对象的start()方法来启动该线程。package com.thread; pub原创 2016-08-20 17:22:00 · 397 阅读 · 0 评论 -
java多线程之interrupt
使用 interrupt()中断线程interrupt()本身不会真正中断一个线程,调用interrupt之后线程也是在运行状态,只是对会抛出InterruptException异常的方法进行调用时,可以捕捉到这个异常,然后如果需要线程退出,在catch中return线程就退出了当一个线程运行时,另一个线程可以调用对应的 Thread 对象的 interrupt()方法来中断它,该方法原创 2016-08-21 19:16:22 · 390 阅读 · 0 评论 -
java多线程之线程状态
线程从创建、运行到结束总是处于下面五个状态之一:新建状态、就绪状态、运行状态、阻塞状态及死亡状态。 1.新建状态(New): 当用new操作符创建一个线程时, 例如new Thread(r),线程还没有开始运行,此时线程处在新建状态。 当一个线程处于新生状态时,程序还没有开始运行线程中的代码 2.就绪状态(Runnable)转载 2016-08-21 19:40:14 · 283 阅读 · 0 评论 -
Java序列化之排除被序列化字段(transient/静态变量)
我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。 然而在实际开发过程中,我们常常会遇到这样的问题,这个类的有些属性需要序列化,而其他属性不需要被序列化,打个比方,如果一个用户有一些敏感信原创 2016-08-21 20:36:48 · 30148 阅读 · 4 评论 -
HashMap、HashTable
Java集合类是个非常重要的知识点,HashMap、HashTable、ConcurrentHashMap等算是集合类中的重点,可谓“重中之重”,首先来看个问题,如面试官问你:HashMap和HashTable有什么区别,一个比较简单的回答是:1、HashMap是非线程安全的,HashTable是线程安全的。2、HashMap的键和值都允许有null值存在,而HashTable则不转载 2016-08-21 22:12:22 · 394 阅读 · 0 评论 -
Java ClassLoader原理
一、什么是ClassLoader? 大家都知道,当我们写好一个Java程序之后,不是管是CS还是BS应用,都是由若干个.class文件组织而成的一个完整的Java应用程序,当程序在运行时,即会调用该程序的一个入口函数来调用系统的相关功能,而这些功能都被封装在不同的class文件当中,所以经常要从这个class文件中要调用另外一个class文件中的方法,如果另外一个文件不存在转载 2016-08-23 11:09:43 · 289 阅读 · 0 评论 -
Java反射——方法
使用Java反射,你可以检查类的方法并在运行时调用它们。这是通过Java类java.lang.reflect.Method做的。本将会比较详细的讲述Java的Method对象。下面是涵盖的主题列表:Obtaining Method Objects (获取Method对象)Method Parameters and Return Types (Method的参数和返回值类型)转载 2016-08-23 11:37:04 · 304 阅读 · 0 评论 -
java多线程之——ThreadLocal
早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。ThreadLocal很容易让人望文生义,想当然地认为是一个“本地线程”。其实,ThreadLocal并不是一个Thread,而是Thread的局部变量,也许把它命名为ThreadLocalVari原创 2016-08-24 19:43:16 · 364 阅读 · 0 评论 -
一个对象的值映射到另一个对象
import com.google.gson.*; Gson gson = new Gson(); JsonParser parser = new JsonParser(); JsonElement mJson = parser.parse(gson.toJson(directSaleThreeyearInfoDO)); dire原创 2016-10-11 16:04:23 · 2385 阅读 · 0 评论 -
mybatis加Spring项目: 解决There is no getter for property named '***' in 'class java.lang.String'问题
使用mybatis映射mysql文如下,传入参数为‘parentCategoryId’,运行报错为:There is no getter for property named 'parentCategoryId' in 'class java.lang.String原创 2014-11-10 19:56:27 · 20235 阅读 · 2 评论