一本主角是主播,然后开始yy直播间间只有8个人,送了一份礼物是《你的名字》的小说?

上架时间: 出版日期:2011 年1月 开本:16开 页码:706 版次:2-1 编辑推荐   久负盛名的Oracle经典    世界顶级专家Thomas Kyte力作    Ask Tom!解决你所有的Oracle疑难杂症 内容简介   本书是一本关于oracle database 9i、10g 和11g 数據库体系结构的权威图书涵盖了所有重要的oracle 体系结构特性,包括文件、内存结构和进程锁和闩,事务、并发和多版本表和索引,数據类型分区和并行,以及数据加密等并利用具体的例子来全面介绍每个特性,不仅讨论了各个特性是什么还说明了它是如何工作的,如何使用这个特性来开发软件以及有关的常见陷阱。    本书面向所有oracle 数据库应用开发人员和dba 作译者 作者   Thomas Kyte Oracle公司核心技术集团副總裁。从 的Source Code区下载下面将详细介绍每一章的内容。   第1章:开发成功的Oracle应用   从这一章开始我将介绍数据库编程的基本方法。所囿数据库创建得并不一样要想按时、成功地开发数据库驱动的应用,你必须了解你的数据库能做什么是怎么做的。如果不清楚数据库能做什么就很可能不断地遭遇“闭门造车”的窘境,徒劳地从头开发数据库本已提供的功能;如果不清楚数据库是怎么工作的很可能開发出性能很差的应用,达不到预期的要求   这一章先根据经验分析了一些应用,这些应用都因为缺乏对数据库的基本理解而导致项目失败这一章就采用这种“拿例子说话”的方式,讨论了开发人员必须了解数据库的哪些基本特性和功能关键是,不要把数据库当成┅个黑盒不要认为它能自己努力得出答案并自行负责可扩展性和性能。   第2章:体系结构概述   这一章介绍Oracle体系结构的基础知识艏先给出两个术语的明确定义——“实例”(instance)和“数据库”(database),Oracle领域的许多人都对这两个词存在误解我们还会简要介绍系统全局区(System Global Area,SGA)和Oracle实例底层的进程并分析“连接Oracle”这样一个简单的动作是如何实现的。   第3章:文件   这一章将深入介绍构成Oracle 数据库和实例嘚8类文件从简单的参数文件到数据文件和重做日志文件(redo log file)都会涵盖它们。我们将说明这些文件是什么为什么有这些文件,以及如何使用它们   第4章:内存结构   这一章讨论Oracle如何使用内存,包括各个进程中的内存(PGA内存PGA即进程全局区)和共享内存(SGA)。我们会汾析手动和自动PGA内存管理之间的区别并介绍Oracle Database 10g中的SGA内存管理,还会说明各种方法适用于什么情况读完这一章之后,你会对Oracle如何使用和管悝内存有深入的了解   第5章:Oracle进程   这一章概述了各种Oracle进程(服务器进程和后台进程),另外还相当深入地讨论了通过共享服务器進程或专用服务器进程连接数据库有何区别启动Oracle实例时会看到一些后台进程,这一章将逐一介绍其中一些重要的后台进程(如LGWR、DBWR、PMON和SMON)并分别讨论这些进程的功能。   第6章:锁和闩   不同的数据库有不同的行事方法(SQL Server里能做的在Oracle中不一定能做)应当了解Oracle如何实现鎖定和并发控制,这对于应用的成功至关重要这一章将讨论Oracle解决这些问题的基本方法,可以应用哪些类型的锁[DML、DDL和闩(latch)]还会指出如果锁定实现不当,会出现哪些问题(死锁、阻塞和锁升级)   第7章:并发与多版本控制   这一章介绍我最喜欢的Oracle特性——多版本控淛(multi-versioning),并讨论它对并发控制和应用设计有什么影响在这里能清楚地看到,所有数据库创建得都不一样具体的实现会对应用的设计产苼影响。我们先回顾ANSI SQL标准定义的各个事务隔离级别并介绍它们在Oracle中的具体实现(还会介绍其他数据库中的实现)。基于多版本特性Oracle能夠在数据库中提供非阻塞读(non-blocking read),本章接下来会分析多版本特性对我们有什么影响   第8章:事务   事务是所有数据库的一个基本特性,这也是数据库区别于文件系统的一个方面不过,事务常常遭到误解很多开发人员甚至不知道他们有时没有使用事务。这一章将讨論Oracle中应当如何使用事务还列出了使用其他数据库进行开发时可能出现的一些“坏习惯”。具体而言我们将讨论原子性的含义,并说明原子性对Oracle中的语句有何影响这一章还会讨论事务控制语句(COMMIT、SAVEPOINT和ROLLBACK)、完整性约束和分布式事务(两段提交或2PC),最后介绍自治事务   可能有人说,开发人员不用像DBA那样深入地了解redo(重做信息)和undo(撤销信息)的细节但是开发人员确实要清楚redo和undo在数据库中所起的重要莋用。这一章首先对redo下一个定义然后分析COMMIT到底做什么,并讨论怎么知道生成了多少次redo如何使用NOLOGGING子句来显著减少某些操作生成的redo数。我們还研究了redo生成与块清除(block Code区下载本书的所有源代码即使确实想自己键入代码,下载源代码也很有必要你可以使用下载的源代码文件檢查正确的结果是什么。如果你认为自己的录入可能有误就可以先从这一步开始。倘若不想自己键入代码那么除了从Apress网站下载源代码外别无选择!不论采用哪种方式,代码文件都能帮助你完成更新和调试   勘误表   Apress极力确保文字或代码不会出错。不过出错也是囚之常情,所以只要发现并修改了错误我们就会及时告诉你。Apress所有图书的勘误表都可以在上找到如果你发现一个还没有报告的错误,請通知我们Apress网站还提供了其他的信息和支持,包括所有Apress图书的代码、样章、新书预告以及相关主题的文章等    序言   第 1 版 序   “Think”(思考)。1914年Thomas 上对这个主题做了深入的分析,有关文章可以在“index data table space”中查到)从中我们可以得到一个教训,要根据事实作出决定洏且事实必须是当前的、完备的。   不论我们的计算机速度变得多快数据库变得多复杂,也不管编程工具的能力如何人类的智慧和┅套正确的“思考原则”仍是无可替代的。所以对于应用中使用的技术,尽管学习其细节很重要但更重要的是,应该知道如何考虑适當地使用这些技术   Thomas Kyte是我认识的最聪明的人之一,他在Oracle数据库、SQL、性能调优和应用设计方面具有渊博的学识我敢肯定,Thomas绝对是“Think”囷“Think different”这两个口号不折不扣的追随者中国有位智者说过“授人以鱼,为一饭之惠;授人以渔则终身受用”,显然Thomas对此深以为然Thomas很乐於把自己的Oracle知识与大家共享,但他并不只是罗列问题的答案而是尽力帮助大家学会如何思考和推理。   在Thomas的网站()上、发言稿中以忣书中他不断鼓励人们在使用Oracle数据库设计数据库应用时要“换角度思考”。他从不墨守成规而坚持通过实例,用事实证明Thomas采用一种紸重实效的简单方法来解决问题,按照他的建议和方法你将成为更高效的开发人员,能开发出更好、更快的应用   Thomas的这本书不仅介紹Oracle的诸多特性,教你使用这些特性还反映了以下简单的观点。   不要相信神话要自己思考。   不要墨守成规所有人都知道的事凊其实很可能是错的!   不要相信传言,要自己测试根据经过证明的示例作出决定。   将问题分解为更简单的小问题再把每一步嘚答案组合为一个优秀、高效的解决方案。   如果数据库能更好、更快地完成工作就不要事必躬亲地自己编写程序来完成。 .  理解悝想和现实之间的差距   对于公司制定的未加证实的技术标准,要敢于提出质疑   要针对当前需求从大局考虑怎样做最好。   偠花时间充分地思考   Thomas建议,不要只是把Oracle当做一个黑盒你不只是在Oracle中放入和取出数据。他会帮助你理解Oracle是如何工作的如何充分利鼡它强大的能力。通过学习如何在深思熟虑之后创造性地应用Oracle技术你会更快、更好地解决大多数应用设计问题。   通过阅读这本书伱会了解到Oracle数据库技术的许多新动态,还会掌握应用设计的一些重要概念如果你确实领会了这些思想,相信你肯定也会对所面对的难题“换角度思考”   IBM的Watson曾经说过:“自始以来,每一个进步都源自于思考仅仅因为‘没有思考’,就造成全世界白白浪费了无数资金”Thomas和我都赞同这种说法。希望你学完这本书后利用你掌握的知识和技术,为这个世界(至少为你的企业)节省无数资金把工作干得哽出色。   Ken Jacobs   Oracle 公司产品战略部(服务器技术)副总裁公认的“DBA博士”      序   第一次接触到Oracle RDBMS是在1988年,也可能是1987年那一天,經理在我的办公桌上放下一个小盒子对我说了几句话,大致意思是:“这是一个刚刚进入国内的新产品名叫Oracle。你先试用几个星期看看它适合做些什么。”   那个版本可能是(农民)程序的源码他的程序对我的帮助非常大。虽然未有谋面但对他的计算机水平与作为十汾的敬佩,并尊从他的作风以后我所写的所有非商业软件或小代码,均以源码形式出现这里写得有点乱,希望对大家能够有所帮助願与所有爱好计算机,从事计算机工作的朋友们共勉 东西太多了,都是自己从不同的网站上下载下来的

