Laravel 10 whereRaw安全风险全解析,避免SQL注入的7个关键步骤

第一章:Laravel 10 whereRaw方法的核心机制

Laravel 的 whereRaw 方法允许开发者在查询构造器中直接注入原始 SQL 条件,绕过 Laravel 默认的参数绑定安全层,实现更灵活的数据库查询控制。该方法适用于需要复杂条件判断或数据库函数参与的场景。

基本语法与使用方式

whereRaw 接收两个参数:第一个是包含原始 SQL 片段的字符串,第二个是可选的绑定参数数组,用于防止 SQL 注入。


// 示例:查询价格大于成本加税费的记录
$products = DB::table('products')
    ->whereRaw('price > cost + (cost * ?)', [0.1])
    ->get();

上述代码中,? 是占位符,实际值通过第二个参数传入,由 Laravel 自动绑定,确保安全性。

与 where 的关键区别

  • 安全性:普通 where 方法自动转义字段和值,而 whereRaw 不进行自动转义,需手动处理输入
  • 灵活性:whereRaw 支持数据库函数、运算符表达式(如 LIKE、IN、CASE)等高级 SQL 结构
  • 性能:在处理复杂逻辑时,whereRaw 可减少多次查询或应用层计算,提升执行效率

常见应用场景

场景SQL 片段示例
日期范围过滤DATE(created_at) = CURDATE()
JSON 字段查询metadata->"$.status" = ?
数学表达式比较quantity * unit_price > ?
graph TD A[调用 whereRaw] --> B{解析原始SQL} B --> C[绑定参数到占位符] C --> D[生成最终SQL语句] D --> E[执行数据库查询]

第二章:whereRaw中的SQL注入风险剖析

2.1 理解whereRaw的底层执行原理

SQL原生条件注入机制

whereRaw 是 Laravel 查询构造器提供的方法,用于直接插入原始 SQL 片段作为查询条件。其本质是绕过语法树解析,将开发者传入的字符串拼接到最终 SQL 的 WHERE 子句中。


$users = DB::table('users')
    ->whereRaw('age > ? AND status = ?', [18, 'active'])
    ->get();

上述代码生成 SQL:SELECT * FROM users WHERE age > ? AND status = ?,并绑定参数防止注入。两个问号会被后续数组中的值安全替换。

参数绑定与安全性保障
  • 使用占位符 ? 实现动态参数绑定
  • 避免直接字符串拼接导致的 SQL 注入风险
  • 底层调用 PDO 预处理语句完成安全执行

2.2 常见SQL注入攻击场景模拟

基于字符串拼接的注入漏洞
当应用程序未对用户输入进行过滤,直接拼接SQL语句时,攻击者可构造特殊输入篡改查询逻辑。例如以下Java代码片段:

String username = request.getParameter("username");
String query = "SELECT * FROM users WHERE name = '" + username + "'";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(query);
上述代码将用户输入直接拼入SQL语句。若输入 ' OR '1'='1,最终查询变为: SELECT * FROM users WHERE name = '' OR '1'='1',导致返回所有用户数据。
防御建议
  • 使用预编译语句(Prepared Statement)防止SQL拼接
  • 对输入进行白名单校验和转义处理
  • 最小化数据库账户权限,避免过度授权

2.3 危险参数拼接方式实战演示

在Web开发中,直接拼接用户输入到SQL语句是常见漏洞源头。以下代码模拟了危险的字符串拼接过程:

username = request.GET['user']
password = request.GET['pass']
query = "SELECT * FROM users WHERE username='" + username + "' AND password='" + password + "'"
cursor.execute(query)
上述代码将用户输入直接拼入SQL语句,攻击者可通过构造 `' OR '1'='1` 绕过认证逻辑。例如,当输入用户名为 `admin'--` 时,生成的查询变为: SELECT * FROM users WHERE username='admin'--' AND password='...',注释符使密码校验失效。
常见注入变体
  • 布尔盲注:通过真假判断推断数据
  • 时间延迟注入:利用sleep()函数探测数据库结构
  • 联合查询注入:附加SELECT语句窃取数据
使用预编译语句可有效防御此类攻击。

2.4 利用数据库日志追踪恶意查询

