系统概述

项目结构

Al_Compny系统采用前后端分离的全栈架构,项目根目录下包含两个主要子目录:Al_Compny_backend(后端服务)和Al_Compny_frontend(前端应用)。

在这里插入图片描述

核心功能模块

Al_Compny系统是一个面向"一人公司"场景的企业智能管理平台,集成了用户管理、角色权限控制、菜单系统和智能HR助手等核心功能模块。系统旨在为个人创业者提供全方位的管理支持,包括简历优化、战略分析、人事文章生成和财务决策辅助。

用户管理模块

用户管理模块是系统的基础,负责用户账户的创建、认证和信息维护。该模块定义了系统用户的数据模型和相关API接口。

角色与权限模块

角色与权限模块实现了基于角色的访问控制(RBAC)机制,通过角色定义权限,并将角色分配给用户。系统还包含菜单模块,用于定义系统功能菜单和权限关联。

智能HR助手模块

智能HR助手模块是系统的核心智能功能,提供简历助手、战略分析助手和人事部助手等多种AI服务,支持文件上传和对话式交互

系统架构与技术栈

Al_Compny系统采用现代化的全栈前后端分离架构,后端基于Python的Django框架,前端基于Vue 3框架,通过RESTful API进行通信。

技术栈组成

后端技术栈:

  • 框架: Django + Django REST framework
  • 数据库: MySQL
  • 认证: JWT (JSON Web Token)
  • 部署: WSGI

前端技术栈:

  • 框架: Vue 3 + Vite

  • 状态管理: Pinia

  • UI组件库: Element Plus

  • 路由: Vue Router

  • HTTP客户端: Axios

    前后端协同工作机制

    在这里插入图片描述

    系统采用标准的前后端分离模式,前端负责用户界面展示和交互,后端提供数据API服务。用户通过浏览器访问前端应用,前端通过Axios库向后端Django服务发起HTTP请求,后端处理请求并返回JSON格式的数据。

    用户与权限管理

    用户认证流程

    系统采用JWT(JSON Web Token)进行用户认证,实现了标准的注册和登录流程。

在这里插入图片描述

角色权限体系

系统通过角色管理实现权限控制,不同角色拥有不同的系统访问权限。前端路由配置中明确标识了各页面的权限要求。

智能HR助手功能

功能概述

智能HR助手模块为"一人公司"场景提供全方位的智能支持,主要包括:

  • 简历助手: 帮助优化个人简历,提升求职竞争力
  • 战略分析助手: 提供商业战略分析和决策支持
  • 人事部助手: 生成人事相关文档和文章
  • 财务决策支持: 提供财务规划和决策建议

数据模型设计

智能HR助手基于对话会话模型,支持多轮对话和文件上传功能。

业务逻辑流程

当用户发送消息时,系统创建用户消息记录,并调用AI服务生成回复。

在这里插入图片描述

API接口设计

RESTful API路由

系统采用RESTful风格的API设计,通过Django的URL路由机制进行端点管理。

主要API端点

模块端点HTTP方法功能
用户/user/register/POST用户注册
用户/user/login/POST用户登录
HR助手/hrchat/GET, POST对话会话管理
HR助手/hrchat/{id}/messages/GET获取消息列表
HR助手/hrchat/{id}/messages/send/POST发送新消息

前后端交互流程

JWT认证流程

系统采用JWT进行无状态认证,确保API调用的安全性。

在这里插入图片描述

Pinia状态管理

前端使用Pinia进行全局状态管理,集中管理用户认证状态。

在这里插入图片描述

数据库设计

数据库配置

系统使用MySQL作为主要数据库,配置信息位于Django设置文件中。

在这里插入图片描述

数据表结构

系统主要数据表包括:

  • sys_user: 系统用户表
  • chat_session: 对话会话表
  • chat_message: 对话消息表

系统上下文图

在这里插入图片描述

数据表结构

系统主要数据表包括:

  • sys_user: 系统用户表
  • chat_session: 对话会话表
  • chat_message: 对话消息表

前端架构

项目结构

Al_Compny项目包含前后端两个主要部分。前端位于Al_Compny_frontend目录,采用Vue 3 + TypeScript + Pinia + Vue Router的现代前端技术栈。后端为Django项目,提供RESTful API服务。

