PostgreSQL 企业级使用指导手册(Java 后端开发者版)

PostgreSQL的安装、配置与使用指南 本文介绍了PostgreSQL的安装、配置和使用。首先,介绍了如何下载和安装PostgreSQL,然后通过简单的验证方法检查其是否安装成功。接下来,详细介绍了如何进行远程连接的配置,包括修改postgresql.conf和pg_hba.conf文件,并重启服务。此外,还介绍了如何配置数据库的日志,以确保数据的可追溯性和问题排查。最后,本文介绍了两个流行的图形化界面工具pgAdmin和Navicat,以方便用户管理和操作PostgreSQL数据库。 阅读详情

以下是一份专为 Java 后端开发者(尤其是使用 Spring Boot 的团队)量身定制的 PostgreSQL 详细使用指导说明文档,涵盖定义、作用、必要性、核心功能、常用 SQL 及企业级实战建议,全部采用清晰中文注释式结构,便于团队理解、培训与落地。


📄 PostgreSQL 企业级使用指导手册(Java 后端开发者版)

适用人群:Java 后端开发、Spring Boot 工程师、技术负责人
目标:系统掌握 PostgreSQL,推动团队从 MySQL/其他数据库平滑迁移或新建项目采用 PostgreSQL,提升数据可靠性、扩展性与开发效率。


一、PostgreSQL 是什么?(Definition)

PostgreSQL(简称 PG)是一个开源的、功能强大的对象关系型数据库管理系统(Object-Relational Database Management System, ORDBMS),由全球开发者社区维护,遵循 SQL 标准,并在 ACID、扩展性、数据完整性方面远超传统关系型数据库。

✅ 核心定位:

  • 不是“增强版 MySQL”,而是企业级数据引擎,对标 Oracle、SQL Server。
  • 支持复杂查询、JSON/JSONB、地理空间、全文检索、自定义函数、扩展插件等高级特性。
  • 被广泛用于金融、政务、电商、SaaS 系统,如 Apple、Instagram、Reddit、Uber 等均使用 PG。

💡 为什么 Java 开发者要关注它?

维度MySQLPostgreSQL
事务完整性一般(MyISAM 不支持事务)✅ 完整 ACID,所有引擎支持
JSON 支持JSON 类型(较弱)✅ JSONB(索引、查询、更新高效)
扩展性有限✅ 支持自定义类型、函数、插件(如 PostGIS、pg_trgm)
并发写入表锁较重✅ MVCC 机制,高并发读写无锁
复杂查询优化一般✅ 强大的查询优化器,支持 CTE、窗口函数、递归查询
生态集成Spring Boot 默认✅ Spring Data JPA / MyBatis 完美支持,无适配成本

✅ 结论:PostgreSQL 是 Java 企业级项目(尤其是微服务、数据密集型系统)的首选数据库,尤其适合需要高一致性、复杂查询、JSON 处理、未来扩展的场景。


二、PostgreSQL 的核心作用与必要性(Why PostgreSQL?)

✅ 作用清单:

作用说明
高可靠数据存储支持崩溃恢复、WAL 日志、数据校验,确保零数据丢失
复杂业务建模支持继承、自定义类型、数组、范围类型,适合复杂领域模型
JSON 与文档存储JSONB 类型支持索引、路径查询,可替代 MongoDB 用于半结构化数据
地理信息处理通过 PostGIS 插件支持空间数据存储与查询(如地图、物流)
全文检索内置全文搜索(tsvector),无需引入 Elasticsearch
高并发与扩展MVCC 机制 + 分区表 + 只读副本,轻松支撑高并发业务
云原生友好AWS RDS、阿里云 PolarDB、Google Cloud SQL 均提供 PG 托管服务

🚫 为什么不能只用 MySQL?

  • MySQL 在复杂查询、JSON 性能、约束完整性上落后。
  • 你的 Spring Boot 服务若涉及:订单状态机、多维分析、地理围栏、配置中心(JSON 配置),PG 更合适。
  • 团队技术债:MySQL 的“宽松模式”导致数据脏、逻辑错,PG 的强约束能提前拦截问题。

