架构

基于Mips架构linux下设备树串口驱动(一)

懵懂的女人 提交于 2020-03-05 06:40:58
本设备树串口驱动基于linux3.0.4内核版本 start kernel() 从start kernel函数开始追踪,函数原型如下,函数实体路径见./init/main.c。可以看到该函数实体包含两个有关于串口初始化函数的调用实体,第一个是early_printk函数实现,第二个是标准设备树串口驱动实现,下面本文将会逐步进行追踪分析。 asmlinkage void __init start_kernel ( void ) { . . . . . . . . . . . . . setup_arch ( & command_line ) ; . . . . . . . . . . . . . console_init ( ) ; . . . . . . . . . . . . . } setup_arch() 首先,追踪分析early_printk初始化调用流程,继续追踪setup_arch()函数实体,函数原型如下,函数实体路径见./arch/mips/kernel/setup.c。第一个函数功能是探测cpu属于什么架构,常见有arm/mips/x86架构,本文剖析是基于探测mips架构。第二个函数功能是解析boot传参环境变量与命令行,初始化linux操作系统环境变量。第三个函数就是本文重点关注setup_early_printk()函数实体,即串口早期的打印初始化流程。

软件架构怎样进行架构

风格不统一 提交于 2020-03-05 04:30:41
软件架构师一般都是具备计算机科学或软件工程的知识,由程序员做起,然后再慢慢发展为架构师的。在国内,很多大学目前还没有设立软件架构的学位课程,虽然IT业界对设计和架构的兴趣日渐高涨,但各学校还是无法在课程中增加相应的内容来体现这一趋势。从这个方面来说,学校教育已经远远落后于产业发展。因此,促进和发展软件架构学课程的任务将落在现在的软件架构师身上。目前的软件架构师应该帮助各大院校建立相关课程体系,一旦教育课程建立起来,知识体将不仅通过新毕业生的工作成果来得到扩展,同时也会从适合软件架构的教育研究和出版物中得到扩展。 虽然大学要加强软件架构学课程的建设,但是,软件架构师的成长应该有一个实践的教育过程,并不是简单的学校的理论学习或者通过大型软件公司的认证就能成为合格的软件架构师。除了信息系统综合知识在学校学习外,软件架构师的大部分知识和经验将来自实际开发工作。根据软件架构师的任职条件,一名合格的软件架构师的成长应该经历8年以上的软件项目开发实际工作经验。一般需要经历软件设计员等阶段,然后再发展成为软件架构师。 当然,并不是每一位程序员经过8年后都可以成长为软件架构师的。一个软件工程师在充分掌握了软件架构师工作所必需的基本理论和技能后,如何得到和利用机会、如何利用所掌握的技能进行应用系统的合理架构、如何不断的抽象和总结自己的架构模式、如何深入行业成为能够胜任分析、架构为一体的精英人才

Android研发技术进阶之路

落爺英雄遲暮 提交于 2020-03-04 19:55:01
前言 移动研发火热不停,越来越多人开始学习android开发。但很多人感觉入门容易成长很难,对未来比较迷茫,不知道自己技能该怎么提升,到达下一阶段需要补充哪些内容。市面上也多是谈论知识图谱,缺少体系和成长节奏感,特此编写一份android研发进阶之路,希望能对大家有所帮助。 这篇文章里,我们只谈技术,不谈软技能。 在这里我把攻城狮分成初级、中级、高级和资深四个阶段,分别对研发设计能力、工具使用、系统原理和架构等作出要求。 初级 我对初级研发攻城狮的定义是掌握基础的android知识,能够独立完成一个功能。这个层级大部分人通过看一些资料书籍再经过项目练习很快可以达到。 需要的技能有: 1. 掌握android 四大组件知识,深入了解相关生命周期;对于Application、Fragment、Intent也必须掌握。 2. 掌握android 基本布局和控件的属性和使用,常用布局有LinearLayout\RelativeLayout\ConstraintLayout等,控件有TextView\ImageView\RecyclerView\ScrollView等。 3. 对android的资源访问使用有基本了解,了解android针对不同国家、语言、屏幕、API的适配原理。 4. 掌握android系统服务和工具类的使用,对网络访问和数据库操作有基本认知。 5. 熟练掌握研发工具

IA64与x86-64的区别

