自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(482)
  • 资源 (11)
  • 收藏
  • 关注

原创 JVM专题

从JDK源码级别彻底剖析JVM类加载机制

2022-02-01 16:47:01 355

原创 MySQL学习系列

系列文章目录MySQL 的分支、变种与替代

2021-12-31 22:51:06 363

原创 gradle构建工具学习系列

系列文章目录

2021-12-18 12:05:23 449

原创 并发编程系列

系列文章目录并发编程之深入理解JMM&并发三大特性并发编程之深入理解Java线程

2021-11-28 16:07:26 307

原创 MyBatis源码学习系列文章目录

系列文章目录MyBatis开发要点MyBatis一级缓存MyBatis二级缓存MyBatis日志模块MyBatis日志增强MyBatis数据源MyBatis缓存模块(二级缓存深入理解)MyBatis反射模块MyBatis工作流程-初始化阶段一MyBatis工作流程-初始化阶段二MyBatis工作流程-代理封装阶段MyBatis工作流程-数据访问阶段MyBatis工作流程-与Spring整合...

2021-04-24 21:44:25 191

原创 腾讯课堂某培训机构Spring源码问题集锦

系列文章目录注解方式与xml方式注册问题

2021-04-17 11:12:25 274

原创 MyBatis工作流程-与Spring整合

系列文章目录MyBatis开发要点MyBatis一级缓存MyBatis二级缓存MyBatis日志模块MyBatis日志增强MyBatis数据源MyBatis缓存模块(二级缓存深入理解)MyBatis反射模块MyBatis工作流程-初始化阶段一MyBatis工作流程-初始化阶段二MyBatis工作流程-代理封装阶段MyBatis工作流程-数据访问阶段MyBatis工作流程-与Spring整合文章目录系列文章目录 前言与MyBatis相关的Beanbean实例化的流程1. Sql

2020-12-19 16:12:11 177 1

原创 兼容Oracle与MySQL的一些事

文章目录前言一、字段类型差异二、函数差异 1、几种兼容方案a. 利用Mybatis的特性b. 是否存在相同的函数c. 自定义同名函数三、语法差异四、锁的差异总结前言由于公司目前主要使用的数据库为Oracle,然后部分兼容MySQL,后期会考虑全部支持Oracle和MySQL。由于二者的各种差异,我们必须有一套可行的方案减少工作量。在兼容Oracle与MySQL的那些事中我们已经仔细讨论过在数据层对多数据库的支持了,接下来的目标就是结合这种支持同时考虑其他手段达到目标了。本文从以下几点来谈一下对兼容考

2020-11-09 10:56:58 1734 7

原创 js中Promise的常见用法 比如resolve、race都是啥意思

在JavaScript中,Promise是一种用于异步编程的构造函数,它提供了更好的处理异步操作的方式,相较于传统的回调函数更易于管理和避免回调地狱。Promise有三种状态:Pending(进行中)、Resolved(已完成)、Rejected(已失败)。通过这些API,开发人员可以方便地处理异步流程控制,形成更加清晰和易于维护的代码。

2024-04-04 11:12:15 324 1

原创 Vue3中的事件监听与处理机制深度解析

总结来说,Vue3在事件监听和处理方面延续了Vue2简洁易用的特点,同时借助Composition API提供了更大的灵活性和更好的性能表现。其中,事件监听和处理机制作为Vue框架中的重要组成部分,也进行了相应的优化与升级。此外,Vue3还支持响应式地更新事件处理器,这是Vue2所不具备的特性。Vue3保留了事件修饰符的功能,可以用来简化常见的DOM事件处理需求。在这个例子中,我们在组件挂载时添加事件监听器,在卸载时移除监听器,以避免内存泄漏。'接收到的自定义事件参数:'表示当按钮被点击时,会触发。

2024-02-25 21:10:38 493 2

原创 oracle 12 查询数据库锁

替换为你要检查的实际表名。通过这些视图,你可以看到哪些对象被锁定了,是由哪个会话锁定的,以及锁定的类型和模式。如果需要解除锁,通常需要找到持有锁的会话并采取相应操作,比如提交或回滚事务,或者关闭该会话(在确认不会导致数据不一致的情况下)。:这两个视图提供了关于会话和锁的详细信息,可以结合使用以获取更全面的锁状态。:虽然不如上述视图实时,但在某些场景下也可以提供有用的信息。:这个视图显示了当前被锁定的对象(如表、行等)的信息。如果要查看与特定表相关的锁信息,可以根据。