数据库日志是检测异常行为的关键资源。通过启用查询日志(如MySQL的general_log或PostgreSQL的log_statement),可记录所有执行的SQL语句,便于后续审计。
开启MySQL通用查询日志
SET GLOBAL general_log = 'ON';
SET GLOBAL log_output = 'TABLE';
-- 日志将写入mysql.general_log表
该配置启用后,所有客户端连接和SQL执行动作都会被记录到数据表中,便于使用SQL分析高频或危险操作,例如含DROP、UNION SELECT等关键字的语句。
识别可疑模式的查询示例
  • 短时间内大量失败的登录尝试(可能为暴力破解)
  • 非工作时间执行的SELECT * FROM users操作
  • 包含SQL注入特征的语句,如' OR 1=1 --
结合自动化脚本定期扫描日志表,可快速定位潜在威胁源IP并触发告警机制。

2.5 安全检测工具集成与自动化扫描

在现代DevSecOps实践中,安全检测工具的集成是保障软件供应链安全的关键环节。通过将静态应用安全测试(SAST)和动态应用安全测试(DAST)工具嵌入CI/CD流水线,实现代码提交即触发自动扫描。
常用工具集成示例
  • GitLab CI中集成Bandit进行Python代码漏洞扫描
  • Jenkins Pipeline调用SonarQube进行质量与安全分析
  • GitHub Actions运行Trivy检测容器镜像漏洞
自动化扫描配置片段

scan-security:
  image: python:3.9
  script:
    - pip install bandit
    - bandit -r app/ -f json -o report.json
  artifacts:
    paths:
      - report.json
该CI任务使用Bandit对app/目录进行递归扫描,输出JSON格式报告并保留为构建产物,便于后续分析与告警。
工具能力对比
工具类型支持语言集成方式
SonarQubeSAST多语言HTTP API / Scanner CLI
TrivySAST/DAST配置文件、容器CLI 扫描本地路径

第三章:安全编码实践与替代方案

3.1 使用参数绑定抵御注入攻击

在构建数据库驱动的应用时,SQL注入是常见且危险的安全威胁。通过拼接字符串构造SQL语句极易被恶意输入利用。参数绑定(Parameterized Queries)通过预编译语句与占位符机制,将数据与代码逻辑分离,从根本上阻断注入路径。
参数绑定工作原理
数据库预编译SQL模板,将用户输入作为纯数据传递,不参与语句结构解析。
stmt, err := db.Prepare("SELECT id, name FROM users WHERE age > ?")
if err != nil {
    log.Fatal(err)
}
rows, err := stmt.Query(18) // 18作为参数传入,非SQL拼接
上述Go代码使用?占位符,实际值在执行时安全绑定,避免了字符串拼接风险。
优势对比
  • 安全性:输入内容不会改变SQL语义
  • 性能:预编译语句可重复执行,提升效率
  • 可维护性:代码清晰,逻辑与数据分离

3.2 转换whereRaw为QueryBuilder链式调用

在构建动态查询时,直接使用 whereRaw 容易导致SQL注入风险并降低可读性。通过转换为 QueryBuilder 的链式调用,可提升代码安全性与维护性。
链式调用优势
  • 避免手动拼接SQL语句,减少注入风险
  • 支持条件动态组合,逻辑更清晰
  • 便于单元测试和参数隔离
代码示例

$query->where('status', '=', 'active')
      ->where('created_at', '>', now()->subDays(7))
      ->orderBy('created_at', 'desc');
上述代码通过方法链替代原始SQL拼接,每个条件独立可控。参数由框架自动绑定,有效防止SQL注入,同时提升语义表达力。

3.3 自定义查询作用域封装高危逻辑

在复杂业务系统中,数据库查询常涉及敏感或高风险操作,如软删除处理、权限过滤等。直接在控制器或服务层拼接条件易导致逻辑泄露或误操作。
作用域封装优势
  • 统一控制数据访问边界
  • 避免重复代码,提升可维护性
  • 集中管理安全策略
示例:GORM中的自定义作用域
// 排除已删除记录的公共作用域
func NotDeleted() func(db *gorm.DB) *gorm.DB {
    return func(db *gorm.DB) *gorm.DB {
        return db.Where("deleted_at IS NULL")
    }
}

// 使用时链式调用
db.Scopes(NotDeleted()).Find(&users)
该代码定义了一个名为 NotDeleted 的作用域函数,返回一个修饰器函数,自动为所有查询添加软删除过滤条件,有效防止数据越权访问。

第四章:企业级防护策略与最佳实践

