JAVA 四月 11, 2021

Java 应用远程调试

文章字数 10k 阅读约需 10 mins.

软件开发会时经常会遇到这样的场景:

  • 现场反馈的问题,在本地环境无法重现,可能需要将现场数据库导回来才能重现问题
  • 生产环境中的服务无法直接从本地开发环境进行连接,进而无法使用本地代码进行调试

在上面...

查看全文

JAVA 四月 11, 2021

Java 应用远程调试

文章字数 10k 阅读约需 10 mins.

软件开发会时经常会遇到这样的场景:

  • 现场反馈的问题,在本地环境无法重现,可能需要将现场数据库导回来才能重现问题
  • 生产环境中的服务无法直接从本地开发环境进行连接,进而无法使用本地代码进行调试

在上面的场景中,无论是将现场库导出,还是开通生产环境服务的访问权限,都是非常困难且不安全的。

本文将介绍一种由 Java 平台提供的,远程调试 Java 应用的方法。

JPDA(Java Platform Debugging Architecture)是一个多层调试架构,支持在不同操作系统、虚拟机及 JDK...

查看全文

OTHERS 四月 04, 2021

二进制算术运算

文章字数 4.7k 阅读约需 4 mins.

总体来讲,二进制算术运算可以采用竖式计算的方式,与十进制竖式计算的区别是,逢十进一变为了逢二进一。

以 8 和 4 为例,可参照 十进制整数与二进制数转换 中方法,分别计算出二进制形式:

8 (10) = 1000 (2)
4 (10) = 0100 (2)

  1000
+ 0100
------
  1100

1100 (2) = 12 (10)

  1000
- 0100
------
  0100

0100 (2) = 4 (10)

负数怎么表示

如果是 4 - 8 时会怎么样呢?

  0100
-...
查看全文

OTHERS 三月 28, 2021

十进制浮点数与二进制数转换

文章字数 6.1k 阅读约需 6 mins.

在计算机科学中,浮点(英语:floating point,缩写为FP)是一种对于实数的近似值数值表现法,由一个有效数字(即尾数)加上幂数来表示,通常是乘以某个基数的整数次指数得到。以这种表示法表示的数值,称为浮点数(floating-point number)。利用浮点进行运算,称为浮点计算,这种运算通常伴随着因为无法精确表示而进行的近似或舍入。 —— 维基百科

可以简单的将浮点数理解为小数(有限或无限的),如:-0.25、π、1.99714e5 等。

IEEE 二进制浮点数算术标准(IEEE...

查看全文

OTHERS 三月 21, 2021

十进制整数与二进制数转换

文章字数 8.7k 阅读约需 8 mins.

因为人类有十根手指,所以十进制计数法,是目前使用范围最广泛的计数方式。

但在计算机中,只有 0 和 1 两个数,所以需要进行转换。

本文主要介绍一下十进制 整数 与二进制数的转换方法。

方法一

十进制整数转二进制时,可将十进制整数除以 2(因为需转换为二进制数),得到余数,填入二进制低位,直至商为 0 时结束。

156 为例:

除数 被除数 余数
2 156 0
78

将余数 0 填入二进制数的低位

- - - - - - - 0

商不为...

查看全文

SPRING 三月 14, 2021

如何给 Spring Boot 外挂 classpath?

文章字数 3.8k 阅读约需 3 mins.

假设使用 Spring Boot 开发了一个可使用不同数据库的应用,每个数据库的 jdbc 驱动包都不同,不想在 Fat Jar 中打入所有的数据库驱动 jar,又不想为每一个确定了具体数据库的场景都打一个对应的 Fat Jar 包,有没有优雅的方式来实现这个需求呢?

我们先来看下 Spring Boot 的 Fat Jar(Executable Jar)是如何运行的。

通常情况下,要启动一个 Spring Boot 应用,可通过如下方式:

$ java -jar example.jar

Spring...

查看全文

SERVLET 十二月 27, 2020

Override same class

文章字数 7.5k 阅读约需 7 mins.

实际 Java Web 项目中经常会遇到这样的场景:希望对依赖的某个三方库中的行为进行覆盖式的定制(修改三方库中的某些行为),但并不希望发布定制的版本至私服。

通常在使用 WAR 包发布应用时,可将定制的类编译成 class 文件,放入 WEB-INF/classes 路径中,即可覆盖放置在 WEB-INF/lib 路径下的三方库中同名类,达到定制的目的。

那么为什么可以这样?

在两个相同的 class 必须都存在于 JAR 包中时,又怎么实现这种需求呢?

Servlet 规范

Java(TM...

查看全文

JAVA 十二月 06, 2020

如何确定装载了哪个类

文章字数 4.3k 阅读约需 4 mins.

某些时候,我们可能希望知道 ClassLoader 里到底装载的是哪个 class,比如当两个 jar 包中存在 package 和 Class 名完全相同的两个类时。

在 java 命令的帮助信息中,有如下内容(部分):

$ java -help
用法: java [-options] class [args...]
           (执行类)
   或  java [-options] -jar jarfile [args...]
           (执行 jar 文件)
其中选项包括:
    -d32      使用 32 位数据模型 (如果可用...
查看全文

TOMCAT 八月 02, 2020

Tomcat 是怎么找到用来处理请求的 Servlet 的?

文章字数 14k 阅读约需 12 mins.

Servlet 注册到了哪? 中,我们找到了配置的 Servlet 被包装成了一个 StandardWrapper,以注册的 Servlet name 为 key 放入了其父容器(Context)一个 HashMap 里。那么当 Tomcat 收到一个请求的时候,是怎么找到对应的 Servlet 以对请求进行处理的呢?

先放一张图:

总的来说,这个过程分为两部分:

  1. 读取所有 Servlet 的配置,放入 Mapper 中;
  2. 将请求匹配到具体的 Servlet 上。

注:本文以 Tomcat...

查看全文

JAVA 七月 26, 2020

为什么应该设置 com.sun.management.jmxremote.rmi.port?

文章字数 5.1k 阅读约需 5 mins.

在使用 JMX 对 Java 应用进行监控时,一般会在启动时添加如下参数:

java \
-Djava.rmi.server.hostname=192.168.16.237 \
-Dcom.sun.management.jmxremote.rmi.port=2909 \
-Dcom.sun.management.jmxremote.port=9009 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management...
查看全文

SPRING 七月 19, 2020

谁动了我的异常 Plus

文章字数 5.9k 阅读约需 5 mins.

书接上文,在 谁动了我的异常? 中,有几个问题没说清楚,本文将继续进行说明。
为了方便,相关示例代码上传至了 https://github.com/AlphaHinex/proxy-in-spring

示例代码中,定义了如下内容:

ClassController 中定义了一个没有声明异常...

查看全文
加载更多
0%