源代码

24小时学通Linux内核之构建Linux内核

别说谁变了你拦得住时间么 提交于 2019-11-29 19:43:17
24小时学通Linux内核之构建Linux内核   今天是腊八节,说好的女票要给我做的腊八粥就这样泡汤了,好伤心,好心酸呀,看来代码写久了真的是惹人烦滴,所以告诫各位技术男敲醒警钟,不要想我看齐,不然就只能和代码为伴了的~~话说没了腊八粥但还是有代码,还有各位读者的支持呀,所以得继续写下去,静下心来,完成Linux内核的学习,坚持,加油~   到目前为止,我们已经认识了Linux内核子系统,也探究了系统的初始化过程,并且深入探索了start_kernel()函数,同样,了解内核映像的创建也是非常重要的,接下来将讨论一下内核映像的编译和链接过程,那么这些当然需要工具链了,工具链包含编译程序、汇编程序、链接程序,是创建Linux内核映像的一组程序集合,下图说明了工具链的链式关系: ELF二进制目标文件 可执行ELF目标文件包括:ELF头,程序头表(用于加载的节),第1节,第2节。。。。节头表(可选) ELF头文件 typedef struct elf32_hdr{ unsigned char e_ident[EI_NIDENT]; //标识该文件是否为ELF文件 Elf32_Half e_type; //指定目标文件类型,例如可执行文件,重定位文件,共享的目标文件 Elf32_Half e_machine; //被编译文件所在系统的体系结构 Elf32_Word e_version;

Netty5 Read事件处理过程_源码讲解

≡放荡痞女 提交于 2019-11-29 15:29:23
欢迎大家关注我的微博 http://weibo.com/hotbain 会将发布的开源项目技术贴通过微博通知大家,希望大家能够互勉共进!谢谢!也很希望能够得到大家对我博文的反馈,写出更高质量的文章!! Netty是对Nio的一个封装,关于网络的所有操作都是通过事件的方式完成的。例如连接创建、read事件、write事件都是通过Nio来完成 的。那netty是怎么启动监听的呢? 在什么地方启动的呢?此处不为大家设置悬念,一次性告诉大家。通过循环扫描的方式来实现监听的。具体的方法类位于NioEventLoop的run方法中 (赶紧进去看看吧!! 浅显易懂)。 下面是netty的acceptor线程创建连接的代码。位于类NioEventLoop的processSelectedKey中(至于 processSelectedKey是怎么被调用的,自己看看调用链就行了(eclipse用ctrl+Shift+H就可以查看到选中方法的调用 链))。 private static void processSelectedKey(SelectionKey k, AbstractNioChannel ch) { final NioUnsafe unsafe = ch.unsafe(); if (!k.isValid()) { // close the channel if the key is not

Java查看源代码

走远了吗. 提交于 2019-11-29 14:45:56
使用Eclipse查看源代码 我们在阅读代码的时候总是会不自觉地点击去看如何实现的,但是又很烦恼需要下载源码 现在可以通过插件解决了 EnHanced Class Decompiler 去Eclipse marketplace查找下载完后 对准class文件右键open class with,我一般选择第三种 来源: https://blog.csdn.net/u012311813/article/details/100833115

详细介绍 MPL (Mozilla Public License) 协议

徘徊边缘 提交于 2019-11-29 10:44:32
MPL是The Mozilla Public License的简写,是1998年初Netscape的 Mozilla小组为其开源软件项目设计的软件许可证。MPL许可证出现的最重要原因就是,Netscape公司认为GPL许可证没有很好地平衡开发者对 源代码的需求和他们利用源代码获得的利益。同著名的GPL许可证和BSD许可证相比,MPL在许多权利与义务的约定方面与它们相同(因为都是符合OSIA 认定的开源软件许可证)。但是,相比而言MPL还有以下几个显著的不同之处: ◆ MPL虽然要求对于经MPL许可证发布的源代码的修改也要以MPL许可证的方式再许可出来,以保证其他人可以在MPL的条款下共享源代码。但是,在MPL 许可证中对“发布”的定义是“以源代码方式发布的文件”,这就意味着MPL允许一个企业在自己已有的源代码库上加一个接口,除了接口程序的源代码以MPL 许可证的形式对外许可外,源代码库中的源代码就可以不用MPL许可证的方式强制对外许可。这些,就为借鉴别人的源代码用做自己商业软件开发的行为留了一个 豁口。 ◆ MPL许可证第三条第7款中允许被许可人将经过MPL许可证获得的源代码同自己其他类型的代码混合得到自己的软件程序。 ◆ 对软件专利的态度,MPL许可证不像GPL许可证那样明确表示反对软件专利,但是却明确要求源代码的提供者不能提供已经受专利保护的源代码(除非他本人是 专利权人

现代软件工程—构建之法》第一章 中出现的计算机专业术语

旧街凉风 提交于 2019-11-29 10:29:26
现代软件工程—构建之法》第一章 中出现的计算机专业术语 软件 程序 软件工程 4.二叉树 5.遍历算法 6.数据结构 7.算法 应用软件 软件服务 源程序 软件架构 软件设计与实现 13.依赖关系 14.编译参数 15.链接参数 构建 源代码管理 配置管理 质量保证 软件测试 需求分析 程序理解 软件维护 服务运营 软件的生命周期 软件项目的管理 用户体验 国际化和本地化 API 30.用户界面设计 31.计算理论 32.信息和编码理论 33.算法和数据结构 34.形式化方法 35.程序设计语言 36.计算机体系结构 37.并行计算和分布式系统 38.实时系统和嵌入式系统 39.操作系统 40.计算机网络 41.科学计算 42.安全和密码学 43.人工智能 44.模式识别 45.机器学习 46.数据挖掘 47.信息提取 48.计算机图形学 49.计算机视觉 50.多媒体 51.数据库和大规模数据处理 52.万维网 53.自然语言处理和语言 54.人机交互 55.冒烟测试 我提出的问题 1.我看了 我上班后,发现以前同事写的程序真是垃圾,根本看不懂,无法维护。我要推翻重写!后来一个老员工笑嘻嘻地告诉我,我们现在看到的程序,就是去年的新员工愤怒地推翻重写之后的结果,大家反映还没有以前的版本好用呢。 我对这段话所表达的意思有异议,因为这个新员工可能因为个人习惯不好或者编程能力不够

Drone 基本原理和流程

六眼飞鱼酱① 提交于 2019-11-29 09:04:14
本文将用简单的方法介绍Drone的基本流程,给大家提供一个整体的概念,不做深入展开,后续文章会对各种细节从原理和代码角度深入研究。 Drone webhook 触发方式 Drone 整个buid流程是由scm(源代码管理工具)触发的,是由scm采用webhook的方式来触发执行的, 什么是webhook,webhook基本原理是什么: webhook与异步编程中"订阅-发布模型"非常类似,一端触发事件,一端监听执行,一端是发起者,一端是执行者。或者理解为Webhooks是用户定义的HTTP回调(可以用js 的callback理解),它们通常由预定义的事件触发,例如用户push代码到对应的repo。 在Drone中scm(源代码管理工具)相当于发起者,当相关事件发生,如用户commit并push代码到repo中,源代码管理工具调用事先注册好的,在drone中预定义的web API,将数据(参数)传给web API并执行对应方法,触发整个build流程。 Drone build step 实际运行方式 Drone中所有step实际上都是在container中执行的(1.1 版本计划可以本地执行的step),用定义好镜像启动一个container,然后利用配置好的参数(用环境变量传入container)在container中执行相关命令,返回结果。 Drone实际是通过挂载 /var

ubuntu12.04 64位下载cm源代码

有些话、适合烂在心里 提交于 2019-11-29 08:51:20
ubuntu12.04 64位下载CyanogenMod(简称:cm)源代码 1.准备 ubuntu12.04(64位) 安装Java6,没装过的看这里 http://my.oschina.net/u/1403694/blog/178455 安装git工具,而repo是基于git的。 同时要安装所需的若干软件,命令如下: sudo apt-get install git-core flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl valgrind 2.安装repo 下载这个文件 http://yunpan.cn/QUdenbdS6bDT7 主文件夹目录下自己手动创建文件夹bin,把下载好的repo拷贝到bin文件夹里 PATH=~/bin:$PATH 设置本地repo的可执行权限: chmod a+x ~/bin/repo 3.下载CyanogenMod源代码 主文件夹先创建文件夹android,代码创建指令如下: mkdir android 进入android文件夹 cd android 获取gingerbread的分支源代码 repo init -u git://github.com/CyanogenMod/android.git -b gingerbread

python中字符编码

你。 提交于 2019-11-29 06:41:38
由于Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes。 x = b 'ABC' bytes的每个字符都只占用一个字节 Python对bytes类型的数据用带b前缀的单引号或双引号表示: len()函数计算的是str的字符数,如果换成bytes,len()函数就计算字节数: >> > len ( b 'ABC' ) 3 >> > len ( b '\xe4\xb8\xad\xe6\x96\x87' ) 6 >> > len ( '中文' . encode ( 'utf-8' ) ) 6 可见,1个中文字符经过UTF-8编码后通常会占用3个字节,而1个英文字符只占用1个字节。 在操作字符串时,我们经常遇到str和bytes的互相转换。为了避免乱码问题,应当始终坚持使用UTF-8编码对str和bytes进行转换。 由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行: #!/usr/bin/env python3 # -*- coding: utf-8 -*- 第一行注释是为了告诉Linux/OS X系统

在阿里云服务器(ECS)上从零开始搭建nginx服务器

早过忘川 提交于 2019-11-29 04:57:27
本文介绍了如何在阿里云服务器上从零开始搭建nginx服务器。阿里云服务器(ECS)相信大家都不陌生,感兴趣的同学可以到 http://www.aliyun.com/product/ecs 去购买,或到体验馆去体验(半个月有效期)。至于如何注册、管理ECS这里就不详细介绍了。因为官方文档已经写的很清楚了。如果还不清楚,打咨询电话询问。 现在假设你已经拥有了阿里云服务器,ip是139.128.33.11(假的,读者需要换成自己的ip地址)。并且没有选择任何安装包。现在ECS是完全空的,除了必须的Linux系统外,其他什么都没有。还有一点,本文选择的是Ubuntu Linux 14.04 64位版本。Linux比较节省内存,因为并没有GUI部分,纯控制台操作(看命令行头疼的同学请绕道)。 本文只安装nginx服务器,后面的文章会配置其他环节,如PHP、Java、MySQL等。 在安装之前需要完成如下两项工作。 找一个工具上传文件(如nginx安装包) 连接到服务器的Console上,以便执行命令 由于现在服务器还是空的,所以没有ftp服务启动,因此,只能用sftp,至于什么是sftp,如何用sftp(SSH File Transfer Protocol),自己到网上搜索。总之,sftp使用了SSH协议,默认端口号是22。用法和ftp类似。大多数ftp客户端都支持sftp