为您找到搜索结果:1013个
关于ARM立即数的理解
转自:http://blog.sina.com.cn/s/blog_9bad4f090101e14d.html一、立即数指令码的组成ARM公司将32bit指令码分为如下两部分:32bit立即数通过Imm8值循环右移ROR值*2bit得到。即:shifter_operand=immed_8Rotate_Right(rotate_imm*2)。二、如何判断一个数是否是合法立即数?首先将这个数转换为32bit16进制形式,例如218=0xDA=0x000000DA除零外,仅有一位数为合法立即数。除零外,仅有二位数,并且相邻(包括首尾相邻,如0x1000000A)的为合法立即数。除零外,仅有三位数,并且相邻(包括中间有0相间,例如0x10800000,包括首尾相邻,如:0x14000003),这三位数中,最高位取值仅能为1、2、3,最低位取值仅能为4、8、C,中间位0x0~0xF。这种组合的为合法立即数。除了以上三种,其他基本是非法立即数。三、非法立即数如何输入?利用LDR伪指令可将任意32bit的立即数赋给寄存器。格式:LDRRD,=#Imm32编译时,编译器会优先使用MOV或者MVN指令来...
信号之alarm和pause函数
使用alarm函数可以设置一个计时器,在将来某个指定的时间,该计时器会超时。当计时器超时时,产生SIGALRM信号。如果不忽略或不捕捉此信号,则其默认动作是终止调用该alarm函数的进程。#include<unistd.h>unsignedintalarm(unsignedintseconds);返回值:0或以前设置的闹钟时间的余留秒数其中,参数seconds的值是秒数,经过了指定的seconds秒后会产生信号SIGALRM。要了解的是,经过了指定的秒数后,信号由内核产生,由于进程调度的延迟,所以进程得到控制从而能够处理该信号还需要一些时间。每个进程只能有一个闹钟时钟。如果在调用alarm时,以前已为该进程设置过闹钟时钟,而且它还没有超时,则将该闹钟时钟的余留值作为本次alarm函数调用的返回值。以前登记的闹钟时钟则被新值代替。如果有以前为进程登记的尚未超过的闹钟时钟,而且本次调用的seconds值是0,则取消以前的闹钟时钟,其余留值仍作为alarm函数的返回值。虽然SIGALRM的默认动作是终止进程,但是大多数使用闹钟的进程会捕捉此信号。如果此时进程要终止,则在终止之前它...
架构漫谈阅读感悟一
在一个人可以完成所有事情的时候,是没有架构的概念的,因为所有问题,所有事情都是一个人解决,这时架构没有任何意义;但是当一群人在一起的时候,这时候需要给每个人分工,需要让每个人根据自己的能力发挥自己的长处,来为群体完成交代的事务,这时在给每个人分工的时候就用到了架构的原始概念,根据每个人的实际能力,给每个人分工不同的工作,让每个人做自己擅长的事情,提高每个人的生产力,那么整个人群的生产力就会提高。架构必须是由人执行的工作,因为每个人的能力、时间有限,但是人对目标系统有着越来越高的要求,所以目标系统的复杂性使得单个人无法在时间及能力有限的前提下完成,所以这时出现了软件的架构,也就是给团队中的每个人分配不同的工作。架构是人类由原来的被动认识世界,变为主动的认识世界,改造世界的一种方法,这是一个主动的过程。人类在用建筑房子将自己与自然环境隔离的同时,会通过增加门窗等方式来与外界自然沟通,这在架构中的体现就是每个人都有自己独立的分工,但是在每个人独立工作的时候,也会和其他人进行沟通交流,每个人并不是封闭工作。随着人们的生活水平提高,人们的需求也会越来越高,这时需要用到架构来帮助人们解决这些杂乱的...
大型网站技术架构:核心原理与案例分析阅读笔记二
大型网站技术架构:核心原理与案例分析阅读笔记二网站架构设计时可能会存在误区,其实不必一味追随大公司的解决方案,也不必为了技术而技术,要根据本公司的实际情况,制定适合本公司发展的网站架构设计,否则会变得越来越盲从,本公司网站的架构设计会越来越差。技术也不能解决所有问题。如果是网站本身的业务架构问题,单靠技术是不能解决所有问题的。此时应该找出业务当中的主要问题,并且根据主要问题通过业务的手段去解决。现在的网站大多是直接购买提供的云计算服务,很少经历从一个小网站到大网站的架构之路,但是我们还是需要明白其中的架构和网站的来龙去脉,对于以后的网站架构技术选型和架构设计都有很大的帮助。...
大型网站技术架构:核心原理与案例分析阅读笔记一
大型网站技术架构:核心原理与案例分析阅读笔记一构建高可用,高性能,高可扩展性的网站系统。虽然网站类型各有千秋,但是其中还是具有一些通用性的,经过验证的且成熟的局部解决方案。企业应用系统进行开发时会遇到功能性和非功能性需求,功能性需求通过增加人手来加快进度,非功能性需求不是通过增加人的数量就可以解决,他们是现实的技术难题。在系统进行高并发的用户访问时,如果没有很好的架构,很有可能导致系统崩溃,无法响应。软件架构设计采用4+1视图模型来多角度描述软件系统的设计。大型网站软件系统通常具有高并发,大流量,高可用,海量数据,用户分布广泛,网络情况复杂,安全环境恶劣,需求快速变更,发布频繁,渐进式发展的特点.网站发展过程中,一开始只需要使用一台服务器就可以满足需求,所有的服务都在一台服务器,随着用户的增多,需要使应用服务和数据服务分离,应用服务器,文件服务器,数据库服务器,分别对应不同的硬件资源,支持网站业务的进一步发展.随着用户进一步增加,可以使用缓存来解决网站访问的二八定律问题,后期可以通过增加服务器数量来改善应用服务器的负载压力,并且是简单成熟的一种,实现系统的可伸缩性.使用主从热备功能来改...
常见的系统架构
软件架构(softwarearchitecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图,是一个整体布局。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口来实现。下面列举常见的软件架构: 单体架构是一种比较初级的架构方式。在软件设计中三层模型,即表示层、业务逻辑层和数据访问层就是经典的单体架构。虽然在软件设计中划分了经典的3层模型,但是对业务场景没有划分。一个典型的单体应用就是将所有的业务场景的表示层、业务逻辑层和数据访问层放在一个工程中,最终经过编译、打包,部署在一台服务器上部署简单:由于是完整的结构体,可以直接部署在一个服务器上即可。技术单一:项目不需要复杂的技术栈,往往一套熟悉的技术栈就可以完成开发。用人成本低:单个程序员可以完成业务接口到数据库的整个流程。随着需求的不断增加,越来越多的人加入开发团队,代码库也在飞速地膨胀。慢慢地,单体应用变得越来越臃肿,可维护性...
MySql架构浅谈
从上图可以看出,MySQL内部逻辑架构包括Server层以及下边的存储引擎层。Server层又包括连接器,查询缓存,分析器,优化器和执行器。存储引擎常见的包括:InnoDB,MyISAIM以及Memory等由图中可以看到,每一个客户端都是和Server层的连接器建立连接,连接器负责客户端与数据库建立连接,获取权限,维持和管理连接。通过以下命令来建立连接:mysql-h$ip-P$port-u$user-p在这行命令之后,我们在交互命令中输入密码即可建立连接。(强烈不建议直接将密码附在-p后边,会导致密码泄漏)。连接命令中的mysql是客户端工具,用来跟服务端建立连接。在完成经典的TCP握手后,连接器就要开始认证你的身份,这个时候用的就是你输入的用户名和密码。如果用户名或密码不对,你就会收到一个"Accessdeniedforuser"的错误,然后客户端程序结束执行。如果用户名密码认证通过,连接器会到权限表里面查出你拥有的...
.NET RESTful 架构详解
REST全称是RepresentationalStateTransfer,中文意思是表述性状态转移。它首次出现在2000年RoyFielding的博士论文中,RoyFielding是HTTP规范的主要编写者之一。他在论文中提到:"我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。REST指的是一组架构约束条件和原则。如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构。 REST本身并没有创造新的技术、组件或服务,而隐藏在RESTful背后的理念就是使用Web的现有特征和能力,更好地使用现有Web标准中的一些准则和约束。虽然REST本身受Web技术的影响很深,但是理论上REST架构风格并不是绑定在HTTP上,只不过目前HTTP是唯一与REST相关的实例。所以我们这里描述的REST也是通过HTTP实现的REST。 要理解RESTful架构,需要理解RepresentationalStateTransfer这个词到底是什么意思,每一个词都有些什么涵义。下面我们结合REST原则,...
RabbitMQ框架构建系列(四)——Net实现RabbitMQ之Consumer
Consumer...
RabbitMQ框架构建系列(三)——Net实现RabbitMQ之Producer
Producer...
RabbitMQ框架构建系列(二)——RabbitMQ基础知识介绍
上一篇记录了一下AMQP协议,RabbitMQ是一个Erlang开发的AMQP协议的开源实现。这一篇简单的介绍一下RabbitMQ的基本原理。一、RabbitMQ的特点 1、可靠性:RabbitMQ可以通过持久化、传输确认及发布确认来保证可靠性。 2、扩展性:多个RabbitMQ节点可以组成一个集群,也可以根据实际业务情况动态地扩展集群中节点。 3、多种协议:RabbitMQ除了原生支持AMQP协议,还支持STOMP,MQTT等多种消息中间件协议。 4、管理界面:RabbitMQ提供了一个易用的用户界面,使得用户可以监控和管理消息、集群中的节点。 5、多语言客户端:RabbitMQ几乎支持所有常用语言,比如Java、Python、Ruby、PHP、C#、JavaScript。二、RabbitMQ的优点 1、 解耦:Rabbitmq中间件减少了应用程序之间的强依赖,举个例子:电商后台要删除某个产品,除了要delete数据库数据,还要通知CMS,如果通知CMS的操作使用RabbitMQ那么,电商后台删除产品的应用程序就不需要等待CMS响应。 2、存储:消息中间件...
RabbitMQ框架构建系列——目录
1...
RabbitMQ框架构建系列(一)——AMPQ协议
一、MQ 在介绍RabbitMq之前,先来说一下MQ。什么是MQ?MQ全称为MessageQueue即消息队列,就是一个消息的容器, MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取或者订阅队列中的消息。MQ框架非常之多,比较流行的有RabbitMq、ActiveMq、ZeroMq、kafka。根据自己项目的业务场景和需求来选择相应的MQ框架(MQ框架比较)。为什么要使用MQ呢?在项目中,一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。比如在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的insert,update之类的请求同时到达MySQL,直接导致无数的行锁表锁,甚至最后请求会堆积过多,从而触发toomanyconnections错误。通过使用消息队列,我们可以异步处理请求,从而缓解系统的压力。二、RabbitMQ 在MQ众多框架中RabbitMQ仍然是首选,RabbitMQ用erlang语言开发。RabbitMQ是AMQP(...
简析三层架构
通过几个问题,来初步的学习一下三层架构。1、什么是三层架构2、应用场景——为什么要用三层架构?3、三层作用4、各个层之间的关系5、三层联系——引用6、各层是如何调用的7、三层和二层的对比这几个都是学习三层中最基本的问题,只有把这些问题搞清楚,才算是打开了三层的门。在软件体系架构设计中,分层式结构是最常见,也是最重要的一种结构。三层从下至上分别为:数据访问层(DAL)、业务逻辑层(BLL)、表示层(UI)。 表现层(UI):展现给用户的界面,即用户在使用一个系统的时候他的所见所得。业务逻辑层(BLL):对数据层的操作,对数据业务逻辑处理。数据访问层(DAL):对数据库的操作,数据的增添、删除、修改、查找等。为什么要用三层架构?解耦!不是所有的程序都需要使用三层架构,没必要把简单的问题复杂化。先来说一下解耦,举例:修电脑电脑硬盘坏了?我们要做的就是换掉电脑硬盘内存条坏了?只要换内存条就好这些部件出现问题,都不会影响别的部件的正常使用,这个就是让他们之间解耦。而和电脑不同的收音机,任何部件坏了,都会影响别的部件,这个体现的就是他们之间的耦合比较高。从这个例子里面就可以看出解耦的好处...
[转载]SQL Server内核架构剖析
原文链接:http://www.sqlserver.com.cn我们做管理软件的,主要核心就在数据存储管理上。所以数据库设计是我们的重中之重。为了让我们的管理软件能够稳定、可扩展、性能优秀、可跟踪排错、可升级部署、可插件运行,我们往往研发自己的管理软件开发平台。我们总是希望去学习别人的开发平台(如用友或金蝶或SAP),但我们却总是感叹管理软件业务处理细节繁多,而数据库管理软件却简单的SELECT、INSERT、DELETE、UPDATE四个命令就搞定。我们多希望有一天能做出一个架构,也可以这么简单就搞定管理软件。我们往往研究别人的架构,却忘记了我们身边我们最熟悉的数据库的架构。所以,今天,我想带领大家一起剖析一下数据库的架构,来探索数据库的架构思想。而我本人呢,只熟悉SQLSERVER这一种数据库产品,所以我就拿SQLSERVER来分析。在讲SQLSERVER内部原理的之前,我觉得非常有必要向大家介绍一下SQLSERVER的历史。让我们站在1999年,看看计算机数据库业界到底处于什么状态。1999年,Oracle已经于1998年9月发布了Oracle8i(可能中文版在1999年才来到中...