4.1 输入验证与数据过滤中间件设计

在现代Web应用架构中,输入验证与数据过滤是保障系统安全的第一道防线。通过设计通用的中间件,可在请求进入业务逻辑前统一拦截并处理非法输入。
中间件核心职责
该中间件主要负责:解析请求参数、执行规则校验、清洗敏感字符、返回标准化错误信息。
func InputValidationMiddleware(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        if err := validateRequest(r); err != nil {
            http.Error(w, err.Error(), http.StatusBadRequest)
            return
        }
        next.ServeHTTP(w, r)
    })
}
上述Go语言示例展示了中间件的基本结构。`validateRequest`函数封装了具体的校验逻辑,若验证失败则立即终止流程并返回400状态码。
常用校验规则
  • 字段类型与格式(如邮箱、手机号)
  • 字符串长度限制
  • 防止SQL注入与XSS攻击的字符过滤
  • 必填字段检查

4.2 数据库权限最小化原则实施

在数据库安全管理中,权限最小化是核心安全原则之一。每个数据库账户应仅被授予完成其职责所必需的最小权限,避免过度授权导致数据泄露或恶意操作。
权限分配最佳实践
  • 按角色划分用户权限,如只读、写入、管理等角色
  • 禁止直接为用户赋予DBA权限,应通过角色间接授权
  • 定期审计权限分配,及时回收不再需要的权限
MySQL权限控制示例
-- 创建应用专用用户
CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'StrongPass!2024';

-- 仅授予必要的DML权限
GRANT SELECT, INSERT, UPDATE, DELETE ON prod_db.orders TO 'app_user'@'192.168.1.%';

-- 刷新权限
FLUSH PRIVILEGES;
上述语句创建了一个限定IP段访问的应用用户,并仅赋予其对订单表的增删改查权限。通过限定主机地址和精确到表的权限控制,有效缩小了攻击面。生产环境中建议结合TLS加密连接使用,进一步提升安全性。

4.3 查询白名单机制与语法分析器应用

在高安全要求的数据库访问场景中,查询白名单机制是防止恶意SQL注入的关键防线。通过预定义允许执行的SQL模板,系统仅放行符合规则的查询请求。
白名单规则配置示例
-- 允许的查询模板
SELECT user_id, name FROM users WHERE status = ?;
该模板允许通过参数化方式查询用户状态,但禁止任意字段或表名拼接,有效限制非法访问路径。
语法分析器的集成应用
使用ANTLR构建自定义SQL语法树,对输入语句进行结构解析:
  • 词法分析:识别关键字、标识符与操作符
  • 语法校验:验证语句是否匹配白名单模式
  • 抽象语法树(AST)遍历:提取WHERE条件中的字段与值类型
检查项允许值动作
表名users, orders放行
操作类型SELECT拒绝非读操作

4.4 审计日志与异常查询监控体系搭建

审计日志采集设计
通过数据库代理层(如MySQL Proxy或PgBouncer)捕获所有SQL请求,记录执行用户、客户端IP、执行时间及影响行数。关键字段如下:
字段名说明
user执行查询的数据库用户
client_ip来源IP地址
query_timeSQL执行耗时(毫秒)
affected_rows影响数据行数
异常行为识别规则
基于阈值和模式匹配检测潜在风险操作:
  • 单次查询扫描超过10万行数据
  • 非维护时段执行全表删除或更新
  • 高频短间隔相似SQL请求(防暴力探测)
// 示例:Golang中判断慢查询
if queryTime > 2000 && affectedRows > 50000 {
    log.Warn("潜在慢查询", "sql", sql, "time_ms", queryTime)
    alert.Send("SLOW_QUERY_DETECTED")
}
该逻辑在中间件层实现,满足性能与可观测性平衡。

第五章:从防御到主动检测的演进之路

随着攻击手段日益复杂,传统基于规则的防火墙和入侵防御系统(IPS)已难以应对高级持续性威胁(APT)。现代安全架构正从被动防御转向主动检测,强调对异常行为的实时监控与响应。
行为基线建模
通过机器学习分析用户与实体的行为模式,建立正常行为基线。一旦出现偏离,如非工作时间大量数据外传,系统将自动触发告警。例如,使用无监督学习算法对登录日志进行聚类分析:

from sklearn.ensemble import IsolationForest
import pandas as pd