✅ 企业级建议:
新项目首选 PostgreSQL;
老项目迁移:优先迁移“数据复杂、查询多、需高可靠”的核心模块。


三、PostgreSQL 核心功能详解(企业级视角)

1️⃣ 数据类型增强 —— 比 MySQL 更智能

类型说明Java 对应企业场景
JSONB二进制 JSON,支持索引、路径查询Map<String, Object> / JsonNode存储用户配置、商品属性、API 响应缓存
ARRAY数组类型(如 integer[])List<Integer>存储标签、权限组、多选 ID
UUID原生支持,无需 Java 生成java.util.UUID分布式主键,避免 ID 冲突
TIMESTAMPTZ带时区的时间戳OffsetDateTime全球化系统,避免时区混乱
RANGE时间/数字范围(如 tsrange, int4range)org.springframework.data.domain.Range预订系统、库存占用、优惠券有效期
✅ 实战示例:存储用户偏好(JSONB)
-- 创建表:存储用户个性化设置(替代 Redis 或冗余字段)
CREATE TABLE user_preferences (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),  -- ✅ 使用 UUID 作为主键
    user_id BIGINT NOT NULL,
    settings JSONB NOT NULL,                        -- ✅ JSONB 类型,支持索引
    created_at TIMESTAMPTZ DEFAULT NOW(),
    updated_at TIMESTAMPTZ DEFAULT NOW()
);

-- 插入数据:Java 中可直接传 Map 或 JSON 字符串
INSERT INTO user_preferences (user_id, settings) VALUES
(1001, '{"theme": "dark", "notifications": {"email": true, "push": false}, "language": "zh-CN"}');

-- 查询:通过 JSONB 路径提取数据(类似 MongoDB)
SELECT user_id, settings->>'theme' AS theme
FROM user_preferences
WHERE settings @> '{"notifications": {"email": true}}';  -- ✅ 包含查询,高效索引支持

-- 创建索引:加速 JSONB 查询(重要!)
CREATE INDEX idx_user_settings ON user_preferences USING GIN (settings);

💡 团队建议:
所有“动态配置”、“扩展字段”、“非结构化元数据”统一用 JSONB,避免新增字段改表结构。


2️⃣ 强大的索引机制 —— 超越 B-Tree

索引类型用途示例
GINJSONB、数组、全文检索CREATE INDEX idx_json ON table USING GIN (json_column)
GIST地理空间、范围类型CREATE INDEX idx_location ON locations USING GIST (geom)
BRIN超大表(日志、时序)CREATE INDEX idx_log_time ON logs USING BRIN (created_at)
Partial Index条件索引(节省空间)CREATE INDEX idx_active_users ON users (email) WHERE status = 'active'

✅ 实战建议:

  • 对 JSONB 字段必须建 GIN 索引,否则查询慢如蜗牛。
  • 日志表用 BRIN,比 B-Tree 节省 90% 空间。
  • 活跃用户查询用 Partial Index,提升查询速度 + 降低维护成本。

3️⃣ 窗口函数(Window Functions)—— 数据分析利器

无需子查询,直接在结果集中做聚合计算,适合报表、排行榜、趋势分析。

✅ 实战:订单排名(按用户总消费)
-- 查询每个用户的订单排名(按消费金额降序)
SELECT
    user_id,
    order_id,
    total_amount,
    ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY total_amount DESC) AS rank_in_user,  -- ✅ 每个用户内排名
    RANK() OVER (ORDER BY total_amount DESC) AS global_rank  -- ✅ 全局排名
FROM orders
WHERE created_at >= '2025-01-01'
ORDER BY global_rank;

💡 团队价值:
原本需 Java 写循环 + 排序,现在一行 SQL 完成,性能提升 10x,代码更简洁。


4️⃣ CTE(Common Table Expressions)—— 可读性之王

