java
文章平均质量分 69
程序辕日记
这个作者很懒,什么都没留下…
展开
-
记一次堆内存泄漏排查过程
写了一个升级脚本,执行过程中给内存干爆了,不作处理,自己又好了,神奇吗?日志中内存溢出:java.lang.OutOfMemoryError: Java heap space。原创 2024-09-26 17:00:47 · 377 阅读 · 0 评论 -
发票连号判断-两种实现方式
在做票据夹功能的时候,有一个功能叫查找这个单据中所有连号的发票。INVOICE_CODE - ROW_NUMBER():计算每个记录的 INVOICE_CODE 减去行号,作为分组依据。ROW_NUMBER() OVER ( ORDER BY INVOICE_CODE ):根据 INVOICE_CODE。使用sql, 一条sql语句查询出所有连号的发票,本人使用的是mysql8+;使用java,也就是把所有的发票号码查出来,通过写java代码来实现这个功能;相减的结果是:0,0,2,5,5。原创 2024-09-25 11:18:42 · 366 阅读 · 0 评论 -
Mybatis 源码分析
1. 手写持久层框架-ipersistent1.1 JDBC操作数据库_问题分析JDBC API 允许应用程序访问任何形式的表格数据,特别是存储在关系数据库中的数据代码示例:1.2 JDBC问题分析&解决思路剖开代码,逐个分析:(1)加载驱动,获取链接:存在问题1:数据库配置信息存在硬编码问题。存在问题2:频繁创建、释放数据库连接问题。(2)定义sql、设置参数、执行查询:存在问题3:SQL语句、设置参数、获取结果集参数均存在硬编码问题 。(2)遍历查询结果集:存在问题4:手动封装返回结果集,较为繁原创 2024-05-08 12:08:30 · 889 阅读 · 0 评论 -
Java 调用 GitLabAPI 获取仓库里的文件件 提交记录
自定义令牌是为了后续接口访问有权限而建立的。在任何页面的右上角,单击您的个人资料照片,然后单击 “Settings(设置)”。在左侧边栏中,单击 “Developer settings(开发者设置)”。在左侧边栏中,单击 “Personal access tokens(个人访问令牌)”。单击 “Generate new token(生成新令牌)”。给令牌一个描述性名称。选择要授予此令牌的作用域或权限。要使用令牌从命令行访问仓库,请选择 “repo(仓库)”。原创 2023-09-20 09:42:27 · 2061 阅读 · 1 评论 -
ArrayList扩容机制分析
ArrayList的底层是数组队列,相当于动态数组。与Java中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用ensureCapacity操作来增加ArrayList实例的容量。这可以减少递增式再分配的数量。ArrayList继承于,实现了这些接口。}.}.}RandomAccess是一个标志接口,表明实现这个这个接口的List集合是支持快速随机访问的。在ArrayList中,我们即可以通过元素的序号快速获取元素对象,这就是快速随机访问。............原创 2022-07-20 11:12:22 · 586 阅读 · 1 评论 -
Spring动态代理的两种方式
Spring动态代理的两种方式1. Spring创建的动态代理类在哪⾥?1.1 什么叫动态字节码技术?2.1. Spring创建的动态代理类在哪⾥?Spring 框架在运行时,通过字节码技术,在jvm创建的,运营在jvm内部,等程序结束后,会和jvm一起消失。1.1 什么叫动态字节码技术?通过第三方动态字节码框架,在jvm中创建对应类的字节码,进而创建对象,当虚拟机结束,动态字节码跟着消失。==结论:动态代理不需要定义类文件,都是在jvm运行过程中创建的,所以不会造成静态代理,类文件数量过多,影原创 2022-04-26 22:06:27 · 4286 阅读 · 2 评论 -
Struts2升级2.5.30的那些坑
1.版本修改将pom.xml 文件修改为2.5.30版本<properties> <struts2-version>2.5.30</struts2-version> </properties><dependencies> <dependency> <groupId>org.apache.struts</groupId> <artifactId>s原创 2022-04-18 15:42:51 · 9868 阅读 · 35 评论 -
Spring⼯⼚创建复杂对象3种方式(FactoryBean,实例工厂,静态工厂)
Spring⼯⼚创建复杂对象3种方式1. 什么是复杂对象2. Spring⼯⼚创建复杂对象3种方式2.1FactoryBean 接口2.2 实例工厂2.3静态工厂1. 什么是复杂对象1.简单对象:指的就是可以 直接通过new 构造方法创建对象例如: userDAO User2.复杂对象指不能直接通过new 构造方法创建对象例如: Connection SqlSesscionFactory2. Spring⼯⼚创建复杂对象3种方式2.1FactoryBean 接口开发步骤1.实原创 2022-04-18 11:45:03 · 478 阅读 · 0 评论 -
Apache Struts2远程代码执行漏洞(CVE-2021-31805)安全通告
1. 事件描述监测发现,开源应用框架Apache Struts存在远程代码执行漏洞(CVE-2021-31805),攻击者可构造恶意的OGNL表达式触发漏洞,实现远程代码执行。受影响版本为Apache Struts 2.0.0~2.5.29。目前,该漏洞已在Apache Struts 2.5.30版本中修复。事件类型:漏洞利用事件等级:高危2. 影响范围远程代码执行漏洞影响范围:2.0.0<=Apache Struts <= 2.5.29不受影响版本Apache Struts原创 2022-04-15 10:05:09 · 6534 阅读 · 2 评论 -
初学者对java数组中栈和堆的认识
java数组中栈和堆的认识1.示例:2.结论3.图例子1.示例:public static void main(String[] args) { String[] Array = null; Array = new String[3]; Array[0] = "安徽合肥"; Array[1] = "江苏苏州"; Array[2] = "安徽铜陵"; for(int i=0;i<=2;i++){转载 2022-03-02 14:37:36 · 191 阅读 · 0 评论 -
HashMap 集合底层 存储数据的过程 + 面试题
一、HashMap 集合简介HashMap 基于哈希表的 Map 接口实现,是以 key-value 存储形式存在,即主要用来存放键值对。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的 key、value 都可以为 null,此外,HashMap 中的映射不是有序的。jdk1.8 之前 HashMap 由 数组 + 链表 组成,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突(两个对象调用的 hashCode 方法计算的哈希值一致导致计算的教组索引值相同)而存在的(原创 2021-12-17 17:15:51 · 764 阅读 · 2 评论 -
Java JDK8 Stream 使用详解
Stream 的 筛选/去重/截取跳过映射/合并多个流/匹配/归约 简单示例1.什么是流?2.流的特点3.流的操作种类4.流的操作过程5. 使用流1.什么是流?流是Java8引入的全新概念,它用来处理集合中的数据,暂且可以把它理解为一种高级集合。众所周知,集合操作非常麻烦,若要对集合进行筛选、投影,需要写大量的代码,而流是以声明的形式操作集合,它就像SQL语句,我们只需告诉流需要对集合进行什么操作,它就会自动进行操作,并将执行结果交给你,无需我们自己手写代码。因此,流的集合操作对我们来说是透明的,我原创 2021-09-28 16:16:25 · 605 阅读 · 0 评论 -
Java 与 C++ 的区别
近期在学习C++,简单介绍下 Java 和 C++区别Java 是纯粹的面向对象语言,所有的对象都继承自 java.lang.Object,C++ 为了兼容 C 即支持面向对象也支持面向过程。Java 通过虚拟机从而实现跨平台特性,但是 C++ 依赖于特定的平台。Java 没有指针,它的引用可以理解为安全指针,而 C++ 具有和 C 一样的指针。Java 支持自动垃圾回收,而 C++ 需要手动回收。Java 不支持多重继承,只能通过实现多个接口来达到相同目的,而 C++ 支持多重继承。Java原创 2021-09-27 17:20:58 · 144 阅读 · 0 评论 -
idea插件translation插件 提示:翻译失败: 未知错误
idea插件translation插件“翻译失败: 未知错误”idea插件translation插件 提示:翻译失败: 未知错误解决方案效果图idea插件translation插件 提示:翻译失败: 未知错误问题:translation插件 这两天一直无法进行翻译 提示 翻译失败: 未知错误网上看了很多 改 有道的 百度的 都需要去相应官网申请,比较繁琐,不是想要的效果,下面将会介绍一个简单的方案。解决方案打开idea —》settings —》Tools —》翻译(插件名)把 使用tran原创 2021-09-18 15:11:51 · 6864 阅读 · 22 评论 -
多线程创建 - 通过实现Callable接口创建多线程
通过实现Callable接口创建多线程1.介绍2.具体代码实现3. 使用Callable接口创建多线程 实现一个龟兔赛跑小游戏1.介绍Callabled 接口有点儿像是Runnable 接口的增强版,它以call()方法作为线程执行体, call()方法比run()方法功能更强大。call()方法可以有返回值,可以声明抛出异常类。获取call()方法里的返回值: 通过FutureTask 类(实现Future 接口)的实例对象的get()方法得到,得到结果类型与创建TutureTask 类给的泛型一原创 2021-09-15 11:09:30 · 334 阅读 · 1 评论 -
单例模式的六种写法
单例(Singleton)Intent确保一个类只有一个实例,并提供该实例的全局访问点。Class Diagram使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现。私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。ImplementationⅠ 懒汉式-线程不安全以下实现中,私有静态变量 uniqueInstance 被延迟实例化,这样做的好处是,如果没有用到该类,那么就不会实例化 uniqueInstance,从而节约资源。这原创 2022-04-26 22:13:34 · 165 阅读 · 0 评论 -
单例模式的六种写法
单例(Singleton)Intent确保一个类只有一个实例,并提供该实例的全局访问点。Class Diagram使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现。私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。 ImplementationⅠ 懒汉式-线程不安全以下实现中,私有静态变量 uniqueInstance 被延迟实例化,这样做的好处是,如果没有用到该类,那么就不会实例化 uniqueInstance,从而节约资源。原创 2021-09-15 10:30:22 · 148 阅读 · 0 评论 -
Maven 将本地jar包添加到本地仓库
1.准备maven环境maven版本:3.6.1环境配置:2. 准备jar包比如我要把 yjy.jar 包放入自己的maven仓库3.编写bat脚本call mvn install:install-file -Dfile=lib/yjy.jar -DgroupId=cn.antblog -DartifactId=yjy -Dversion=1.0 -Dpackaging=jar -DgeneratePom=true保存脚本,双击执行即可。注意自己对应自己原创 2021-03-24 14:39:53 · 115 阅读 · 0 评论 -
Java中使用JDBC连接数据库
记录下 :下面的数据库链接信息 自行修改package com.zyzx.dmccore.test;import java.sql.*;/** * @program: dmc-base * @description: 使用jdbc排查 syntax error, unexpected $undefined #{参数不读取} * @author: 杨敬一 * @create: 2021-03-19 10:52 **/public class JDBCTest {原创 2021-03-19 11:11:52 · 999 阅读 · 4 评论