内容简介    本书是一本关于Oracle 9i & 10g數据库体系结构的权威图书,涵盖了所有最重要的Oracle体系结构特性包括文件、内存结构和进程,锁和闩事务、并发和多版本,表和索引数据类型,以及分区和并行并利用具体的例子来充分介绍每个特性,不仅讨论了各个特性是什么还说明了它是如何工作的,如何使鼡这个特性来开发软件以及有关的常见陷阱。    本书面向从事Oracle数据库应用的所有开发人员或DBA 作译者    Thomas Kyte是Oracle公司核心技术集团的副总裁,从Oracle 上对这个主题做了深入的分析有关文章可以在“index data table space”中查到。)从中我们可以得到一个教训要根据事实做出决定,而且事实必须昰当前的、完备的 不论我们的计算机速度变得多快,数据库变得多复杂也不管编程工具的能力如何,人类的智慧和一套正确的“思考原则”仍是无可替代的所以,对于应用中使用的技术尽管学习其细节很重要,但更重要的是应该知道如何考虑适当地使用这些技术。 Thomas Kyte是我认识的最聪明的人之一他在Oracle数据库、SQL、性能调优和应用设计方面具有渊博的学识。我敢肯定Thomas绝对是“Think”和“Think different”这两个口号不折鈈扣的追随者。有位中国的智者说过“授人以鱼为一饭之惠;授人以渔,则终身受用”显然Thomas对此深以为然。Thomas很乐于把自己的Oracle知识与大镓共享但他并不只是罗列问题的答案,而是尽力帮助大家学会如何思考和推理 在Thomas的网站()上、发言稿中以及书中,他其实不断鼓励囚们在使用Oracle数据库设计数据库应用时要“换角度思考”他从不墨守成规,而坚持通过实例用事实证明。Thomas采用一种注重实效的简单方法來解决问题按照他的建议和方法,你将成为更高效的开发人员能开发出更好、更快的应用。 Thomas的这本书不仅介绍Oracle的诸多特性教你使用這些特性,还反映了以下简单的观点: ?    不要相信神话要自己思考。 ?    不要墨守成规所有人都知道的事情其实很可能是错的! ?    不要楿信传言,要自己测试根据经过证明的示例做出决定。 ?    将问题分解为更简单的小问题再把每一步的答案组合为一个优秀、高效的解決方案。 ?    如果数据库能更好、更快地完成工作就不要事必躬亲地自己编写程序来完成。 ?    理解理想和现实之间的差距 Thomas建议,不要只昰把Oracle当作一个黑盒你不只是在Oracle中放入和取出数据。他会帮助你理解Oracle是如何工作的如何充分利用它强大的能力。通过学习如何深思熟虑哋、创造性地应用Oracle技术你会更快、更好地解决大多数应用设计问题。 通过阅读这本书你会了解到Oracle数据库技术的许多新动态,还会掌握應用设计的一些重要概念如果你确实领会了这些思想,相信你肯定也会对所面对的难题“换角度思考” IBM的Watson曾经说过:“自始以来,每┅个进步都源自于思考仅仅因为‘没有思考’,就造成全世界白白浪费了无数资金”Thomas和我都赞同这种说法。学完这本书后利用你掌握的知识和技术,希望你能为这个世界(至少能为你的企业)节省无数资金把工作干得更出色。 Ken Jacobs Oracle 公司产品战略部(服务器技术)副总裁 過去我一直在开发Oracle软件并与其他Oracle开发人员一同工作,帮助他们构建可靠、健壮的应用程序在这个过程中积累了一些经验,正是这些经驗赋予我灵感才有了本书中的内容。这本书实际上反映了我每天做了些什么汇集了我所看到的人们每天遇到的问题。 本书涵盖了我认為最重要的一些内容即Oracle数据库及其体系结构。我也可以写一本书名类似的其他方面的书向你解释如何用一种特定的语言和体系结构开發应用程序。例如我可以告诉你如何使用 JavaServer Pages(JSP)与Enterprise JavaBeans(EJB)通信,EJB再如何使用JDBC与Oracle通信不过,归根结底你最后还是要了解Oracle数据库及其体系结構(本书介绍的内容),才能成功地构建这样一个应用程序要想成功地使用Oracle进行开发,我认为有些内容你必须了解而不论你是一位使鼡ODBC的Visual Basic程序员、使用EJB和JDBC的Java程序员,还是使用DBI Perl的Perl程序员这本书都会介绍这些通用的知识。本书并不推崇哪一种特定的应用体系结构在此没囿比较三层结构和客户/服务器结构孰优孰劣。我们只是讨论了数据库能做什么另外关于数据库如何工作,我们还会指出你必须了解哪些內容由于数据库是所有应用体系结构的核心,所以这本书适用面很广 在编写本书时,我对Expert One-on-One Oracle一书中关于体系结构的章节做了全面修订和哽新并补充了大量新的内容。Expert One-on-One Oracle一书所基于的版本是Oracle 的Source Code区下载下面将详细介绍每一章的内容。 第1章:开发成功的Oracle应用 从这一章开始我將介绍数据库编程的基本方法。所有数据库创建得并不一样要想按时、成功地开发数据库驱动的应用,你必须了解你的数据库能做什么它是怎么做的。如果不清楚你的数据库能做什么就很可能不断地遭遇“闭门造车”的窘境,徒劳地从头开发数据库本已提供的功能;洳果不清楚你的数据库是怎么工作的很可能开发出性能很差的应用,达不到预期的要求 这一章先根据经验分析了一些应用,这些应用嘟因为缺乏对数据库的基本理解而导致项目失败这一章就采用这种“拿例子说话”的方式,讨论了开发人员必须了解数据库的哪些基本特性和功能关键是,不要把数据库当成一个黑盒不要认为它能自己努力得出答案并自行负责可扩展性和性能。 第2章:体系结构概述 这┅章介绍Oracle体系结构的基础知识首先给出两个术语——“实例”(instance)和“数据库”(database)的明确定义,Oracle领域中的许多人都对这两个词存在误解我们还会简要介绍系统全局区(System Global Area,SGA)和Oracle实例底层的进程并分析“连接Oracle”这样一个简单的动作是如何实现的。 第3章:文件 这一章将深叺介绍构成Oracle 数据库和实例的8类文件从简单的参数文件到数据文件和重做日志文件(redo log file)都会涵盖。我们将说明这些文件是什么为什么有這些文件,以及如何使用它们 第4章:内存结构 这一章讨论Oracle如何使用内存,包括各个进程中的内存(PGA内存PGA即进程全局区)和共享内存(SGA)。我们会分析手动和自动PGA内存管理之间的区别并介绍Oracle 10g中的SGA内存管理,还会说明各种方法适用于什么情况读完这一章之后,你会对Oracle如哬使用和管理内存有深入的了解 第5章:Oracle进程 这一章概述了各种Oracle进程(服务器进程和后台进程),另外还相当深入地讨论了通过共享服务器进程或专用服务器进程连接数据库有何区别启动Oracle实例时会看到一些后台进程,这一章将逐一介绍其中一些重要的后台进程(如LGWR、DBWR、PMON和SMON)并分别讨论这些进程的功能。 第6章:锁 不同的数据库有不同的行事方法(SQL Server里能做的在Oracle中不一定能做)应当了解Oracle如何实现锁定和并发控制,这对于应用的成功至关重要这一章将讨论Oracle解决这些问题的基本方法,可以应用哪些类型的锁[DML、DDL和闩(latch)]还会指出如果锁定实现鈈当会出现哪些问题(死锁、阻塞和锁升级)。 第7章:并发与多版本 这一章介绍我最喜欢的Oracle特性——多版本(multi-versioning)并讨论它对并发控制和應用设计有什么影响。在这里能清楚地看到所有数据库创建得都不一样,具体的实现会对应用的设计产生影响我们先回顾ANSI SQL标准定义的各个事务隔离级别,并介绍它们在Oracle中的具体实现(还会介绍其他数据库中的实现)基于多版本特性,Oracle能够在数据库中提供非阻塞读(non-blocking read)本章接下来会分析多版本特性对我们有什么影响。 第8章:事务 事务是所有数据库的一个基本特性这也是数据库区别于文件系统的一个方面。不过事务常常遭到误解,很多开发人员甚至不知道他们有时没有使用事务这一章将讨论Oracle中应当如何使用事务,还列出了使用其怹数据库进行开发时可能出现的一些“坏习惯”特别地,我们将讨论原子性的含义并说明原子性对Oracle中的语句有何影响。这一章还会讨論事务控制语句(COMMIT、SAVEPOINT和ROLLBACK)、完整性约束和分布式事务(两段提交或2PC)最后介绍自治事务。 可能有人说开发人员不用像DBA那样深入地了解redo(重做信息)和undo(撤销信息)的细节,但是开发人员确实要清楚redo和undo在数据库中所起的重要作用这一章首先对redo下一个定义,然后分析COMMIT到底莋什么并讨论怎么知道生成了多少次redo,如何使用NOLOGGING子句来显著减少某些操作生成的redo数我们还研究了redo生成与块清除(block cleanout)和日志竞争(log contention)等問题的关系。 这一章的undo一节中讨论了撤销数据的作用并介绍哪些操作会生成最多/最少的undo。最后分析“讨厌”的ORA-01555:snapshot too old(ORA-01555:快照太旧)错误解释导致这个错误的可能原因,并说明如何避免 第10章:数据库表 Oracle现在支持多种表类型。这一章将分别介绍每一种类型包括堆组织表(heap organized,也就是默认的“普通”表)、索引组织表(index organized)、索引聚簇表(index clustered)、散列聚簇表(hash clustered)、嵌套表(nested)、临时表(temporary)和对象表(object)并讨论什麼时候使用这些类型的表、如何使用以及为什么使用。大多数情况下堆组织表就足够了,不过这一章还将帮助你认识到在哪些情况下使鼡其他类型的表更合适 第11章:索引 索引是应用设计的一个重要方面。要想正确地实现索引要求深入地了解数据,清楚数据如何分布並且知道要如何使用数据。人们经常把索引当作“马后炮”直到应用开发的后期才增加,这就会导致应用的性能低下 这一章将详细分析各种类型的索引,包括B*Tree索引、位图索引(bitmap index)、基于函数的索引(function-based index)和应用域索引(application domain index)并讨论各种索引应该在哪些场合使用,以及哪些場合不适用我会在“有关索引的常见问题和神话”一节回答常常被问到的一些问题,如“索引能在视图上使用吗”和“为什么没有使鼡我的索引?” 第12章:数据类型 有许多数据类型(datatype)可供选择。这一章会逐一分析22种内置数据类型解释这些类型是如何实现的,并说奣如何以及何时使用这些数据类型首先对国家语言支持(National Language Support,NLS)做一个简要的概述;要想充分理解Oracle中简单的串类型必须先掌握这个基础知识。接下来再讨论广泛使用的NUMBER类型并介绍Oracle 10g 对于在数据库中存储数值又提供了哪些新的选项。我们主要从历史角度介绍LONG和LONG RAW类型目的是討论如何处理应用中遗留的LONG列,并将其移植为LOB类型然后会深入分析存储日期和时间的各种数据类型,讨论如何处理这些数据类型来得到峩们想要的结果这里还会谈到时区支持的有关细节。 接下来讨论LOB数据类型我们会说明LOB类型的存储方式,并指出各种设置(如IN ROW、CHUNK、RETENTION、CACHE等)对我们有什么意义处理LOB时,重要的是要了解默认情况下它们如何实现和存储在对LOB的获取和存储进行调优时这一点尤其重要。本章的朂后介绍ROWID和UROWID类型这些是Oracle专用的特殊类型,用于表示行地址我们会介绍什么时候可以将它们用作表中的列数据类型(这种情况几乎从来鈈会出现!)。 第13章:分区 分区(partitioning)的目的是为了便于管理非常大的表和索引即实现一种“分而治之”的逻辑,实际上就是把一个表或索引分解为多个较小的、更可管理的部分在这方面,DBA和开发人员必须协作使应用能有最大的可用性和最高的性能。这一章介绍了表分區和索引分区我们会谈到使用局部索引(在数据仓库中很常用)和全局索引(常见于OLTP系统)的分区。 第14章:并行执行 这一章介绍了Oracle中并荇执行(parallel execution)的概念并说明了如何使用并行执行。首先指出并行处理在什么情况下有用以及哪些情况下不应考虑使用它。有了一定的认識后再来讨论并行查询的机制,大多数人提到并行执行都会想到这个特性接下来讨论并行DML(parallel DML,PDML)利用PDML,可以使用并行执行完成修改我们会介绍PDML在物理上如何实现,并说明为什么这个实现会对PDML带来一系列限制 然后再来看并行DDL。在我看来这才是并行执行真正的闪光の处。通常DBA会利用一些小的维护窗口来完成大量的操作。利用并行DDLDBA就能充分利用可用的机器资源,在很短的时间内完成很大、很复杂嘚操作(它只需原先串行执行所需时间的很小一部分) 这一章的最后将讨论过程并行机制(procedural parallelism),采用这种方法可以并行地执行应用程序玳码这里将介绍两个技术。首先是并行管线函数(parallel pipelined function)即Oracle能动态地并行执行存储函数。第二个技术是DIY并行机制(DIY parallelism)利用这个技术可以紦应用设计为并发地运行。 第15章:数据加载和卸载 这一章第一部分重点介绍 SQL*Loader (SQLLDR) 并说明可以采用哪些方法使用这个工具来加载和修改数据库Φ的数据。我们会讨论以下问题:加载定界数据更新现有的行和插入新行,卸载数据以及从存储过程调用SQLLDR。重申一遍SQLLDR是一个完备而偅要的工具,但它的实际使用也带来很多问题这一章第二部分主要讨论外部表,这是另外一种数据批量加载和卸载的高效方法 源代码囷有关更新 使用这本书中的例子时,你可能想亲手键入所有代码很多读者都喜欢这样做,因为这是熟悉编码技术的一种好办法 无论你昰否想自己键入代码,都能从Apress网站()的Source Code区下载本书的所有源代码 即使确实想自己键入代码,下载源代码也很有必要你可以使用下载嘚源代码文件检查正确的结果是什么。如果你认为自己的录入可能有误就可以先从这一步开始。倘若不想自己键入代码那么除了从Apress网站下载源代码外别无选择!不论采用哪种方式,代码文件都能帮助你完成更新和调试 勘误表 Apress极力确保文字或代码不会出错。不过出错吔是人之常情,所以只要发现并修改了错误我们就会及时告诉你。Apress所有书籍的勘误表都可以在上找到如果你发现一个还没有报告的错誤,请通知我们 Apress网站还提供了其他的信息和支持,包括所有Apress书籍的代码、样章、新书预告以及相关主题的文章等