# 加载用户登录日志(时间、IP、操作类型)
df = pd.read_csv("auth_logs.csv")
features = pd.get_dummies(df[["hour", "src_ip", "action"]])

# 训练孤立森林模型
model = IsolationForest(contamination=0.1)
anomalies = model.fit_predict(features)
df["is_anomaly"] = anomalies
print(df[df["is_anomaly"] == -1])  # 输出异常记录
威胁狩猎流程
主动威胁狩猎不再等待告警,而是假设网络已被渗透,主动搜索隐蔽痕迹。典型流程包括:
  • 确定调查目标,如横向移动迹象
  • 收集端点、网络流量与身份认证日志
  • 使用SIEM工具执行跨源关联查询
  • 验证可疑进程或DNS隧道行为
  • 生成可操作情报并更新检测规则
实战案例:检测Cobalt Strike beaconing
某企业通过分析DNS请求频率与域名熵值,发现异常外联行为。结合以下指标构建检测逻辑:
指标阈值说明
DNS请求频率>50次/分钟超出正常解析行为
域名熵值>3.5高熵可能为DGA生成域名
TTL值<60秒常见于恶意C2通信
SQL注入防御实战:从原理到实践,构建数据库安全防线 SQL注入作为Web应用安全的核心威胁,其本质源于应用程序对用户输入数据的过度信任,将未经验证的数据直接拼接到SQL查询语句中执行。攻击者通过构造恶意输入,能够欺骗数据库执行非授权操作,从而绕过认证、窃取敏感数据甚至获取服务器控制权。在网络安全领域,SQL注入常年位居OWASP Top 10前列,是渗透测试、CTF竞赛和日常安全审计中的重点检测对象。理解其工作原理,掌握参数化查询、输入验证等防御技术,对于保护用户数据、满足合规要求至关重要。本文结合DVWA靶场、Laravel框架等实战场景,深入剖析SQL注 阅读详情

相关推荐

Laravel中的where方法:构建精确查询条件

通过Laravel的where方法,我们可以轻松构建复杂的查询条件,以获取所需的数据。无论是简单的等于操作还是复杂的多条件查询,where方法都能满足我们的需求。在Laravel框架中,where方法是一个强大的查询构建器,用于构建数据库查询的条件语句。通过使用where方法,我们可以指定一个或多个条件,以过滤查询结果并获取所需的数据。除了使用基本的等于运算符,where方法还支持使用LIKE运算符进行模糊查询。上述代码将返回一个包含所有名为’John’的用户的查询结果。

2301_79326510的博客 786

laravel中有条件使用where