亡梦爱人 提交于 2020-03-04 10:41:07
win7 sp1下载地址 :https://download.microsoft.com/download/0/A/F/0AFB5316-3062-494A-AB78-7FB0D4461357/windows6.1-KB976932-X64.exe 说到IA-64与x86-64可能很多人会比较陌生。不知道你在下载系统的时候有没有注意过,有的地方标注了x86/64/ia-64全版本等字样。那x86/x64/ia-64都是什么东西的版本呢?答案就是CPU。 系统有x64,x86与ia-64三种版本之分,分别用于不同的CPU。较老的CPU只能安装x86版的系统,也就是我们常见的32位系统。因为微软的缘故,32位系统在过去的很长一段时间内,占据着桌面计算机的主流地位。64位系统能够在较新的x86-64架构的CPU上运行。而ia-64则只能运行于INTEL的安腾系列处理器。 x86:从1978年来的8086处理器开始,就已经出现了x86架构CPU,即32位处理器。 x86-64:又简称为x64,最初开发为1999年AMD,为了扩充IA64。当时的x86-64架构诞生颇有时代意义,处理器的发展遇到了瓶颈,内存寻址空间由于受到32位CPU的限制而只能最大到约4G。于是就有了x86-64。后被INTEL所采用。 ia-64:其实ia64的历史早于x86-64x,最初由INTEL和惠普联合推出

IA64与x64的区别

元气小坏坏 提交于 2020-03-04 10:40:54
说到IA-64与x86-64可能很多人会比较陌生。不知道你在下载系统的时候有没有注意过,有的地方标注了x86/64/ia-64全版本等字样。那x86/x64/ia-64都是什么东西的版本呢?答案就是CPU。 系 统有x64,x86与ia-64三种版本之分,分别用于不同的CPU。较老的CPU只能安装x86版的系统,也就是我们常见的32位系统。因为微软的缘 故,32位系统在过去的很长一段时间内,占据着桌面计算机的主流地位。64位系统能够在较新的x86-64架构的CPU上运行。而ia-64则只能运行于 INTEL的安腾系列处理器。 x86:从1978年来的8086处理器开始,就已经出现了x86架构CPU,即32位处理器。 x86-64:又简称为x64,最初开发为1999年AMD,为了扩充IA64。当时的x86-64架构诞生颇有时代意义,处理器的发展遇到了瓶颈,内存寻址空间由于受到32位CPU的限制而只能最大到约4G。于是就有了x86-64。后被INTEL所采用。 ia- 64:其实ia64的历史早于x86-64x,最初由INTEL和惠普联合推出。由于ia-64不与32位兼容,所以没有受到重视。直到INTEL采用了 AMD的x86-64架构,才正式的批量生产。而后为了日益扩张的计算需求,INTEL重新将IA-64拿出来,发布了安腾系列服务器CPU。 虽然x86-64和IA

x86\\x64\\ia64的区别

ε祈祈猫儿з 提交于 2020-03-04 10:40:11
这几天做MDT时,总是会遇到x86\x64\ia64这几个文件夹。前两者很常见,自从Win7系统出现之后,经常会遇到。于是猜想ia64应该也是CPU的某种架构或版本。现对三者做了下总结。 x86或80x86是英特尔Intel首先开发制造的一种微处理器体系结构的泛称。该系列较早期的处理器名称是以数字来表示,并以“86”作为结尾,包括Intel 8086、80186、80286、80386以及80486,因此其架构被称为“x86”。x86架构于1978年推出的Intel 8086中央处理器中首度出现,它是从Intel 8008处理器中发展而来的,而8008则是发展自Intel 4004的。8086在三年后为IBM PC所选用,之后x86便成为了个人计算机的标准平台,成为了历来最成功的CPU架构,如Pentium、Athlon。现在,Intel把x86-32称为IA-32,全名为“Intel Architecture, 32-bit”。 x86-64架构诞生颇有时代意义。当时了,处理器的发展遇到了瓶颈,内存寻址空间由于受到32位CPU的限制而只能最大到约4G。AMD主动把32位x86(或称为IA-32)扩充为64位。它以一个称为AMD64的架构出现(在重命名前也称为x86-64),且以这个技术为基础的第一个产品是单内核的Opteron和Athlon 64处理器家族

IA64与x64的区别