用 WITH 语句拆解复杂查询,逻辑清晰,易于维护。

✅ 实战:统计订单 + 用户 + 支付状态(三层关联)
WITH user_orders AS (
    SELECT u.id AS user_id, u.name, o.id AS order_id, o.status, o.amount
    FROM users u
    JOIN orders o ON u.id = o.user_id
    WHERE o.status IN ('paid', 'shipped')
),
payment_summary AS (
    SELECT user_id, COUNT(*) AS order_count, SUM(amount) AS total_spent
    FROM user_orders
    GROUP BY user_id
)
SELECT
    uo.name,
    uo.order_id,
    ps.order_count,
    ps.total_spent
FROM user_orders uo
JOIN payment_summary ps ON uo.user_id = ps.user_id
ORDER BY ps.total_spent DESC;

✅ 团队建议:
所有超过 3 表关联、带聚合的查询,强制使用 CTE,提升可维护性,降低 Bug 率。


5️⃣ 触发器 + 函数 —— 业务逻辑下沉数据库

避免 Java 层重复逻辑,提升一致性。

✅ 实战:自动更新 updated_at 字段
-- 创建函数:自动设置更新时间
CREATE OR REPLACE FUNCTION update_updated_at_column()
RETURNS TRIGGER AS $$
BEGIN
    NEW.updated_at = NOW();  -- ✅ 自动更新时间戳
    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

-- 绑定触发器到所有业务表
CREATE TRIGGER trigger_update_updated_at
    BEFORE UPDATE ON users
    FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();

CREATE TRIGGER trigger_update_updated_at
    BEFORE UPDATE ON products
    FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();

✅ 团队建议:
所有表统一加 created_at / updated_at,用触发器自动维护,Java 层不再写 setUpdatedAt(),减少人为疏漏。


四、PostgreSQL 常用 SQL 分类详解(企业开发必备)

以下 SQL 以 Java 开发者视角 编写,附带中文注释+使用场景。

✅ DDL(数据定义语言)—— 表结构设计

-- 创建带约束的用户表(推荐写法)
CREATE TABLE users (
    id BIGSERIAL PRIMARY KEY,                  -- ✅ 自增主键(推荐用于整型)
    uuid UUID UNIQUE NOT NULL DEFAULT gen_random_uuid(),  -- ✅ 业务主键(推荐用于分布式)
    username VARCHAR(50) UNIQUE NOT NULL,      -- ✅ 唯一约束
    email VARCHAR(100) UNIQUE NOT NULL CHECK (email ~* '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$'),  -- ✅ 邮箱格式校验
    password_hash TEXT NOT NULL,
    status VARCHAR(20) DEFAULT 'active' CHECK (status IN ('active', 'inactive', 'banned')),  -- ✅ 枚举约束
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    metadata JSONB DEFAULT '{}'::JSONB         -- ✅ 扩展字段,JSONB
);

-- 创建索引(必须!)
CREATE INDEX idx_users_email ON users (email);
CREATE INDEX idx_users_status ON users (status);
CREATE INDEX idx_users_metadata ON users USING GIN (metadata);  -- ✅ JSONB 必须 GIN

✅ 团队规范:
所有表必须有 id(BIGSERIAL)、uuid(UUID)、created_at、updated_at、status,标准化设计减少沟通成本。


✅ DML(数据操作语言)—— 增删改查

-- 插入(批量插入,Java 中用 MyBatis Batch)
INSERT INTO users (username, email, password_hash, metadata)
VALUES
    ('alice', 'alice@company.com', 'hash123', '{"role": "admin", "lang": "en"}'),
    ('bob', 'bob@company.com', 'hash456', '{"role": "user", "lang": "zh"}');

-- 更新(带条件,避免全表更新)
UPDATE users
SET status = 'banned', updated_at = NOW()
WHERE email = 'spam@fake.com';

-- 删除(软删除推荐!)
UPDATE users SET status = 'deleted', updated_at = NOW() WHERE id = 1001;

