当前位置: 首页 > news >正文

Java转Go日记(三十九):Gorm查询

1.1.1. 查询

    // 获取第一条记录,按主键排序db.First(&user)SELECT * FROM users ORDER BY id LIMIT 1;// 获取最后一条记录,按主键排序db.Last(&user)SELECT * FROM users ORDER BY id DESC LIMIT 1;// 获取所有记录db.Find(&users)SELECT * FROM users;// 使用主键获取记录db.First(&user, 10)SELECT * FROM users WHERE id = 10;

1.1.2. Where查询条件 (简单SQL)

    // 获取第一个匹配记录db.Where("name = ?", "jinzhu").First(&user)SELECT * FROM users WHERE name = 'jinzhu' limit 1;// 获取所有匹配记录db.Where("name = ?", "jinzhu").Find(&users)SELECT * FROM users WHERE name = 'jinzhu';db.Where("name <> ?", "jinzhu").Find(&users)// INdb.Where("name in (?)", []string{"jinzhu", "jinzhu 2"}).Find(&users)// LIKEdb.Where("name LIKE ?", "%jin%").Find(&users)// ANDdb.Where("name = ? AND age >= ?", "jinzhu", "22").Find(&users)// Timedb.Where("updated_at > ?", lastWeek).Find(&users)db.Where("created_at BETWEEN ? AND ?", lastWeek, today).Find(&users)

1.1.3. Where查询条件 (Struct & Map)

注意:当使用struct查询时,GORM将只查询那些具有值的字段

    // Structdb.Where(&User{Name: "jinzhu", Age: 20}).First(&user)SELECT * FROM users WHERE name = "jinzhu" AND age = 20 LIMIT 1;// Mapdb.Where(map[string]interface{}{"name": "jinzhu", "age": 20}).Find(&users)SELECT * FROM users WHERE name = "jinzhu" AND age = 20;// 主键的Slicedb.Where([]int64{20, 21, 22}).Find(&users)SELECT * FROM users WHERE id IN (20, 21, 22);

1.1.4. Not条件查询

    db.Not("name", "jinzhu").First(&user)SELECT * FROM users WHERE name <> "jinzhu" LIMIT 1;// Not Indb.Not("name", []string{"jinzhu", "jinzhu 2"}).Find(&users)SELECT * FROM users WHERE name NOT IN ("jinzhu", "jinzhu 2");// Not In slice of primary keysdb.Not([]int64{1,2,3}).First(&user)SELECT * FROM users WHERE id NOT IN (1,2,3);db.Not([]int64{}).First(&user)SELECT * FROM users;// Plain SQLdb.Not("name = ?", "jinzhu").First(&user)SELECT * FROM users WHERE NOT(name = "jinzhu");// Structdb.Not(User{Name: "jinzhu"}).First(&user)SELECT * FROM users WHERE name <> "jinzhu";

1.1.5. 带内联条件的查询

注意:使用主键查询时,应仔细检查所传递的值是否为有效主键,以避免SQL注入

    // 按主键获取db.First(&user, 23)SELECT * FROM users WHERE id = 23 LIMIT 1;// 简单SQLdb.Find(&user, "name = ?", "jinzhu")SELECT * FROM users WHERE name = "jinzhu";db.Find(&users, "name <> ? AND age > ?", "jinzhu", 20)SELECT * FROM users WHERE name <> "jinzhu" AND age > 20;// Structdb.Find(&users, User{Age: 20})SELECT * FROM users WHERE age = 20;// Mapdb.Find(&users, map[string]interface{}{"age": 20})SELECT * FROM users WHERE age = 20;

1.1.6. Or条件查询

    db.Where("role = ?", "admin").Or("role = ?", "super_admin").Find(&users)SELECT * FROM users WHERE role = 'admin' OR role = 'super_admin';// Structdb.Where("name = 'jinzhu'").Or(User{Name: "jinzhu 2"}).Find(&users)SELECT * FROM users WHERE name = 'jinzhu' OR name = 'jinzhu 2';// Mapdb.Where("name = 'jinzhu'").Or(map[string]interface{}{"name": "jinzhu 2"}).Find(&users)

1.1.7. 查询链

