聚合文章列表
67 浏览

MQTT协议通过Apache Apollo代理服务器,使用eclipse paho发送推送消息到android客户端

前言MQTT是轻量级基于代理的发布/订阅的消息传输协议,设计思想是开放、简单、轻量、易于实现。这些特点使它适用于受限环境。关于MQTT的详细介绍推荐这篇文章推荐文章Apacheapollo是一个代理服务器,其是在ActiveMQ基础上发展而来的,可以支持STOMP,AMQP,MQTT,Openwire,SSL,andWebSockets等多种协议。运行apollo需要先配置JAVA_HOMEApollo下载地址paho是eclipse提供一个访问MQTT服务器的一种开源客户端库,其中提供7种不同平台的客户端类库,今天咱们以java客户端为例子演示paho下载地址apollo使用的时候需要配置JAVA_HOME配置成功之后,命令行指定到bin目录下,然后输入apollocreatemybroker(图1)这时候会在bin目录下生成一个mybroker文件夹(图2)在mybroker中进入bin目录(图3)命令行cdmybroker/bin(图4)然后输入apollo-brokerrun(图5)显示成功后打

消息系统 2017-12-19 发布
70 浏览

2018将成为AI的史诗年!这8大趋势你必须要知道

【AI星球(微信ID:ai_xingqiu)】12月18日报道(编译:燈桀)2017年的AI几乎是人人都在讨论的话题,在这一年里,它持续性地引发了强烈的轰动效应。目前,人们在AI的研究上已经取得了不小的进步,大部分人都了解了AI驱动技术和应用的现实情况,这些技术和应用也给他们的生活贴上了数字化标签。然而,AI技术的内部运作过程仍旧不为人所知。而这恰恰是AI将如何在2018年继续引导主流的关键所在,以下是我对此的一些看法。1.人们将不再期待创造人性化AIAI产业将开始远离那些单纯创造类人物理结构的技术。随着AI逐步融入平台技术,人们用于管理个人财务,查找公共记录,评估客户体验和学习新事物的平台获得了技术上的飞速提高,而这种行业转变在未来将变得更加普遍。AI工程师和开发人员将转向构建算法驱动的AI,让它们可以以人为的方式响应,制定决策并与人互动。对我而言,这是AI在2018年将会经历的最有希望的转变之一,因为它让AI看起来更像人类,而不仅仅存在于行为上。2.消费者对AI的看法将被重视AI行业将致力于与购买和订阅其产品和服

程序员 2017-12-18 发布
25 浏览

14. 变更管理(Change Management)

缺乏详细设计文档岗位的变化,早期软件开发是没有产品这一岗位,那时的需求分析是由系统分析员完成的,同时还要做一个详细设计文档,前者需要一定的技术背景,后者更资深,那时的变更反倒很少。进入互联网时代,出现了产品这个岗位,这个岗位总体上参差不齐,年龄偏低,经验少,常常工作3~5年,产品这个岗位再大学里并没有这个专业,也就没有一个标准,所以这个行业的人来自五花八门的专业。任何一个岗位都需要时间来积累经验,一个经验不足的产品人员给出的需求往往存在很多问题,甚至不合理,另一方面企业更注重产品部门,导致产品比较强势,开发只能配合,常常是做到一般才发现需求不合理,接下来就是变更了......这导致了一个问题,非常有经验的开发人员不再指出产品的不合理之处,按照需求开发,出现问题走变更流程,产品害怕需求变更承担责任,即使需求是错误的也要求开发完成,坚持需求没有问题。有很多功能就不了了之缺乏详细设计文档,互联网快速变化,导致一个问题没有时间做详细设计文档,软件的生命周期也短,大家都不愿意为了这么短周期的开发去写设计文档,通常是按照需求直接开发,这也是

程序员 2017-12-18 发布
AD 友情赞助
24 浏览

【干货合集】Java微服务开发指南——从Spring Cloud,Kubernetes到EDAS

