自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

读万卷书,行万里路

deniro's thinking

  • 博客(991)
  • 资源 (9)
  • 收藏
  • 关注

原创 Google Chrome 浏览器快捷键说明大全

1 标签页和窗口快捷键 快捷键 说明 Ctrl + n 打开新窗口。 Ctrl + shift + n 在隐身模式下打开新窗口。 Ctrl + t 打开新的标签页。(常用) Ctrl + Shift + t 重新打开最后关闭的标签页。 Ctrl + Tab 或 Ctrl + Pgdn 跳转到下一个打开的标签页,如...

2018-06-11 11:43:58 26107 18

原创 IntelliJ IDEA 快捷键说明大全(中英对照、带图示详解)

因为觉得网络上的 idea 快捷键不够详尽,所以特别编写了此篇文章,方便大家使用 idea O(∩_∩)O~其中的英文说明来自于 idea 的官网资料,中文说明主要来自于自己的领会和理解,英文说明只是作为参考。重要的快捷键会附带图示,进行详细的说明。每一部分会先列出所有的快捷键说明表,如果有不清楚的地方,再看后续的图示详解。1 编辑【Editing】 快捷键 英文说明

2017-06-07 18:04:54 67506 44

原创 vi 与 vim 快捷按键说明大全

一般指令模式、一般指令模式切换到编辑模式、一般指令模式切换到指令列模式、vim 特有功能

2016-12-30 17:34:53 9605

原创 说说 JSON 格式的弊端与解决方法

JSON 格式是目前最流行的数据交互格式,广泛应用于前后端分离的系统。但也有一些场合不适合使用 JSON 格式。

2022-09-03 09:04:40 867 1

原创 说说 Redis 缓存穿透场景与相应的解决方法

Redis缓存主要缓存穿透、缓存击穿与缓存雪崩异常场景,今天我们来讲讲缓存穿透。

2022-07-17 15:48:21 1331

原创 Redis 数据类型与应用场景

Redis 数据类型与应用场景

2022-07-03 15:45:59 483

原创 说说 Redis 缓存删除策略

Redis 缓存删除策略分为定时删除、定期删除与惰性删除。前两个是主动删除,后一个是被动删除。为 key 设置一个过期时间,时间一到,由定时器任务删除这个 key。优点:节省内存,因为 key 一过期,就会被立即删除。缺点:CPU压力大,因此相当于 CPU 在轮询判断当前时间是否需要执行删除任务。key 过期时不处理,直到访问该 key 时才删除。(很懒,直到最后一刻才执行)优点:节省 CPU 资源,因为直到访问该 key 时,才用到 CPU。缺点:key 过期后,仍然占用内存空间,可能导致内存出现大量过期

2022-06-26 19:07:15 3245

原创 说说如何在 Java 中实例化某个类的内部类