-- 查询(带分页,Java 中用 PageHelper 或 Spring Data JPA)
SELECT * FROM users
WHERE status = 'active'
ORDER BY created_at DESC
LIMIT 10 OFFSET 0;  -- ✅ 分页:第1页,每页10条

✅ 团队建议:
禁止物理删除,一律用 status 标记软删除。
所有查询必须带分页,禁止 SELECT * FROM table。


✅ DQL(查询语言)—— 高级查询技巧

-- 多表关联 + 窗口函数:查每个部门最新入职员工
WITH latest_hires AS (
    SELECT
        e.name,
        e.hire_date,
        d.name AS dept_name,
        ROW_NUMBER() OVER (PARTITION BY e.dept_id ORDER BY e.hire_date DESC) AS rn
    FROM employees e
    JOIN departments d ON e.dept_id = d.id
)
SELECT name, dept_name, hire_date
FROM latest_hires
WHERE rn = 1;  -- ✅ 每个部门只取最新1人

-- 全文搜索(无需 ES)
SELECT title, content
FROM articles
WHERE to_tsvector('english', content) @@ to_tsquery('english', 'spring & boot');

✅ 团队建议:
用 to_tsvector 替代 LIKE '%xxx%',性能提升 100 倍,支持中文分词(需安装 zhparser 插件)。


✅ TCL & DCL(事务与权限)—— 企业安全核心

✅ 事务控制(TCL)—— Java 中用 @Transactional
-- 在 Java 中,Spring @Transactional 自动管理
-- 但你可以手动测试事务:
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
-- 如果出错,执行 ROLLBACK;成功则 COMMIT;
COMMIT;  -- ✅ 事务提交

✅ 团队建议:
所有跨表操作(转账、订单创建)必须用事务,Java 层用 @Transactional(propagation = REQUIRES_NEW) 控制嵌套。

✅ 权限控制(DCL)—— 安全合规必备
-- 创建只读用户(用于报表服务)
CREATE USER report_reader WITH PASSWORD 'secure123';
GRANT CONNECT ON DATABASE myapp TO report_reader;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO report_reader;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO report_reader;

-- 创建应用用户(写权限)
CREATE USER app_user WITH PASSWORD 'app_pass';
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO app_user;
GRANT USAGE ON ALL SEQUENCES IN SCHEMA public TO app_user;

✅ 团队建议:
生产环境禁止使用 root 账户!
分离:app_user(写)、report_reader(读)、admin(维护),符合等保要求。


五、企业级实战建议(推动团队落地)

建议说明推动方式
✅ 统一建表规范所有表必须含 id, uuid, created_at, updated_at, status编写《数据库设计规范》文档,集成到团队 GitLab 模板
✅ 禁用 SELECT *必须指定字段,提升性能与可维护性代码审查(Code Review)强制检查
✅ JSONB 替代冗余字段避免“字段爆炸”用 JSONB 存储动态配置,减少表变更频率
✅ 强制使用索引所有查询字段、WHERE 条件、JOIN 字段必须建索引使用 EXPLAIN ANALYZE 检查执行计划
✅ 使用 UUID 作为业务主键避免 ID 暴露、支持分布式Spring Boot 中用 @GeneratedValue(strategy = GenerationType.UUID)
✅ 用触发器维护时间戳Java 层不再写 setUpdatedAt()提供 BaseEntity 抽象类 + 触发器脚本
✅ 连接池配置优化使用 HikariCP,maximumPoolSize=20,connectionTimeout=30000在 application.yml 中统一配置
✅ 备份与监控每日自动备份 + 监控慢查询(pg_stat_statements)配置阿里云 RDS 自动备份 + Prometheus + Grafana 监控

六、附录:Spring Boot 集成 PostgreSQL 最佳实践

application.yml 配置示例:

spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/myapp?sslmode=disable&application_name=MyApp
    username: app_user
    password: app_pass
    driver-class-name: org.postgresql.Driver
    hikari:
      maximum-pool-size: 20
      connection-timeout: 30000
      idle-timeout: 600000
      max-lifetime: 1200000
  jpa:
    database-platform: org.hibernate.dialect.PostgreSQL10Dialect  -- ✅ 必须指定
    show-sql: false
    properties:
      hibernate:
        format_sql: true
        jdbc:
          batch_size: 20

实体类示例(JPA):

@Entity
@Table(name = "users")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)  // BIGSERIAL
    private Long id;

    @Column(name = "uuid", unique = true, nullable = false)
    private UUID uuid = UUID.randomUUID();  // ✅ 业务主键

    @Column(name = "metadata", columnDefinition = "jsonb")
    private Map<String, Object> metadata = new HashMap<>();

    @CreationTimestamp
    private OffsetDateTime createdAt;

    @UpdateTimestamp
    private OffsetDateTime updatedAt;
}

✅ 提示:使用 @Column(columnDefinition = "jsonb") 明确指定类型,避免 Hibernate 推断错误。


七、总结:为什么 PostgreSQL 是 Java 团队的未来?

维度PostgreSQL价值
可靠性✅ ACID 完整、崩溃恢复数据零丢失,客户信任
灵活性✅ JSONB、数组、范围快速响应业务变化
性能✅ MVCC、GIN、BRIN高并发、大数据量不卡顿
可维护性✅ 触发器、CTE、函数Java 代码更干净,逻辑更集中
生态支持✅ Spring Boot、MyBatis、Flyway、TestContainers无缝集成,无学习成本
团队成长✅ 掌握 PG = 掌握企业级数据库能力提升团队技术壁垒

🚀 行动建议:
下个新项目,100% 使用 PostgreSQL。
老项目,优先迁移“核心订单、用户、配置”模块。
组织一次内部培训,用本文档作为教材。


📌 附:推荐学习资源

  • 官方文档:https://www.postgresql.org/docs/
  • 《PostgreSQL 实战》(人民邮电出版社)
  • GitHub 项目:https://github.com/postgres/postgres
  • 测试工具:TestContainers + PostgreSQL(Spring Boot 集成单元测试神器)

vue3+SpringBoot+postgresql 项目前后端传参 阅读详情

相关推荐

豆包 PostgreSQL秒杀系统Java后端完整实现

seckill:redis:stock-key-prefix: “seckill:stock:” # 库存缓存key前缀order-key-prefix: “seckill:order:” # 用户下单标记key前缀rate-limit-key-prefix: “seckill:rate:” # 限流key前缀rabbitmq:exchange-name: “seckill-exchange” # 交换机名称。

m0_37843156的博客 847

PostgreSQL 12.2 手册

(1 row)这样做是 OK 的,因为子查询是一次独立的计算,它独立于外层的查询计算出自己的聚集。聚集同样也常用于和GROUP BY子句组合。比如,我们可以获取每个城市观测到的最低温度的最高值:city | max(2 rows)这样给我们每个城市一个输出。每个聚集结果都是在匹配该城市的表行上面计算的。我们可以用HAVING 过滤这些被分组的行:13SQL语言city | max(1 row)

qq_41528616的博客 3754

【PostgreSQL教程】PostgreSQL 特别篇之 语言接口Java

本篇教程的Java程序中开始使用PostgreSQL之前,需要确保在计算机上设置了PostgreSQL JDBC和Java。您可以检查Java教程以在计算机上安装Java。现在让本篇教程检查如何设置PostgreSQL JDBC驱动程序。

No8g攻城狮的博客 1753

PostgreSQL基本操作

PostgreSQL基本操作

m0_37559973的博客 8281

PostgreSQL 开发规范培训手册

PostgreSQL是开源的对象-关系数据库数据库管理系统,在国家大环境要求去ORACLE的情况下,PostgreSQL作为OLAP型系统的最佳替代者数据库,已经再运营商,电力,水利,交通等国企行业进行应用。

【RF】Receiver Function接收函数:从理论到实践的深度解析