前端核心结构如下:

  • src/main.ts:应用入口文件
  • src/App.vue:根组件
  • src/router/index.ts:路由配置
  • src/stores/:Pinia状态管理模块
  • src/utils/request.ts:Axios封装
  • src/views/:页面级组件
  • src/components/:可复用UI组件
  • src/types/:TypeScript类型定义

在这里插入图片描述

核心组件

本项目采用MVVM架构模式,通过组件化设计实现高内聚低耦合。核心组件包括:

  • 视图层(View).vue文件,负责UI渲染与用户交互
  • 模型层(Model):Pinia Store,管理应用状态
  • 视图模型(ViewModel):Vue组件的<script setup>部分,连接视图与模型

数据流遵循单向数据流原则:用户操作触发事件 → 组件调用Store方法 → Store调用API → 更新状态 → 视图响应式更新。

应用入口与初始化

main.ts是Vue应用的启动入口,负责创建Vue实例并挂载核心插件。

import { createApp } from 'vue'
import { createPinia } from 'pinia'
import ElementPlus from 'element-plus'
import App from './App.vue'
import router from './router'const app = createApp(App)
const pinia = createPinia()app.use(pinia)
app.use(router)
app.use(ElementPlus)
app.mount('#app')

初始化流程:

  1. 创建Vue应用实例
  2. 创建Pinia状态管理实例
  3. 依次注册Pinia、Vue Router、ElementPlus插件
  4. 挂载到DOM元素#app

此设计实现了关注点分离,确保应用在启动时完成所有依赖注入。

根组件与布局

App.vue作为根组件,采用<script setup>语法糖,结构简洁。

<template><router-view />
</template>

该组件仅包含一个<router-view>占位符,用于动态渲染当前路由匹配的视图组件。这种设计实现了路由驱动的布局机制——不同的URL路径会加载不同的页面组件(如Login.vue、Dashboard.vue等),而根组件保持不变。

路由系统

Vue Router在index.ts中定义了完整的路由表,采用嵌套路由实现模块化管理。

路由配置分析

routes: [{path: '/home',name: 'home',meta: {requiresAuth: true},component: () => import('@/views/Home.vue'),redirect: '/home/dashboard',children: [ /* 子路由 */ ]},{path: '/login',name: 'login',meta: {requiresAuth: false},component: () => import('@/views/Login.vue'),}
]

关键特性:

  • 路由元信息meta.requiresAuth标记是否需要认证
  • 懒加载:使用import()动态导入组件,实现代码分割
  • 嵌套路由/home下包含多个子页面(仪表盘、用户管理等)

路由守卫

router.beforeEach(async (to, from, next) => {const userStore = useUserStore()const savedToken = localStorage.getItem('token')if (to.meta.requiresAuth && !savedToken) {next({ path: '/login', query: { redirect: to.fullPath } })} else {next()}
})

全局前置守卫实现:

  1. 检查目标路由是否需要认证
  2. 若未登录且访问受保护路由,则重定向至登录页
  3. 登录后可自动跳转回原始目标页面

在这里插入图片描述

状态管理

Pinia在user.ts中实现了用户状态的集中管理,遵循单一状态树原则。

状态定义

const user = ref<User | null>(null)
const token = ref<string | null>(localStorage.getItem('token'))
const isLoggedIn = computed(() => !!token.value)
  • user:存储用户信息对象
  • token:JWT令牌,初始化时从localStorage读取
  • isLoggedIn:计算属性,反映登录状态

核心方法

登录方法
const login = async (loginForm: LoginForm) => {const response = await request.post('/user/login/', loginForm)if (apiResponse.code === 200) {token.value = jwtTokenuser.value = userInfolocalStorage.setItem('token', jwtToken)return { success: true }}
}
登出方法
const logout = () => {localStorage.removeItem('token')user.value = nulltoken.value = nullrouter.push('/login')
}
自动恢复状态
// 刷新页面时从 localStorage 恢复 token
const savedToken = localStorage.getItem('token')
if (savedToken && !userStore.token) {userStore.token = savedToken
}

状态管理实现了:

  • 持久化:token存储在localStorage
  • 响应式:使用refcomputed实现自动更新
  • 集中控制:所有用户相关操作通过Store统一处理

在这里插入图片描述

API请求封装

request.ts对Axios进行了封装,提供统一的HTTP请求接口。

封装策略

