逻辑框架

Go语言的几大优势和特性

雨燕双飞 提交于 2019-11-28 17:49:15
要说起GO语言的优势,我们就得从GO语言的历史讲起了…… 本文由 腾讯技术工程官方号 发表在 腾讯云+社区 2007年,受够了C++煎熬的Google首席软件工程师Rob Pike纠集Robert Griesemer和Ken Thompson两位牛人,决定创造一种新语言来取代C++, 这就是Golang。出现在21世纪的GO语言,虽然不能如愿对C++取而代之,但是其近C的执行性能和近解析型语言的开发效率以及近乎于完美的编译速度,已经风靡全球。特别是在云项目中,大部分都使用了Golang来开发,不得不说,Golang早已深入人心。而对于一个没有历史负担的新项目,Golang或许就是个不二的选择。 被称为GO语言之父的Rob Pike说,你是否同意GO语言,取决于你是认可少就是多,还是少就是少(Less is more or less is less)。Rob Pike以一种非常朴素的方式,概括了GO语言的整个设计哲学--将简单、实用体现得淋漓尽致。 很多人将GO语言称为21世纪的C语言,因为GO不仅拥有C的简洁和性能,而且还很好的提供了21世纪互联网环境下服务端开发的各种实用特性,让开发者在语言级别就可以方便的得到自己想要的东西。 发展历史 2007年9月,Rob Pike在Google分布式编译平台上进行C++编译,在漫长的等待过程中,他和Robert

Spring源码剖析开篇:什么是Spring?

亡梦爱人 提交于 2019-11-28 12:45:53
在讲源码之前,先让我们回顾一下一下Spring的基本概念,当然,在看源码之前你需要使用过spring或者spirngmvc。 Spring是什么 Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。应用程序是由一组相互协作的对象组成。而在传统应用程序开发中,一个完整的应用是由一组相互协作的对象组成。所以开发一个应用除了要开发业务逻辑之外,最多的是关注如何使这些对象协作来完成所需功能,而且要低耦合、高内聚。业务逻辑开发是不可避免的,那如果有个框架出来帮我们来创建对象及管理这些对象之间的依赖关系。可能有人说了,比如“抽象工厂、工厂方法 设计模式 ”不也可以帮我们创建对象,“生成器模式”帮我们处理对象间的依赖关系,不也能完成这些功能吗?可是这些又需要我们创建另一些工厂类、生成器类,我们又要而外管理这些类,增加了我们的负担,如果能有种通过配置方式来创建对象,管理对象之间依赖关系,我们不需要通过工厂和生成器来创建及管理对象之间的依赖关系,这样我们是不是减少了许多工作,加速了开发,能节省出很多时间来干其他事。Spring框架刚出来时主要就是来完成这个功能。 Spring框架除了帮我们管理对象及其依赖关系,还提供像通用日志记录、性能统计、安全控制、异常处理等面向切面的能力

架构设计(1)-谈谈架构

耗尽温柔 提交于 2019-11-28 08:12:20
1、什么是架构和架构本质 在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。 此君说的架构和彼君理解的架构未必是一回事。 LInux有架构,MySQL有架构,JVM也有架构,使用Java开发、MySQL存储、跑在Linux上的业务系统也有架构,应该关注哪一个?想要清楚以上问题需要梳理几个有关系又相似的概念:系统与子系统、模块与组建、框架与架构: 一、系统与子系统 系统:泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能独立完成的工作能力的群体。 子系统:也是由一群关联的个体组成的系统,多半是在更大的系统中的一部分。 二、模块与组件 都是系统的组成部分,从不同角度拆分系统而已。模块是逻辑单元,组件是物理单元。 模块就是从逻辑上将系统分解, 即分而治之, 将复杂问题简单化。模块的粒度可大可小, 可以是系统,几个子系统、某个服务,函数, 类,方法、 功能块等等。 三、框架与架构 框架是组件的规范,例如:MVC、MVP、MVVM等,是提供基础功能的产品,例如:Ruby on Rails、Spring、Laravel、Django等。 框架是规范,架构是结构。 我在这重新定义架构:软件架构指软件系统的顶层结构。 架构是经过系统性地思考, 权衡利弊之后在现有资源约束下的最合理决策, 最终明确的系统骨架: 包括子系统, 模块, 组件. 以及他们之间协作关系,

