首页 文章 精选 留言 我的

精选列表

搜索[1 X 认证],共10000篇文章
优秀的个人博客,低调大师

什么是区块链1

区块链是支撑比特币的基础技术,是过去一年的流行语之一。几乎每个人都在谈论区块链,而且有充分的理由。分布式账本是区块链技术的艺术术语,它提供了一个令人兴奋的新方法,在没有中央管理机构的情况下进行业务交易。以下是组件的非技术性,简化的说明。区块链定义 区块链或分布式总账是分布(复制)到对等(P2P)网络的计算机的称为“块”的加密交易的不断增长的列表(数字文件)。块 如上所述,区块链是被称为区块的不可变的,连续的记录链。块可以包含任何类型的数据,例如物理产品的唯一数字标识符。块使用哈希“链接”在一起。哈希是一个函数,它接受一个输入值,并从该输入创建一个确定输入值的输出值。 除了用户数据之外,每个块还将包含一个索引,一个时间戳,一个事务列表,一个证明和前一个块的散列。哈希 散列起着至关重要的作用。因为每个新块都包含前一个块的散列,所以区块

优秀的个人博客,低调大师

构建之法阅读笔记1

软件=程序+软件工程 跟单纯的编写代码去实现自己想要看到的功能不同,软件工程是一个带有工程色彩的概念,不仅是为了满足个人的简单兴趣,而是有着明确的实用目标和更庞大、完善可靠的系统结构,而且也跟更多的人发生了联系(包括程序员和用户)。从工程的角度来看,写一个满足用户需求的软件:需要从用户需求的角度出发仔细分析,结合现有技术水平和人力物力,提出并逐步完善某个idea直至产品完成。工程问题更明显的特征是讲求实用和产品的工作效能(成本、稳定性...),我们面临的大多数问题都由实际的工程问题转化而来并逐步形成专业领域的各种技术和知识。 程序是基础,也是软件大厦的基石,但是只有程序并不是一个完整的软件。需要软件工程的支撑。由于在暑假已经整体的读过一遍了,现在再次翻看有种焕然领悟的感觉,之前只是枯燥的把它读完,现在再看它 的目录结构,整个软件的架构呈现在我面前。 个人感受: 过去的我只是看到一道题有一点思路就去写,不去考虑具体的规范和流程。 看到书上写的之后,大概懂得了拿到一个问题,基本的解决思路。 先构建一个程序的基本框架,分块去写,再分别验证。

优秀的个人博客,低调大师

VICA 架构设计(1)

