在使用easyui的tabs的时候, 标签页上的 可关闭 按钮 显示不出来?

  • tabs的 closable:true 属性, 实际上是通过在 标签头 tabHeader 中的最后面, 添加一个超链接 <a class="tabs-close" href="javascript:void(0)" > </a> 来实现的
  • 其关闭图标, 是通过 .tabs-close这个样式类来实现的: a.tabs-close { background: url('images/tabs-icons.png') no-repeat -34px center}

  • tabs-icons.png上有3个图标, 为了获取其中一个的关闭按钮图标, 背景图片的偏移位置 指定了 -34px center.
  • 由于这里的css文件是: easyui/themes/default/easyui.css文件, 而 背景图片的位置 是指定在 images/tabs-icons.png的, 所以, 如果在 easyui_version/themes/default/images这个目录中没有相应的图标文件的话, 就 不能显示 关闭 按钮了! 也就是说 即使你指定了 closable: true, 它只是 留了一个 关闭按钮的 占位符 在哪里, 并不能看到 关闭图标.
  • 由于 关闭 是通过 js文件来实现的, 所以 即使你 没有 关闭 按钮, 但是 仍然能够关闭标签页.

因此, 不要轻易. 随便的去删除 easyui 目录下的 子目录! 比如这个 themes/default/images images目录就不能删除. 否则就会出问题!

====================================================

为什么 onBeforeClose: function(){...}中使用 $.messager.confirm无效?
  1. 因为jeasyui的 $.messager.confirm/alert/progress/prompt等弹窗 都是 异步的: 即 主调函数 在执行到 $.messeger...的时候, 不会等到 messager的回调函数执行完了, 而是 直接就跳到 $.messager的下一条语句执行了, 直到主调 函数 执行完成后, 才会 再去执行 $.messager... 的回调函数 . 所以 发生了 tabs已经关闭了, 才弹出 消息框.

  2. 也就是说, 主调函数在 执行过程中, 是无法进入到 $.messager...的 回调函数中的 因此 , 也就无法在 回调函数if(r)...中 去改变主调函数中的 变量值了: 基本上是: 主调函数 执行完毕, 而且已经退出了之后, 才会 再去执行 $.messager...的回调函数.

==============================================

vim折叠的透彻理解了

如果设置的折叠方法是 fdm=indent的时候(查看当前折叠的方法是: set foldmethod) , 那么是会 按缩进进行折叠的! 是不需要你去 手动的创建折叠的, 会 自己自动的 创建 折叠.

那么, 当光标位于某一行的时候, 按zc到底会折叠哪些内容呢?

::: 将会折叠 当前行 + 跟当前行所有 同级 的内容. .. > 直到 当前行的 上一级 父标签. 结果就只有 父标签的内容将会显示, 而里面的内容将被折叠隐藏

zo展开当前折叠, 大写的: zO将会展开当前折叠下所有的子折叠

zc 和 zC 则是同理的.

**除了上面的 zc, zo, zO 可以一级一级的折叠之外, 那么, 要一次性的折叠所有的, 也就是 多级的折叠和展开 , 有两个工具, 一个是: 折叠所有的 , 使用: zM , 一个是 打开所有的 折叠, 使用 zR **

**要注意的是, 不同的 fdm, 折叠方法, 可以使用的折叠快捷键 操作是不一样的, 比如 采用 fdm=marker的时候, 那么操作 zf等 就无效! **

=======================================

margin或padding的值为 1到4个值的时候, 分别指的是哪些?

margin为4个时,margin:上 右 下 左;(为顺时针方向)

margin为3个时,margin:上 左=右 下; 即为三层: 上 / 中/ 下

margin为2个时,margin:上=下 左=右;

margin为1个时,margin:上=右=下=左;

===================================================

分类组件, 就是accordion, 就是多个 面板Ipanel)的组合在一起, 所以 面板是所有组件的基础, 最重要的基本组成元素。

对于accordion中的面板, 只需要有几个 div就是了, 每个div只需要一个 title属性, 加上其中的内容就可以了。

