企业级开发

Linux企业级开发技术(3)——epoll企业级开发之epoll模型

自作多情 提交于 2020-02-25 19:58:50
EPOLL事件有两种模型: Edge Triggered (ET) 边缘触发 只有数据到来,才触发,不管缓存区中是否还有数据。 Level Triggered (LT) 水平触发 只要有数据都会触发。 假如有这样一个例子: 1. 我们已经把一个用来从管道中读取数据的文件句柄(RFD)添加到epoll描述符 2. 这个时候从管道的另一端被写入了2KB的数据 3. 调用epoll_wait(2),并且它会返回RFD,说明它已经准备好读取操作 4. 然后我们读取了1KB的数据 5. 调用epoll_wait(2)...... Edge Triggered 工作模式: 如果我们在第1步将RFD添加到epoll描述符的时候使用了EPOLLET标志,那么在第5步调用epoll_wait(2)之后将有可能会挂起,因为剩余的数据还存在于文件的输入缓冲区内,而且数据发出端还在等待一个针对已经发出数据的反馈信息。只有在监视的文件句柄上发生了某个事件的时候 ET 工作模式才会汇报事件。因此在第5步的时候,调用者可能会放弃等待仍在存在于文件输入缓冲区内的剩余数据。在上面的例子中,会有一个事件产生在RFD句柄上,因为在第2步执行了一个写操作,然后,事件将会在第3步被销毁。因为第4步的读取操作没有读空文件输入缓冲区内的数据,因此我们在第5步调用 epoll_wait(2)完成后,是否挂起是不确定的

Linux企业级开发技术(2)——epoll企业级开发之epoll接口

牧云@^-^@ 提交于 2020-02-25 19:57:22
epoll的接口非常简单,总共只有三个函数: 1、int epoll_create(intsize); 生成一个 Epoll 专用的文件描述符,size用来告诉内核这个监听的数目一共有多大。这个参数不同于select()中的第一个参数,给出最大监听的fd+1的值。需要注意的是,当创建好epoll句柄后,它就是会占用一个fd值,在linux下如果查看/proc/进程id/fd/,是能够看到这个fd的,所以在使用完epoll后,必须调用close()关闭,否则可能导致fd被耗尽。 其实是申请一个内核空间,用来存放你想关注的 socket fd 上是否发生以及发生了什么事件。 size 就是你在这个 Epoll fd 上能关注的最大 socket fd 数,大小自定,只要内存足够。 2、int epoll_ctl(intepfd, int op, int fd, struct epoll_event *event); epoll的事件注册函数,它不同与select()是在监听事件时告诉内核要监听什么类型的事件,而是在这里先注册要监听的事件类型。它用来控制某个epoll 文件描述符上的事件:注册、修改、删除。其中参数 epfd 是 epoll_create() 创建 Epoll 专用的文件描述符。相当于 select 模型中的 FD_SET 和 FD_CLR 宏。 第一个参数是epoll

基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 模块插件集成

◇◆丶佛笑我妖孽 提交于 2019-12-25 03:57:58
前面我们在 AgileEAS.NET之插件接口IModule 和 AgileEAS.NET之插件运行容器 中对模块插件和运行容器都做了介绍,本文我们介绍AgileEAS.NET平台对模块插件的集成。 我们知道AgileEAS.NET平台所依赖的基本思路是,各模块插件独立并行开发,然后通过资源管理平台进行总装集成,关于资源管理平台呢,我以理解为基于某种运行容器支持的一组基础管理应用,功能包括:模块插件的安装、组织和管理,管理系统账户和角色,提供一致的权限管理系统,以及相关的配置类工具。 本文重点介绍模块插件的安装和管理,也就模块插件的集成;我们提供了一个模块管理的业务模块用于完成安装、配置和卸载功能。 由上图我们可以看出,模块管理也是一个模块插件,也是按照模块插件标准进行开发的,只不过,他内置内AgileEAS.NET平台的发行之内;下面展示模块的安装: 我们在 AgileEAS.NET之插件接口IModule 一文中提到过,模块插件接口IModule定义了很多自描述信息比如Guid、名称、版本、类型、程序集、说明、开发商信息等,这些信息在模块集成中用到,模块安装我们选择一个程序集文件后,系统自动读出程序集中所包含的所有模块插件,我们选中需要安装的模块点安装按钮就可以了,模块的卸载: 选中模块列表中的某个模块,选择卸载,并确认提示之后从平台中卸载,模块的属性与简单配置:

基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 文章汇总及学习指南