const httpService = axios.create({baseURL: "http://127.0.0.1:8000/",timeout: 3000
})
  • 基础配置:设置API基础URL和超时时间
  • 请求拦截器:自动添加认证头
  • 响应拦截器:统一处理响应和错误

请求拦截器

httpService.interceptors.request.use(config => {config.headers.AUTHORIZATION = localStorage.getItem('token') || ''return config
})

确保每次请求都携带JWT令牌。

响应处理

export function get<T>(url, params) {return new Promise((resolve, reject) => {httpService({ url, method: 'get', params }).then(response => resolve(response)).catch(error => reject(error))})
}

提供getpostdelfileUpload等便捷方法,支持泛型类型推断。

本节来源

  • [request.ts](file:///E:/Al_Compny/Al_Compny_frontend/src/utils/request.ts#L1-L153)

组件通信与数据流

系统通过"事件驱动 + 状态管理"模式实现组件间通信。

数据流示例:登录流程

关键通信机制:

  1. 组件 → Store:通过useUserStore()获取Store实例并调用方法
  2. Store → API:Store内部调用request模块发起HTTP请求
  3. API → Store:更新响应数据到状态
  4. Store → 组件:组件通过computed或直接引用响应式数据自动更新视图

类型安全

通过types/user.ts定义接口,确保类型安全:

export interface User {id: numberusername: stringemail?: string
}export interface ApiResponse<T> {code: numbermessage: stringdata?: T
}

本节来源

  • [Login.vue](file:///E:/Al_Compny/Al_Compny_frontend/src/views/Login.vue#L1-L219)
  • [user.ts](file:///E:/Al_Compny/Al_Compny_frontend/src/stores/user.ts#L1-L185)
  • [request.ts](file:///E:/Al_Compny/Al_Compny_frontend/src/utils/request.ts#L1-L153)
  • [user.ts](file:///E:/Al_Compny/Al_Compny_frontend/src/types/user.ts#L1-L26)

登录流程分析

以登录功能为例,展示完整的工作流程:

  1. 用户交互:在Login.vue输入用户名密码
  2. 表单验证:Element Plus表单规则验证输入
  3. 调用StorehandleLogin()调用userStore.login()
  4. 发起请求:Store通过request.post()发送登录请求
  5. 身份验证:后端验证凭证,返回JWT token
  6. 状态更新:Store更新tokenuser状态
  7. 持久化:token保存到localStorage
  8. 路由跳转:导航到首页
  9. 守卫验证:路由守卫检查token有效性
  10. 页面渲染:加载Dashboard组件

此流程体现了MVVM模式的优势:视图只关注用户交互,业务逻辑和状态管理完全解耦。

本节来源

  • [Login.vue](file:///E:/Al_Compny/Al_Compny_frontend/src/views/Login.vue#L1-L219)
  • [user.ts](file:///E:/Al_Compny/Al_Compny_frontend/src/stores/user.ts#L39-L77)
  • [index.ts](file:///E:/Al_Compny/Al_Compny_frontend/src/router/index.ts#L50-L100)

结论

Al_Compny前端架构采用现代化的Vue 3技术栈,具有以下特点:

优势

  • 清晰的分层:MVVM模式实现关注点分离
  • 高效的通信:Pinia提供集中式状态管理
  • 安全的路由:路由守卫实现权限控制
  • 统一的API:Axios封装简化网络请求
  • 响应式更新:Vue 3的响应式系统确保UI同步

改进建议

  1. 错误处理:增强全局错误处理机制
  2. 类型完善:补充更多接口类型定义
  3. 性能优化:添加API响应缓存
  4. 安全性:考虑使用httpOnly cookie存储token
  5. 测试覆盖:增加单元测试和E2E测试

整体架构设计合理,具备良好的可维护性和扩展性,为企业的数字化管理平台提供了坚实的技术基础。

后端架构

项目结构

Al_Compny后端项目采用Django框架,遵循MVC设计模式,整体结构清晰,模块化程度高。项目主要由以下几个核心部分组成:

  • 主配置目录 (Al_Compny_backend/Al_Compny_backend):包含Django项目的核心配置文件(settings.py, urls.py, asgi.py, wsgi.py)。
  • 应用模块:包括user(用户管理)、role(角色管理)、menu(菜单权限)、hrchat(HR对话)等独立应用,每个应用都遵循Django的标准结构(models.py, views.py, urls.py等)。
  • 管理脚本manage.py是Django项目的命令行工具入口。

这种结构体现了高内聚、低耦合的设计原则,便于维护和扩展。

在这里插入图片描述

核心配置分析

Django项目的主配置文件settings.py是整个应用的“大脑”,它定义了项目运行所需的所有全局设置。

服务器接口配置

asgi.pywsgi.py是Django与Web服务器通信的接口。

  • ASGI (Asynchronous Server Gateway Interface)asgi.py文件配置了异步应用接口,允许Django处理WebSocket、HTTP/2等长连接或异步请求,为未来的实时功能(如聊天)提供支持。
  • WSGI (Web Server Gateway Interface)wsgi.py文件配置了传统的同步应用接口,用于处理标准的HTTP请求。大多数Web服务器(如Gunicorn, uWSGI)通过此接口与Django应用通信。
# asgi.py 和 wsgi.py 的核心代码
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'Al_Compny_backend.settings')
application = get_asgi_application() # 或 get_wsgi_application()

数据库连接配置

项目配置了MySQL数据库,替代了默认的SQLite,以支持更复杂的数据操作和更高的并发性能。

# settings.py 中的 DATABASES 配置
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'db_al_compnyManage','USER': 'root','PASSWORD': '20021230','HOST': 'localhost','PORT': '3306'}
}

JWT认证设置

项目集成了djangorestframework-simplejwt库来实现基于Token的认证。

# settings.py 中的 JWT_AUTH 配置
JWT_AUTH = {'JWT_EXPIRATION_DELTA': datetime.timedelta(days=1), # Token有效期为1天
}
REST_FRAMEWORK = {'DEFAULT_AUTHENTICATION_CLASSES': ['rest_framework_simplejwt.authentication.JWTAuthentication',]
}

CORS策略

为了支持前端(Al_Compny_frontend)的跨域访问,项目配置了django-cors-headers中间件。

# settings.py 中的 CORS 配置
CORS_ORIGIN_ALLOW_ALL = True # 允许所有来源
CORS_ALLOW_CREDENTIALS = True # 允许携带凭证(如Cookie)
CORS_ALLOW_METHODS = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'] # 允许的HTTP方法

应用注册

INSTALLED_APPS列表注册了所有启用的应用,包括Django内置应用和自定义应用。

INSTALLED_APPS = ['django.contrib.auth','django.contrib.contenttypes',# ... 其他内置应用'user', # 用户管理'role', # 角色管理'menu', # 菜单权限'hrchat', # HR对话'rest_framework', # Django REST framework'rest_framework_jwt', # JWT认证支持"corsheaders", # CORS支持
]

本节来源

  • [settings.py](file://al_compny_backend/Al_Compny_backend/settings.py#L1-L170)
  • [asgi.py](file://al_compny_backend/Al_Compny_backend/asgi.py#L1-L17)
  • [wsgi.py](file://al_compny_backend/Al_Compny_backend/wsgi.py#L1-L16)

路由分发体系

项目采用分层的URL路由分发机制,实现了清晰的API路径管理。

根路由 (Root URLs)

Al_Compny_backend/urls.py作为根路由,负责将不同前缀的请求分发到对应的应用。

# Al_Compny_backend/urls.py
urlpatterns = [path('user/', include('user.urls')),  # 所有 /user/ 开头的请求交给 user 应用处理path('role/', include('role.urls')),  # 所有 /role/ 开头的请求交给 role 应用处理path('menu/', include('menu.urls')),  # 所有 /menu/ 开头的请求交给 menu 应用处理
]

应用路由 (App URLs)

每个应用都有自己的urls.py文件,定义其内部的API端点。

user应用为例:

# user/urls.py
urlpatterns = [path('register/', RegisterView.as_view(), name='register'), # POST /user/register/path('login/', LoginView.as_view(), name='login')          # POST /user/login/
]

这种分发模式使得API路径清晰、易于维护,并且各应用的路由相互隔离。

在这里插入图片描述

数据模型设计

数据模型定义了数据库的表结构和对象关系。

SysUser 模型

user/models.py中的SysUser类定义了系统用户的核心信息。

class SysUser(models.Model):id = models.AutoField(primary_key=True)username = models.CharField(max_length=100, unique=True) # 用户名,唯一password = models.CharField(max_length=100) # 加密后的密码avatar = models.CharField(max_length=255, null=True) # 头像email = models.CharField(max_length=100, null=True) # 邮箱phonenumber = models.CharField(max_length=11, null=True) # 手机号status = models.IntegerField(null=True) # 状态 (0正常, 1停用)# ... 其他字段class Meta:db_table = "sys_user" # 对应数据库表名

ChatSession 与 ChatMessage 模型

hrchat/models.py中定义了聊天会话和消息的模型,体现了典型的“一对多”关系。

class ChatSession(models.Model):title = models.CharField(max_length=100, blank=True) # 会话标题created_at = models.DateTimeField(auto_now_add=True) # 创建时间class ChatMessage(models.Model):ROLE_CHOICES = [("user", "User"), ("assistant", "Assistant")]session = models.ForeignKey(ChatSession, on_delete=models.CASCADE, related_name="messages")role = models.CharField(max_length=10, choices=ROLE_CHOICES) # 消息角色content = models.TextField() # 消息内容file = models.CharField(max_length=255, blank=True, null=True) # 附件created_at = models.DateTimeField(auto_now_add=True) # 创建时间

关系设计说明

  • ChatMessage通过ForeignKey字段session关联到ChatSession
  • on_delete=models.CASCADE表示当会话被删除时,其所有消息也会被级联删除。
  • related_name="messages"允许通过session.messages.all()反向查询该会话的所有消息。

在这里插入图片描述

API实现与JWT认证

API逻辑主要通过Django REST framework (DRF) 的类视图(APIView)实现。

用户注册 (RegisterView)

user/views.py中的RegisterView处理用户注册请求。

  1. 接收数据:从request.data获取username, password等。
  2. 验证数据:检查用户名和密码是否为空,以及用户名是否已存在。
  3. 创建用户:使用make_password()对明文密码进行哈希加密,然后创建SysUser实例并保存到数据库。

用户登录与JWT令牌生成 (LoginView)

LoginView是JWT认证流程的核心。

  1. 接收凭证:获取usernamepassword

  2. 验证凭证:查询数据库找到用户,并使用check_password()验证密码哈希。

  3. 生成令牌

    • 创建一个RefreshToken对象(refresh = RefreshToken.for_user(user))。
    • 从刷新令牌中提取访问令牌access_token = str(refresh.access_token))。
  4. 返回响应:将access_token和用户基本信息返回给前端。

在这里插入图片描述

序列化器作用

序列化器(Serializers)是DRF的核心组件,负责在Python对象(如Django模型实例)和JSON数据之间进行转换。

数据序列化 (Python -> JSON)

当API需要返回数据时(如获取聊天记录),序列化器将数据库查询结果(QuerySet)或模型实例转换为前端可读的JSON格式。

# hrchat/serializers.py
class ChatMessageSerializer(serializers.ModelSerializer):class Meta:model = ChatMessagefields = ["id", "role", "content", "file", "created_at"] # 指定需要序列化的字段

MessageList视图中,get_queryset()返回ChatMessage对象列表,DRF会自动使用ChatMessageSerializer将它们序列化为JSON数组。

数据反序列化 (JSON -> Python)

当API接收数据时(如创建新消息),序列化器验证传入的JSON数据,并将其转换为Python字典,以便创建或更新模型实例。

# 在 MessageCreate 视图中
def perform_create(self, serializer):session = get_object_or_404(ChatSession, pk=self.kwargs["pk"])# serializer.validated_data 包含已验证的JSON数据message = serializer.save(session=session, role="user") # 创建并保存 ChatMessage 实例

本节来源

  • [hrchat/serializers.py](file://al_compny_backend/hrchat/serializers.py#L1-L13)
  • [hrchat/views.py](file://al_compny_backend/hrchat/views.py#L1-L57)

权限控制机制

项目遵循RESTful设计原则,API设计清晰、状态无关。

RESTful设计体现

  • 资源导向:API端点代表资源(如/user/, /chat/)。
  • 统一接口:使用标准的HTTP方法(GET, POST, PUT, DELETE)对资源进行操作。
  • 无状态:服务器不保存客户端状态,每次请求都包含所有必要信息(通过JWT Token)。

权限控制应用

虽然在当前分析的userhrchat应用的视图中未显式设置permission_classes(如IsAuthenticated),但权限控制主要在前端路由API调用层面实现。

  • 前端路由守卫:前端代码src/router/index.ts中,路由元信息meta: {requiresAuth: true}标记了需要登录的页面(如人事助手、财务助手)。路由守卫会在跳转前检查是否存在有效的Token。
  • API调用:前端在调用需要认证的API时,会自动在请求头中添加Authorization: Bearer <access_token>。后端的JWTAuthentication类会自动验证此Token。

因此,权限控制是一个前后端协同的过程:前端负责阻止未登录用户访问特定页面,而后端通过JWT验证确保API调用的合法性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/921663.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/921663.shtml
英文地址,请注明出处:http://en.pswp.cn/news/921663.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenWrt | 在 PPP 拨号模式下启用 IPv6 功能

文章目录一、WAN 口配置二、LAN 口配置三、IPv6 测试本文将详细介绍 将光猫的网络模式改成桥接之后使用路由器拨号的上网方式的情况下&#xff0c;在 OpenWrt 上使用 PPP 拨号模式上网时&#xff0c;启用 IPv6 功能的方法。 一、WAN 口配置 首先&#xff0c;我们需要在 网络 …

Java如何实现一个安全的登录功能?

安全登录系统完整教程 &#x1f4cb; 目录 项目概述技术栈安全特性项目结构核心组件详解安全实现原理部署和运行安全最佳实践常见问题解答进阶扩展 &#x1f3af; 项目概述 这是一个基于Spring Boot和Spring Security的完整安全登录系统&#xff0c;专为初学者设计&#xff…

星辰诞愿——生日快乐

前言 今天这篇博客并非技术文章&#xff0c;而是庆祝我可爱的妹妹18岁生日以及介绍我半年以来的学习经历 祝生网站&#xff1a;星辰诞愿(用户列表里第一位就是我妹妹&#xff0c;希望大家能献上自己的祝福&#xff0c;能分享转发更好&#xff0c;我在此感谢大家。如果使用手机&…

基于STM32单片机的智能粮仓温湿度检测蓝牙手机APP设计

基于STM32单片机的智能粮仓温湿度检测蓝牙手机APP设计 1 系统功能介绍 本系统是一款基于STM32单片机的智能粮仓环境监测与控制装置&#xff0c;核心目标是通过传感器实时采集粮仓内的温度和湿度信息&#xff0c;并结合蓝牙通信模块将数据传输至手机端&#xff0c;实现对粮仓环境…

简单视频转换器 avi转mp4

直接上代码package com.example.videoconverter;import ws.schild.jave.Encoder; import ws.schild.jave.EncoderException; import ws.schild.jave.MultimediaObject; import ws.schild.jave.encode.AudioAttributes; import ws.schild.jave.encode.EncodingAttributes; impor…

Kafka 与 RocketMQ 核心概念与架构对比

Kafka 与 RocketMQ 核心概念与架构对比DeepSeek生成&#xff0c;便于记忆大概逻辑核心概念对比图 #mermaid-svg-dEbo1XpAjfzOjvUW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-dEbo1XpAjfzOjvUW .error-icon{fill…

30分钟深度压测cuBLAS:从FP64到INT8全精度性能剖析

在深度学习和高性能计算领域&#xff0c;GPU的矩阵运算性能是衡量系统算力的核心指标之一。NVIDIA的cuBLAS库作为CUDA平台上最基础的线性代数计算库&#xff0c;其性能表现直接影响着上层应用的运行效率。本文将详细介绍如何使用cublasmatmulbench工具对多GPU进行全面的性能基准…

超越模仿:探寻智能的本源

引言&#xff1a;超越模仿&#xff0c;探寻智能的本源近年来&#xff0c;以大语言模型&#xff08;LLM&#xff09;为代表的自然语言处理&#xff08;NLP&#xff09;技术&#xff0c;在模仿人类语言生成方面取得了令人瞩目的成就。从流畅的对话到精炼的文本摘要&#xff0c;机…

ROS/ROS2课程笔记00-大纲-25-26-1

大纲 AI版 以下是基于第四代高校课程核心理念设计的《ROS2机器人程序设计&#xff08;ROS2 Jazzy版&#xff09;》课程大纲&#xff0c;突出智能互联、跨学科融合、终身学习等特征&#xff0c;并融入技术赋能、生态重塑、素养导向等要求&#xff1a; 课程名称&#xff1a;ROS…

Linux内核进程管理子系统有什么第四十六回 —— 进程主结构详解(42)

接前一篇文章&#xff1a;Linux内核进程管理子系统有什么第四十五回 —— 进程主结构详解&#xff08;41&#xff09; 本文内容参考&#xff1a; Linux内核进程管理专题报告_linux rseq-CSDN博客 《趣谈Linux操作系统 核心原理篇&#xff1a;第三部分 进程管理》—— 刘超 《…

Linux网络连接不上?NetworkManager提示“device not managed“!

#操作系统 #Linux #NetworkManager适用环境kylin v10Centos 8Redhat 8一、故障现象在CentOS/RHEL(同样适用于kylin v10&#xff09;系统中&#xff0c;管理员执行 nmcli connection up ens160 命令尝试激活名为 ens160 的网络连接时&#xff0c;遇到以下错误&#xff1a;[roo…

【系统分析师】第2章-基础知识:数学与工程基础(核心总结)

更多内容请见: 备考系统分析师-专栏介绍和目录 文章目录 一、数学统计基础 1.1 概率论基础 1.2 数理统计基础 1.3 常用统计分析方法 二、图论应用 2.1 基本概念 2.2 核心算法与应用 三、预测与决策 3.1 预测方法 3.2 决策方法 四、数学建模 4.1 建模过程 4.2 常用模型类型 五、…

StrUtil.isBlank()

这段代码是一个条件判断&#xff0c;用于检查变量 shopJson 是否为空或空白&#xff0c;如果是&#xff0c;就直接返回 null。我们来逐句讲解&#xff1a;原始代码&#xff1a; if(StrUtil.isBlank(shopJson)) {// 3.存在&#xff0c;直接返回return null; }逐句解释&#xff1…

mysql 回表查询(二次查询,如何检查,如何规避)

h5打开以查看 “回表查询”通常发生在使用二级索引&#xff08;Secondary Index&#xff09;的查询中。当查询所需的数据列并不全部包含在二级索引中时&#xff0c;即使使用了索引&#xff0c;MySQL 也需要根据索引记录中的主键值&#xff0c;回到聚簇索引&#xff08;Cluster…

深度学习(二):神经元与神经网络

在人工智能的浪潮中&#xff0c;神经网络&#xff08;Neural Networks&#xff09;无疑是驱动核心技术的引擎&#xff0c;它赋予了计算机前所未有的学习和识别能力。而这一切的起点&#xff0c;是受到生物大脑中基本单元——神经元&#xff08;Neurons&#xff09;的深刻启发。…

JavaScript 行为型设计模式详解

1. 观察者模式1.1. 使用场景观察者模式用于对象间的一对多依赖关系&#xff0c;当一个对象的状态发生变化时&#xff0c;所有依赖于它的对象都能收到通知并自动更新。常用于事件处理、通知系统。在前端中&#xff0c;观察者模式用于实现事件监听、数据绑定等功能。1.2. 代码实现…

指令查找表LUT

本文整理自22. FlexSPI—读写外部SPI NorFlash — [野火]i.MX RT库开发实战指南——基于i.MXRT1052 文档 用作个人学习和分享 指令查找表LUT 访问FLASH存储器通常包含一些读写功能的的控制指令&#xff0c;主控设备可通过这些指令访问FLASH存储器。 为了适应这种需求&#…

uv使用指南

&#x1f680; Python 打包工具 UV 使用指南 UV 是一个用 Rust 编写的极速 Python 包管理器和解析器&#xff0c;旨在成为 pip、pip-tools、virtualenv 等工具的单一替代方案。 &#x1f4cb; 目录 核心概念与设计哲学安装与配置基础使用方法项目管理与工作流高级功能与技巧…

安卓学习 之 图片控件和图片按钮

今天学习的是ImageView 和 ImageButton这两个控件还是比较简单的&#xff1a;先来看看最后的样式图片吧&#xff1a;从图片中可以看到ImageView中的图片要大很多&#xff0c;这是因为中的ImageView中的图片跟ImageView控件的大小而自动调整。Imag…

动态规划-学习笔记

这是一份动态规划&#xff08;Dynamic Programming, DP&#xff09;完整学习笔记。笔记将从一星难度&#xff08;入门&#xff09;到五星难度&#xff08;进阶&#xff09;&#xff0c;循序渐进&#xff0c;涵盖核心思想、经典模型和解题方法论。 本来打算今天更新背包问题的题…