对于easyui bs等的属性写法或js的写法:

  • 只有在牵涉到/包含有 事件或方法的时候 才用 js的写法方式, 如果不牵涉到事件的话, 就推荐采用 属性的方式 来书写。
  • 所有组件的使用都是 雷同的 类似的, 都主要是 包含三个方面的内容: 属性+ 事件 + 方法 , 思想步骤 用法都是一样的 。
  • 属性 统一写在 data-options里面和 单独 按属性的方式来写 都是一样的, 都是正确 有效的。

======================================

使用tp的 redirect跳转, 其实 功能是很强大的, 并不只是设置跳转地值, 可以有很多其他参数的, 比如 跳转时, 传递附加参数, 延时跳转时间, 跳转提示信息

参考: https://blog.csdn.net/dailoge/article/details/71028197

  • 使用空格只是分割 1个字符的距离, 但是如果要分隔 的位置较多 通常不用空格来分隔对齐, 而是用 padding(如果某些框架导致 padding不可用, 也可以使用 margin)

  • 区分 isset和empty的区别: 前者是 判断 这个变量是否有, 有没有这个变量, 而后者是说, 如果这个有这个变量, 他的值是不是空值,比如是: ‘’, 0, 等等。

  • 判断 某个变量不为空, 就是使用 if(!empty(...)) 因为if本身就是一个 肯定的 陈述语句, 所以, 他的直观意思就是 : “如果是 。。。。 ” if( !empty(...) ) 的直观意思就是 : “如果。。。 不是。。。”

  • 因此, 在判断 POST的某个变量的时候, 就是 使用 两个条件:一个是isset, 一个是!empty: 即: if(isset($_POST['FOO']) && !empty($_POST['FOO']) )

===========================

vim的dw和db区别?

由于一个单词, 总是 从前往后看的, 所以, 如果光标在单词的开头, 则 dw将删除整个单词, 如果光标在 单词的后面, 则 db删除单词的时候, 则认为, 当前光标所在位置字母不属于 单词所有, 所以 db 将只删除 当前光标之前的 单词字母, 当前光标所在的字母将不删除.

如何设置 按f5或鼠标右键的刷新事件?

  • 不要使用 keydown 事件, 这个主要是针对 某些特殊的按键, (不包括 f5 或 右键刷新)
  • 右键刷新 或 按 f5 刷新, 可以在 window.onload = function(){....} 的js方法中 来写!

    具体参考: unbeforeunload()事件可以禁止onunload()事件的触发, 这个是用来 写 关闭页面的触发事件 https://www.cnblogs.com/jianmingyuan/p/5962729.html

关于 外键?

  • 对于 主键 所在的 表 其实 是 没有任何影响的. 甚至说 , 它根本就是"浑然不觉" 的

  • 外键是: key 字段名 constraint 外键约束名称 : 通常是 表名_ibfk_1(fk就是 foreign key的意思) references... 是 一个表的 非主键 字段/ 普通字段, (跟另一个表的 主键字段关联)

    所以 要 删除 外键 要在 创建 外键约束的 表中 去 alter .

  • 删除外键的语法是: alter table tbl1 drop foreign key 约束名称 (即 constraint后 的那个名字 )