如何使用Java构建可伸缩、适应性、复杂性的系统,并且用它来应对日益复杂的市场挑战?本专题将针对目前Java的微服务简要介绍,涉及到微服务的开发、应用伸缩和监控等多个方面。1、Java环境下的微服务本书适用于开发微服务的Java开发人员和架构师。我们在开始介绍微服务架构前,先讲述一些抽象的基本概念。不幸的是,使用新技术并不能神奇地解决分布式系统问题。但是我们通过一些做的很好的公司,它们是如何使用微服务来进行构建的,包括文化、组织结构和市场压力。然后我们深入了解几个Java微服务框架,附带的源代码反馈可以在GitHub上找到。我们会讨论有关部署、集群、故障转移以及Docker和Kubernetes在这些领域是如何解决这些问题。随后我们会重点介绍一些使用Docker,Kubernetes和NetflixOSS的示例,以演示微服务架构。我们这么少的章节无法讨论所有的问题,但不代表除了这些其他的都不重要,比如:配置、日志记录和连续交付。

软件架构 2017-12-18 发布
19 浏览

15. 集成管理

摘要:是指为确保项目各项工作能够有机地协调和配合所展开的综合性和全局性的项目管理工作和过程。它包括项目集成计划的制定,项目集成计划的实施,项目变动的总体控制等。我习惯于将配置管理划为集成管理,我认为配置管理是软件集成的一个环节,你别较真,管理学本就没有规范而言,你的模式成功,你就可以著书立说,你就是权威,你就是标准。是指为确保项目各项工作能够有机地协调和配合所展开的综合性和全局性的项目管理工作和过程。它包括项目集成计划的制定,项目集成计划的实施,项目变动的总体控制等。我习惯于将配置管理划为集成管理,我认为配置管理是软件集成的一个环节,你别较真,管理学本就没有规范而言,你的模式成功,你就可以著书立说,你就是权威,你就是标准。

软件架构 2017-12-18 发布
12 浏览

Netkiller Architect 手札之前言

1.2.作者简介陈景峯(ㄔㄣㄐ丨ㄥㄈㄥ)Nickname:netkiller|Englishname:Neochen|Nipponname:ちんけいほう(音訳)|Koreanname:천징봉|Thailandname:ภูมิภาพภูเขา|Vietnam:TrầnCảnhPhongCallsign:BG7NYT|QTH:ZONECQ24ITU44ShenZhen,China程序猿,攻城狮,挨踢民工,FullStackDeveloper,UNIXlikeEvangelist,业余无线电爱好者(呼号:BG7NYT),户外运动,山地骑行以及摄影与钢琴爱好者。《Netkiller系列手札》的作者

软件架构 2017-12-18 发布
AD 友情赞助
20 浏览

打通架构与业务 领域驱动设计(DDD)加速企业产品持续演进

至顶网服务器频道12月18日新闻消息(文/李祥敬):领域驱动设计(DomainDrivenDesign,DDD)和微服务架构(Microservices)是时下炙手可热的两个技术词汇。微服务可以把一个大型的单体应用程序和服务拆分为多个微服务,从而满足服务等级协议,让应用的架构逻辑更清晰而好用。比如,现在越来越庞大的微信、支付宝这类应用里的服务模块被大量应用,可扩展单个组件而不是整个的应用程序堆栈。随着微服务的火热,领域驱动设计(DDD)的架构思想也越来越被企业和研发团队所重视。一个典型的例子是,几乎每一个在尝试微服务的团队和产品,都从领域驱动设计(DDD)的实践当中受益。而领域驱动设计(DDD)的核心诉求就是能够让业务架构和系统架构形成绑定关系,从而当我们去响应业务变化调整业务架构时,系统架构的改变是随之自发的。近日,2017领域驱动设计中国峰会(2017DDDChinaConference)在北京举行。这次活动由国内领域驱动设计(DDD)思想和实践的领军者——ThoughtWorks的架构咨询师们组织发起,为国内的领

软件架构 2017-12-18 发布
16 浏览

每日科技英文48: MySQL C API简介

