精华内容
下载资源
问答
  • 什么是SQL注入?Web应用程序在向后台数据库传递SQL语句查询时,如果攻击者可以影响该查询的能力,就会引发SQL注入!(缺乏对用户输入数据的合法性检查,传递的参数可控的,则可以构造不同的SQL语言,来实现对数据库...
    ac9605cf9c82f5b96d29e7e37d829a5e.png

    什么是SQL注入?

    Web应用程序在向后台数据库传递SQL语句查询时,如果攻击者可以影响该查询的能力,就会引发SQL注入!

    (缺乏对用户输入数据的合法性检查,传递的参数是可控的,则可以构造不同的SQL语言,来实现对数据库的操控!)

    SQL注入的产生过程

    1. 开发人员在运行程序过程中,动态构造SQL语句(字符串)!
    8dd05b6fc5f4e2fd7bd2c0d05ea9a24e.png

    转义字符处理不当

    SQL数据库会将单引号(')解析为代码与数据的分界线:

    a657dd2f7302c192632ec3fe0a1197db.png

    输入框输入:tony

    user_id = 'tony' // 数据(参数)外面会自动加上单引号,单引号外面是运行的代码!因此输入框只要输入('),就能判断是不是存在SQL注入!user_id ='''  // 会提供SQL语法错误!因为它把(')解析为字符串分隔符,相当于多出来一个('),所以报错!

    构造自己的查询语句:

    1' and 1='1 相当于:user_id ='1' and 1 = '1' // SQL语句可以正常执行!(没有语法错误!)

    在Oracle数据库中,还有"空格","||",",",".","*/","""(双引号)等等具有特殊含义的转义字符,我们可以利用其特殊含义,去拼接要执行的SQL语句!

    类型处理不当

    加入查询的数据(参数)为数字类型,开发人员不会在数字类型外面添加单引号!

    比如:

    user_id = 1

    攻击者在构造SQL语句的时候,没有必要使用单引号来转义查询:

    user_id = 1 and 1=1

    所以,攻击者常常使用1' and 1='1和1 and 1=1来判断查询的字段是数字类型还是字符类型!(具体判断,下文会提及!)

    查询语句组装不当

    开发人员在构造动态SQL语言中,以表名或字段名作为查询参数,这样的组装容易导致攻击者使用自己的表名和字段名来替换查询,比如GET请求查询,替换URL中的表名和字段名!

    http://www.tony.com?table=users&column1=user&column2=password

    导致了users表中的字段user和password的信息泄漏:

    9f561063953a681c257bb8f877a839dd.png

    错误处理不当

    开发人员将详细的错误消息显示在页面上!

    攻击者可以根据错误消息来提取有用信息:

    ebab2877cc2240f462c8f6a5d0539596.png

    利用:

    根据报错信息,不断变化order by后面的数字,来获取表中的字段数!

    92cc9b5cf2664aadc8a4bf4756dbd47b.png
    1. 不安全的数据库配置

    保证应用程序的代码的安全是首要任务,但也不能忽略数据库本身的安全

    MySQL:使用root和anonymous用户账户!

    Oracle:默认创建的数据库 - SYS,SYSYTEM,DBSNMP,OUTLN等,并且密码也默认!

    SQL Server:用sa作为数据库系统管理员账户!

    安装数据库服务时,允许以root,sa,SYSTEM等特权用户来执行操作,一旦数据库遭到攻击,破坏力太大!

    没有对元数据的访问设置权限!(元数据指数据库系统内部包含的数据,比如数据库名,表名,列名,访问权限等信息)

    寻找SQL注入点

    (操纵用户数据输入并分析服务器的响应来寻找SQL注入漏洞!)

    1. 源代码
    2. 借助推理进行测试(可以利用BurpSuite中的重放功能,向服务器发送不同请求,根据服务器的响应来推断!)

    注意:借助推理进行测试,最好发送一些意外请求,来触发服务器异常:

    • 识别Web应用上的所有数据输入(如POST、GET、Cookie等!)
    • 哪种类型的输入会触发异常
    • 检测服务器响应中的异常

    举例:

    http://www.tony.com?name=tony  // Get请求

    确定name=tony,是select,insert,update,delete中的哪一种?

    构造:('或变化不同的参数,通过不同的响应结果来判断!)

    name=或name=tony'  // 不同响应,select!name=tony或name=to' 'ny // 相同响应,很可能存在SQL注入!(两个单引号中间是空格!)

    根据不用的响应异常,可以大概率推断是select,并存在注入点,这时可以拼接SQL语句来进行攻击!

    1. 数据库错误

    用户请求,触发数据库错误时,开发人员会根据应用编码方式的不同,作如下处理:

    • SQL错误显示在页面中,对浏览器用户可见!
    • SQL错误隐藏在页面源代码中,便于调试!
    • 检测到错误时,跳转到另一个页面!
    • 返回HTTP错误码,如500,或HTTP重定向码302
    • 适当地处理错误但不显示结果,或者可能显示一个统一的错误处理页面!
    1. 应用程序的响应

    寻找SQL注入漏洞的过程包括识别用户数据输入、操纵发送给应用的数据以及识别服务器返回结果中的变化,但操纵参数产生的错误可能与SQL注入无关!

    如:统一错误处理页面,根本觉察不了什么异样!

    所以,要弄清楚该错误到底是不是由SQL注入引发的!

    方法:

    插入不触发应用错误的SQL代码测试!(反复训练和不断尝试的过程!)

    or '1' ='1'

    or '1' ='2'

    HTTP代码错误

    200:成功接收

    500:内部服务器错误

    302:当发现错误时,重定向到首页或自定义错误页面!

    (意味着,我们已经以某种方式干预了应用的正常行为!)

    不同大小的响应(通过BP很容易捕获到!)

    注意:SQL盲注常利用这个错误!

    1. SQL盲注

    Web应用访问数据库,会把结果呈现给用户!

    攻击者修改SQL语句,通过响应来获取数据库中的任意信息!

    (需要发送多次请求,建议在BP中操作,修改参数,重放请求!)

    修改参数需要注意:

    id=1+1

    +:在URI中时保留字,不能直接使用,需要进行URL编码!

    %2B=+号的URL编码!

    id=1%2B1 // 对id=1+1进行了URL编码!

    确认SQL注入

    构造一条有效SQL语句来确认SQL注入漏洞!

    (执行的这条SQL语句,不会引发任何错误!)

    区分数字还是字符串

    数据库有不同的数据类型,用于不同的表示方式:

    1. 数字型(不要使用单引号)
    2. 字符型(需要使用单引号)

    如何判断?

    数字型:

    1. 输入单引号('),返回不正常!
    2. 输入 and 1=1,正常返回!
    3. 输入 and 1=2,不正常返回!

    (具体有没有数字型注入,是否能够通过数字型注入获取有效的信息,还需要大量的测试来验证!)

    字符型:

    1. 输入单引号('),返回不正常!
    2. 输入 ' and '1'='1,正常返回!
    3. 输入 ' and '1'='2,不正常返回!

    (具体有没有字符型注入,是否能够通过数字型注入获取有效的信息,还需要大量的测试来验证!)

    SQL注入方式

    这里以MySQL数据库为例,至于其他数据库如Oracle,SQL Server,Access,PostgreSQL等,到时候再整理吧!


    MySQL前置知识:

    MySQL 5.0之后,MySQL默认在数据库中存放一个“information_schema”的数据库,该库中存放着这三张表:

    1. SCHEMATA:存储该用户创建的所有数据库的库名,记录库名的字段为SCHEMATA_NAME。

    2. TABLES:存储该用户创建的所有数据库的库名和表名,记录库名的字段为TABLE_SCHEMA,记录表名的字段为TABLE_NAME。

    3. COLUMNS:存储该用户创建的所有数据库的库名、表名、字段名。记录库名的字段为TABLE_SCHEMA,记录表名的字段为TABLE_NAME,记录字段名的字段为COLUMN_NAME。

    limit:limit m,nm:记录开始的位置,0代表第一条记录n:取n条记录limit 0,2:第一条记录开始,取两条记录!

    常用的函数和属性:

    version():查询MySQL的版本

    database():查询数据库名

    user():查询使用MySQL的用户

    @@datadir:查询数据库物理路径

    @@version:查询MySQL的版本

    MySQL的4种注释:

    1. # 我是注释

    2. -- 我是注释 (--和我是注释之间有空格)

    3. /*我是注释*/

    以上注释都可以放在SQL语句的任意位置中!!!

    4. /*!code*/ (内联注释)

    内联注释可以用于整个SQL语句中,用来执行SQL语句!

    例如:userid=1/*! UNION*//*! SELELCT*/1,2,3,4


    基本注入

    1. 联合查询注入(union)

    利用union可以同时执行多条SQL语句的特点,在参数中插入恶意的SQL注入语句,同时SQL语句,来获取额外敏感信息等操作!

    fccf5132e87545a9955de1e9c21d9e15.png
    67edaad193f46d09b12e3a08c2ea3c85.png

    分析:

    select 1,2,3会生成一张临时表,表中的字段为查询的字段,内容也是查询的字段

    select 1,2,3 union select 3,2,1,同样生成一张临时表,表中的字段为union左边查询的字段,内容为union左右两边查询的字段!

    如果不想显示左边的查询数据,只要左边的查询结果为假,就不会显示数据,比如:and 1=2或user_id=-1,这样只显示右边的查询数据!

    联合查询,需要保证两表的列数相同和列的数据类型相同:

    数据类型相同,通过数字来表示。

    列数相同

    联合查询可以跨库跨表查询!

    查询步骤:(DVWA中的SQL注入为例子!)

    2af1210d2fd618b7092376072e0ffaa9.png
    22648d3f1bc30034b844b0c20506b13a.png
    874582cde2b5409ac2b4a5af63716dac.png

    列数:2

    d5c1adb3e997d74569d0c4896f4fb1bf.png
    b589fc53a1c5b185e3b2988de00de21a.png
    cb24f38a788e9a931231035172f4e28d.png
    f8b154771b1315576f0caa1905d5e618.png
    48e9189bdf8f69bdf71f64b83bc906d0.png
    b74c9c7f1088f66e23ed97141e35d0eb.png
    a4d06e92cfe1bce4bf8ec3489a15c741.png

    源代码中,会将查询到的ID,First name,Surname输出到页面中,这就是可以利用union select语句来查询出其他数据的原因!

    1. 布尔注入(bool)

    bool注入没有任何报错信息输出,页面返回只有正常和不正常两种状态!

    4b653076c37bf25a6327810930bc5469.png
    9fb8c651130c4e9f62eb6dbd59d42977.png
    cd8c7b5a49923701ee736c3f5c7ab36a.png
    10d2efeb1c0e5277f0941be57c73c2f0.png
    c6ee46870767aec94d22b72c9bb2d541.png
    f5b64cde47a4f90846b38251797a7825.png
    9d17cd24d23a9ba3db1d7fa48f5f37c0.png
    494bd590bbde7a99ca4d5207052bd4b4.png
    ef73f1f58fa7fddbb664f0cee1bfc9bb.png
    86133f6e3056c945cece1d6a33563a8e.png
    7e8f4db063ae1e70ef4bfc3269985561.png
    5530b31e76e214b154220634d7683fc0.png

    使用BurpSuite爆破数据库名:

    56322c35c556cc84e5b362e18da5f4e1.png
    a3b0c072adc9e90809cbb2ab486622ce.png
    ef64e0620197b1e7464e731231cd59c1.png
    5428dc199de4f542a5f767fde49281f2.png
    9860c0a6cb68790edea8b45715979c12.png
    50eb1066e2ebf6ffd1cba5afcbc75ea6.png
    fe4d9e903276c5b75d30c9157753eb8e.png
    e6fbcce8590e153e217e919f52c31e6f.png

    使用BurpSuite爆破指定数据库的表名:

    全部表:

    f4bea5eec0d47a4e20418741aac82916.png
    cde6b40c596ff2ff6db9595aac169e39.png
    4603c7d8b0cd5e7798553dc3340f4c26.png
    cd49a8d51399e19434fc4a49202ca52f.png
    35eb5b300c01cd0ce3eb17c67cf2c10c.png
    e68448e531fd03c9b8d2a4e282dba11c.png

    爆破结果出来了,但无法过滤出表名!(设置了3个参数!)

    单表:

    e25b4c61ee7fc7bc0d171d12ba16b2d8.png
    82e8e8fe73e6c122cda77f1e13da28eb.png
    94ad829c03199c61d704c3444f5141e8.png
    46f0ec5cf92b569c52ac9cedac05df82.png
    1. 报错注入

    ...... (续篇中分析......)

    展开全文
  • 编辑:下面的打印显示了我的预期价值。...为什么变量值与打印值不同?我需要把原始值转换成一个变量。>>username = 'Jo\xc3\xa3o'>>username.decode('utf-8').encode('latin-1')'Jo\xe3o'>>print...

    编辑:

    下面的打印显示了我的预期价值。

    (sys.stdout.encoding和sys.stdin.encoding都是“UTF-8”)。

    为什么变量值与打印值不同?我需要把原始值转换成一个变量。>>username = 'Jo\xc3\xa3o'

    >>username.decode('utf-8').encode('latin-1')

    'Jo\xe3o'

    >>print username.decode('utf-8').encode('latin-1')

    João

    原始问题:

    我在查询BD和将值解码成Python时遇到问题。

    我确认我的数据库使用select property_value from database_properties where property_name='NLS_CHARACTERSET';

    '''AL32UTF8 stores characters beyond U+FFFF as four bytes (exactly as Unicode defines

    UTF-8). Oracle’s “UTF8” stores these characters as a sequence of two UTF-16 surrogate

    characters encoded using UTF-8 (or six bytes per character)'''

    os.environ["NLS_LANG"] = ".AL32UTF8"

    ....

    conn_data = str('%s/%s@%s') % (db_usr, db_pwd, db_sid)

    sql = "select user_name apex.users where user_id = '%s'" % userid

    ...

    cursor.execute(sql)

    ldap_username = cursor.fetchone()

    ...

    其中print ldap_username

    >>'Jo\xc3\xa3o'

    我俩都试过了(结果一样)ldap_username.decode('utf-8')

    >>u'Jo\xe3o'

    unicode(ldap_username, 'utf-8')

    >>u'Jo\xe3o'

    其中u'João'.encode('utf-8')

    >>'Jo\xc3\xa3o'

    如何将查询结果返回到正确的“João”?

    展开全文
  • 宇宙简史太阳系简史人类简史星系运动,日地月之间的周期运转,天文地理,历法星象什么是一年?什么是一月?一年为何十二个月?为何有春夏秋冬?十天干,十二地支?为何太极,阴阳,四象八卦,为何五行生克? ...
        

    一切皆是映射。(光剑)


    这一切要从宇宙大爆炸说起。


    宇宙简史

    太阳系简史

    人类简史


    星系运动,

    日地月之间的周期运转,

    天文地理,

    历法星象


    什么是一年?

    什么是一月?

    一年为何是十二个月?

    为何有春夏秋冬?


    十天干,十二地支?


    为何太极,阴阳,四象八卦,为何五行生克?


       《尚书·序》中说:“古者伏羲氏之王天下也,始画八卦,造书契,以代结绳之政,由是文籍生焉。”


       这里说的“书契”,是指刻在可以啮合的两块骨片、竹板、木块等材料上的文字或类似文字的笔画、符号。《尚书》中这段话是说,伏羲氏发明了八卦符号和刻书契刻的做法,取代了原先的结绳记事的旧办法,由此产生了文字和书籍。

       八卦符号代表了八种自然现象。八卦中,代表天,称作乾;代表地,称坤;代表雷,称震;代表山,称艮;代表火,称离;代表水,称坎;代表泽,称兑;代表风,称巽。任意两卦相叠合,就可以得出八八六十四卦,从而也就揭示了宇宙万物的演变。八卦用蓍草或小竹棍之类的筹策来演算。以上记载将“画”与“造”并列,“八卦”与“书契”同举,似乎二者又是同时产生的了,但还没有明确说由八卦而生文字。


       到了宋代,便有人认为八卦就是汉字的发端。宋朝学者郑樵(1104~1160年)在《因文成象图》中认为“天、地、山、泽、水、火、风、雷”八个字直接来源于“乾、坤、艮、兑、坎、离、巽、震”八卦。他在另一篇文章里,又具体解释了“水”、“火”、“地”三个字,说明它们分别起源于坎、离、坤卦。



    当汉字还没有产生的时候,古人对很重要的事情要记录下来。那么,他们是怎样做到的呢?在那时候,咱们的先人采取的有效办法是用实物记事,其中最常用的是结绳和刻契。

       结绳记事的说法最早见出现于《易经·系辞上》:“上古结绳而治,后世圣人易之以书契。百官以治,万民以察,盖取诸决。”《庄子·胠箧篇》也说:“昔者容成氏、大庭氏、伯皇氏、中央氏、栗陆氏、骊畜氏、轩辕氏、赫胥氏、尊卢氏、祝融氏、伏羲氏、神农氏,当是时也,民结绳而用之。”一般说来,这十二个古代氏族是代表了前后不同的时期,可见,上古有很长一段时期先人们是用结绳的方法来记事的。神农氏是十二氏族中的最后一个时代,也是黄帝轩辕氏出现之前的一个有文字可考的时代。应当说,在文字出现之前使用结绳的办法记事是可信的。


    《周易正义》引《虞郑九家易》说:“古者无文字,其有约誓之事,事大大结其绳,事小小结其绳,结之多少,随物众寡;各执以相考,亦足以相治也。”《易经·系辞下》郑玄注也说:“事大大结其绳,事小小结其绳。”

       结绳记事起源于旧石器时代后期,绳索是当时原始人生活中很重要的一项发明,用来捆束东西、捆扎武器、捆绑野兽、捆绑俘虏,当然,还用它编成片状的东西来遮盖或装饰身体,这是它的日用价值,而用绳子打结的方法来记录大小事情,则是赋予了它文化记载的功能。当然,古人为了记住某件事情,比如某一次打猎的收获,或者某一次不同部落之间的战斗结果,也可以用石子在自己穴居的石洞壁上画上长短、数量不一的线条,但相比来说,结绳记事更具有方便、实用的特点,当部落迁居的时候,也可以随身带走。结的大小、多少和位置的不同,他们都会规定代表不同的意义,有大事在绳上结大结,有小事结小结,等以后需要回忆某事的具体情况时,看到绳结的形状和大小、疏密排列,就能条件反射似的提取出大脑中的记忆信息。


       在今天的西南部族中仍然有一种结绳记事的传统,只是在一根主绳上挂着象征发生过的事情的物件,比如挂一个镰刀形的东西表示收割,挂一条红色的布来表示孩子出生等等。根据记载,古埃及、古波斯、古代日本都曾有过结绳之事。人类学家和民俗学家考察,现在世界上还有一些民族保留此法。

       这表明,结绳记事确实是历史的遗存。人们把结绳与文字联系在一起,主要是因为人类创造结绳记事的方法与发明文字的想法是很一致的。

    结绳之后出现了刻契。作为帮助记忆以及作为契约用的刻契,比结绳前进了一步。刘熙载《释名·释书契》:“契,刻也,刻识其数也。”早在《列子·说符篇》已有刻契的记载:“宋人有游于道,得人遗契者,归而藏 之,密数其齿。告邻人曰:吾富可待矣。”这里所说的“齿”,就是契刻上的齿痕。

       刻契主要用于战争和交换,在超越空间的限制来传递信息方面,它的功能和郑重程度都大于结绳,但它记事的功能更弱,历史的普遍性也较差。不过,以齿记数的做法,对文字的产生也会有启发,作为前文字的一种现象也是可信的。中国历史上,居地偏远的少数民族中间采用这种方式的比较多,自宋代以来,苗族、瑶族等有关刻契的记载很多;清代海南岛的黎族长期使用刻契,直到新中国成立之前还能见到。现在的云南省博物馆都保存有彝族、景颇族、佤族、拉祜族、哈尼族等少数民族的刻契遗物。


    之史仓颉,见鸟兽蹄之迹,知分理之可相别异也,初造书契。”又说:“仓颉之初作书,盖依类象形。”刘勰的《文心雕龙·练字》也沿袭许慎的说法,有了“文象列而结绳移,鸟迹明而书契作”的名句。由“鸟兽之迹”而“依类象形”,这正说明最初的汉字是由象形的方法发明出来的。

    展开全文
  • Excel、Word、PPT办公方案,应有尽有原创作者: 李锐微信公众号:Office千问千答微信个人号:ExcelLiRui520提问:为什么无法插入行或?说明:Excel工作表明只使用了一小部分,但是却无法插入行或。插入行或...

    Excel、Word、PPT办公方案,应有尽有

    原创作者: 李锐

    微信公众号:Office千问千答

    微信个人号:ExcelLiRui520

    提问:为什么无法插入行或列?

    说明:Excel工作表明明只使用了一小部分,但是却无法插入行或列。

    插入行或插入列时,会弹出提示,无法操作成功,如下图所示。

    9e9c8d310240ee214f78f1159f7cd858.png

    注意:这时仅仅删除可见区域的数据是于事无补的,你会发现还是无法插入行或列。

    下面演示一下这种问题的发生场景。

    5bc3271e8687af103c210b7a48991c75.gif

    下面,我结合这个案例,给大家介绍正确的处理方法。

    提问:为什么无法插入行或列?

    回答:提供两种解决方案。

    解决方案一:在原工作表中修改。

    导致这种情况出现的原因是,工作表最后一列或最后一行已经存在数据,所以无法插入新的行列。

    按Ctrl+End组合键定位到最后一个使用过的单元格,点击开始选项卡下的全部清除命名,如下所示。

    ae83f38d7411e360ec8a2fe9c16f2d74.png

    然后保存文件,即可正常插入行或列。

    解决方案二:将有效数据复制到新建工作表。

    重新创建一张工作表,从原表中把有效数据复制到新表中保存,再删除原表,即可正常插入行或列。

    这两种方法都可以实现插入行列,根据不同情况选择使用。

    既然知道了正确方法,你自己动手试试吧。

    好啦,今天就讲到这里吧,希望这篇教程能够帮到你。

    这么多内容担心记不全的话,可以朋友圈给自己备份一份。

    如果你喜欢超清视频同步演示讲解的课程,别错过下面这次机会↓

    原价500元的课程,限时特价99元

    共72节超清视频,每节课仅1.3元

    购买后永久有效,手机/ipad/电脑永久听课

    今天就先到这里吧,更多干货文章加下方小助手查看。

    如果你喜欢这篇文章

    欢迎点个在看,分享转发到朋友圈

    5799a4f8f63f48c65a68e42a0be39f2b.png

    干货教程 · 信息分享

    欢迎扫码↓添加小助手进朋友圈查看

    (点击蓝字可直接跳转)

    VLOOKUP函数套路大全

    原来VLOOKUP还有个双胞胎,她就是...

    Excel万能函数SUMPRODUCT

    IF函数强大却不为人知的实战应用技术

    SUM函数到底有多强大,你真的不知道!

    史上最全条件求和函数SUMIF教程

    最具价值日期函数DATEDIF套路大全

    Excel高手必备函数INDIRECT的神应用

    飞檐走壁的函数里数她轻功最好!她就是...

    COUNTIF,堪比统计函数中的VLOOKUP,你会用吗?

    频率统计之王FREQUENCY,会用这个Excel函数的,都是高手!

    进知识店铺>>更多精品课程

    更多的Excel实战技术,我已经整理到Excel特训营中以超清视频演示并同步讲解,不但有具体场景,还讲解思路和方法,更有配套的课件下载和社群互动。

    请把Office千问千答推荐给你的朋友:)

    a9b4e8224efccd08edc0004034f8f415.gif

    原创作者: 李锐

    微信公众号:Office千问千答

    微信个人号:LiRuiExcel520

    展开全文
  • :arrow: 诸葛亮为什么难以入围千古名相之 诸葛亮千古名相似乎历史定论。其实,诸葛亮只能算是一个千古忠臣,并非千古名相;而史书中说诸葛亮一个千古名相,这就有待于商讨了。因为诸葛亮就是不能识大体、弃...
  • 原创: 未学院在互联网管理、金融、物流等领域,往往离不开数据处理、统计分析等辅助决策的操作。传统的商业分析(Business Analysis),定性占比很大,以相对简单的数据处理为辅助,人们使用的分析工具主要Excel...
  • 原创:未学院 在互联网管理、金融、物流等领域,往往离不开数据处理、统计分析等辅助决策的操作。 传统的商业分析(Business Analysis),定性占比很大,以相对简单的数据处理为辅助,人们使用的分析工具主要...
  • 几张图看懂式存储

    2019-02-28 13:28:07
    本文转自:几张图看懂式存储 最近看到一篇很好资料,里面三言两语配上几个图就把式存储...式存储(Columnar or column-based)相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。简单来说两者的...
  • 式存储

    2019-02-28 05:42:12
    本文转自:几张图看懂式存储 最近看到一篇很好资料,里面三言两语配上几个图就把式存储...式存储(Columnar or column-based)相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。简单来说两者的...
  • 公共数据

    2012-03-09 09:39:25
    :比如上次说的两个表一个“收入表”,另一个“付出表” 锦绣:合并以后就会形成:编号、收入、付出这3:对,然后写入公式:收入-付出,就得到了“结余” 锦绣:啊,太好了!你怎么想到的? 源...
  • 有良才而不用,以庸才而误事,没有识人之;统兵无功导致几次伐魏失败,这乃是为官为相之忌。但诸葛亮对蜀汉忠心不二,真正鞠躬尽瘁,死而后已,所以说诸葛亮只能说是忠臣,而非千古名相。诸葛亮英雄,他自称才比...
  • 最近看到一篇很好资料,里面三言两语...1 为什么要按存储式存储(Columnar or column-based)相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。简单来说两者的区别就是如何组织表(翻译不好,直接抄原...
  • 最近看到一篇很好资料,里面三言两语...1 为什么要按存储式存储(Columnar or column-based)相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。简单来说两者的区别就是如何组织表(翻译不好,直接抄原...
  • 著名假活佛卢胜彦 / 非视觉中国 供图很多时候,一些人出于正义,对朝阳区假活佛们打假,可是也搞不清到底打的是什么。在我们说一个人是假活佛时,我们到底是指什么呢?...这个表列明了所有可能性:A1...
  • 最近看到一篇很好资料,里面三言两语配上几...1 为什么要按存储 式存储(Columnar or column-based)相对于传统关系型数据库的行式存储(Row-basedstorage)来说的。简单来说两者的区别就是如何组织表(翻译不好,...
  • .net4.0 gdnew.ItemsSource=dt.DefaultView; 方式绑定数据到datagrid 调试的时候。显示有数据的。进一步处理。也有数据。...没有认为设置绑定什么列明啊。。大神。 只是 gdnew.ItemsSource=d...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 142
精华内容 56
关键字:

列明是什么