本文深入解析地震学中的接收函数(Receiver Function, RF)技术,从理论原理到实践操作。文章将RF比作地球的“听诊器”,详细阐述了其通过反褶积剥离震源影响、揭示地下结构(如莫霍面)的核心机制,并提供了使用Python和rf库进行数据处理、计算、动校正与叠加的完整实战流程,同时探讨了其应用、局限性与常见问题的解决方案。

Jerry的专栏 121

postgresql应用开发者指南

内容 基本SQL语法 数据类型和操作符 数据库对象类型 高级SQL用法 事务隔离级别 锁 触发器、事件触发器、规则 表继承和分区表 异步消息 基本SQL语法 大小写 建表 select into & create table as DML COPY 排序 聚合 DISTINCT和DISTINCT ON 表连接 组合查询 ALL|ANY|SOME 条件表达式 窗口函数 ddl in tran SQ

weixin_45105610的博客 937

Windows下TensorRT+YOLOv11部署避坑指南:从CUDA配置到模型加密全流程

本文详细解析了在Windows平台部署YOLOv11与TensorRT的全流程,重点涵盖从CUDA环境配置、工程编译适配到模型加密保护的实战指南。基于wang-xinyu的tensorrtx仓库,提供了详细的版本选择、编译问题修复方案,并深入探讨了如何对TensorRT引擎进行加密,以实现高效且安全的端到端部署。

vscode5coder的博客 449

PostgreSQL常用操作(持续更新)

文章目录一、 管理操作1.数据库对象Size查询 一、 管理操作 1.数据库对象Size查询 名称 返回类型 描述 pg_total_relation_size(regclass) bigint 指定表OID或表名使用的总磁盘空间,包括所有索引和TOAST数据。 pg_table_size(regclass) bigint 指定表OID或表名使用的磁盘空间,除去索引(但是包含TOAST,自由空间映射和可视映射) pg_indexes_size(regclass) bigint 关联指

Dong_Xu1121的博客 2764

鱼眼相机去畸变(图像拉直/展开/矫正)算法及实战总结

1、算法说明经纬度矫正法, 可以把鱼眼图想象成半个地球, 然后将地球展开成地图,经纬度矫正法主要是利用几何原理, 对图像进行展开矫正。经过P点的入射光线没有透镜的话,本应交于相机成像平面的e点。然而,经过鱼眼相机的折射,光线会交于相机成像平面的d点,就产生了畸变,因此畸变图像整体上呈现出像素朝图像中心点聚集的态势。而去畸变,就是将折射到d点的点,重新映射回到e点,因此去畸变之后的图像与原始的鱼眼图像相比,仿佛是把向心聚集的像素又重新向四周铺展开来。AVM环视系统——鱼眼相机去畸变算法 - 知乎。

大胡子大叔的专栏 2万+

手把手教你用LangChain4j打造一个“会追问”的AI客服:以航空货运下单为例

本文详细介绍了如何使用LangChain4j构建一个能够主动追问的航空货运AI客服系统。通过对话状态管理、信息缺口识别和渐进式引导等核心技术,实现高效的多轮对话交互。文章包含从交互设计到代码实现的完整指南,特别强调了提示词(Prompt)在优化AI行为中的关键作用,帮助开发者打造更智能的客服解决方案。

weixin_28731223的博客 154

PostgreSQL:后端开发者的瑞士军刀

PostgreSQL是一个功能丰富、高度可扩展的数据库系统,它为后端开发者提供了强大的工具来构建复杂的数据解决方案。从基础的SQL操作到高级的性能优化和安全特性,PostgreSQL都是后端开发者的可靠伙伴。随着你在使用PostgreSQL的过程中不断学习和实践,你会发现它是一个真正的瑞士军刀,能够满足你在后端开发中的各种需求。

m0_52796585的博客 2234

从稀疏表示到低秩表示(一)

确定研究方向后一直在狂补理论,最近看了一些文章,有了些想法,顺便也总结了representation系列的文章,由于我刚接触,可能会有些不足,愿大家共同指正。 从稀疏表示到低秩表示系列文章包括如下内容: 一、 sparse representation 二、 一、 sparse representation 1  sparsity  一个线性表示解决的问题如下图所示:

