离散数学题库及答案刚入门的题……求

作者:腾讯安全平台部研发安全团队 riusksk疫情下的高考已结束,又快到填志愿的时候了,又有不少知青要加入信息安全这个圈子。为了响应组织号召,撰写此文作为信安行业的入坑指南,希望能对刚入圈的同学有所帮助。1. 明确目标,并以目标为导向,用以致学刚开始的时候,相信很多人会先去搜索信息安全要学什么课程,可能有人会告诉你要先C,再学数据结构和算法,学数据结构和算法前又要学离散数学,总之会有无穷无尽的东西在等着你,导致最后自己都不知道该学啥了……其实学习什么课程都只是手段而已,但你学习这些课程的目标是什么需要先明确,比如想去国内的漏洞奖励平台刷web或软件漏洞拿奖金,或者报个CVE漏洞,开源个安全项目等等,这样目标和动力就都有了。2. 细化目标制定具体的学习内容假设你的目标是挖腾讯PC软件漏洞赚奖金吧,那腾讯PC软件有啥,电脑管家、腾讯视频、QQ、QQ影音等等,先选个门槛低点的QQ影音吧,目标就细化成挖掘音视频文件解析软件的漏洞。挖掘文件解析漏洞的技术就涉及代码审计、Fuzzing、逆向等等,再细化下目标,挑Fuzzing吧。入门Fuzzing涉及哪些系统性的技术内容呢?可以拿国外知名大会的培训课程为例,比如BlackHat、CanSecWest等等,这里以CanSecWest上的”Advanced Fuzzing and Crash Analysis”培训课程为例:https://cansecwest.com/dojos/2019/vulndisco.html4天的培训课程计划已经给出了循序渐进的学习内容,你只需要多利用搜索引擎去查找相关的书籍、论文、工具进行学习和实践。比如课程给出的前置条件:
Students should be prepared to tackle challenging and diverse subject matter and be comfortable writing functions in in C/C++ and python to complete exercises involving completing plugins for the discussed platforms. Attendees should have basic experience with debugging native x86/x64 memory corruption vulnerabilities on Linux or Windows.
涉及C/C++、Python和汇编,这里就需要先去找相应语言的经典书籍先入个门,至少保证先看得懂代码。再看第一天的课程目录,用相关标题去搜索就可以得到相关的知识点,比如AFL、libFuzzer、Corpus generation等等,遇到不懂的就是一个知识点,自己设法去弄懂并实践它就是学习的过程。整个示例过程总结起来就是:挖腾讯漏洞赚钱 =》PC软件 =》QQ影音 =》文件Fuzzing =》培训课程目录 =》搜索相关书籍、论文、工具进行学习其它目标的学习内容制定类似,包括web渗透、内核攻击等等。3.无限循环:学习=》应用=》反馈=》学习完成第2步的学习之后,就去实践(示例:挖QQ影音的漏洞,或者其它已公开的漏洞的挖掘验证),看能否挖到0day或1day,若不能就针对公开漏洞的信息继续改进优化,再验证效果,以此不断循环,直至相信这是体力问题,也不是能力问题。这里以二进制漏洞学习为例,但其它领域web、IoT方向都均适用。学习过程遇到迷茫,很多时候只是不知道目标和手段(学习计划等)之间的关联性而已,设法找到它,并细化到可执行的内容,再设置一些里程碑目标(比如重现历史漏洞的挖掘过程)来增加自信心,最后就是持之以恒下去。在学校时,有机会就多去打打CTF,提高实战能力,国内不少课程内容都比较落后,现在也有一些高校会直接采用工业界出版的一些书籍作为教材,也是一种进步。一本书的出版经常代表着其内容已经过时,除了一些计算机基础书籍,比如C/C++、编译原理、系统原理等等这些,即使再过10年也不会过时。其它很多技术会随时时代变迁,技术日新月异,而CTF题目往往会跟着技术热潮来变更,在学习基础的同时,又能帮助跟上技术的更新变化节奏。印象笔记、Mendeley、Inoreader是我最想推荐的三款工具,均有跨平台客户端,以及浏览器插件,数据在多平台同步,搭配使用非常方便。平时我Inoreader订阅RSS,用印象笔记来收藏文章,用Mendeley追踪学术论文,并在上面作笔记,方便未来查阅和复习。另外,Mendeley还有个功能,就是会根据你所收藏的论文,去推荐更多相关技术的论文,比如参考文献中的内容。比如关注Linux Kernel Fuzzing,那么它会推荐更多的内核Fuzzing论文给你,如果有公开的PDF下载,还可以直接通过它索引下载,这种学术论文的追踪并不是印象笔记能比的。个人主要是用印象笔记来收藏一些非学术论文的文章,还有一些工业界安全会议的ppt等等。之前笔者曾发过”信息安全从业者书单推荐”(https://github.com/riusksk/secbook) ,相信很多圈内人看过,期间也很多人提问过,这里整理补充说明下。1. 配合书籍,注重实战:列举那么多书并不是想让大家从头翻到尾看完,而主要是向大家推荐一些我曾经看过并觉得较好的书而已,大家自己根据自己需要选择即可。同时,理论归理论,很多东西需要配合实战,光看书也没用,依然建议大家试试”用以致学”的方法。2. 书单并非网上收集列举的:由于书单较多,有不少人质疑只是把网上有的书随便收集罗列下而已。之前在github回应过,这里再说明下。书单均是个人看过或者业界认可的经典书籍(部分书籍没全看完,但不妨碍对书籍质量的判断),跟网上罗列的安全书单不同,并非把网店上的各安全书籍都罗列上的。如果你有何好书推荐可在Github Issues上提交合并,待我看过之后,如果觉得可以就会在此处更新,会在Github上不定期更新书单。3. 关于阅读时间的问题:多数人一看到书单,就会问这些得多久才能读完?我觉得没必要纠结于此,有空有兴趣就挑本书看下即可,读书没必要把它当作一种负担,保持细水长流的方式,持续学习就好了。如果真的说时间的话,我从06开始学习安全,到今天差不多14年,14年读完那些书,我觉得问题也不大,但关键在于自己掌握了多少。我建议抛开时间、数量的考量,遵循自我内心的喜好,保持学习即可。4. 书单仅代表个人喜好:不同人对同一本书通常会有不同的评价,这里仅代表个人喜好,你可以有不同的看法。比如有些人曾推荐过《逆向工程核心原理》,但我觉得它内容过旧,且没有《加密与解密》写得好,所以我一直没入书单推荐。但你觉得此书对你有帮助,那就保持你的这份喜好,不必执着于书单本身。附《信息安全从业者书单推荐》}
导语本文整理了如何学习电脑编程入门知识,不管是了解相关知识,还是写作素材整理,都是理想的参考文章,希望对您有所帮助!操作方法1、[计算机编程导论]先认真学一门语言,先从vb学微软。vb是很好的入门语言,可视化,简单,非常好。至少要准备两本书。一本书不可能包含vb的全部内容。读一本书的时候可以交叉阅读,一本书没有提到的东西可以在另一本书里看到,这对学习非常有利,可以保证所学知识的完整性。学习编程是一个漫长的过程。不用担心,理论联系实际很有必要,套路书也很重要。阅读源代码对学习也很有帮助。学完这门vb语言后,再学其他语言就很简单了。可以试试c语言,按照c——c3354vc的顺序学习,有利于知识的连续性,或者学习delphi。词条简单,类似vb,但比vb更强。2、[明确的学习目的]学习编程对于大部分it专业人士来说都是非常有用的。学习编程,做程序员,从个人角度来说,可以解决软件使用中遇到的问题,改进现有软件,为找到理想工作增加重要权重,帮助在求职的道路上找到好的职位;从国家的角度来说,它可以为中国的软件产业做出应有的贡献,一个优秀的程序员永远是竞争的对象。学习编程还可以锻炼我们的思维,让我们的逻辑思维更加严谨;如果你能不断享受创新的乐趣,你就永远有机会走在高科技的前沿,因为编程本身就是一种创造性的工作。知识经济时代给我们带来了无限的机遇。想要掌握计算机技术,在it行业立足,拥有一定的编程能力是一个基本条件和要求。[打好基础]学习编程要有一定的基础,可以总结如下:1、数学基础。从计算机发展和应用的历史来看,计算机的数学模型和体系结构是由数学家提出的,最早的计算机也是为数值计算而设计的。所以学好计算机,需要有一定的数学基础,学者高中水平也差不多。2.逻辑思维能力的培养。学习编程,要有一定的逻辑思维能力,“逻辑思维能力”的培养要长期练习。做一个优秀的程序员,最重要的是掌握编程思路。要做到这一点,必须在反复实践、观察、分析、比较、总结中逐步积累。所以在学习编程的过程中,不用等到完全理解了所有的东西才开始练习。只要了解大体情况,就要敢于自己去体验。每个人都有第一次。有些问题只有通过实践才能理解,只有实践才能把老师和书本上的知识变成自己的。3.选择合适的入门语言。面对各种语言,应该按照什么顺序学习?编程工具无非是以下几类:1)开发本地应用软件的工具包括visual
basic、delphi、vc
(c
builder)等。数据库开发工具有visual
foxpro、oracle
developer、power
builder等。java等跨平台开发工具。3)网络开发中客户端的java
script等开发工具;为服务器开发工具,比如php、asp、jsp、isapi、nsapi、cgi等。vb方法在上述不同环境下的几种开发工具中简单易懂,界面设计可配置,易学易用。选择vb作为入门方向更适合学者。4、【注意理解一些重要概念】一本编程书看到的无非是变量、函数、条件语句、循环语句等概念。但是,要真正应用到编程中,需要在理解的基础上深入理解这些概念并加以应用,而不是简单地学习语法和结构,需要透彻理解这些语法和结构的应用实例,从而举一反三。5、【掌握编程思路】学习一门语言或者开发工具,语法结构和函数调用是次要的,最重要的是学习它的思想。比如学习vc,需要学习windows的内部机制,什么是线程.学习com,需要知道vtalbe,类工厂,接口,idl.关键是要学会一个想法。如果有想法,可以类比学习。6、【多练习,多交流】掌握编程思想必须在实际编程工作中实践和实现。在编程初期,你要一直自己设计程序,不要在具体的设计中拘泥于固定的思维方式,遇到问题多思考几个解决方案。需要多沟通。每个人有不同的思维方式,不同的角度,不同的招数。通过交流,他们可以不断吸收别人的长处,丰富编程实践,帮助自己提高水平。手工编程不仅是创造性思维的体现,也是培养逻辑思维的好方法。7、[养成良好的编程习惯]编程入门不难,入门之后不断学习很重要,比较长。与此同时,我们应该注意培养一些良好的编程习惯。编程风格对程序质量影响很大。良好的编程风格可以使程序结构清晰合理,程序代码易于维护。比如代码的缩进排列,变量命令规则的一致性,代码的注释等。8、【在线编程】网上可以学到很多不同的编程思路、方法、经验和技巧,有大量的工具、作品和相关教程资料可供下载。9、【加强计算机理论知识的再学习】学习编程是一个符合“理论实践再理论再实践”的认知过程。刚开始要有一定的计算机理论基础知识,包括编程所需的数学基础知识,有入门条件可以开始编程的实践。从实践中可以发现问题,需要加强计算机理论知识的再学习。每个人都可以编辑程序,但是当你发现很难提高到一定程度的时候,你应该回去学习一些计算机科学和数学的基础理论。学习之后,之前遇到的很多问题都会迎刃而解,让人豁然开朗。所以在学习编程的过程中,要不断学习数据结构、算法、计算机原理、编译原理、操作系统原理、软件工程等计算机科学的理论基础,以及数理逻辑、代数系统、图论、离散数学等数学理论的基础知识。这样经过不断的学习和刻苦的练习,编程水平会不断提高到一个新的高度。10[摘要]1、先根据书名,标题设计合理,巩固基础知识。2.找数学题,写个小程序解决,熟悉算法和基本函数。3.问自己的问题,做小一点的,比如自己做资源管理器和写字板,在windows下练习编程。4、结合身边的事情,找一个媒介题材,或者看看别人的节目,自己想办法实现。5.自己把教材里的例子写出来,在电脑上运行,看结果。要知道,每个产品都有例子,有机结合或者模仿。6.从熟悉的东西开始,比如分数统计,编译一个程序,完成一个功能,然后完善。7、要反复破坏代码,从破坏中寻找代码的规律。8、必须经常在电脑上反复练习。相关知识漫步者电脑音响s201用什么声卡好想提升下音质看中了节奏坦克的小夜曲3,一个朋友买了茉莉。s201,就考虑这两个。没有必要把它们添加到立体声系统中。爱国者电脑机箱散热装了酷冷至尊t400ti侧板装的上吗木头有问题。机箱空间很大。t400i放在操纵杆内!我要400镑金陵声宝适配器亲,飞利浦的电脑能用吗不知道,就算一个品牌不通用,更别说不同品牌了,请咨询客服jbl电脑音响遥控器是红外的还是无线电的效果怎么样红外线,感觉有点像诺基亚手机的皮肤状材料。华硕组装机你们的电脑现在怎么样啊,我看追评辣眼睛啊买的软件已经测试过了,确实和图片一样。它开关很快。我只浏览网页。其他的还没有打开。目前没有问题,就是网页显示飞的不够快。索尼家庭影院能用线连接投影仪吗 然后投影仪连接电脑从任何意义上来说都不是。首先,市面上的主流投影仪都没有音频功能,更不用说中继信号了,只有电脑才能同时拾取和投影。其次是无线连接型设备,无论使用什么连接,都要保证有匹配的无线收发器。}

我要回帖

更多关于 离散数学题库及答案 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信