https://www.bbsmax.com/A/lk5aVBod1O/
在firefox的调试控制台, 下面有一个独立的分割的控制台窗口,
- 在进行页面元素选择, inspector的时候, 或者进行css样式查看检查的时候, 或者进行控制台输出查看的时候, 实际上是不需要显示这个split console的,是可以隐藏的
- 只是在进行Debugger的时候,才有必要显示这个分离的控制台
- 显示/隐藏这个split console的具体方法是: 单击右侧的第二个工具栏按钮: toggle split console. 就好了.
=======================
关于创建表/修改表的一些问题?
- 其实 创建表和 修改表的语法基本相同, 只是 前面的create table 和 alter table动词有所不同, 创建表多了一个 表字段描述而已:
- 创建表时,if not exists "条件短语" 放在动词之后,表名称之前
create table if not exists tbl_name()...
- 基本语法是: create table(create_definition) [table_options] [partition_options]
其中, create_definition包括两种内容:
一是, 字段描述: col_name col_definition
二是, 关于表的字段约束特性等: 包括 primary key(col_name
), index(col_name1
,col_name2
), foreign key(), unique key(), 等等
注意的是,这些字段约数特性一定要加括号, 里面是字段名(可能不止一个字段名), 分别加上逗号分隔
关于约束:
约束主要的有三种: 主键约束primary key, 唯一性约束unique key, 外键约束foreign key.
约束默认的关键字是 constraint, 可以在创建表的时候直接在 col_definition紧跟着后面进行申明, 也可以在alter table的时候 添加约束 add...而实际上这个constraint关键字可以 省略的.
外键约束的好处和缺点是:
- 最主要的是保持数据的完整性/一致性, 同时也避免了一些冗余的,无意义的数据: 禁止一些在主表中 删除/修改记录的操作, 因为如果外键所在表中 有主键表字段记录时, 就会阻止你删除主键表记录. 因为外键要保证 外键表的外键字段在主表中必须有相关的相应的记录.
- 也正是因为这个要保持完整性的目的, 所以,在进行删除/修改记录的时候, 会去检查关联表中的记录. 所以 会花费较多的操作时间, 从而影响数据库的性能
- 同时: 要创建外键约束, 必须满足几个条件: 一个是在mysql的多种存储引擎中,只有innodb引擎支持外键,因为外键的主要操作是在 级联更新和删除的时候起作用(on update cascade, on delete),所以如果原来的存储引擎是myisam, 就需要更改为innodb; 其次, 在从表(外键所在的表)中外键所在的字段要首先创建索引才行.
- 所以, 一般来说, 只有对数据完整性要求比较高的应用中, 才会创建外键约束, 其他一般应用中, 为了查询性能, 都不建议使用外键约束.
一般来说, 创建的索引, 都有一个索引名称, 这个索引名称可以指定, 也可以不用指定, 如果不用指定索引名称, 默认的会以 创建索引的字段名称 作为索引的名称.
索引的关键字是index也可以是 key.
关于mysql中的字符串连接函数?
-
mysql中的随机数 函数 rand() 不能代参, 只能产生0~1之间的随机小数. 所以要产生四位的随机数字用: round(1000+9000*rand());
-
mysql中的字符串连接, 不是用 加号+, 也不是用点号, 也不是函数 strcat, 而是用 concat('..', '...', '...'), 可以直接用数字 和字符串连接
其他类似函数有: concat_ws, group_concat, repeat('abc', 3'); -
utf-8和utf8之间的区别?
只有在mysql中可以使用(而且只能使用 utf8),中间不能用空格; 其他地方的标准写法是: 大写的 UTF-8.
=========================================
mycli是和mysql一样的 终端工具 用来连接和操作mariadb数据库服务器, 命令就是用 mycli -uroot -p 'password...' -hlocalhost -D dbname
. 注意命令是mycli 不是mysql.
- 特别是, 如果数据库服务器没有密码, 就不要使用 -p选项, 直接免密码登录就好了. 因为-p选项后面要跟 明文的pwd密码, 且不能为 空''.
- 配置文件是 ~/.myclirc 采用的是 dos-ini格式. 其中 syntax-style是指 语法coloring着色的方式.
查看 某个命令是由哪个包提供的?
使用 dnf whatprovides '命令名'
关于颜色/主题的颜色: light/dark/sepia: light: 是明色调/明亮的 dark是暗色调的/深色调的 sepia: ['si:pi2] 深褐色的
firefox 本身提供了一个"屏蔽图片和flash的"功能, 就是它的 reader view 阅读者视图reader view
schema的本意是: 提纲, 大纲,结构,架构, 图式: 通常是指 : 用图/结构图/流程图等来描述问题, 因此, schema就是一种描述 (问题 / 对象/ 项目)等的 一种 总体结构的 语言和东西
通常是比 "实体" 内容更高一层的抽象, 实现更高层次的管理. 比如 一套数据库以及其下的表/视图等等, 可以归纳/包含在一个schema中, 一个 数据库服务器上 可以包含多个 schemas, 提供schema的功能是为了更高更复杂的数据管理, 实际上一般用户是用不到的.
-
对 fc23 gnome等的修改和调整, 由很多工具: 包括: gconf, dconf, gsettings, gconf-editor, dconf-editor, gnome-tweak-tool等, 其中, gconf / dconf / gsettings 等都是 /usr/bin/下的命令行工具 (类似于 注册表, 里面的配置/修改项类似注册表的itmes键名, 只是在这里叫schema, 如同注册表中,不可能记得住 所有的键名, 同样的 你也不可能记住所有的schemas) . 而dconf-editor gconf-editor , gnome-tweak-tool等则是图形化工具. 使用得最多的是 : dconf-ediotr 和 gnome-tweak-tool .
-
在dconf-editor中, 左边的条目就叫 schema, 右边的内容中, 其中 "name"就是 schemas所包含的key名称, 而value则是对应的 key的值.
==================================================
em是一个相对单位, 是以 body默认字体大小是 16px; {font-size: 16px;} em就是以父元素的字体大小 font-size为倍数, 可以精确到小数点后3位, 是以弹性布局为目的的
rem是 root em 的意思, 是相对于根结点即html标签元素, 而言的字体相对大小. 是css3中引入的一个相对单位
导航和导航条的区别?
导航 nav 是一个独立组件, 可以放在任何地方, 由 nav-tabs, nav-pills, nav-stacks几种样式, 主要是放在页面内部, 一些小的区域进行导航
导航条navbar , 虽然其中的导航, 是基于 nav组件, 是 ul.nav.navbar-nav. 但是其他组成部分跟导航nav相差很是很大的. 导航条主要是放在网站顶部位置.对整个网站进行导航
在bs中, 很多元素和组件都是基于列表, ul, ol来实现的, 通过在 ul/ol中 包含 li, 在li中包含a链接来实现的.
- 在导航条中的 对齐和位置布局, 使用 navbar-left, navbar-right类其实就是 浮动 , 向左或向右的浮动
.navbar-right{float: right !important; }
- 导航条中的链接, 文字, 表单按钮等, 都 有专门的容器, 比如 ul.navbar-nav , form.navbar-form等. 但是 要在导航条中, 放置额外的, 没有"专门"容器的, 单独的文字/按钮/链接等, 要用 另外的单独的navbar-类, 比如: navbar-link, navbar-btn, navbar-text. 使用方法是: 文字:
<p class="navbar-text"> 表单中的文字</p>
按钮:<button class="btn btn-default navbar-btn" > 表单中的按钮</button>
单独的链接:<a class="navbar-link"> 表单中的单独的链接</a>
- bs中的全局基础字体大小 刚好是14px. 即:@font-size-base: 14px. 如果要修改这个全局基础字体i大小, 在less文件中, 修改 @font-size-base:
bs中 有很多块级元素 , 都会有 一个 20px的下边距, 比如: table, hr, address, navbar等都有一个 20px的margin-bottom
所以, 如果你要改变/删除这个下边距, 只需要重载这些 样式就好了 , 只是要知道 这个下边距是怎么来的.
navbar还有一个样式是 :min-height: 50px, 所以 如果要 固定顶端: navbar-fixed-top 就要给body至少 50px的padding.
.navbar { /// 最小高度和 下边距都是由 navbar来的, navbar-default只是规定 字符颜色/背景颜色和边框等
position: relative;
px;min-height: 50
margin-bottom: 20px;
border: 1px solid transparent;
}
====================================================
关于bs的navbar-nav的导航项目的active点击时无效的问题?
- 对于导航条的active类,必须由我们用户自己管理它,bs并没有提供自动管理.
- 管理方法就是 去掉所有的li的active类, 然后对当前这个li添加active类:
$(document).ready(function(){
$('ul.navbar-nav li').click(function(e){
e.preventDefault();
$('ul.navbar-nav').find('.active').removeClass('active'); // 使用find 跟 后代选择器的作用是一样的.
$(this).addClass('active');
});
});
基本常识: 因为视图本身不是基础表, 它本身里面是没有数据的, 他的数据来源于其他基础表, 而且是随着其他基础表中的数据改变 而改变的, 所以, 你不能对视图进行 插入 操作和 删除操作 和 修改 操作。tp可以操作视图, 但是不能向基础表那样子 来操作他, 否则会提示 找不到 “表”。 要通过 tp的专门的 视图模型来 操作。 对于 操作 一对多, 多对多等问题, 要通过 tp的 关联模型来操作。
================================================================
如何 在tp模板中输出一维数组变量的元素值?
其实, 我们一直有一个误解, 以为volist, foreach只能输出二维数组的值, 其实 它们也能够输出一维数组的元素! 既然二维 数组 都能输出, 怎么会 一维数组输不出来呢?
只是, 在 循环体内, 是直接输出循环变量$id, , 还是 输出循环变量的 元素值$id.name?
如果是一维数组, 循环变量本身就是具体的元素值了, 所以直接输出就是了: 比如 {$key}:$item
如果是二维数组, 那么, 每次的循环变量本身 还是一个一维数组, 所以, 在输出中, 就取它的元素了: 比如: {$vo.name}等等.
- volist 和 foreach 本质上只是一次 循环而已, 本质上没有什么区别, 都是转变为 for...循环,
- 所以, foreach并不是什么用于 一维循环, volist用于二维数组循环.作用其实是一样的.
- 只是, 它们之间的真正的区别,是 它们的提供的属性不同! volist属性更多, 用于更多要求的控制 包括: name, id, offset length, mod, empty, key等属性. 而foreach提供的属性更少, 包括: name, item, key. 用于需求较少的控制. 可以认为foreach是 volist的简化版.
===================================================
区别tp的跳转和异常?
- 跳转和异常的 表现内容不同: 跳转时的三种方式, 它们的标题栏 head标签是: "跳转提示", 内容是 "页面自动 跳转...." 而异常页面的 标题栏 head标签是 "系统发生错误" 内容是 :发生错误的文件 位置 行数...
- 跳转的模板, 不管是error还是 success, 都 是 'TMPL_ACTION_SUCCESS/ERROR' => THINK_PATH.'Tpl/dispatch_jump.tpl ', 而 异常的模板是: 'TMPL_EXCEPTION_FILE' => THINK_PATH.'Tpl/think_exception.tpl'
- success和error共用一个跳转模板文件, 只是根据一个 $message变量的值, 来选择一个 if ...else 变量来 决定显示内容.
- success和error跳转 都有 "成功或 错误 信息 提示", 而且有 等待时间 提示, 有 默认的跳转页面, (比如 success是reference引用页面, 而 error是 上一页 back) 所以是比较友好的, 而 redirect 是直接跳转 没有任何提示的, 所以 会让人有点迷惑 .
- success和 error, redirect本身就已经有 重定向跳转的功能了, 所以,不需要再使用 header等 函数了!
================================================
几个英文单词的差别:
message 消息, messager是消息组件
messenger: 是信使, 送消息的人, 比如
passenger: me- 和 pa-的区别, 如果是pa则是 乘客。
!!! 凡是带回调函数的 都是 异步调用, 相当于一个 伺服函数一样。 所以 回调函数 是在 事件发生之后 才执行的, 所以 不是跟事件同步的, 是异步的。 因此可以接收到 事件传递过来的 参数等!!