Gorm有一个可链接的API,你可以这样使用它

    db.Where("name <> ?","jinzhu").Where("age >= ? and role <> ?",20,"admin").Find(&users)SELECT * FROM users WHERE name <> 'jinzhu' AND age >= 20 AND role <> 'admin';db.Where("role = ?", "admin").Or("role = ?", "super_admin").Not("name = ?", "jinzhu").Find(&users)

1.1.8. 扩展查询选项

    // 为Select语句添加扩展SQL选项db.Set("gorm:query_option", "FOR UPDATE").First(&user, 10)SELECT * FROM users WHERE id = 10 FOR UPDATE;

1.1.9. FirstOrInit

获取第一个匹配的记录,或者使用给定的条件初始化一个新的记录(仅适用于struct,map条件)

    // Unfounddb.FirstOrInit(&user, User{Name: "non_existing"})user -> User{Name: "non_existing"}// Founddb.Where(User{Name: "Jinzhu"}).FirstOrInit(&user)user -> User{Id: 111, Name: "Jinzhu", Age: 20}db.FirstOrInit(&user, map[string]interface{}{"name": "jinzhu"})user -> User{Id: 111, Name: "Jinzhu", Age: 20}

1.1.10. Attrs

如果未找到记录,则使用参数初始化结构

    // Unfounddb.Where(User{Name: "non_existing"}).Attrs(User{Age: 20}).FirstOrInit(&user)SELECT * FROM USERS WHERE name = 'non_existing';user -> User{Name: "non_existing", Age: 20}db.Where(User{Name: "non_existing"}).Attrs("age", 20).FirstOrInit(&user)SELECT * FROM USERS WHERE name = 'non_existing';user -> User{Name: "non_existing", Age: 20}// Founddb.Where(User{Name: "Jinzhu"}).Attrs(User{Age: 30}).FirstOrInit(&user)SELECT * FROM USERS WHERE name = jinzhu';user -> User{Id: 111, Name: "Jinzhu", Age: 20}

1.1.11. Assign

将参数分配给结果,不管它是否被找到

    db.Where(User{Name: "non_existing"}).Assign(User{Age: 20}).FirstOrInit(&user)user -> User{Name: "non_existing", Age: 20}// Founddb.Where(User{Name: "Jinzhu"}).Assign(User{Age: 30}).FirstOrInit(&user)SELECT * FROM USERS WHERE name = jinzhu';user -> User{Id: 111, Name: "Jinzhu", Age: 30}

1.1.12. FirstOrCreate

获取第一个匹配的记录,或创建一个具有给定条件的新记录(仅适用于struct, map条件)

    // Unfounddb.FirstOrCreate(&user, User{Name: "non_existing"})INSERT INTO "users" (name) VALUES ("non_existing");user -> User{Id: 112, Name: "non_existing"}// Founddb.Where(User{Name: "Jinzhu"}).FirstOrCreate(&user)user -> User{Id: 111, Name: "Jinzhu"}

1.1.13. Attrs

如果未找到记录,则为参数分配结构

    // Unfounddb.Where(User{Name: "non_existing"}).Attrs(User{Age: 20}).FirstOrCreate(&user)SELECT * FROM users WHERE name = 'non_existing';INSERT INTO "users" (name, age) VALUES ("non_existing", 20);user -> User{Id: 112, Name: "non_existing", Age: 20}// Founddb.Where(User{Name: "jinzhu"}).Attrs(User{Age: 30}).FirstOrCreate(&user)SELECT * FROM users WHERE name = 'jinzhu';user -> User{Id: 111, Name: "jinzhu", Age: 20}

1.1.14. Assign

将其分配给记录,而不管它是否被找到,并保存回数据库。

    // Unfounddb.Where(User{Name: "non_existing"}).Assign(User{Age: 20}).FirstOrCreate(&user)SELECT * FROM users WHERE name = 'non_existing';INSERT INTO "users" (name, age) VALUES ("non_existing", 20);user -> User{Id: 112, Name: "non_existing", Age: 20}// Founddb.Where(User{Name: "jinzhu"}).Assign(User{Age: 30}).FirstOrCreate(&user)SELECT * FROM users WHERE name = 'jinzhu';UPDATE users SET age=30 WHERE id = 111;user -> User{Id: 111, Name: "jinzhu", Age: 30}

1.1.15. Select

