jvm简介与内存架构
JVM更多信息查看官网 简介JVM,全称是 Java Virtual Machine,Java运行环境(Java二进制字节码的运行环境) 优点: 是Java一次编写,到处运行的基石。 自动内存管理,垃圾回收功能 数组下标越界检查 多态 JVM有很多,常见的JVM有:HotSpot Opent JDK edition(平时使用的)、Eclipse OpenJ9等 内存架构程序计数器Program Counter Register,程序计数器(寄存器):作用是记住下一条jvm指令的执行地址,在物理上,是通过cpu中的寄存器来实现的。他是线程私有,且是唯一一个不会存在内存溢出的区域。 工作流程:java源码编译为二进制字节码,字节码中包含jvm指令,这些指令交给解释器->机器码->CPU执行。 1234567891011121314151617181920// 二进制字节码 java 源代码// 其中iconst_x 就是程序计数器0: getstatic #20 | PrintSt...
Spring IoC
Spring IoCIoC 简介IoC 是什么IoC 即控制反转(Inversion of Control,缩写为 IoC)。IoC 又称为依赖倒置原则(设计模式六大原则之一),它的要点在于:程序要依赖于抽象接口,不要依赖于具体实现。它的作用就是用于降低代码间的耦合度。 IoC 的实现方式有两种: 依赖注入(Dependency Injection,简称 DI):不通过 new() 的方式在类内部创建依赖类对象,而是将依赖的类对象在外部创建好之后,通过构造函数、函数参数等方式传递(或注入)给类使用。 依赖查找(Dependency Lookup):容器中的受控对象通过容器的 API 来查找自己所依赖的资源和协作对象。 理解 Ioc 的关键是要明确两个要点: 谁控制谁,控制什么:传统 Java SE 程序设计,我们直接在对象内部通过 new 进行创建对象,是程序主动去创建依赖对象;而 IoC 是有专门一个容器来创建这些对象,即由 Ioc 容器来控制对象的创建;谁控制谁?当然是 IoC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。 为何是...
Spring Bean
Spring Bean在 Spring 中,构成应用程序主体由 Spring IoC 容器管理的对象称为 Bean。Bean 是由 Spring IoC 容器实例化、装配和管理的对象。 Bean 以及它们之间的依赖关系反映在容器使用的配置元数据中。 BeanFacotry 入门 自定义一个bean,配置到xml文件中;在idea中,new-> XML configuration file 创建beans.xml,添加bean内容 1<bean id="demoName" class="com.study.demo"></bean> 通过BeanFacory获取对象 1234DefaultListBeanFacotry factory = new DefaultListBeanFacotry();//创建工厂对象XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(facotry);//创建读取器(XML)reader.loadBeanDe...
Spring Framework 综述
Spring Framework 综述更多教程可以查看:官方教程文档 Spring Framework 简介Spring Framework 是最受欢迎的企业级 Java 应用程序开发框架。用于构建企业级应用的轻量级、一站式解决方案。 核心思想Spring 最核心的两个技术思想是:IoC 和 Aop IoCIoC 即 Inversion of Control ,意为控制反转。 Spring 最认同的技术是控制反转的 依赖注入(DI) 模式。控制反转(IoC)是一个通用的概念,它可以用许多不同的方式去表达,依赖注入仅仅是控制反转的一个具体的例子。 当编写一个复杂的 Java 应用程序时,应用程序类应该尽可能的独立于其他的 Java 类来增加这些类可重用可能性,当进行单元测试时,可以使它们独立于其他类进行测试。依赖注入(或者有时被称为配线)有助于将这些类粘合在一起,并且在同一时间让它们保持独立。 到底什么是依赖注入?让我们将这两个词分开来看一看。这里将依赖关系部分转化为两个类之间的关联。例如,类 A 依赖于类 B。现在,让我们看一看第二部分,注入。所有这一切都意味着类 B 将通过 I...
Java 编码和加密
Java 编码和加密Base64 编码Base64 原理Base64 内容传送编码是一种以任意 8 位字节序列组合的描述形式,这种形式不易被人直接识别。 Base64 是一种很常见的编码规范,其作用是将二进制序列转换为人类可读的 ASCII 字符序列,常用在需用通过文本协议(比如 HTTP 和 SMTP)来传输二进制数据的情况下。Base64 并不是加密解密算法,尽管我们有时也听到使用 Base64 来加密解密的说法,但这里所说的加密与解密实际是指编码(encode) 和 解码(decode)的过程,其变换是非常简单的,仅仅能够避免信息被直接识别。 Base64 算法主要是将给定的字符以字符编码(如 ASCII 码,UTF-8 码)对应的十进制数为基准,做编码操作: 将给定的字符串以字符为单位,转换为对应的字符编码。 将获得字符编码转换为二进制 对二进制码做分组转换,每 3 个字节为一组,转换为每 4 个 6 位二进制位一组(不足 6 位时低位补 0)。这是一个分组变化的过程,3 个 8 位二进制码和 4 个 6 位二进制码的长度都是 24 位(3*8 = 4*6 = 24)。...
commons-io 框架
IO框架commons-io 框架jar官网下载地址:https://commons.apache.org/proper/commons-io/download_io.cgi其中doc的jar解压之后,就是api文档。这是maven方式: 12345<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.16.1</version></dependency> 该框架提供了相关工具类: FileUtils 方法签名 说明 public static void copyFile(File srcFile, File destFile) 复制文件 public static void copyDirectory(File srcDir, File destDir) 复制文件夹 public static void deleteDi...
java 高级
Java 高级数据结构数组、列表、集合、映射、栈、队列、堆、树。 Java 集合框架 点击查看UML图 类型 描述 特点 常用实现类 :— :— :— :— Collection 单列数据集合的根接口 存储一组对象的容器 (它下面有List和Set) List 有序、可重复的集合 有索引,允许重复,元素有顺序 ArrayList, LinkedList, Vector Set 唯一、无序的集合 无索引,不允许重复元素,不保证顺序 HashSet(无序), LinkedHashSet(有序), TreeSet(升序) Map 双列数据的集合 存储键值对(Key-Value),Key唯一,排序由key决定 HashMap(无序), LinkedHashMap(有序), TreeMap(升序), Hashtable Collections 操作集合的工具类 提供了一系列静态方法,用于对集合进行排序、搜索、线程安全化等操作 (这是一个工具类,不是接口) 单列集合遍历 iterator 12345678List<Integer> list ...
java 面向对象
面向对象Java继承继承的概念继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。 继承的特性 子类拥有父类非 private 的属性、方法 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。 子类可以用自己的方式实现父类的方法。 Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 B 类继承 A 类,C 类继承 B 类,所以按照关系就是 B 类是 C 类的父类,A 类是 B 类的父类,这是 Java 继承区别于 C++ 继承的一个特性。 提高了类之间的耦合性(继承的缺点,耦合度高就会造成代码之间的联系越紧密,代码独立性越差) 继承关键字继承可以使用 extends 关键字来实现继承,而且所有的类都是继承于 java.lang.Object,当一个类没有继承的两个关键字,则默认继承 Object(这个类在 java.lang 包中,所以不需要 import)祖先类 extends 关键字:在 Java 中,类的继承是单一继承,也就是说,一个子类只能...
js 问题记录
时区问题处理问题描述:程序时间全局使用的 new Date(),在国内一切正常,但是在国外,就出问题了。最后追踪其根本原因为 new Date(‘xxxx/x/x’).getTime() 在不同时区返回的时间戳不一致,导致查询数据失败。 如:new Date("2025/8/1").getTime() 的解析依赖于客户端时区 北京 (UTC+8):解析为 2025-08-01 00:00:00 GMT+0800 纽约 (UTC-4):解析为 2025-08-01 00:00:00 GMT-0400。 结论:相同字符串在不同时区返回不同时间戳(相差时区偏移) 解决方法: 123456function toUTCTimestamp(dateString) { const [year, month, day] = dateString.split('/').map(Number); // 使用 Date.UTC 创建 UTC 时间戳,month - 1是因为 UTC 方法是从 0 开始计算。 减去 8 小...
java 基础
简介详细api方法可以查看:官方API文档更多教程可以查看:官方教程文档 语法与 C、C++接近,且丢弃了 C++中很少使用的特性。此外,java 还不使用指针,而是引用,并提供了自动分配和回收内存空间,使得我们不用为内存管理而担忧。 运行环境,最好保证操作系统内存 1G 以上 基本数据类型变量就是申请内存来存储值。 Java 的两大数据类型: 内置数据类型 引用数据类型 内置数据类型 类型 字节大小 大小(位) 最小值 最大值 默认值 包装类 备注说明 byte 1 8 -2^7 2^7 - 1 0 Byte 有符号整数 short 2 16 -2^15 2^15 - 1 0 Short 有符号整数 int 4 32 -2^31 2^31 - 1 0 Integer 有符号整数,最常用 long 8 64 -2^63 2^63 - 1 0L Long 需加 L 后缀(如 1000L) float 4 32 ≈1.4E-45 ≈3.4E38 0.0f Float 单精度浮点,需加 f 后缀 double 8 64 ≈4.9E-324 ≈1.8...