徘徊边缘 提交于 2020-03-04 10:39:31
说到IA-64与x86-64可能很多人会比较陌生。不知道你在下载系统的时候有没有注意过,有的地方标注了x86/64/ia-64全版本等字样。那x86/x64/ia-64都是什么东西的版本呢?答案就是CPU。 系 统有x64,x86与ia-64三种版本之分,分别用于不同的CPU。较老的CPU只能安装x86版的系统,也就是我们常见的32位系统。因为微软的缘 故,32位系统在过去的很长一段时间内,占据着桌面计算机的主流地位。64位系统能够在较新的x86-64架构的CPU上运行。而ia-64则只能运行于 INTEL的安腾系列处理器。 x86:从1978年来的8086处理器开始,就已经出现了x86架构CPU,即32位处理器。 x86-64:又简称为x64,最初开发为1999年AMD,为了扩充IA64。当时的x86-64架构诞生颇有时代意义,处理器的发展遇到了瓶颈,内存寻址空间由于受到32位CPU的限制而只能最大到约4G。于是就有了x86-64。后被INTEL所采用。 ia- 64:其实ia64的历史早于x86-64x,最初由INTEL和惠普联合推出。由于ia-64不与32位兼容,所以没有受到重视。直到INTEL采用了 AMD的x86-64架构,才正式的批量生产。而后为了日益扩张的计算需求,INTEL重新将IA-64拿出来,发布了安腾系列服务器CPU。 虽然x86-64和IA

如何控制开放HTTPS服务的weblogic服务器

戏子无情 提交于 2020-03-04 05:59:12
1. 前言 2016年发在乌云知识库,重新发出来纪念一下。 以下分析如何利用JAVA反序列化漏洞控制开放HTTPS服务的weblogic服务器,以及相应的防护方法。 # 2. HTTPS服务的架构分析 如果某服务器需要对公网用户提供HTTPS服务,可以在不同的层次实现。 2.1. 使用SSL网关提供HTTPS服务 当使用SSL网关提供HTTPS服务时,网络架构如下图所示(无关的设备已省略,下同)。 SSL网关只会向后转发HTTP协议的数据,不会将T3协议数据转发至weblogic服务器,因此在该场景中,无法通过公网利用weblogic的JAVA反序列化漏洞。 2.2. 使用负载均衡提供HTTPS服务 当使用负载均衡提供HTTPS服务时,网络架构如下图所示。 安全起见,负载均衡应选择转发HTTP协议而不是TCP协议,因此在该场景中,也无法通过公网利用weblogic的JAVA反序列化漏洞。 2.3. 使用web代理提供HTTPS服务 当使用web代理(如apache、nginx等)提供HTTPS服务时,网络架构如下图所示。 web代理只会向后转发HTTP协议的数据,因此在该场景中,也无法通过公网利用weblogic的JAVA反序列化漏洞。 2.4. 使用weblogic提供HTTPS服务 当使用weblogic提供HTTPS服务时,网络架构如下图所示。

Scrapy分布式原理

蓝咒 提交于 2020-03-04 05:14:58
scrapy架构 首先我们先看一下Scrapy的单机架构 也就是说scrapy的单机架构实际上实在本机维护一个爬取队列,用Scheduler进行调度,如果我们要实现scarpy的分布式,就需要多台主机协同操作,那么问题来了 多台主机协作的关键是什么? 实际上就是共享爬取队列:核心就是将这个队列进行共享,让多台主机都能访问,然后让各个主机的Scheduler进行调度,这样就可以共享requests,进行统一的抓取。 单主机爬虫架构: 主机从Queue中抓取队列,然后由Scheduler调度 分布式爬虫架构: 由多个Scheduler从同一个Queue中调度,这样就可以完成协同的抓取 前面写到的这些,都离不开队列,那么怎么维护队列呢 队列用什么维护? 可能大家会想到使用数据库,使用文件或者一些特定的数据结构来进行维护,这里推荐 redis队列 ,那么redis有什么好处呢? Redis是非关系型数据库,以Key-Value形式进行存储,相对于其他数据库来说,结构跟灵活 是内存中的数据结构存储系统,处理速度快,性能好。 提供队列,集合等多种存储结构,分辨队列维护。 怎么去重? 在进行抓取中,因为有多台主机访问一个队列,所以他们请求到的url可能会相同,那么抓取到的数据可能会一样,那么我们要怎么保证各个主机拿到的requests队列是不重复的呢? 这里我们可以使用 Redis集合