指定要从数据库检索的字段,默认情况下,将选择所有字段;

    db.Select("name, age").Find(&users)SELECT name, age FROM users;db.Select([]string{"name", "age"}).Find(&users)SELECT name, age FROM users;db.Table("users").Select("COALESCE(age,?)", 42).Rows()SELECT COALESCE(age,'42') FROM users;

1.1.16. Order

在从数据库检索记录时指定顺序,将重排序设置为true以覆盖定义的条件

    db.Order("age desc, name").Find(&users)SELECT * FROM users ORDER BY age desc, name;// Multiple ordersdb.Order("age desc").Order("name").Find(&users)SELECT * FROM users ORDER BY age desc, name;// ReOrderdb.Order("age desc").Find(&users1).Order("age", true).Find(&users2)SELECT * FROM users ORDER BY age desc; (users1)SELECT * FROM users ORDER BY age; (users2)

1.1.17. Limit

指定要检索的记录数

    db.Limit(3).Find(&users)SELECT * FROM users LIMIT 3;// Cancel limit condition with -1db.Limit(10).Find(&users1).Limit(-1).Find(&users2)SELECT * FROM users LIMIT 10; (users1)SELECT * FROM users; (users2)

1.1.18. Offset

指定在开始返回记录之前要跳过的记录数

    db.Offset(3).Find(&users)SELECT * FROM users OFFSET 3;// Cancel offset condition with -1db.Offset(10).Find(&users1).Offset(-1).Find(&users2)SELECT * FROM users OFFSET 10; (users1)SELECT * FROM users; (users2)

1.1.19. 18. Count

获取模型的记录数

    db.Where("name = ?", "jinzhu").Or("name = ?", "jinzhu 2").Find(&users).Count(&count)SELECT * from USERS WHERE name = 'jinzhu' OR name = 'jinzhu 2'; (users)SELECT count(*) FROM users WHERE name = 'jinzhu' OR name = 'jinzhu 2'; (count)db.Model(&User{}).Where("name = ?", "jinzhu").Count(&count)SELECT count(*) FROM users WHERE name = 'jinzhu'; (count)db.Table("deleted_users").Count(&count)SELECT count(*) FROM deleted_users;

1.1.20. Group & Having

    rows, err := db.Table("orders").Select("date(created_at) as date, sum(amount) as total").Group("date(created_at)").Rows()for rows.Next() {...}rows, err := db.Table("orders").Select("date(created_at) as date, sum(amount) as total").Group("date(created_at)").Having("sum(amount) > ?", 100).Rows()for rows.Next() {...}type Result struct {Date  time.TimeTotal int64}db.Table("orders").Select("date(created_at) as date, sum(amount) as total").Group("date(created_at)").Having("sum(amount) > ?", 100).Scan(&results)

1.1.21. Join

指定连接条件

    rows, err := db.Table("users").Select("users.name, emails.email").Joins("left join emails on emails.user_id = users.id").Rows()for rows.Next() {...}db.Table("users").Select("users.name, emails.email").Joins("left join emails on emails.user_id = users.id").Scan(&results)// 多个连接与参数db.Joins("JOIN emails ON emails.user_id = users.id AND emails.email = ?", "jinzhu@example.org").Joins("JOIN credit_cards ON credit_cards.user_id = users.id").Where("credit_cards.number = ?", "411111111111").Find(&user)

1.1.22. Pluck

将模型中的单个列作为地图查询,如果要查询多个列,可以使用Scan

    var ages []int64db.Find(&users).Pluck("age", &ages)var names []stringdb.Model(&User{}).Pluck("name", &names)db.Table("deleted_users").Pluck("name", &names)// 要返回多个列,做这样:db.Select("name, age").Find(&users)

1.1.23. Scan

将结果扫描到另一个结构中。

    type Result struct {Name stringAge  int}var result Resultdb.Table("users").Select("name, age").Where("name = ?", 3).Scan(&result)// Raw SQLdb.Raw("SELECT name, age FROM users WHERE name = ?", 3).Scan(&result)

1.1.24. Scopes

