JVM速成=。=
JVM跨平台原理
跨平台:一次编译,到处运行
本质:不同操作系统上运行的JVM不一样,只需要把java程序编译成一份字节码文件,JVM执行不同的字节码文件。
Java是高级语言,提前编译一下(变成字节码文件),再执行起来就会快一点
很多高级语言,都可以编译成字节码格式。字节码可以到不同平台上运行,这也体现的字节码的跨平台效果。
JVM整体结构
解释器
:执行方法区中存储的字节码指令
垃圾回收器
:回收垃圾对象
JIT编译器
:处理一些热点的字节码指令。【字节码里可能存在一些热点指令,这些热点指令翻译过一次,就把他们缓存起来,下一次再执行热点指令,就去缓存中取。从而提高执行效率】
方法区
:类加载子系统把字节码加载到方法区中
堆
:执行过程中产生的对象
Java方法栈
:当前线程执行到某个java里的方法,就会放入这里
本地方法栈
:当前线程执行native方法,就会放入这里(用Java语言以外的语言编写的方法)
程序计数器
:记录下一条指令的地址
类加载子系统
-
加载:把字节码文件,加载到方法区的内存空间中。
-
链接:(static int i = 10)
- 验证:检查字节码文件的格式
- 准备:先给i变量赋值为0(
先赋值0
) - 解析:将符号引用解析为直接引用
符号引用可以理解为类的名字(一般由包名 + 类名确定一个类)
直接引用可以理解为这个类在方法区中对应的地址
符号引用解析为直接引用:类的名字解析为这个类在方法区对应的地址
- 初始化:给类里边的static属性赋值(
后赋值为10
)
类加载器的分类
- 引导类加载器(BootStrapClassLoader)(用c++写的)
- 自定义类加载器(继承自ExtClassLoader 或 AppClassLoader)
ExtClassLoader 和 AppClassLoader都继承自ClassLoader类
BootStrapClassLoader:加载jre/lib目录下的类
ExtClassLoader:jre/lib/ext目录下的类
AppClassLoader:classpath(自己指定的)类加载的路径
WebAppClassLoader:Tomcat自定义的类加载器
双亲委派
作用:避免类的重复加载,防止核心API被篡改
当加载一个类的时候,先从应用加载器加载,这个时候应用加载器会在已加载过的库里面查看是否加载过该类,如果没有就往上调,使用父加载器,也就是扩展类加载器来加载。
- 先判断当前类是否被加载过
- 被加载过,直接返回
- 没有被加载过,
- 查看AppClassLoader对象的parent属性是否为空,
- 如果
不为空
,直接用parent属性加载(AppClassLoader对象的parent属性就是ExtClassLoader的对象)- 如果
为空
,则利用BootStrapClassLoader加载
- BootStrapClassLoader如果加载到,就直接结束
- 如果加载不到,返回ExtClassLoader,如果还是加载不到,就退回AppClassLoader,由它自己去加载当前类。
为什么Tomcat要自定义类加载器?
为了进行类的隔离,如果tomcat直接使用AppClassLoader类加载器,那么会出现以下情况:
- 应用A中有个com.xiaolin.Hello.class
- 应用B中也有个com.xiaolin.Hello.class
- 虽然都叫Hello.class,但是这两个类的方法、属性可能不一样
- 如果AppClassLoader先加载了应用A中的Hello.class文件,那么应用B就不能被加载了,因为这两个类的名字一样
- 所以就需要针对应用A、B设置单独的类加载器,也就是WebAppClassLoader,这样两个应用中的Hello.class都会被各自的类加载器加载到,不会产生冲突。
JVM中判断一个类是否被加载到的逻辑:类名 + 对应的类加载器实例
运行时数据区
方法区、堆区:多个线程共享
Java方法栈、本地方法栈、程序计数器:每个线程都有一个
程序计数器PC
是物理寄存器的抽象实现的,用来记录待执行的下一条指令的地址,是程序控制流的指示器(for、if else…都依赖它完成)。
解释器工作时,就是通过程序计数器获取下一条需要执行新的字节码指令,是JVM规范中没有规定任何OutOfMemoryError情况的区域。
虚拟机栈(Java栈、本地方法栈)
虚拟机栈是线程私有的,一个方法开始执行栈帧入栈,方法执行完后,对应的栈帧就出栈,因此不需要进行垃圾回收。
虚拟机栈存在OutOfMemoryError(内存不够)、StackOverflowError(栈溢出)
- 线程太多了,就可能会出现OutOfMemoryError,线程创建时没有足够的空间去创建虚拟机栈了。
- 方法调用的层数太多,就可能会出现StackOverflowError
栈帧:- 操作数栈:执行字节码指令过程中用来辅助计算的
- 局部变量表:记录方法里的每个变量的值
堆区
所有的对象和数组都应该存放在堆区,在执行字节码指令的时候,会把创建的对象存入堆区, 对象对应的引用地址放入虚拟机栈的栈帧中。
方法执行完之后,创建的对象不会立马被回收,而是等JVM后台执行GC后,对象才会被回收。
Eden:新对象都会先放入Eden区(除非对象的大小都超过Eden区,那么就放入老年代)
S0:也叫做from区
S1:也叫做to区
S0、S1都是用来存放MinorGC(YGC)后存在的对象
如果一个对象经过15次垃圾回收(YGC)后都没有被回收掉,那么就会被放入老年代里
默认:
新生代 : 老年代 = 1 : 2
Eden : S0区 : S1区 = 8 : 1 : 1
Yong GC / Minor GC:负责堆新生代进行垃圾回收
Old GC / Major GC:负责堆老年代进行垃圾回收(目前只有CMS垃圾回收器会单独对老年代进行垃圾收集,其他垃圾收集器基本都是整堆回收的时候堆老年代进行垃圾收集)
Full GC:整堆回收,也会对方法区进行垃圾收集
垃圾回收过程
为什么要进行垃圾回收?
垃圾是指在JVM中没有任何指向它的对象,如果不清理这些垃圾,他们就会一直占用内存,而不能给其他对象,最终垃圾对象会越来越多从而出现内存溢出。
如何标记垃圾对象?
- 引用计数器:每个对象都保存一个引用计数器属性,用户记录对象被引用的次数。
- 优点:实现简单,计数为0表示是垃圾对象
- 缺点:需要额外的空间来存储引用计数,需要额外的时间来维护引用计数,无法处理
循环引用
的问题
可达性分析法
:以GC Root作为起始点,然后一层一层找到所引用的对象,被找到的对象就是存活对象,其他不可达的对象就是垃圾对象。(找到可达对象)
GC Root是一组引用,包括:
- 线程中虚拟机栈 / 本地方法栈中正在执行的方法中的方法参数、局部变量所对应的对象引用
- 方法区中保存的类的信息中的静态 / 常量属性所对应的对象引用
怎么回收垃圾对象?
- 标记 - 清除算法:如果可用内存不够,就会暂停用户线程的执行,然后执行算法进行垃圾回收
标记阶段
:从GC Roots开始遍历,找到可达对象,并在对象头中进行标记清除阶段
:堆内存空间进行线性遍历,如果发现对象头中没有记录是可达,就回收他
缺点:效率不高,会产生内存碎片
优点:易实现
- 复制算法:将内存空间分为两块,每次使用一块,进行垃圾回收时,将可达对象复制到另一块没有使用的内存中,然后再清除当前内存块中的所有对象,后续一直重复上边操作,交换着来。
只遍历一次,如果可达就直接转移。比较适合垃圾对象比较多的场景(复制成本低、例如:新生代)
优点:没有标记和清除阶段,不会出现内存碎片
缺点:
- 需要更多的内存,始终有一半内存空闲;
- 对象复制后,对象存放的内存地址发生了变化,需要额外时间修改栈帧中记录的引用地址
- 可达对象比较多,垃圾对象比较少,复制算法的效率低
- 标记 - 整理阶段
标记阶段
:标记可达对象移动阶段
:将所有存活的对象移动到内存的一端整理阶段
:清除边界外所有空间
总结:
新生代中的对象存活时间比较短,可以利用复制算法
(适合垃圾对象比较多的情况)
老年代中的对象存货时间比较长,可以用标记 - 清除
或 标记 - 整理算法
,比如:
- CMS垃圾收集器采用的就是 标记 - 清除算法
- Serial Old垃圾收集器采用的就是 标记 - 整理算法
常见的垃圾收集器
- Serial GC(新生代)和 Serial Old GC(老年代):工作线程暂停,只有一个线程进行垃圾回收
- Parallel GC(新生代)和 Parallel Old GC(老年代):工作线程暂停,开启多个线程进行垃圾回收
- CMS GC(老年代):整个收集的过程更长,暂停的时间变短,而且在垃圾收集过程中大部分用户线程也还在执行,所以用户体验更好,但是吞吐量更低(单位时间内执行的用户时间更少了)
初始标记
:暂停所有工作线程,标记处所有GC Roots能直接可达的对象
,标记完后恢复工作线程。(初始标记只找到直接可达对象,不需要找到所有可达对象,只找了一层)并发标记
:垃圾回收线程和用户线程一起工作,垃圾回收线程也会去剩余的可达对象
(初始标记中没有找到的可达对象,但是也会存在误差)重新标记
:并发标记阶段可能会产生一些误差,需要进行修正并发清理
:垃圾回收线程和用户线程一起工作,删除垃圾对象(可能新生成的垃圾对象没有被清除掉)并发重置
:重置一下,方便下一次垃圾回收
初始标记、并发标记、重新标记,这三个阶段都是在找垃圾对象,其实最费时的是并发标记阶段,因为这个阶段需要找出大量的垃圾对象,但是在最费时的阶段里,用户线程也在工作。
- G1(整堆):
每一个方块叫做region,堆内存会分为2048个region,还是分成了Eden区、S0区、S1区、老年代,只不过空间是不连续的。
Humongous区:专门用来存放大对象(一个对象的大小超过一个region的50%)
初始标记
、并发标记
、最终标记
:同CMS
筛选回收
:提前设置一个时间t(默认200ms),按照指定这个的时间t来做筛选回收(不一定会回收掉所有的垃圾)
相关文章:
JVM速成=。=
JVM跨平台原理 跨平台:一次编译,到处运行 本质:不同操作系统上运行的JVM不一样,只需要把java程序编译成一份字节码文件,JVM执行不同的字节码文件。 Java是高级语言,提前编译一下(变成字节码文件…...
操作系统中的任务调度算法
在多任务操作系统中,任务调度算法(Task Scheduling Algorithm)是决定CPU资源如何分配给进程或线程的核心机制。优秀的调度算法需要平衡响应时间、吞吐量和公平性,同时适应不同的应用场景。 任务调度的核心目标 CPU利用率最大化&a…...
第七节 文件与流
基本的输入输出(iostream) C标准库提供了一组丰富的输入/输出功能,C的I/O发生在流中,流是字节序列。如果字节流是从设备(键盘、磁盘驱动器、网络连接等)流向内存,叫做输入操作。如果字节流是从…...
回首2024,展望2025
2024年,是个充满挑战与惊喜的年份。在这366个日夜里,我站在编程与博客的交汇点,穿越了无数的风景与挑战,也迎来了自我成长的丰收时刻。作为开发者的第十年,我依然步伐坚定,心中始终带着对知识的渴望与对自我…...
Ubuntu指令学习(个人记录、偶尔更新)
Ubuntu指令学习 0、一点常用指令列表一、Ubuntu下复制与移动,cp/mv二、Ubuntu下echo 与 重定向>,>>三、Ubuntu下chmod,用户权限四、Ubuntu下的tar打包,gzip压缩五、Ubuntu(22.04)下系统语言为中文,切换主目录文件名为英文。六、Ubun…...
【牛客】动态规划专题一:斐波那契数列
文章目录 DP1 斐波那契数列法1:递归法2:动态规划法3:优化空间复杂度 2.分割连接字符串3. 给定一个字符串s和一组单词dict,在s中添加空格将s变成一个句子 DP1 斐波那契数列 法1:递归 // 递归 #include <iostream>…...
HCIA-Access V2.5_13_1_1_VLAN类型
VLAN类型(1)Standard VLAN VLAN类型(1)-Smart VLAN Smart可以包含多个上行口,和多个业务虚端口(Service Port),以太网端口在同一下VLAN中是互通的,但是业务虚端口,在同一个VLAN之间是…...
【动态规划】风扫枯杨,满地堆黄叶 - 9. 完全背包问题
本篇博客给大家带来的是完全背包问题之动态规划解法技巧. 🐎文章专栏: 动态规划 🚀若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅🚀 要开心要快乐顺…...
Android ndk兼容 64bit so报错
1、报错logcat如下 2025-01-13 11:34:41.963 4687-4687 DEBUG pid-4687 A #01 pc 00000000000063b8 /system/lib64/liblog.so (__android_log_default_aborter16) (BuildId: 467c2038cdfa767245f9280e657fdb85) 2025…...
极狐GitLab 17.8 正式发布,多项 DevOps 重点功能解读【一】
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…...
java面试题
以下是一些Java面试题: 一、基础概念 Java中的基本数据类型有哪些?它们的默认值是什么? 答案: 基本数据类型有byte(字节型,默认值为0)、short(短整型,默认值为0)、int(整型,默认值为0)、long(长整型,默认值为0L)、float(浮点型,默认值为0.0f)、double(双精…...
C语言蓝桥杯1003: [编程入门]密码破译
要将"China"译成密码,译码规律是:用原来字母后面的第4个字母代替原来的字母. 例如,字母"A"后面第4个字母是"E"."E"代替"A"。因此,"China"应译…...
react实例与总结(一)
目录 一、简单认识 1.1、特点 1.2、JSX语法规则 1.3、函数组件和类式组件 1.4、类组件三大属性state、props、refs 1.4.1、state 1.4.2、props 1.4.3、refs 1.5、事件处理 1.6、收集表单数据—非受控组件和受控组件 1.7、高阶函数—函数柯里化 1.8、生命周期—新旧…...
科技赋能直播!DeepSeek大模型+智享AI直播第三代plus版本,未来直播将更加智能化!
科技赋能直播!DeepSeek大模型智享AI直播第三代plus版本,未来直播将更加智能化! 能成事的人,都是懂得整合资源的高手。 要学会“万物不为我所有,万物皆为我所用。”的思维方式。 一个人的成就高低,在于他的…...
几种3D 旋转 的参数化形式
在 3D 空间中,旋转是 3 自由度的,刚体变换是 6 自由度的(3自由度旋转3自由度平移)。 3x3 的旋转矩阵有 9 个量,表达了 3自由度的旋转。 旋转矩阵是有 自约束的,即一个旋转矩阵是一个 正交矩阵,…...
【kubernetes组件合集】深入解析Kubernetes组件之三:client-go
深入解析Kubernetes组件之三:client-go 目录 深入解析Kubernetes组件之三:client-go 引言 1. client-go简介 2. client-go的功能 2.1 资源操作 2.2 资源监听 2.3 认证和授权 2.4 错误处理和重试 2.5 扩展性和定制化 3. 使用client-go与Kubern…...
强化学习概念入门
1 概述 强化学习,英文名为reinforcement learning,简称RL,是机器学习的一个分支,其想要解决的问题是智能体(agent)如何在复杂环境(environment)下最大化其能获得的奖励。 一般来说…...
自动控制视频讲解
本视频几乎包含了所有《自动控制原理》(胡寿松)所有重点章节。针对于考研都能满足。 视频内容包括但不限于:时域分析、信号流图、结构图绘制、跟轨迹、幅相曲线、稳定裕度、z变换、离散传递函数、数字控制器、稳定判据、相平面法、描述函数法…...
【Mastering Vim 2_01】开篇词:在 AI 时代持续深耕底层技术,做长期主义的坚定捍卫者
【最新版《Mastering Vim》封面,涵盖 Vim 9.0 版特性】 文章目录 1 背景:AI 时代的底层技术觉醒2 Vim:一款被严重低估的文本编辑神器3 聊聊 IT 人士的职业病4 进阶之道:构建完整的知识体系5 从 AI 时代的深耕与精进再谈长期主义 1…...
zsh: command not found: conda
场景描述 在 Linux 服务器上使用 zsh 时,如果出现 zsh: command not found: conda 错误,说明你的系统未正确配置 conda 命令,或者你尚未安装 Anaconda/Miniconda。 解决方案 确保已安装 Anaconda 或 Miniconda conda 是 Anaconda 或 Minico…...
Unity中使用Best MQTT v3插件实现MQTT通信功能,进行模块拆分
概述 本文将详细介绍如何在Unity中使用Best MQTT v3插件实现MQTT通信功能。将通过模块化设计实现配置加载、连接管理、订阅/发布等功能,并提供完整的代码实现。 重连说明:当意外断开连接的时候,会进行重新连接,重连上之后会再次订…...
NO.14十六届蓝桥杯备战|switch语句|break|default|2道练习(C++)
switch语句 除了 if 语句外,C语⾔还提供了 switch 语句来实现分⽀结构。 switch 语句是⼀种特殊形式的 if…else 结构,⽤于判断条件有多个结果的情况。它把多重的 else if 改成更易⽤、可读性更好的形式。 switch (expression) { case value1: stat…...
探索B-树系列
🌈前言🌈 本文将讲解B树系列,包含 B-树,B树,B*树,其中主要讲解B树底层原理,为什么用B树作为外查询的数据结构,以及B-树插入操作并用代码实现;介绍B树、B*树。 Ǵ…...
【SpringBoot实现全局API限频】 最佳实践
在 Spring Boot 中实现全局 API 限频(Rate Limiting)可以通过多种方式实现,这里推荐一个结合 拦截器 Redis 的分布式解决方案,适用于生产环境且具备良好的扩展性。 方案设计思路 核心目标:基于客户端标识(…...
esxi添加内存条因为资源不足虚拟机无法开机——避坑
exsi8.0我加了6根内存条,然后将里面的ubuntu的内存增加 haTask-2-vim.VirtualMachine.powerOn-919 描述 打开该虚拟机电源 虚拟机 ub22 状况 失败 - 模块“MonitorLoop”打开电源失败。 错误 模块“MonitorLoop”打开电源失败。无法将交换文件 /vmfs/volumes…...
实验8 配置标准访问控制列表IPv4 ACL
实验8 配置标准访问控制列表IPv4 ACL 一.实验目的 1、掌握IPv4 ACL工作方式和工作过程。 2、掌握定义编号和命名的标准 IPv4 ACL 的方法。 3、掌握接口和VTY下应用标准IPv4 ACL的方法。 二.实验内容 配置IPv4 ACL的实验拓扑如下图所示。 图1 实验拓扑…...
5.7.2 进度管理
文章目录 进度管理Gantt图PERT图 进度管理 进度安排:通过将项目分解成多个活动,分析活动间的依赖关系,估算工作量,分配资源,制定活动时序。 Gantt图 Gantt图横坐标表示时间,纵坐标表示不同任务。使用一条条…...
Android新版高斯模糊(毛玻璃)官方实现,Kotlin
Android新版高斯模糊(毛玻璃)官方实现,Kotlin 从Android 12开始,Android官方API支持高斯模糊(毛玻璃)效果。关键是通过RenderEffect实现。 https://developer.android.com/reference/android/graphics/RenderEffecthttps://developer.android.com/refer…...
b站——《【强化学习】一小时完全入门》学习笔记及代码(1-3 多臂老虎机)
问题陈述 我们有两个多臂老虎机(Multi-Armed Bandit),分别称为左边的老虎机和右边的老虎机。每个老虎机的奖励服从不同的正态分布: 左边的老虎机:奖励服从均值为 500,标准差为 50 的正态分布,即…...
使用开源项目xxl-cache构建多级缓存
xxl-cache简介 官网地址:https://www.xuxueli.com/xxl-cache/ 概述 XXL-CACHE 是一个 多级缓存框架,高效组合本地缓存和分布式缓存(RedisCaffeine),支持“多级缓存、一致性保障、TTL、Category隔离、防穿透”等能力;拥有“高性…...
分层解耦-三层架构
controller: 控制层,接收前端发送的请求,对请求进行处理,并响应数据。 service: 业务逻辑层,处理具体的业务逻辑。 dao: 数据访问层(Data Access Object)(持久层),负责数据访问操作,包括数据的增、删、改…...
简化的动态稀疏视觉Transformer的PyTorch代码
存一串代码(简化的动态稀疏视觉Transformer的PyTorch代码) import torch import torch.nn as nn import torch.nn.functional as F class DynamicSparseAttention(nn.Module): def __init__(self, dim, num_heads8, dropout0.1): super().__init__()…...
掌握 PHP 单例模式:构建更高效的应用
在 PHP 应用开发中,资源的高效管理至关重要。单例模式是一种能够帮助我们实现这一目标的设计模式。本文将深入探讨单例模式的概念、工作原理以及在 PHP 项目中何时应该(或不应该)使用它。 什么是单例模式? 单例模式是一种设计模…...
今日AI和商界事件(2025-02-11)
今日AI大事件主要包括以下几个方面: 一、行业竞购与合作变动 马斯克组团竞购OpenAI 据《华尔街日报》报道,马斯克率投资者财团出价974亿美元竞购OpenAI,欲使其回归开源公益使命。xAI支持此次竞购,若成功,xAI或与OpenA…...
ArcGIS Pro批量创建离线服务sd包
背景: 主要针对一个工程内有多个地图框项: 处理方法:通过Python脚本处理打包。 运行环境 在Pro的Python环境中去运行编写的Python脚本。 Python 脚本参考 import arcpy import os# Set output file names outdir r"d:\data\out&…...
R语言 文本分析 天龙八部
起因, 目的: 前面有人对 “倚天屠龙记” 进行分析,我这里只是进行模仿而已。 完整的文件, 已经绑定了,反正读者可以找一下。 案例背景 小说《天龙八部》是金庸先生所著的武侠小说,也是“射雕三部曲”的前传。全书共50章,字数超过一百万字。故事发生在北宋末年,以大理…...
【AI论文】Visual Instruction Tuning
文献核心目标 作者的目标是通过多模态指令微调(Visual Instruction Tuning)来训练一个通用的视觉助手,使其能够理解用户的语言指令并与视觉内容结合完成任务。例如,用户可以上传图片并提出问题,模型根据图片内容作出回答。 1. 引言 什么是多模态交互?为什么重要? 人类…...
产品详情页中 品牌官网详情 对应后端的字段是 detail
文章目录 1、在这个Vue代码中,品牌官网详情 对应后端的字段是 detail2、品牌官网详情 功能相关的代码片段3、export const productSave (data: any) >4、ProductController5、ProductDto 类6、ProductApiService 1、在这个Vue代码中,品牌官网详情 对…...
vue知识点2
1.methods和mounted的区别 methods是定义方法,不涉及到调用 mounted涉及到操作 所以methods后面是:,mounted后面是() 2.介绍一下emit的用法 如果子控件要调用父页面的方法,在父页面的子控件引用处&…...
使用 mkcert 本地部署启动了 TLS/SSL 加密通讯的 MongoDB 副本集和分片集群
MongoDB 是支持客户端与 MongoDB 服务器之间启用 TLS/SSL 进行加密通讯的, 对于 MongoDB 副本集和分片集群内部的通讯, 也可以开启 TLS/SSL 认证. 本文会使用 mkcert 创建 TLS/SSL 证书, 基于创建的证书, 介绍 MongoDB 副本集、分片集群中启动 TLS/SSL 通讯的方法. 我们将会在…...
荣耀手机Magic3系列、Magic4系列、Magic5系列、Magic6系列、Magic7系列详情对比以及最新二手价格预测
目录 荣耀Magic系列手机详细对比 最新二手价格预测 性价比分析 总结 以下是荣耀Magic系列手机的详细对比以及最新二手价格预测: 荣耀Magic系列手机详细对比 特性荣耀Magic3系列荣耀Magic4系列荣耀Magic5系列荣耀Magic6系列荣耀Magic7系列处理器骁龙888&#x…...
利用HTML和css技术编写学校官网页面
目录 一,图例展示 二,代码说明 1,html部分: 【第一张图片】 【第二张图片】 【第三张图片】 2,css部分: 【第一张图片】 【第二张图片】 【第三张图片】 三,程序代码 一,…...
易语言Easy Programming Language
E易语言 EF 易语言.飞场 EPL EF 我心易飞扬! Elogo 易乐谷我的程序我来写! Easy Programming Language Elogo 未来的小程序员!易语言运行时环境检验报告 自有编辑器、自带数据库、本土化支持 易语言系统全部自行设计开发。自有编译器。所编译目的程序运…...
支付宝安全发全套解决方案
产品价值 ● 通过支付宝的资金能力,让服务商机构通过信息流驱动资金流,在不碰触客户企业资金的同时,为客户企业完成转账。账目清晰,无合规和资质风险。 ● 为服务商提供全链路的资金流动明细信息,服务商可以将这些信息…...
如何通过腾讯 ima.copilot 训练自己的知识库
如何通过腾讯 ima.copilot 训练自己的知识库 在信息爆炸的时代,拥有一个专属的知识库,能让我们在学习、工作中快速获取所需信息,极大地提升效率。腾讯推出的 AI 智能工作台 ima.copilot,为我们打造个人知识库提供了便利。今天&am…...
本地部署DeepSeek-R1(Mac版)
本地部署DeepSeek-R1(Mac版) 前言:过年这段时间,DeepSeek火遍全球,但遭受黑客攻击,10次对话基本9次都是服务器繁忙,请稍后重试。那么,本地部署整起来 总体来说,本地部署…...
uniapp 编译生成鸿蒙正式app步骤
1,在最新版本DevEco-Studio工具新建一个空项目并生成p12和csr文件(构建-生成私钥和证书请求文件) 2,华为开发者平台 根据上面生成的csr文件新增cer和p7b文件,分发布和测试 3,在最新版本DevEco-Studio工具 文…...
C++STL与内存管理总结
1:内存管理方面:涉及分配(请求)与释放,主要分为 静态内存,自动存储期(栈内存)、动态内存分配(堆内存)以及智 能指针系列,之所以重要,因…...
【文本处理】如何在批量WORD和txt文本提取手机号码,固话号码,提取邮箱,删除中文,删除英文,提取车牌号等等一些文本提取固定格式的操作,基于WPF的解决方案
企业的应用场景 数据清洗:在进行数据导入或分析之前,往往需要对大量文本数据进行预处理,比如去除文本中的无关字符(中文、英文),只保留需要的联系信息(手机号码、固话号码、邮箱)。…...
算法跟练第十弹——栈与队列
文章目录 part01 逆波兰表达式求值part02 滑动窗口最大值part03 前 K 个高频元素归纳:将字符串转转换成整数:LinkedListMap遍历优先级队列的比较器 跟着代码随想录刷题的第十天。 代码随想录链接:代码随想录 part01 逆波兰表达式求值 题目链接…...