Central()。擅长使用Java、.NET和數据库技术进行Web开发发表过30多篇这方面的 文章。他经常在创新技术相关的行业大会上发言并为)开发过大规模的分布式应用程序.他在偅要软件杂志上发表过许多文章,还在Apress出版了其他广受欢迎的图书.个人主页为. 目录 封面 -18 封底 -17 扉页 -16 版权 -15 版权声明 -14 序 -12 前言 -11 致谢 -10 目录 -9 第1章 Android计算平囼简介 1 )。在阅读过程中如有任何疑问,可通过电子邮件快速获得我们的解答    序言   所有这一切已曾发生,所有这一切还会再發生复杂系统和模式从一系列环境交互中诞生的方式正是涌现理论。   而且这一切似曾相识。   当我在1985年开始编程时世面上存茬着各式各样的PC。在我刚学会Apple II C时我的朋友有使用Commodore 128、Tandy CoCo 3的,还有使用Atari计算机的我们每个人都在自己环境的约束下成长着,很少能分享自己嘚工作当运行Microsoft DOS的价格适中的IBM仿制计算机诞生时,开发人员开始看到它所创造的市场价值DOS生态系统内的快速演化也已开始发生。最终微软公司在PC市场中占据了主导地位,而且这一地位一直保持至今   2003年,当我开始接触移动编程时该生态系统看起来与1985年没什么两样。可以通过众多途径实现你的愿景从Microsoft .NET CF到Java Micro Edition,再到BREW但就像我与朋友合作编写的游戏一样,应用程序被孤立在我们所选的生态系统中   隨着2011年的到来,通过向众多硬件供应商普及Android操作系统Google有望成为移动领域的微软。可能正是出于此原因你选择了本书并正在阅读序言。無论你是一名(移动领域演进)历史研究人员还是跟我一样是名开发者,能够亲历这一过程应该是很幸运了   我们带来了好消息!茬本书这一版中,我们付出了艰辛的努力力求为你提供工具来实现头脑中浮现的想法。无论是设置开发环境的基本知识还是部署到市場,我们都有所涉及当然,这是一段漫长的旅程所以我们还是走寻常路,但同时将提供大量参考资料供你自行钻研   旅途愉快,祝你好运!   ——Dylan Phillips    媒体评论   “本书涵盖了大量的基础概念其中一些概念是Android所独有的,作者对每一概念都诠释得细致入微我被Android这一成熟的编程平台深深吸引!”   ——亚马逊读者评论   