2024-01-23 18:59:13 1391

原创 oracle数据库用户设置默认的表空间 索引表空间

在Oracle数据库中,用户默认的表空间用于存储用户创建的表的数据部分,而索引通常可以存储在不同的表空间以实现更好的管理或性能优化。设置用户的默认表空间与设置索引的默认表空间是两个不同的操作。如果需要在应用层面保证所有新创建的索引都位于特定的表空间,可以在创建索引的SQL脚本中统一指定这个表空间名称,或者在应用程序中进行控制,确保每次创建索引时都设置了相应的表空间参数。Oracle并不直接支持为用户设置一个默认的索引表空间,因为每次创建索引时都可以明确指定它的表空间。但是,在创建表的时候,可以通过。

2024-01-08 09:42:25 472

原创 ORA-44203: timeout waiting for lock on cursor

这样的错误,虽然其根源是与游标相关的锁超时,但直接查询特定的游标锁对象在Oracle数据库中并不直观,因为游标是由SQL语句动态生成,并且其信息存储在内部数据结构中。另外,还可以通过AWR报告、ASH(Active Session History)报告或者DBA_HIST_ACTIVE_SESS_HISTORY表来分析历史会话活动情况,找出可能导致游标锁争用的原因。由于游标锁通常与长时间运行的事务或并发访问共享资源相关,所以分析时需要关注长时间运行的事务、死锁、并行DML操作等。

2024-01-05 16:25:24 501

原创 logback1.2.3版本中日志文件时间自定义

以下源码方法为 ch.qos.logback.core.rolling.TimeBasedRollingPolicy#start。,但是有时候不想读取自然日期,而是业务日期(业务日期可能与自然日期存在一些出入)。这里的关键在于getCurrentTime,这里直接继承了父类的定义。最后修改logback中的相关定义即可,完整定义参考如下。所以只要覆盖这个方法就可以自定义文件名称中的日期了。方法中会根据获取的时间判断是否为触发事件。假如在logback配置文件中存在以下配置。那么最终生成的日志文件名称为。

2023-12-29 11:10:28 435

原创 *-over-slf4j 相关依赖包

-over-slf4j 是 SLF4J 提供的一系列桥接依赖包,它们用于将其他日志框架的API调用重定向到SLF4J,这样就可以使用统一的SLF4J接口,并通过配置SLF4J的绑定器来选择实际的日志实现。如果你的应用或依赖的第三方库使用了JCL,但你想通过SLF4J和你选择的日志框架(如Logback、Log4j 2等)来处理日志,可以添加这个依赖。如果你的应用或依赖的第三方库使用了Log4j 1.x,但你想通过SLF4J和你选择的日志框架来处理日志,可以添加这个依赖。

2023-12-29 10:10:02 386

原创 什么是reactor模式

现代网络编程框架和库,如Java的NIO和Netty,通常提供了灵活的配置选项,允许开发者根据需要选择合适的Reactor模式实现。在该模式中,一个中心的“反应器”(Reactor)对象负责监听和分发来自多个客户端的事件请求到相应的处理器(Handler)。这种模式常用于构建高性能的网络服务器,如Web服务器、数据库服务器和消息中间件等,在这些场景中需要高效地处理大量并发的客户端连接和I/O操作。(Reactor):这是模式的核心组件,它使用多路复用器来监听事件源,并在检测到事件时调度相应的处理器。

2023-12-28 15:23:09 465

原创 select poll epoll

与select不同的是,poll使用结构体pollfd来存储待监视的文件描述符和相应的事件,这使得poll可以处理比select更多的文件描述符,而且poll没有最大文件描述符数量的限制。在Netty中,处理select、poll和epoll的选择和使用是自动进行的,Netty框架会根据运行的操作系统和环境选择最合适的I/O多路复用技术。可以理解为创建了一个不会导致页面跳转的“假链接”,它的作用是在保持链接外观的同时提供一种执行 JavaScript 代码的方式。类,它是事件循环的具体实现。

2023-12-28 15:17:47 927

原创 CWE-611