将当前数据库连接传递到func(*DB) *DB,可以用于动态添加条件

    func AmountGreaterThan1000(db *gorm.DB) *gorm.DB {return db.Where("amount > ?", 1000)}func PaidWithCreditCard(db *gorm.DB) *gorm.DB {return db.Where("pay_mode_sign = ?", "C")}func PaidWithCod(db *gorm.DB) *gorm.DB {return db.Where("pay_mode_sign = ?", "C")}func OrderStatus(status []string) func (db *gorm.DB) *gorm.DB {return func (db *gorm.DB) *gorm.DB {return db.Scopes(AmountGreaterThan1000).Where("status in (?)", status)}}db.Scopes(AmountGreaterThan1000, PaidWithCreditCard).Find(&orders)// 查找所有信用卡订单和金额大于1000db.Scopes(AmountGreaterThan1000, PaidWithCod).Find(&orders)// 查找所有COD订单和金额大于1000db.Scopes(OrderStatus([]string{"paid", "shipped"})).Find(&orders)// 查找所有付费,发货订单

1.1.25. 指定表名

    // 使用User结构定义创建`deleted_users`表db.Table("deleted_users").CreateTable(&User{})var deleted_users []Userdb.Table("deleted_users").Find(&deleted_users)SELECT * FROM deleted_users;db.Table("deleted_users").Where("name = ?", "jinzhu").Delete()DELETE FROM deleted_users WHERE name = 'jinzhu';

相关文章:

Java转Go日记(三十九):Gorm查询

1.1.1. 查询 // 获取第一条记录&#xff0c;按主键排序db.First(&user)SELECT * FROM users ORDER BY id LIMIT 1;// 获取最后一条记录&#xff0c;按主键排序db.Last(&user)SELECT * FROM users ORDER BY id DESC LIMIT 1;// 获取所有记录db.Find(&users)SELECT *…...

终端安全与终端管理:有什么区别及其重要性?

在当今快速发展的远程和混合工作环境中&#xff0c;IT 团队面临双重挑战&#xff1a;一方面需保护终端免受日益增长的网络风险&#xff0c;另一方面要管理跨越日益分散网络的设备。这些需求催生了两个关键的 IT 解决方案&#xff1a;终端安全和终端管理。尽管二者时常被共同讨论…...

【二分 优先队列】P3611 [USACO17JAN] Cow Dance Show S|普及+

本文涉及的基础知识点 C二分查找 C堆(优先队列) [USACO17JAN] Cow Dance Show S 题面翻译 题目描述 经过几个月的排练&#xff0c;奶牛们基本准备好展出她们的年度舞蹈表演。今年她们要表演的是著名的奶牛芭蕾——“cowpelia”。 表演唯一有待决定的是舞台的尺寸。一个大…...

蓝桥杯分享经验

系列文章目录 提示&#xff1a;小白先看系列 第一章 蓝桥杯的钱白给吗 文章目录 系列文章目录前言一、自我介绍二、经验讲解:1.基础知识2.进阶知识3.个人观点 三、总结四、后续 前言 第十六届蓝桥杯已经省赛已经结束了&#xff0c;相信很多小伙伴也已经得到自己的成绩了。接下…...

TDengine 安全部署配置建议

背景 TDengine 的分布式、多组件特性导致 TDengine 的安全配置是生产系统中比较关注的问题。本文档旨在对 TDengine 各组件及在不同部署方式下的安全问题进行说明&#xff0c;并提供部署和配置建议&#xff0c;为用户的数据安全提供支持。 安全配置涉及组件 TDengine 包含多…...

Grafana当前状态:SingleStat面板

Grafana的SingleStat面板是一种用于展示单个关键指标(KPI)的可视化组件&#xff0c;特别适合需要突出显示核心业务指标的场景(如实时销售额、在线用户数、系统错误率等)。它通过简洁的布局和丰富的样式选项&#xff0c;帮助用户快速聚焦核心数据。Singlem Panel侧重于展示系统的…...

专题五:floodfill算法(太平洋大西洋水流问题)

以leetcode417题为例 题目解析&#xff1a; 整张图&#xff0c;左边深蓝的是太平洋&#xff0c;右边浅蓝的是大西洋&#xff0c;你需要在矩阵中找到一个点&#xff0c;使其可以流向太平洋又可以流向大西洋&#xff0c;并且你每次流的时候只能由高到低&#xff0c;或者相等到相…...

【HTML】【面试提问】HTML面试提问总结

第一章 HTML基础相关提问 1.1 HTML基本概念 1.1.1 什么是HTML HTML 即超文本标记语言&#xff08;HyperText Markup Language&#xff09;&#x1f60e;&#xff0c;它是用于创建网页的标准标记语言。简单来说&#xff0c;HTML 就像是搭建房屋的砖块&#x1f9f1;&#xff0…...

