精华内容
下载资源
问答
  • 企业财务管理运行机制论文_0.doc
  • 云计算理念下的中小企业财务会计运行机制探讨.pdf
  • 创新生态系统背景下移动互联网企业颠覆式创新运行机制研究.pdf
  • 基于烟草行业“安全大讲堂”实施现状,提炼出行业、学院、企业、员工和相关方五个主体要素,探讨行业“安全大讲堂”的组织及运行规律和要素间的关系,构建了“安全大讲堂”宏观组织运行机制构架和“345”金字塔运行...
  • 区块链运行机制简介

    千次阅读 2016-10-18 01:53:45
    区块链是这两年来无论在技术界还是金融界都非常热门的一个概念,但其本身涉及很多艰深的算法,学习起来也比较费劲。本文力图比较简明的介绍区块链技术以及区块链的运行机制

    区块链简介

    区块链技术是构建比特币区块链网路与交易信息加密传输的基础技术,其解决的核心问题是如何在缺少可信任中央节点和可信任通道的情况下,分布在网络中的节点如何达成共识。区块链被定义为一个分布式的账本,即每个区块链的节点都拥有系统所有交易的信息和数据。所以区块链系统具有极大的鲁棒性,因为每个节点仅仅是系统的一部分,每个节点的权利相等,都有着一样的账本,摧毁部分节点对系统完全不造成影响。另一方面,区块链的运行机制也确保了交易的安全性,在一个庞大的系统中,除非你能控制大多数的节点,否则系统仍然会参照多数节点的意见来决定什么才是真实的结果,修改一部分账本毫无意义。最后,区块链中不存在中心化的中介机构,交易的成本大大降低,交易效率得到极大的提升。正是由于区块链的安全性、鲁棒性和高效性,其被认为是未来要颠覆世界的技术。

    区块链分类

    区块链按照其去中心化的程度可以分成三类,公有链、联盟链和私有链。
    公有链没有官方组织及管理机构,无中心服务器,参与公有链的节点可以按照系统的规则自由接入网络,不受控制,节点之间基于共识机制开展工作。比特币属于典型的公有链。公有链适用于网络节点之间没有任何信任的场景,所有的用户都可以进入公有链成为其中一个节点。
    联盟链是由若干机构联合发起,介于公有链和私有链之间,兼具部分去中心化的特征。联盟链的参与成员是预先设定的并且具有特殊特征的,适用于连接多个公司或者中心化的组织的场景,如银行间的清算。
    私有链一般建立在某个企业内部,系统的运作规则根据企业要求进行设定,修改甚至是读取权限仅限于少数节点,同时仍保留着区块链的真实性和部分去中心化的特性。进入私有链的成员仍然是由中心控制和制定的,节点通过授权可以进入,如金融领域的联盟可以是私有链的。
    公有链、联盟链和私有链这三种区块链的类型中,只有公有链真正解决了信任问题,联盟链和私有链还是建立在一定的信任机制的基础之上进行的。而正因为公有链通过挖矿这种工作量证明的机制完全替代信任机制,公有链中挖矿消耗的性能也不可小觑,公有链是这三种类型的区块链中性能最低的。

    区块链运行机制

    区块链技术是一个全民参与的记账方式,区块链的运行基于以下的基础机制:
    1) 账簿公开机制
    2) 身份与签名机制
    3) 旷工挖矿机制
    我们把区块链系统想象成一个封闭的村庄,每个村民或者每户人家都可以成为区块链上的一个节点,每个节点都拥有着这个村庄所有交易的一个账簿,账簿是公开的。只要账簿的初始状态是确定的,并且每一笔交易的记录是可靠并且有序的,当前每个人持有多少钱是可以推算出来的。按照常人的思维,就算村民之间交易的可以公开,村民肯定不想让整个村子的人都知道自己到底有多少私房钱,所以在区块链中,交易是公开的,但是参与的节点都是匿名的。参与区块链的节点之间不使用真实的身份进行交易,而是使用一个唯一的ID,在两个节点进行交易的报文中会带有此ID的数字签名,确保交易信息是从对应的交易方发起的。

    那么在区块链系统中,节点之间是如何完成支付与交易的呢?假设在村庄中,老王和老张分别是区块链的两个节点,老王要向老张支付10个比特币,老王首先要询问老张的ID,例如老张的ID为ABC,老王的ID为XYZ,此时区块链中产生了一个交易,XYZ要向ABC支付10个比特币,于是老王就写了一个单子交给老张。为了追溯资金的来源,单子上除了付款人和收款人的信息以外,还有那10个比特币的来源信息,如例子中记录,比特币来源于账簿的第一页。单子写完后,老王会在单子上加上自己的数字签名(私钥加密),以便于老张验证这10个比特币确实是来自老王的。老张收到签名后,用老王的ID(公钥)即XYZ对其进行签名验证,证明这个单子是老王发过来的。

    这里写图片描述

    到此时,老张确定这个单子是从老张那发过来的,但问题是老张怎么确定老王身上有足够的比特币来支付呢?如果在一个没有去中心化的系统中,如老王要给老张转账,老王究竟有没有足够的余额来支付是通过中介机构银行来确定的,而在区块链系统中,承担这个确定工作的是旷工组织。在老王向老张发送交易单的同时,他会把交易信息广播给旷工组织,旷工组织里的每个旷工小组收到交易单后,负责确定交易并且把交易补充到账簿中去。旷工小组执行交易单确定操作是会获得奖励的。下面我们看旷工小组是怎么开展工作的。

    旷工小组的具体工作就是生成如下的交易清单,首先旷工小组收到老王与老张之间的交易信息,会把这个交易写到交易清单一栏,接着旷工小组成员找到当前账簿的最后一页,讲其编号抄写到“上一交易编号”一栏。填写到这一步,旷工小组的工作还没有完成,旷工小组的成员把交易清单、上一交易编号以及随机数通过哈希运算,生成一个本账单编号,而区块链中对于本账单编号的值是有具体的规定的,比如目标编号需要前N位为0。由于交易清单和上一交易编号都是不可变的,旷工小组成员需要不断的变化随机数的值来生成符合规定的本账单编号。区块链会自调整账单编号的规则,使得其生成的时间是10分钟。旷工小组得到一张有意义的账簿纸之后(这张账簿也就是区块),为了得到奖励,必须立刻向其他小组确认自己的工作成果。所以该旷工小组会立刻广播他已经生成有效区块的信息,要求其他小组确认。其他小组收到此类的确认信息会立刻停下手中的工作,对此区块的有效性进行确认。确认完成之后,这个区块就进入了主账簿,后面的挖矿工作会基于这个更新后的主账簿进行。

    这里写图片描述

    对于挖矿小组来说,当账簿纸送出去后,如果后面有收到其他小组送来的账簿纸,其“上一页账簿纸编号”为自己之前送出去的账簿纸,那么就表示他们的工作成功被其他小组认可了,因为已经有小组基于他们的账簿纸继续工作了。而老张看到大多数的小组都确认了这个交易,就认为这个交易已经成功。

    总结一下在区块链中的交易过程如下,
    第一步,货币的所有者A会利用他的私钥对前一次交易(比特币的来源)和下一位所有者B的签署一个数字签名,并且将这个签名附加在交易单后面;
    第二步,A将交易单广播至全网,B与旷工组织都能收到该交易单;
    第三步,旷工节点通过解出对应的随机数,生成符合条件的哈希值,去争夺创建新区块的权利并且争取比特币的奖励;
    第四步,当一个旷工节点找到解时,向全网广播该区块记录的盖有时间戳的交易,并由全网其他旷工节点核对;
    第五步,其他款共节点核对区块的正确定,没有错误后他们会将该区块认定为合法并且去竞争下一个区块,这就形成了一个合法记账的区块链。

    展开全文
  • 基于BP神经网络的煤矿企业双重预防机制运行效力评价.pdf
  • 研究运用文献综述和对比分析方法,对加拿大企业内部责任体系的组织架构、运行机制、内在逻辑及理论基础进行剖析,并就加拿大内部责任体系对我国完善职业安全健康管理体系的借鉴意义进行分析。研究表明,在政策、企业和...
  • MySQL体系架构与运行机制

    千次阅读 2020-07-09 14:04:39
    MySQL是最流行的关系型数据库软件之一,由于其体积小、速度快、开源免费、简单易用、维护成本低等,在集群架构中易于扩展、高可用,因此深受开发者和企业的欢迎。 MySQL从最初的1.0、3.1到后来的8.0,发生了各种...

    本文知识点较多,篇幅较长,请耐心学习

    题记:
    文章内容输出来源:拉勾教育Java高薪训练营。
    本篇文章是 MySQL 学习课程中的一部分笔记。

    前言

    • MySQL是最流行的关系型数据库软件之一,由于其体积小、速度快、开源免费、简单易用、维护成本低等,在集群架构中易于扩展、高可用,因此深受开发者和企业的欢迎。
      在这里插入图片描述
    • MySQL从最初的1.0、3.1到后来的8.0,发生了各种各样的变化。被Oracle收购后,MySQL的版本演化出了多个分支,除了需要付费的MySQL企业版本,还有很多MySQL社区版本。还有一条分支非常流行的开源分支版本Percona Server,它是MySQL的技术支持公司Percona推出的,也是在实际工作中经常碰到的。Percona Server在MySQL官方版本的基础上做了一些补丁和优化,同时推出了一些工具。另外一个非常不错的版本叫MariaDB,它是MySQL的公司被Oracle收购后,MySQL的创始人Monty先生,按原来的思路重新写的一套新数据库,同时也把 InnoDB 引擎作为主要存储引擎,也算MySQL 的分支。

    MySQL体系架构

    MySQL体系架构
    MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层。

    一、网络连接层

    • 客户端连接器(Client Connectors):提供与MySQL服务器建立的支持。目前几乎支持所有主流的服务端编程技术,例如常见的 Java、C、Python、.NET等,它们通过各自API技术与MySQL建立连接。

    二、服务层(MySQL Server)

    服务层是MySQL Server的核心,主要包含系统管理和控制工具、连接池、SQL接口、解析器、查询优化器和缓存六个部分。

    • 连接池(Connection Pool):负责存储和管理客户端与数据库的连接,一个线程负责管理一个连接。
    • 系统管理和控制工具(Management Services & Utilities):例如备份恢复、安全管理、集群管理等
    • SQL接口(SQL Interface):用于接受客户端发送的各种SQL命令,并且返回用户需要查询的结果。比如DML、DDL、存储过程、视图、触发器等。
    • 解析器(Parser):负责将请求的SQL解析生成一个"解析树"。然后根据一些MySQL规则进一步检查解析树是否合法。
    • 查询优化器(Optimizer):当“解析树”通过解析器语法检查后,将交由优化器将其转化成执行计划,然后与存储引擎交互。
    select uid,name from user where gender=1;
    选取-->投影-->联接
    1select先根据where语句进行选取,并不是查询出全部数据再过滤
    2select查询根据uid和name进行属性投影,并不是取出所有字段
    3)将前面选取和投影联接起来最终生成查询结果
    
    • 缓存(Cache&Buffer): 缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,权限缓存,引擎缓存等。如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。

    三、存储引擎层(Pluggable Storage Engines)

    存储引擎负责MySQL中数据的存储与提取,与底层系统文件进行交互。MySQL存储引擎是插件式的,服务器中的查询执行引擎通过接口与存储引擎进行通信,接口屏蔽了不同存储引擎之间的差异 。现在有很多种存储引擎,各有各的特点,最常见的是MyISAM和InnoDB。

    四、系统文件层(File System)

    该层负责将数据库的数据和日志存储在文件系统之上,并完成与存储引擎的交互,是文件的物理存储层。主要包含日志文件,数据文件,配置文件,pid 文件,socket 文件等。

    • 日志文件

      • 错误日志(Error log)
        默认开启,show variables like ‘%log_error%’;
      • 通用查询日志(General query log)
        记录一般查询语句,show variables like ‘%general%’;
      • 二进制日志(binary log)
        记录了对MySQL数据库执行的更改操作,并且记录了语句的发生时间、执行时长;但是它不记录select、show等不修改数据库的SQL。主要用于数据库恢复和主从复制。
        show variables like ‘%log_bin%’; //是否开启
        show variables like ‘%binlog%’; //参数查看
        show binary logs;//查看日志文件
      • 慢查询日志(Slow query log)
        记录所有执行时间超时的查询SQL,默认是10秒。
        show variables like ‘%slow_query%’; //是否开启
        show variables like ‘%long_query_time%’; //时长
    • 配置文件

      用于存放MySQL所有的配置信息文件,比如my.cnf、my.ini等。

    • 数据文件

      • db.opt 文件
        记录这个库的默认使用的字符集和校验规则。
      • frm 文件
        存储与表相关的元数据(meta)信息,包括表结构的定义信息等,每一张表都会有一个frm文件。
      • MYD 文件
        MyISAM 存储引擎专用,存放 MyISAM 表的数据(data),每一张表都会有一个.MYD 文件。
      • MYI 文件
        MyISAM 存储引擎专用,存放 MyISAM 表的索引相关信息,每一张 MyISAM 表对应一个.MYI 文件。
      • ibd文件和 IBDATA 文件
        存放 InnoDB 的数据文件(包括索引)。InnoDB 存储引擎有两种表空间方式:独享表空间和共享表空间。独享表空间使用 .ibd 文件来存放数据,且每一张InnoDB 表对应一个 .ibd 文件。共享表空间使用 .ibdata 文件,所有表共同使用一个(或多个,自行配置).ibdata 文件。
      • ibdata1 文件
        系统表空间数据文件,存储表元数据、Undo日志等 。
      • ib_logfile0、ib_logfile1 文件
        Redo log 日志文件。
    • pid 文件

      pid 文件是 mysqld 应用程序在 Unix/Linux 环境下的一个进程文件,和许多其他 Unix/Linux 服务端程序一样,它存放着自己的进程 id。

    • socket 文件

      socket 文件也是在 Unix/Linux 环境下才有的,用户在 Unix/Linux 环境下客户端连接可以不通过TCP/IP 网络而直接使用 Unix Socket 来连接 MySQL。

    MySQL运行机制

    MySQL运行机制
    MySQL Server的运行主要分为建立连接、查询缓存、解析器、查询优化器、执行引擎五个部分。

    一、建立连接(Connectors&Connection Pool)

    通过客户端/服务器通信协议与MySQL建立连接。MySQL 客户端与服务端的通信方式是 “ 半双工 ”。对于每一个 MySQL 的连接,时刻都有一个线程状态来标识这个连接正在做什么。

    通讯机制

    • 全双工:能同时发送和接收数据,例如平时打电话。
    • 半双工:指的某一时刻,要么发送数据,要么接收数据,不能同时。例如早期对讲机
    • 单工:只能发送数据或只能接收数据。例如单行道

    线程状态

    show processlist;
    查看用户正在运行的线程信息,root用户能查看所有线程,其他用户只能看自己的
    MySQL数据库线程状态

    • id:线程ID,可以使用kill xx;
    • user:启动这个线程的用户
    • Host:发送请求的客户端的IP和端口号
    • db:当前命令在哪个库执行
    • Command:该线程正在执行的操作命令
      • Create DB:正在创建库操作
      • Drop DB:正在删除库操作
      • Execute:正在执行一个PreparedStatement
      • Close Stmt:正在关闭一个PreparedStatement
      • Query:正在执行一个语句
      • Sleep:正在等待客户端发送语句
      • Quit:正在退出
      • Shutdown:正在关闭服务器
    • Time:表示该线程处于当前状态的时间,单位是秒
    • State:线程状态
      • Updating:正在搜索匹配记录,进行修改
      • Sleeping:正在等待客户端发送新请求
      • Starting:正在执行请求处理
      • Checking table:正在检查数据表
      • Closing table : 正在将表中数据刷新到磁盘中
      • Locked:被其他查询锁住了记录
      • Sending Data:正在处理Select查询,同时将结果发送给客户端
    • Info:一般记录线程执行的语句,默认显示前100个字符。想查看完整的使用show full processlist;

    二、查询缓存(Cache&Buffer)

    这是MySQL的一个可优化查询的地方,如果开启了查询缓存且在查询缓存过程中查询到完全相同的SQL语句,则将查询结果直接返回给客户端;如果没有开启查询缓存或者没有查询到完全相同的 SQL 语句则会由解析器进行语法语义解析,并生成“解析树”。

    • 缓存Select查询的结果和SQL语句
    • 执行Select查询时,先查询缓存,判断是否存在可用的记录集,要求是否完全相同(包括参数值),这样才会匹配缓存数据命中。
    • 即使开启查询缓存,以下SQL也不能缓存
      • 查询语句使用SQL_NO_CACHE
      • 查询的结果大于query_cache_limit设置
      • 查询中有一些不确定的参数,比如now()
    • show variables like ‘%query_cache%’; //查看查询缓存是否启用,空间大小,限制等
    • show status like ‘Qcache%’; //查看更详细的缓存参数,可用缓存空间,缓存块,缓存多少等

    三、解析器(Parser)

    将客户端发送的SQL进行语法解析,生成"解析树"。预处理器根据一些MySQL规则进一步检查“解析树”是否合法,例如这里将检查数据表和数据列是否存在,还会解析名字和别名,看看它们是否有歧义,最后生成新的“解析树”。

    四、查询优化器(Optimizer)

    根据“解析树”生成最优的执行计划。MySQL使用很多优化策略生成最优的执行计划,可以分为两类:静态优化(编译时优化)、动态优化(运行时优化)。

    • 等价变换策略
      • 5=5 and a>5 改成 a > 5
      • a < b and a=5 改成b>5 and a=5
      • 基于联合索引,调整条件位置等
    • 优化count、min、max等函数
      • InnoDB引擎min函数只需要找索引最左边
      • InnoDB引擎max函数只需要找索引最右边
      • MyISAM引擎count(*),不需要计算,直接返回
    • 提前终止查询
      使用了limit查询,获取limit所需的数据,就不在继续遍历后面数据
    • in的优化
      MySQL对in查询,会先进行排序,再采用二分法查找数据。比如where id in (2,1,3),变成 in (1,2,3)

    五、查询执行引擎

    负责执行 SQL 语句,此时查询执行引擎会根据 SQL 语句中表的存储引擎类型,以及对应的API接口与底层存储引擎缓存或者物理文件的交互,得到查询结果并返回给客户端。若开启用查询缓存,这时会将SQL 语句和结果完整地保存到查询缓存(Cache&Buffer)中,以后若有相同的 SQL 语句执行则直接返回结果。

    • 如果开启了查询缓存,先将查询结果做缓存操作
    • 返回结果过多,采用增量模式返回

    小总结:
    MySQL的架构设计很有层次感,从网络连接层到服务层,然后到存储引擎层最后到系统文件层。每一层都有自己的功能和所扮演的角色,这样的分层设计,在未来架构发展和演变的过程中非常灵活,方便扩展。尤其是可插拔的存储引擎层的设计,用户在找不到适合自己业务场景的存储引擎时,完全可以自定义实现一个。这种设计思想,有点类似MyBatis的自定义插件、Dubbo的SPI等主流开源框架的设计。
    MySQL的运行机制很有“逻辑感”,当我们执行某条SQL语句时,首先建立连接,然后查询缓存,如果缓存中查不到,再到解析器、查询优化器、执行引擎等。这样的设计,其实在我们平时的业务系统中经常遇到,当我们的应用收到前端浏览器发来的查询请求时,我们一般会先去缓存中查找(如redis),如果缓存中查不到,才会进行一些逻辑计算或者去持久层数据库中查询。
    经过这样的类比和理解,突然有一种融会贯通的感觉,哈哈~~


    最后

    已经参加工作好几年了,虽然之前一直用的Oracle,很久没用MySQL了,是最近才开始用MySQL,但其实自已在工作之余了解了很多MySQL相关的技术点,可是自己所掌握的这些知识点都是零散的、碎片化的、没有形成自己的技术体系。而且,有些知识点其实自己理解的并不深入,面试的时候没有底气。
    终于有一次偶然的机会,报名了第一期 拉钩训练营,经过这段时间的努力,把老师上课讲解的内容和自己之前了解到的知识点相互结合起来,自己对这些技术点有了更深入的理解,并且形成了自己的“框架”,在此,分享给大家,希望和大家互相学习交流,共同进步。
    【感谢启源老师风趣幽默的讲解,让我对所学知识点记忆深刻】
    【感谢木槿导师的认真负责,每一次作业点评都是我前进的动力】

    展开全文
  • 计算机操作系统-运行机制、体系结构

    千次阅读 多人点赞 2019-01-14 21:31:36
    操作系统的运行机制 指令与代码的区别 例如C语言中的代码经过编译器翻译,得到机器语言指令。其中高级语言的代码翻译的结果可能会对应多条指令。简单来说,指令就是处理器CPU能识别、执行的最基本的命令 两...

    操作系统的运行机制

    • 指令与代码的区别

    例如C语言中的代码经过编译器翻译,得到机器语言指令。其中高级语言的代码翻译的结果可能会对应多条指令。简单来说,指令就是处理器CPU能识别、执行的最基本的命令

    • 两种指令

    有的指令执行起来不会对操作系统或者其他的内容产生影响,而有的程序有着很高的权限,如果随意的使用,可能会对整个系统带来严重的影响。例如内存清零指令,如果用户程序可以随意使用这个指令,那么就意味着一个用户可以将其它用户的内存数据随意清零,显然这是很危险的

    由此,可将指令划分为以下两类

    特权指令

    不允许用户程序使用。例如内存清零指令

    非特权指令

    允许用户程序随意使用。例如普通的运算指令

     

    • 两种处理器状态

    因为指令是被CPU所识别、执行的命令,所以上述根据指令是否可以被用户程序使用的划分方式就存在一个问题,CPU如何判断当前是否可以执行特权指令,即当前内存中存放的程序并交给CPU来处理的是否是用户程序。因此,操作系统给定了两种处理器状态

    用户态(目态)

    此时CPU只能执行非特权指令

    核心态(管态)

    此时CPU无论是特权指令还是非特权指令都可以执行

    至于如何控制CPU的这两种状态:用程序状态字寄存器PSW中的某个标志位来标识当前处理器处于什么状态,比如0为用户态,1为核心态

     

    • 两种程序

    因为存在两种指令,所以对应的根据是否能使用特权指令,将程序划分为内核程序和应用程序

    内核程序

    操作系统的内核程序是系统的管理者,既可以执行特权指令,又可以执行非特权指令,处理器运行在核心态

    应用程序

    为了保证系统能安全运行,普通应用程序只能执行非特权指令,运行在用户态

     

    #

    上述的两种指令、两种处理器状态、两种程序都是人为进行划分的结果,所以会发现两种处理器状态和两种程序的划分具有一定的联系。两种处理器状态的是以内存中的程序是两种程序中的哪一种作为划分依据的。

     

    操作系统的内核

    由上诉操作系统的运行机制可知,程序可被划分为内核程序和应用程序。那么内核程序和应用程序应该各自完成什么样的功能呢,或者说如何从程序所完成的功能的角度来将程序划分为内核程序和应用程序。

    之前有提到过计算机系统的层次结构,其中操作系统层,是可以继续进一步划分的。更靠近应用程序的部分为非内核功能,更靠近硬件部分的为内核功能。具体的,内核(功能)可以划分为对系统资源管理的功能(包括基础管理、存储器管理、设备管理等功能)、时钟管理、中断处理以及原语(设备驱动、CPU切换等)

    总而言之,内核是计算机上配置的底层软件,是操作系统最基本、最核心的部分。实现操作系统内核功能的那些程序就是内核程序。

    • 时钟管理

    用于实现计时功能,包括并发等等都离不开它。时钟相当于是整个计算机系统的心跳。

    • 中断处理

    负责实现中断机制

    • 原语

    一种特殊的程序,是最接近硬件的部分。这种程序的运行是具有原子性的。所谓原子性,就是这个程序要么不执行,要么执行到底中途不能被打断。且其运行时间较短、跳用频繁

    这三个模块是与硬件联系较为紧密的

    对于系统资源管理的功能部分,有的操作系统不将其划分为内核功能。不同的操作系统,对内核功能的划分可能不一样。

     

    所以由此对操作系统的体系结构进行了划分,将把系统资源管理的功能部分划分为内核的操作系统的体系结构,称为大内核,将不把系统资源管理的功能部分划分为内核的操作系统的体系结构,称为微内核

     

    操作系统的体系结构

    大内核

    • 将操作系统的主要功能模块都作为系统内核,运行在核心态
    • 具有高性能
    • 内核代码庞大,结构混乱,难以维护

    微内核

    • 只把最基本的功能保留在内核
    • 需要频繁地在核心态和用户态之间切换,性能低
    • 内核功能少,结构清晰,维护方便

    类比

    操作系统的体系结构问题和企业的管理问题很相似。

    内核就是企业的管理层,负责一些重要的工作。只有管理层才能执行特权指令,普通员工只能执行非特权指令。用户态、核心态的切换相当于普通员工和管理层之间的工作交接

    大内核

    企业初创时体量不大,管理层的人会负责大部分的事情。优点是效率高,因为很多事情可以免去报备之类的流程;缺点是组织结构混乱,例如分工模糊不明确,难以维护

    微内核

    企业的体量越来越大,管理层只负责一些核心的工作。优点就是组织结构清晰,方便维护;缺点则是效率低下

    展开全文
  • Java体系:组成结构 运行机制 JRE/JDK/OpenJDK Java SE/EE/ME Java优点  Java平台是一个庞大的体系,为了更好的使用Java,我们需要对Java体系有一个全面的了解。下面我们将会了解到: 1、什么是 Java ...

    Java体系:组成结构 运行机制 JRE/JDK/OpenJDK Java SE/EE/ME Java优点

           Java平台是一个庞大的体系,为了更好的使用Java,我们需要对Java体系有一个全面的了解。下面我们将会了解到:

    1、什么是 Java 技术?为何需要 Java?

    2、Java体系:

           Java组成结构以及Java程序运行机制;

           JRE、JDK以及OpenJDK的区别与联系;

           三大标准平台:Java SE/ Java EE/ Java ME的区别与联系;

    3、最后总结:Java优点是什么?

    1、什么是 Java 技术?为何需要 Java?

           Java 是由 Sun Microsystems 在 1995 年首先发布的编程语言和计算平台。有许多应用程序和 Web 站点只有在安装 Java 后才能正常工作,而且这样的应用程序和 Web 站点日益增多。Java 快速、安全、可靠。从笔记本电脑到数据中心,从游戏控制台到科学超级计算机,从手机到互联网,Java 无处不在!

    2、Java体系

    2-1、Java平台组成结构 以及 Java程序运行机制


           Java平台按功能实现的不同,可以划分为如下四个组成部分,下面简单说说每个组成部分的作用,也就是Java程序运行机制:

    1、Java API类库

           JDK中提供的Java SE API 、以及第三方类库等;

           编程中调用API,运行时,JVM中类加载器会把相应的API class文件加载进来执行。

    2、Java编程语言

           用来编写Java应用程序,具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点;

           在"xx.java"程序文件中可使用Java API编程。

    3、Java类文件格式

           "xx.java"文件经过/bin/javac编译器编译后,里面的每个类都会生成一个"xx.class"的类文件,称为Java字节码,这些文件都是按照规定的格式来存放类的数据和执行逻辑;

    4、Java虚拟机

           Java虚拟机(Java Virtual Machine,JVM)作为 Java 字节码执行引擎,它在多种操作系统和架构上提供 Java 运行时环境。Java HotSpot 虚拟机是 Java SE 平台的一个核心组件。它实现了 Java 虚拟机规范,并作为 Java 运行时环境中的一个共享库来提供。

           它包括class类加载器、JIT动态编译器、执行引擎、以及垃圾收集器等;

           class类加载器可以分为多种,可以自定义外部的类加载器,这里我们只说JVM基本的类加载器,它可以把需要执行的class类文件加载进来,进行检查验证等;

           JIT即时编译器(just-in-time compiler)将加载进来的class文件编译成优化成机器指令;

           解释器来直接执行class文件中的字节码指令,称为解释执行,执行速度较慢;

           本地代码执行引擎用执行经JIT编译的机器指令,速度快,但编译需要更多内存、时间,导致启动慢,并且class调用可能动态改变,导致需要重新编译;

           所以通常是解释执行和编译执行混合的模式JIT编译器只编译那些"热点代码"。

           执行过程中,可能会通过JNI(Java Native Interface)来调用本地类库,本地类库可以是系统相关类库,这样就可以发出系统调用,使用系统资源了;也可以是自己实现的一些类库,比如用C语言写一些复杂的算法提高执行效率。

    2-2、JRE、JDK以及OpenJDK

           如上图,我们这里主要讲的JDK是指Sun(Oracle)官方的Java SE Development Kit,因为官方还提供Java EE SDK,它是Java EE的参考实现,是实现Java EE最全的开发工具包。

    1、JRE(Java Runtime Envirnment)

           JRE是支持Java程序运行的标准环境,提供运行用 Java 编程语言编写的应用和小程序所需的库、Java 虚拟机和其他组件。主要包括Java API类库中的Java SE API(如rt.jar)、Java虚拟机(如/bin/java即HotSpot)。

           此外,JRE 还包括两项关键的部署技术:Java 插件 — 使小程序可以在常用浏览器中运行;以及 Java Web Start — 通过网络部署独立的应用。它还是用于企业软件开发和部署的 Java 2 Platform, Enterprise Edition (J2EE) 的基础。

    2、JDK(Java Development Kit)

           JDK称为Java开发包或Java开发工具,是一个编写Java应用程序的开发环境。JDK是整个Java的核心,包括了Java程序设计语言、Java运行环境(JRE)、一些Java工具(文档工具javadoc、打包工具jar.exe等)和更多Java类库(如tools.jar)。

           JDK主要有:官方主流的OracleJDK,常用的还有OracleJDK的开源版本OpenJDK,其他还有Apache Harmony等。

    3、JRE与JDK的区别

           JRE = Java SE API + JVM + Java 插件/Java Web Start部署技术;

           JDK = Java语言 + JRE + Java工具;

           JRE是个运行环境,JDK是个开发环境。

           开发Java程序需要JDK,而运行Java程序的时候就需要JRE。

           JDK里面已经包含了JRE,因此只要安装了JDK,就可以编辑Java程序,也可以正常运行Java程序;

           而用户运行普通的Java程序无须安装JDK,而只需要安装JRE即可,因为JDK包含了许多与运行无关的内容,占用空间较大。


    JRE与JDK更多内容请参考:http://www.oracle.com/technetwork/cn/java/javase/tech/index.html

    4、SunJDK 与 OpenJDK区别


          2006年11月13日,OracleJDK开源项目为OpenJDK,两者代码基本相同,可以认为性能、功能、执行逻辑是一致的;

           区别:OpenJDK采用GPL V2协议放出,而SunJDK则采用JRL放出。两者协议虽然都是开放源代码的,但是在使用上的不同在于GPL V2允许在商业上使用,而JRL只允许个人研究使用,所以OpenJDK中没有SunJDK中的一些商用闭源的功能,如JMX中的可选元件SNMP部份的代码、Deployment(部署)功能等。

    5、OpenJDK发展

           

           JDK6时,OpenJDK基于研发中的JDK7建立;

           OpenJDK7 Build20时建立OpenJDK6分支,剥离JDK7新功能,使OpenJDK6能部署应用;

           JDK7正式发布后,OpenJDK7也同步更新为OpenJDK7 u1;

           JDK8正式发布后,OpenJDK也同步更新为OpenJDK8;

    6、Java EE SDK

           Java EE是一系列技术规范,官方提供的Java EE SDK是Java EE的参考实现,是实现Java EE最全的开发工具包。

    2-3、三大标准平台集合

           Java平台按应用业务领域的不同,可以划分为如下三个版本的标准集合:

    1、Java SE(Java Standard Edtion)

           Java标准版提供了用于开发桌面和服务器端企业应用程序的API和工具,可以让您在桌面和服务器以及目前要求较高的嵌入式环境中开发和部署 Java 应用;                   

           更多参考:http://www.oracle.com/technetwork/cn/java/javase/tech/index.html

    2、Java EE(Java Enterprise Edition)

           Java企业版是社区驱动的企业软件标准,提供了用于开发多层企业应用程序的API和工具,现如今,Java EE不仅仅是指一种标准平台,它更多的表达着一种软件架构和设计思想;

           更多参考:http://www.oracle.com/technetwork/cn/java/javaee/tech/index.html

    3、Java ME(Java Micro Edition)

           Java ME技术专门针对庞大的消费者空间,其涵盖了极小的商品范围,例如智能卡或寻呼机,直到机顶盒,几乎与计算机一样强大的设备。

    4、Java SE 与 Java EE 区别

           Java EE是在Java SE基础上发展构建的,是一系列技术规范,官方提供的Java EE SDK是Java EE的参考实现,是实现Java EE最全的开发工具包,而我们常说的JDK只是包含Java SE API实现,Java SE中存在与Java EE有关的规范;Java EE 7主要包括下面一些技术规范:

           Web 应用技术:    

    Java Servlet 3.1

    JavaServer Pages 2.3 (JSP)

    Java API for WebSocket

    Java API for JSON Processing

    ……

          企业应用技术:

    Enterprise JavaBeans 3.2(EJB)

    Java Persistence 2.1(JPA)

    Java Transaction API (JTA) 1.2

    Java Message Service API 2.0(JMS)

    ……

           此外还有Web服务技术、管理和安全性技术等等,更多请参考:http://www.oracle.com/technetwork/cn/java/javaee/tech/index.html

    3、Java优点是什么?

    1、优秀的Java语言

          Java语言具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点,语法特性很少,语法简单,代码可读性高,学习成本低;

    2、高性能虚拟机

           隔离硬件、系统层,降低应用难度,同时解释与JIT热点编译配合执行,大大提高性能;

    3、应用领域广泛

           Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序,android也是基于Java的;

    4、庞大而完善的生态系统

           强大的IDE(Eclipse、IntelliJ Idea)、大量的第三方类库、众多的开发者以及很多杀手级应用(Hadoop,Tomcat)等;

    5、开源,等等;

     

           上面我们对Java平台体系有了一个全面的了解,后面我们将全面深入的学习了解Java,下篇将会介绍Java的发展:先介绍 Java发展历史,然后在整个的发展史的基础上,抽取几个关注点的时间线,分别介绍各JDK版本的新特性、JVM发展、以及Java技术的应用发展……

     

     

    【参考资料】

    1、Oracle Java官网相关文档:http://www.oracle.com/technetwork/cn/java/index.html

    2、Java官方站点:https://www.java.com/zh_CN

    3、JVM HotSpot说明:http://www.oracle.com/technetwork/cn/java/javase/tech/index-jsp-136373-zhs.html

    4、《深入理解Java虚拟机》

    展开全文
  • Linux之grub的运行机制及grub修复

    万次阅读 2017-02-12 14:13:05
    GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。 位于磁盘的0...
  •  1、YARN 并不清楚用户提交的程序的运行机制  2、YARN 只提供运算资源的调度(用户程序向 YARN 申请资源,YARN 就负责分配资源)  3、YARN 中的主管角色叫 ResourceManager  4、YARN 中具体提供运算...
  • 美国国防高级研究计划局(DARPA)组织管理运行机制分析 作者:李丹丹,苏鑫鑫 来源:《飞航导弹》 已有 802人浏览 放大 缩小  1957年10月,苏联第一颗人造卫星升空,美国意识到其技术的发展对美国国家安全...
  • 本文探讨了在建立社会主义市场经济体制中,乡镇...迫切需要完善企业组织运行机制、决策机制、自我积累与发展机制、利益分配机制、激励与约束机制、引进机制,以不断增强市场竞争力,促进乡镇企业的健康、协调、持续发展。
  • 操作系统的运行机制与体系结构 视频链接地址: https://www.bilibili.com/video/BV1YE411D7nH/?spm_id_from=333.788.videocard.2 操作系统 系列文章目录 操作系统的运行机制与体系结构 前言 1 操作系统的运行机制 2 ...
  • 描述集团企业IT内部管理PMO运作机制,描述了PMO的基本运作模式,PMO什么时候该做什么。对出入门的朋友会有帮助。
  • 六、java的运行机制 JVM(Java虚拟机)一种用于计算设备的规范,可用不同的方式(软件或硬件)加以实现。编译虚拟机的指令集与编译微处理器的指令集非常类似。Java虚拟机包括一套字节码指令集、一组寄存器、...
  • 企业流程运行现状评估的5个维度

    万次阅读 2018-05-11 13:32:13
    最近在了解到企业运营状况的几个角度评估的问题,在网上看到一篇好的文章,在此转载,分享给大家:点击打开链接企业流程设计的好不好,是需要评估和审计的。怎么做呢?下面总结了流程评估的16字目的和流程评估的五大...
  • 因此,根据变形虫组织的特点,探索变形虫组织模型的运行机制,为希望实施变形虫组织模型的其他企业提供参考。 研究发现,变形虫组织模式的运作机制主要包括变形虫的团队关系,团队激励机制,团队会计机制和团队评价...
  • 企业微信建应用开发初探

    千次阅读 2019-04-02 13:30:00
    企业微信是腾讯推出的一个新的办公协作平台,通过与微信一致的沟通体验,为企业员工提供最基础和最实用的办公服务。同时企业微信作为一个开发平台,企业可以根据需要开发定制自己的企业应用集成到企业微信上。ABC ...
  • 以生命周期理论为基础,研究煤炭企业信息化标准管理系统的运行模式...提出煤炭企业信息化标准运行的制定、实施和更新3个重要环节,并对每个环节中的运行机制进行了相关阐述,建立了煤炭企业信息化标准管理系统的控制机制。
  • 一转眼从听华为3Com的路由交换课程到现在已经13年有余了,依稀记得第一节课的时候我带着老婆去听的课(老婆是日语系的,那时还是女朋友,并不懂网络,只是跟着我去...那以后,我也就开始了对网络的兴趣,对网络设备
  • ESB 企业服务总线基本内容概述

    千次阅读 热门讨论 2016-10-09 15:26:18
    整个架构体系里面分为三个组件或子系统,即偏开发态的设计器,偏运行态的ESB核心引擎和SOA治理管控平台三个方面的内容。以上三者组合和集成形成一款完整的ESB服务总线产品。对于三者之间的关系可以简单的描述为:
  • 电子商务电子商务行业企业参与开发建设的相关资料 ... 搭建校企合作平台创新校企合作运行机制企业形成资源共享人员互动双向介入互利共赢的校企合作运行机制学校本着资源共享实现双赢的原则通过引进企业的设备技术销
  • Android内存管理机制详解

    万次阅读 多人点赞 2012-12-13 10:37:33
     次要服务(secondary server) 目前正在运行的一些服务(主要服务,如拨号等,是不可能被进程管理终止的,故这里只谈次要服务),举例来说:谷歌企业套件,Gmail内部存储,联系人内部存储等。这部分服务虽然属于...
  • SpringBoot工作机制概述

    万次阅读 多人点赞 2018-01-03 10:03:48
    @EnableAutoConfiguration用于启动SpringBoot的自动配置机制,这是SpringBoot的核心特色之一,自动对各种机制进最大可能的进行配置。 @ComponentScan是Spring原来就有的注释,用于对指定的路径进行扫描,并将其中的...
  • MyBatis 缓存机制

    万次阅读 多人点赞 2017-04-28 15:52:12
    -- 配置mybatis运行环境 --> < environments default = "development" > < environment id = "development" > <!-- type="JDBC" 代表直接使用 JDBC 的提交和回滚设置 --> < transactionManager ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 220,640
精华内容 88,256
关键字:

企业自运行机制