精华内容
下载资源
问答
  • 表结构中字段是否添加索引判断依据是什么? -- 字段是否是查询条件或者是排序条件。   是否将所有的字段都添加索引,来加快查询? -- 不行的   1、 索引会占用存储空间,索引越多,使用的存储空间越多 2...

    表结构中字段是否添加索引判断依据是什么?  --  字段是否是查询条件或者是排序条件。

     

    是否将所有的字段都添加索引,来加快查询?  -- 不行的

     

    1、  索引会占用存储空间,索引越多,使用的存储空间越多

    2、  插入数据,存储索引也会消耗时间,索引越多,插入数据的速度越慢

    展开全文
  • 对数据库索引的理解及适合建立索引字段

    万次阅读 多人点赞 2018-03-06 13:17:43
    转载深入浅出数据库索引原理,哪些字段适合建立索引 问题 为什么要给表加上主键? 为什么加索引后会使查询变快? 为什么加索引后会使写入、修改、删除变慢? 什么情况下要同时在两个字段上建索引? 这些问题...

    因本人小白,总结一下别人总结的,勿怪勿怪。转载深入浅出数据库索引原理哪些字段适合建立索引

    问题

    • 为什么要给表加上主键?
    • 为什么加索引后会使查询变快?
    • 为什么加索引后会使写入、修改、删除变慢?
    • 什么情况下要同时在两个字段上建索引?

      这些问题他们可能不一定能说出答案。知道这些问题的答案有什么好处呢?如果开发的应用使用的数据库表中只有1万条数据,那么了解与不了解真的没有差别, 然而, 如果开发的应用有几百上千万甚至亿级别的数据,那么不深入了解索引的原理, 写出来程序就根本跑不动,就好比如果给货车装个轿车的引擎,这货车还能拉的动货吗?

    接下来就讲解一下上面提出的几个问题,希望对阅读者有帮助。

    网上很多讲解索引的文章对索引的描述是这样的「索引就像书的目录, 通过书的目录就准确的定位到了书籍具体的内容」,这句话描述的非常正确, 但就像脱了裤子放屁,说了跟没说一样,通过目录查找书的内容自然是要比一页一页的翻书找来的快,同样使用的索引的人难到会不知道,通过索引定位到数据比直接一条一条的查询来的快,不然他们为什么要建索引。

    想要理解索引原理必须清楚一种数据结构「平衡树」(非二叉),也就是b tree或者 b+ tree,重要的事情说三遍:“平衡树,平衡树,平衡树”。当然, 有的数据库也使用哈希桶作用索引的数据结构 , 然而, 主流的RDBMS都是把平衡树当做数据表默认的索引数据结构的。

    聚集索引

    我们平时建表的时候都会为表加上主键, 在某些关系数据库中, 如果建表时不指定主键,数据库会拒绝建表的语句执行。 事实上, 一个加了主键的表,并不能被称之为「表」。一个没加主键的表,它的数据无序的放置在磁盘存储器上,一行一行的排列的很整齐, 跟我认知中的「表」很接近。如果给表上了主键,那么表在磁盘上的存储结构就由整齐排列的结构转变成了树状结构,也就是上面说的「平衡树」结构,换句话说,就是整个表就变成了一个索引。没错, 再说一遍, 整个表变成了一个索引,也就是所谓的「聚集索引」。 这就是为什么一个表只能有一个主键, 一个表只能有一个「聚集索引」,因为主键的作用就是把「表」的数据格式转换成「索引(平衡树)」的格式放置。
    这里写图片描述
    上图就是带有主键的表(聚集索引)的结构图。图画的不是很好, 将就着看。其中树的所有结点(底部除外)的数据都是由主键字段中的数据构成,也就是通常我们指定主键的id字段。最下面部分是真正表中的数据。 假如我们执行一个SQL语句:

    select * from table where id = 1256

    首先根据索引定位到1256这个值所在的叶结点,然后再通过叶结点取到id等于1256的数据行。 这里不讲解平衡树的运行细节, 但是从上图能看出,树一共有三层, 从根节点至叶节点只需要经过三次查找就能得到结果。如下图
    这里写图片描述

    假如一张表有一亿条数据 ,需要查找其中某一条数据,按照常规逻辑, 一条一条的去匹配的话, 最坏的情况下需要匹配一亿次才能得到结果,用大O标记法就是O(n)最坏时间复杂度,这是无法接受的,而且这一亿条数据显然不能一次性读入内存供程序使用, 因此, 这一亿次匹配在不经缓存优化的情况下就是一亿次IO开销,以现在磁盘的IO能力和CPU的运算能力, 有可能需要几个月才能得出结果 。如果把这张表转换成平衡树结构(一棵非常茂盛和节点非常多的树),假设这棵树有10层,那么只需要10次IO开销就能查找到所需要的数据, 速度以指数级别提升,用大O标记法就是O(log n),n是记录总树,底数是树的分叉数,结果就是树的层次数。换言之,查找次数是以树的分叉数为底,记录总数的对数,用公式来表示就是这里写图片描述

    用程序来表示就是Math.Log(100000000,10),100000000是记录数,10是树的分叉数(真实环境下分叉数远不止10), 结果就是查找次数,这里的结果从亿降到了个位数。因此,利用索引会使数据库查询有惊人的性能提升。

    然而, 事物都是有两面的, 索引能让数据库查询数据的速度上升, 而使写入数据的速度下降,原因很简单的, 因为平衡树这个结构必须一直维持在一个正确的状态, 增删改数据都会改变平衡树各节点中的索引数据内容,破坏树结构, 因此,在每次数据改变时, DBMS必须去重新梳理树(索引)的结构以确保它的正确,这会带来不小的性能开销,也就是为什么索引会给查询以外的操作带来副作用的原因。

    非聚集索引

    讲完聚集索引 , 接下来聊一下非聚集索引, 也就是我们平时经常提起和使用的常规索引。

    非聚集索引和聚集索引一样, 同样是采用平衡树作为索引的数据结构。索引树结构中各节点的值来自于表中的索引字段, 假如给user表的name字段加上索引 , 那么索引就是由name字段中的值构成,在数据改变时, DBMS需要一直维护索引结构的正确性。如果给表中多个字段加上索引 , 那么就会出现多个独立的索引结构,每个索引(非聚集索引)互相之间不存在关联。 如下图
    这里写图片描述
    每次给字段建一个新索引, 字段中的数据就会被复制一份出来, 用于生成索引。 因此, 给表添加索引,会增加表的体积, 占用磁盘存储空间。

    非聚集索引和聚集索引的区别在于, 通过聚集索引可以查到需要查找的数据, 而通过非聚集索引可以查到记录对应的主键值 , 再使用主键的值通过聚集索引查找到需要的数据,如下图这里写图片描述

    不管以任何方式查询表, 最终都会利用主键通过聚集索引来定位到数据, 聚集索引(主键)是通往真实数据所在的唯一路径。

    覆盖索引(复合索引或者多字段索引查询)

    然而, 有一种例外可以不使用聚集索引就能查询出所需要的数据, 这种非主流的方法 称之为「覆盖索引」查询, 也就是平时所说的复合索引或者多字段索引查询。 文章上面的内容已经指出, 当为字段建立索引以后, 字段中的内容会被同步到索引之中, 如果为一个索引指定两个字段, 那么这个两个字段的内容都会被同步至索引之中。

    先看下面这个SQL语句

    //建立索引

    create index index_birthday on user_info(birthday);

    //查询生日在1991年11月1日出生用户的用户名

    select user_name from user_info where birthday = '1991-11-1'

    这句SQL语句的执行过程如下

    首先,通过非聚集索引index_birthday查找birthday等于1991-11-1的所有记录的主键ID值

    然后,通过得到的主键ID值执行聚集索引查找,找到主键ID值对就的真实数据(数据行)存储的位置

    最后, 从得到的真实数据中取得user_name字段的值返回, 也就是取得最终的结果

    我们把birthday字段上的索引改成双字段的覆盖索引

    create index index_birthday_and_user_name on user_info(birthday, user_name);

    这句SQL语句的执行过程就会变为

    通过非聚集索引index_birthday_and_user_name查找birthday等于1991-11-1的叶节点的内容,然而, 叶节点中除了有user_name表主键ID的值以外, user_name字段的值也在里面, 因此不需要通过主键ID值的查找数据行的真实所在, 直接取得叶节点中user_name的值返回即可。 通过这种覆盖索引直接查找的方式, 可以省略不使用覆盖索引查找的后面两个步骤, 大大的提高了查询性能,如下图
    这里写图片描述
    数据库索引的大致工作原理就是像文中所述, 然而细节方面可能会略有偏差,这但并不会对概念阐述的结果产生影响 。

    对哪些字段添加索引

    1、表的主键、外键必须有索引;
    2、数据量超过300的表应该有索引;
    3、经常与其他表进行连接的表,在连接字段上应该建立索引;
    4、经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;
    5、索引应该建在选择性高的字段上;
    6、索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;
    7、复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替:
    A、正确选择复合索引中的主列字段,一般是选择性较好的字段;
    B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中?单字段查询是否极少甚至没有?如果是,则可以建立复合索引;否则考虑单字段索引;
    C、如果复合索引中包含的字段经常单独出现在Where子句中,则分解为多个单字段索引;
    D、如果复合索引所包含的字段超过3个,那么仔细考虑其必要性,考虑减少复合的字段;
    E、如果既有单字段索引,又有这几个字段上的复合索引,一般可以删除复合索引;
    8、频繁进行数据操作的表,不要建立太多的索引;
    9、删除无用的索引,避免对执行计划造成负面影响;

    展开全文
  • <p>2.like查询%不能在前面,这样会全表搜索。 3.column is null 可以使用到索引。 4.如果or前的条件中的列有索引,后面的没有,索引也不会用 5.列类型是字符串,查询的时候一定要引号&#...
  • 今天我们来谈谈SQL语句...比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段组合索引。这样条件排序都有效的利用到索引,性能迅速提升。 SELECT * FROM operation WHERE ...

     谈到python的文件后缀,说眼花缭乱也不为过.来看看你遇到过哪些类型!

    .py      

    如果这个不知道,呵呵…那请出门左拐,你还是充钱那个少年,没有一丝丝改变。接着打游戏去吧…

    .pyc      

    这个后缀应该算是除了python的py代码外,遇到最多的一种文件类型了。虽然python被普遍认为是一种解释性语言,但谁说它就不能被编译后执行呢?python通过compile生成的pyc文件,然后由python的虚拟机执行。相对于py文件来说,编译成pyc本质上和py没有太大区别,只是对于这个模块的加载速度提高了,并没有提高代码的执行速度,通常情况下不用主动去编译pyc文件。那pyc文件存在的意义在哪里?
    除了略微提高的模块加载速度外,更多的当然是为了一定意义上的保护源码不被泄露了。
    当然为什么说一定意义?因为既然有编译,就毕竟存在反编译喽,这个一会儿说…
    如何将py文件编译成pyc文件呢?方法有三:

    1.使用python直接编译

    python -m sample.py

     2. py_compile

    import py_compile
    py_compile.compile('sample.py')

    3. compileall

    import compileall
    compileall.compile_file('sample.py')
    compileall.compile_dir(dirpath)

    三种方式一看便知,区别在于compileall可以一次递归编译文件夹下所有的py文件

    .pyo      

    pyo是源文件优化编译后的文件,pyo文件在大小上,一般小于等于pyc文件。这个优化没有多大作用,只是移除了断言。原文如下:

    When the Python interpreter is invoked with the -O flag, optimized code is generated and stored in .pyo files. The optimizer currently doesn’t help much; it only removes assert statements. When -O is used, all bytecode is optimized; .pyc files are ignored and .py files are compiled to optimized bytecode.

    使用方式:python -O -m py_compile sample.py

    .pyd    

    看到了前几种,相信d这个字母大家猜猜就能想到,它是python的动态链接库;动态链接库(DLL)文件是一种可执行文件,允许程序共享执行特殊任务所必需的代码和其他资源;你在python安装目录的DLL文件夹下,就可以看到它们了。

    .pyz(w)

    从Python 3.5开始,定义了.pyz和.pyzw分别作为“Python Zip应用”和“Windows下Python Zip应用”的扩展名。
    新增了内置zipapp模块来进行简单的管理,可以用Zip打包Python程序到一个可执行.pyz文件。
    使用也比较简单,但无法想pyinstaller等打包exe工具一样脱离python环境单独运行,而且这类文件往往拿文本编辑器就能看到它的源码信息,总体来说还是比较鸡肋。

    .exe      

    为什么会再单独提到exe文件,因为python有很多可以将python源码打包成exe的工具,从而脱离python环境单独运行。感兴趣的朋友可以去看看我之前总结的文章:Python打包工具--Pyinstaller详细介绍

    python反编译

    所谓道高一尺魔高一丈,不管是python、java还是C语言,只要有编译,必然存在反编译的操作。不管再怎么去考虑加密,势必都有人能破解,只是成本不同而已,所以编译只可作为一种防君子不防小人的操作。今天主要和大家聊聊pyc文件的反编译,其中有哪些小心机的做法与陷阱。
    首先,反编译既然是一种非正常手段,python自然不会原生附带该模块,我们需要安装它:
    pip install uncompyle6
    操作呢,也比较简单命令行下输入:
    uncompyle6 sample.pyc(pyo) > sample.py
    这就完了?说好的心机与陷阱呢?哈哈,接着看…

    使用注释的心机

    我们来创建一个名为BreezePython.py的文件,并将下面的代码进行编译和反编译,来看看反编译后的内容与原始代码有什么差异

    # -*- coding: utf-8 -*-
    # @Author : 王翔
    # @微信号 : King_Uranus
    # @公众号 : 清风Python
    # @GitHub : https://github.com/BreezePython
    # @Date : 2019/12/15 11:16
    # @Software : PyCharm
    # @version :Python 3.7.3
    # @File : tmp.py
    
    import platform
    
    def test():
        """
        这是一个测试方法,用来验证反编译
        :return: None
        """
        # 打印系统详情
        print(platform.platform())
    
    test()

    编译:

    python -m BreezePython.py

    反编译:
    uncompyle6 BreezePython.cpython-37.pyc > output.py
    下来看看反编译后的文件有什么区别吧:

    # uncompyle6 version 3.6.4
    # Python bytecode 3.7 (3394)
    # Decompiled from: Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)]
    # Embedded file name: C:\Users\Administrator\Desktop\uncompile\BreezePython.py
    # Size of source mod 2**32: 453 bytes
    import platform
    
    def test():
        """
        这是一个测试方法,用来验证反编译
        :return: None
        """
        print(platform.platform())
    
    
    test()
    # okay decompiling BreezePython.cpython-37.pyc

    相比于原始的代码,有什么差别?没错,注释…文档注释默认会保留,但使用# 进行的注释,却在编译+反编译的过程中丢失了。那么如果你是个心机boy,代码注释都用#去写吧,即便反编译了代码,没有注释的情况下,即便我们自己也会被大段没有注释的代码搞疯掉了,哈哈。

    反编译的陷阱

    反编译就万无一失么?NO…举一个例子吧,这段代码随意而为,只是为了让反编译的时候抛出错误:

    class Demo:
        def __init__(self, color):
            self.color = color
    
        def jduge(self):
            if not self.color:
                return "get None"
            if not self.color == 'red':
                mood = "disappointed"
                return "I'm %s,I like white best" % mood
            return "get None..."
    
    
    if __name__ == '__main__':
        Main = Demo("red")
        print(Main.jduge())

    正常情况这段代码应该返回:get None…
    但这段代码反编译后成了什么样子?

    # uncompyle6 version 3.6.4
    # Python bytecode 3.7 (3394)
    # Decompiled from: Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)]
    # Embedded file name: C:\Users\Administrator\Desktop\uncompile\BreezePython.py
    # Size of source mod 2**32: 391 bytes
    
    class Demo:
        def __init__(self, color):
            self.color = color
        def jduge(self):
            if not self.color:
                return 'get None'
            else:
                mood = self.color == 'red' or 'disappointed'
                return "I'm %s,I like white best" % mood
            return 'get None...'
    
    if __name__ == '__main__':
        Main = Demo('red')
        print(Main.jduge())
    # okay decompiling __pycache__\BreezePython.cpython-37.pyc

    编译后的代码返回:I'm True,I like white best
    什么鬼?这编译成什么了乱七八糟的了东西了。京剧多年采坑经验,反编译的代码,当遇到多个if not 的时候,最后一个if not就会被所谓的简要写法弄的变了为了,导致最终反编译出错。这个是个坑,同样你是否也可以利用它呢?

    今天的文章就到这里,希望通过这篇文章能让你对python的文件类型与编译、反编译操作有所了解。

    作者:华为云特约供稿开发者 清风Python

    展开全文
  • SQL优化

    2019-04-17 22:08:58
    1:where 后面哪些字段 order by 就加哪些字段 2:where 和order by 按照复合索引从左到右的顺序使用,不能跨列或无顺序使用,不然后失效 3:sql解析的顺序是先from后面的内容在select的内容。 4:少使用in,这会使...

    1:where 后面哪些字段 order by 就加哪些字段
    2:where 和order by 按照复合索引从左到右的顺序使用,不能跨列或无顺序使用,不然后失效
    3:sql解析的顺序是先from后面的内容在select的内容。
    4:少使用in,这会使索引字段失效,从而回原表查询,而不查索引表。
    5:不要在索引上进行任何操作例如,计算函数类型转换,都会使索引失效。
    6:对于复合索引的顺序,如果一个索引失效,那么它对应的右边的索引都失效,但是不影响左边的索引。
    7:复合索引不能使用!= , <> ,is null,si not null,否则自身失效,那么它右侧的也将失效。
    8:like尽量以常亮开头,如何以%开头,索引失效。
    9:尽量不要使用类型转换(隐式的)如果是字符串类型你写成数字类型,那数据库还得给你转成字符串,此时该字段的索引失效
    10:不要使用or,否则索引失效。
    11:查看mysql给我们提供的慢查询日志文件 slow_query_log(默认是不关闭的,需要手动开启),里面记录的sql执行的时间都是超过默认阈值(默认10s)的,建议开发是打开,进行调优,部署上线关闭。
    查询超过阈值的sql
    show global status like ‘%slow_queries%’;
    查看具体是哪些sql是执行的慢,直接查看我们设置慢查询日志设置文件的位置,然后打开查询即可。
    12:创建存储过程和开启慢查询日志,之间有冲突,需要解决。
    13:开启show profiles,会记录打开之后所有sql语句执行的时间。

    展开全文
  • <p>Object.defineProperty 本身有一定的监控到数组下标变化的能力,但是在 Vue 中,从性能/体验的性价比考虑,尤大大就弃用了这个特性(<a href="https://segmentfault.com/a/1190000015783546">Vue 为什么不能检测数组...
  • 索引字段使用时不能进行函数运算。 多选 15.关于生产环境的日志文件,下列哪些说法符合《阿里巴巴Java开发手册》:ABCD A .异常信息应该包括两类信息:案发现场信息和异常堆栈信息。 B .日志文件推荐至少保存15...
  • 后来到了测试环境,巨卡,完全不能用的感觉,没办法只能重新优化,将所有要的信息放到一个表中查出,新加字段去存储,以此解决查询慢的问题。 在这个查看执行计划的过程中,发现并学习了一点东西,做一下笔记: 1....
  • EF 查询视图出现重复数据

    千次阅读 2019-04-22 19:39:00
    解决方案: 由多张表组成的视图,要实体键。而且实体键组合要确保唯一性。...只要确保唯一性行,其实“实体键的组合”也相当于“唯一索引”了。 总结:在模型中,加一个或多个实体键,只要确保唯一性...
  • 第6部分为SQL Server 2008改进篇,介绍了SQL Server 2008相对于之前版本进行了哪些方面的重大改进和优化,进一步帮助读者了解SQL Server 2008更多的独有特性。  《SQL Server 2008宝典》适合SQL Server 2008的初学...
  • 2009达内SQL学习笔记

    2010-02-10 19:46:58
    rollback:回溯,回溯到上次操作前的状态,把这次事务操作作废,只有一次(DDL和DCL语句会自动提交,不能回溯)。 可以用commit语句提交,这样就回溯不回了。 set pause on\off :设置分屏(设置不分屏) set pause...
  • 1.已经索引和分页的查询优化。 2.纯sql查询,存在数据库框架做的额外开销。 3.只查询需要的字段。 4.使用异步查询。 需求: 1.文字查询还是有点延迟,大概1秒左右,需要优化。 2.最重要的问题来了,...
  • MySQL命令大全

    2018-01-15 11:19:17
    下一步,我们必须指定testuser这个用户可以执行哪些操作:  mysql> GRANT select, insert, delete,update  -> ON test.*  -> TO testuser@localhost;  Query OK, 0 rows affected (0.00 sec)  此操作使...
  • 1.1.6 从innodb的索引结构分析,为什么索引的 key 长度不能太长 1.1.7 MySQL的数据如何恢复到任意时间点? 1.1.8 NFS 和 SMB 是最常见的两种 NAS(Network Attached Storage)协议,当把一个文件系统同时通过 ...
  • MYSQL常用命令大全

    2011-05-30 13:31:24
    下一步,我们必须指定testuser这个用户可以执行哪些操作:  mysql> GRANT select, insert, delete,update  -> ON test.*  -> TO testuser@localhost;  Query OK, 0 rows affected (0.00 sec)  此操作使...
  • 答:构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。 42.是否可以继承String类? 答:String类是final类故不可以继承。 43.try {}里有一个return语句,那么紧跟在这个try后的...
  • Oracle事例

    2007-08-26 10:35:53
    字符串字段中含有\"\'\",如果用来组合sql语句,会造成语句准确。 比如:replace(f1,\'\'\'\',\'\') <2>.字符串字段中含有\"\\t \\n\",如果用来在c或者c++程序中输出到文件,格式无法保证。 比如:replace(f2,...
  • (15) 在软件生命周期中,准确地确定软件系统必须做什么和必须具备哪些功能的阶段是(D) 注:即第一个阶段 A. 概要设计 B. 详细设计 C. 可行性分析 D. 需求分析 (16) 数据流图用于抽象描述一个软件的逻辑模型,数据...
  • 12.5.1 可见索引 355 12.5.2 虚拟索引 356 12.5.3 位图联结索引 357 12.6 小结 359 第13章 SELECT以外的内容 360 13.1 INSERT 360 13.1.1 直接路径插入 360 13.1.2 多表插入 363 13.1.3 条件插入 364 ...
  • 12.5.1 可见索引 355 12.5.2 虚拟索引 356 12.5.3 位图联结索引 357 12.6 小结 359 第13章 SELECT以外的内容 360 13.1 INSERT 360 13.1.1 直接路径插入 360 13.1.2 多表插入 363 13.1.3 条件插入 364 ...
  • 1.4.7 支持垃圾收集 6 1.4.8 新功能 6 1.4.9 与众不同的方法 6 1.5 本书内容 6 1.6 本次更新的内容 7 1.7 准备开始吧 7 第2章 创建基本项目 8 2.1 在Xcode中设置项目 8 2.2 Interface Builder简介 13 ...
  • (15) 在软件生命周期中,准确地确定软件系统必须做什么和必须具备哪些功能的阶段是______。(D) A. 概要设计 B. 详细设计 C. 可行性分析 D. 需求分析 (16) 数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些...
  • 79. syskey---------系统加密,一旦加密就不能解开,保护windows xp系统的双重密码 80. services.msc---本地服务设置 81. Sndvol32-------音量控制程序 82. sfc.exe--------系统文件检查器 83. sfc /scannow---...
  • 通过自定义配置文件来改变组件行为,自定义用户词库、自动检测词库变化、支持大规模分布式环境,灵活指定多种分词算法,使用refine功能灵活控制分词结果,还使用词频统计、词性标注、同义标注、反义标注、...
  • MySQLDBA运维笔记.pdf

    2019-11-04 15:53:17
    1.5.1 生产环境不能用强制命令关闭 mysql 服务 .......................................................22 1.5.2 下面来介绍优雅关闭数据库方法: ................................................................
  • 本教程并想让你完全了解这种语言,只是使你尽快加入开发动态web站点的行列。我假定你有一些HTML(或者HTML编辑器)的基本知识和一些编程思想。 1.简介 PHP是让你生成动态网页的工具之一。PHP网页文件被当作...
  • iPhone开发秘籍(第2版)--源代码

    热门讨论 2012-12-11 13:51:22
    1.8.6 应用程序束中存在的文件 20 1.8.7 IPA归档 20 1.8.8 沙盒 20 1.9 编程范例 21 1.9.1 面向对象编程 21 1.9.2 模型—视图—控制器 22 1.10 小结 27 第2章 构建第一个项目 28 2.1 创建新项目 28 2.2 ...
  • 人力资源管理软件(完全免费)

    热门讨论 2011-03-08 11:36:20
    工资录入的部门索引做了优化,工资单打印增加了企业汇总和部门汇总(感谢中秋月) 岗位异动的员工选择做了优化(感谢中秋月)(人力资源软件) 解决了员工管理自定义条件查询数据的显示问题(感谢中秋月) 福利管理的...

空空如也

空空如也

1 2
收藏数 30
精华内容 12
关键字:

哪些字段不能加索引