解锁MySQL性能调优:高级SQL技巧实战指南

高级SQL技巧&#xff1a;解锁MySQL性能调优的终极指南 开篇 当前&#xff0c;随着业务系统的复杂化和数据量的爆炸式增长&#xff0c;数据库性能调优成为了技术人员面临的核心挑战之一。尤其是在高并发、大数据量的场景下&#xff0c;SQL 查询的性能直接影响到整个系统的响应…...

数据分析与应用---数据可视化基础

目录 Matplotlib基础绘图 &#xff08;一&#xff09;、pyplot绘图基础语法与常用参数 1、pyplot基础语法 &#xff08;1&#xff09; 创建画布与创建子图 &#xff08;2&#xff09; 添加画布内容 &#xff08;3&#xff09; 保存与显示图形 案例代码 2. 设置pyplot的动态…...

android双屏之副屏待机显示图片

摘要&#xff1a;android原生有双屏的机制&#xff0c;但需要芯片厂商适配框架后在底层实现。本文在基于芯发8766已实现底层适配的基础上&#xff0c;仅针对上层Launcher部分对系统进行改造&#xff0c;从而实现在开机后副屏显示一张待机图片。 副屏布局 由于仅显示一张图片&…...

oracle序列自增问题

1.先查询表名对应的序列名称 SELECT trigger_name, trigger_type, triggering_event FROM all_triggers WHERE table_name 表名;2. 查询id最大值 SELECT MAX(ID) FROM 表名;3. 查询下一次生成ID SELECT SJCJ_ENERGY_DATA_INSERTID.NEXTVAL FROM DUAL;4. 设置临时步长,越过…...

FLASHDB API分析

fdb_kvdb_init 函数详解 fdb_kvdb_init 是 FlashDB 框架中用于 ​初始化键值数据库&#xff08;KVDB&#xff09;​​ 的核心接口&#xff0c;其功能涵盖底层存储配置、默认数据加载与多模式适配。以下从功能、参数、使用场景及注意事项展开分析&#xff1a; 一、功能与作用 ​…...

使用 ABP vNext 集成 MinIO 构建高可用 BLOB 存储服务

&#x1f680; 使用 ABP vNext 集成 MinIO 构建高可用 BLOB 存储服务 本文基于 ABP vNext MinIO 的对象存储集成实践&#xff0c;系统讲解从 MinIO 部署、桶创建、ABP 集成、上传 API、安全校验、预签名访问&#xff0c;到测试、扩展及多租户支持的全过程。目标是构建一套可复…...

3.安卓逆向2-安卓文件目录

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;图灵Python学院 上一个内容&#xff1a;2.安卓逆向2-adb指令 首先使用adb连接到手机&#xff0c;如下图使用adb命令列出手机的目录&am…...

云原生时代的系统可观测性:理念变革与实践体系

📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:为什么可观测性在云原生时代变得更加重要? 传统应用系统运行于固定服务器,拓扑结构稳定、依赖路径清晰,排查故障依赖日志和人工经验已足够支撑运维。但在云原生环境中,系统正快速演变为: 微…...

力扣网-复写零

1.题目要求 2.题目链接 1089. 复写零 - 力扣&#xff08;LeetCode&#xff09; 3.题目解答 class Solution {public void duplicateZeros(int[] arr) {int cur0,dest-1,narr.length;while(cur<n){//遇到0就dest走两步if(arr[cur]0){dest2;}//遇到非零元素dest就走一步els…...

高项-挣值管理TCPI

TCPI&#xff08;完工尚需绩效指数&#xff09;的英文全称及含义 TCPI 是项目管理&#xff08;尤其是挣值管理EVM, Earned Value Management&#xff09;中的一个关键指标&#xff0c;其英文全称为&#xff1a; To-Complete Performance Index 中文译为**“完工尚需绩效指数”…...

Java大厂面试三轮问答:微服务与数据库技术深度解析

Java大厂面试&#xff1a;谢飞机的三轮挑战 第一轮&#xff1a;微服务基础与电商场景设计 面试官: "谢飞机&#xff0c;假设我们要设计一个电商平台&#xff0c;需要支持用户下单、支付以及订单追踪。你会如何设计微服务架构&#xff1f;" 谢飞机: "呃&#…...

