聚合文章列表
10 浏览

Spring Boot与RabbitMQ结合

背景何为延迟队列?顾名思义,延迟队列就是进入该队列的消息会被延迟消费的队列。而一般的队列,消息一旦入队了之后就会被消费者马上消费。延迟队列能做什么?延迟队列多用于需要延迟工作的场景。最常见的是以下两种场景:1.延迟消费。比如:用户生成订单之后,需要过一段时间校验订单的支付状态,如果订单仍未支付则需要及时地关闭订单。用户注册成功之后,需要过一段时间比如一周后校验用户的使用情况,如果发现用户活跃度较低,则发送邮件或者短信来提醒用户使用。2.延迟重试。比如消费者从队列里消费消息时失败了,但是想要延迟一段时间后自动重试。如果不使用延迟队列,那么我们只能通过一个轮询扫描程序去完成。这种方案既不优雅,也不方便做成统一的服务便于开发人员使用。但是使用延迟队列的话,我们就可以轻而易举地完成。如何实现?别急,在下文中,我们将详细介绍如何利用SpringBoot加RabbitMQ来实现延迟队列。实现思路在介绍具体的实现思路之前,我们先来介绍一下RabbitMQ的两个特性,一个是Time-To-LiveExtens

消息系统 2017-11-28 发布
9 浏览

为什么要选择Apache Pulsar(二)

这是介绍ApachePulsar关键特性系列文章的第二篇。Pulsar是由Yahoo开发并开源的下一代发布订阅消息系统。在第一篇文章里,我们介绍了Pulsar对消息模型的灵活支持、多租户、多地域复制和持久性。在这一篇文章里,我们将继续介绍Pulsar的IO隔离机制、伸缩性、安全模型、多语言API和易操作性。读写IO隔离在大多数消息系统里,消费者的速度延迟会导致性能下降。同一个主题的消费者,如果其中一个出现速度延迟,就会影响到其他速度更快的消费者。这是因为慢消费者强制要求消息系统从存储里获取数据,导致IO出现抖动,降低吞吐量。那些需要将数据先加载到内存里的消费者就会受到影响。导致这一问题的原因主要是读操作和写操作共享同一个执行路径。Pulsar通过使用BookKeeper作为存储系统解决了这一问题。有了BookKeeper,Pulsar就可以为读操作和写操作提供不同的执行路径,实现IO隔离。常规的读操作直接由Pulsarbroker处理,写操作使用BookKeeper的预写式日志(WAL),Catch-up读

消息系统 2017-11-28 发布
12 浏览

Jboot v1.1.0 发布,小步快跑,唯快不破

Jbootv1.1.0更新内容如下:新增:mq的队列模式(之前只有广播)新增:redis和rabbitmq对队列的支持。新增:zbus的支持,暂时只支持zbus的mq。新增:jboot的相关demos(持续完善中)。修复:代码生成器生成的代码tableName注解错误的问题。(感谢@Rlax提交代码)修复:自定义motanregistry但maven打包没有加入spi配置信息导致无法发现的bug。优化:重构hystrix和rpc模块,允许用户自己控制rpc服务抛出的异常是否抛出到Controller,方便开发调试。其他:更新依赖、完善文档希望用的开心。另:Jboot正在参加开源中国的#2017年度最受欢迎中国开源软件评选#活动,请投Jboot一票。活动传送门:http://www.oschina.net/project/top_cn_2017?sort=1

消息系统 2017-11-28 发布
AD 友情赞助
15 浏览

程序员必备的11个辅助开发的软件神器