1、搜索;2、debug;3、查看请求调用的堆栈;4、执行堆内存中的函数;5、修改堆栈中的参数值;6、写js代码;7、打印windows对象的值;8、勾子

博客对应课程的视频位置:

当我们抓取网页端数据时经常被加密参数、加密数据所困扰,如何快速定位这些加解密函数尤为重要。本片文章是我逆向js时一些技巧的总结如有遗漏,欢迎补充

所需环境:Chrome浏览器

适用于根据关键词快速定位关键文件及代码

当前页面右键->检查,弹出检查工具

搜索支持 关键词、正则表達式

适用于根据关键词快速定位关键代码

适用于分析关键函数代码逻辑

如图所示我标记了1到6,下面分别介绍其含义

2.执行下一步不会进叺所调用的函数内部
3.进入所调用的函数内部
5.一步步执行代码,遇到有函数调用则进入函数
6.Call Stack 为代码调用的堆栈信息,代码执行顺序为由下臸上这对于着关键函数前后调用关系很有帮助


匹配url中关键词,匹配到则跳转到参数生成处适用于url中的加密参数全局搜索搜不到,可采鼡这种方式拦截

适用于点击按钮时分析代码执行逻辑

如图所示,可快速定位点击探索按钮后所执行的js。

3 查看请求调用的堆栈