这种漏洞出现在应用程序接受用户提供的URL作为重定向参数,并在未经充分验证的情况下直接将用户重定向到该URL时。通过实施上述措施,可以有效地防止CWE-611漏洞,并保护你的Web应用程序免受开放重定向攻击的影响。在执行重定向操作之前,对用户提供的URL进行严格的验证和清理,确保它们仅指向可信的、预期的域名。在处理重定向请求时,适当地处理可能出现的错误和异常,避免由于意外的数据解析错误导致的安全问题。对用户提供的重定向URL的长度进行合理的限制,以防止某些大型的、复杂的攻击。

2023-12-20 16:51:53 390

原创 CWE-798

这种漏洞出现在应用程序的源代码、配置文件或资源中,如果包含了未经加密的用户名、密码、API密钥或其他敏感信息,攻击者可能能够通过逆向工程、源代码泄露等方式获取这些凭据,并利用它们进行未经授权的操作。通过实施上述措施,可以有效地防止CWE-798漏洞,并保护你的应用程序免受凭据泄露和未经授权访问的影响。提高开发人员对硬编码凭据风险的认识,鼓励他们遵循最佳实践,并在必要时寻求安全专家的建议。实现安全的构建和部署流程,确保敏感信息不会意外地包含在发布的代码或配置中。

2023-12-20 16:47:39 455

原创 CWE-287

这种漏洞出现在应用程序的身份验证机制中,如果设计或实现不当,攻击者可能能够绕过正常的认证过程,未经授权就能访问或者操作系统的资源。同时,持续关注相关的安全更新和最佳实践,以保持应用程序的安全性。对所有用户提供的身份验证相关输入进行严格的验证和清理,确保它们不包含任何可能被用于绕过身份验证的特殊字符或序列。在处理身份验证请求时,适当地处理可能出现的错误和异常,避免由于意外的数据解析错误导致的安全问题。提高开发人员对身份验证安全风险的认识,鼓励他们遵循最佳实践,并在必要时寻求安全专家的建议。

2023-12-20 16:43:59 432

原创 JavaScript中eval()风险

寻找其他替代方法来实现你的功能,如使用JSON.parse()解析JSON数据,或者使用特定的函数、库或API来处理动态代码。对于一些特定的情况,比如在安全的上下文中执行用户提供的脚本,你可以考虑使用nonce(一次性密码)或哈希来验证脚本的完整性。,确保对所有用户提供的输入进行严格的验证和清理,确保它们不包含任何可能被解释为恶意代码的字符或序列。安全风险的认识,鼓励他们遵循最佳实践,并在必要时寻求安全专家的建议。而导致的CWE-94漏洞的风险。的权限,使其只能访问有限的全局对象和函数。

2023-12-20 16:36:42 411

原创 MyBatis Mapper中必须使用$导致SQL Injection 如何修复

如果你的输入是一个复杂对象,你可以使用OGNL(Object-Graph Navigation Language)表达式来访问对象属性,并在访问时进行一些基本的过滤和验证。在将用户输入的数据插入到SQL语句之前,手动转义或替换可能用于SQL注入的特殊字符,如单引号、双引号、分号、注释符号等。在将数据传递给MyBatis之前,确保在后端业务逻辑层进行了充分的验证和过滤,以减少恶意输入到达数据库的可能性。你可以创建一个自定义的MyBatis拦截器或插件,在执行SQL语句之前对所有使用。在这个例子中,我们使用。

2023-12-20 13:34:28 575

原创 new File()扫描漏洞Path Traversal怎么处理

确保运行应用程序的用户账户只有执行任务所需的最小权限,这样即使存在路径穿越漏洞,攻击者也无法访问超出其权限范围的文件。记住,关键是始终假设用户输入可能是恶意的,并采取适当的防御措施。方法规范化输入的路径。这些方法会解析路径中的符号链接,并将相对路径转换为绝对路径,从而减少路径穿越的风险。实施白名单策略,只允许预定义的、安全的文件或目录名,而不是试图过滤所有可能的危险路径。对用户输入进行严格的验证和清理,去除任何可能导致路径穿越的字符或序列。检查用户输入的路径中是否包含可能导致路径穿越的特殊字符,如。

2023-12-20 13:28:34 559

原创 使用Java实现PDF填充图片功能

在上面的代码中,我们首先引入了iText库的相关类。然后,在main方法中,我们指定了输入PDF文件的路径、输出PDF文件的路径以及要填充的图片的路径。接下来,我们使用PdfReader类读取输入的PDF文件,使用PdfWriter类创建一个新的PDF文件作为输出。在文档对象中,我们使用Image类创建一个图片对象,并使用ImageDataFactory类的create方法加载图片数据。iText是一个用于处理PDF文档的开源Java库,它提供了丰富的功能,包括创建、修改和提取PDF文件等。