前提是这个内部类必须是 public 。假设外部类需要实例化某个类的内部类。那么必须首先实例化内部类的所在类,然后再通过 .new 语法来实例化这个内部类。下面是一个示例:public class DotNew { public class Inner { } public static void main(String[] args) { DotNew dn = new DotNew(); DotNew.Inner dni = dn.new I

2022-04-05 18:17:59 1620

原创 说说 Java 的静态内部类

Java 的静态内部类就是定义在一个类的内部,并且标注为 static 的类。由于类是静态的,所以不需要通过外围类的实例来创建。下面是一个示例:public class Outer { private static final Logger log = LoggerFactory.getLogger(Outer.class); private static class Inner { public int value() { return 1;

2022-04-05 18:15:34 2070

原创 说说 Java 内部类的基本用法

先从一个示例说起。该示例实现了迭代器模式的数组,可添加、可遍历数组内部的元素。而且还可以判断是否已到了数组末尾。首先定义了一个接口,本质上是一个迭代器://迭代器接口public interface Selector { //判断是否到了数组末尾 boolean end(); //获取当前索引所在元素 Object current(); //进入下一元素 void next();}接下来是主类:// 数组序列public

2022-03-20 18:25:35 508

原创 在命令行运行 python 抛出 ModuleNotFoundError 的解决方法

所要运行的 py 文件在子目录中,并且该文件引用了另一个子目录中的 py 模块。类似这样:原因在运行环境下, a.py 找不到 b.py 所以抛出 ModuleNotFoundError。解决把父文件夹的所在路径加入运行环境,代码如下:import osimport sysdirname = os.path.dirname(__file__)curPath = os.path.abspath(dirname)r= os.path.split(curPath)rootPath = r[

2022-03-20 18:19:27 680

原创 比较 Java 静态工厂方法与构造函数

1 什么是静态工厂方法Java 静态工厂方法是在方法前加上 public static,让这个方法变为公开、静态的方法。该方法返回该类的一个实例,就好像一个工厂生产出一个产品。所以称之为静态工厂方法。在 Boolean.java 中有一个静态工厂方法示例:public static Boolean valueOf(boolean b) { return (b ? TRUE : FALSE); }这里返回了一个 Boolean 实例。2 比较静态工厂方法与构造函数2.1 名

2022-03-13 17:50:38 927

原创 说说如何安装 Openfire

Openfire 是一个基于 XMPP 协议的 IM 服务框架。这里我们来说一说如何安装它。1 下载 zip 安装包首先下载 Openfire 安装包,下载路径为:http://www.igniterealtime.org/projects/openfire/这里以 zip 安装包为例,数据库采用 postgresql。2 web 方式安装解压后,进入 bin 目录,运行 openfire.bat :浏览器打开该地址: http://windows10.microdone.cn:9090/se

2022-03-13 17:46:22 2443

原创 RocketMQ 事务消息示例分析

1 示例模式RocketMQ 事务消息示例包含一个生产者、消费者、NameServer 以及 Broker 服务,它们之间的关系如下:RocketMQ架构上主要分为四部分[^1]:Producer:消息发布的角色,支持分布式集群方式部署。Producer通过MQ的负载均衡模块选择相应的Broker集群队列进行消息投递,投递的过程支持快速失败并且低延迟。Consumer:消息消费的角色,支持分布式集群方式部署。支持以push推,pull拉两种模式对消息进行消费。同时也支持集群方式和广播方式的

2022-03-06 10:48:32 4434

原创 Seata XA 模式示例分析

文章目录1 下载示例2 示例结构3 业务服务 business-xa3.1 模块结构3.2 Controller 层3.3 Service 层3.4 stock Feign 客户端3.5 order Feign 客户端4 库存服务 stock-xa4.1 服务层 StockService4.2 数据源配置5 订单服务 order-xa5.1 服务层 OrderService5.2 account feign 客户端6 账户服务 account-xa6.1 服务层 AccountService7 测试7.

2022-03-06 10:40:52 1231

原创 使用 Spring JdbcTemplate 框架出现 oracle 数据源连接泄露问题的解决方法

1 问题应用运行一段时间之后,无法执行写入数据库操作。底层使用的是 druid 连接池。2 原因使用 Spring JdbcTemplate 框架执行 oracle sql 语句之后,发现逻辑连接没有释放:而同一套代码执行 PostgreSQL 语句之后,Spring JdbcTemplate 框架会主动释放逻辑连接:由于逻辑连接没有被释放,导致之后的线程在排队等待逻辑连接,从而导致线程阻塞。3 解决在执行语句后,主动回收连接:try { DataSource d

2021-12-11 09:23:47 838

原创 Java jar 命令行运行程序如何引用第三方依赖包

1 引言mybatis generator 是一个命令行运行工具,可以生成 mybatis 代码。但它需要依赖数据库驱动 jar,否则会抛出 ClassNotFoundException 异常。Exception in thread "main" java.lang.RuntimeException: Exception getting JDBC Driver at org.mybatis.generator.internal.JDBCConnectionFactory.getDrive

2021-12-05 20:17:56 2293

原创 说说在 Android 中如何不使用 findViewById() 来获取资源对象

1 安装在 build.grade 中加入以下配置1:apply plugin: 'kotlin-android-extensions'点击 “Sync Now” 进行安装:2 使用在 Activity 类中导入 import kotlinx.android.synthetic.main.first_layout.*。然后就可以直接使用资源 ID 来引用对象了:资源 ID 是定义在 layout.xml 类型的文件中: <Button android:id="

2021-12-05 20:16:14 517

原创 Android Studio 执行 Kotlin 抛出 com.android.builder.errors.EvalIssueException 问题的解决方法

异常具体信息:Caused by: com.android.builder.errors.EvalIssueException: Android Gradle plugin requires Java 11 to run. Youare currently using Java 1.8.You can try some of the following options: - changing the IDE settings. - changing the JAVA_HOME environm

2021-12-04 19:17:50 12024

原创 分布式事务框架 Seata 与 Hmily 横向比较

从支持的模式种类、团队规模来看,Seata 框架更占优势。

2021-12-04 19:13:10 1525

原创 说说在 Java 中如何比较两个对象

Common Lang 中的 Builder 包内提供了一个 DiffBuilder 类,可以比较两个对象,并返回不同的部分。首先在要比较对象的类中实现 Diffable 接口,然后实现 DiffResult diff(T obj) 方法。在DiffResult diff(T obj) 方法中,新建一个 DiffBuilder 对象,把需要比较的类属性一一放入 DiffBuilder 中。DiffBuilder 的构造函数有三个入参,lhs 是当前对象,rhs 是要比较的对象,style 是比

2021-11-22 22:03:57 1139

原创 说说如何基于 Docker 构建并使用 jdk 作为业务工程的基础镜像

我们的目标是构建一个业务工程镜像,它是基于 JDK,而 JDK 基于 CentOS。由于业务工程是 Spring Boot 架构,所以内嵌了 Tomcat。这样的镜像就可以在 k8s 中正常启动运行。1 构建 jdk 镜像1我们首先基于 centos7 镜像来构建 jdk8 镜像。(1)启动 docker 服务安装好 docker 之后,启动 docker 服务:systemctl start dockersystemctl是 Systemd 的主命令,用于管理系统。2还有一些常用的

2021-10-07 11:32:46 857

原创 说说如何在 vmware 下配置 CentOS 虚拟机的桥接网络

文章目录1 配置桥接[^1]2 设置 vmware 虚拟机窗口大小3 配置 CentOS 网络3.1 记录宿主机网络配置信息3.2 配置虚拟机网络4 验证4.1 虚拟机访问自身 IP4.2 虚拟机访问外网4.3 宿主机访问虚拟机4.4 虚拟机访问宿主机使用到的软件:vmware 版本: 8CentOS 版本:71 配置桥接1在 vmware 中选中 CentOS 7 虚拟机,右键进入菜单,选择 Settings:选择 Network Adapter,然后在右侧选择 Bridged 模式:.

2021-10-07 11:26:02 448

原创 说说在 Spring Boot 中如何集成 JSP 标签库

在之前的文章中已经说过如何在 Spring Boot 中集成 JSP 视图技术。现在说说如何集成 JSP 标签库。 JSP 标签库可以是标准标签库,也可以是自定义标签库。1 标准标签库JSTL 是 JSP 标准标签库1,全称是 Java server pages standarded tag library。引入后,我们就可以使用 JSP 标准标签库,比如 fmt 格式化标签库。1.1 引入依赖包<dependency> <groupId>javax.servlet&

2021-09-11 14:29:32 936

原创 说说在 Spring Boot 中如何集成 JSP 视图技术

文章目录1 加入 JSP 依赖包2 配置 resource3 配置视图解析器4 配置 webapp 文件夹与 web.xml5 新建 JSP6 配置依赖7 实现 Controller8 演示有的项目比较老,用的视图技术还是 JSP,现在要求把这些老项目都转为 Spring Boot 项目,这样可以打包成 Docker 镜像,然后部署到容器中进行管理。为了方便说明、验证。我们新建了一个 Spring Boot 项目。然后把 JSP 视图技术集成进来。具体步骤1如下:1 加入 JSP 依赖包首先在 p

2021-09-11 14:26:52 266

原创 Chrome 浏览器出现 ERR_UNSAFE_PORT 问题的解决方法

1 问题描述写了一个新的 Spring Boot 工程,工程端口号定义为 6667。工程启动正常,但在 Chrome 浏览器中输入访问地址出现 ERR_UNSAFE_PORT 错误。字面意思是不安全的端口号。2 原因分析Chrome 浏览器定义了一些内置端口,如果要访问的地址端口号与这些内置端口相同,就会出现ERR_UNSAFE_PORT 问题。Chrome 浏览器定义了以下这些内置端口1: 1, // tcpmux 7, // echo 9, // discard

2021-09-11 14:24:18 15477 3

原创 Arrays$ArrayList 的 Object 对象转换为 List<Object> 对象的技巧

在一个开发案例中,需要把一个 Object 对象转换为 List<Object> 对象。这个 Object 对象本质上是 Arrays$ArrayList,也就是 Arrays 类内部的 ArrayList 类。$ 是类与它的内部类之间的表示分隔符。Java 中可以通过 xxx.getClass().getName() 的方式得到一个对象所对应的类全名。如果这个内部类是 public,那么我们可以通过点分法来进行显式转换,形如: (Arrays.ArrayList) xxx。可惜的是这个 A

2021-08-20 21:30:15 1203

原创 比较各种初始化 List 方法的便捷性

1 常规方式常规的 List 初始化方法是先创建一个 ArrayList 对象,然后再把需要初始化的数据一个个添加进列表中,就像这样: List<String> list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c");2 匿名内部类方式匿名内部类方式是使用 {{}} 双括号语法, 外层的 {} 先定义了一个匿名内部类,然后在内层的 {} 进行数据初始化: List<String

2021-08-20 21:25:26 224

原创 说说如何在 logback 中打印debug日志,并可定义屏蔽某些包的debug日志

首先是在项目的 resources 文件夹内新建一个名为 logback-spring.xml 文件。然后在 root 节点设置日志级别为 debug,形如:<root level="DEBUG"> <appender-ref ref="console"/> <appender-ref ref="timeFileOutput"/> </root>运行结果:这样会输出项目中所有依赖包的 debug 日志。我们可以利用 l

2021-06-19 22:03:05 6630

原创 说说在 logback 中如何输出与主日志不同的独立业务日志文件

首先定义好 appender,然后定义一个 logger 节点,引用刚才定义的appender。logger 节点有以下三个属性,具体说明如下。完整示例如下:<appender name="interceptorTimeFileOutput" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--日志名,指定最新的文件名,其他文件名使用FileNamePattern --> <File>${

2021-06-19 21:59:30 329

原创 说说在 logback中如何配置日志的控制台输出与文件输出

通常情况下,日志是由一个抽象层 + 实现层的组合来搭建[i]。spring-boot-starter 其中包含了 spring-boot-starter-logging ,该依赖内容就是 Spring Boot 默认的日志框架 logback,所以实际开发中我们不需要直接添加该依赖[ii]。因为我们需要对日志进行更多控制,所以需要增加 logback配置。在项目的 resources 文件夹内新建一个名为 logback-spring.xml 文件。logback-spring.xml 只有在Spr

2021-06-19 21:53:19 1940

原创 说说如何使用 Spring jdbc 来执行存储过程

Spring jdbc 提供了jdbcTemplate 对象,该对象定义了 execute 方法可用于执行存储过程。该方法存在许多重载方式,我们使用的是execute(CallableStatementCreator csc, CallableStatementCallback action)。CallableStatementCreator 对象用于定义调用存储过程的入参与出参。CallableStatementCallback 对象用于定义执行以及接受存储过程的返回值。这两个对象都采用lambda表达

2021-05-30 08:56:38 674

原创 说说如何把一个POJO形式的Bean对象转换为 Map形式

一个POJO形式的Bean对象,包含一系列的属性定义以及属性所对应的 get 与 set 方法。因此我们需要使用Java的反射方法 getDeclaredFields()来获取这个对象中的字段列表。因为属性一般被定义为private,所以必须使用getDeclaredFields()方法,这个方法可以得到某个类的所有声明字段,即包括public、private和proteced,但是不包括父类的申明字段1。以下是实现代码:private Map<String, Object> toMap(Ob

2021-05-30 08:52:51 738

原创 There is no PasswordEncoder mapped for the id “null“ 问题的解决方法

(1) 问题描述使用 postman 执行 POST请求获取访问令牌 URI(/oauth/token)时,响应返回:{ "error": "unauthorized", "error_description": "Full authentication is required to access this resource"}查看后台日志发现抛出There is no PasswordEncoder mapped for the id “null” at org.springfram

2021-05-01 08:33:06 4553 4

原创 说说把 List 传入不定长入参的方法

因为不定长入参本质上是 String[],即字符串数组,所以可以通过toArray(new String[]{})进行转换。形如:list.toArray(new String[]{})。比如Spring Security的 ClientDetailsServiceBuilder#authorizedGrantTypes() 就是一个带有不定长入参的方法:实际转换方法为:...

2021-05-01 08:26:20 2981 2

原创 巧用Java List.removeAll()方法判定列表中元素是否都是某集合中的元素

假设我们有这样一个需求,需要判定配置的 OAuth2 授权类型,是否都在有效范围内。OAuth2 的授权类型只能是这五种:“refresh_token”,“password”, “client_credentials”, “authorization_code”, “implicit”,因为用户可以配置的值可能不在这五种授权类型中,所以需要判定。removeAll(Collection<?>c)方法用于从列表中移除指定 collection 中包含的所有元素,我们可以利用这个方法来进行判定。

2021-05-01 08:22:33 596 1

原创 Spring Boot 项目启动时,抛出无法访问javax.servlet.Filter找不到javax.servlet.Filter的类文件的解决方法

(1) 问题描述启动 Spring Boot 项目时,抛出该问题:双击该问题,跳转到 WebSecurityConfigurerAdapter 类:(2) 原因分析因为这个 WebSecurityConfigurerAdapter 类内部依赖了 spring-boot-starter-web,而我们的项目又没有引入这个包。(3) 问题解决在 pom.xml 中引入spring-boot-starter-web:<dependency> <group

2021-05-01 08:17:45 3792 1

原创 说说 Python 的 lru_cache 装饰器

Python 的 lru_cache 装饰器是一个为自定义函数提供缓存功能的装饰器。其内部会在下次以相同参数调用该自定义函数时直接返回计算好的结果。通过缓存计算结果可以很好地提升性能。1 从示例说起假设我们有一个计算斐波那契数列的求和函数,其内部采用递归方式实现。from xxx.clock_decorator import clock@clockdef fibonacci(n): if n<2: return n return fibonacci(n-2)

2021-03-14 11:27:15 299 1

原创 MyBatis自定义拦截器与 pagehelper组件冲突导致自定义拦截器不生效的解决方法

1 问题描述利用 MyBatis 的 @Intercepts 注解自定义了一个拦截器,在纯净环境中运行正常。放入一套Spring框架中不生效。2 原因分析利用 IDEA 的 Jar 包图谱分析器发现存在2个不同版本的 mybatis-spring-boot-starter:怀疑是与 com.github.pagehelper组件不兼容,因为它内部也是利用 MyBatis 的拦截器实现语句自动分页功能的。利用Maven 的exclusions 标签进行冲突检验:<dependency&gt

2021-03-13 16:54:24 3167 1

原创 说说发现 Jar 包存在冲突的方法

1 基本用法点击需要排查 Jar 冲突的项目,然后点击右上的 “Show Dependencies”按钮,生成 Jar 依赖图谱:如果依赖的包很多,就会太小,看不清。这时可以右键点击Jar包依赖图谱,选择 Actual Size,会以实际尺寸打开依赖图谱。还可以在图谱中键入 CTRL + F,打开搜索框,输入我们要查看的 jar 包关键字:如果存在冲突,图谱就会以红线进行标注。比如这里的 mybatis 存在两个版本(3.5.6 与 3.4.6):2 实战发现一个项目使用 MyBati

2021-03-13 16:48:28 549

Nginx 1.18.0 以及相关依赖库

该压缩包内包含了 Nginx-1.18.0以及 Nginx所需要的依赖库。依赖库主要为: * 编译 Nginx 的GCC 编译器; * 未来使用 C++ 来编写 Nginx 的 G++ 编译器; * Perl 正则表达式(Nginx HTTP 模块依赖库); * zlib (网络数据包 gzip压缩依赖库); * openssl (提供HTTPS 支持以及 MD5、SHA1 等加密算法实现)。

2020-12-27

Vue.js 技术交流培训材料.pdf

包含数据绑定、计算属性、内置指令、组件、自定义指令、Render 函数、webpack、插件等内容。

2019-11-22

jasperreports-functions-6.3.1.jar

jasperreports 的函数依赖包,用于解决 jasperreports 抛出 Caused by: java.lang.NoClassDefFoundError: net.sf.jasperreports.functions.standard.DateTimeFunctions 的问题

2017-11-07

mysql 函数,可以将数字转换为中文大写形式

mysql 函数,可以将数字转换为中文大写形式。大写数字是中国特有的数字书写方式,利用与数字同音的汉字取代数字,以防止数目被涂改。 据考证,大写数字最早是由武则天发明,后经朱元璋改进完善。

2017-10-30

olap4j-0.9.7.309-JS-3.jar jasperreports 6.x 的依赖包

olap4j-0.9.7.309-JS-3.jar jasperreports 6.x 的依赖包哦

2017-10-20

axis1.4 包,一个SOAP引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。

axis全称Apache Extensible Interaction System 即阿帕奇可扩展交互系统。Axis本质上就是一个SOAP引擎,提供创建服务器端、客户端和网关SOAP操作的基本框架。Axis目前版本是为Java编写的,不过为C++的版本正在开发中。但Axis并不完全是一个SOAP引擎,它还是一个独立的SOAP服务器和一个嵌入Servlet引擎(例如Tomcat)的服务器

2017-09-29

Fiddler4 破解版,http协议调试代理工具

Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件,这些都可以让你胡乱修改的意思)。 Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式。

2017-09-29

mdwiki 项目模板代码

可用于搭建 mdwiki 项目架构,mdwiki 是基于 markdown 的 wiki 系统。里面有一些基础文件,可在此基础上进行扩展。

2016-12-30

空空如也

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

TA关注的人

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