flutter兼论

こ雲淡風輕ζ 提交于 2019-11-27 20:32:24
Flutter是Google开发的一套全新的跨平台、开源UI框架,支持iOS、Android系统开发,并且是未来新操作系统Fuchsia的默认开发套件。自从2017年5月发布 第一个版本 以来,目前Flutter已经发布了近60个版本,并且在2018年5月发布了第一个 “Ready for Production Apps” 的Beta 3版本,6月20日发布了第一个 “Release Preview” 版本。 初识Flutter Flutter的目标是使同一套代码同时运行在Android和iOS系统上,并且拥有媲美原生应用的性能,Flutter甚至提供了两套控件来适配Android和iOS(滚动效果、字体和控件图标等等),为了让App在细节处看起来更像原生应用。 在Flutter诞生之前,已经有许多跨平台UI框架的方案,比如基于WebView的Cordova、AppCan等,还有使用HTML+JavaScript渲染成原生控件的React Native、Weex等。 基于WebView的框架优点很明显,它们几乎可以完全继承现代Web开发的所有成果(丰富得多的控件库、满足各种需求的页面框架、完全的动态化、自动化测试工具等等),当然也包括Web开发人员,不需要太多的学习和迁移成本就可以开发一个App。同时WebView框架也有一个致命(在对体验&性能有较高要求的情况下)的缺点

从 0 开始创建一个属于你自己的 PHP 框架

筅森魡賤 提交于 2019-11-27 18:55:57
如何构建一个自己的 PHP 框架 为什么我们要去构建一个自己的 PHP 框架?可能绝大多数的人都会说“市面上已经那么多的框架了,还造什么轮子?”。我的观点“造轮子不是目的,造轮子的过程中汲取到知识才是目的”。 那怎样才能构建一个自己的 PHP 框架呢?大致流程如下:      入口文件 ----> 注册自加载函数 ----> 注册错误(和异常)处理函数 ----> 加载配置文件 ----> 请求 ----> 路由  ---->(控制器 <----> 数据模型) ----> 响应 ----> json ----> 视图渲染数据 除此之外我们还需要单元测试、nosql 支持、接口文档支持、一些辅助脚本等。最终我的框架目录如下: 框架目录一览 app [PHP 应用目录] ├── demo [模块目录] │ ├── controllers [控制器目录] │ │ └── Index.php [默认控制器文件,输出 json 数据] │ ├── logics [逻辑层,主要写业务逻辑的地方] │ │ ├── exceptions [异常目录] │ │ ├── gateway   [一个逻辑层实现的 gateway 演示] │ │ ├── tools [工具类目录] │ │ └── UserDefinedCase.php [注册框架加载到路由前的处理用例] │ └── models

Struts2框架的大致流程

白昼怎懂夜的黑 提交于 2019-11-27 15:17:14
浏览器发送请求,例如请求/mypage.action、/reports/myreport.pdf等。 Control中的核心控制器FilterDispatcher根据请求调用相应的业务逻辑控制器(Action)。 Struts2的拦截器链自动对请求应用通用功能,如数据校验和文件上传等功能。 回调Action中的execute()方法,并在方法体内调用业务逻辑组件来处理请求(Model)。既可以是将数据保存到数据库,也可以从数据库中检索信息。实际上,因为Action只是一个控制器,它会调用业务逻辑组件来处理用户的请求。 execute()方法将调用业务逻辑组件(Model)得到的数据返还并更新视图层(View),可以是HTML页面、图像,也可以是PDF文档或者其他文档。此时支持的视图技术非常多,既支持JSP,也支持Velocity、FreeMarker等模板技术。 来源: http://www.cnblogs.com/joyous-day/p/6148744.html

Vue 浅谈前端js框架vue

