乐观锁和悲观锁(挖了个坑,以后填上)

待定

2018-02-28 23:31:13

阅读数:38

评论数:0

微信小程序的令牌流程

我们可以自己设计一套账号密码体系。我们可以自己设计一套账号密码体系,然后模拟登陆和获取用户令牌。但是小程序是构建微信下面的,微信已经有了身份认证体系,我们没有必要自己设计账号密码体系。我们可以借用微信体系来做自己的权限体系。所以不需要传入账号密码了,小程序为每一个登录的用户生成Code,Code就...

2018-02-28 23:25:48

阅读数:1234

评论数:0

API权限控制

在API不存在用户登录这样的概念,我们是通过令牌来管理用户身份的。在传统网站用户登录的概念,转换成用户获取令牌,这个令牌,是代表用户身份的 。虽然都是类似用户输入账号密码的东西,但是理解和概念上时不一样的。API是用户拿到令牌,这个令牌具有用户的身份,而且这个身份是分级别的。有些级别是管理员级别,...

2018-02-28 23:10:03

阅读数:1798

评论数:0

接口粒度和分层

我们有时候把整个业务编写成一个API,这样可以在前端方便调用。但是这样做并不合适,只用了一次HTTP请求。这种方式是站在当前业务角度的方式考虑问题,而没有站在数据角度考虑问题。如果把所有接口合并成一个接口,这会导致任意一个小改动,导致整个接口剧烈变化。如果根据业务编写,那么整个API无法复用。如果...

2018-02-28 22:12:19

阅读数:424

评论数:1

TP5让模型返回数据集

database下配置即可,这样我们直接可以调用对象的方法来处理数据// 数据集返回类型 'resultset_type' => 'collecton',

2018-02-28 21:16:40

阅读数:2907

评论数:0

合理利用数据库冗余字段

privot多对多关系的中间表。PT5框架会自动把privot带上。我们需要隐藏,因为我们不需要privot,而且pritvot也不在我们模型本身,他是中间数据另外冗余字段,我们有一个表是记录图片的,另一个表是记录商品的。我们可以在图片你放商品图片里的url同时商品里放图片id和图片URL这两个字...

2018-02-28 15:12:36

阅读数:69

评论数:0

TP5路由使用完整匹配

在TP5中 如果两个路由路径,很相似,前者传参数是?后者是/这优先代用前者,因为提前匹配如果我们希望不自动传入匹配,可以设置,在Config中的,路由使用完整匹配改成True即可...

2018-02-28 12:22:24

阅读数:1327

评论数:0

一对一关系的外键方法选择

belongsTo方法对应的是hasOne一对一是有主从关系的,并非平等关系如果A关于B时在A中是belongsTo,那么在B中就是hasOne一个表本身包含外键,我们需要调用需要用belongsTo,否则用hasOne(外键在另一张表里)...

2018-02-28 00:48:02

阅读数:398

评论数:0

TP5自动创建文件指令(未完成,挖个坑,后面总结归纳)

php think make::controller api/v1/控制器名这样

2018-02-28 00:35:28

阅读数:235

评论数:0

数据库多对多关系

一般我们用三张表来描述多对多的关系。例子:多个分类,每个分类有多个商品。另外每个商品在不同的分类。以下例子不太恰当,自己瞎举得,知道意思就好类:水果 A类 B类商品:A果,A菜,B果,B菜,我们创建数据表商品分类表id     分类1 水果2 A类3 B类商品表id     商品名称1 A果3 B...

2018-02-27 23:59:06

阅读数:1015

评论数:0

多版本支持

说到API版本管理和支持,为什么要版本支持,因为我们开发任何业务这个业务都不可能是一成不变的。那么当业务更变,我们如何让代码更好的支持业务变化?另外对于互联网产品,一定要考虑对旧版本的兼容性。有的用户不会升级你的新版本。这时候就需要有多版本和版本号支持。开闭原则:我们对扩展是开放的,对修改时封闭的...

