
java
文章平均质量分 66
bohu83
微信:bohu83
展开
-
fastjson 自定义类型转换 对象转换
1 开发自定义序列方式。post传的类里面有自定义类型:SHORTDATE。其实不是标准date类型,只有”YYYY-MM-DD“这是个springboot 项目,所以有两种办法,一种是通过SerializeConfig静态全局设置。有个项目从dubbo接口改为http接口,测试的时候发现大部分接口正常,个别接口报错。问题毕叫明显,处在自定义类型上了,网上我看有两种办法,一种是。还有一些类似的枚举类,enum 是跟这个一个逻辑。这个类是在API里面的,我试了下,不起作用。这个名字可以自定义。原创 2022-10-12 14:22:49 · 2342 阅读 · 0 评论 -
点选式图片验证码的一种实现效果
一背景 人机识别,反爬虫等,相信去关注这块的,诉求比较明确。通常来说,市面上很多这种,腾讯的验证码,网易的盾,还有极验这种专做这块的。好处是:验证方式多样,申请key,调用api 即可,不用去开发。可快速上线,缺点:花钱。不可控。比如我想让用户回答个问题,这个做不到。二 为什么选择点选式图片验证码? 网上常见的是滑块式的。而且关于破解方式也是很多了。相对容易吧。反过来对于开发来说:你得找图,复杂在于:还得扣图,包括滑块,缺口图等。就算你做完这些,前端也需要挺多工作量。而且初期没啥..原创 2021-09-02 12:08:15 · 1450 阅读 · 0 评论 -
java POI读取docx中图片位置
一 序 之前用POI读取Word内容,但是图片位置没有(能获得文档中的所有图片,但是你并不能知道这些图片是在哪里)。看了大佬写的文章,才动手试一下:pom.xml:这个要注意,很多留言咨询问的主要是版本的问题。 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> <groupId>org.apache.poi..原创 2021-02-18 17:47:32 · 2243 阅读 · 3 评论 -
List一次删除多个值
jdk 1.6时候,list删除值容易出错,就是直接使用:list.remove(i);所以要使用迭代器: ArrayList<String> strList = Lists.newArrayList("a","b","c"); Iterator<String> iterator = strList.iterator(); ...原创 2020-04-28 12:25:55 · 1690 阅读 · 0 评论 -
DigestUtils.md5 返回值转String
一 序 再Redis升级都集群的过程中发现一个case比较有意思,记录下: 现在根据一堆入参,调用md5下返回字节数组,如下所示DigestUtils.md5(source)内部的实现,也能看到 /** * Calculates the MD5 digest and returns the value as a 16 element <code...原创 2020-03-30 23:49:11 · 2384 阅读 · 0 评论 -
java集合:hashmap
一 map上一篇整理里list,本文继续整理hashmap.先说一下map的基本接口Map将key和value封装至一个叫做Entry的对象中,Map中存储的元素实际是Entry。只有在keySet()和values()方法被调用时,Map才会将keySet和values对象实例化。所以map的遍历右三种方式:package com.daojia.collect;import java.uti...原创 2018-04-24 17:49:29 · 371 阅读 · 0 评论 -
java梳理-反射
本文属于面试题梳理系列:问题:java反射类的访问私有方法与普通方法相比,需要多处理什么? 之前梳理类加载的时候,介绍到初始化的时机之一:用java.lang.reflect包的方法对类进行反射调用的时候,如果类没有进行过初始化,则需要先触发其初始化。下面梳理相关知识。目录如下:1.什么是JAVA的反射机制2.JAVA反射机制API及功能 获取类的Class对象 获取类的Fields 获取类的Me原创 2016-04-11 18:25:32 · 1403 阅读 · 0 评论 -
二维码带汉字Linux环境乱码解决
一背景 二维码的应用很广泛,这里不多介绍。我们的业务场景是给家政人员电子简历增加二维码,便于客户快速扫描识别。问题在于汉字的乱码。二问题 关于二维码生成,主要就是两种方式,qrcode跟zxing.网上例子很多,不多介绍。我是从网上找了直接用的。代码如下:/** * */package com.bj58.daojia.crm.crmCustom.utils;i原创 2017-02-06 13:52:17 · 4534 阅读 · 0 评论 -
【Java程序性能优化】-读书笔记第3章
序: 在看这本12年出的书,还是有借鉴意义。3.1 字符串优化:3.1.1 String对象的特点: 不变性:指String对象一旦生成,则不更在对他进行改变。针对常量池的优化:当两个String对象拥有相同 的值时,他么只引用常量池中的同一个拷贝。类final的定义:不能有子类。3.1.2 jdk1.6 subString()方法的内存泄漏: 在Stri原创 2017-10-23 13:45:31 · 387 阅读 · 0 评论 -
java:BIO、NIO、AIO区别
之前有人问我BIO、NIO、AIO区别,我答的不好。下面先梳理下概念NIO:同步非阻塞;AIO:异步非阻塞有点拗口,其实得分开理解:同步异步是指是否是同一次请求(便于理解,举个例子)。阻塞和非阻塞就是aio和nio的问题,指的是调用一个方法能否立即返回结果。先来个例子理解一下概念,以银行取款为例:同步 : 自己亲自出马持银行卡到银行取钱(使用同步转载 2016-04-21 14:55:17 · 663 阅读 · 0 评论 -
java学习-【转】SharedHashMap是更低延迟无GC暂停的Map实现
原文地址:http://flychao88.iteye.com/blog/2076419原文如下:SharedHashMap是开源工具OpenHFT一个子项目,SharedHashMap提供ConcurrentHashMap更低延迟无JVM的GC暂停的实现。两个特点是:1.所有元素都保存在Java heap之外,这样就不受GC影响,没有GC暂停。2.所有元素都在一个共享内存区域,对所有进程都是可视原创 2016-04-11 18:23:47 · 1494 阅读 · 0 评论 -
java学习-【转】如何用Java编写一段代码引发内存泄露
原文地址:http://flychao88.iteye.com/blog/2113133原文如下:本文来自StackOverflow问答网站的一个热门讨论:如何用Java编写一段会发生内存泄露的代码。 Q:刚才我参加了面试,面试官问我如何写出会发生内存泄露的Java代码。这个问题我一点思路都没有,好囧。A1:通过以下步骤可以很容易产生内存泄露(程序代码不能访问到某些对象,但是它们仍然保存在内存中)原创 2016-04-11 18:23:50 · 741 阅读 · 0 评论 -
java学习-jmap命令
上篇学习笔记用mat分析dump,就是用jmap命令生成的。所以借这个机会整理下jmap常用命令背景:java dump是Java虚拟机的运行时快照。将Java虚拟机运行时的状态和信息保存到文件。 线程Dump,包含所有线程的运行状态。纯文本格式。堆Dump,包含线程Dump,幵包含所有堆对象的状态。二进制格式。jmap 的用途是为了展示java进程的内存映射信息,或者堆内存详情。常用的参数如下:原创 2016-04-11 18:24:24 · 1163 阅读 · 0 评论 -
java数组:2个数组,查出相同的元素
本文属于面试题整理系列:给出2个数组,要求查出相同的元素题目描述有些歧义,我对此理解就是相同元素就是两个数组都有的,而不是单个数组有的。就是下面写个demo测试下public static Set findSameElementIn2Arrays(Integer[] array1,Integer[] array2) { Set sameElementSet = new HashS原创 2016-04-11 18:25:23 · 6155 阅读 · 0 评论 -
java梳理-给一个字符串类型的数字,不调用java直接转的API写一个方法转换出来
65、给一个字符串类型的数字,不调用java直接转的API写一个方法转换出来看一眼题目,习惯了用Integer.parseInt直接处理。public static int StrtoNum(String str){ int result =0; if(str== null||str.equals("")) throw new NumberFormatException("null");原创 2016-04-11 18:25:21 · 1171 阅读 · 0 评论 -
java梳理-int类型在32位和64位有什么不同
本文属于java基础面试系列:63 int类型在32位和64位有什么不同我看了题目之后觉得不是很理解,应该是跟操作系统无关的,网上搜了下也是没有好文章专门说明,比较困惑,咨询下题主:是楚楚街面试问的,还是把自己理解思路试着写一下。**************************************************题主反馈“有些编译器编译成字节码时就是给这种类型分配的8个字节,对象头原创 2016-04-11 18:25:18 · 15207 阅读 · 2 评论 -
jdk8 stringjoin
stringjoin可以帮助避免用stringbuilder那样去拼字符串,public StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix) { Objects.requireN原创 2018-01-22 10:33:09 · 1115 阅读 · 0 评论 -
Java中类型强转:int 转byte
群里有人问了个问题: int a =234; byte b = (byte)a; System.out.println(b); 因为Java中基本类型的范围不同,强转可能会导致异常。Java中的基本类型java中所有的基本数值类型都有正负号,所以不要去寻找无符号的数值类型。基本类型大小最小值最大值包装器类型boolean----char16-bit Characterbyte8 bit...原创 2018-04-11 19:59:24 · 5049 阅读 · 1 评论 -
java集合:stack及其应用举例
一 API栈是一种线性数据结构,遵从 LIFO(后进先出)的操作顺序,所有操作都是在顶部进行。Java 集合框架中的 Stack 继承自 Vector:跟 Vector 一样,它是 数组实现的栈。jdk1.8源码如下:publicclass Stack<E> extends Vector<E> { /** * Creates an empty Stack...原创 2018-04-23 12:01:04 · 926 阅读 · 0 评论 -
java.io.IOException: invalid constant type: 18
问题: 改造旧工程,从springmvc到自研的dwf. java.lang.RuntimeException: java.io.IOException: invalid constant type: 18 at javassist.CtClassType.getClassFile2(CtClassType.java:204) at javassist...原创 2019-06-19 18:47:05 · 2593 阅读 · 1 评论 -
skiplist及Java实现
一 序 在看《深入分布式缓存》的第7章,介绍redis的set的实现时候,提到了跳表skiplist.对应的整理下,主要分两篇吧,本篇先整理跳表及Java实现。后面在看Java的实现ConcurrentSkipListSet跟ConcurrentSkipListMap。二 skiplist2.1 名词 本节主要从wiki摘取:跳表由William Pugh 1989年发明。他...原创 2018-11-03 13:43:59 · 3076 阅读 · 2 评论 -
关于日志的一些总结
一 日志发展历史 java使用了一种自定义的、可扩展的方法来输出日志。虽然Java通过java.util.logging包提供了一套基本的日志处理API,但你可以很轻松的使用一种或者多种其它日志解决方案。这些解决方案尽管使用不同的方法来创建日志数据,但它们的最终目标是一样的,即将日志从你的应用程序输出到目标地址。 上面说的JUL是SUN的亲儿子,可惜啊亲儿子也没干过apache...原创 2018-10-16 16:01:07 · 606 阅读 · 0 评论 -
Java集合:ConcurrentLinkedQueue
一 序在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而非阻塞的实现方式则可以使用循环CAS的方式来实现.例如:ConcurrentLinkedQueue下面从源代码中分析ConcurrentLinkedQueu...原创 2018-06-19 20:21:36 · 432 阅读 · 0 评论 -
java中的深拷贝与浅拷贝
一 序 最初这篇打算放在arraylist里面整理,因为arraylist也是实现了clone接口。想想还是摘出来吧public interface Cloneable {}关于clone,就是复制。它允许在堆中克隆出一块和原对象一样的对象,并将这个对象的地址赋予新的引用。 Java 中 一个类要实现clone功能 必须实现 Cloneable接口,否则在调用 clone() 时会报 Clon...原创 2018-06-29 16:38:48 · 510 阅读 · 0 评论 -
java集合:PriorityQueue
一 序: 之前在看shardingjdbc的OrderByStreamResultSetMerger的时候,用了PriorityQueue。来看看对应的实现.先补充下相关概念:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列是一种特...原创 2018-06-15 12:02:54 · 1125 阅读 · 0 评论 -
Java集合:ConcurrentHashMap
序上一篇整理过hashmap. 插入的元素超过了容量(由负载因子决定)的范围就会触发扩容操作,就是rehash,这个会重新将原数组的内容重新hash到新的扩容数组中,在多线程的环境下,存在同时其他的元素也在进行put操作,如果hash值相同,可能出现同时在同一数组下用链表表示,造成闭环,导致在get时会出现死循环,所以HashMap是线程不安全的。而对应的安全的Hashtable是整个的加锁,所以...原创 2018-04-27 20:24:29 · 600 阅读 · 0 评论 -
java集合:LinkedList
序:ArrayList基于数组来实现集合的功能,其内部维护了一个可变长的对象数组,集合内所有对象存储于这个数组中,并实现该数组长度的动态伸缩。LinkedList基于链表来实现集合的功能,其实现了静态类Node,集合中的每个对象都由一个Node保存,每个Node都拥有到自己的前一个和后一个Node的引用public class LinkedList<E> extends Abs...原创 2018-04-21 21:55:00 · 218 阅读 · 0 评论 -
Java集合:arraylist及java.util.ConcurrentModificationException
今天很热,30度了公司还没开空调。看看源码安静下。一 list:上一篇整理了 Java 集合框架的的主要底层接口collection,本文继续整理它的子接口list。其它子接口见下图官方文档: https://docs.oracle.com/javase/tutorial/collections/interfaces/list.html一个 List 是一个元素有序的、可以重复、可以为 null ...原创 2018-04-20 18:28:20 · 443 阅读 · 0 评论 -
java 集合:
一 序:集合,或者叫容器,是一个包含多个元素的对象;集合可以对数据进行存储,检索,操作。JDK提供了大量的集合实现供开发者使用,在java.util包下面。1. 接口 2. 抽象类 3. 实际使用中的类1. 最基本的是Collection接口2. 然后是Set,List,SortedSet接口,继承于Collection接口3. 两外的Map和SortedMap接口,其实准确而言是映射,而不是...原创 2018-04-20 13:56:07 · 217 阅读 · 0 评论 -
java梳理-浮点类型计算为什么不准确
本文属于java基础梳理系列:原问题:62、浮点类型为什么有时候不精确,详细说出来,怎么解决先来看个demo:import java.math.BigDecimal;/** * * @author zhangliang * * 2016年3月30日 下午5:58:39 */public class FloatTest { public static void main(String[] args原创 2016-04-11 18:25:15 · 2784 阅读 · 0 评论 -
java基础梳理-理解重载与重写
55、重载和重写的区别重载(Overloading)和重写(Overriding)是Java中两个比较重要的概念。名字相近而已,没有实质关联。定义 重载简单说,就是函数或者方法有同样的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。重写重写指的是在Java的子类与父类中有两个名称、参数列表都相同的方法的情况。由于他们具有相同的方法签名,所以子类中的原创 2016-04-11 18:25:13 · 818 阅读 · 0 评论 -
java学习-[转]HashMap实现原理分析
程老师原文地址:http://flychao88.iteye.com/blog/1976371原文如下:1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。 2. HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,...原创 2016-04-11 18:23:29 · 777 阅读 · 0 评论 -
java学习-浅淡JAVA异常机制如何设计
程老师原文地址:http://flychao88.iteye.com/blog/1963811原文如下:一、异常的好处 异常带来诸多好处。首先,它将错误处理代码从正常代码(normal code)中分离出来。你可以将那些执行概率为99.9%的代码封装在一个try块内,然后将异常处理代码置于catch子句中。这种方式的好处是,正常代码因此而更简洁。 如果你不知道如何处理某个方法中的一原创 2016-04-11 18:23:26 · 449 阅读 · 0 评论 -
Java网络IO BIO NIO AIO
程老师博客原文:http://flychao88.iteye.com/blog/1958431NIO和IO的区别Java NIO编程 提供了对块IO的支持,使用块IO的好处是效率更高 1. 基本 概念 IO 是主存和外部设备 ( 硬盘、终端和网络等 ) 拷贝数据的过程。 IO 是操作系统的底层功能实现,底层通过 I/O 指令进行完成。 所有语言运行时系统提供执行 I/O 较高级别的工具。 (c...原创 2016-04-11 18:23:21 · 782 阅读 · 0 评论 -
java基础学习-java常用对象的内存占用大小
原文地址:http://flychao88.iteye.com/blog/1913353原文如下:这里介绍java常用对象的内存占用大小.32位和64位以及不同的jvm参数可能会导致对象大小不同. java版本 Open JDK 64-bit jvm参数 -Xmx2g -Xms2g 基本类型 对象原创 2016-04-11 18:23:19 · 785 阅读 · 0 评论 -
ORA-01012: not logged on(问题)
最近卡业务后台管理系统老出问题,就是重启jboss后就米问题.过段时间不好用了.很郁闷.,查看日志,找出错误问题: 2008-01-16 14:43:55,662 [http-0.0.0.0-80-6] INFO .0 umsadmin.com.voole.services.card.impl.CardServiceImpl - fail to change card status:ORA-02原创 2016-04-11 18:23:03 · 2435 阅读 · 0 评论 -
Jboss读取jar包的问题
今天做中少社项目后台审核部分时,遇到一个问题.就是在读取作品的介绍时(大字段).测试case能过.但是防到jboss运行就取不出来了.跟进去是一个oracle sql异常.说clob.length出错.不明白.但测试case没问题啊.肯定是jboss的问题. 可是出在哪里呢?首先怀疑是jndi不对,因为最近数据库配置修改过.看了看配置文件.没问题.那就是读取大对象的jar包有问题.把那原创 2016-04-11 18:22:58 · 2099 阅读 · 0 评论 -
Java中对文件的操作(转)
java中提供了io类库,可以轻松的用java实现对文件的各种操作。下面就来说一下如何用java来实现这些操作。 1。新建目录 String filePath="c:/aaa/"; filePath=filePath.toString();//中文转换 java.io.File myFilePath=new java.io.File(filePath); if(!my原创 2016-04-11 18:22:53 · 401 阅读 · 0 评论 -
正则表达式全部符号解释(转)
全部符号解释 字符 描述\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r'原创 2016-04-11 18:22:50 · 380 阅读 · 0 评论 -
jsp中获取客户ip及其他资料的方法
具体的方法可以看看java ee的文档.request应该是 HttpServletRequeststring agent = request.getheader("user-agent"); stringtokenizer st = new stringtokenizer(agent,";"); st.nexttoken(); //得到用户的浏览器名 string userb原创 2016-04-11 18:22:45 · 406 阅读 · 0 评论