Linux 移植 Docker 详解

一、移植前的环境准备 在将 Docker 移植到 Linux 系统之前&#xff0c;需要确保系统满足一定的条件&#xff0c;以保证 Docker 能够稳定运行。 1. 操作系统版本要求 Docker 对 Linux 操作系统版本有一定的要求&#xff0c;不同的 Docker 版本适配不同的 Linux 发行版及版本。常…...

滑动验证码缺口识别与自动化处理技术解析

在如今的网络安全环境中&#xff0c;滑动验证码作为一种主流的人机验证方案&#xff0c;被广泛应用。它的核心挑战主要集中在两个方面&#xff1a;一是如何准确地识别出缺口位置&#xff0c;二是如何模拟出逼真的拖动轨迹。 一、缺口识别技术方案 &#xff08;一&#xff09;…...

C++字符串处理:`std::string`和`std::string_view`的区别与使用

在 C中&#xff0c;std::string和std::string_view都用于处理字符串&#xff0c;但它们的用途和性能特点有很大不同。本教程将通过代码示例和流程图&#xff0c;帮助你快速掌握它们的使用方法。 1.什么是std::string和std::string_view&#xff1f; 1.1std::string std::str…...

Uniapp中动态控制scroll-view滚动的方式

在Uniapp 4.45中&#xff0c;动态修改scroll-view的scroll-left属性时无法触发滚动&#xff08;直接设置scroll-left属性值没问题&#xff09;&#xff0c;这通常是因为数据更新与 DOM 渲染之间的异步特性导致的。知道了原因&#xff0c;但是直接修改scroll-left属性值还是失败…...

手机怎么查看网络ip地址?安卓/iOS设备查询指南

在移动互联网时代&#xff0c;IP地址作为设备的网络身份证&#xff0c;无论是网络调试、远程连接还是排查故障都至关重要。本文将系统介绍安卓和iOS设备查看IP地址的多种方法&#xff0c;帮助您快速掌握这一实用技能。 一、安卓手机查看IP地址方法 1、通过WiFi设置查看 打开设…...

R语言+贝叶斯网络:涵盖贝叶斯网络的基础、离散与连续分布、混合网络、动态网络,Gephi可视化,助你成为数据分析高手!

&#x1f50d; 在现代生态、环境及地学研究中&#xff0c;变量及其因果关系的推断是核心课题之一。然而&#xff0c;传统的因果关系研究通常依赖于昂贵的实验&#xff0c;而实验结果往往与天然环境中的实际因果联系存在较大偏差。例如&#xff0c;在生态系统中&#xff0c;物种…...

手机内存不够,哪些文件可以删?

1️⃣应用缓存文件 安卓&#xff1a;通过「文件管理器」→「Android」→「data」或「cache」文件夹&#xff08;部分需权限&#xff09;&#xff0c;或直接在应用设置中清除缓存 iOS&#xff1a;无需手动清理&#xff0c;系统会自动管理&#xff0c;或在应用内设置中清除&…...

C语言之 比特(bit)、字节(Byte)、字(Word)、整数(Int)

在C语言中&#xff0c;经常出现上述的概念&#xff0c;即比特&#xff08;bit&#xff09;、字节&#xff08;Byte&#xff09;、字&#xff08;Word&#xff09;、整数&#xff08;Int&#xff09;。查看C语言标准&#xff0c;比特&#xff08;bit&#xff09;的定义如下&…...

组态王通过开疆智能profinet转ModbusTCP网关连接西门子PLC配置案例

本案例是组态王通过使用开疆智能研发的Profinet转ModbusTCP网关采集西门子1200PLC中数据的案例。 网关配置 首先来配置网关的参数&#xff0c;打开网关配置软件“Gateway Configuration Studio” 由于组态王那侧设定为ModbusTCP客户端所以网关作为ModbusTCP服务器。新建项目…...

GO语言学习(五)

GO语言学习&#xff08;五&#xff09; 前面我们已经学了一些关于golang的基础知识&#xff0c;从这一期开始&#xff0c;我们就来讲解一下基于golang为后端的web开发&#xff0c;首先这一期为一些golang为后端的web开发基础讲解&#xff0c;我们将会从web的工作方式、golang如…...

