Archive


Category: 似水流年

  • Poetry 的用法

    Poetry 是一个现代化的 Python 项目管理工具,旨在简化依赖管理、虚拟环境管理、打包以及发布流程。下面详细介绍其主要特点和使用方法: 1. 主要功能 依赖管理 Poetry 允许你在项目的配置文件 pyproject.toml 中声明项目依赖,并自动解决依赖冲突。它会生成一个 poetry.lock 文件,锁定所有依赖的具体版本,从而保证在不同机器上安装时环境一致,避免“在我机器上可用”的问题。 citeturn0search0 虚拟环境管理 Poetry 内置了虚拟环境管理功能,它会自动为每个项目创建并使用独立的虚拟环境,让项目之间的依赖互不干扰。你可以使用 poetry shell 进入该虚拟环境,或者使用 poetry run <command> 在环境中执行命令。 citeturn0search0 项目打包与发布 除了依赖管理外,Poetry 还能构建项目(生成 sdist 与 wheel 文件)并通过命令行将包发布到 PyPI 或其他私有仓库。 citeturn0search1 依赖组管理 你可以将依赖分组,例如将开发、测试、文档等依赖分别归类,安装时可灵活选择只安装部分组的依赖,避免不必要的包被安装到生产环境中。 2. 安装方式 推荐使用 pipx 来安装 Poetry,因为它会在独立的虚拟环境中安装 Poetry,从而避免与项目环境产生冲突。安装命令如下: pipx install poetry 也可以使用官方安装脚本: curl -sSL https://install.python-poetry.org | python3 – 安装完成后,请确保将 […]

  • Tailwind CSS framework

    Tailwind CSS framework Tailwind CSS 框架介绍 Tailwind CSS 是一个功能类(utility-first)的 CSS 框架,它提供了大量的低级实用类,让开发者可以直接在 HTML 代码中编写样式,而无需创建自定义的 CSS 规则。它的设计理念是通过组合这些小型的样式类来快速构建 UI,而不是像传统 CSS 那样依赖预定义的组件或全局样式。 Tailwind CSS 的特点 功能类优先:使用原子类(如 p-4、text-center、bg-blue-500)快速构建 UI。 高度可定制:可以通过 tailwind.config.js 进行配置,调整颜色、字体、间距等。 无需额外 CSS 文件:所有样式直接在 HTML 文件中定义,减少了 CSS 代码量。 响应式设计:内置 sm、md、lg、xl 等断点类,方便适配不同设备。 Dark Mode 支持:可以轻松实现暗黑模式。 安装 Tailwind CSS 可以通过 npm 安装 Tailwind CSS: npm install -D tailwindcss postcss autoprefixer npx […]

  • AI Agent get started – MetaGPT

    https://docs.deepwisdom.ai/main/zh/guide/tutorials/multi_agent_101.html 智能体 学术界和工业界对术语“智能体”提出了各种定义。大致来说,一个智能体应具备类似人类的思考和规划能力,拥有记忆甚至情感,并具备一定的技能以便与环境、智能体和人类进行交互。 在MetaGPT看来,可以将智能体想象成环境中的数字人,其中 智能体 = 大语言模型(LLM) + 观察 + 思考 + 行动 + 记忆 这个公式概括了智能体的功能本质。为了理解每个组成部分,让我们将其与人类进行类比: 大语言模型(LLM):LLM作为智能体的“大脑”部分,使其能够处理信息,从交互中学习,做出决策并执行行动。 观察:这是智能体的感知机制,使其能够感知其环境。智能体可能会接收来自另一个智能体的文本消息、来自监视摄像头的视觉数据或来自客户服务录音的音频等一系列信号。这些观察构成了所有后续行动的基础。 思考:思考过程涉及分析观察结果和记忆内容并考虑可能的行动。这是智能体内部的决策过程,其可能由LLM进行驱动。 行动:这些是智能体对其思考和观察的显式响应。行动可以是利用 LLM 生成代码,或是手动预定义的操作,如阅读本地文件。此外,智能体还可以执行使用工具的操作,包括在互联网上搜索天气,使用计算器进行数学计算等。 记忆:智能体的记忆存储过去的经验。这对学习至关重要,因为它允许智能体参考先前的结果并据此调整未来的行动。 多智能体 多智能体系统可以视为一个智能体社会,其中 多智能体 = 智能体 + 环境 + 标准流程(SOP) + 通信 + 经济 这些组件各自发挥着重要的作用: 智能体:在上面单独定义的基础上,在多智能体系统中的智能体协同工作,每个智能体都具备独特有的LLM、观察、思考、行动和记忆。 环境:环境是智能体生存和互动的公共场所。智能体从环境中观察到重要信息,并发布行动的输出结果以供其他智能体使用。 标准流程(SOP):这些是管理智能体行动和交互的既定程序,确保系统内部的有序和高效运作。例如,在汽车制造的SOP中,一个智能体焊接汽车零件,而另一个安装电缆,保持装配线的有序运作。 通信:通信是智能体之间信息交流的过程。它对于系统内的协作、谈判和竞争至关重要。 经济:这指的是多智能体环境中的价值交换系统,决定资源分配和任务优先级。 一个智能体运行周期的流程图

  • Spring Security 回顾二

    Spring Security 框架介绍 Spring Security 是一个功能强大且高度可定制的安全框架,专注于为 Java 应用程序提供身份验证和授权功能。它是 Spring 生态系统的一部分,广泛用于保护 Web 应用程序、REST API 和方法级别的安全。 核心功能 身份验证(Authentication):验证用户身份,常见方式包括表单登录、OAuth2、LDAP 等。 授权(Authorization):控制用户访问权限,确保用户只能访问其有权访问的资源。 防护攻击:提供对常见攻击(如 CSRF、XSS、SQL 注入)的防护。 会话管理:支持会话固定保护、并发会话控制等功能。 集成其他安全协议:支持 OAuth2、SAML、OpenID Connect 等协议。 Spring Security 的核心组件 SecurityContextHolder:存储当前用户的安全上下文。 Authentication:表示用户的身份验证信息。 UserDetails:封装用户信息(如用户名、密码、权限等)。 UserDetailsService:加载用户信息,用于身份验证。 GrantedAuthority:表示用户的权限。 SecurityFilterChain:定义请求的过滤链,处理安全逻辑。 Spring Security 的基本用法 1. 添加依赖 在 Maven 项目中,添加 Spring Security 依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> 2. 配置 Spring Security 通过 […]

  • Spring Security 回顾一

    Spring Security 框架介绍 1. Spring Security 是什么? Spring Security 是 Spring 框架的安全管理框架,用于提供 身份认证(Authentication) 和 授权(Authorization) 机制。它主要用于保护 Web 应用 和 REST API,防止 未授权访问 和 常见安全攻击(如 CSRF、XSS、Session Fixation、Clickjacking 等)。 2. Spring Security 的核心概念 Spring Security 主要涉及以下核心概念: 2.1 身份认证(Authentication) 身份认证是指 验证用户身份 的过程。Spring Security 支持多种认证方式: 用户名 + 密码(默认基于 UserDetailsService) JWT 令牌(适用于 REST API) OAuth 2.0 / OpenID Connect(支持 Google、GitHub […]

  • IDaaS – Identity as a Service

    Identity as a Service 身份认证作为一种服务, 包括身份验证,用户管理, 访问控制等功能, 实现安全的身份认证和访问控制, 减少从头构建身份认证管理系统的成本和复杂性. 例如 Okta, Authing, Auth0, AWS Cogito/IAM, 以及开源的 Keycloak, 它主要包含如下关键组件 认证服务器 Authentiation Server 负责用户的身份认证与授权, 支持多种身份验证协议, 如 OAuth, OpenID Connect 和 SAML. Authentiation Server 维护用户的身份信息和凭据, 并验证用户的身份以颁发访问令牌. 客户端 Clients Confidential Clients Public Clients Bearer-only Clients 令牌 Token Access Token ID Token 身份提供者 Identity Provider IDAP Active Directory SNS: Google, […]

  • Vue.js 示例

    1. 计数器组件(基础响应式) <template> <div> <p>Count: {{ count }}</p> <button @click="increment">+1</button> <button @click="reset">Reset</button> </div> </template> <script setup> import { ref } from 'vue'; // 响应式变量 const count = ref(0); // 方法 const increment = () => count.value++; const reset = () => count.value = 0; </script> 核心概念: ref 创建响应式变量 @click 事件绑定 模板中直接使用变量 2. Todo List(列表渲染 & […]

  • Designing Data Intensive Applications 1

    Reliable, Scalable, and Maintainable Applications 数据库 A data-intensive application is typically built from the standard building blocks that provide the commonly needed functionality 缓存 Remember the result of an expensive operation to speed up reads. 搜索及索引 Allow users to search data by keyword or filter it by various ways 流处理 Send a messenger to another […]