彼岸花 3万+

JDBC PostgreSQL 连接 URL 参数详解指南(适用于 Java 后端开发者)

本文是一份针对Java后端开发者的PostgreSQL JDBC连接URL参数详解指南。主要内容包括: 连接URL基本结构:jdbc:postgresql://host:port/database?参数 六大类核心参数: 基础连接参数(host,port等) 编码参数(client_encoding等) 安全参数(sslmode,ssl证书等) 性能参数(超时,批量处理等) 时区参数(timezone) 高级参数(事务,日志等) 重点推荐: 生产环境必须启用SSL(verify-full) 显式设置时区避免

python15397的博客 2784

ICCV 2025 | 哈工大、清华等提出首个双曲学习框架:HLFormer,革新局部相关视频检索

离原点越远,代表的语义越具体(部分)。现有方法大多在传统的欧几里得空间中对视频和文本进行建模,但这往往会导致对视频内在层次结构的错误表示,从而影响检索的准确性。通过UMAP对学习到的帧嵌入进行可视化(如下图),可以观察到,来自同一时刻的视频帧在嵌入空间中聚集在一起,清晰地展示了模型对时序关系的捕捉能力。下图的双曲空间可视化进一步证实了模型的层次建模能力:离原点越近的点,代表的语义层级越高、粒度越粗糙,反之亦然。:既然文本查询描述的是视频的一部分,那么在几何表示上,文本的嵌入向量应该从属于视频的嵌入向量。

我爱计算机视觉 1077

从入门到精通|Yalmip+Cplex在电力系统中的应用(Matlab代码实现)

​ 火电成本包括运行成本、碳捕集成本,其中火电运行成本由运行维护成 本和发电煤耗成本构成,发电煤耗与其出力关系: ,F 为机组煤耗量(kg/h),P 为机组出力/MW;运行维护成本按照 0.5 倍煤耗成本考虑,碳捕集成本取决于碳排放量及碳捕集单价,火电机组相关参数如附表 1 所示,电煤价格为 700 元/t ​

weixin_46039719的博客 1551

零基础后端入门:JDK21 + PostgreSQL+Java项目

本文是关于JAVA项目运行在原来JDK1.8,MySql的基础上,又有新的JAVA项目,面对不同的JDK环境,数据库Postgresql,应该怎样去配置,主要面向前端开发人员,零基础的Java后端开发人员

weixin_45680024的博客 1185

TC3XX - MCAL知识点(三十九):AURIX™ TC3xx 的EDSADC实现旋变解码功能(应用笔记记录)

本文总结了英飞凌应用笔记中关于EDSADC旋变解码系统的关键内容。系统通过调幅解调获取电机位置和速度信号,支持内外载波生成方案,其中内部载波方案更常用(需2个DSADC通道)。重点介绍了滤波器链配置建议(避免FIR1)、系统条件要求(如偶数积分周期)以及群延迟计算方法。特别分析了SDCAP功能对硬件延迟的补偿机制,指出温度等因素可能导致外部电路延迟变化,需通过计数器测量并通过软件调整积分器起始点来消除角度误差。文中还提供了不同硬件延迟情况下的信号处理示例。

梦想技术家 455

11.2 使用 Java 连接 PostgreSQL

在 Java 应用中,数据库连接是实现数据持久化和业务逻辑的关键部分。Java Database Connectivity (JDBC) 提供了一套标准 API,用于在 Java 应用中执行 SQL 语句和管理数据库操作。JDBC 是 Java 访问数据库的官方 API,它由一组用 Java 语言编写的类和接口组成,为不同类型的数据库提供了统一的访问方式。主要组件Driver:JDBC 驱动,负责实现 JDBC 接口,并管理与数据库的通信。Connection。

Python老吕的博客 3232

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

从零到一:Java开发者如何高效利用PostgreSQL JDBC驱动构建企业级应用