今日要点:MySQLCAPI的定义MySQLCAPI包含的内容如何获取MySQLCAPI什么是库(library)的解释windows版外带调试库JDBC,ODBC,ADO,PDO....,每门语言都有各自的数据链接库。如果写服务器的话,肯定是经常使用。如果对于Mysql数据库来说,不管是JDBC,还是ODBC,ADODB,PDO...最终终归会调用MySQLCAPI所以MySQLCAPI是核心,很适合游戏服务器开发.MySQLCAPI的定义:TheMySQLCAPIisaC-basedAPIthatclientapplicationswritteninCcanusetocommunicatewithMySQLServer.ClientprogramsrefertoCAPIheaderfilesatcompiletimeandlinktoaCAPIlibraryfileatlinktime.注:c/c++的库(

MySQL 2017-12-17 发布
19 浏览

MySQL 5.7使用Xtrabackup搭建GTID主从

MySQL版本是5.7.17操作系统是CentOS7MySQL数据目录:/alidata1/mysql在master及slave机器安装xtrabackup软件[root@iz2ze6jo3o3bqbcongnypqzinnobackupex]#rpm-ivhpercona-xtrabackup-24-2.4.9-1.el7.x86_64.rpmwarning:percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm:HeaderV4DSA/

MySQL 2017-12-18 发布
AD 友情赞助
17 浏览

MySQL vs Postgre SQL: 5个你最关注的非技术维度的区别

摘要:简单评价MySQL流行较多,PostgreSQL功能更全面。其主要原因是,MySQL很早的时候,就支持主从复制,在互联网起步(2000年后第一次互联网大潮)的时候,被广泛使用。PostgreSQL到2010年左右才首次支持主从复制,无法作为互联网类应用的核心,错过了较好的发展机会,在非互联网领域,由于在商业支持以及数据库特性支持方面,无法与商业数据库如Oracle等较量,PostgreSQL始终未能形成潮流,到Greenplum出现,才在OLAP数据仓库领域得到广泛使用。简单评价MySQL流行较多,PostgreSQL功能更全面。其主要原因是,MySQL很早的时候,就支持主从复制,在互联网起步(2000年后第一次互联网大潮)的时候,被广泛使用。PostgreSQL到2010年左右才首次支持主从复制,无法作为互联网类应用的核心,错过了较好的发展机会,在非互联网领域,由于在商业支持以及数据库特性支持方面,无法与商业数据库如Oracle等较量,PostgreSQL始终未能形成潮流,到Greenplum出现,才在OLAP数据仓库领域得到广泛使用

MySQL 2017-12-18 发布
22 浏览

Lerna+webpack+juction来拆分组件库为多个单独的npm包

前不久发布了vc-popup组件集,但是那时候完全只是展示没有如何使用的教程,因为当时急于发布出来,实在不妥,抱歉~既然是想自己东西可以让别人方便使用,那就是打包成npm的包咯,但是考虑vc-popup仅仅是popup的组件集,不是完整的组件库,所以很多时候用户仅仅想使用某个popup,那么其他popup也打包进去,就浪费带宽了,所以需要一个每个popup单独发布到npm上去,但是把依赖分开的时候之后开发就是带来不便,比如一个包更新了,需要在另一个手动更新,为了解决这个不便,就是Lerna登场的时候了,用来方便开发和管理多个package~但是自己实践的过程当中遇到一些问题和还有踩过一些坑,所以在这里记录,不过在开始之前,先提一下vc-popup的更新12-08:imgView支持懒加载图片,从加载状态的预设图片到加载完成的src同步变化~如果大家对我扣细节的态度认可的话,记得点star安装Lerna目前知道3种办法,如果在使用vscode

Vue.js 2017-12-18 发布
18 浏览

vue.js element-ui validate中代码不执行填坑

先说结论在自定义验证里面每一个判断都要有callback(),就是要保证callback()一定会执行到因为要验证数字,参考了官网参考代码如下,发现有如下图bug,当输入为以数字开头包含字符串的内容时,验证不会报错,因为业务逻辑也不相符,随改写代码varcheckAge=(rule,value,callback)=>{if(!value){returncallback(newError('年龄不能为空'));}setTimeout(()=>{if(!Number.isInteger(value)){callback(newError('请输入数字值'));}else{if(value<18){callback(newError('必须年满18岁'));}else{callback();}

Vue.js 2017-12-19 发布
AD 友情赞助
12 浏览

字符串模板浅析

虽然现在有各种前端框架来提高开发效率,但是在某些情况下,原生JavaScript实现的组件也是不可或缺的。例如在我们的项目中,需要给业务方提供一个通用的支付组件,但是业务方使用的技术栈可能是Vue、React等,甚至是原生的JavaScript。那么为了实现通用性,同时保证组件的可维护性,实现一个原生JavaScript的组件也就显得很有必要了。下面左图为我们的Panel组件的大概样子,右图则为我们项目的大概目录结构:我们将一个组件拆分为.html、.js、.css三种文件,例如Panel组件,包含panel.html、panel.js、panel.css三个文件,这样可以将视图、逻辑和样式拆解开来便于维护。为了提升组件灵活性,我们Panel中的标题,button的文案,以及中间item的个数、内容等均由配置数据来控制,这样,我们就可以根据配置数据动态渲染组件。这个过程中,为了使数据、事件流向更为清晰,参考Vue的设计,我们引入了数据处理中心datacenter的概念,组件需要

JavaScript 2017-12-18 发布
21 浏览

Web前端体系的脉络结构(HTML篇)

Web前端技术由html、css和javascript三大部分构成,是一个庞大而复杂的技术体系,其复杂程度不低于任何一门后端语言。而我们在学习它的时候往往是先从某一个点切入,然后不断地接触和学习新的知识点,因此对于初学者很难理清楚整个体系的脉络结构。1、BOMBOM是BrowserObjectModel的缩写,即浏览器对象模型,当一个浏览器页面初始化时,会在内存创建一个全局的对象,用以描述当前窗口的属性和状态,这个全局对象被称为浏览器对象模型,即BOM。BOM的核心对象就是window,window对象也是BOM的顶级对象,其中包含了浏览器的6个核心模块:document-即文档对象,渲染引擎在解析HTML代码时,会为每一个元素生成对应的DOM对象,由于元素之间有层级关系,因此整个HTML代码解析完以后,会生成一个由不同节点组成的树形结构,俗称DOM树,document用于描述DOM树的状态和属性,并提供了很多操作DOM的API。frames-HTML子框架,即在浏览器里嵌入另一个窗口,父框架和子

HTML 2017-12-18 发布
15 浏览

12 pt 的字,到底是多大?

這幾天筆者加購了一台配備高解析螢幕的筆電,由於平時使用的並不是Apple系統,且筆電算算也有六年沒換,雖說蹭別人的MacBookPro玩過幾次,以高解析螢幕為主的使用經驗,在此之前還真沒有過。筆電來了,自然要把附帶的Windows10縮一縮,裝上慣用的Ubuntu才是正辦。過程中,又碰上老問題:字太小。這問題快十年前就碰過,大約知道是DPI設定不正確。雖說本行不是幹這個,但為了顧眼睛還是得處理一下,還可寫篇文章談談不專業的豆知識交差。先從字型大小說起。字型尺寸當然是從電腦出現之前就存在,pt是point縮寫,雖在歷史上幾經變遷,最終在數位出版時代訂立desktoppublishingpoint,長度為1/72英寸,大約0.353公釐。說到這似乎已說完了:那麼,12pt字,當然就是12/72,也就是1/6英寸(又稱1pica),會有什麼問題呢?然而對電腦使用者而言,卻往往不是如此。我們知道12pt的字,用印表機印出時,大小是固定的。但在一般解析度螢幕上,字比較大,而在

CSS 2017-12-18 发布
21 浏览

一步步实现nest粒子特效

画出一个弹射的小球很简单,那怎么用多个小球实现nest.js这样的效果呢。这样的特效肯定不能用Dom直接做,太耗费性能,也做不出来,这时就显露出canvas的强大之处了。同样的,用canvas生成多个弹来弹去的小球。首先不要管鼠标如何吸附这些小圆点,只做小球之间的连线。在每次绘制小球之前,判断一下它和之前的小球的距离是不是小于极限距离,小于就以它俩为端点绘制一条线。代码如下,思路都写在注释里:consttheCanvas=document.getElementById('theCanvas'),ctx=theCanvas.getContext('2d'),mix=6000;//会产生连线的极限距离的平方//将canvas铺满浏览器letcanvas_width=theCanvas.width=window.innerWidth||document.documentElement.clientWidth||document.body.cli

HTML5 2017-12-18 发布
13 浏览

WPF水珠效果按钮组

效果图相关知识这部分基本就是废话,网上都能找到,我只不过是整理了以下.建议先不看,用到的时候可以回来看看贝塞尔曲线先来看两组图,有助于理解什么是贝塞尔曲线(图片取自维基百科,参考链接1)二次贝塞尔曲线:P0是起点,P2是终点,P1是控制点三次贝塞尔曲线:P0是起点,P2是终点,P1是控制点1,P2是控制点2依次连接所有点,组成线段t是比例,在0-1之间,就是每条线段的长度都是1贝塞尔曲线就是最里层的线段在t位置的点所组成的路径三次贝塞尔曲线公式:B(t)=(1-t)^3*P0+3(1-t)^2*t*P1+3(1-t)*t^2*P2+t^3*P3,0<=t<=1B(t)代表曲线上任意点,P0,1,2,3分别代表决定曲线的4个点,t代表曲线长度为1的任意取值其他知识没接触过贝塞尔曲线的话,可能得花些时间整理下,其他的知识就比较简单了直角三角形,角A的对边a,临边b,斜边c三角函数:sinA=a/ccosA=b/c勾股定理:c^2=a^2+b^2概括介绍这个

.Net 2017-12-18 发布
21 浏览

ASP.NET没有魔法——ASP.NET MVC使用Oauth2.0实现身份验证

ASP.NET没有魔法——ASP.NETMVC使用Oauth2.0实现身份验证随着软件的不断发展,出现了更多的身份验证使用场景,除了典型的服务器与客户端之间的身份验证外还有,如服务与服务之间的(如微服务架构)、服务器与多种客户端的(如PC、移动、Web等),甚至还有需要以服务的形式开放给第三方的,身份验证这一功能已经演化为一个服务,很多大型应用中都有自己的身份验证服务器甚至集群,所以普通的身份验证方式已经不能满足需求。在.Net领域中也有一些开源的身份验证服务器组件,如IdentityServer(http://identityserver.io/),但是这些组件对于一些规模较小的项目来说可能会感觉到比较庞大,增加了学习和维护成本,所以本章将对OAuth以及如何使用OAuth实现身份验证模式进行介绍。本章的主要内容有:●OAuth2.0简介●在.Net中使用OAuth实现基于授权码模式的身份验证●实现基于AccessToken的身份验证●加入RefreshToken支持

.Net 2014-07-16 发布
19 浏览

C#的抽象类别

抽象类,有3个特点:第1个,不能被实例化。第2个,类中的抽象方法在继承的子类中必须重写。第3个,类一旦有抽象方法出现,那这个类必须定义为抽象类。现实开发中,发现有共同的代码,可以把这些共同的代码放在一个抽象类中。举个例子,计算四边形的周长。矩形,长方形,正方形:classRectangle{privatedouble_A;publicdoubleA{get{return_A;}set{_A=value;}}privatedouble_B;publicdoubleB{get{return_B;}set{_B=value;}}publicRectangle()

.Net 2017-12-18 发布
18 浏览

C#设计模式之二十策略模式(Stragety Pattern)【行为型】

C#设计模式之二十策略模式(StragetyPattern)【行为型】一、引言今天我们开始讲“行为型”设计模式的第七个模式,该模式是【策略模式】,英文名称是:StragetyPattern。在现实生活中,策略模式的例子也非常常见,例如,在一个公司中,会有各种工作人员,比如:有的是普通员工,有的是软件架构师,有的是部门经理,当然也会有公司的CEO。这些工作人员负责的工作不同,担负的责任不同,自然得到的报酬也就不同了。每种工作人员都有自己的工资,但是每个工种的工作人员的工资的计算方法又是不一样的。如果所有人的工资都一样,肯定会天下大乱的。如果不采用策略模式来实现这个需求的话,我们可能会这样来做,我们会定义一个工资类,该类有一个属性来标识工作人员的类型,并且有一个计算工资的CalculateSalary()方法,在该方法体内需要对工作人员类型进行判断,通过if-else语句来针对不同的工作人员类型来计算其所得工资。这样的实现确实可以解决这个场景,但是这样的设计不利于扩展,如果系统后期需要增加一种新的工种时,此时不得不回去修改Calculate

.Net 2017-12-18 发布
AD 友情赞助