五.Spring与RabbitMQ集成--HelloWorld
五.Spring与RabbitMQ集成--HelloWorldspring对RabbitMQ做了很好的集成,我们称之为springAMQP,其官方文档写得十分详尽,文档地址:https://docs.spring.io/spring-amqp/reference/htmlsingle/。由于英文水平一般,看得是十分吃力,最后拉到了SampleApplications这一章,这一章主要是通过例子来讲解spring-AMQP的使用方法。通过例子我们可以更加快速的了解spring对RabbitMQ的封装。1.HelloWorld同步接收消息例子helloworld的例子展示了同步和异步的消息接收方式,可以从https://github.com/spring-projects/spring-amqp-samples这边去下载例子。首先,新建一个配置文件类,该类以@Configuration标注,说明它是一个配置文件类,相当于替代.xml文件以annotation的形式管理bean.如下所示。packageorg.springf
Kafka详细的设计和生态系统
本译文自Jean-PaulAzar在https://dzone.com发表的KafkaDetailedDesignandEcosystem,文中版权,图像代码的数据均归作者所有。为了本土化,翻译内容略作修改。Kafka生态系统-Kafka核心,Kafka流,Kafka连接,KafkaREST代理和模式注册Kafka的核心是经纪人,主题,日志,分区和集群。核心也包括像MirrorMaker这样的相关工具。前面提到的是Kafka,因为它存在于Apache中。Kafka生态系统由KafkaCore,KafkaStreams,KafkaConnect,KafkaRESTProxy和SchemaRegistry组成。大部分Kafka生态系统的其他部分来自Confluent,不属于Apache。KafkaStream是StreamsAPI,用于转换、汇总和处理来自流的记录并生成衍生流。KafkaConnect是API连接器,用于创建可重用的生产者和消费者(例如,来自DynamoDB的更改流)。Kafka
消息中间件NMQ
转自:http://www.cnblogs.com/lushilin/p/6209976.html(鲁仕林)1.Whatisnmq?nmq=newmessagequeue;一个通用消息队列系统为在线服务设计什么是消息队列?问什么需要?有哪些功能?消息队列的本质:1.多个不同的应用之间实现相互通信的一种异步传输模式2.异步3.解耦业界有哪些比较好的mq?yahooYMB、twitterKestrel、amazonSQS、apachekafka百度的nmq和bigpipe那么为什么会有这么多的实现呢?影响设计的关键需求:1.数据安全性2.传输实时性3.时序需求4.吞吐需求5.消费方形态6.消息关联形态现在介绍一下百度的nmq(看一下nmq的设计考量):1.项目起源于大社区2.重复开发、分散运维;极大的人力浪费;并发+时序的难点,让rd头疼核心+单点的运维,让op蛋疼3.架构的发展,让老的系统不在适合4.业务的发展,对性能、可扩展性有了更高
程序员独特感觉——别人觉得你收入高!易赛程序员:经常的事!
最近,中兴通讯42岁程序员跳楼事件引起广泛关注,虽然该事件始末逐渐演变为一场“罗生门”,但关于“中年程序员焦虑”的话题并未止息。程序员,到底是怎样一群人,薪酬真有那么高?压力真有那么大?在现在这个互联网社会,这些是值得研究的问题。但是,在了解了专门做生活充值缴费API接口的易赛程序员之后,他们说,很多人一听到我们是程序员,第一反应就是收入高!相信在现在这个时代,“别人觉得你收入高”应该是程序员普遍会有的独特感觉。那么,程序员的收入相对于社会上大部分的职业,收入是不是真的比较高?12月20日,阿里云云栖社区发布了《云栖社区2017中国开发者调查报告》,该调查为期两个月,有近1.5万名开发者参与,其中7032名开发者完成全部问卷,最终汇集成一份121页的报告,为中国开发者绘制了一幅“自画像”。男性、高收入、不修边幅……这是外界对开发者的普遍认知;爱学习、用苹果、穿着优衣库还着房贷……这是开发者们对自己的描述。以这份报告为蓝本,再去了解更多程序员,有了以下对程序员的几点认识。关于形象:衣服好像都是乱穿的张华(化名)在杭州
2017年终巨献阿里、腾讯最新Java程序员面试题,准备好进BAT了吗
Java基础进程和线程的区别;Java的并发、多线程、线程模型;什么是线程池,如何使用?数据一致性如何保证;Synchronized关键字,类锁,方法锁,重入锁;Java中实现多态的机制是什么;如何将一个Java对象序列化到文件里;说说你对Java反射的理解;同步的方法;多进程开发以及多进程应用场景;在Java中wait和seelp方法的不同;synchronized和volatile关键字的作用;服务器只提供数据接收接口,在多线程或多进程条件下,如何保证数据的有序到达;抽象类与接口的区别;应用场景;抽象类是否可以没有方法和属性;静态属性和静态方法是否可以被继承?是否可以被重写?以及原因?修改对象A的equals方法的签名,那么使用HashMap存放这个对象实例的时候,会调用哪个equals方法;说说你对泛型的了解;Java的异常体系;如何控制某个方法允许并发访问线程的个数;动态代理的区别,什么场景使用;Dex加载过程和优化方式;Jvm和Gc机制;常用的设计模
工作流引擎可以直接对接程序员的思维模式
anycmd开源权限引擎准备再次创新,将用不绕弯的方式实现个开源工作流引擎,目的是以直接的方式对接程序员的思维方式,信仰这种思维模式是未来的基本技能,未来的人们应具备基本的程序思维。最终出来后会是一个可视化的编程工具,支持n维视图。这个工作流引擎首先会应用在权限引擎上解决数据级权限问题。workitemSet是什么所谓workitemSet节点:一个workitem描述的是一件事情,这件事情要么是obj.Property1=value1(读写字段),要么是SystemRoot.WfEngine.CallProcess(context)(调用方法),和程序员书写的“读写对象的字段、调用对象的方法”是一样一样的,只不过workitem是数据记录形式的(对于CLR、JVM来说读写字段调用方法也是记录)。概念所有元素都和编程语言有严格对应,但不需要对应编程语言全部的东西,只对应运行时相关的:变量声明和读写、分支、过程调用、传参、栈、闭包等基本结构,给出设计器,业务逻辑通过组合这些基础设施实现。它是内存中的工作流引擎流程执行上
迷你书: 架构师特刊:Apache Kylin实践(第二期)
卷首语作者:韩卿(LukeHan)ApacheKylin自2014年10月开源以来,已经走入了第四个年头,在过去的几年中,Kylin项目和社区的发展,离不开每一位朋友的贡献,离不开每一个用户的信任、支持和反馈,甚至更多是贡献。今天非常高兴看到InfoQ即将出版第二本ApacheKylin的电子书,很荣幸能够在此分享一些这一年的感悟。这一年,是ApacheKylin高速发展的一年,2017年4月30日,ApacheKylin的下一代v2.0正式发布,这是Kylin自诞生以来最重要的版本之一,引入了SparkCubing,雪花模型支持,支持云存储框架等,为Kylin的后续发展打下了坚实的基础。也使得Kylin的应用面不断扩开,特别是Spark的引入,大大加快了整个项目的演进过程。8月17日,v2.1发布,修复了超过100个Bug,并扩大了数据输入源及SQL的支持,从而使得更多的数据可以接入Kylin以加速分析过程。11月3日,最新的v2.2发布,在稳定性、安全性等方面做了重大改进。这几次release中,越来越多的贡献者踊跃出来,社区
Mysql中的条件语句if、case
Mysql中的条件语句在我们对数据进行转换的时候比较有用,这样就不需要创建中转表。IF函数IF(expr1,expr2,expr3)如果expr1是TRUE(expr1<>0andexpr1<>NULL),则IF()的返回值为expr2;否则返回值则为expr3。IF()的返回值为数字值或字符串值。select*,if(sva=1,"男","女")asssvafromtanamewheresva!=""IFELSE流程控制语句在mysql存储过程中的用法:IFsearch_conditionTHENstatement_list[ELSEIFsearch_conditionTHENstatement_list]...[ELSEstatement_list]ENDIFIF作为一条语句,在ENDIF后需要加上分号“;”以表示语句结束,其他语句如CASE、LOOP等也是相同的。CASE表达式selectCASEsvaWHEN1THEN'男'ELSE'女
MySQL-Select语句高级应用
mysql>helpselect;Name:'SELECT'Description:Syntax:SELECT[ALL|DISTINCT|DISTINCTROW][HIGH_PRIORITY][STRAIGHT_JOIN][SQL_SMALL_RESULT][SQL_BIG_RESULT][SQL_BUFFER_RESULT][SQL_CACHE|SQL_NO_CACHE][SQL_CALC_FOUND_ROWS]select_expr[,select_expr...][FROMtable_references[PARTITIONpartition_list][WHEREwhere_condition][GROUPBY{col_name|expr|position}[ASC|DESC],...[WITHROLLUP]][HAVINGwhere_condition][ORDERBY{col_name|expr|position}[ASC|DESC],...][LIMIT
关于SQL Server技术内幕--你可能不知道的事
前言如果把学习SQLServer数据库技术,比作修炼武功,那么技术内幕系列书籍可以称为独孤九剑。这是我最喜欢的,也是我经常推荐给别人的。2005总共4本,后续的版本有几本呢?SQLServer2012技术内幕有哪几本?2012以后的版本呢呢?SQLServer2005在这个版本技术内幕系列书籍共有4本。T-SQL程序设计,T-SQL查询、存储引擎、、查询调整及优化。前面2本主要有ItzikBen-gan编写,主要偏向于开发,后面2本主要由KalenDelaney编写,偏向于性能调优和架构。这2位大神都是大牛就不介绍了SQLSERVER2008从这里开始前面2本,由于ItzikBen-gan编写的名字还是叫insideSqlServer2008而后面的2本就变成一本了,SQLServer2008InternalsSQLServer2012后面2本变成了MicrosoftSQLServer2012Internals。这个版
Vue 第一个组件,浏览器后退无法触发beforeRouteLeave的问题与解决
现象加载第一个组件(这里的第一个意思是浏览器历史记录的第一个,后文称为待监听组件)时,正常跳转其他页面可以触发beforeRouteLeave。但是按浏览器的后退按钮监听不到该事件。解决方案目前采用比较土且不实用的解决方案。加一层组件,再router.push到待监听组件,使得待监听组件非第一个组件,可以正常监听beforeRouteLeave事件。注意点:由于打乱了原来的路由。需要在main.js中添加全局的路由监听router.beforeEach((to,from,next)=>{if(tois'用于跳转的组件'&&fromis'待监听组件'){router.go(-1)next(false)}else{next()}//这样当从一个普通页面A进入待监听组件时,在待监听组件中按返回键时能正常进入A})
JavaScript实现策略模式
在开篇之前先分享今天看到的一句关于设计模式的话:将不变的部分和变化的部分隔开是每个设计模式的主题请大家自行感受这句话的精髓所在,并且思考学习设计模式究竟能给我们编程带来什么样的东西,欢迎大家在文章下面评(chui)论(shui),分享自己的宝贵见解。好了,回到今天的正题,JavaScript实现策略模式。什么是策略模式定义一系列的算法,把它们一个个封装起来,并且使它们可以相互转换。讲人话就是:我想去旅游,那么我可以选择不同的方法(策略)去达到我的目的——旅游。比如说坐飞机,走路,甚至是小黄车ofo都行,这看你具体是怎么选择。如果你想快一点,那就选择坐飞机,如果你有梦想,那就选择走路,不管你选择什么,最后你都能达到相同的目的——旅游。策略模式思想接合上面的例子和开篇第一句话,在策略模式中,不变的是我们的目的——旅游,而变化的部分是我们的去的方式(坐飞机,走路,ofo),所以我们就要把这两部分隔开以实现解耦。也就是策略模式的目的所在。为了比较策略模式带来的好处,我先用一般的方式完成我上面的例子。请看代码:vart
移动客户端跨平台开发方案探索
本文是Piasy原创,发表于https://blog.piasy.com,请阅读原文支持原创https://blog.piasy.com/2017/12/16/Mobile-Client-Cross-Platform-Development/跨平台开发想必很多朋友都听说过,甚至实践过,这里我就不过多介绍相关的背景了,Java的Slogan完美诠释了这一愿景:Writeonce,runanywhere!提到这个话题,大家首先想到的可能是ReactNative,不过本文并不是RN教程。本文旨在探索我关注到的几种比较靠谱的移动客户端跨平台开发方案,当然RN是其中必不可少的一部分。完美的跨平台开发方案自然是一行平台相关的代码都没有,但这个要求稍显苛刻,很多时候退一步海阔天空,在移动客户端跨平台开发这个场景下也是这样。所以我们的目标应该是尽可能地减少平台相关代码的开发,最大程度复用核心逻辑代码。此外,客户端的开发可以分为两部分:业务逻辑与界面交互。由于不同的平台(Android、iOS、Web)GUI系统差异较
浅谈移动端页面无刷新跳转问题的解决方案
浅谈移动端页面无刷新跳转问题的解决方案2017-12-22祈澈姑娘最近开发微信公众号,用的框架是一般的UI,但是涉及到多页面之间的相互跳转的问题,降低了浏览器的性能,用户体验特别不好,卡顿,不流畅,因此不采用传统的页面跳转方式,看到不少手机网页开发的框架都都是在一个html文档中包涵多个页面的内容,每页放到不同的里面。于是采用当下流行的单页面模,在做pc网页的时候一般都直接给链接的。比起用链接来跳转页面,这样做也是有很多好处的(比如appjs,jqueryMobile)这种web形式在如今的移动端十分流行,毕竟在移动端频繁得去刷新界面不是很友好,而且还费流量。单页面介绍单页Web应用(single-pageapplication简称为SPA)是一种特殊的Web应用。它将所有的活动局限于一个Web页面中,仅在该Web页面初始化时加载相应的HTML、JavaScript和CSS。一旦页面加载完成了,SPA不会因为用户的操作而进行页面的重新加载或跳转。而是利用JavaScript动态的
更便捷的css处理方式-postcss
[18:27:28]'css-lint'erroredafter98ms[18:27:28]Errorinplugin'gulp-stylelint'Message:Failedwith1error拥抱下个版本规范的css即css4对于下个规范的css而言,变量,方法等功能的都会增加上去,你可以这样来定义一个变量::root{--red:#d33;}a{color:var(--red);}当然直接在现有浏览器上是跑不通的,就正如es2015刚开始一样,我们需要一个转化器来将其转成当前可用规范。postcss的插件就可以做到。a{color:#d33}除了上面之外还有其他很多功能,postcss及其插件都能提供。什么是postcss现在让我们回到最基本的问题,postcss是什么。援引官网的定义,一种使用js来转化css的工具(AtoolfortransformingCSSwithJavaScript)。其实我们更多的时候提到postcss是有两个含义的:postcss本身,也就是我们n
Angular内置指令
Angular提供了若干内置指令,如果有使用过AngularJS的经验,更容易理解这些指令。Angular中内置指令是已经导入过的,可以在组件中直接使用它们。ngIf如果需要根据一个条件来决定显示或隐藏一个元素时,可以使用ngIf指令,这个条件由传给指令的表达式的结果决定的。如果表达式的结果返回的是一个假值,元素会从DOM上移除。
jquery template.js前端模板引擎
作为现代应用,ajax的大量使用,使得前端工程师们日常的开发少不了拼装模板,渲染模板在刚有web的时候,前端与后端的交互,非常直白,浏览器端发出URL,后端返回一张拼好了的HTML串。浏览器对其进行渲染。html中可能会混有一些php(或者php中混有一些html)。在服务端将数据与模板进行拼装,生成要返回浏览器端的html串。这与我们现在做一个普通网页没什么区别。只不过现在,我们更常使用模板技术来解决前后端耦合的问题。前端使用模板引擎,在html中写一些标签,与数据与逻辑基本无关。后端在渲染的时候,解析这些标签,生成HTML串,如smarty。其实前端与后端的交互在服务端就已经有一次了。下面是自己敲的案例,非常直观来渲染前端页面,可以复制来看看可以参照GitHub上面来看https://github.com/BorisMoore/jquery-tmpl
vue使用axios中 this 指向问题
1.解决办法在vue中使用axios做网络请求的时候,会遇到this不指向vue,而为undefined,可以使用箭头函数"=>"来解决。如下:methods:{loginAction(formName){this.$axios.post('http://127.0.0.1/u/subLogin',{username:this.username,password:this.password}).then(function(response){console.log(this);//这里this=undefined}).catch((error)=>{console.log(error);//箭头函数"=>"使this指向vue});});
VueRouter基础
安装直接下载(官方CDN)https://unpkg.com/vue-router/...通过页面script标签引入,如下:<scriptsrc='https://unpkg.com/vue-router/dist/vue-router.js'></script>NPM安装npminstallvue-router--save-dev安装完成后需要Vue.use()安装此功能,例如:importVuefrom'vue';importVueRouterfrom'vue-router';Vue.use(VueRouter);入门简单例子<html><!DOCTYPEhtml><html><head><metacharset="utf-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title
vux入坑笔记
一、初始化:webpack项目塔建:使用vue-cli塔建基于webpack的vue环境。然后根据vux官网安装使用文档安装vux组件库及配置build/webpack.base.conf.js。如果看不懂webpack.base.conf.js怎么配,直接点击这里拷贝这里吧。安装其它的依赖:npminstallvue-loaderlessless-loader--save按vux官网使用实例测试引入vux组件,console日志发现报"vux-loader配置有问题或者代码书写规范的原因导致无法解析成按需引入组件,会导致打包体积过大。请升级到最新版本vux-loader,建议开启eslint(standard)"。原因是版本过高兼容性问题,降至"vue-loader":"^12.2.2"即可,可参考issuue