Supermemory:让大模型拥有“长效记忆“

目录 引言&#xff1a;打破大语言模型的记忆瓶颈&#xff0c;迎接AI交互新范式 一、Supermemory 核心技术 1.1 透明代理机制 1.2 智能分段与检索系统 1.3 自动Token管理 二、易用性 三、性能与成本 四、可靠性与兼容性 五、为何选择 Supermemory&#xff1f; 六、对…...

Hooks实现原理与自定义Hooks

React Hooks 是 React 16.8 引入的一种机制&#xff0c;允许在函数组件中使用状态&#xff08;state&#xff09;、副作用&#xff08;effect&#xff09;等功能&#xff0c;而无需编写 class 组件。其核心原理是通过闭包和链表结构&#xff0c;在 React 的 Fiber 架构中管理组…...

【NLP】35. 构建高质量标注数据

如何构建高质量标注数据&#xff1f;大语言模型背后的那只“看不见的手” 在讨论大语言模型&#xff08;LLM&#xff09;性能突破时&#xff0c;人们总是聚焦在模型参数、结构设计和训练技巧上。但真正懂行的人都知道——再好的模型也离不开一手好数据&#xff0c;尤其是那些“…...

2024CCPC吉林省赛长春邀请赛 Java 做题记录

目录 I. The Easiest Problem G. Platform Game L. Recharge E. Connected Components I. The Easiest Problem 签到题 直接输出 21 即可 // github https://github.com/Dddddduo // github https://github.com/Dddddduo/acm-java-algorithm // github https://github.com/…...

黑马程序员C++2024新版笔记 第三章 数组

1.数组定义 数组是一批相同类型的元素&#xff08;element&#xff09;的集合组成的数据结构。 声明语法&#xff1a; <数据类型> <数组名> [<数组长度>] int v[6] // 声明了可以存放6个int数字的数组 数组的每个元素有编号&#xff0c;称之为下标索引…...

Golang的网络安全策略实践

Golang的网络安全策略实践 一、理解网络安全的重要性 当今的网络环境中&#xff0c;安全问题日益突出&#xff0c;各种类型的攻击如雨后春笋般涌现&#xff0c;给个人和组织的信息资产造成了严重威胁。因此&#xff0c;制定和实施有效的网络安全策略至关重要。 二、Golang在网络…...

SAP学习笔记 - 开发13 - CAP 之 添加数据库支持(Sqlite)

上一章学习了CAP开发准备&#xff0c;添加Service。 SAP学习笔记 - 开发12 - CAP 之 开发准备&#xff0c;添加服务-CSDN博客 本章继续学习CAP开发 - 添加数据库支持&#xff08;Sqlite&#xff09;。 目录 1&#xff0c;数据库准备 - H2 内存数据库 - Sqlite数据库 a&…...

DRIVEGPT4: 通过大语言模型实现可解释的端到端自动驾驶

《DriveGPT4: Interpretable End-to-End Autonomous Driving via Large Language Model》 2024年10月发表&#xff0c;来自香港大学、浙江大学、华为和悉尼大学。 多模态大型语言模型&#xff08;MLLM&#xff09;已成为研究界关注的一个突出领域&#xff0c;因为它们擅长处理…...

LLM最后怎么输出值 解码语言模型:从权重到概率的奥秘

LM Head Weights&#xff08;语言模型头部权重&#xff09;&#xff1a;左侧的“LM Head Weights”表示语言模型头部的权重矩阵&#xff0c;它是模型参数的一部分。权重矩阵与输入数据进行运算。Logits&#xff08;未归一化对数概率&#xff09;&#xff1a;经过与LM Head Weig…...

Better Faster Large Language Models via Multi-token Prediction 原理

目录 模型结构&#xff1a; Memory-efficient implementation&#xff1a; 实验&#xff1a; 1. 在大规模模型上效果显著&#xff1a; 2. 在不同类型任务上的效果&#xff1a; 为什么MLP对效果有提升的几点猜测&#xff1a; 1. 并非所有token对生成质量的影响相同 2. 关…...

【NLP】34. 数据专题:如何打造高质量训练数据集

