程序分析-原理和实践

标签: 学术园地 | 发表时间:2011-10-05 09:00 | 作者:Guoping 三十不归
出处:http://www.tektalk.org

今年秋天在UCSB旁听一门Program Analysis的课(课程主页:http://www.cs.ucsb.edu/~benh/cs290/),觉得Ben的课程风格很实在,从头到尾没有口水话,几乎是干货。回想之前对Program Analysis感兴趣却常常找不到合适的资料,而这个技术其实在很多方面都比较有用,因此想把这门课程记录下来的笔记陆续发出来,如果有朋友感觉有用,就没有白费一番介绍的力气了。

整个材料计划分两个部分:第一部分是文字内容,从课程材料转述Program Analysis的原理、基本算法。没什么高深的内容(common sense),但不留心或许体会不到;第二部分是实践,基于Clang+LLVM这个production quality的框架把这些算法实现。希望不仅能提供一些材料,也有一些代码供参考之用。

文字部分提纲如下,基本按照课程思路来:

1 引言

2 控制流分析

3 数据流分析

4 Sparse 分析

5 指针分析

6 过程间分析

7 基于类型和约束的分析(type or constraint based analysis)

事先说明:这个系列仅仅是对UCSB CS290C这门课程的山寨,理解不到位甚至错误的地方,恳请指正。课程网站上的原始材料更有价值,对于悟性好动手能力的强的同学,网站上的材料或许已经足够,此文系列权当狗尾续貂。不管如何,希望能对一些人有用。

存在的疑问:

本次系第一次在弯曲这个平台投文,不清楚其中的规矩,更不知道这个系列是否适合放在这里,麻烦编辑告知。如果可以的话,我最近会把已经写好的部分内容放上来。

相关 [程序分析 原理 实践] 推荐:

程序分析-原理和实践

- 三十不归 - 弯曲评论
今年秋天在UCSB旁听一门Program Analysis的课(课程主页:http://www.cs.ucsb.edu/~benh/cs290/),觉得Ben的课程风格很实在,从头到尾没有口水话,几乎是干货. 回想之前对Program Analysis感兴趣却常常找不到合适的资料,而这个技术其实在很多方面都比较有用,因此想把这门课程记录下来的笔记陆续发出来,如果有朋友感觉有用,就没有白费一番介绍的力气了.

Flutter原理与实践

- - 美团点评技术团队
Flutter是Google开发的一套全新的跨平台、开源UI框架,支持iOS、Android系统开发,并且是未来新操作系统Fuchsia的默认开发套件. 自从2017年5月发布 第一个版本以来,目前Flutter已经发布了近60个版本,并且在2018年5月发布了第一个 “Ready for Production Apps”的Beta 3版本,6月20日发布了第一个 “Release Preview”版本.

React Native 原理与实践

- - 掘金 前端
React Native 介绍. 什么是 React Native. React Native 是一个由 Facebook 于 2015 年 9 月发布的一款开源的 JavaScript 框架,它可以让开发者使用 JavaScript 和 React 来开发跨平台的移动应用. 它既保留了 React 的开发效率,又同时拥有 Native 应用的良好体验,加上 Virtual DOM 跨平台的优势,实现了真正意义上的:.

HBase 原理、设计与优化实践

- - leejun_2005的个人页面
HBase —— Hadoop Database的简称,Google BigTable的另一种开源实现方式,从问世之初,就为了解决用大量廉价的机器高速存取海量数据、实现数据分布式存储提供可靠的方案. 从功能上来讲,HBase不折不扣是一个数据库,与我们熟悉的Oracle、MySQL、MSSQL等一样,对外提供数据的存储和读取服务.

零拷贝原理以及实践

- - 掘金 后端
大家好,我是蓝胖子,零拷贝技术相信大家都有所耳闻,但是今天呢,我不仅会讲述零拷贝技术的原理,并将从实际代码出发,看看零拷贝技术在golang中的应用. 零拷贝技术的原理本质上就是减少数据的拷贝次数,因为当调用传统read write方法读取文件内容并返回给客户端的时候,会经过四次拷贝. 如上面代码所示,如果我们需要将本地testmmap.txt文件的内容读出来返回给客户端.

Presto实现原理和美团的使用实践

- - 美团技术团队
Facebook的数据仓库存储在少量大型Hadoop/HDFS集群. Hive是Facebook在几年前专为Hadoop打造的一款数据仓库工具. 在以前,Facebook的科学家和分析师一直依靠Hive来做数据分析. 但Hive使用MapReduce作为底层计算框架,是专为批处理设计的. 但随着数据越来越多,使用Hive进行一个简单的数据查询可能要花费几分到几小时,显然不能满足交互式查询的需求.

Lucene实践:全文检索的基本原理

- - 开源软件 - ITeye博客
http://lucene.apache.org/java/docs/index.html 定义:. 是一个高效的,基于Java. 所以在了解Lucene之前要费一番工夫了解一下全文检索. 我们生活中的数据总体分为两种:. 结构化数据: 指具有固定格式或有限长度的数据,如数据库,元数据等. 非结构化数据: 指不定长或无固定格式的数据,如邮件,word文档等.

分布式开放消息系统(RocketMQ)的原理与实践

- - 编程语言 - ITeye博客
备注:1.如果您此前未接触过RocketMQ,请先阅读附录部分,以便了解RocketMQ的整体架构和相关术语2.文中的MQServer与Broker表示同一概念.   分布式消息系统作为实现分布式系统可扩展、可伸缩性的关键组件,需要具有高吞吐量、高可用等特点. 而谈到消息系统的设计,就回避不了两个问题:  .

[转][转] 文本相似性算法Simhash原理及实践

- - heiyeluren的blog(黑夜路人的开源世界)
simhash(局部敏感哈希)的原理. simhash广泛的用于搜索领域中,也许在面试时你会经常遇到这样的问题,如果对抓取的网页进行排重,如何对搜索结果进行排重等等. jaccard相似度也是一种相似 算法,它的计算方式比较直观,就是sim(x,y)= (x∩y) / (x∪y),例如:.      若  S={a, d}, T={a, c, d} .