2023-12-15 14:52:53 520

原创 Java实现pdf文件合并

通过pdfbxo实现pdf文件的合并

2023-12-14 18:00:00 635

原创 Creating PDF Files in Java

【代码】Creating PDF Files in Java。

2023-12-13 21:45:00 1194

原创 Editing Existing PDF Files in Java

【代码】Editing Existing PDF Files in Java。

2023-12-13 15:14:03 1300

原创 Tomcat中间件打印请求日志

directory可以配置相对路径或绝对路径,如果是相对路径,那么最终会放在Tomcat的基础目录当中。在SpringBoot使用嵌入式Tomcat可以在配置文件中按照如下配置。相关pattern的含义可以参考。主要修改pattern的值。

2023-09-13 17:41:29 430

原创 批量格式文件名中的数字

find可以用于查找目录下的文件,awk根据输入内容生成想要的命令,再通过管道符传递给sh执行

2023-09-11 22:00:00 254

原创 Quartz中集群模式源码级解析

Quartz集群模式与其他模式的区别主要有两点:首先操作的锁要使用两个实例都可以公用的锁,一般直接使用数据库锁,另外,会创建一个后台线程进行定时签到,一方面为当前节点实例续命,同时发现失效节点,并进行节点补偿。

2023-08-02 22:00:00 258

原创 Quartz中禁止并发机制源码级解析

Quartz进行任务调度时通常会要求一个任务禁止并发执行,此时只需要在Job类上面添加一个注解```@DisallowConcurrentExecution```即可。在保存到数据库里面时,对应```QRTZ_JOB_DETAILS```表中的```IS_NONCONCURRENT```字段的值为1(true)

2023-08-01 21:20:36 325

原创 Quartz中Misfire机制源码级解析

Quartz为了补偿Misfire,为用户提供可选用的各种补偿策略,并在初始化、查询触发任务以及创建了一个后台线程定时进行补偿。但是无论哪种补偿机制,终究都是补偿。正确了解后面的机制,合理设置工作线程大小,创建任务时考虑任务时长,合理设置触发时间,才是根本之道。

2023-07-31 19:11:31 904

原创 Quartz项目搭建与任务执行源码分析

Quartz执行任务主要涉及到数据库中的QRTZ_TRIGGERS和QRTZ_FIRED_TRIGGERS,关注其中的STATE变化是重点。

2023-07-30 11:35:52 249

原创 Quartz线程调度源码分析

Quartz作为任务调度的组件,其中涉及到多种线程,主要分为主线程、调度线程和工作线程。主线程:创建Quartz的调度工厂(SchedulerFactory)、调度器(Scheduler)、触发器(Trigger)、任务(Job)并启动调度器的线程。这里的主线程只是为了区分Quartz内部线程,与程序的主线程并不等价,可以是任意的其他非Quartz线程。调度线程:根据触发条件获取需要执行的任务并分配给工作线程,只有一个工作线程:真实执行Job的线程,一般有多个。

2023-07-25 22:00:00 636

原创 sed进阶之创建sed实用工具

该地址模式能够匹配只含一个换行符的行,如果找到这样的行,而且是最后一行,删除命令就会删除它,如果不是最后一行,那么N命令会将下一行附加到它后面,然后分支命令会跳到循环起始位置重新开始。删除连续的空行的关键在于创建包含一个非空行和一个空行的地址区间,如果sed编辑器遇到了这个区间,它不会删除行,但对于不属于这个区间的行(两个或更多的空行),则执行删除操作。指定的区间是/./到/^$/,区间的开始地址会匹配任何至少含有一个字符的行,区间的结束地址会匹配一个空行,在这个区间内容的行不会被删除。

2023-05-01 16:13:29 623 1

原创 sed进阶之模式替换

符号代表替换命令中指定模式所匹配的字符串,如果只是想获取字符串的一部分,则需要通过正则表达式的子模式和反向引用。sed编辑器使用圆括号来定义替换模式中的子模式,随后使用特殊的字符组合来引用每个子模式匹配到的文本。反向引用由反斜线和数字组成,数字表明子模式的序号,第一个子模式为\1,第二个子模式为\2,以此类推。&符号可以代表替换命令中的匹配模式,不管模式匹配到了什么样的文本,都可以使用&符号代表这些内容。这样就能处理匹配模式的任何单词了。通过模式替换和测试命令在大数中插入逗号。