构建大语言模型的秘密武器&#xff1a;如何打造高质量训练数据集&#xff1f; 在大语言模型&#xff08;LLM&#xff09;如 GPT、BERT、T5 爆发式发展的背后&#xff0c;我们常常关注模型架构的演化&#xff0c;却忽视了一个更基础也更关键的问题&#xff1a;训练数据从哪里来…...

uniapp 微信小程序 获取openId

嗨&#xff0c;我是小路。今天主要和大家分享的主题是“uniapp 微信小程序 获取openId”。 一、主要属性 1.uni.login 二、实例代码 1、前端代码 uni.login({provider: weixin,success: (res) > {uni.showLoading({title: 登录中...,mask: true})let code res.…...

企业标准信息公共服务平台已开放标准通编辑器访问入口

标准通 数字化标准编辑器 专业、高效、便捷 企业标准信息公共服务平台 近日&#xff0c;企业标准信息公共服务平台已开放标准通编辑器访问入口&#xff0c;可进入官网指定版块使用&#xff01; 核心功能亮点 解决企业痛点 传统标准编制&#xff0c;需反复核对格式、逐条…...

小米MUJIA智能音频眼镜来袭

智能眼镜赛道风云再起&#xff0c;小米新力作MIJIA智能音频眼镜2正式亮相&#xff0c;引发市场热议。 这款产品在设计和功能上都有显著提升&#xff0c;为用户带来更舒适便捷的佩戴体验&#xff0c;同时也标志着小米在智能眼镜领域的持续深耕。 轻薄设计&#xff0c;舒适体验 …...

Node.js 实战八:服务部署方案对比与实践

你开发好了接口&#xff0c;准备上线&#xff0c;然后开始犹豫&#xff1a; “直接 node app.js 启就行了吗&#xff1f;” “要不要用 PM2&#xff1f;听说 Docker 更稳&#xff1f;” “Serverless 是不是就不用管服务器了&#xff1f;” 部署是从“能运行”到“能长久运行”…...

地下水安全监测实施方案

一、方案目标 本方案的核心目标在于构建一个全方位、科学严谨且高效运转的地下水监测体系&#xff0c;旨在实现对地下水资源全方位的动态监测、科学化的管理和有效的保护。监测的具体目标涵盖了地下水位、流量以及水质等多个关键性指标&#xff0c;通过精准的数据采集和分析&am…...

HTTP由浅入深

概述 超文本传输协议&#xff08;HTTP, Hypertext Transfer Protocol&#xff09; 是一种用于传输超媒体文档&#xff08;例如 HTML&#xff09;的应用层协议。它最初被设计用于 Web 浏览器与 Web 服务器之间的通信&#xff0c;但也广泛应用于其他客户端与服务器的交互。 HTT…...

Conda 环境下安装 GCC 和 glibc (crypt.h) 教程

Conda 环境下安装 GCC 和 glibc (crypt.h) 教程 由于运行Low-Light Image Enhancement via Structure Modeling and Guidance原始论文代码&#xff0c;发现服务器的gcc版本太老&#xff0c;没法运行。同时缺少libxcrypt (crypt.h)&#xff0c;不得不询问gpt进行解答。发现可以…...

C++面试3——const关键字的核心概念、典型场景和易错陷阱

const关键字的核心概念、典型场景和易错陷阱 一、const本质&#xff1a;类型系统的守护者 1. 与#define的本质差异 维度#defineconst编译阶段预处理替换编译器类型检查作用域无作用域&#xff08;全局污染&#xff09;遵循块作用域调试可见性符号消失保留符号信息类型安全无类…...

超小多模态视觉语言模型MiniMind-V 训练

简述 MiniMind-V 是一个超适合初学者的项目&#xff0c;让你用普通电脑就能训一个能看图说话的 AI。训练过程就像教小孩&#xff1a;先准备好图文材料&#xff08;数据集&#xff09;&#xff0c;教它基础知识&#xff08;预训练&#xff09;&#xff0c;再教具体技能&#xf…...

深入理解仿函数(Functors):从概念到实践

文章目录 1. 什么是仿函数&#xff1f;2. 仿函数与普通函数的区别3. 标准库中的仿函数4. 仿函数的优势4.1 状态保持4.2 可定制性4.3 性能优势 5. 现代C中的仿函数5.1 Lambda表达式5.2 通用仿函数 6. 仿函数的高级应用&#xff08;使用C2020标准库及以上版本&#xff09;6.1 函数…...