二次信任 提交于 2019-12-25 03:56:53
一、AgileEAS.NET平台简介 AgileEAS.NET平台 是一套应用系统快速开发平台,用于帮助中小软件开发商快速构建自己的企业信息管理类开发团队,以达到节省开发成本、缩短开发时间,快速适应市场变化的目的,AgileEAS.NET应用开发平台包含基础类库、资源管理平台、运行容器、开发辅助工具等四大部分,资源管理平台为敏捷并行开发提供了设计、实现、测试等开发过程的并行。 AgileEAS.NET平台 基于软件过程改进以及构件化快速开发两方面达到这方面的目标,在软件过程改进实践方面,提出了独有的“ 敏捷并行开发方法 ”开发方法,其目的是在软件的管理之中提出符合国内中小软件企业实际情况并且可操作的软件工程实践、软件过程改进思想、及相配套的项目管理系统。 在快速开发方面, AgileEAS.NET平台 平台提供了企业应用开发所需的诸如ORM、IOC、分布式通信、插件与平台基础结构以及一系统的快速生成工具,涵盖开发过程中的设计、编码、集成、部署、运维等各个环节。 二、有关AgileEAS.NET文章汇总 有关于AgileEAS.NET平台介绍的文章 5.0 版本介绍 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - 5.0 简介 4.2重构改进 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - Linq 2 EAS

企业级JavaEE开发框架bbossgroups

拟墨画扇 提交于 2019-12-09 22:09:49
bbossgroups是国内首款集AOP、MVC、持久化、JSP标签库、分布式RPC服务、分布式事件框架于一身的企业级JavaEE开发框架,在Apache License Version 2.0 许可协议下开源。 官网地址: http://www.bbossgroups.com/ 官方博客: http://yin-bp.iteye.com/ bbossgroups包含哪些组件?主要功能? bbossgroups包含bboss mvc、bboss ioc、bboss持久层、bboss标签库、bboss rpc、bboss 工具包、bboss event七大部分,主要功能和特色如下: aop/ioc 是整个bboss的基石,提供多种组件管理ioc容器类型,提供依赖注入(支持循环依赖注入、构造函数注入、属性注入)、组件生命周期管理、工厂模式、声明式事务配置等等。 rpc 丰富的通讯协议栈(http/netty/mina/jms/webservice/rmi/jgroups/restful),通过restful可以轻松实现服务路由功能,服务调用安全高效,提供可插拔的安全认证和rpc方法权限检测机制,可以通过rpc框架方便地获取bboss ioc中配置的组件的远程调用代理从而实现rpc调用。 distribute event framework (基于bboss rpc框架,分布式事件框架

适合企业的最佳 Linux 发行版

♀尐吖头ヾ 提交于 2019-12-05 13:54:19
在这篇文章中,我将分享企业环境下顶级的 Linux 发行版。其中一些发行版用于服务器和云环境以及桌面任务。所有这些可选的 Linux 具有的一个共同点是它们都是企业级 Linux 发行版 —— 所以你可以期待更高程度的功能性,当然还有支持程度。 什么是企业级的 Linux 发行版? 企业级的 Linux 发行版可以归结为以下内容 —— 稳定性和支持。在企业环境中,使用的 Linux 版本必须满足这两点。稳定性意味着所提供的软件包既稳定又可用,同时仍然保持预期的安全性。 企业级的支持因素意味着有一个可靠的支持机制。有时这是单一的(官方)来源,如公司。在其他情况下,它可能是一个非营利性的治理机构,向优秀的第三方支持供应商提供可靠的建议。很明显,前者是最好的选择,但两者都可以接受。 Red Hat 企业级 Linux(RHEL) Red Hat 有很多很棒的产品,都有企业级的支持来保证可用。其核心重点如下: Red Hat 企业级 Linux 服务器:这是一组服务器产品,包括从容器托管到 SAP 服务的所有内容,还有其他衍生的服务器。 Red Hat 企业级 Linux 桌面:这些是严格控制的用户环境,运行 Red Hat Linux,提供基本的桌面功能。这些功能包括访问最新的应用程序,如 web 浏览器、电子邮件、LibreOffice 等。 Red Hat 企业级 Linux 工作站

企业级自动化运维工具应用实战ansible

荒凉一梦 提交于 2019-12-03 17:32:40
公司计划在年底做一次大型市场促销活动,全面冲刺下交易额,为明年的上市做准备。公司要求各业务组对年底大促做准备,运维部要求所有业务容量进行三倍的扩容,并搭建出多套环境可以共开发和测试人员做测试,运维老大为了在年底有所表现,要求运维部门同学尽快实现,当你接到这个任务时,有没有更快的解决方案? 一、简单介绍 1、定义:   ansible是新出现的自动化运维工具, 基于Python开发 ,集合了众多运维工具(puppet、chef、func、fabric)的优点,实现了 批量系统配置、批量程序部署、批量运行命令 等功能。   ansible是基于 paramiko(框架) 开发的,并且基于 模块化 工作,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。ansible 不需要在远程主机上安装client/agents ,因为它们是 基于ssh 来和远程主机通讯的。ansible目前已经 已经被红帽官方收购 ,是自动化运维工具中大家认可度最高的,并且上手容易,学习简单。是每位运维工程师必须掌握的技能之一。 2、ansible 特点 1)部署简单, 只需在主控端部署Ansible环境 ,被控端无需做任何操作,没有agent; 2) 默认使用 SSH协议 对设备进行管理; 3) 有大量常规运维操作模块,可实现日常绝大部分操作。 4)

