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

做网站 用什么语言好进度环wordpress

做网站 用什么语言好,进度环wordpress,谷歌推广课程,档案馆网站安全建设1.多表查询关键点在哪 📖 1️⃣ 明确关联关系 先搞清楚多表之间的关联关系: 一对一(1:1) 一对多(1:N) 多对多(M:N) 比如: 一个课程对应一个教室(1:1&am…

1.多表查询关键点在哪

📖 1️⃣ 明确关联关系

先搞清楚多表之间的关联关系

  • 一对一(1:1)

  • 一对多(1:N)

  • 多对多(M:N)

比如:

  • 一个课程对应一个教室(1:1)

  • 一个教师可以教多门课程(1:N)

  • 一个学生可以选多门课,一门课也可以有多个学生(M:N)

📖 2️⃣ 确定关联字段

两个表之间的关联靠什么字段:

  • 通常是主键、外键
    例子:

teacher.id = course.teacher_id

📖 3️⃣ 选择合适的连接方式

常见的 SQL 连接:

  • INNER JOIN:内连接,只有匹配上的行会出现在结果里

  • LEFT JOIN:左连接,左表有、右表无的情况也保留,右表补 null

  • RIGHT JOIN:右连接,同理

  • FULL JOIN:全连接,左右都保留,匹配不到的补 null

SELECT c.name, t.name
FROM course c
INNER JOIN teacher t ON c.teacher_id = t.id;

📖 4️⃣ 查询字段控制

多表查询容易造成字段重名冲突返回无用字段,建议:

  • 指定查询字段而非 SELECT *

  • 可以给字段取别名

📖 5️⃣ WHERE 和 ON 条件区别

  • ON:连接条件,决定哪些行配对

  • WHERE:筛选最终结果行

如果是 LEFT JOIN ,一定注意条件写在 ON 里还是 WHERE 里,区别很大:

-- 错误写法,WHERE 会过滤掉左表独有行
SELECT ...
FROM A
LEFT JOIN B ON A.id = B.a_id
WHERE B.name = '张三'-- 正确写法,条件写 ON,保证左表行保留
SELECT ...
FROM A
LEFT JOIN B ON A.id = B.a_id AND B.name = '张三'

?📖 6️⃣ 多表分页优化

  • 避免直接 ORDER BY 多表字段,特别是大表关联

  • 尽量先子查询确定 id,再回表查详细

SELECT * FROM (SELECT c.idFROM course cINNER JOIN teacher t ON c.teacher_id = t.idWHERE t.name = '张三'LIMIT 0,10
) temp
INNER JOIN course c ON temp.id = c.id

?📖 7️⃣ ORM 框架多表查询要点

比如 MyBatis-Plus:

  • @TableField(exist = false) 标记非表字段

  • 自定义 SQL 或用 XML 配置多表

  • 多表分页用 IPage 配合自定义 Mapper

2.多表查询和联合索引

✅定义不同

项目多表查询联合索引
概念同时查询多张表的数据,根据关联字段建立关系在一张表中,把多个列组合成一个索引,提高查询效率
作用跨表取数据,组合关联结果优化单表或多条件查询的执行效率
SQL表现JOIN / INNER JOIN / LEFT JOINCREATE INDEX idx_name ON table(col1, col2, ...)
涉及表数量多张表单张表

3.where和having

📖 如果要查出【2024年1月1日之后的订单】,该把条件放哪?

👉 这个就该放 WHERE,因为是筛选原始订单数据

WHERE o.order_date > '2024-01-01'


📖 如果要查出【分组后,订单总金额超过 1000】的客户,就要放哪?

👉 放 HAVING,因为是对聚合后的结果筛选

HAVING SUM(o.amount) > 1000

📊 执行顺序:

SQL 实际执行顺序是:

FROM → ON → WHERE → GROUP BY → HAVING → SELECT → ORDER BY

练习题

📌 sales 销售表

sale_idproduct_idquantitysale_date
1200152024-03-01
2200232024-03-02
3200172024-03-05
4200322024-03-06

📌 products 商品表

product_idproduct_name
2001笔记本
2002鼠标
2003键盘

📖 要求:

查出销售数量大于 3,2024-03-01 之后的记录
按商品分组,统计每个商品的总销售数量
筛选出总数量超过 8 的商品
按总数量降序排列

SELECT p.product_name, SUM(s.quantity) AS total_quantity
FROM sales s
INNER JOIN products p ON s.product_id = p.product_id
WHERE s.quantity > 3AND s.sale_date > '2024-03-01'
GROUP BY p.product_name
HAVING SUM(s.quantity) > 8
ORDER BY total_quantity DESC;

锁机制

1.为什么要有可重入锁 

📌 ① 递归 / 嵌套调用场景必需

👉 当一个线程已经获得锁,在未释放锁的情况下又调用了需要同一把锁的方法

如果锁不可重入:

  • 第二次获取锁时线程自己把自己锁死

  • 要么死锁,要么抛异常,要么业务异常返回

而可重入锁,允许同一个线程多次获取相同的锁,每次获取计数+1,释放计数-1,直至0释放资源。


📌 ② 保证调用链一致性,不破坏业务流程

比如:

public void methodA() {lock.lock();try {methodB();} finally {lock.unlock();}
}public void methodB() {lock.lock(); // 如果这里加锁,不可重入就死锁了try {// do sth} finally {lock.unlock();}
}

这种情况,methodA 和 methodB 可能被不同地方调用,为了保证方法内数据一致性、线程安全,两者都加了锁。

  • 如果用不可重入锁:

    • methodA锁住

    • 调用methodB,methodB尝试加锁 → 死锁

  • 如果用可重入锁:

    • methodA锁住

    • methodB尝试加锁,发现是自己线程持有的锁

    • 直接通过,重入次数+1,等释放两次unlock,锁才真正释放


📌 ③ 提升代码复用性和灵活性

方法内部不需要管调用方是不是持有锁,自己业务该加就加,不用小心翼翼的判断锁状态,降低耦合。


📌 分布式环境下为什么也要有可重入锁?

📌 1. 保证递归 / 嵌套远程调用正常执行

比如:

  • 调用链A服务 → B服务 → A服务(分布式递归或双向调用)

  • Redis分布式锁,如果不可重入,A服务第二次进来直接阻塞或异常

📌 2. 保证分布式事务、流程节点锁安全

多节点执行某个任务流程,如果内部套了多个步骤,每个步骤加同一把锁,锁不可重入会中断流程。

📌 3. Redisson做到了

Redisson的分布式锁(RLock)天然支持可重入,记录requestId + 重入次数,完美解决这个坑。


📌 面试标准答法 ✅

:为什么要设置可重入锁特性?


可重入锁允许同一线程在持有锁的情况下,多次获取同一把锁,不会发生阻塞或死锁。它可以解决递归调用、嵌套方法调用等场景中的锁冲突问题,保证调用链一致性,提升代码复用性和灵活性。

在分布式场景中,Redisson实现了分布式可重入锁,通过requestId和重入次数计数,确保同一线程或调用链可以多次安全加锁,避免业务阻塞。


文章转载自:

http://gnirNTbZ.dhyzr.cn
http://U5avNxCs.dhyzr.cn
http://GNReZSXl.dhyzr.cn
http://F2Edptts.dhyzr.cn
http://OY0shloC.dhyzr.cn
http://OIFgPzeW.dhyzr.cn
http://0zqLjtWe.dhyzr.cn
http://rJTHLfwY.dhyzr.cn
http://eoeHb68e.dhyzr.cn
http://wZ1afNOV.dhyzr.cn
http://iNWB4oCv.dhyzr.cn
http://xJMTNCMQ.dhyzr.cn
http://zKopSpKI.dhyzr.cn
http://wDSULc4g.dhyzr.cn
http://y7uC4z6H.dhyzr.cn
http://8kWllpMX.dhyzr.cn
http://88143Hj6.dhyzr.cn
http://pzx9ggpJ.dhyzr.cn
http://feJxof11.dhyzr.cn
http://XKhPki6c.dhyzr.cn
http://GtmBm6zK.dhyzr.cn
http://fRYANyB6.dhyzr.cn
http://nIUkb01a.dhyzr.cn
http://2dBDZvJS.dhyzr.cn
http://awc24OOo.dhyzr.cn
http://QaE1Tcx2.dhyzr.cn
http://goNxXiJn.dhyzr.cn
http://TvpCy8T7.dhyzr.cn
http://9OU3KjTs.dhyzr.cn
http://QjclQ5ni.dhyzr.cn
http://www.dtcms.com/wzjs/656396.html

相关文章:

  • 使用net域名的大网站wordpress商业插件
  • 朝阳网站开发联系电话html编程
  • 商业网站建设的方法网络建站公司源码
  • 网站建设方案评审品牌开发者应考虑的因素
  • 北京营销型网站建设价格番禺网络
  • 泗洪做网站公司h5电子商城网站开发
  • 国外互联网科技网站小程序免费制作平台
  • 西双版纳网站建设公司网站推广优势
  • 做准考证的网站怎样才能在百度上面做广告宣传
  • 内江网站怎么做seo企业网站 手机站
  • 做平面设计用哪个素材网站好php个人网站模板
  • 用路由侠做网站产品展示网站源码php
  • 怎么查网站开发使用的语言个人网站备案需要哪些
  • 怎样制作属于自己的网站wordpress显示时间插件
  • 专做校园购物网站美工模板网站
  • 做网站最下面写什么软件推荐网站建设案例
  • node.js做的网站注册网站在哪里注册
  • 福建省南平市建设局网站9861云南网站建设
  • 免费做外贸的网站平台有哪些昭通市网站建设
  • 网站宣传方法有哪些seo服务标准
  • 银行需要网站开发人员嘛英文网站 icp备案号
  • 企业网站的建设与实现seo外包优化服务商
  • 网站开发的工资wordpress 邮件模板
  • 网站开发的收获与体会手机网站应该怎么做
  • 个人网站建设论文中期报告网络设计费收费标准
  • 网站关键词收费简历电商网站开发经验介绍
  • 淘宝客网站女装模板下载wordpress文章有模板下载
  • 中国城乡建设部人力网站首页建设银行网站的目的是什么
  • 怎么才能百度做网站做cpa广告网站教程
  • 出口退税在哪个网站做怎么自己做网页