一 如何从需求到编码 :1 数据流 2 业务逻辑 3 前端显示
1 数据流:数据流就是整个需求中的数据收集、处理、保存,一般这个需要设计好的数据库表的结构(例如:attribute表)
2 业务逻辑就是实际的代码的逻辑,如何处理数据了。
3 显示:只关心后台传过来了什么数据,怎么显示就不关系到逻辑了。
4 如果在需求到编码实现中的逻辑特别复杂,先尝试简化数据库表,然后简化后端逻辑,最后简化前端逻辑,前端和后端最好不要有任何的业务关联,之间的唯一关联就是数据。
二 rdbc结构的权限设计
1 用户---岗位---角色---权限
| | |
部门 部门 部门
用户分配岗位,岗位分配角色,角色分配权限。
2 表结构 user---role---permission
其中的岗位和角色都是role,role可以包含role。只不过岗位对应的部门是实体部门,角色对应的是虚拟部门(仅仅用来给角色分类)。
3 在选择岗位的时候:一般情况下是
(1)departId 找到所有部门下的岗位
(2)根据optionalRole(默认岗位)+perms(业务规则)过滤4 pageoffice审阅者姓名的问题:
(1)pageOffice打开正文,有修订痕迹,鼠标移上去没有审阅者
(2)百度得知word的选项中的悬浮的设置
(3)审阅者的姓名:word中有设置登录名的地方
5 IE模态框口F12调试,只能是把url拷出来然后打开新的窗口。
6 在select列表项中出现的列必须全部出现在group by后面(聚合函数除外),聚合函数并不会对结果有所筛选,只是起到了计算的作用。
7 row_number() over()去重,over()里头的分组以及排序的执行晚于 where group by order by 的执行。
partition by 用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组,它和聚合函数不同的地方在于它能够返回一个分组中的多条记录,而聚合函数一般只有一个反映统计值的记录。
8 chrome中,在关闭窗口前弹出一个窗口。怎么都弹不出窗口,后来去掉关闭窗口直接打开窗口,然后发现是chrome阻止了窗口弹出。
N 其他
1 在使用window对象的时候,如果是在iframe、frame中使用,注意window对象表示的是哪一个框架。
2 safari打开pdf只能看到一页,原因是ios8以后就只能这样,用pdf.js打开