探讨使用ISVA代替“Open Liberty使用指南及微服务开发示例”中日志审计功能
在Open Liberty使用指南及开发示例(四)一文开始日志审计功能占有了一定的开发工作量,那么是否可以使用IBM Security Verify Access(ISVA)代替以节省开发工作?如果可行,那么以后各类应用的日志审计功能可以交给ISVA来实现,下面我们进行探讨。
一、可行分析
IBM Security Verify Access (ISVA) 作为一种全面的身份与访问管理(IAM)解决方案,确实可以帮助你减少大量的日志审计、身份认证、权限控制等开发工作量。ISVA 提供了许多预构建的功能,可以代替自定义开发,尤其在涉及身份验证、授权、审计、日志管理等方面非常有帮助。
1、如何通过 ISVA 来替代自定义开发的功能:
1. 身份认证与访问控制
- ISVA 提供全面的身份验证机制,例如:单点登录(SSO)、多因素认证(MFA)、身份验证策略和自定义登录页面。你可以通过配置 ISVA 来集中管理身份验证,无需手动编写身份验证逻辑。
- 角色管理与权限控制: 你可以通过 ISVA 定义用户角色和权限,ISVA 会自动根据用户角色决定访问资源的权限,而不需要在应用中手动编写复杂的权限控制。
2. 审计与日志功能
- 审计日志: ISVA 本身提供强大的审计日志功能,能够记录所有身份认证和授权事件,包括成功和失败的登录尝试、密码更改、访问控制策略应用等。所有的操作都会被自动记录并存储,方便后续审计和合规性检查。
- 集成到外部日志系统: ISVA 可以将审计日志集成到外部日志管理系统(如 Splunk、ELK Stack),你无需再手动编写和存储日志数据。你只需要在 ISVA 中配置相关的审计日志记录和导出规则。
3. 用户和角色管理
- ISVA 提供的自带用户管理界面,可以实现基于角色的访问控制(RBAC)。你可以直接通过 ISVA 来管理用户账户、角色以及权限,而不需要在应用中开发相关的管理功能。
- 支持多租户管理: 如果你希望实现多租户支持,ISVA 也可以根据不同的租户组织结构管理用户和角色,进一步简化多租户应用的开发工作。
4. 安全策略和认证策略
- ISVA 允许配置各种安全策略,如 IP 白名单、访问限制、认证强度(例如强制 MFA)、访问条件等。这些策略可以为应用增加额外的安全保护,避免开发者自行编写复杂的安全控制代码。
- 访问控制: 你可以通过 ISVA 定义访问控制策略,控制哪些用户/角色可以访问哪些资源。例如,某些日志文件或敏感数据只有特定角色(如管理员)可以访问,ISVA 会自动执行这些策略。
5. 集成与简化开发
- 简化开发与集成: 使用 ISVA 作为身份认证和访问控制的基础设施,后端系统和前端应用不需要关心细节,只需与 ISVA 进行集成,减少了很多自定义开发工作。比如,使用 OAuth 2.0 或 OpenID Connect 协议与 ISVA 集成,可以简化应用的认证过程。
2、总结:
可以使用 ISVA 来代替的功能:
- 身份验证与多因素认证(MFA)
- 角色管理与访问控制
- 审计日志记录与监控
- 安全策略与认证策略管理
- 自带的管理界面与用户管理功能
通过 ISVA 替代开发的好处:
- 节省开发时间和精力: ISVA 提供了现成的解决方案,避免重复造轮子,尤其是在身份管理、审计日志等方面。
- 增强安全性: ISVA 在安全性上有强大的内建机制,可以有效防止安全漏洞和未授权访问。
- 易于扩展和集成: ISVA 提供了灵活的 API 和集成方式,适应企业不同的需求,尤其是多租户和跨平台的支持。
- 降低运维负担: ISVA 提供的日志和审计功能可以自动化收集和存储,无需开发团队手动维护。
如果引入 ISVA:
- 你可以将身份验证、权限控制、审计和日志管理等核心功能交给 ISVA 来处理,减少后端开发的复杂度,并且能够集中管理身份和访问控制策略。
- 只需专注于核心业务逻辑,而不需要担心安全和合规性相关的细节。
3、接下来,如何集成 ISVA 到你的应用?
- 配置 ISVA 的身份验证策略,确保你的应用可以与 ISVA 进行身份验证(可以使用 OAuth 2.0、OpenID Connect)。
- 在 ISVA 中配置角色和权限,定义哪些用户或角色可以访问你的应用中的哪些资源。
- 启用审计和日志记录,并配置日志导出到外部系统(如果需要)。
- 使用 ISVA 提供的 API 或 SDK 来与应用进行集成。
这样,你就能够利用 ISVA 来简化应用的身份管理和审计工作。
二、集成ISVA实例步骤
下面让我们深入了解如何将 IBM Security Verify Access (ISVA) 集成到你的应用中,以便替代一些自定义开发的功能,比如身份验证、权限控制和日志审计。
1. 配置 ISVA 实例
安装 ISVA
如果你还没有安装 ISVA,你需要先部署一个 ISVA 实例。你可以选择 IBM Security Verify Access 的 SaaS 版本 或 本地部署版本。如果选择本地部署,可以按照以下步骤安装:
- 下载并安装 ISVA。
- 配置基本的网络设置(例如 IP 地址、端口等)。
- 配置 ISVA 后端的数据库(如 DB2、MySQL、PostgreSQL)。
创建应用程序和访问策略
- 登录 ISVA 管理控制台。
- 创建一个新的应用程序(称为服务提供者),为你的应用配置身份验证策略(例如,使用 SSO、OAuth 2.0 或 OpenID Connect)。
2. 配置身份验证(SSO、OAuth 2.0 或 OpenID Connect)
ISVA 提供了强大的身份验证功能,可以通过 单点登录(SSO)、OAuth 2.0 或 OpenID Connect(OIDC) 进行身份验证。你可以选择适合你的应用程序的协议来集成。
使用 OAuth 2.0 和 OpenID Connect 配置应用
如果你选择 OAuth 2.0 或 OpenID Connect,ISVA 会充当认证提供者,允许你通过 ISVA 来验证用户。
配置 OAuth 2.0 / OpenID Connect
- 在 ISVA 控制台中,进入 OAuth 或 OpenID Connect 配置页面。
- 创建一个新的 OAuth 客户端,为你的应用分配客户端 ID 和密钥。你可以设置应用的回调 URL,这是用户认证成功后的跳转地址。
- 配置认证请求参数,包括授权服务器的 URL 和认证请求的范围(例如:
openid
、profile
、email
等)。
集成应用:
在应用的后端,你需要配置 OAuth 2.0 或 OpenID Connect 客户端,以下是集成的基本步骤:
- 获取授权 URL:将用户重定向到 ISVA 提供的授权端点进行身份验证。
- 获取授权码并交换令牌:在用户成功认证后,ISVA 会返回授权码,应用使用该授权码从 ISVA 获取访问令牌(Access Token)和刷新令牌(Refresh Token)。
- 令牌验证:应用通过访问令牌与 ISVA 进行交互,访问需要身份验证的资源。
// 使用 Spring Security 配置 OAuth2 客户端集成
@EnableOAuth2Client
public class OAuth2LoginConfig {@Value("${oauth.client-id}")private String clientId;@Value("${oauth.client-secret}")private String clientSecret;@Value("${oauth.auth-uri}")private String authUri;@Value("${oauth.token-uri}")private String tokenUri;@Value("${oauth.redirect-uri}")private String redirectUri;@Beanpublic OAuth2RestTemplate oAuth2RestTemplate() {OAuth2ProtectedResourceDetails resourceDetails = new ClientCredentialsResourceDetails();((ClientCredentialsResourceDetails) resourceDetails).setClientId(clientId);((ClientCredentialsResourceDetails) resourceDetails).setClientSecret(clientSecret);((ClientCredentialsResourceDetails) resourceDetails).setAccessTokenUri(tokenUri);return new OAuth2RestTemplate(resourceDetails);}
}
集成示例:
- 访问 ISVA 登录页面,用户输入用户名和密码。
- ISVA 验证身份后,通过 OAuth 2.0 返回认证令牌。
- 应用使用该令牌与 ISVA 通信,授权访问应用资源。
3. 配置角色管理与权限控制
在 ISVA 中配置角色和策略
- 在 ISVA 控制台中创建角色(例如,管理员、普通用户、访客等)。
- 为每个角色定义访问控制策略,指定哪些角色可以访问哪些资源。
将角色信息传递到应用
你可以通过 OIDC 或 OAuth 2.0 在访问令牌中获取角色信息。例如,ISVA 可以将角色信息添加到用户的 ID Token 中,应用可以根据这些角色信息来控制访问权限。
示例:
在 ISVA 配置 OAuth 2.0 时,可以设置 scope
以获取角色信息:
openid profile email roles
:角色信息可以通过roles
字段传递。
应用接收到身份验证令牌后,可以从令牌中提取角色,并根据角色执行权限控制:
String roles = jwt.getClaim("roles"); // 从 JWT 令牌中提取角色
if (roles.contains("ADMIN")) {// 允许访问管理员页面
} else {// 拒绝访问
}
4. 配置审计和日志管理
ISVA 自带审计日志功能
ISVA 提供了内建的审计日志功能,自动记录所有认证和授权事件(登录、失败登录、令牌请求等)。你无需再编写复杂的日志代码,ISVA 会自动生成审计记录并存储。
启用审计日志
- 登录 ISVA 控制台。
- 配置审计日志策略,例如:记录用户登录成功/失败、角色变更、访问控制策略应用等。
- 设置审计日志的导出目标,可以将日志发送到外部日志系统(如:Splunk、ELK)。
集成审计日志导出
你可以将 ISVA 的审计日志集成到外部的日志管理平台(如 ELK 或 Splunk)中,方便查看和分析。
5. 集成前端(SSO、OAuth 2.0 或 OpenID Connect)
SSO 集成
- 将 ISVA 作为单点登录(SSO)服务提供者,用户只需登录一次即可访问多个应用。
- 配置 ISVA 来提供认证服务,应用可以通过重定向到 ISVA 的认证端点来完成身份验证。
前端示例(SSO):
// 通过重定向用户到 ISVA 登录页面进行身份验证
window.location.href = "https://your-isva-instance/oauth/authorize?client_id=your-client-id&redirect_uri=your-redirect-uri&response_type=code";
6. 配置多租户支持
ISVA 也支持 多租户 配置,可以在不同的租户环境下实现隔离的身份验证和权限管理。
多租户支持配置:
- 在 ISVA 控制台创建多个租户,每个租户有独立的身份管理和访问策略。
- 为每个租户配置独立的 OAuth 客户端 和认证策略。
总结:
通过集成 ISVA,你可以显著减少自己在 身份验证、角色管理、审计日志、权限控制 等方面的开发工作量。以下是 ISVA 为你提供的关键功能:
- 身份验证:提供 SSO、OAuth 2.0、OpenID Connect 等标准协议,简化身份验证过程。
- 角色与权限管理:集中管理应用角色和权限,通过 ISVA 来实现访问控制。
- 审计与日志管理:自动记录身份认证和授权事件,支持外部日志导出。
- 多租户支持:在 ISVA 中为不同租户提供独立的身份管理和访问控制。
通过集成 ISVA,你可以专注于应用的核心功能,提升安全性,并且符合合规要求。
相关文章:
探讨使用ISVA代替“Open Liberty使用指南及微服务开发示例”中日志审计功能
在Open Liberty使用指南及开发示例(四)一文开始日志审计功能占有了一定的开发工作量,那么是否可以使用IBM Security Verify Access(ISVA)代替以节省开发工作?如果可行,那么以后各类应用的日志审…...
log4j2日志配置文件
log4j2配置文件每个项目都会用到,记录一个比较好用的配置文件,方便以后使用时调取,日志输出级别为debug,也可以修改 <?xml version"1.0" encoding"UTF-8"?> <Configuration monitorInterval"180" packages""><prope…...
python专栏导读
由于本人非python工程师,是在自学python,所以本专栏的内容会显得很基础,甚至有些内容在python工程师看来实在太过于简单,在此清楚嘲笑,因为毕竟每个人都是从不懂、从基础开始的。 本篇作为导读和目录形式存在…...
Ollama与Vllm使用对比与优劣
Ollama和vLLM是两个用于优化大型语言模型(LLM)推理的框架,它们在性能、资源利用率、部署复杂性等方面各有优劣。以下是对这两个框架的详细介绍: 1. Ollama Ollama是一个轻量级且易于使用的框架,旨在简化大型语言模型…...
K8s之存储卷
一、容忍、crodon和drain 1.容忍 即使节点上有污点,依然可以部署pod。 字段:tolerations 实例 当node01上有标签test11,污点类型为NoSchedule,而node02没有标签和污点,此时pod可以在node01 node02上都部署,…...
luoguP8764 [蓝桥杯 2021 国 BC] 二进制问题
luogu题目传送门 题目描述 小蓝最近在学习二进制。他想知道 1 到 N 中有多少个数满足其二进制表示中恰好有 K 个 1。你能帮助他吗? 输入格式 输入一行包含两个整数 N 和 K。 输出格式 输出一个整数表示答案。 输入输出样例 输入 #1 7 2 输出 #1 3 说明/提示 对于…...
本地部署DeepSeek后的调用与删除全攻略
在本地成功部署DeepSeek模型后,如何高效调用它发挥其强大功能,以及在不需要时妥善删除,是很多用户关注的重点。我也在后台接到了很多粉丝的留言,询问 DeepSeek 本地部署之后的一些调用和删除的问题,于是我在网上找了现…...
Qt Designer菜鸟使用教程(实现一个本地英文翻译软件)
1 安装Qt Designer 安装这个包的时候会自带安装 Qt Designer, 安装目录为python的安装根目录的 Lib/site-packages/qt5_applications/Qt/bin 目录下。 pip install pyqt5-tools2 新建窗体 2.1 新建主窗体 创建之后如下图: 设置主窗口大小: 设置窗…...
C++ 洗牌函数std::shuffle的用法
目录 1.简介 2.工作原理 3.std::shuffle 与 std::random_shuffle 的区别 4.rand 和 srand 5.std::shuffle 的使用方法 6.随机数生成器和分布器 7.注意事项 1.简介 std::shuffle 是 C 标准库中用于对序列进行随机重排(洗牌)的一种算法。它可以将容…...
MySQL InnoDB引擎 MVCC
MVCC(Multi-Version Concurrency Control)即多版本并发控制,是 MySQL 的 InnoDB 存储引擎实现并发控制的一种重要技术。它在很多情况下避免了加锁操作,从而提高了数据库的并发性能。 一、原理 MVCC 的核心思想是通过保存数据在某…...
【Elasticsearch】simple_query_string
Elasticsearch 的simple_query_string查询是一种灵活且容错性较强的查询方式,它允许用户通过简单的语法构造查询字符串,以实现对文档的搜索。以下是关于simple_query_string查询的详细说明: 1.基本概念 simple_query_string查询是一种基于字…...
数据结构 04
4. 栈 4.2. 链式栈 4.2.1. 特性 逻辑结构:线性结构 存储结构:链式存储结构 操作:创建,入栈,出栈,清空,获取 4.2.2. 代码实现 头文件 LinkStack.h #ifndef __LINKSTACK_H__ #define __LINKST…...
Java并发中的上下文切换、死锁、资源限制
在Java并发编程中,上下文切换、死锁和资源限制是开发者经常需要面对的问题。这些问题不仅会影响程序的性能,还可能导致程序无法正常运行。本文将深入探讨这些问题的原理、影响以及如何在实际开发中避免或解决它们。 目录 1. 上下文切换(Con…...
DeepSeek教unity------MessagePack-01
MessagePack是C# 的极速 MessagePack 序列化器。它比 MsgPack-Cli 快 10 倍,并且性能超过其他 C# 序列化器。MessagePack for C# 还内置支持 LZ4 压缩——一种极其快速的压缩算法。性能在诸如游戏、分布式计算、微服务或数据缓存等应用中尤为重要。 这个库通过 NuGe…...
【大语言模型】最新ChatGPT、DeepSeek等大语言模型助力高效办公、论文与项目撰写、数据分析、机器学习与深度学习建模等科研应用
ChatGPT、DeepSeek等大语言模型助力科研应用 随着人工智能技术的快速发展,大语言模型如ChatGPT和DeepSeek在科研领域的应用正在为科研人员提供强大的支持。这些模型通过深度学习和大规模语料库训练,能够帮助科研人员高效地筛选文献、生成论文内容、进行数…...
泰勒公式推导以及常用展开式与近似计算
泰勒公式的基本思想是通过函数在某点的导数来逐渐构建一个多项式,该多项式能够近似函数在该点附近的值。我们通过一次次引入导数来改进近似,从而得到一个无限级数的展开。 准备工作:函数的定义和导数 假设我们有一个函数 f ( x ) f(x) f(x)…...
深入解析A2DP v1.4协议:蓝牙高质量音频传输的技术与实现
1. A2DP概述 A2DP(Advanced Audio Distribution Profile)是一种高质量音频流媒体协议,旨在实现高质量音频内容的分发,通常用于通过蓝牙设备传输音频数据,例如将音乐从便携式播放器传输到耳机或扬声器。与传统的蓝牙语…...
STM32引脚VBAT和RTC的关系
一、RTC简介 1、RTC (Real Time Clock):实时时钟。RTC是个独立的定时器。RTC模块拥有一个连续计数的计数器,在相应的软件配置下,可以提供时钟日历的功能。修改计数器的值可以重新设置当前时间和日期。RTC还包含用于管理低功耗模式的自动唤醒单…...
untiy 3d 混合动画
1.创建动画控制器 挂在到人物模型上 效果 20250213_170924...
django配置跨域
1、第一种 from django.views.decorators.csrf import csrf_exemptcsrf_exempt第二种 安装 pip install django-cors-headers在配置文件settings.py进入 INSTALLED_APPS [..."corsheaders", # 添加 ]MIDDLEWARE [corsheaders.middleware.CorsMiddleware, # 添加…...
【设计模式】【行为型模式】迭代器模式(Iterator)
👋hi,我不是一名外包公司的员工,也不会偷吃茶水间的零食,我的梦想是能写高端CRUD 🔥 2025本人正在沉淀中… 博客更新速度 👍 欢迎点赞、收藏、关注,跟上我的更新节奏 🎵 当你的天空突…...
前端面试题目---页面抖动的原因、如何避免、如何解决
前端页面抖动是一个常见且影响用户体验的问题,下面将从抖动发生的场景、解决办法以及预防措施三个方面进行详细阐述。 页面抖动发生的场景 1. 元素尺寸动态变化 图片加载:当页面中图片的宽高没有预先设定,在图片加载完成后,其实…...
DeepSeek 突然来袭,AI 大模型变革的危机与转机藏在哪?
随着人工智能技术的飞速发展,大模型领域不断涌现出具有创新性的成果。DeepSeek 的横空出世,为 AI 大模型领域带来了新的变革浪潮。本文将深入探讨 DeepSeek 出现后 AI 大模型面临的危机与转机。 冲冲冲!!! 目录 一、…...
将Sqlite3数据库挂在内存上处理
创作灵感:最近把小学生的口算题从2位数改到3位数,100以内四则运算练习(千纬数学)再次更新,选取难题-CSDN博客要不断刷题目,以前100以内的加减乘除也是这样刷出来的,代码如下: impor…...
#用于跟踪和反映数据源对象的变化--useMagical
import { cloneDeep } from lodash-es import { reactive, ref, watchEffect } from vue /*** 神奇函数* param source 数据源,* param initKey 固定需要返回的属性* description 收集数据源中修改的属性,并返回* version 1.0 仅支持对象* author sufei* return { source, resu…...
基于微信小程序的场地预约设计与实现
第3章 系统设计 3.1系统设计目标 本系统的实现可以帮助体育馆场地信息的管理。帮助管理员对注册用户管理以及用户预约管理。同时可以帮助用户进行场地预约。本系统可以实现用户足不出户预约到需要的场地,为用户提供场地信息了解的平台。 3.2系统功能结构图 本系统的…...
1446. 连续字符 简单
1446. 连续字符https://leetcode.cn/problems/consecutive-characters/ 给你一个字符串 s ,字符串的「能量」定义为:只包含一种字符的最长非空子字符串的长度。 请你返回字符串 s 的 能量。 示例 1: 输入:s "leetcode"…...
多张图片合成PDF
昨天接了一个家教,在网上搜集了一些图片格式的素材,但想要发给学生家长打印,都是图片格式可能不太方便,就想着合成pdf文件之后再发给家长。 试用了“samll*”一次,就需要充值vip了,所以就用python自己写了…...
【办公】钉钉修改默认存储位置,释放C盘空间
Step1: 右击钉钉图标选择设置 Step2: 通用里面找到文件保存位置,修改文件目录: 最新版本钉钉界面: 设置完成后按提示重启即可!...
VLLM历次会议(2024.7)
支持LLama3.1: 量化: vllm git下的子项目:llm-compressor CPU offloading 允许跑更大的模型;会变慢些;在CPU-GPU之间有NVLink的机器上,变慢的幅度小。 新增对Medusa(用1个Head并行推出好几个…...
进程等待与进程替换
目录 一、进程等待 1.1 为什么要等待子进程? 1.2 等待的两种方式 1.2.1 wait函数 1.2.2 waitpid函数 1.3 获取子进程的退出状态 1.4 示例代码 阻塞式等待(同步) 非阻塞等待(异步) 二、进程替换 2.1 什么是进…...
C# CultureInfo 地区影响字符串
问题 线上遇到有玩家资源加载异常,发现资源路径出现异常字符: 发现是土耳其语下字符串转小写不符合预期: "I".ToLower() -> ı 解决方案 String.ToLower 改成 String.ToLowerInvariant 全局修改禁用文化差异:ht…...
走进 Tcl 语言:历史、特性与应用
亲爱的小伙伴们😘,在求知的漫漫旅途中,若你对深度学习的奥秘、Java 与 Python 的奇妙世界,亦或是读研论文的撰写攻略有所探寻🧐,那不妨给我一个小小的关注吧🥰。我会精心筹备,在未来…...
CNN-LSSVM卷积神经网络最小二乘支持向量机多变量多步预测,光伏功率预测
代码地址:CNN-LSSVM卷积神经网络最小二乘支持向量机多变量多步预测,光伏功率预测 CNN-LSSVM卷积神经网络最小二乘支持向量机多变量多步预测,光伏功率预测 一、引言 1、研究背景和意义 光伏发电作为可再生能源的重要组成部分,近…...
使用MaxKB及deepseek搭建本地AI知识库
序 本文主要研究一下如何MaxKB及deepseek搭建本地AI知识库 步骤 拉取MaxKB镜像 docker pull cr2.fit2cloud.com/1panel/maxkb如果拉取不下来就用docker.1ms.run/1panel/maxkb 启动MaxKB docker run -d --namemaxkb --restartalways -p 8080:8080 \ -v ~/.maxkb:/var/lib/p…...
一文通俗理解为什么需要泛型以及泛型的使用
为什么需要泛型? public static void main(String[] args) {ArrayList list new ArrayList();// 由于集合没有做任何限定,任何类型都可以给其中存放list.add("abc");list.add("def");list.add(5);Iterator it list.iterator();wh…...
凸包算法—— cad c#二次开发
效果如下: 代码如下: using IfoxDemo; //[assembly: CommandClass(typeof(IFoxDemo.凸包class))]//只允许此类快捷键命令 namespace IFoxDemo {public class 凸包class{public static class 凸包助手{/// <summary>/// 计算点集的凸包并返回多段线…...
Eclipse JSP/Servlet 深入解析
Eclipse JSP/Servlet 深入解析 引言 随着互联网的快速发展,Java Web开发技术逐渐成为企业级应用开发的主流。在Java Web开发中,JSP(JavaServer Pages)和Servlet是两个核心组件,它们共同构成了Java Web应用程序的基础。本文将深入解析Eclipse平台下的JSP/Servlet技术,帮…...
grep如何排除多个目录?
在使用 grep 进行文本搜索时,有时候需要排除多个目录,避免在这些目录下进行搜索。下面介绍几种不同的实现方式。 目录 1.使用 -r 和 --exclude-dir 选项(GNU grep) 2.使用扩展正则表达式和 -P 选项(GNU grep&#x…...
linux ollama deepseek等大语言模型的model文件的存储目录
linux ollama deepseek等大语言模型的model文件的存储目录 一、用ollama serve启动的,模型数据存放在: /usr/share/ollama/.ollama/models二、如果在自启动文件中指定了工作目录,则在工作目录下的.ollama/models 1.自启动服务 /etc/system…...
React进阶之React核心源码解析(二)
React核心源码解析 diff单一节点比较diff多节点比较diff两轮遍历比较第一轮比较第二轮比较 Update 状态更新Concurrent Mode diff 一共两个阶段 render:内存中的更新,主要是通过递归的过程,来将react变化的部分,在内存中找到哪些…...
八、OSG学习笔记-
前一章节: 七、OSG学习笔记-碰撞检测-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/145558132?spm1001.2014.3001.5501 一、了解OSG图元加载显示流程 本章节代码: OsgStudy/wids CuiQingCheng/OsgStudy - 码云 - 开源中国https:…...
Python实现随机森林(Random Forest)算法
随机森林(Random Forest)是一种集成学习方法,通过构建多个决策树并结合它们的预测结果来提高模型的准确性和稳定性。下面是一个使用Python实现随机森林算法的示例。我们将使用scikit-learn库,它提供了方便的接口来实现随机森林。 …...
平方数列与立方数列求和的数学推导
先上结论: 平方数列求和公式为: S 2 ( n ) n ( n 1 ) ( 2 n 1 ) 6 S_2(n) \frac{n(n1)(2n1)}{6} S2(n)6n(n1)(2n1) 立方数列求和公式为: S 3 ( n ) ( n ( n 1 ) 2 ) 2 S_3(n) \left( \frac{n(n1)}{2} \right)^2 S3(n)(2n(n1)…...
new和malloc的区别
new malloc流程 new new流程 调用operator new 分配内存:在free store 生成对象 free store 可能在 堆 / 自定义的地方 可以认为虚拟内存到物理内存的映射关系早已完成 若分配内存失败(内存空间不够),抛出std::bad_alloc 异常…...
JVM——垃圾回收算法
目录 垃圾回收算法 评价标准: 标记-清除算法: 复制算法: 标记-整理算法: 分代GC: arthas查看分代之后的内存情况: 垃圾回收算法 java是如何实现垃圾回收的呢?简单来说,垃圾回…...
算法日记16:SC68 联通块问题(并查集)
一、题目: 二、题解: 1、看到求联通块问题,我们可以考虑使用DFS/并查集(在这里我们仅介绍并查集) 2、什么是并查集? 2.1:初始化:对于每一个点,我们都对其进行初始化操作pre[i]i pre[i]表示i的…...
Unity-Mirror网络框架-从入门到精通之Pong示例
文章目录 前言示例介绍NetworkManagerPongBallPlayer总结前言 在现代游戏开发中,网络功能日益成为提升游戏体验的关键组成部分。本系列文章将为读者提供对Mirror网络框架的深入了解,涵盖从基础到高级的多个主题。Mirror是一个用于Unity的开源网络框架,专为多人游戏开发设计…...
c++ 多线程知识汇总
一、std::thread std::thread 是 C11 引入的标准库中的线程类,用于创建和管理线程 1. 带参数的构造函数 template <class F, class... Args> std::thread::thread(F&& f, Args&&... args);F&& f:线程要执行的函数&…...
探索 Text-to-SQL 技术:从自然语言到数据库查询的桥梁
亲爱的小伙伴们😘,在求知的漫漫旅途中,若你对深度学习的奥秘、Java 与 Python 的奇妙世界,亦或是读研论文的撰写攻略有所探寻🧐,那不妨给我一个小小的关注吧🥰。我会精心筹备,在未来…...