2025.8.7 java课堂笔记
一、复习
java的格式化输出
System.out.printf("%-10d%-10d",a,b);
m,n进行变量的交换,不允许定义并使用其他变量
m=m+n;
n=m-n;
二、类型转换
数据类型转换分为自动类型转换和强制类型转换
前者:从小到大
1.隐形转换
double a=10;//int 10,变成10.0给a(自动类型转换)
System.out.println(a);//输出的为10.0
后者:从 ...
简单理解Java Agent
Java Agent(也叫 Java 探针)是 Java 提供的一种特殊机制,可以让你在 不修改程序代码 的前提下,给运行中的 Java 程序“加功能”。简单来说,它像一个“外挂插件”,能偷偷给程序“打补丁”或“装监控”,而程序自己毫无察觉。
一、它是怎么工作的?——举个生活例子
想象你买了一辆汽车(Java 程序),想加装以下功能: ...
Java变量与常量全解析(包含常量类、interface 与 final 的比较)
Java中的变量
变量是Java程序中最基本的存储单元,用于存储数据值。变量在程序运行期间其值可以改变。变量必须先声明后使用。
变量声明语法:
数据类型 变量名 [= 初始值];
变量分类:
局部变量:在方法内部声明的变量,作用域仅限于声明它的方法内
实例变量:在类内部但在方法外部声明的变量,属于对象实例
类变量( ...
国内免费CDN,就问你要不要薅羊毛?
为了更好地适应国内用户的需求,EdgeOne之前提供的免费版服务主要是面向国外站点的,这对于国内的小伙伴们来说,使用起来确实不太方便。为了改善这一点,腾讯云近期推出了全新的国内站免费版套餐,真正做到无费用、长期有效,且不会过期,除非用户主动取消或修改。
如果你对EdgeOne还不太了解,不妨看看它都有哪些功能(下 ...
Java学习:Java与C++数组初始化全对比
Java初始化数组和C++初始化数组的区别
1)初始化
a. 静态初始化
Java 的静态初始化在声明时直接赋值,适用于已知初始值的情况。语法简洁,无需指定数组大小(编译器自动推断)。
// 一维数组
int[] arr1 = {1, 2, 3};
// 二维数组
int[][] arr2 = {{1, 2}, {3, 4}};
C++ 的静态初始化类似,但需指定数组大小(除非通 ...
【Java 温故而知新系列】基础知识-06 深入理解String类
有编码经验的小伙伴一定知道,String类在实际编码过程中会经常使用到,但是你真的了解String类吗?
先来看看几个常见的问题吧:
为什么String类是不可变,如此设计的目的?
为什么有人说 String str2 = new String("Hello"); 会创建了2个对象?
String, StringBuffer 和 StringBuilder的区别 ?
为什么拼接字符串时不推荐 ...
内存分区:程序运行的核心秘密
内存分区概述
内存分区是操作系统管理物理内存的一种方式,通常分为多个逻辑区域,用于存储不同类型的数据或支持不同功能。常见分区包括代码区、全局/静态区、栈区、堆区等。不同操作系统的实现可能略有差异,但核心逻辑相似。
代码区(Text Segment)
代码区存放可执行程序的机器指令,通常是只读的,防止程序意外修改 ...
Java中this()与super()的区别解析
this() 的用法
功能:调用当前类的其他构造函数
作用:避免构造函数中的代码重复
限制:必须是构造函数的第一条语句
适用场景:当类中存在多个构造函数且需要共享部分初始化逻辑时
class Car {
private String color;
private String model;
// 无参构造函数
public Car() {
this("Unknown" ...
利用ruoyi框架开发自己的后台管理系统日志(8.6)
昨天实现了库存的Excel批量导入和导出,就记录一下这个功能的开发过程吧。
首先是找到ruoyi框架封装的一个注解@Excel,这个自定义注解被描述为自定义导出Excel数据注解,查看代码可以发现除了支持导出还有导入的功能:
这里只要给实体类的字段加上注解,结合另一个类ExcelUtil中的方法就能实现了,exportExcel方法传入一 ...
服务之间远程Feign调用,出现参数丢失
最近有同事反映生产上,服务与服务之间远程调用,偶尔会出现 参数丢失 的情况。但是,不是所有服务之间都会出现参数丢失,是固定有2个服务之间有这种情况。之前也发现过有这种情况出现,还以为是真的没传参数,这一次大家合力一起研究了下,发现是偶发情况。
打断点,压力测,网上寻求答案。终于找到了问题所在,先贴个大佬 ...
Java学习:工具类、构造器、实体类使用场景
封装的设计要求:合理隐藏、合理暴露
合理隐藏:创建成员变量时,使用private修饰
private int id; // 电影编号
合理暴露:创建成员方法时,使用public修饰的get方法和set方法合理暴露
public void setId(int id) {
this.id = id;
}
实体类
要求1:成员变量全部私有,并提供public修饰的getter/setter方法
...
使用Eclipse Memory Analyzer分析java程序占用内存的情况
简介
Eclipse 内存分析器(Eclipse Memory Analyzer)是一款快速且功能强大的 Java 堆内存分析工具,可帮助您发现内存泄漏并降低内存消耗。
使用内存分析器,您可以分析包含数亿个对象的堆转储文件,快速计算对象的保留大小(retained sizes),查看哪些对象阻止了垃圾回收器(Garbage Collector)对其进行回收,并运行报告 ...
网关升级
背景
这是去年做的事情了,去年九月我们将一个系统的网关zuul平滑升级为spring cloud gateway,在此记录一下升级方案,有相同需求的朋友可以做个参考。
升级原因:
1、之前我们升级了spring boot/cloud版本,网关模块没有升级,一直使用旧版本,不统一,公共包的管理和代码不好维护。
2、低版本的spring cloud 使用zuul 1.x ...
剑指offer-18、⼆叉树的镜像
题⽬描述
操作给定的⼆叉树,将其变换为源⼆叉树的镜像。
⼆叉树的镜像定义:源⼆叉树
思路及解答
递归
采用后序遍历(左-右-根)的方式递归访问每个节点:
递归处理左子树
递归处理右子树
访问根节点并交换其左右子树
public TreeNode mirrorTree(TreeNode root) {
if (root == null) return null;
// 先递归处 ...
GitHub上创建仓库并clone到当前开发环境
点击头像选择your repositories->New进入如下界面:
选择自己需要的选项而后创建
clone到当前开发环境,在命令行输入:git clone 复制SSH的URL
来源:https://www.cnblogs.com/Saintwaters/p/19022152
Java编程练习:洗牌
今天开篇做了一个洗牌练习。既然要洗牌,首先要做牌。牌主要可以拆分成:
大小王各一张
String[] kings = {"BigKing", "SmallKing"};
四色花色各13张
String[] colors = {"♥", "♠", "♣", "♦"};
String[] numbers = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
因为求解的内容长度是已 ...
Mysql的索引数量是否越多越好?为什么?
什么是索引?
索引是存储引擎用于提高数据库表的访问速度的一种数据结构。它可以比作一本字典的目录,可以帮你快速找到对应的记录。
索引一般存储在磁盘的文件中,它是占用物理空间的。
索引的优缺点?
优点:
加快数据查找的速度
为用来排序或者是分组的字段添加索引,可以加快分组和排序的速度
加快表与表之间的连接
缺 ...
ArrayDeque双端队列--底层原理可视化
主要学习双端队列 ArrayDeque ,通过对其栈功能的使用,掌握循环数组底层原理
觉得文章枯燥的可以结合ArrayDeque 底层原理可视化视频:https://www.bilibili.com/video/BV1zChGz8EVL/
有环形的数组?同时具备栈功能和队列功能?
1. Java 中的栈实现
在Java中,栈类你可以直接找到的是Stack类。Stack类实在JDK 1.0 的时候 ...
对于依赖注解,@Autowired 和 @Resource 有什么不同?
在 Spring 框架中,@Resource 和 @Autowired 都用于依赖注入(Dependency Injection,DI),但它们之间存在一些区别:
@Autowired
@Autowired 是一个更通用的注解,可以被用于字段、构造器、方法等。
它默认按类型(by-type)进行自动装配(autowiring),也可以通过 @Qualifier 注解指定具体的 bean。
@Autowired 可 ...
Java练习Day1
【练习题1】设计一个可以执行基本数学运算的计算机程序
1、用户需要输入两个数字
int num1, num2;
2、用户需要输入一个字符
(1)调用Scanner类
import java.util.Scanner;
(2)定义Scanner对象
Scanner sc = new Scanner(System.in);
3、根据所选运算符执行相应数学运算,显示运算结果
switch (op) {
case "+":
...