可以在 Network 选項卡下该请求的 Initiator 列里看到它的调用栈,调用顺序由上而下:

4. 执行堆内存中的函数

当debug到某一个函数时我们想主动调用,比如传递下自定義的参数这时可以在检查工具里的console里调用

此处要注意,只有debug打这个函数时控制台里才可以调用。如果想保留这个函数可使用this.xxx=xxx 的方式。之后调用时无需debug到xxx函数直接使用this.xxx 即可。

5. 修改堆栈中的参数值

在console中输入如下代码如只打印_$开头的变量值


以chrome插件的方式,在匹配到关键詞处插入断点

用于定位cookie中关键参数生成位置


用于定位请求中关键参数生成位置

当请求的url里包含MmEwMD时则插入断点


用于定位header中关键参数生成位置

a、如图所示,创建一个文件夹文件夹中创建一个钩子函数文件inject.js 及 插件的配置文件 mainfest.json 即可


b、打开chrome 的扩展程序, 加载已解压的扩展程序,选择步骤1创建的文件夹即可

c、切换回原网页刷新页面,若钩子函数关键词匹配到了则触发debug

以上为我做js逆向分析时用到的手段,如有不足之處或更多技巧欢迎指教补充。

我要回帖

更多关于 主播 的文章

 

随机推荐