zoukankan      html  css  js  c++  java
  • 签到项目总结

    一.整体介绍:http://m.fang.com/public/qd/

    Image

    二.碰到的问题:

    (1)数据问题:

    1.数据库的建立(引擎,编码类型)

         a.每个库都会有自己的默认引擎和编码,在建库和表的时候也可以分别指定库、表、字段的编码格式

         b.在mysql数据库中,若用“utf8”的编码格式则varchar(12)可以存储12个中文,是以字符为存储单位的;

           若用“latin”则varchar(12)可以存储4个中文,它是以字节为存储单位的

         c.存储引擎: http://www.ha97.com/4197.html

                                      InnoDB                                          MyISAM

           构成上:                数据文件和日志文件,                      .frm存表的定义  .myd存具体数据  .myi存索引

                                     .frm文件用于存数据

           事务处理 :             支持事务和外部键                            强调读性能,不支持事务

           读表的具体行数:     count(*)要扫描全表                          count(*)在不使用where的条件下直接读出表的行数

           锁:                       行锁(如果在执行一个sql语句不能确      表锁

                                     定扫描范围会锁全表,如使用like)

           空间结构:              B+tree                                          B tree

           总结:在合适的字段上建立索引;建索引时也要取合适的长度;组合索引遵循最左前缀匹配原则

    2.表该如何建(用什么类型,多长,是否建索引,表的引擎,表的编码类型)

    Image(1)

         以上是我用的一个表,存在的问题

         a.在我的应用中qd_id这个字段没用到就不需要用自增,也没必要用到那么大的长度;

         b.根据具体应用varchar()指定合适的长度(这个地方要仔细你的编码格式)

         c.sex这类用0和1来标识的字段用enum格式来存储比较好;

         d.最好不用NULL而用' '(空);

         e.时间类型用int比较好,方便程序处理和比较

         f.user_agent字段长度不够,大致在varchar(200)比较合适

    (2)程序问题:

    1. 前端验证 :用正则匹配验证输入的字符
    2. ajax请求次数限制(可以绕过js直接发送请求,用验证码或用ip限制请求次数)
    3. 后端数据过滤 (mysql_real_escape_string(), addslashes() strip_tags(),htmlspecialchars())可以查看http://www.111cn.net/phper/phpanqn/58589.htm
    4. 代码优化(js优化,php优化,页面效果优化)

    (3)后期查看问题(如何将签到信息打印成可读的表格)

    在输出前加上

    header("Content-type:application/vnd.ms-excel");
    header("Content-Disposition:attachment;filename=dahuiqiandao_data.xls");

    这两句可以将输出的数据转成excel类型的

    如我获得一个$result数组,代码如下

    header("Content-type:application/vnd.ms-excel");

    header("Content-Disposition:attachment;filename=dahuiqiandao_data.xls");
            echo "姓名"." ";
            echo "电话"." ";
            echo " ";
            if (is_array($result) && count($result) >0) {
                foreach ($result as $k => $v) {
                    echo $v['user_name']." ";
                    echo $v['user_tel']." ";
                    echo " ";
                }
                echo " 截止".date('Y-m-d H:i:s', time())."已有".count($result)."人 ";
            }

    就可以将$result中的字段输出到相应的excel中

    三.总结

    实践出真知,自己做了和自己提前想的结果一般不一致,多动手,技术是练出来,一定的知识储备是前提

  • 相关阅读:
    leetcode-832-Flipping an Image
    leetcode-830-Positions of Large Groups
    leetcode-824-Goat Latin(字符串的处理)
    leetcode-821-Shortest Distance to a Character
    leetcode-819-Most Common Word(词频统计)
    HDU 4729 An Easy Problem for Elfness(树链剖分边权+二分)
    python爬虫(1)——正则表达式
    利用MySQL之federated引擎实现DBLink功能
    HTTPS原理及流程
    NIO、多路复用的终极奥义
  • 原文地址:https://www.cnblogs.com/ryanlamp/p/4654128.html
Copyright © 2011-2022 走看看