CREATE TABLE `pj_stud` (
`stu_id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`class_id` smallint(5) unsigned DEFAULT NULL,
`name` varchar(20) NOT NULL,
PRIMARY KEY (`stu_id`), // 主键
UNIQUE KEY `name` (`name`), // 唯一性key
KEY `class_id` (`class_id`), // 普通索引
CONSTRAINT `pj_stud_ibfk_1` FOREIGN KEY (`class_id`) REFERENCES `pj_class` (`class_id`) // 外键约束.
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8

=============================

关于数据库的存储引擎?

  • mysql有四种常用的 innodb, myisam , memory, blackhole(作中继存储服务器)存储引擎.
  • 注意默认的是 myisam, 就是说, 如果你i不显式地指定存储引擎的话
  • 由于 myisam不支持外键, 所以如果用默认引擎创建外键的话会失败
  • 如果不强调程序的质量和稳定性健壮性的话, 就可以不用外键, 因为外键本身会带来一些问题和复杂性 .
  • 关于存储引擎, 可以参考https://www.cnblogs.com/ldj3/p/9197485.html 关于静态表/动态表/压缩表 , 参考: https://www.cnblogs.com/champaign/p/3422377.html

    在mariadb中, 用 Xtradb来代替了innodb.

    因此, 也就不要 过分地追击/纠缠 使用什么 存储引擎了, 其实对一般 数据流量不大的应用, 你可能体会不到它们只见的区别的.

在mysql和c语言中的 整数和 无符号整数的区别?

对于 a unsigned int ; a=1; b unsinged int; b=2: select a-b 的时候, 和 print "a-b: %d ", a-b, 和 print "a-b : %u" , a-b 都会得到 -1, 或 整数的最大值:

  • 因为对于 FFFF FFFF. 来说, 可以是有符号数 -1 , 也可以是 无符号数的 整数的最大值.

    因为, 如果是 有符号数, 那么, 最高位代表的是 符号位, 如果是 0 则表示是正数, 1表示的是负数, 如果是负数, 那么负数的值(绝对值)则是 剩余的部分 取反+1. 所以是 -1

    如果是无符号数, 则表示 整数的最大值. 参考: https://www.cnblogs.com/champaign/p/3422377.html
  • 所以 , 在 设置mysql的整数时, 要注意使用 unsigned可能带来的问题. (并不是不使用, 比如对于 primary key)通常还是使用unsigned的.
  • 对mysql的参数进行设置, 语法是, 使用 set 语句. 比如: set mysql_mode="NO_UNSIGNED_SUBTRACTION"
  • 好像: subtract 和 substract 就是中间 多一个 s或少一个s 都是可以的.一样的 ?
  • 注意, mysql 的 unsigned是一个字段类型 的修饰语, 因此 不能放在 字段类型 int的 前面, 而是要放在 后面的!

===============================

mariadb的默认存储引擎不再是: myisam, 而是 maria(后来叫 aria), 或者是 innodb. 这个和传统的mysql数据存储引擎有所不同 , 后者默认的是 myisam. 只是 mariadb的支持事物 的功能没有默认开启, 可以通过语句来开启: MariaDB默认的存储引擎是Maria,不是MyISAM。Maria可以支持事务,但是默认情况下没有打开事务支持,因为事务支持对性能会有影响。可以通过以下语句,转换为支持事务的Maria引擎。ALTER TABLE tablename ENGINE=MARIA TRANSACTIONAL=1;

如何在mysql中调整 字段的顺序?

::: 是通过 add语句, 或 modify语句/ change字句, 指定顺序, 关键字是 两个: first(放在第一位), after other_col是放在 另一个字段的后面.
但是要注意, 使用上面的三个字句时, 都要重新定义字段的 definition, 即使字段的属性没有改变!

可以一次性的 用 update 语句 来更改 数据表的 多个字段的值, 只是 多个字段之间要加上 逗号.

比如: MariaDB [pjiao]> update pj_stud set account='loeng2084', passwd='123456' where name='long2084';

mysql中的字符串截取和长度问题?

  • length函数, 是计算字符所占的 "存储"长度, 字节长度: 因此, 数字/字母的length是1, 汉字等多字节的length是2, 或3;

  • char_length, 顾名思义是, 计算字符的个数(长度), 所以, 所有 的数字/字母/汉字等都是1.

  • 截取函数: left, right, substring(而mid, substr是 substring的别名是一样的), substring的语法是 substrign(str, start_pos, length): start_pos可以为正, 也可以为负数. 从1开始数起.

    比如:

//  去掉name字段 最后四个数字
MariaDB [pjiao]> update pj_stud set name=substr(name, 1, length(name)-4);
Query OK, 3 rows affected (0.39 sec)

==============================

php是一种 数据类型 为"混合" 的语言, 前期, 主要是 函数库(全局函数), 后期高版本才有对象(而且 语言本身提供的内置对象都不是很多. ) 所以, php的使用主要还是用函数. 因此,

函数的使用, 就是 "全局函数, 直接写函数名(没有对象, 没有对象语法格式的 点, 或 箭头, -> 等). 比如: array_keys函数, 就是直接写 array_keys($arr, [[$val], [$strict true/false]]) 而不是使用$arr.array_keys(...)的方式.

一直很模糊, 数组的两种基本类型, 一种是 索引数组, 一种是 关联数组, 所谓的索引数组, 就是: 常用的/常说的, 直接写的数组,直接规定 数组元素的数组. 这个就叫索引数组, 而关联数组则是人为规定 "键值""键名"的数组, 键值是用 "字符串" 来表示的!

数组是一个 内部 带指针的 映射对. reset , arsort, key 等有很多对数组进行操作的 "全局"函数

==============================

在tabs的add 方法中, 要设置 href: 内容地址html文件. 使用 U方法, 如何传递 附加参数?

  1. 在任何地方, 任何情况下, 都是可以使用U 方法进行 附加参数传递的, 即使 不是 通过 action / submit 提交 按钮等方法 提交的 , 也是可以的!

  2. 附加参数的提交方法, 虽然可以用 array的方法, 但是还是推荐 用 /?name1=value1&name2=value2等的方法进行! 更简单直接!

  3. 问题的成功与否, 关键在于 写法, 字符串 是否添加了 引号!

  4. 要判断 U 方法 的参数 是否 传递成功 , 可以 在接受页面, 用 input type="text" value="{:I('get.name1')}" 的方法 来显示的查看. 然后 再将 input 改成 type="hidden" 来传递隐含的/隐藏的 内容 信息!!!


$('ul#jslist>li').click(function(){
var tit=this.innerHTML; var para = 'teacher=' + tit + '&student=' + '{$student}' + '&class=' + '{$curClass}'; // 这个是 参数字符串, 它的写法很重要!
//var para = 'teacher=' + tit ;
alert(para); tt.tabs('add',{
title:tit,
href:"{:U('pjcontent')}"+"/?"+para, // 这个是tp在U 方法中 传递附加参数 的 最关键的一步 写法. 在原来的地址(.../foo.html)后面, 是没有 斜杠的! 所以 要拼接字符串: '/?', 然后加上用 & 连接的 参数字符串
closable:true,
cache: true,
});
      <tr>
<td colspan="4">
<h5>意见及建议</h5>
<h5> 这里是一个文字编辑工具栏</h5>
<textarea id="advice" rows="5" cols="100"></textarea>
<input type="text" name="student" value="{:I('get.student')}"> // 这里完了之后 , 改成 input type="hidden"....
<input type="text" name="teacher" value="{:I('get.teacher')}">
<input type="text" name="class" value="{:I('get.class')}">
</td>
</tr>

============================

关于 教师任课表和 教师得分表?

  1. 两个表的前面几个字段, 可能感觉是 一样的, 比如都有: id, name, class, course. 所以 , 是否可以考虑 将这两个表 合并成一个表 来 处理?

    实际上, 是不可以的, 因为任课表, 的一条记录 , 可能是 对应着 得分表中的 多个 学生的评教结果, 对应着多条 记录, 两者是 一个 " 一对多" 的关系.

  2. 或者说, 即使你可以合并在一起, 也会 牵涉到 不同的多个用户, 同时 查询select 和 更新 update 同一条记录, 这样 会 造成 表的 行级锁, 或表锁. 直到前面那个用户 的事务 被 commit 或 rollback.. 参考 https://www.cnblogs.com/Leo_wl/p/5320498.html https://blog.csdn.net/younglao/article/details/76570187

    不能 在 同一条语句中 同时进行 更新 update和查询操作. ...

    关于加锁, mysql的不同存储引擎支持不同的 锁, 表级锁 table-level locking 和 行级锁 row-level locking . 而且对查询操作 加: 读锁, 对update 操作, 加 写锁, 这些锁 都是 自动 隐含 添加的. https://www.cnblogs.com/zhanht/p/5431273.html

关于 用来存放 comment评论 内容的 字段类型 用 varchar 还是 用 text? 非常好的透彻的一篇文章: https://www.cnblogs.com/gomysql/p/3615897.html

  • 可以肯定的说, 如果只是用来存放 简单的/简短的 评论 的 话,(比如 最多 几百个字, 2000~3000个字)的话, 一般用 varchar 是绝对没有问题的!

  • 不管是varchar 还是 text , 最终 决定 存放 个数的还是 字节个数! 一个varchar类型的字段最多能够存放的汉字个数, 最终还是由 mysql的 一行 one row 的字节长度来决定的:

    一行能保存的 最长字节是 65535个字节, 即一条记录中 , 所有字段 所占的字节总数加起来就是65535. 因此varchar字段所能保存的最多汉字字数, 就是 (65535-1-1-2-(其他字段所占 的字节数)) / 汉字编码字节单位数: 其中的1 是 一条记录 开始存储的位置不是从第一个字节, 而是从 第二个字节开始 存储的; 第二1 表示的是 default null 字段所占 的一个字节, 2是 一个 varchar字段需要 用(1个或) 2个字节 来存储 varchar字段 实际究竟存放的多少个字节数. (其中 varchar(255) 需要用 1个字节来存放 , 大于255的需要用 2个字节来存放)

  • 然后就是 剩余的 字节数 来除以 编码数, 如果是 utf8编码, 就除以3, 如果是 gbk/gb2312, 就除以 2.

  • 当然, 如果是varchar类型的 字段, (通常最少都是 2万个utf8 编码的汉字了, 因为 65535 -??? / 3 = 就是 2万多个了) 内容超出了, 会自动的转换成 text 类型的.

=====================

关于 vim快速编辑的 "文本对象" 参考: https://zhuanlan.zhihu.com/p/25999103

  • 把单词/句子/段落看作是一个 "文本对象" 整体, 进行编辑.

  • 编辑的方法是 : 动作 + 范围 + 对象: 你要作什么操作+...

  • 如何快速选中 html的 某个标签中的内容?

    这里最重要的 就是 这个 文本对象 指的是哪些? 它包含的是哪些东西?

    包括: 单词word(用 w表示) , 句子sentence( 用 s表示), 段落 paragraph(用p表示). 还有 各种成对括号的 "后括号" , 包括: ', ", ), ], }, >等.

    还有一个 非常重要的 文本对象 , 就是标签! 所谓 标签 就是 : 只 html中的 元素标签, 比如 <div> <p> <span> <a> <body> 以及 php中的 标签 <php...> 等标签. 所有的 这些 标签 都用 一个 字母 "t" 来表示 , 这里的t表示 : tag 的意思!

因此, 要 快速 的选中 某个 html标签中的 内容 : vit, 删除 标签中的 内容: dit, 注意 , 这些操作 不包括 标签中的 属性 内容!

xueping wang 记录2的更多相关文章

  1. xueping wang 记录

    https://www.bbsmax.com/A/lk5aVBod1O/ https://pkgs.org/statistics/ 在firefox的调试控制台, 下面有一个独立的分割的控制台窗口, ...

  2. Jason Wang:记录自己所想所得(第一次作业)

    这个作业属于哪个课程 <课程的链接> 这个作业要求在哪里 <作业要求的链接> 我在这个课程的目标是 学会现代软件工程的思想,运用到实际中去 这个作业在哪个具体方面帮助我实现目标 ...

  3. SQL Server求解连续操作(登录)数量(次数)最大的记录(用户)问题

    在园中大V深蓝医生中的一篇文中发现了这个问题,感觉挺有意思. 问题简化为"求解连续日期登录次数最大的用户".至少连续2天都登录才能认为是连续日登录. 数据岛问题 这个问题让我联想到 ...

  4. apache网站访问缓慢的处理记录

    朋友在阿里云上开通了一台ubuntu服务器(2G内存,2核CPU),用apache搭建了一个公众号网站.网站初期,他没有做相应的优化,在后续公众号推广活动时,网站并发突增,访问十分缓慢.登陆服务器,具 ...

  5. nginx缓存配置的操作记录梳理

    web缓存位于内容源Web服务器和客户端之间,当用户访问一个URL时,Web缓存服务器会去后端Web源服务器取回要输出的内容,然后,当下一个请求到来时,如果访问的是相同的URL,Web缓存服务器直接输 ...

  6. Nginx中防盗链(下载防盗链和图片防盗链)操作记录

    日常运维工作中,设置防盗链的需求会经常碰到,这也是优化网站的一个必要措施.今天在此介绍Nginx中设置下载防盗链和图片防盗链的操作~ 一.Nginx中下载防盗链的操作记录对于一些站点上的下载操作,有很 ...

  7. mysql查询在一张表不在另外一张表的记录

    mysql查询在一张表不在另外一张表的记录   问题:    查询一个表(tb1)的字段记录不在另一个表(tb2)中      条件:tb1的字段key的值不在tbl2表中      -------- ...

  8. cmd&Linux 下使用mysql全记录

    php mysql数据库常用cmd命令集 show databases; 显示数据库 create database name; 创建数据库 use databasename; 选择数据库 drop ...

  9. 12天学好C语言——记录我的C语言学习之路(Day 12)

    12天学好C语言--记录我的C语言学习之路 Day 12: 进入最后一天的学习,用这样一个程序来综合考量指针和字符串的关系,写完这个程序,你对字符串和指针的理解应该就不错了. //输入一个字符串,内有 ...

随机推荐

  1. Python insert()方法--list

    描述 insert()方法:用于向列表中指定的索引位置之前插入新的对象,因为是在对应目标之前插入,故此方法无法像append()方法一样将对象添加到列表末尾. 语法 语法格式:list.insert( ...

  2. 写一个方法,用于解读 url 后面的请求参数,最终得到 {"a":2,"b":3,"c":4};

    function getUrlParams(url){ let searchParam = url.split("?")[1]; let searchItemParams = se ...

  3. 设置光标聚焦输入框(EditText)并弹出软键盘(在适配器中设置)

    参考代码: public void setFocusEditTextAndShowSoftInput(final EditText editText){ editText.setFocusable(t ...

  4. FPGA验证之SystemVerilog+UVM

    [转载]https://blog.csdn.net/lijiuyangzilsc/article/details/50879545     数字芯片和FPGA的验证.主要是其中的功能仿真和时序仿真. ...

  5. docker命令汇总

    docker命令汇总 序号 类别 简述 命令 功能 说明 1 整体管理 安装 yum install docker-engine centos上安装docker Ubuntu上安装dockerapt- ...

  6. 配置notepad++支持golang开发

    1 下载golang安装包和配置环境变量 到官网下载golang安装包,下载地址:https://golang.org/dl/,我选择的go1.7.windows-amd64.zip. 配置环境变量: ...

  7. log4cplus在VS项目中的使用

    log4cplus是C++编写的开源的日志系统,宣称具有线程安全.灵活.以及多粒度控制的特点,通过将日志划分优先级使其可以面向程序调试.运行.测试.和维护等全生命周期.你可以选择将日志输出到屏幕.文件 ...

  8. Leetcode: Sliding Window Median

    Median is the middle value in an ordered integer list. If the size of the list is even, there is no ...

  9. vue页面传参

    1.传的参数是数组 传递参数的页面 let setStr = encodeURIComponent(JSON.stringify(this.tableData)); this.$router.push ...

  10. Java利用原始HttpURLConnection发送http请求数据小结

    1,在post请求下,写输出应该在读取之后,否则会抛出异常. 即操作OutputStream对象应该在InputStreamReader之前. 2.conn.getResponseCode()获取返回 ...