V2EX tant
 tant 最近的时间轴更新
tant

tant

V2EX 第 475864 号会员,加入于 2020-03-11 10:57:47 +08:00
tant 最近回复了
我个人理解的后端框架其实主要分三大部分
1 、orm:,因为我是从最早那批过来的,已经习惯手写 sql 了,所以这个我觉得可有可无,对于我来说。orm 只能简化数据插入和修改的操作

2 、路由和模板:这部分还是比较重要 业务逻辑部分都是必须的

3 、IoC 容器:高级的抽象,这部分 php 应该用不到

php 其实非常适合中小型项目,没有那么多的抽象和业务逻辑,所以 orm 和 ioc 这部分基本可以不要

我前几年做过几个 php 项目,就写了个简单的框架,自己用的非常好:
orm 直接用 pdo 代替,自己在封装一些 helper 函数,这样增删改查就方便了
路由部分我仿造 java 的注解,用反射获取 php 类的注释自动生成 rewrite 文件,也就相当于是自动路由了
模板也是直接用的 php 的语法直接 include 就可以了,不需要其他的第三方库
直接用 autoload 按照规则命名好文件后自动加载不仅自己看着方便,也算半个 ioc 了

因为用的不多,所以没觉得第三方框架有什么好,对于第三方框架我就觉得 Yaf 挺好的,哈
2020-03-19 11:11:43 +08:00
回复了 wangbenjun5 创建的主题 MySQL Mysql 数据库需不需要主键 Id?
mysql 的 innodb 是必须的,其他的数据库可以建议,我个人只对 MySQL 比较了解,供你参考:
InnoDB 引擎表是基于 B+树的索引组织表;
InnoDB 会选择主键作为聚集索引、如果没有显式定义主键,则 InnoDB 会选择第一个不包含有 NULL 值的唯一索引作为主键索引;
数据记录本身被存于主索引(一颗 B+Tree )的叶子节点上。这就要求同一个叶子节点内(大小为一个内存页或磁盘页)的各条数据记录按主键顺序存放,因此每当有一条新的记录插入时,MySQL 会根据其主键将其插入适当的节点和位置,如果页面达到装载因子( InnoDB 默认为 15/16 ),则开辟一个新的页(节点)

如果表使用自增主键,那么每次插入新的记录,记录就会顺序添加到当前索引节点的后续位置,当一页写满,就会自动开辟一个新的页;

如果使用非自增主键(如果身份证号或学号等),由于每次插入主键的值近似于随机,因此每次新纪录都要被插到现有索引页得中间某个位置,此时 MySQL 不得不为了将新记录插到合适位置而移动数据,甚至目标页面可能已经被回写到磁盘上而从缓存中清掉,此时又要从磁盘上读回来,这增加了很多开销,同时频繁的移动、分页操作造成了大量的碎片,得到了不够紧凑的索引结构,后续不得不通过 OPTIMIZE TABLE 来重建表并优化填充页面;

以上是《高性能 MySQL 》中的原话

大概意思就是:InnoDB 表的数据写入顺序能和 B+树索引的叶子节点顺序一致的话,这时候存取效率是最高的,而主键可能不是递增关系时(例如字符串、UUID、多字段联合唯一索引的情况),该表的存取效率就会比较差。

所以一般 mysql 又用 innodb 的情况下一律加上自增 id,如果你说的两个表,B 表是 A 表的附属表,B 表的 ID 可以不设置自增,直接存 A 表的 ID 作为主键即可
2020-03-17 15:10:26 +08:00
回复了 rsonghao 创建的主题 Android 500 以下安卓二手机求推荐
红米 7A 狗东价 549 我上周刚买的
2020-03-17 15:08:54 +08:00
回复了 waibunleung 创建的主题 程序员 PHP 转 go 好还是继续深造?
我认识的 php 基本都转 go 了,但是其实你干几年就会发现,后端其实双修或者三修都可以的,最主要的不是语言,二十数据库和架构
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2597 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 11ms UTC 09:42 PVG 17:42 LAX 02:42 JFK 05:42
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86