程序员必备简捷开发辅助工具总结写在前面:工欲善其事必先利其器,拥有简捷的开发辅助工具能大大提高我们程序猿的开发效率。Melo刚到学校就给大家总结了一些常用的辅助开发的工具,希望大家能喜欢,闲话不多说,马上开始~!零:Notepad++Notepad++程序员必备的文本编辑器,软件小巧高效,支持27种编程语言,通吃C,C++,Java,C#,XML,HTML,PHP,JS等,推荐各位下载使用。Notepad++可完美地取代微软的记事本。相信这是每个程序员必备的工具,神器不解释!下载地址及使用说明:Notepad++中文版下载一:XMLMarker(xml查看编辑工具)XMLMarker是国外的一款非常实用的xml查看编辑工具。软件功能强大,纯文本调试输出和日志文件,你可以有效增加修改你的程序才能产生XML格式他们的作用。你也可以使用XML标记的图形功能,以现场隐藏的趋势,并更快地解决你的错误。更多的功能包括表格排序,语法高亮编辑器和自动缩进,经常编辑XML文件的用户可以下载本软件使用。下载地址及使用说明:XML

程序员 2017-11-28 发布
11 浏览

初级程序员如何进阶

公众账号原文https://mp.weixin.qq.com/s?__biz=MzIwODk1NTYzOQ==&mid=2247483928&idx=1&sn=74c08a20b9ff9961c98a8a215d8e5458&chksm=977a7380a00dfa96bfb50760e4bc0958f508942765280c67cf6958d4595f3a1a4056bbc954ff#rd

程序员 2017-11-28 发布
14 浏览

微服务架构之规范

cn.liuyiyou.springclouduser-service-feigh-api0.0.1-SNAPSHOT

软件架构 2017-11-28 发布
AD 友情赞助
13 浏览

面向服务的开发:Rafael Schloming关于构建微服务的经验分享

SanFranciscoQCon大会上,RafaelSchloming提出了“面向服务的开发”,他认为,想迁移到微服务的组织必须要寻求一种方法来打破单一的开发过程,而不仅仅是试图打破传统的系统架构。将新成立的微服务团队看作是内部的“衍生品(spinoffs)”,他们具有团队边界,并且鼓励他们自给自足和自我管理,除此之外,这些团队必须得到有效工具的支持,以便在生产中调试、部署和监测服务。Schloming是Datawire的CTO和首席架构师,演讲开始时,他问了听众一个问题,将一个庞大的系统迁移到基于微服务的应用程序时,他们遇到的第一个难题是什么。常见的回答有:“如何分解一个大型系统?”、“如何用微服务构建我的应用程序?”以及“我需要怎么样的基础架构才能使我在微服务中受益?”。根据他2013年在Datawire开发微服务应用程序的经验,Schloming说,最重要的问题也是通常最容易被忽略的问题是“如何分解一个大型系统?”,因为开发过程对于建立和保持开发速度来说至关重要。在开发应用程序或服务时,应用程序的交付生命周期可以划分为

软件架构 2017-11-28 发布
15 浏览

这些MySQL配置“修改条令”,你有必要熟识默记!

大多数开发者可能不太会关注MySQL的配置,毕竟在基本配置没有问题的情况下,把更多的精力放在schema设计、索引优化和SQL优化上,是非常务实的策略。这时,如果再花力气去优化配置项,获得的收益通常都比较小。更多的时候,基于安全因素的考量,普通开发者很少能够接触到生产环境的MySQL配置。正是这样,导致开发者(包括我)对MySQL的配置不甚了解,希望本文能帮你更好地了解MySQL配置。如果让你在某种环境上安装配置MySQL,你会怎么做?安装后,直接copy修改示例配置文件,应该是大多数人的做法,但强烈建议不要那么做。首先,示例配置文件有非常多注释掉的配置项,它可能会诱使你打开一个你并不了解的配置,这些注释还不一定准确。其次,MySQL的一些配置对于现代化的硬件和工作负载来说,有点过时了。MySQL有非常多的配置项可以修改,但大多数情况下,你都不应该随便修改它,因为错误或者没用的配置导致的潜在风险非常大,而且还很难定位问题。确保基本配置正确,然后小心诊断问题,确认问题恰好可以通过某个配置项解决,紧接着再修改这个配置吧。其实,创建一个好的

MySQL 2017-11-28 发布
18 浏览

基于vue-resource的网络层封装