2018-02-27 22:41:44

阅读数:32

评论数:0

ORM对象关系映射

全称Object object relation mapping 对象关系映射让我们用面向对象的方式来思考数据表。在我们传统的sql中并没有把表当做对象,我们就是理解的二维关系的数据结构。但是用ORM我们得吧每张表思考成一个对象。那么用这样一种方式查询数据库不再使用sql语句。当我们用ORM查询数...

2018-02-27 18:21:20

阅读数:135

评论数:0

TP5访问数据库具体实现---query查询器

我们是用Query查询器来完成。使用查询构建器,封装了对于不同数据库的操作,它提供了我们对于不同数据库统一的操作。不需要在意不同数据库差异性。使用原生sql来操作,整个tp5数据库访问层就失去了它的意义。我们一直在说Query是查询构造器。但是这个查询二字就是泛指,它不仅仅是有数据库的读操作,还有...

2018-02-27 12:59:41

阅读数:913

评论数:0

TP5访问数据库架构

database.php配置数据库的配置文件 TP5默认支持4中数据库mysql,pgsql,sqlite,sqlsrv在thinkphp目录下library/think/db/connect可以看到连接器。在type配置。hostname配置数据库IP,如果外网需要外网IP,database改成...

2018-02-26 22:21:39

阅读数:1558

评论数:0

AOP思想

面向切面编程我们需要用一种切面思想来构建我们程序。    我们编写验证层和异常处理层就是很好的实例应用,尤其是全局异常处理。就是有时候去写代码的时候,不要把代码写的这么直白,我们要站在一个更高的角度, 用一种比较抽象的方式,统一的整体的处理某一个问题。我们处理异常,并不会吧异常分散在每一个业务代码...

2018-02-26 19:47:41

阅读数:65

评论数:0

错误日志

出现内部错误,代码有问题,我们需要解决。我们需要用日志记录下来。只有记录日志我们才能解决。在开发环节中我们可以输出变量,或者断点调试找到问题原因。但是在生产环境时,不能随意更改。我们排查生产环境的方法还是日志的方式。我们需要在全局异常记录异常信息,在全局异常处理记录的日志是比较机械刻板的。按照同一...

2018-02-26 18:24:30

阅读数:1966

评论数:0

归并排序

O(nlogn)级别的排序算法 归并排序 8 6 2 3 1 5 7 4 当我们要排序这一个数组的时候,首先我们把这个数组分成一半,先对左边的排序再对右边的排序。然后在归并起来。当我们对左边的数组和右边的数字排序的时候,再把左边的和右边的再分成一般,每一个排序再归并…直到一个数值时,本身就是...

2018-02-26 13:36:47

阅读数:29

评论数:0

命名空间

主要是为了解决上一个博客的问题的,顺便整理复习一下命名空间:解决常量,函数,类冲突的问题namespace 命名空间名字加上\就是调用全局的比如a\test();就是调用a命名空间下的test();也有子命名空间如果在namespace a下就得 \a 表示在根目录下面的a命名空间声明命名空间不能...

2018-02-25 21:08:11

阅读数:22

评论数:0

命名空间的一个小问题

在继承全局异常类的过程中public function render(\Exception $e)这个类公共方法,我原来是Exception $e,怎么做都导致参数不兼容后来改成\Exception $e才可以查了一下发现是以下原因:如果你的PHP文件定义了命名空间,catch(Exception...

2018-02-25 20:03:35

阅读数:19

评论数:0

异常分类和层次结构

  异常是分层次级别的,方法1,2,3代表异常层级。假如是方法3调用方法2,方法2调用方法1。 当方法1出现异常时,首先方法1会捕获异常try catch,接着方法1的代码会决定怎么处理异常(记录日志,或者修复异常假装没发生,或者返回客户端错误)假如不想处理异常,可以抛出去给方法2,方法2继续往上...

2018-02-25 17:58:56

阅读数:241

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