关于PHP在企业级开发领域的访谈

我怕爱的太早我们不能终老 提交于 2019-12-02 11:39:56
  企业软件的一个关键元素就是互操作性,它可以让软件与其他平台交换信息。大家都认为PHP在这方面表现欠佳,因为它的WS-*支持相对来说比较新且功能较少,成熟度不高。关于这点我们从未手动开启过PHP的相关进程,它是随着Apache的启动而运行的。PHP通过mod_php5.so模块和Apache相连(具体说来是SAPI,即服务器应用程序编程接口)。   PHP总共有三个模块:内核、Zend引擎、以及扩展层。   PHP内核用来处理请求、文件流、错误处理等相关操作;   Zend引擎(ZE)用以将源文件转换成机器语言,然后在虚拟机上运行它;   扩展层是一组函数、类库和流,PHP使用它们来执行一些特定的操作。   比如,我们需要mysql扩展来连接MySQL数据库; 当ZE执行程序时可能会需要连接若干扩展,这时ZE将控制权交给扩展,等处理完特定任务后再返还;最后,ZE将程序运行结果返回给PHP内核,它再将结果传送给SAPI层,最终输出到浏览器上。 深入探讨:   真正的内部运行过程没有这么简单。以上过程只是个简略版,让我们再深入挖掘一下,看看幕后还发生了些什么。 Apache启动后,PHP解释程序也随之启动。PHP的启动过程有两步: 第一步是初始化一些环境变量,这将在整个SAPI生命周期中发生作用; 第二步是生成只针对当前请求的一些变量设置。 PHP启动第一步  

企业级开发(1)

眉间皱痕 提交于 2019-11-30 19:26:06
一、关于 ECMAScript6 ECMAScript 6.0 (以下简称 ES6 )是 JavaScript 语言的 新 一代标准,已经在 2015 年 6 月正式发布了。它的目标,是使得 JavaScript 语言可以用来编写复杂的大型应用程序,成为企业级开发语言。 ES6 是 ES5 的升级版,提供了简洁的语法和新的特性。 ES6 在浏览器上兼容性差一些,但是在 NodeJS上可以完全兼容。 因此,为了解决当下的兼容性问题,主要采用将开发用的 ES6 转化为 ES5 使其能够顺利运行在浏览器端的方案。 二、模块化机制 1. 概述 Node.js 采用模块化结构,按照 CommonJS 规范定义和使用模块。在 Node 中,以模块为单位划分所有功能,并且提供一个完整的模块加载机制,使得我们可以将应用程序划分为各个不同的部分,并且对这些部分进行很好的协同管理。 JavaScript 是一种功能强大的面向对象语言,具有一些最快速的动态语言解释器。官方 JavaScript 规范定义了一些用于构建基于浏览器的应用程序的对象的 API。但是,规范并没有定义一个用于对于构建更广泛的应用程序的标准库。 CommonJS API 将通过定义处理许多常见应用程序需求的 API 来填补这一空白,最终提供与 Python 、 Ruby 和 Java 一样丰富的标准库

spring 常见面试题

非 Y 不嫁゛ 提交于 2019-11-28 16:19:45
1、什么是spring、为什么要用spring及其优点、spring有哪些模块组成 ? 什么是spring Spring 是个Java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,它使得开发者只需要关心业务需求。 spring优点 spring属于低侵入式设计,代码的污染极低; spring的DI机制将对象之间的依赖关系交由框架处理,减低组件的耦合性; Spring提供了AOP技术,支持将一些通用任务,如安全、事务、日志、权限等进行集中式管理,从而提供更好的复用。 spring对于主流的应用框架提供了集成支持。 spring有哪些模块组成 Spring Core:核心类库,提供IOC服务; Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI、定时任务等); Spring AOP:AOP服务; Spring DAO:对JDBC的抽象,简化了数据访问异常的处理; Spring ORM:对现有的ORM框架的支持; Spring Web:提供了基本的面向Web的综合特性,例如多方文件上传; Spring MVC:提供面向Web应用的Model-View-Controller实现。 2、什么是IOC、DI 及其两者的优点 、 有哪几种注入方式