在项目开发的过程中;有时候会有多个参数 去用在where查询中;那么这里的where语句是可能有也可能没有的 1.用原生的mysql语句来实现 private function getData($type, $status, $data_id, $start_time, $end_time, $size, $page, $id) { $type = trim($...

weixin_30522095的博客 1313

SpringBoot+Vue+Mysql社区医院信息平台(源码+文档)

SpringBoot+Vue+Mysql学生宿舍信息管理系统 WEB端软件项目(源码+文档) 项目包含:①完整源码(后端+管理后台+用户前台);②数据库脚本文件;③万字论文文档;④开题报告;⑤答辩PPT;⑥项目运行视频教程。 项目架构: B/S 架构、MVC 分层设计 技术栈: Java、MySQL、SpringBoot、MyBatis-Plus、Token 权限校验、管理后台 Vue+ElementUI+ECharts、用户前台 Layui+jQuery、Maven 构建。 一、角色设计 学生用户: 注册登录、浏览宿舍信息、查询宿舍安排、在线报修、缴费查询、失物招领、桶装水预订、评论交流、收藏等。 商家用户: 注册登录、桶装水品牌与商品信息维护、预订订单查看与处理。 维修人员: 注册登录、查看待处理报修、接单维修、填写报修处理结果与进度反馈。 管理员: 学生管理、班级管理、宿舍信息管理、宿舍安排管理、报修处理管理、缴费信息管理、卫生检查与文明宿舍管理、失物招领管理、桶装水与商家管理、维修人员管理、公告资讯与轮播图管理等。 二、前台功能模块(学生端) 1. 首页展示:轮播图、宿舍公告、最新动态推荐、常用服务快速入口 2. 宿舍信息模块:宿舍列表、楼栋与房间条件筛选、宿舍详情查看、我的宿舍安排查询 3. 在线报修模块:在线提交宿舍设施报修申请、上传故障描述、查看报修进度与维修处理结果 4. 缴费模块:水电等缴费记录查询、缴费状态查看 5. 卫生检查与文明宿舍:宿舍卫生检查结果公示、文明宿舍展示 6. 失物招领模块:失物信息发布、招领信息发布、详情查看、评论互动 7. 桶装水预订:桶装水品牌与商品浏览、在线预订、我的预订记录查询 8. 假期留宿:假期留校申请提交、申请记录查询 9. 评论与收藏:信息评论、查看他人评论、评论回复互动、收藏感兴趣的内容 10. 个人中心...

Laravel 10查询构建器实战:动态orWhere条件如何避免SQL注入风险?

掌握Laravel 10查询构建器orWhere的正确用法,有效防范SQL注入风险。适用于动态条件搜索场景,通过参数绑定与闭包封装实现安全查询,提升应用安全性与代码可维护性,值得收藏。

BytePulse的博客 643

YOLOv8作物病害检测实战源码

这是一套基于YOLOv8n的农田病虫害目标检测系统,对叶片照片做目标检测,识别健康叶片、褐斑病、白粉病、锈病四类,并给出对应防治建议。全流程纯CPU可跑,配套交付完整Python源码、9章实战教程(md/html/pdf三种格式)、100张自造样本及YOLO标签、训练曲线与混淆矩阵截图、Tkinter界面和答辩PPT。 系统围绕五项功能展开:同一套推理逻辑覆盖图像、视频、摄像头三种来源;图形界面选文件即检测,画面叠彩色框标注病名与置信度,右侧面板同步给出症状与防治措施;检测记录自动写入CSV,统计页一键生成四类病害占比饼图;训练结束自动产出损失与精度曲线;内置防治建议文案库,检测命中即回填面板。 选型用YOLOv8n nano档,参数量约320万、权重约6.2MB,CPU单帧几十毫秒,小样本训练5到8分钟完成。数据由data_gen.py程序化绘制100张叶片图,固定随机种子,重跑分布一致,不依赖公开数据集。依赖全部锁版本,教程第7章整理了19条真实报错及排查方法,第8章给出换模型档、换PlantVillage数据集的迁移路径。 适合做计算机视觉方向课程设计或毕业设计的学生,也适合智慧农业方向想了解检测模型如何落进业务面板的学习者。不需要GPU,不需要系统学过目标检测,教程第3章会按需补齐原理。 使用时先pip install -r requirements.txt装好依赖,download_data.py下载预训练权重,data_gen.py生成样本后train.py训练,完成后用main.py infer批量检测或main.py gui启动界面。

数据挖掘实战:决策树 + 聚类 + 关联规则,零 Key 离线可跑(Python 源码)

数据挖掘实战包。用 Python 标准库实现 CART 风格决策树、K-Means 聚类与 Apriori 关联规则,在虚构「星河便利店」会员表和购物篮上跑通分类、分群与购物篮分析,并给出准确率、轮廓系数、支持度/置信度/提升度。零第三方依赖、零 API Key 即可离线跑通。含 4 个样例、离线冒烟、中文 README(含「使用方法」)。均为作者原创可运行源码。MIT。作者 blog.youkuaiyun.com/mtl1994

laravel where的高级使用方法

Laravel作为一个人见人爱的框架,相信很多人在使用,那就避免不了对Sql语句的应用,很多情况下,在多种字段作为条件查询使用where的时候,不需要复杂的原生语句, 使用一个闭包,就能达到你想要的效果。 欢迎骚扰:wangyanlin54@163.com...

老王博客 1万+

科技中介服务机构在技术供需对接中如何实现服务流程的自动化与标准化?.docx

科技中介服务机构在技术供需对接中如何实现服务流程的自动化与标准化?

Laravel中where方法的实例分析与演示

通过以上示例,我们演示了Laravel中where方法的基本用法以及更高级的用法。where方法是Laravel框架中非常强大且灵活的查询工具,能够轻松实现各种复杂的查询需求。在实际开发中,合理使用where方法可以提升开发效率,减少不必要的代码量,希望本文对大家有所帮助。

taobao2024api的博客 614

产业园区如何高效对接企业技术需求与高校科研成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

国央企创新负责人如何快速掌握本地科技资源分布与匹配情况?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

(Laravel 10查询构建器性能优化):巧用orWhere减少数据库负载的秘诀

掌握Laravel 10查询构建器orWhere用法,有效优化复杂查询性能。通过合理组合where与orWhere,减少多数据库请求负担,提升查询效率。适用于动态搜索、多条件筛选等场景,结构清晰且易于维护。实用技巧值得收藏。

InstrIsle的博客 255

国央企创新负责人如何实现科技成果的精准识别与高效筛选?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

Laravel常用数据库操作指令(模型/DB)

1、使用模型操作数据库,需要先引入相应的模型如:use App\Models\Test;2、使用DB操作数据库需要先引入DB库如:use Illuminate\Support\Facades\DB;一、数据库查询操作写法一:Test::select('id','name')->where('id','=',1)->get();//select可以单独查询某几列字段写法二:Test::where('id','=',1)->get();//去除select后默认去除该表的所有字段。

bj123467的博客 1483

高校技术转移办公室人员如何系统化管理科技成果信息?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

AI辅助SCI论文大修:一键生成回复信+同步修改稿,效率提升300%

AI可以针对多位审稿人的意见进行逐点(point-by-point)回复,语言地道流畅,能够处理邮件格式、礼貌性回复和部分内容修正。最新的LLM:GPT-5, Claude 4.1都是带有agentic功能,能规划复杂任务,并调用工具执行复杂任务的大模型。有时候审稿人意思模棱两可,你的反复揣摩ta关注的点是什么,回复的不好,很有可能下一轮被reject。这个2.0升级版,除了在response中完美rebuttle,在文中对应部分的修改,也会帮你一并呈现,基本上就是可以直接拿来用的版本;

dinaxuejie的博客 1665

laravel写where条件或者的关系

->where(function ($query) use ($uuid) { $query->where('teacher_uuid', $uuid)->orWhere('examiner_uuid', $uuid); }) 这个where条件保证了教师的uuid 或者考官的uuid ...

薛老师的博客 2950

Anaconda创建python环境常见命令

Anaconda功能庞大,其可以理解为一个工具,也是一个可执行命令。Anaconda可以创建多个python环境,且python环境间相互独立。

m0_59405106的博客 1万+

Laravel查询构建器高级技巧(orWhere链式调用性能优化全解析)

掌握Laravel 10查询构建器orWhere高效用法,提升复杂查询性能。详解嵌套条件、链式调用与SQL优化原理,避免常见误区,适用于多条件搜索场景。显著提高查询可读性与执行效率,值得收藏。

FuncInk的博客 895

LiblibAI新手教程:从零开始训练你的第一个LoRA模型(保姆级指南)

本文提供LiblibAI平台上从零开始训练LoRA模型的保姆级教程,涵盖数据准备、参数优化到效果调优全流程。详细解析LoRA技术优势,包括云端计算资源、自动化预处理工具等,帮助新手快速掌握自定义模型训练技巧,实现高效AI绘画创作。

dell8的博客 621

MacOS上VScode配置PlatformIO Core的疑难杂症与提速实战

本文详细解析了在MacOS上使用VScode配置PlatformIO Core时遇到的安装卡死、新建项目缓慢等常见问题,并提供了官方脚本安装、网络优化、命令行预下载等实用解决方案。通过环境变量配置和镜像源加速,大幅提升开发效率,特别适合ESP32等嵌入式开发场景。

weixin_42567046的博客 221

别再写冗余代码了!用Laravel 10的orWhere实现优雅的动态查询(附性能对比数据)

掌握Laravel 10查询构建器的orWhere用法,轻松实现高效动态查询。适用于多条件搜索场景,避免冗余代码,提升数据库性能。结合链式调用与闭包,灵活构建复杂逻辑。附实测性能对比数据,优化查询速度显著。值得收藏。

VarPerch的博客 892

智能家居系统设计:基于MATLAB的智能家居系统设计和仿真,包括智能家居控制、家庭能源管理和家庭安全监控

基于 MATLAB 的智能家居系统设计方法可以有效地解决各类智能家居问题。

走向CTO的路上... 1775
上一篇: 为什么顶尖PHP工程师都在用??=?揭秘空合并赋值的隐藏优势
下一篇: Laravel 10定时任务踩坑全记录,90%开发者都忽略的3个致命问题
CompiGlow
博客等级 码龄1年 159粉丝 1987原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值