crossain

导航

2022年1月8日 #

Go语言中的slice

摘要: 1.Go语言中slice的组成 Go语言中的切片由三部分组成,第一部分是切片元素的存储位置,第二部分是切片中元素的数量,第三部分是切片的容量。 2.slice的创建 声明一个整型切片ints如下图所示: var ints []int 变量Ints由三部分组成: 切片元素要存在一段连续的内存中,实际上 阅读全文

posted @ 2022-01-08 16:01 crossain 阅读(68) 评论(0) 推荐(0) 编辑

2022年1月7日 #

Go语言结构体中的内存对齐

摘要: 1 如何计算结构体占用的空间 在 Go 语言中,我们可以使用 unsafe.Sizeof 计算出一个数据类型实例需要占用的字节数。 package main import ( "fmt" "unsafe" ) type Args struct { num1 int num2 int } type F 阅读全文

posted @ 2022-01-07 18:52 crossain 阅读(543) 评论(0) 推荐(0) 编辑

2020年11月4日 #

Go消息传递并发

摘要: 1.并发缺陷的类型 Go语言基于消息传递机制的并发缺陷大概分为三种: 1.1通道安全性有关的并发缺陷 当一个通道被关闭后,可以任意的向其读取数据而不会报错(当通道为空时候会返回通道数据类型对应的0值而不是错误,如List 1所示),但是向一个已关闭的通道中发送数据或者重复关闭已经关闭的通道会引发安全 阅读全文

posted @ 2020-11-04 09:21 crossain 阅读(456) 评论(0) 推荐(0) 编辑

2020年9月22日 #

Go语言SSA包解读

摘要: 1.背景 中间代码是指一种应用于抽象机器的编程语言,它设计的目的,是用来帮助我们分析计算机程序。在编译的过程中,编译器会在将源代码转换成目标机器上机器码的过程中,先把源代码转换成一种中间的表述形式。 Go语言中提供了SSA包以将源代码转换成静态单赋值形式的中间代码,本文就是对于SSA包源码的解读。本 阅读全文

posted @ 2020-09-22 14:23 crossain 阅读(2742) 评论(0) 推荐(0) 编辑

2020年9月18日 #

9.17玄跻峰老师报告——测试驱动的智能化软件修复

摘要: 1.程序修复现状 1.1程序修复的问题 对于Bug的处理是每一位开发者都必须面对的问题,该处理主要分为四个步骤:知晓故障——定位故障——分析故障——修复故障(打补丁)。人工修复bug基本上就是人工编写代码补丁并检验补丁正确性的过程。在实际应用程序中bug往往是比较难以发现的,因此对于程序的修复也遇到 阅读全文

posted @ 2020-09-18 21:16 crossain 阅读(537) 评论(0) 推荐(0) 编辑

2020年5月15日 #

软件分析笔记6:上下文敏感指针分析

摘要: 对于指针分析尤其是Java指针分析来说,上下文敏感是最有效的提升精度的方法,上下文敏感的指针分析是指针分析领域最近几年研究的热点,上下文敏感不是指针分析独有的技术,理论上所有跨函数间的分析都会涉及到上下文敏感。我们当前先研究上下文敏感的指针分析。 1.上下文不敏感指针分析的缺陷 我们用一个例子来说明 阅读全文

posted @ 2020-05-15 16:54 crossain 阅读(1413) 评论(1) 推荐(0) 编辑

2020年5月1日 #

软件分析笔记:5.Soot的安装与使用

摘要: 最近在学习软件分析相关知识的过程中,很多老师都推荐了Soot这个代码分析工具,所以我就去学习了一下soot的基本用法。soot项目在github上的地址为:https://github.com/Sable/soot 1.Soot简介 soot是java优化框架,提供4种中间代码来分析和转换字节码。 阅读全文

posted @ 2020-05-01 15:26 crossain 阅读(5396) 评论(2) 推荐(1) 编辑

2020年4月24日 #

软件分析笔记4:指针分析

摘要: 本文是对于南京大学李樾和谭添老师开设的《软件分析》课程视频的笔记总结。相对应的视频在可以再B站上观看。 1.Motivation 上节回顾 在笔记3里我学习了CHA有关的概念和用法,用一个例子来复习一下: 如上图所示,定义了一个接口Number,然后有三个类继承了该接口,实例化了一个Number对象 阅读全文

posted @ 2020-04-24 15:45 crossain 阅读(3082) 评论(0) 推荐(2) 编辑

2020年4月17日 #

软件分析笔记:3.过程分析(Interprocedural Analysis)

摘要: 本文是针对南京大学《软件分析》谭添老师的视频课的课堂笔记。 1.Motivation 此前我们讨论的问题都是过程内的,也就是不涉及到方法调用。然而实际程序中方法调用屡见不鲜,继续采用之前的分析方法会丢失精度,这也就是为什么我们需要过程(间)分析。二者的区别如下: 过程内分析Intra procedu 阅读全文

posted @ 2020-04-17 16:08 crossain 阅读(3962) 评论(1) 推荐(1) 编辑

2020年4月16日 #

软件分析笔记:2.数据流分析

摘要: 1数据流分析基础 1.1停机问题 抽象方法 针对基础篇中的停机问题,我们可以试用抽象方法去尝试解决问题。邪恶程序存在的关键在于程序中有if存在 。因此可以采取以下方式。 1.1.1忽略掉所有程序的if条件部分 ~~~c void Evil(){ if(!Halt(Evil))return; else 阅读全文

posted @ 2020-04-16 17:54 crossain 阅读(1622) 评论(0) 推荐(0) 编辑