TP6.0从0到1完整构建高并发电商服务系统-完整版

  [复制链接]
ustc1234 | 2021-10-3 08:39:51 | 显示全部楼层
TP6.0从0到1完整构建高并发电商服务系统
4 o0 R0 p+ j0 t1 |( K
回复

使用道具 举报

Zhaohua | 2021-10-5 17:50:58 | 显示全部楼层
6666666666666666666
回复

使用道具 举报

ustc1234 | 2021-10-6 09:18:03 | 显示全部楼层
生产环境下的LAMP环境搭建实战教程
, i( G- w- K( D
回复

使用道具 举报

djw128 | 2021-10-15 19:18:04 | 显示全部楼层
tcfvtcfvtcfvsd防守打法水电费d法搞得法发过地方g梵蒂冈的说法是的水电费水电费
回复

使用道具 举报

查看36036 | 回复339 | 2021-11-8 00:12:15 | 显示全部楼层 |阅读模式
QQ截图20200409124337.png
) }' \3 P, R1 p$ l" h" |4 F3 B9 V3 o2 k0 h+ P8 J# e7 d; f6 E8 U. |' C
〖课程介绍〗
+ J# i" s7 A% O# S$ C( M运用最新版TP6.0框架,结合讲师多年开发经验,本课程除了对TP6.0基础和电商逻辑整体开发进行讲解,还包含了企业级通用解决方案,如:消息队列、redis集群、分布式session解决方案、支付模块服务化、分布式锁、限流、容灾、服务降级、商品抢购、排队机制等高级的内容。整个课程手把手带你体验从需求分析、项目开发、系统优化、服务评估、再到项目部署上线的全流程。0 g1 a$ c5 j  O* a" n% \8 }
* G8 ]* P% ?( E- k
〖课程目录〗  T2 W/ E: C$ B- U
第1章 课程简介【PHP行情分析】" R& o7 r% v% S% ?# I% i4 h
本章主要讲解本课程的主线, 导学内容,PHP行情分析等让同学们对当前PHP发展充满信心等,同时还分析了企业级开发流程以及规范说明,让同学们对中大型公司的敏捷开发有一个初步认知。5 p9 G2 q5 N# [- k3 V% S
1-1 课程介绍 试看
$ j: u3 I4 A% B  f, t1-2 php行情分析" E( J4 ~, o/ v
1-3 企业级开发流程和规范说明 试看4 s0 l( u' |! d# k2 |1 s' m4 g
1-4 如何较好学习本套课程以及课程答疑指南
, n0 S( ?& n  C9 v" ^5 t
: R  z' K9 k+ m第2章 环境及框架准备【必备基础】
/ t9 ]8 m" S: K: k本章主要讲解环境的安装,通过composer获取TP6源码,nginx的配置等工作,环境是我们一切学习的根源,造起来。
6 D5 U5 a& T$ b0 q5 h2-1 基础环境安装
- @" Y" p% S$ s& J% u; {2-2 Tp6框架源码获取(composer) 试看- j9 u4 `) F. a6 \( x# Q: z# l
2-3 Nginx和PHP如何配合工作
5 r8 [" A  L* e! [$ x2-4 如何高效的管理nginx配置文件1 |( y6 x; n/ v4 G

5 @4 o3 X1 L4 g第3章 TP6基础知识【新框架】
1 n! v0 ~/ e- @0 \7 L本章主要讲解了TP5/TP6异同之处,基础的控制器层、模型层的使用,杜绝无效请求让代码更加健壮,数据库层问题排查解决方案,这些内容都是为后续电商实战做完美铺垫。
, S. q# R$ x% u3-1 TP5和TP6异同之处4 p+ l) g1 I# v! I
3-2 小白成长记 - 控制器巧用
* \; k% Y  X. c: B# k3-3 控制器巧用2-控制器request属性绑定request对象7 o$ X( s8 h2 I" {9 F
3-4 控制器巧用3-参数获取您知道TP有哪些方式吗?4 T, D2 D0 v/ _8 u: y  x8 [
3-5 健壮系统服务-杜绝无效请求
2 Y" K8 _9 d% D3-6 简单事情极致化-通用化API数据格式数据
- c4 d. x; M9 G+ u3-7 简单事情并不简单 - 通用化API数据格式数据优化, B/ Z+ q9 k% M' _
3-8 框架操作数据库-db库基础认知0 ^8 m1 f! a: [1 y! f' P, ^  N
3-9 数据库操作-db 查询方式讲解( V' E+ K, C5 i$ B
3-10 数据库操作-非常适用的问题排查方案" C' e. R$ U0 k5 c; ^2 t
3-11 数据库操作-db其他操作场景+ r2 }: ~. p$ K2 X) D: U3 T' j0 r
3-12 模型初始& I$ ?8 u8 W0 j1 c2 j6 P
3-13 模型查询其他使用讲解
4 C" W5 h# \0 p5 q  H7 j5 M) d' V2 {0 Q, ?/ n0 y4 y2 Y/ ]- H% d* p2 |- S
第4章 玩转高逼格框架服务【代码高度解耦】
: z6 [" T/ i. q( [5 t( u本章先讲解TP6的多应用模式,在多应用模式下很多初学者会遇到很多坑,课程都有提及,再讲解5层架构建设让系统能够做到代码高度解耦,多复用等能力。并且还讲解了不可预知的内部异常处理、中间件等,关于服务,事件内容会在实战课程中渗透。...
5 ^. q% \$ C2 @5 ?/ y4 G4-1 多应用模式
) L, f/ [) [) K$ U: A4-2 多应用模式下路由规则容易犯的错误: u% u( C7 g& r7 g7 |
4-3 架构分层-初学者最容易犯的错误, C- C# S% T$ p5 r
4-4 代码分层-模型内容抽离- Z% [7 A5 w2 b4 o7 u7 N. E
4-5 基础架构分层思想-5层架构-
" s( T+ ]2 t! F$ |" G4 C4-6 基础架构分层实战
* {6 K1 q$ V3 y0 Q4-7 不可预知得内部异常处理1
, j/ J& p/ f: K" q9 S; D! B4-8 不可预知得内部异常处理2
. ^  a5 Z6 N: s' A; O9 f4-9 不可预知得内部异常处理3& L+ s& D/ q4 E1 |) C8 U% E
4-10 玩转中间件处理8 h% G: |" x/ X# g$ o* N6 V) c  u
/ a$ @2 }. ~( r" m) o" g
第5章 商城项目需求整体分析以及前期准备工作. P6 d8 w4 o' y! W7 t- ?
本章主要讲解电商项目竞品分析,然后从中挖掘出我们商城的需求场景, 项目设计图展示,系统功能说明,以及核心技术点、TP知识点梳理。
, c. P4 a9 x2 p* K' q/ }% p5-1 电商需求梳理和分析+ c) d3 n' B! K  O  o) e
5-2 需求分析-设计图
) @2 ~$ W" [4 r6 ]) [3 @$ o5-3 需求分析-项目功能点输出1 T5 C2 i" Y- J9 F3 {
5-4 需求分析 - 系统核心技术点梳理和分析1 r6 K' a/ H3 C; L+ ~. t0 }# @
' J+ w0 F* }- L$ r* P- D6 Y' S- a2 p
第6章 用户后台管理模块
% A- \' C) I  p% M# {3 Q本章主要讲解后端登录模块的开发,后台用户登录数据更新、session处理、按base方式处理登录流等,让大家能开发出后台登录模块。
5 ^1 l7 ]. }  e1 l: g5 Z1 N6-1 本章功能分析. k9 b/ Y  y  K; Y6 x
6-2 后端页面部署到项目服务器中' x( w) U7 O( ]7 q; y$ N7 n9 |
6-3 登录页面配合模板引擎使用
: Q' p3 {: Y% Y; t+ p6-4 后端用户表设计# L+ p1 j8 I/ n4 Y5 P6 s3 `$ \; M
6-5 TP6内置验证码引入到登录页面中: j' {0 m/ K% k4 Q3 g/ ~
6-6 如何处理自定义验证码
8 p+ D: L; @5 A, ]; F, V3 w6-7 后端登录-ajax方式登录% _% D% ^8 A& ]8 k* h$ i; J" V
6-8 ajax登录-基本参数校验(普通方式校验)
7 |0 w4 I0 M% T2 c, a: \% Z; o- V/ M6-9 后端用户登录API逻辑开发
: U6 h+ H0 I+ s8 F/ v* v$ r# L% U! D6-10 后台用户登录-数据更新和session处理/ ]. o4 V5 z1 z2 a' g( Y2 D
6-11 你确定你知道了登录的流程走势
. `( R/ v/ u7 B6-12 按base方式处理登录流
! r8 \  f6 w2 C9 C2 S6-13 利用后置中间件处理登录流-拦截器' l# _! u% N9 T6 p& f0 M5 T
6-14 利用前置中间件处理登录流-拦截器
9 F& e, K0 U& m/ K/ j6-15 登录优化 - 引入validate验证机制  `$ L( i- {& a5 k2 K7 v0 u1 Z8 U
6-16 登录优化- 控制器业务代码抽离到business层(最新)
7 L) l  a" x/ d, n5 u1 c  F+ L0 J$ L' f3 U1 z5 t/ ]; j
第7章 商城前端登录模块开发! e8 o# k; Q- a) @8 `" ^' B8 v+ H" i
本章主要开发商城前端登录, 商城前端登录采用的是手机号+验证码方式进行登录,利用redis来做验证码失效时间,并且采用token+redis来处理通用化登录解决方案,它能适用于各种终端。在本章中还会教大家如何编写接口文档,如何和前后端联调开发等。...
( O7 ~# l% b- v6 `3 G5 s: S7-1 商城前端用户模块开发准备工作的介绍
9 t& G0 c) A9 D, h" Z7-2 商城前端用户表设计. {8 Y8 \: ^7 `0 b* V$ q2 Z% d+ J4 \
7-3 阿里云短信介绍以及sdk获取4 A7 R( z* L) s; D0 F6 h
7-4 lib库下发送短信验证码类库封装
" ^9 [9 e; y3 N9 L; p9 ^7-5 发送短信验证码API逻辑编写以及布置的作业, d/ o7 a8 a6 r6 m" E2 [
7-6 短信验证码记录到redis中
: J' ]5 U; b* R7-7 剔除common公共方法思想以及新思想引入做到代码高度可维护和管理4 @1 B- G+ S' _/ ?' y' U" ^
7-8 日志是问题定位的关键
0 B5 ?  A% T2 n; E! S* d6 W7-9 如何根据日志来分析当前qps高点和低点
) G. I2 _+ u% A$ _7-10 短信验证码lib层优化-引入工厂模式- g% Z$ |( `. O5 t7 P5 o. ?
7-11 代码高度优化-利用反射机制处理工厂模式做到真正的高大上思想
6 A7 E/ A& S6 Q7-12 关于短信验证码预留的2个作业
2 y- e9 H. l- F8 e2 x9 n7-13 前端用户登录逻辑开发(一)1 y, e( B5 P( }5 V5 t8 n3 g9 z
7-14 前端用户登录逻辑开发(二)
* d( d0 G) ^& K4 H2 ^6 B7 T& \7-15 前端用户登录逻辑开发-基于redis+token . d& f" c, ]: {# \, F( A
7-16 token登录需要注意的点以及登录代码优化
0 C8 E6 E8 V$ F$ |, ]6 h7-17 利用authbase处理登录拦截器 9 V% w$ e$ U7 `3 A/ U2 o/ O' ~( b) N
7-18 获取登录用户基本信息数据
, {: p- o/ g/ G7 b9 V$ w) q7-19 个人中心数据修改以及预留的作业
, \: r+ L8 c/ F2 x! u7-20 退出登录
0 Q( O4 n- \2 T7-21 代码第一次入代码仓库
6 L5 Q  R  @3 [" j- V( l7-22 前后端整体联调测试: m9 ~8 k& Q1 M8 ?( Z

4 x  X4 N. A9 N$ ~7 r! p第8章 分类管理: M; a5 l0 l1 j
本章先讲解后端的分类管理、以及商城前端分类展示,分类我们支持无限极分类,在后端的分类管理中,我们还有分类列表、搜索、排序、修改状态、删除等通用操作能力建设。
; |- o7 }8 Z+ C/ f- b% b8-1 电商系统分类表设计$ P; e# {( V, y4 @1 B. V
8-2 分类管理页面部署以及常见的问题解刨
1 M: y5 o& T. m" p5 `, ~; f8-3 新增分类$ r0 |' A9 ~2 `0 Y3 Q
8-4 添加分类优化-如何较好的选择普通索引和唯一索引: G' C2 {0 u! x) ^3 s! n  u
8-5 新增分类优化以及需要注意的事项# S/ G4 J  f% L, o5 ~+ H7 Q
8-6 分类列表页开发(最新)
! g' v( b- p+ y+ i( U2 k8-7 利用TP6提供的分页结构处理分类分页
& E( G$ N' E: C9 S/ _+ r8 u8-8 分页优化-引入laypage_001# W) q" B! c8 w( T9 p
8-9 后端排序功能开发以及之前代码优化工作
$ v6 r+ u/ S' j; u8-10 修改状态以及删除功能开发5 Y& Q+ T$ V) x2 Y, Z9 Y, [, D8 T' c
8-11 列表优化-增加分类下子分类条目! Y3 J+ s$ d# m9 n7 {) L, X4 J
8-12 本章作业5 J' J/ N% M- e$ h
8-13 商城前端分类API开发-支持无限极分类
: _' F2 [0 _+ x' i2 T* _8-14 商城前端分类API逻辑优化工作
7 {0 \* t5 J  y  n9 N6 J- E- N" Z+ b! ]
第9章 商品后台模块开发: q9 A! S. s8 t8 n" f; X3 @
本章先讲解后端商品模块的增删改查操作,sku设计,图片上传、支持多图上传,商品列表等。1 E; Z! d9 q. `( r9 R- B3 Y
9-1 本章课程介绍
. @, d. `& ~, O% ^9-2 商品规格,规格属性,sku概念介绍1 d2 y4 x! x) Q' U, ^6 ?3 o; J0 Y
9-3 表结构设计
+ Z8 G& Q( t" k0 Y) O9-4 商品后台模板导入到项目中
& Q3 c' k! n2 p0 p! @  y9-5 新增商品前置操作 - 分类数据交互处理
$ r0 D* q7 K# Q: ]9-6 新增商品前置操作 - 规格以及规格属性数据处理
/ ?; l& i( c( O$ p: K: q9-7 代码优化
0 [0 j) q  D* ~# c9-8 利用TP6处理图片上传
% d, C! Y$ l: q2 }" t9-9 基于layedit编辑器的图片上传, u8 {: R5 E, L: N6 T' ]
9-10 商品信息添加需要明确的流程
$ C0 F% }: s" [# T  c2 [7 {9-11 商品基本信息以及sku信息入库6 t  G- j# q8 j2 g: ]% ?
9-12 代码优化" f1 J6 O& S, n
9-13 事务处理
" x9 K2 F9 g7 z+ u! j0 f& V9-14 防止csrf攻击; Y( J' \1 c* R( P
9-15 商品列表页开发以及代码优化
. I" R- r4 S( ^! {9-16 利用TP6的搜索器withSearch检索商品信息
2 B# x7 _2 n& m5 Z  D! B+ o; i6 p3 q" J/ g( ]5 t
第10章 商品前端模块开发
) f$ q, D9 x/ f' n- \$ a1 |本章讲解了电商首页、列表页面、商品详情页, sku数据组装,商品一对一关联查询,代码优化,利用redis统计商品PV等开发。/ n* @: [3 j; t) y% a
10-1 本章功能介绍
1 I3 D- O4 s# J6 r( ?) d% K10-2 商品详情页面ID是商品的主键ID还是sku表的主键ID?
# A  |' J- W8 p2 p+ X10-3 商品首页大图推荐API逻辑开发以及联调7 m9 u4 a- M  g9 ^; N
10-4 代码优化-回顾头来再看看之前代码你会发现是一件非常有趣的事情
! w7 d- k" V1 d% m) @; ]! Z10-5 商城首页分类下商品推荐API开发' Y2 B" @- S0 |, Q. K3 f" w
10-6 商品列表页API开发
: o% V( ], X- I5 D  `% [! M10-7 商品详情页功能点详细分析0 X0 M* {; ~, j; H
10-8 商品详情页API开发-TP6的一对一关联查询技巧$ k! r' B  k8 Z
10-9 商品详情API开发- 规格数据获取以及数据组装8 G  K; j6 `3 O) W4 K+ }1 }. O
10-10 商品详情页面API开发 - sku数据组装处理
3 C8 ?% g" ~1 R) x: G6 B$ e10-11 利用redis统计商品PV.....
' Q2 J7 N; D8 f8 s6 O7 _
( G1 G; w! G) ?3 z' Y3 O  w第11章 利用redis打造高性能购物车模块# [/ m' ?, Q$ h* i* }7 D% B
本章利用redis处理购物车模块, 并且解决购物车列表hash无序问题。' q1 b: N4 X) Y  Q
11-1 利用redis的hash操作打造高性能的商城购物车
2 X  Y" ?9 f; r) f' k1 V1 Q5 e11-2 redis的hset处理加入购物车就是这么任性: F* h, J; E- J! K7 [) D# I
11-3 redis加入购物车代码优化
+ \: C7 S  s6 P- n$ [0 ?3 ^# A11-4 利用hgetall获取购物车列表(上)( V4 t4 `% x9 U0 p& S/ S. e; p
11-5 利用hgetall获取购物车列表(下)8 f/ Q7 P8 r. {- k
11-6 利用redis hash处理购物车删除,修改购物车数量: i) o# @5 ~1 u
11-7 完美解决redis hash购物车列表无序问题。& f8 L- @( b# U" U8 S2 c. L& u
11-8 登录用户初始化API-获取购物车数量
* c) e; j' w" h8 [$ \& F5 r7 e; P7 n! @. |0 U7 F
第12章 核心模块-订单模块开发
0 X- v% ?, B8 E. r. S9 Y# m本章讲解了分布式发号器生成全局唯一性订单ID,订单的处理,利用消息队列处理失效订单等工作。  l# g* N; u. p' T5 u( X$ i+ F
12-1 订单整体流程介绍6 H/ {, B, S' Q: ~0 H7 N4 U* Q
12-2 订单模块一对多数据表设计
2 b! s! p$ I5 a9 ~% e12-3 利用redis的hMget处理订单确认页面API& {, ^, k/ B( S) b& _2 m) |; h' U+ j
12-4 分布式发号器生成全局唯一的订单ID1 z. w3 r+ g" R7 C& I
12-5 提交订单 - 从redis获取数据进行判断8 `. c# R* f! E( V4 m
12-6 利用MySQL事务创建订单-支持减库存操作(上)
; U7 A5 _+ s0 t% l. z12-7 利用MySQL事务创建订单-支持减库存操作- |8 @3 [9 [$ O1 n0 @  W  w% M; j
12-8 订单创建完毕之后需要删除购物车-利用redis-hdel实现批量删除操作
! l4 X" P# B# m9 p6 d1 u12-9 获取订单详情API
% Z) c8 ]1 ?+ c. `8 T12-10 利用高性能的redis延迟队列处理无效订单(上)
7 i/ e4 E) A. s4 f, r! E) g9 U12-11 利用高性能的redis延迟队列处理无效订单(下)
. _: U% l# g9 U# ?# s0 j  G# q, ~$ J/ w9 j1 c$ Y6 s8 X' [  o
第13章 支付服务化 - 将支付模块单独抽离支付服务(pay.singwa666.com)
' s+ E4 j7 U# P9 \6 N; |- @& B为了解决项目高度解耦,本课程将支付模块单独抽离出来,单独弄成一个独立的服务, 后续商城模块、活动模块等的支付场景都可以直接对接独立的支付服务,很方便。并且这块也是为了后续能支撑高并发的商城做铺垫。
& t" o" f/ Q. C& Z2 I3 B13-1 支付系统服务化简单介绍3 g! Q% W. q6 c* A7 [4 S5 [& m
13-2 微信支付介绍
, E( q  r$ s0 S/ L13-3 支付服务化前期准备以及测试支付demo. T* E) N. w' ^, g
13-4 支付系统整体架构设计7 k) H, m$ k, r7 \/ z, m
13-5 打造能适配TP6的支付sdk) S7 L* M1 e7 o% \
13-6 支付系统鉴权-安全加固-
1 ^9 ]  U' X0 \) j13-7 支付系统-下单API开发..
8 i0 D/ [; b( _0 ?13-8 微信支付回调代码解刨以及预留的作业$ a9 u' \; I) U- F
13-9 支付系统-订单查询逻辑开发  i6 S! C) [3 Q
( C2 o: K6 r; R1 m
第14章 打造高并发抢购商品服务
# c7 b. T3 a' j  k2 Q- y) E1 B本章会涵盖并发场景的很多知识点,已商品抢购为具体场景, 里面包含负载均衡,消息队列、redis集群、分布式锁、分布式session解决方案,限流,容灾、服务降级、系统评估、压力测试、排队机制、反作弊场景、性能优化等高级内容。...
3 A% z; T4 c* p14-1 本章整体介绍以及注意事项4 F- c. z" c0 a8 G2 L; H# V  R
14-2 大型网站架构分析14-3 nginx负载均衡技术精讲(上) (12:39)
1 f2 o  ]" \: A$ v3 L14-4 nginx负载均衡技术精讲(下) (10:58)
! p; y: u) l6 J# h14-5 nginx负载均衡注意事项 (12:11)) s/ y! M: k/ C) I7 x+ p' o
14-6 大流量下前端页面静态化处理提升服务整体qps (16:34)* s( N9 ^5 K# k' |% Q( ^- `9 W$ B
14-7 mysql集群解刨 (21:29)
3 U# s7 F! v0 |* D" ~# G' `14-8 分布式缓存-redis集群架构精讲(主从,哨兵,集群) (09:48)
4 z3 R# O: Z( n( W14-9 分布式session (05:11)
7 Z: S; K6 x1 ?; w% `; c6 B14-10 kafka集群 (15:23)
0 M9 q# C( U) H. T# W, @4 k14-11 服务压力测试以及服务评估 (13:36)! Q6 n" a1 p4 G, k+ B' X8 i
14-12 服务限流-php+redis方案 (08:18)3 q; w/ L/ e6 g* |% f6 o6 r- l8 [% D
14-13 服务限流-nginx+lua+redis高性能方案 (09:33)
' J1 T8 O1 y! ^2 s5 k14-14 服务降级和熔断 (18:22)
' j5 J$ j; f8 b8 N14-15 商品抢购 (16:49)
2 x8 T' V8 @5 k14-16 商品抢购-杜绝黑产 薅羊毛分析 - 反作弊分析和挖掘 (06:12)# ]0 [( `5 G" R2 G* B; ?( r
7 v/ {' I3 Q% R# U1 P9 f% h" k
〖下载地址〗4 N& D' u% v1 H8 Z1 p
游客,如果您要查看本帖隐藏内容请回复

9 O% r4 m+ D$ h0 o3 H4 ^/ g# F0 y4 X4 L, H
----------------华丽分割线-------------------------华丽分割线-----------------------华丽分割线-------------( {1 G) H, y$ D0 S2 a
) W# w# F9 R& R* V. u8 Q. k* o% Z4 r
〖下载地址失效反馈〗" v5 J/ d- P; u' m3 X/ l$ {. H
如果下载地址失效,请尽快反馈给我们,我们尽快修复。请加QQ邮箱留言:2230304070@qq.com
- w4 |2 [$ J7 |" ]$ I, H$ e: H4 O0 g. x; p! T' I
〖升级为终身会员免金币下载全站资源〗
7 S6 o  I' m4 j* `+ W5 v: p全站资源高清无密,每天更新,vip特权了解一下:http://www.mano100.cn/rjyfk_url-url.html% Z8 |8 Q, t+ e' Y6 B

; Z% u2 C# E+ [〖客服24小时咨询〗/ I2 y) U8 S) E3 k0 G
有任何问题,请点击右侧QQ邮箱:2230304070@qq.com 咨询。
9 h1 E9 d) _% o" A8 ~$ D
#ad#! q! w& S, V' u8 y7 |( ?1 ~

1 i4 m& ~5 S3 h& c. R& u8 y$ h, R
回复

使用道具 举报

Feanmy | 2021-11-8 14:20:09 | 显示全部楼层
66666666666666666666666
回复

使用道具 举报

xiaoyou | 2021-11-8 19:00:20 | 显示全部楼层
支持支持支持支持支持
回复

使用道具 举报

2583151529 | 2021-11-8 20:48:49 | 显示全部楼层
666666666666666666
回复

使用道具 举报

liaolong | 2021-11-11 11:24:31 | 显示全部楼层
谢谢分享!
回复

使用道具 举报

azhida | 2021-11-14 11:50:30 | 显示全部楼层
支持支持支持
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则