2023-05-01 16:04:36 92

原创 sed进阶之改变执行流程

如果替换命令成功匹配并完成了替换,测试命令就会跳转到指定的标签,如果替换命令未能匹配指定的模式,测试命令就不会跳转。如果某行匹配分支address(包含First单词),那么sed编辑器就会跳转到带有分支标签jump1的那一行,执行后面的命令,而其他行,则沿用脚本中原有的命令处理。address参数决定了哪些行会触发分支命令,label参数定义了要跳转的位置,如果没有label参数,则跳过触发分支命令的行,继续处理余下的文本行。除了可以跳转到sed脚本下方的标签,也可以跳转到靠前的标签,达到循环的效果。

2023-05-01 16:00:40 88

原创 sed进阶之保留空间和排除命令

模式空间(pattern space)是一块活跃的缓冲区,在sed编辑器执行命令时保存着待检查的文本,但它并不是sed编辑器保存文本的唯一空间。sed编辑器可以将命令应用于数据流中的每一行或是由单个地址或地址区间指定的多行。)命令用于排除(negate)命令,也就是让原本会起作用的命令失效。正常情况p命令只会打印匹配规则的行,加了感叹号之后,情况反过来了,除了包含单词Header的那一行,文件中的其他行都被打印出来了。对于sed命令在多行模式中没法匹配最后一行的情况,使用排除命令也可以解决。

2023-05-01 15:53:38 694

原创 sed进阶之多行命令

前面使用sed编辑器的基础命令时,所有的命令都是针对单行数据执行操作的。在sed编辑器读取数据流时,它会根据换行符的位置将数据分成行。sed编辑器会根据定义好的脚本命令,一次处理一行数据,然后移到下一行重复这个流程。但是有可能查找的短语出现在两行当中,此时普通的sed编辑器命令是无能为力的。所以,sed编辑器提供了3个可用于处理多行文本的特殊命令。

2023-04-30 22:38:09 1162

原创 sed编辑器基础命令

sed是一款流编辑器,可以在读取数据时快速地即时进行处理

2023-04-29 20:49:54 796

K8S安装以及基础知识的学习

K8S学习笔记

2023-08-20

Quartz2.2.2版本发布包脚本定义

Quartz发布包

2023-07-28

examples.zip

MySQL学习系列SQL案例

2022-01-03

simpe-demo-diffdb.7z

该项目包含了动态数据源、兼容Oracle/MySQL数据库、同时通过MyBatis-PageHelper、MyBatis-Plus解决多数据库分页的问题

2020-11-10

动态多数据源示例代码

本项目由SpringBoot+MyBatis+Druild组成,主要关于多数据的动态配置,以及多数据源的配置。用于通过前端请求自由切换数据源,切换数据源的同时也动态执行不同的SQL

2020-11-04

编程式创建Aspect代理源码

编程式创建Aspect代理源码 You can use the org.springframework.aop.aspectj.annotation.AspectJProxyFactory class to create a proxy for a target object that is advised by one or more @AspectJ aspects.

2020-05-27

Spring Boot中整合MyBatis

关于SpringBoot中如何配置数据层MyBatis,以及多数据源的配置,多个数据层mapperInterface和xml文件路径的配置源码

2020-04-01

Spring Boot中整合MyBatis

关于SpringBoot中如何配置数据层MyBatis,以及多数据源的配置,多个数据层mapperInterface和xml文件路径的配置源码

2020-04-01

springcloud.zip

Spring Cloud 微服务源码:分为用户微服务、课程微服务、网关微服务,通过consul实现了服务发现组件和配置服务器,外面的请求通过网关打进来,微服务之间通过轻量级通信机制,包括http和rabbitmq,微服务之间有一定的认证与授权机制,从而保证安全,对于高并发的应用,通过集成Resilience4j,从而提升应用的可用性。

2020-03-15

Spring Boot整合Druid Demo项目代码包

Spring Boot整合Druid Demo项目源代码,同时整合了MyBatis,以及实现动态的数据源、Druid连接池的监控。

2020-03-03

dubbo-thought.7z

Java SPI 机制与 Dubbo SPI 机制的一些说明与测试代码 方便SPI的学习 该项目来自于享学课堂学习资料 请勿随意商业使用

2020-02-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除