本文详细介绍了Java开发者如何高效利用PostgreSQL JDBC驱动构建企业级应用,涵盖驱动选型、连接池配置、事务管理、性能优化等核心内容。通过实战示例和最佳实践,帮助开发者掌握PostgreSQL与Java的无缝集成技术,提升企业级应用的数据处理能力与性能。

z2a3b4c5d的博客 649

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

PostgreSQL_C语言_开发者手册

原文链接 标签 PostgreSQL , Java , php , ruby , python , C 背景 转自 http://zetcode.com/db/postgresqlc/ 正文 This is a C programming tutorial for the PostgreSQL database. It covers the basi

bystarlight的博客 2741

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Rust 通用代码生成器莲花发布红莲尝鲜版十九介绍视频,详细讲解 PostgreSQL 后端代码生成

Rust 通用代码生成器:莲花Rust 通用代码生成器莲花发布深度修复版红莲尝鲜版十九介绍视频,介绍了 PostgreSQL 代码生成。Rust 通用代码生成器莲花发布深度修复版红莲尝鲜版十八介绍视频,初学者指南,详细介绍代码生成器环境搭建,编译,运行和使用代码生成物,欢迎使用。Rust 通用代码生成器莲花尝鲜版 4 发布介绍视频,从源码开始构建 Rust 通用代码生成器莲花。并生成一个例程的前后端并演示运行。尝鲜版 3尝鲜版 2。

jerryshen的专栏 1126

PostgreSQL 多表 JOIN 连接查询深度指南 — 企业级高性能关联查询标准规范

本文为Java后端开发者提供PostgreSQL多表JOIN查询的深度指南,涵盖5大JOIN类型、12个实战场景及性能优化技巧。重点解析INNER JOIN和LEFT JOIN的适用场景与标准写法,强调关联字段索引的重要性,避免N+1查询、笛卡尔积等性能问题。文档采用结构化注释风格,可直接用于团队培训与代码审查,帮助开发者从基础查询进阶到高效数据关联,提升数据库操作性能与稳定性。

python15397的博客 1594

PostgreSQL JDBC驱动:连接Java与PostgreSQL的桥梁

PostgreSQL JDBC驱动(简称PgJDBC)是一个开源的JDBC驱动程序,它允许Java程序通过标准的、与数据库无关的Java代码连接到PostgreSQL数据库。PgJDBC是一个纯Java编写的Type 4驱动程序,使用PostgreSQL的本地网络协议进行通信。 ## 项目技术分析 ### 技术栈 - **编程语言**: Java - **数据库**: PostgreSQL -...

gitblog_00078的博客 696

基于PostgreSQL进行Java应用开发

该手册由PG实验室的成员结合多年对postgresql数据库的使用及Java应用开发经验,总结了一套实战入门手册。帮助PostgreSQL软件爱好者及初学者快速学习postgresql数据库的相关知识。 针对应用如何适配postgresql数据库,提供了丰富的技巧案例。开发人员在不了解postgresql的情况下,通过该手册的学习,能够自主的实现基于postgresql的应用开发工作。 以上是适配手册涵盖的章节内容。 本手册一共6个章节: 第1章PostgreSQL介绍 1.1.PostgreSQL起源

HighGO 4760

使用postgresql创建企业级地理数据库

目录 环境: 1、系统需求 2、安装postgresql 3、创建企业级地理数据库 4、卸载postgresql 环境: postgresql-9.6.13-4-windows-x64和arcmap10.7.1都是安装在本机上 postgresql-9.6.13-4-windows-x64下载地址: 链接:https://pan.baidu.com/s/1iLPJkBhqZhZ...

gislaozhang 1440
上一篇: MySQL `information_schema` 数据库深度指南 — Java 开发者的数据库“元数据金矿”
下一篇: PostgreSQL SQL 五大分类详细说明文档(企业级标准版)
龙茶清欢
博客等级 码龄7年 3720粉丝 375原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙茶清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值