好久不见. 提交于 2019-11-27 07:53:23
Vue Vue近几年来特别的受关注,三年前的时候angularJS霸占前端JS框架市场很长时间,接着react框架横空出世,因为它有一个特性是虚拟DOM,从性能上碾轧angularJS,这个时候,vue1.0悄悄 的问世了,它的优雅,轻便也吸引了一部分用户,开始收到关注,16年中旬,VUE2.0问世,这个时候vue不管从性能上,还是从成本上都隐隐超过了react,火的一塌糊涂,这个时候,angular 开发团队也开发了angular2.0版本,并且更名为angular,吸收了react、vue的优点,加上angular本身的特点,也吸引到很多用户,目前已经迭代到5.0了。 学习vue是现在前端开发者必须的一个技能。 前端js框架到底在干嘛,为什么要用 js框架帮助开发者写js逻辑代码,在开发应用的时候js的功能划分为如下几点: 渲染数据 操作dom(写一些效果) 操作cookie等存储机制api 在前端开发中,如何高效的操作dom、渲染数据是一个前端工程师需要考虑的问题,而且当数据量大,流向较乱的时候,如何正确使用数据,操作数据也是一个问题 而js框架对上述的几个问题都有自己趋于完美的解决方案,开发成本降低。高性能高效率。唯一的缺点就是需要使用一定的成本来学习。 Vue官网介绍 vue是渐进式JavaScript框架 “渐进式框架”和“自底向上增量开发的设计”是Vue开发的两个概念

网络协议总结一

北城余情 提交于 2019-11-26 16:03:26
网络协议 OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型是一个逻辑上的定义和规范; 把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备, 比如路由器,交换机 OSI 七层模型是一种框架性的设计方法,其最主要的功能就是帮助不同类型的主机实现数据传输; 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯 来源: https://www.cnblogs.com/a19960101/p/11325428.html

Protobuf协议精品应用

与世无争的帅哥 提交于 2019-11-25 23:10:42
  Protobuf应用广泛,尤其作为网络通讯协议最为普遍。本文将详细描述几个让人眼前一亮的protobuf协议设计,对准备应用或已经应用protobuf的开发者会有所启发,甚至可以直接拿过去用。 这里描述的协议设计被用于生产环境的即时通讯、埋点数据采集、消息推送、redis和mysql数据代理。   Bwar从2013年开始应用protobuf,2014年设计了用于mysql数据代理的protobuf协议,2015年设计了用于即时通讯的protobuf协议。高性能C++ IoC网络框架Nebula https://github.com/Bwar/Nebula 把这几个protobuf协议设计应用到了极致。 1. TCP通讯协议设计   本协议设计于2015年,用于一个生产环境的IM和埋点数据采集及实时分析,2016年又延伸发展了基于protobuf3的版本并用于开源网络框架 Nebula 。基于protobuf2和protobuf3的有较少差别,这里分开讲解两个版本的协议设计。 1.1. protobuf2.5版Msg   2015年尚无protobuf3的release版本,protobuf2版本的fixed32类型是固定占用4个字节的,非常适合用于网络通讯协议设计。Bwar设计用于IM系统的协议包括两个protobuf message:MsgHead和MsgBody

C++反射机制:可变参数模板实现C++反射

自作多情 提交于 2019-11-25 23:07:18
1. 概要   本文描述一个通过C++可变参数模板实现C++反射机制的方法。该方法非常实用,在 Nebula 高性能网络框架中大量应用,实现了非常强大的动态加载动态创建功能。   C++11的新特性--可变模版参数(variadic templates)是C++11新增的最强大的特性之一,它对参数进行了高度泛化,它能表示0到任意个数、任意类型的参数。关于可变参数模板的原理和应用不是本文重点,不过通过本文中的例子也可充分了解可变参数模板是如何应用的。   熟悉Java或C#的同学应该都知道反射机制,很多有名的框架都用到了反射这种特性,简单的理解就是只根据类的名字(字符串)创建类的实例。 C++并没有直接从语言上提供反射机制给我们用,不过无所不能的C++可以通过一些trick来实现反射。 Bwar 也是在开发Nebula框架的时候需要用到反射机制,在网上参考了一些资料结合自己对C++11可变参数模板的理解实现了C++反射。 2. C++11之前的模拟反射机制实现    Nebula 框架是一个高性能事件驱动通用网络框架,框架本身无任何业务逻辑实现,却为快速实现业务提供了强大的功能、统一的接口。业务逻辑通过从Nebula的Actor类接口编译成so动态库,Nebula加载业务逻辑动态库实现 各种功能Server ,开发人员只需专注于业务逻辑代码编写,网络通信、定时器、数据序列化反序列化