好的架构封装,不仅可以加快开发的速度,还能使得逻辑更加简明,不用关心内部的实现。在此介绍一下vue-resource基于es6出来的神器promise的封装处理。首先抽出一个baseHttp.js,用于处理vue-resource的方法调用importVuefrom'vue'letvue=newVue()//GET请求,将url和请求参数传入,通过Promise,将成功和失败的数据派发出去exportfunctiongetHttp(url,params){returnnewPromise((resolve,reject)=>{vue.$http({url:url,params:params,method:'GET'}).then(response=>{resolve(response.body)},response=>{reject(response.bodyText)})})}//POST请求,将url,请求参数和body传入,通过Promise,将成功和失败的数据派发出去exportfun

JavaScript 2017-11-28 发布
AD 友情赞助
12 浏览

javascript 生成简单等差数列

题目很简单,最简单的办法就是使用for循环letarr=[]for(leti=0;i分割>mapArray(b-a+1).join('').split('').map((e,i)=>a+i)//转字符串>分割>mapArray(b-a+1).toString().split(',').map((e,i)=>a+i)利用Array.from方法实现://空数组转真数组Array.from(Array(b-a+1)).map((e,i)=>a+i)//类似数组的对象转数组Array.from({length:b-a+1}).map((e,i)=>a+i)Array.fro

JavaScript 2017-11-28 发布
17 浏览

关于JavaScript对象,你所不知道的事(一)- 先谈对象

在开始正题之前,让我们先凭直觉回忆一下我们对JavaScript对象的一般认识:对象是一个引用类型值;创建对象的方式有两种形式:“字面量形式”与“构造函数形式”;对象的属性可以随时修改,且一旦改动,所有引用对象的地方,其属性值均会被改变(这也是引用类型的特点);对象可以通过原型链实现继承;以上这些应该是JavaScript开发者对“对象”这一概念最基本的认识。但实际上,JavaScript给予了开发者以更细致颗粒度操作/设置对象及其属性的能力,这些能力是什么?如何运用?这就是接下来我们要谈到的话题。对象与属性让我们保持耐心,再梳理一下对象与属性的关系:对象是属性的集合,当对象的属性是函数时,我们将其称之为“方法”。我们不妨建立这样的心智模型:对象是一只蓝色的(这里的颜色特别重要,因为实际上,变量本身也是一只大章鱼,但她的身体却是红色的:octopus:)大章鱼,章鱼的每一只触手都握着一个属性的内存地址卡片,当要读取对象中的属性时,章鱼的触手会随着卡片上的地址拿到相应的数据值,并返还给用户(就是你)。接下来,让我们从对象

JavaScript 2017-11-28 发布
12 浏览

vue-loader 源码解析系列之 整体分析

vue-loaderisaloaderforWebpackthatcantransformVuecomponentswritteninthefollowingformatintoaplainJavaScriptmodule简单来说就是:将.vue文件变成.bundle.js,然后放入浏览器运行。观察输入输出输入测试是最好的文档,所以我们从测试用例开始分析,找到test/fixture/basic.vue,内容如下:输出通过运行测试之后,可以得到以下输出,但是由于文件巨大,笔者只抽出部分开始分析,如下/*2*//***/(function

JavaScript 2017-11-28 发布
AD 友情赞助
13 浏览

NPM — JavaScript 的包管理器

本文主要介绍npm的常用命令,以及如何发布一些常用的js模块化代码到npm上面方便日后的使用,和举例如何把一个vue组件打包发布到npm到最后下载到本地使用的过程。npm(NodePackageManager)是node的默认模块管理器,一个命令行下的软件,用来安装和管理node模块,同时也可以管理其他开放式的js模块代码。npm有一个好处是除了下载需要的模块外还会帮我们解决依赖关系,同时下载所依赖的模块。NPM——JavaScript的包管理器npmhelpaccess,adduser,bin,bugs,c,cache,completion,config,ddp,dedupe,deprecate,dist-tag,docs,doctor,edit,explore,get,help,help-search,i,init,install,install-test,it,link,list,ln,login,logout,ls,outdated,owner,pack,pin

JavaScript 2017-11-28 发布
16 浏览

layui 2.2.3 发布,接地气的前端 UI 框架

layui2.2.3发布了,本次更新较小,日志如下:新增upload模块的number参数,用于设定同时允许上传的文件数量(默认不限制)新增util模块的util.toDateString(time,format)方法,用于转化时间戳或日期对象为日期格式字符新增util模块的util.digit(num,length)方法,用于对数字前置补零,如:6==>06修复table特殊情况出现的:'cssRules'ofundefined报错问题修复table无数据时,点击列头的checkbox和排序出现的报错问题修复laydate的set方法报错问题恢复form的lay-filter在layui2.2.0之前的验证规则,即:值为空也会触发内置的验证规则。选填项由开发者通过自定义验证来把控。覆盖升级后注意清除浏览器缓存

CSS 2017-11-28 发布
16 浏览

前端注释可怎么写呀? (๑•̀ㅂ•́)و✧

//js注释单行注释://多行注释:/**/段落注释模块注释方法注释:/**这里是一段注释*这里的注释可以连写多行*/how与why好的代码应该具备很好的可读性,但是代码可以描述how,但它不能解释why。注释应该写什么呢?很明显的是,注释首要功能是阐述为什么写这段代码,也就是why,需要阐述的内容有阐述这个模块的直接缘由,这个模块的主要作用,实现了什么,如果你的出入参数不明确,应该详细的解释参数的类型以及含义。其次,你的注释应该对晦涩难懂的代码部分,依赖的其他语法和模块的部分进行特殊说明,如果你的代码有特定的使用场景也需要特别说明,比如说依赖于jq1.21以上的版本。eg1:以下注释写明了方法的作用,适用的场景,参数的类型、字段以及含义,隶属父类/***查询订单支付确认页会用到*@param{number}productId商品id*@memberoforderController*/eg2:主要阐述了方法作用,使用建议,适用场景;//更新用户存储信息,建议存储到cookie一份,用于网关的

CSS 2012-10-17 发布
17 浏览

ELSE 技术周刊(2017.11.27期)

文章主要介绍了阿里的PB级大规模文件分发系统“蜻蜓”,通过使用P2P技术同时结合智能压缩、智能流控等多种创新技术,解决大规模文件下载以及跨网络隔离等场景下各种文件分发难题,大幅提高数据预热、大规模容器镜像分发等业务能力。而且已开源出来,随着容器技术发展,大文件分发一直是个重要的问题,所以是一件值得研究的技术。前端开发本文重点介绍适用于现代React软件开发的整洁代码实践,以及使用ES5+的语法糖带来的一些变化。现在jQuery似乎成为老套的代名词,开发者更喜欢谈论TypeScript、ES2015+、React、Vue等新框架或新概念。作者在本文中讨论了为何现在还是会继续使用jQuery,以及如何编写可扩展的jQuery代码、如何将jQuery集成到其他框架等。当Web自信满满,步入移动时代之时,它还没有做好充足的准备。(作者是PWA在国内的布道者,不过新一轮洗牌说的着实有点夸张,个人感觉PWA只是一个选择,移动端WEB应用的开发会被最开始流行的浏览器版本所羁绊,市场永远对技术的选择有着最终决定

HTML5 2017-11-28 发布
15 浏览

Jenkins部署.net自动化构建

1、环境部署:windowsserver2008R2环境2、相关软件SVN(源代码管理器:jenkins通过插件从源代码管理器下载代码)Jenkins(主角)地址:http://ftp.yz.yamagata-u.ac.jp/pub/misc/jenkins/windows-stable/jenkins-2.19.1.zip;JDK1.7以上.netframework4.0等等最好安装visualstudio软件3、Jenkins安装1、启动服务双击后一路确认的安装,jenkins安装后,然后到管理工具->服务中有jenkins对应的服务,启动即可(注意权限和端口限制);注意:默认jenkins会安装到系统的服务中的,但是如果8080端口被占用了,那么需要手动启动服务,也就是说系统的系统无法启动了。cmd.exe后输入命令:cdC:\ProgramFiles(x86)\Jenkins(为安装路径)java-jarjenkins.war--ajp13Port=-1--httpP

.Net 2017-11-28 发布
15 浏览

程序员陈二的中年危机(一)

陈二是一个二线城市的互联网底层从业者,每天的工作就是对着电脑写一些乌七八糟的程序,在30岁生日过了3天的时候开始有了中年危机感。陈二的大学就读于这个南方水乡的一所普通本科院校最普通的专业,大学玩了四年游戏,专业课基本全都挂掉了,什么也没有学会。大四找工作,投递各种简历都石沉大海之后,毅然决然的问爹娘要了5000块钱报了一个IT的辅导班,这个辅导班对于陈二来说最大的帮助便是介绍了一份计算机编程相关的工作,那个时候只要是辅导班的学生,都不需要技术面试,HR聊聊天,觉得人不错就可以去上班了。就这样,在那个潮湿闷热的夏天,完成了大学四年的计算机专业后,陈二以这样的姿态进入了一家国企的软件研究所,成为了一名程序员。对于陈二种了一辈子地的爹娘来讲,儿子大学毕业能够凭自己的本事找到一份工作已经心满意足了,村子里好几个大学生毕业后找不到工作在家呆三个月,最后还要老子托关系送礼在县城谋一个差事。研究所里的工作很清闲自在,做的东西都是内部使用的,就算做不完也完全没有问责机制,好几个项目往往都是不了了之,国家经费找个由头花出去便是。陈二在这样的环境中做

程序员 2017-12-19 发布
11 浏览

洛斯阿拉莫斯国家实验室:超算在Pi的帮助下变得更实惠

原标题:洛斯阿拉莫斯国家实验室:超算在Pi的帮助下变得更实惠超级计算机通常是巨大的和昂贵的,并且需要大量的电力来运行。洛斯阿拉莫斯国家实验室转向无处不在的树莓派和澳大利亚的BitScope公司,寻找一种更便宜的方法,让开发人员建立和测试高性能电脑系统软件。洛斯阿拉莫斯国家实验室已经是世界十大超级计算机之一Trinity的所在地,但实验室需要一个相对便宜和可扩展的方式来适应那些无法获得大型系统进行研究和开发的开发人员和研究人员在系统软件中。洛斯阿拉莫斯国家实验室的GaryGlider表示:“RaspberryPi模块让开发人员能够编写软件,并使其可靠工作,而不需要一个相同尺寸的专用测试平台,这种专用测试平台将花费2.5亿美元,使用25兆瓦电力。BitScope解决方案是在3个月内设计和构建的,具有由5个BitScope机架安装模块组成的750个节点。每个Pi使用一个64位1.2GHz四核ARM处理器,每个模块中的150个微型电脑组合起来提供高达3000个可用内核作为开发人员和研究人员的并行测试平台,以便在Trinity这样的大

程序员 2017-11-28 发布
13 浏览

《译文:RabbitMQ 消费者确认和发布者确认》

《译文:RabbitMQ消费者确认和发布者确认》原文链接译者:flystarfly介绍使用消息代理(如RabbitMQ)的系统按定义分发。由于发送的协议方法(消息)不能保证到达对方或被成功处理,所以发布者和消费者都需要一个交付和处理确认的机制。RabbitMQ支持的一些消息协议提供了这样的功能。本指南涵盖AMQP0-9-1中的特性,但其他协议(STOMP,MQTT等)中的思路大致相同。从消费者(consumers)投递rabbitmq代理(broker)的处理确认被认为是AMQP0-9-1协议中的确认;rabbitmq代理(broker)对发布者(publishers)的确认被称作发布者确认(publisherconfirms)(消费者)投递确认当RabbitMQ向消费者发送消息时,它需要知道如何思考才能成功地发送消息。怎么样是最佳的逻辑需要取决于系统。因此,这主要是一个应用型决策。在AMQP0-9-1协议中,这个决策是由当消费者使用basic.consume注册,或者使用basic.get按需提取消息等这

消息系统 2017-11-27 发布
AD 友情赞助