本文记录最近完成的一个通用实时通信客户端的架构。 背景 我们公司是做税务相关的软件,有针对大客户 MIS 系统,也有针对中小客户的 SaaS 平台。这些系统虽然都是 B/S 的,但是也需要使用 ActiveX 控件来调用本地的硬件设备打印相关的发票。 由于 ActiveX 控件只能在 IE 下使用,而且在为客户部署时,经常会出现各种各样的问题。所以 SaaS 平台在推广时,不能不配备一个相应的实施团队,为每一家客户解决这些问题。 为了更好地控制本地硬件资源,对接税控设备。我们决定开发一个统一的独立的客户端软件。这样,客户在使用我们的 SaaS 服务或 MIS 系统时,只需要在开票机中下载一个轻量级的客户端,安装后,该客户端会与服务端保持实时的连接,并以托盘的形式静默地在开票机器的后台长期运行。这样,其他的使用者就可以继续使用浏览器中的网页,远程控制这些开票机进行开票了。 客户端产品在公司的名称为 VICA(VAT Intelligent Client Assistant -增值税智能客户端助手)。以下将使用该名称。 架构目标 通用性 VICA 需要同时适配公司的所有 B/S 产品。接口方面要比较通用。 一切需要调用本地资源的功能,都可以通过 VICA 来完成。 平台化 由于公司的产品种类较多,需要调用本地资源的功能也比较多,有打印纸质发票、开具电子发票、抓取本地数据、调用局域网服务等…… 所以要求 VICA 实现平台化、插件化。VICA 本身只专注于更加底层的功能,如插件框架、长连接、自动重连、自动升级、通用提示、命令框架。而业务功能则都实现为相应的插件。这样,在不同产品的应用场景中,开发者可以选配不同的功能插件即可完成基础功能的搭建。另外,开发者还可以基于统一的开发规范,编写出更多适合自己业务的功能插件。 三高 VICA 是需要作为 SaaS 平台的客户端的。而 SaaS 平台作为互联网应用,其用户数是非常多的。所以 VICA 也需要支持“三高”:高并发、高可用、高性能。 接口要求 VICA 是一个内部产品,不直接对外。它的直接使用者,其实是各产品线中的开发人员。所以我们需要一个可以适配各产品线的接口。 目前公司的产品基本都是 .NET 来进行研发的,而且 MIS 产品也不需要部署过多的服务或应用,所以 VICA 在服务端需要能提供 .NET SDK。 部署要求 VICA 的服务端程序有一定的部署要求: 在 SaaS 中需要可以独立部署、独立扩展; 在 MIS 中需要可以独立部署,也需要能够和 MIS 集成在一起部署。 简单 VICA 对于客户而言,一定要保持其简单性。理论上,使用者只需要下载安装运行后,就很快隐藏到托盘,没有过多功能。这样,一是越是简单的功能,越不容易出错,需要更新的频率也就大大降低了。二是对于客户来说功能越少越好,这样不但易用,而且客户更加不易感知客户端的存在,这样他们更加注重浏览器端的配套的功能。 静默 由于在一些场景下,VICA 是运行在长期无人值守的开票机上,所以 VICA 中的所有功能,都应该是尽量不需要与用户交互的。 自动升级 作为一个客户端,自动升级的功能是必不可少的。这是该软件能逐渐成长的基础。 对于自动升级,我们要求在服务端能控制所有客户端是否需要强制升级,并支持静默升级。 技术选型 客户端技术选型 客户端选型比较简单,当前我们的队伍中只有 .NET 和 JAVA 人员。而在客户端开发方面,.NET 要更加方便一些。另外,我们需要支持 XP 以上的系统,所以我们选择了 .NET 4.0 版本,该版本可以支持 XP SP3 以上的系统。另外,为了方便后期做出更加美观的界面,所以我们选择了 WPF 界面技术。 服务端技术选型 服务端实现实时通信的框架中,Node 以高性能著称,我及团队内部一些同事也都有 Node 的开发经验。但是最终我们还是决定使用 .NET 平台以及一些开源组件来开发一套自己的高性能实时通信框架。原因如下: 我们需要将 VICA 服务端与 MIS 系统集成部署。 需要易用的 NET SDK。 我们的客户端是基于 Socket 连接,而非 WebSocket。所以二者皆可。 Node 的高性能主要依赖于其单线程、异步非阻塞模式:“为了能适应高并发的情况(成千上万的连接),你的服务器需要采用异步非阻塞模式。你可能已经在IO操作中实现了这种方式。但问题是,如果你的服务器代码的任何部分可能产生阻塞,你都需要开启一个线程。在这种级别的并发下,你不能去为每个连接创建线程。所以整个代码路径都需要异步非阻塞式的, 不仅仅在输入输出层。”。所以,我们需要在 VICA 服务端代码中,所有会造成线程阻塞的代码,都需要使用异步接口(如 IO 操作、MQ 的访问、远程服务的调用等)。 物理视图 上图以 VICA 在电子票应用中集成部署的场景,示例了物理部署后的重要组件: 浅黄色的两个组件,就是 VICA 平台。 浅绿色的组件,是基于 VICA 平台编写的插件。上图中,该插件完成了电子票的开票功能。 橙色部分,是电子票应用的业务相关组件。 逻辑视图 上图是 VICA 中的逻辑视图,描述 VICA 平台所提供的功能,以及客户端、服务端集成 VICA 时的调用关系。 Server:服务端; DBEN.EI:电子票相关的业务组件。 DBEN.VICA.Server:VICA 在服务器端的一些基础组件。以 SDK 的形式提供给开发者。 WPFClient:WPF 客户端; DBEN.VICA.ClientUI:客户端 UI 壳。 DBEN.VICA.Client:客户端一些通用功能类库。 DBEN.VICA.InvPlugin.UI:开票相关的界面插件,与 DBEN.VICA.InvPlugin 是配套的,不过这个插件只在客户端使用。 DBEN.VICA.InvPlugin:开票相关的业务插件,其中包含了发票相关的一些命令及逻辑。这个包会被客户端、服务端同时使用。 DBEN.VICA.Platform:VICA 平台所提供的功能。含:插件框架、通信框架、IOC容器、命令框架等基础组件,以及一些通用的内置命令,如登录命令。 通信框架 UML 图 通信框架是 VICA 中最核心的功能。 类图: 序列图: 命令框架 UML 图 命令框架在通信框架的基础上,使用命令模式,将客户端与服务端的通信、行为封装为易用的单个的命令,方便上层开发者对业务逻辑的封装、以及对通信框架的使用。 类图: 序列图: 小结 本篇是 VICA 架构设计的第一篇,只简单介绍了 VICA 的内部静态、动态结构,以及核心/基本功能的实现。 本文转自BloodyAngel博客园博客,原文链接:http://www.cnblogs.com/zgynhqf/p/5903907.html,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册