zoukankan      html  css  js  c++  java
  • ipan笔记

    // 对于mysql来说, 如果字段没有设置其 default值, 则会自动 设置 default值为null。同理没有设置not null, 则会自动允许null =yes

    // create table tbl_name like old_table_name: 参照一个表 创建一个新表:tbl_name不忘了写, old_table可以跨数据库

    // 所谓的模型 就是指数据库中 的表. 模型名称就是数据表的名称, 模型类 就是 指对应的数据表的操作类.
    其实D方法, 也可以实例化 "标准的/普通的"表类, 因为它会首先检查是否有自定义的 模型类,(在这个自定义模型类中, 可能有连接信息), 如果没有就调用基类的 ThinkModel类来实例化. 因此, 如果: 即使你在 config.php中没有配置数据库连接信息, 也能用 D方法 驱动模型类初始化实例, 但是如果用M方法就不行! 因为他只看 config.php中的配置信息

    只是如果没有自定义的模型类, 使用 M方法更快, 性能更省,就没有必要使用 D方法了.

    默认的是, M方法和D方法的第一个参数: 数据表名称 (模型名称)的首字母大小写 跟 模型类名称的大小写一致, 就是说即使表名称是user, 也要用 M('User'), 而不是M('user').但是 在windows下即使用小写的user好像也是可以的. 但是在linux下一定要注意一致.因此,为了保持兼容和避免出错, 还是 保持一致最好.

    注意, M和D方法的 第二个参数(即模型的前缀并不是 必须的), 如果没有前缀, 第二个参数就用 空字符串.

    // 关于变量的名称: 注意通常 全局函数中 的 变量的名称是可以随意取的, 没有谁来约束你! 但是在 具有继承关系的 类中, 比如 class UserModel extends Model , 模型类的 成员名称 就不是 可以任意写的了, 必须是父类的成员名称, 比如 连接成员就必须写成 $connection, 如果写成: $conn就会出错,报"无法加载数据库驱动"错误.

    // code标签和pre标签, 第一: 前者的语义更强, 明确告诉浏览器这是一段程序代码, 允许浏览器可以做出自己(特有)的css样式处理, 第二, 通常在显示时code标签是在一行之内显示, 忽略空格和 换行.而pre标签, 会保留 代码中的 空格和换行. 忠实地显示代码格式。但是不要在pre标签中使用 p, div等硬换行的标签.
    code标签类似于markdown中的单反引号, 而pre类似于三个反引号.

    //在数据库中, 通常order排序操作是 要配合 limit操作来进行的, 才有意义. 如果只有order没有limit方法, 那么在进行 语法分析 / 查询优化 的时候, 会忽略这个order操作的.

    //tp数据库的驱动层次是3层: ThinkPHP/Library/Think/Db.class.php + Think/Db/Driver.class.php + Think/Db/Driver/Mysql.class.php

    //在数据库的配置中, 通常要配置 7项 内容: db_type | host port| name| user, pwd | prefix // (一定要配置数据库名称, 否则会报错: no database selected , 因为模型类的操作 只是针对数据表,没有数据库)
    而db_port的值, 可以是数字 3306, 也可以是字符串 '3306'

    // 数据库的模型类构造函数的原型, 是一个构造函数 __construct, 不是 同名方法:

    public function __construct($name='',$tablePrefix='',$connection='')  //构造函数的三个参数都有默认值,是可选的
    
    'db_config1' => 'mysql://root:@localhost:3306/test', // 在config.php中配置这个连接 dsn名称
    $User = M('User', 'dgwp_', 'db_config1'); 
    

    //所谓的 内联组件: xxx-inline, 是指对于一些默认以竖直方向排列的, 变成以水平方向排列.
    比如: list列表组件, 默认呢是竖直排列的, 如果以横向水平排列,就是 list-inline, 就可以做菜单导航显示
    比如: dl自定义列表其: dt(title)和dd(data)默认是竖直排列的, dl-horizontal 就变成dt和dd 水平在同一行显示了.

    //html的很多元素, 其实默认来说都有一定的 margin和padding, 目的是为了: 即使你没有设置任何的css, 都要保证能有一定的可视性和可阅读性. 比如:ul ol dl的数据其实有一个默认的 样式: padding-left: xx个像素.

    //关于数据库的模型的操作函数,比如 select, find, 连贯方法where/limit/data等 都是针对模型类Model而言的. 所以这些方法都是在 基类 ThinkModel.class.php 类中的. 而不是在 ThinkDb.class.php文件中的

    // bootstrap的carousel 轮播、幻灯片、旋转木马
    包括三个部分: 轮播内容的容器; 指示器indicators; 按钮跳转.

    1. 通常的指示器(做按钮用的)是用 a(链接)来改装的
    2. data- 属性通常用来指示js脚本应用的, 比如 data-target, data-slide-to , 而类主要是用来规定显示外观的.
    3. carousel默认不是自动开始的, 要用 data-ride="carousel"属性 来启动或用 脚本 $('#mycarousel').carousel(); 来启动
    4. 轮播的indicators是用来 指示显示内容 的 索引的 数字或条目, 从0 开始计算起, 他的属性是 data-target, data-slide-to(表示该索引滑动到第几个) ; 而单击调整 当前位置的 是 a标签改造的, 他的属性是
    5. 要注意, 占位符 是 placeholder 而不是 takeplacer

    href="#mycarousel" data-slide="prev"/"next" 注意和 data-slide-to相区别

    文件名最好不要用纯数字, 或用数字开头. 免得引起一些莫名其妙的问题!


    // 在css中要想获得圆圈, 可以用 : border来做: 首先设置元素比如.carousel-indicators li的高度和宽度; 然后设置元素的边框,让边框的radius刚好等于li的宽度和高度: .carousel-indicators li { 10px; height: 10px; border: 1px solid #fff; border-radius: 10px; } 如果是 激活的li则让其尺寸稍稍大一些,再设置背景的颜色为白色 .carousel .active{ 12px; height:12px; background-color: #fff;

    // 所以, carousel的 indicators的样式 是在 bs中的 .carousel li中设置的,默认的边框颜色和背景颜色都是 白色,所以在白色的背景下是看不到的.

    // 而indicators的内容,即使是数字1,2,3等也是看不到的,是因为在.carousel li中设置了 text-indent: -999px;的样式。 如果你确实想要显示li中的数字1,2,3等, 那么就要覆盖默认的样式: .carousel li {text-indent: 0px;} 当然要重新调整一下 其width和height和background等的属性。
    但是 最好不要 用这种明显的 在 li中设置数字的做法, 因为 即使你仔细地调整 各种属性, 还是很难将数字 刚好就放在 列表的圆圈内. 所以, 没有必要必须显示 1,2 ,3等数字, 所以还是保留bs 默认 的 text-indent: -999px;属性好了.

    // 注意, 在firefox的调试器中, 看到的 rules (这个是css的规则)上被横线 删除线 划掉的条目, 是指 原来具有的默认规则, 被后面的规则 所覆盖,所重写了的.
    因此, 在 要重写/覆盖bs, jeasyui等框架中的 默认css规则时, 一定要把自己的 css规则文件放在这些框架的css规则的后面才行!

    // carousel的ul/li 指示器indicators, 其实也是一个块, 它也可以 单独的 设置他的背景颜色, 比如: <ul class="carousel-indicators" style="background-color: #99FF99">
    这么多的内容 都堆积到一个 div中, 靠的就是 设置他们的 z-index 的值不同 来实现的.

    // bs中的标签属性中, 很多以data- 开头的, 就是 对应着/调用 相应的 js功能代码, 而有的属性是必须要的, 比如 role, 比如 placeholder等, 而有些 辅助类 ,比如 sr-only的类就可以不要. 通常在 label标签中设置了 sr-only类, 那么该label标签 就是不可见/隐藏的.

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

    如果将 .carousel-caption的div>h3等内容 放在 所有 的item的外面, 则会以外部总的 #mycarousel为父容器进行绝对定位, 而且每个幻灯片上都有这种标题内容.

    插件和组件的区别: 插件是动态加入的, 主要是 js效果和动态效果; 而组件主要是css实现的框架和布局.


    <!doctype html>
    <html lang="zh_CN">   // html的属性 lang, 明确告诉浏览器是 zh_cn
    <head>
    <meta charset="utf8">   // 同时用两种方法 来写  字符集编码, 主要是为了兼容一些老的浏览器.
    <meta http-equiv="content-type" content="text/html; charset=utf8">   // 同时用两种方法 来写  字符集编码, 主要是为了兼容一些老的浏览器.
    
    <meta name="viewport" content="width=device-width; initial-scale=1"> 
    //  视口有两个属性, 一个是name='viewport', 一个是content,  其中content的内容有: 宽度width,  等于设备宽度device-width, 初始缩放比例=1
    
    // 可以把所有的内容都放在 div中, 比如, 甚至是 br: <div> <br/></div>
    
    <div> <br /></div>
    
    

    设计的配色, 如果是默认的白色的背景,就用 浅蓝色的前景字体, 如果是白色的前景色, 为了区分块 的区域, 背景颜色就用 浅灰色 比如#eee.

    pre和code其实是可以混用嵌套使用的, 比如 pre>code等.

    bs的网格类布局, 就类似于 "表格", 网格 ~~~ 表格, 如同表格的结构一样, 网格也是 由: div.container > div.row > div.col-xx 构成的.


    1. 对于某个元素的 css类样式, 既然是写在当前元素上的,那么该css样式总是作用在当前元素自己的身上,而不是作用在他的父元素或他的子元素上, 这一点是很明显但往往容易被忽略、视而不见的

    2. 但是当前元素的类样式, 又不是完全跟 父元素或子元素 无关的,是有关系的, 这种相互关联 主要体现在两个方面:
      一个是 “向下的”: 当前属性对子元素的 继承性;
      一个是 “向上的”位置对父容器(父元素)的相对性

    • 继承性: 看这种css属性是否有继承性,比如color属性,如果inherit 为 yes, 表示有继承性,即该元素的子元素如果不指定color属性, 将继承其父元素的color属性;

    • 位置关联性, 主要体现在一些 跟位置相关的css属性,那么就是指 应用当前css属性的当前元素 其位置相对于 其父容器(即父元素)的位置关系: 是居于父元素的顶部、水平/垂直居中、底部等。

    1. 还要注意元素的默认值: 有的元素有默认值, 而有的元素是没有默认值的, 或者说默认值等于: not specified/none

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

    关于伪类和伪元素?

    1. 伪类 是表示 选择器的 某种状态, 写法是用一个冒号 :active 表示, 注意不是像其他类样式一样, 用点号表示

    2. 伪元素 是 表示元素的某种特殊位置, 写法是css3的两个冒号 ::before 表示, 但是为了兼容ie8以下(ie8以下不认识双冒号),大多数采用一个冒号的写法, 比如 :befor 所以, 伪类和伪元素在写法上就是一样的外貌了,所以容易搞混淆

    3. 最主要的是:

    • 要记住有哪些伪元素和伪类
      伪元素有4个 :first-letter, :first-line, :before, :after
      伪类有 :active, :visited, :link, :hover, :first-child等
    • 要知道 伪类可以 通过指定一个类及类样式来代替实现,所以叫伪类; 而 伪元素 则需要添加 一个 子元素才能实现,所以叫伪元素。

    **伪类和 伪元素都可以放在 任意选择器的后面 比如 .clearfix:before, 这个是伪元素, a:active 这个是伪类, 再比如: p:active或 div:visited等都是有意义的 , 都是有效果的! **

    pseudo: [sju:d2u] 伪: pseudo-classes, pseudo-elements

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

    inline-level 元素, 是指内联级别的元素, 包括 四种情况: 本身就是inline元素(有img,span,i,strong等),设置了 display: inline-block的元素,设置为: display: inline-table的元素, 和 设置为display:table-cell;

    thinkphp模型$_validate的错误信息如何显示在表单上? 参考: https://www.cnblogs.com/zxf100/p/6764944.html


    1. 连接信息的配置, 有三种情况, 一是传统的默认的分离型的, 比如 'DB_TYPE' => 'mysql'等; 一种是配置成DB_CONFIG1="..."这种形式; 另一种是直接在创建数据表对应的模型对象时直接写 "mysql://root:@...."的形式.
      在写mysql://root:@localhost/test字符串的时候,如果没有用户密码, root后面就什么都不要写, 不能写空的双引号,比如 mysql://root:''@localhost....这种写法会报错
      实例化模型对象的时候, 即使表的名称是小写的, 比如 user, 但是 实例化里面也要写成 "首字母大写"的样子.比如 : M('User',...)
      实例化的时候 完整的函数原型是 M('模型名称', [表前缀], [连接字符串信息]); 即要指明用什么连接信息, 连接的时候, 表的前缀是什么...

    注意, 在html中写的根路径"/" , 总是指的 localhost的所在的目录, 并不一定就是当前项目所在的路径

    1. 我们在使用框架的时候, 比如bs, easyui等的时候, 要尽量 根据/遵守 框架的使用方法, 而不要打破它的设计思想, 不要做框架 /机器等做不到的事. 比如 栅格系统中你就不要再去用表格系统了, 那样就不优雅(很别扭了)

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

    bs中的类,很多都是独立的,并没有固定的搭配,比如.container, .well等类,可以根据自己的需要自由组合。
    而且,在bs中要有这样的意识:在一个元素中,可以在class类中指定多个互不相关的样式类,这些样式类是可以自由组合的

    bs的类样式的派生关系?
    bs中基础类样式,是从各种样式类中提取公共样式,大家共有的样式,而派生类则是各个元素独有的/不同的样式;
    基础类样式和派生类样式是不同的, 不重复的!
    使用派生类样式时,应该/必须同时、先使用基础类样式, 然后写上派生类样式

    bs中的样式类,可以在基础类的基础上设置三个方面的内容,包括 颜色,大小,对齐:
    比如: btn类是基础类样式,颜色: btn-primary, btn-error, btn-warning,btn-success
    大小: btn-lg, btn-md, btn-sm等
    位置的对齐:text-center, text-left, text-right, 这个就比写样式更简洁。

    well类的样式,是有一点向外凸出的浮雕墙的样式,同时有一些内padding。

    bs :要对每一个样式类,至少是常用的样式类,比如.container, .col-md等这些类的具体规则要比较熟练熟悉,

    .container类 上下是没有margin的,所以看到容器是紧挨着上一个元素的,而其左右的margin是auto自动的.
    它的内部,左右各有15px的padding。
    而col和col之间 只有 15px的间隔...

    ### 在开始写页面的时候, 为了更好地理解各个类的样式, 排查各种布局的问题, 可以将 每一个 div都加上 不同颜色的边框!! 这是一个很好的方法, 只要加上边框后, 很多问题 就一下子看出来,一下子发现得了

    为什么我不使用 bootstrap的栅格系统 来进行布局??


    在设置tp的 数据库连接时, 有一种连接方式叫 dsn: data-system name: 是dsn,不是dns:(dns是域名系统), 这个是数据连接名称, 最后一个单词是name, 是名称, 所以是n: dsn


    关于table的三种样式?

    共有三种样式: table-bordered, table-condensed, table-striped.

    • 注意的是, 这三种样式中, 类名 都是 -ed, 过去完成时的被动动词;
    • condensed 的效果是 被压缩的, 样式是 内容四周有 5px的 内 padding! condensed和 bordered 可以同时使用!

    在bs中 要使内容居中的话, 要多使用 .container类, 这个类样式, 就是 让div块的margin 上下各5px, 左右 auto。

    为什么开发传统宽屏桌面, 不推荐使用bs的栅格系统布局?

    • 因为 bs的栅格布局 主要是 用来进行(适应) 手机、平板等移动设备的 布局, 以移动设备的布局优先, 传统的宽屏显示器 并不适合。 因为它会自动进行 (上下方向上的)堆叠
    • 最重要的是, bs的栅格堆叠 不是根据你 显示的屏幕 “物理”宽度 来确定的, 而是根据你的 显示器的“分辨率” 来确定的, 所以, 即使你的显示器在物理尺寸上很宽, 但是当你设置的分辨率是
      1024*768的时候, 你使用 col-lg-6 等列的时候, 它也会发生竖直方向上的 堆叠。 这个就很让人 疑惑!
    • 所以 在 主要是 部署在 应用在 传统显 示器上的 web应用, 还是要用 div 或 table 来进行布局。

    所以, 在web应用中, table 的作用主要有两个: 一个是用来显示或描述 确实是表格内容的; 另一个是 用来进行 布局和排版。 有时候, 表格的布局和排版 会起到很轻松的解决困难布局的问题, 如同表格在 word中 用来布局、排列多个图片一样!


    1. 连接信息的配置, 有三种情况, 一是传统的默认的分离型的, 比如 'DB_TYPE' => 'mysql'等; 一种是配置成DB_CONFIG1="..."这种形式; 另一种是直接在创建数据表对应的模型对象时直接写 "mysql://root:@...."的形式.
      在写mysql://root:@localhost/test字符串的时候,如果没有用户密码, root后面就什么都不要写, 不能写空的双引号,比如 mysql://root:''@localhost....这种写法会报错
      实例化模型对象的时候, 即使表的名称是小写的, 比如 user, 但是 实例化里面也要写成 "首字母大写"的样子.比如 : M('User',...)
      实例化的时候 完整的函数原型是 M('模型名称', [表前缀], [连接字符串信息]); 即要指明用什么连接信息, 连接的时候, 表的前缀是什么...

    注意, 在html中写的根路径"/" , 总是指的 localhost的所在的目录, 即: /var/www/html/这个目录. 并不是指: 当前项目所在的路径

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

    #### div中的内容居中, 可以有两种方法: 一是使用 line-height: 跟div的高度相同; 二是使用 display: table-cell, vertical-align: middle. 但是, 使用vertical-align等都比较麻烦, 不如直接使用 内/外边距来得更方便和更灵活! 而且适用于任何地方

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

    关于mysql中的字符串连接函数?

    1. mysql中的随机数 函数 rand() 不能代参, 只能产生0~1之间的随机小数. 所以要产生四位的随机数字用: round(1000+9000*rand());
    2. mysql中的字符串连接, 不是用 加号+, 也不是用点号, 也不是函数 strcat, 而是用 concat('..', '...', '...'), 可以直接用数字 和字符串连接
      其他类似函数有: concat_ws, group_concat, repeat('abc', 3');

  • 相关阅读:
    UVa532 Dungeon Master 三维迷宫
    6.4.2 走迷宫
    UVA 439 Knight Moves
    UVa784 Maze Exploration
    UVa657 The die is cast
    UVa572 Oil Deposits DFS求连通块
    UVa10562 Undraw the Trees
    UVa839 Not so Mobile
    327
    UVa699 The Falling Leaves
  • 原文地址:https://www.cnblogs.com/bkylee/p/10024674.html
Copyright © 2011-2022 走看看