
技术
文章平均质量分 57
Oxye
我们都有选择权
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
解决oracle.sql.TIMESTAMP序列化转换失败问题 及 J2EE13Compliant原理
通过设置属性oracle.jdbc.J2EE13Compliant=true,可以时oracle的timestamp以oracle.sql.TIMESTAMP类型返回,不设置时默认false,返回oracle.sql.TIMESTAMP,可能会导致序列化时类型转换失败等问题。原创 2023-12-05 14:16:48 · 2007 阅读 · 0 评论 -
Chat2DB Web版 服务器端安装部署启动流程
Chat2DB是款数据库连接工具,主要就是使用JDBC做数据库连接,外加多对接了几个聊天AI网站,把数据库和AI做了个集成,比使用传统工具Navicat,再另外去AI查方便一点。官网可以直接下客户端使用,也可以部署到服务器上用浏览器访问,但是我找了半天没发现Web版的部署方法,所有就写一篇Web版的安装、部署、启动的流程,不一定适合每个人,因为每个人的环境、软硬件不一样,仅供参考。原创 2023-10-31 14:44:55 · 7778 阅读 · 13 评论 -
org.apache.sshd的SshClient客户端 连接服务器执行命令 示例
SshClient使用示例代码,可以直接执行,也可以做替换命令、维护session等修改。原创 2023-10-19 16:19:53 · 3157 阅读 · 0 评论 -
Java:本地文件通过表单参数接口发送后大小变成0
发现一个文件生成以后,如果不通过接口发送,大小就正常,通过接口发送,文件大小就变成0了,发送的文件也是0 空文件。原创 2023-09-15 14:25:35 · 405 阅读 · 1 评论 -
HashMap、ConcurrentHashMap 一行代码实现批量删除元素
我不想迭代器遍历,想找个短点的方式,但是查了一下没满意的,自己搞一个,比较初级的代码。原创 2023-04-25 17:52:53 · 1307 阅读 · 0 评论 -
Druid 数据库连接池默认大小
【代码】Druid 数据库连接池默认大小。原创 2023-01-30 17:45:23 · 2023 阅读 · 0 评论 -
Java中的byte & 0xff到底有什么作用?
byte & 0xff 是将byte从(-128 至 127)转化成 int(转化后的数值范围: 0 至 255)。其实就是1个byte有两种表示方法,我们既可以用-128 - 127这段范围来表示一个字节,也可以用 0 - 255这个范围的数来表示一个字节。转载 2022-11-24 11:24:54 · 1896 阅读 · 0 评论 -
RocketMq:响应码列表,code=11
发mq失败,问响应码11什么意思,因为不是同一个语种的,我下了份RocketMq源码看一下,应该是下面这个,11对应SLAVE_NOT_AVAILABLE。方面大家查找RocketMq响应码原创 2022-11-23 18:54:31 · 642 阅读 · 0 评论 -
Jsch session channel timeout 默认连接超时时间机制
代码示例上面的session和channel连接时都使用了无参构造函数,我看有的人说要穿连接超时限制,但是也没说默认连接超时时间是多久,所以自己得看看,可能他设个5000毫秒,也可能设个-1、0之类的永不超时com.jcraft.jsch.Session默认时间是0有多种连接方式,如socket_factory、proxy,如我们看socket_factory的createSocket就行也可以看到当connectTimeout>0时进行了setSoTimeout设置,所以说这个连接的connectT原创 2022-08-15 13:45:02 · 7624 阅读 · 0 评论 -
Linux:kkFileView v4.0.0 安装、启动教程
预览组件-kkFileView 官网:https://kkfileview.keking.cn/zh-cn/docs/production.html官网安装教程较为简单,无4.0.0版的教程https://gitee.com/kekingcn/file-online-preview/releases 上说,v4.0.0对应LibreOffice7.12.安装 kkFileViewkkFileView-4.0.0 下目录结构把office.home改成自己安装的libreoffice7.1如果你本来原创 2022-07-01 11:12:08 · 12135 阅读 · 9 评论 -
sftp连接工具ganymed-ssh2,连接不到Apache SSHD sftp服务器的问题
上篇解决了低版本jsch连接sftp服务器的问题,后来又发现一个项目中有另一个连接工具ganymed-ssh2,再来解决一下查看版本,是2006年的包,很有可能也是算法跟不上的问题依赖如下kex algorithms不匹配问题使用此依赖,测试连接本地sftp服务器,本地sftp服务器警告kex algorithms不匹配问题 :意思是客户端支持的算法和服务端没有能对应上的在此类其实能搜到org.apache.sshd.common.kex.BuiltinDHFactories但均标注了@Depre原创 2022-06-19 23:29:53 · 2474 阅读 · 1 评论 -
sftp连接工具jsch:0.1.54与0.1.55版本的区别,连接到Apache SSHD
项目中使用不同版本jsch包连接sftp,出现低版本连不上的问题,影响一些老项目,就看了一下原因Q:使用jsch 0.1.54连接apache-mina-sshd 2.8.0时报错验证失败 verify false深层思考Q:jsch 0.1.54 与0.1.55搭配apache-mina-sshd 2.8.0的区别使用Beyond Compare工具对0.1.54和0.1.55的jsch包进行了对比com.jcraft.jsch.JSch发现如下结果com.jcraft.jsch.jce.Signat原创 2022-06-19 23:18:33 · 7065 阅读 · 6 评论 -
Spring 配置拦截器,禁用浏览器缓存HTTP请求
拦截请求,在response设置不允许缓存请求import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.stereotype.Component;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web原创 2021-11-29 09:57:56 · 932 阅读 · 0 评论 -
Lombok @Cleanup 原理
Lombok @Cleanup的作用是关闭资源,在它的注解注释里已经写得很清楚了@Cleanup 可以将显示定义的资源,再作用域末尾进行close,前提是定义的类实现了Closeable接口,或自定义了close方法中文含义与举例确保您注释的变量声明将通过调用其 close 方法来清除,无论发生什么。 通过将局部变量声明之后的所有语句包装到作用域末尾的 try 块中来实现,该块作为 finally 操作关闭资源。在@Cleanup 的项目 lombok 功能页面上 可以找到完整的文档。例子:原创 2021-08-07 13:11:53 · 646 阅读 · 0 评论 -
JDK源码:Java是如何根据相对路径计算绝对路径的 && IDEA:Jump To Source 追踪varibles变量属性来源
昨天在追踪一段源码时,不知道代码如何根据相对路径获取绝对路径,走到下图时,发现有一个变量中有一个没见过的属性pathWin32Calls然后看这个变量是Path类型的,想去看一下Path的这个属性什么时候被赋值的但是打开Path的Structure却没有任何属性我一看这个Path是个sun.nio.file下的接口,那要找的属性应该是子类里的,但是也不确定在哪里这时,在IDEA的variables窗口,右键属性选择 Jump To Source,就可以跳到所属的文件也可以找到对应的设原创 2021-04-24 14:37:47 · 2099 阅读 · 0 评论 -
“没用”的StringBuffer,StringBuffer被StringBuilder取代的原因
目录前言与问题分析与验证StringBuffer测试结论前言与问题因为今天又看到有人拿StringBuffer和StringBuidler当面试题说了,这也是挺无聊的一个问题,被大家当成一个问题,说明很多人觉得他们俩的应用场景不同?我脑海中出现了一个想法:其实StringBuffer没用使用场景其实网上也有人提出了问题,说“StringBuffer不是线程安全的,所以它没用”,我也提一个问题:就算StringBuffer是线程安全的,它也没用。分析与验证看源码StringBuffer基本上原创 2021-03-13 22:17:39 · 908 阅读 · 0 评论 -
一行代码实现Map排序(JDK8+TreeMap+比较器)
目录前言原结构TreeMap+Lambda表达式TreeMap+方法引用结语前言今天同事提了一句到list转map排序有什么技巧性的方法,他用了LinkedHashMap,而且用惯stream了,就想根据链表特性和stream的方法,先整理再顺序塞值,但是又不熟Collectors.toCollect的操作,担心不会按序生成。期间搜的一些map排序文章还蛮无语的,有用HashMap排的,有用将 map 转为流,对流排序,收集并返回一个新的 LinkedHashMap的,写了一大堆。我想,可以用T原创 2021-03-08 23:22:07 · 764 阅读 · 1 评论 -
性能优化:jar / war包太大怎么办?分析Maven依赖,jar包瘦身
大家好,我是Oxye~ 最近在开发一些新系统,昨天发现一个系统的jar包突然变大好多,其他系统几十mb,它246mb,传输起来慢。突然想到之前看的一篇文章,有程序员把实况足球传到了SVN上,导致war包巨大一个程序员的水平能差到什么程度?我觉得自己项目不至于内置游戏,但可能依赖了多余的jar,所以进行了排查,并解决了jar过大的问题,现在把排查思路记录一下,过程并不难。如果你觉得jar或war包太大,不太正常,可以根据这个思路排除一下多余依赖,我只是排除了一个组依赖jar包就小这么多。原创 2021-02-02 21:53:21 · 10934 阅读 · 6 评论 -
单向光闸简介
单向光闸是一种能够限制光信号只能在一个方向传输的设备,一般用于保障信息安全和防止未经授权的访问。原创 2020-10-16 18:19:32 · 4599 阅读 · 0 评论 -
Java静态代理
前言Java中代理有静态代理、动态代理,动态代理中又分JDK动态代理和CGLib动态代理本文讲一下Java静态代理使用步骤1.新建接口2.新建被代理类a3.新建代理类b,代理类a中实现接口方法,接口方法中调用被代理类b的方法4.使用代理类b调用自身方法,实际调用了被代理类a的方法代码为了方便,上述步骤的接口、类都写到一个类下面package com.jaylin.jaylin.proxy;public class StaticProxyTest { //接口 pub原创 2020-10-13 13:18:40 · 1210 阅读 · 1 评论 -
CGLib动态代理使用与原理
前言Java中代理有静态代理、动态代理,动态代理中又分JDK动态代理和CGLib动态代理本文讲一下CGLib动态代理的使用和源码实现,CGLib动态生成一个要代理类的子类,子类重写要代理的类的所有不是final的方法。在子类中采用方法拦截,拦截所有父类方法的调用,顺势织入横切逻辑。比使用java反射的JDK动态代理要快基于jdk1.8.0_161,spring-core5.2.8RELEASE使用步骤1.新建被代理类2.新建MethodInterceptor接口的实现类,Override i原创 2020-10-13 13:02:56 · 381 阅读 · 0 评论 -
JDK动态代理原理 源码详解
前言Java中代理有静态代理、动态代理,动态代理中又分JDK动态代理和CGLib动态代理本文讲一下JDK动态代理的使用和源码实现基于jdk1.8.0_161使用步骤1.新建接口2.新建被代理类3.新建InvocationHandler接口的实现类,Override invoke方法4.使用Proxy生成动态代理代码为了方便,上述步骤的接口、类都写到一个类下面package com.jaylin.jaylin;import java.lang.reflect.InvocationH原创 2020-10-13 10:42:45 · 222 阅读 · 0 评论 -
SpringBoot:详解@EnableAsync + @Async 实现共享线程池
锲子平时的开发中,可以看到很多地方要使用多线程技术,比如1.处理大数据量的数据时,可以采用线程池,充分利用多核优势2.用户触发一个较长的流程时,可以将一部分处理逻辑,另起一个线程异步处理,减少用户等待时间不过线程是一种宝贵的资源,一个系统运行在服务器上,要根据CPU的数量来合理设置并发线程数量。如果一个系统中每个线程使用者都自己定义线程或者线程池,有一些可见的不良后果比如1.系统各处启线程太多,导致CPU切换上下文的消耗2.定义线程池的参数不一致,导致各种不同实现共存难以处理和排查问题原创 2020-07-27 17:59:42 · 9763 阅读 · 0 评论 -
@EnableAsync 详解,@Async 如何生效
学习注解,从注释和源码入手注释部分关键注释,我自己标注了一些中文注释便于理解:作用:启用Spring的异步方法执行功能/** * Enables Spring's asynchronous method execution capability, similar to functionality * found in Spring's {@code <task:*>} XML namespace. * <p> * -- 与@Configuration注解配合使用,原创 2020-07-27 16:51:43 · 39869 阅读 · 2 评论 -
Java8新特性之流stream
《Java 8 实战》学习笔记系列定义流是Java API的新成员,它允许你以声明性方式处理数据集合,可以把它看成遍历数据集的高级迭代器示例List<String> threeHighCaloricDishNames = menu.stream()//从menu获得流 .filter(d -> d.getCalories() > 300)//选出高热量的菜 .map(Dish::getName)//获取菜名 .limit(3)//只选3个菜 .c原创 2020-06-12 20:31:04 · 688 阅读 · 0 评论 -
Java8新特性之Lambda表达式
《Java 8 实战》学习笔记系列组成1.参数列表,如(x, y)2.箭头 ->3.主体,如{x = x + y;}基本语法(parameters) -> expression或者(parameters) -> { statements; }有效的Lambda表达式示例 // 有一个字符串参数,返回int类型的长度,完整写法 (String s) -> {return s.length();} // 有一个字符串参数,返回int类型的长度,主体只有一行代码原创 2020-06-12 17:34:21 · 214 阅读 · 0 评论 -
Java8新特性之方法引用
《java 8 实战》学习笔记系列定义方法引用让你可以重复使用现有的方法定义,并像Lambda一样传递它,可以把方法引用看作针对仅仅涉及单一方法的Lambda的语法糖,使用它将减少自己的代码量构建方法引用方法引用主要有三类1.指向静态方法的方法引用(args) -> Integer.parseInt(args)//写作Integer::parseInt2.指向任意类型实例方法的方法引用(args) -> args.length()//写作String::length原创 2020-06-12 16:57:17 · 144 阅读 · 0 评论 -
Java8新特性之函数式接口
定义函数式接口只定义一个抽象方法,可以有多个默认方法函数式接口的接口名上,会被@FunctionalInterface标注作用函数式接口的方法可以应用在Lambda表达式,例如Comparable、 Runnable和Callable等,这种抽象方法被称为函数描述符示例比较器java.util.Comparatorpublic interface Comparator<T> { int compare(T o1, T o2);}可以写成Comparator<Ap原创 2020-06-12 16:41:33 · 213 阅读 · 0 评论 -
8种排序算法 Java实现
冒泡排序 O(n2)两个数比较大小,较大的数下沉,较小的数冒起来。public static void bubbleSort(int[] a) { //临时变量 int temp; //i是循环次数,也是冒泡的结果位置下标,5个数组循环5次 for (int i = 0; i < a.length; i++) { //从最后向前面两两对比,j是比较中下标大的值 for (int j =原创 2020-06-09 15:44:18 · 659 阅读 · 0 评论