
java
文章平均质量分 54
nayi_224
这个作者很懒,什么都没留下…
展开
-
java拼接树形json结构
直接百度就能搜到很多相关文章,但是没看到有什么理想的。搜这个的人大部分只是想找个工具类,粘项目里简单改两下直接用的,我简单翻了几页没看到好用的代码,没办法自己写吧。功能预期结果对于这样的数据 List<Map> list = new ArrayList<Map>(); list.add(new HashMap(){{this.put("id", "1");this.put("parent_id", "");this.put("data", "11");}}); lis原创 2022-05-16 14:33:19 · 1669 阅读 · 0 评论 -
WebSecurityConfig 设置忽略拦截
这是官方文档给出的基本配置,默认会拦截所有路径import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.security.config.annotation.web.builders.HttpSecurity;import org.springframework.security.co原创 2021-08-17 17:49:57 · 4095 阅读 · 0 评论 -
Hikari连接池FastList与ArrayList的对比
最近在给项目换连接池的时候,偶然看到有文章说hikari的FastList做了一些优化,比ArrayList效率要好,于是研究了一下。这是官方的介绍https://github.com/brettwooldridge/HikariCP/wiki/Down-the-Rabbit-HoleArrayListOne non-trivial (performance-wise) optimization was eliminating the use of an ArrayList instance in原创 2021-08-09 17:54:54 · 390 阅读 · 0 评论 -
java 正则表达式备忘笔记
java中的正则表达式主要有两个作用,一个是判断字符串是否匹配正则表达式,另一个是通过正则表达式来截取字符串中的一部分。判断是否匹配指定表达式的语法 String str = "33as"; String pattern = "\\d{2}.*$"; System.out.println(Pattern.matches(pattern, str));通过正则表达式来截取字符串简单截取 String str = "a112b234c543d"; String pattern = "原创 2021-04-26 10:00:37 · 211 阅读 · 0 评论 -
java调用mybatis demo
spring集成mybatis的资料很多,但是java程序单独调用mybatis的资料却很少,整理一个例子作为备用。pom <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> <dependen原创 2021-01-07 11:48:10 · 564 阅读 · 0 评论 -
java获取法定节假日
状态1:法定节假日状态2:周末,但是因为调休而变更为工作日使用的是百度的开放接口。与百度搜索日历后的页面数据一致。import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.URL;import java.net.URLConnection;import java.util.ArrayList;import java.util.Iterator;import java.util.List;原创 2020-10-14 14:07:21 · 31622 阅读 · 8 评论 -
springboot Failed to convert value of type ‘java.lang.String‘ to required type ‘java.lang.Long‘; nes
springboot项目请求时报错Resolved [org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert value of type ‘java.lang.String’ to required type ‘java.lang.Long’; nested exception is java.lang.NumberFormatException: For input原创 2020-08-24 11:15:23 · 20173 阅读 · 1 评论 -
哈夫曼树 java实现构建、查找、生成哈夫曼编码
哈夫曼树,又称最优二叉树。特点是每一个(叶子)节点都有一个权值,可以认为代表的是这个点被查询的概率。哈夫曼树要求所有(叶子节点)权值*深度的和最短。为了说明方便,设节点的值与权值相等。哈夫曼树的构建通过观察可以看出,权值小的在下,大的在上。由此可以很容易理解构建的规则:将所有的节点(或者说是只有根节点的子树)放入一个集合,每次取出两个最小的节点合成一个新子树并放入集合,循环,直到集合中只剩最后一个元素。jdk已经提供了优先队列的实现,所以实现起来非常简单创建测试代码,创建节点类import原创 2020-05-27 17:21:17 · 710 阅读 · 1 评论 -
java实现二叉搜索树
二叉排序树(Binary Sort Tree),又称二叉查找树(Binary Search Tree),亦称二叉搜索树。定义如下(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)左、右子树也分别为二叉排序树;(4)没有键值相等的结点。或者说的更简洁一点,就是:对于每一个节点,它的左子树都比它小,右节点...原创 2020-04-28 15:58:59 · 326 阅读 · 0 评论 -
StringBuffer与StringBuilder拼接字符串时的区别
jdk版本为1.8StringBuffer与StringBuilder继承自同一父类AbstractStringBuilder,append的源码分别为StringBuffer @Override public synchronized StringBuffer append(String str) { toStringCache = null; ...原创 2020-03-04 12:50:29 · 1254 阅读 · 0 评论 -
记录一下win10笔记本安装jdk时的问题
先说明一下情况,我这个笔记本之前是安装过jdk的,并且也进行过项目开发,但是由于某些原因已经有好久没用了,再加上之前重做过C盘,配置也都丢了,导致eclipse、myeclipse、idea已全部阵亡。今天又从jdk开始重新安装,没想到卡了我半个小时,所以写下这篇博客记录下问题,顺便科普一些排错的小技巧。首先按照网上找到的那一套设置环境变量,设置完JAVA_HOME、CLASSPATH、PATH...原创 2020-03-03 18:59:39 · 388 阅读 · 0 评论 -
java 线程池源码解析
java中的线程池通常指的是ThreadPoolExecutor,本文主要解析线程池执行过程中的核心代码。先来说一下什么是线程池以及线程池是做什么的吧。我们平常所写的那些java代码(不含Thread,Runnable的)都是单线程的,比如这样 public static void main(String[] args) throws InterruptedException { // T...原创 2020-01-20 17:33:17 · 495 阅读 · 0 评论 -
java json处理
net.sf.json引入依赖包 <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.2.3</version> <classifier>j...原创 2020-01-09 15:04:43 · 175 阅读 · 0 评论 -
activemq学习笔记
官方文档地址https://activemq.apache.org/index.html简介activemq是实现消息队列的一个框架,主要有两套功能:队列,发布/订阅队列涉及到两个概念:生产者与消费者。一个生产消息,一个消费消息。发布/订阅涉及到三个概念:发布者,订阅者,主题。主题其实就是一个字符串,一个名字。发布者在这个名下发消息,所有订阅这个主题(监控这个字符串)的订阅者收到消息。...原创 2020-01-06 15:11:03 · 232 阅读 · 0 评论 -
maven 查找jar包的version
从网上抄代码的时候有时会遇到这种情况:给出的version的版本错误,或者无法下载,或者干脆就没给。比如这个配置,我本地就无法下载 <dependency> <groupId>org.apache.ibatis</groupId> <artifactId>ibatis</artifactId> <version...原创 2019-11-22 11:09:58 · 4280 阅读 · 0 评论 -
ResultSet 转List<Map>
public static List<Map<String, Object>> toListMap(ResultSet ret) throws SQLException{ List<Map<String, Object>> list = new ArrayList(); ResultSetMetaData meta = r...原创 2019-11-20 16:58:01 · 1335 阅读 · 1 评论 -
搭建一个简易的springboot-maven项目
使用工具——eclipse 2019-03直接用工具创建一个maven项目,得到一个纯净的maven项目pom.xml内容<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:...原创 2019-11-06 10:57:09 · 518 阅读 · 0 评论 -
springboot项目mybatis日志自定义设置无法生效
springboot项目mybatis日志自定义设置无法生效,就是无法设置日志级别,无法对java.sql.PreparedStatement、java.sql.Connection等进行设置。翻了spring和mybatis官网以及几十篇文章都没找到一个好使的方法,大概是项目中有什么奇怪的冲突的原因吧,不准备找了,直接自定义日志搞起。yml中的mybatis配置mybatis: map...原创 2019-11-04 11:07:08 · 1766 阅读 · 2 评论 -
There was an unexpected error (type=Not Found, status=404).
使用spring项目访问后台接口时返回了这个错误。Whitelabel Error PageThis application has no explicit mapping for /error, so you are seeing this as a fallback.Fri Oct 25 17:31:57 CST 2019There was an unexpected error (...原创 2019-10-25 17:37:55 · 883 阅读 · 0 评论 -
kmp算法讲解 java
kmp算法本质上就是一个字符串匹配的算法。它的作用与java中String类的indexOf方法是一样的,就是返回一个字符串(以下简称N串)在另一个字符串(以下简称M串)中的位置,只不过在复杂度上进行了一些优化。暴力匹配算法简单来说,就是通过双重循环来遍历所有情况,以进行匹配。相信所有正在学习kmp算法的人早已掌握这种方法了,我也不再多说,只给出一种解法以供参考。public class ...原创 2019-10-12 09:57:42 · 620 阅读 · 0 评论 -
ibatis/mybatis 引用全局变量
官方文档地址https://www.mybatis.org/mybatis-3/zh/configuration.htmlibatis编辑文件test.propertiestestValue=aaaaa配置文件中加入<sqlMapConfig> <properties resource="config/test.properties"/> <...原创 2019-04-29 15:49:16 · 1663 阅读 · 1 评论 -
ORA-01795解决方法
a in ('1', '2', '3') 动态拼接的sql中,in的数据超过1000报错。 解决方法:1.改写为a in ('1', '2') or a in ('3') 的形式参考代码 public static void main(String[] args) { // TODO Auto-generated method stub S...原创 2018-06-01 16:06:59 · 1949 阅读 · 0 评论 -
java判断字符串是否为指定的日期格式
正则复杂得有点过分,异常判断又看着不爽,换了一种写法。import java.text.DateFormat;import java.text.ParsePosition;import java.text.SimpleDateFormat;import java.util.Date;public class Test97 { public static void main(Stri...原创 2019-10-11 10:22:54 · 1528 阅读 · 1 评论 -
java8 :: 方法引用 method references
官方文档地址原创 2019-05-23 11:04:46 · 654 阅读 · 0 评论 -
java8 接口新特性default,静态方法
1.8中新增的关键字,用来修饰接口中的方法。带有default修饰的方法允许拥有方法体,用以对接口方法提供默认实现。public interface IDef { default void aa() { System.out.println(111); }}对于实现了IDef接口的类,在IDef中的用default关键字修饰的方法是不需要强制实现的。下面的代码是可以编译通过的。...原创 2019-05-21 15:26:47 · 378 阅读 · 0 评论 -
oracle 根据系统表自动生成简单的查询,修改,新增语句
执行环境:pl/sql。主要适用于java/ibatis。创建测试表create table task.nayi_180904_01 (login_id varchar2(50),user_name varchar2(50),age number,create_time date default sysdate,score number);comment on colu...原创 2018-09-04 15:58:06 · 1173 阅读 · 0 评论 -
myeclipse启动报错
关键字:弹出对话框:An error has occurred.See the log file…/.log(让你看日志) org.osgi.framework.BundleException: Exception in org.eclipse.core.resources.ResourcesPlugin.start() of bundle org.eclipse.core.resource...原创 2018-08-01 17:16:48 · 4377 阅读 · 0 评论 -
ibatis调用oracle存储过程(极简版)
版本:ibatis-2.3.4.726.jar。(与其他版本及mybatis用法基本一致)创建存储过程create or replace procedure nayi_test_pro_0703(in_obj1 in number,out_obj out number, in_obj2 in number) isbegin out_obj := 10000 + in_obj1 ...原创 2018-07-13 16:54:18 · 635 阅读 · 0 评论 -
java.lang.NoSuchMethodError: javax.servlet.ServletContext.getContextPath()Ljava/lang/String;
tomcat启动时报java.lang.NoSuchMethodError: javax.servlet.ServletContext.getContextPath()Ljava/lang/String;一般来说,就是项目jar包不支持servlet3.0规范。需要正确引用支持规范的servlet-api.jar。一个比较笨的方法是,在高版本的tomcat找这个jar包。我这个报错...原创 2018-07-12 10:44:01 · 3669 阅读 · 1 评论 -
java静态方法使用泛型
用法import java.util.ArrayList;import java.util.Collection;import java.util.HashSet;import java.util.List;public class StaticMethod { public static void main(String[] args) { System....原创 2018-07-23 15:13:57 · 27302 阅读 · 5 评论 -
java ArrayList实现原理解析
主要参照jdk1.6,1.7 。 为了便于理解,对源码进行了一定改造,并按层次进行解析。 本文只讨论关键的方法。主要实现的接口 Iterable:返回一个可迭代的类。 Collection:集合类,定义了一系列处理集合的方法。比如add,remove,size等。主要的父类 AbstractList:根据jdk版本的不同,会有一些具体的实现方法。不过最需要关注的一点是这个类定义了...原创 2018-05-14 23:24:15 · 168 阅读 · 0 评论 -
javaweb项目实现连续3次输错密码后禁止登录
摘要:主要通过sql(oracle)实现连续X次输错密码后,禁止登录。Y小时或隔天后可以登录。在javaweb项目的登录模块中经常会有连续X次输错密码后禁止登录的需求。这个功能可以通过多种方法来实现。本文只介绍以sql为主的方法,以供参考。这是从实际项目中扒出来的代码,对一些变量名进行了处理,但是文中将包含全部核心代码。使用框架为struts2,ibatis。需求:连续输入错误密码...原创 2018-05-07 22:52:21 · 20308 阅读 · 3 评论 -
java System.arraycopy 复制数组
简介System.arraycopy,对数组进行复制的方法。使用数组的封装类的底层实现基本都会出现他的身影。比如Arrays,ArrayList。源码 * @param src the source array. * @param srcPos starting position in the source array. *...原创 2018-05-12 21:15:37 · 895 阅读 · 0 评论 -
通过ArrayList源码深入理解java中Iterator迭代器的实现原理
注意:本文将着重从源码的角度对Iterator的实现进行讲解,不讨论List与Iterator接口的具体使用方法。不过看懂源码后,使用也就不是什么问题了。java中各种实现Iterator的类所具体使用的实现方法各不相同,但是都大同小异。因此本文将只通过ArrayList类源码进行分析。所以最好对ArrayList的源码有一定了解,或者至少具备相关的算法知识。首先贴出ArrayList类中...原创 2018-04-27 16:56:18 · 2664 阅读 · 2 评论 -
java获取配置文件.properties中的数据
方法太多,只写一种比较简单的。 文件test1.properties内容test1 = 123;test2=321 Properties prop = new Properties(); prop.load(new FileInputStream("src/test1.properties")); System.out.printl...原创 2018-09-17 11:18:18 · 1719 阅读 · 0 评论 -
java设计模式学习笔记(三) --- 行为型模式
责任链模式我获取了一个对象,现在需要根据对象内部的特征来把它交给特定的类去处理。下面是一种简单的实现方法。package blog.java.pattern.chain;public class ChainTest { public static void main(String[] args) { Obj obj = new Obj((int)(Math.random() * 2...原创 2018-10-26 14:46:47 · 345 阅读 · 0 评论 -
java 实现百度地图的聚合功能
出于某种原因,需要把百度地图中的聚合方法在java中实现,自己写了一份。当时做的功能是把聚合后的点存入数据库中,并且需要计算的数值比较多,因此显得麻烦些,我已经把代码进行了一些删减。(本来是想提供一个更纯净的版本的,但是这个两年前的代码,实在是有点忘了,并且现在也并不需要使用,不打算再读一遍。等真正需要的时候再重写一份吧。)其中DaoHelper是调用sql的公共方法,IClusterOpt ...原创 2019-04-25 16:51:18 · 2590 阅读 · 0 评论 -
mybatis java.sql.SQLException: 无效的列类型
Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. Cause: java.sql.SQLException: 无效的列类型用过mybatis的人一定都遇到过这样的错误吧,网上都说是加上jdbctype就行了。确实可以,但是也太麻烦...原创 2019-05-05 15:24:45 · 2127 阅读 · 1 评论 -
mybatis 拦截器处理日志
参考文章:https://www.mybatis.org/mybatis-3/zh/configuration.html#pluginshttps://www.cnblogs.com/fangjian0423/p/mybatis-interceptor.htmlhttps://www.cnblogs.com/Xrq730/P/6972268.Html目前只支持map参数、字符串参数类型、o...原创 2019-05-05 14:22:05 · 1015 阅读 · 0 评论 -
java字符串比较到底应该用==还是equals
当用new String(“aaaa”)对字符串做定义时,==会返回false,equals可以返回正常结果。比如 System.out.println("a" == "a"); //true System.out.println("a".equals("a")); //true System.out.println("a".equals(new String("a")));原创 2019-01-08 16:52:54 · 6802 阅读 · 1 评论