聚合文章列表
14 浏览

Rabbitmq -- rpc

一、前言MQ本身是基于异步的消息处理,前面的示例中所有的生产者(P)将消息发送到RabbitMQ后不会知道消费者(C)处理成功或者失败(甚至连有没有消费者来处理这条消息都不知道)。但实际的应用场景中,我们很可能需要一些同步处理,需要同步等待服务端将我的消息处理完成后再进行下一步处理。这相当于RPC(RemoteProcedureCall,远程过程调用)。在RabbitMQ中也支持RPC。RabbitMQ中实现RPC的机制是:客户端发送请求(消息)时,在消息的属性(MessageProperties,在AMQP协议中定义了14中properties,这些属性会随着消息一起发送)中设置两个值replyTo(一个Queue名称,用于告诉服务器处理完成后将通知我的消息发送到这个Queue中)和correlationId(此次请求的标识号,服务器处理完成后需要将此属性返还,客户端将根据这个id了解哪条请求被成功执行了或执行失败)服务器端收到消息并处理服务器端处理完消息后,将生成一条应答消息到replyTo指定的Queue,同时带上cor

消息系统 2018-01-08 发布
15 浏览

react一键式脚手架,喜欢vue-cli的coder可以看过来

首先请看目录架构区分生产、测试、开发"dev":"nodebuild/dev-server.js","start":"nodebuild/dev-server.js","prod":"cross-envNODE_ENV=productionnodebuild/build.js","test":"cross-envNODE_ENV=testingnodebuild/build.js"src目录下的讲解附带axios封装库,全局拦截登录token.(service/ajax.js)importaxiosfrom'axios';import{Message}from'element-ui';import{getItem,remobeItem}from'../util/localStore'import{doLogin}from'../util/localStore'import{message}from'antd';//创建axios实例con

程序员 2018-01-08 发布
11 浏览

程序员转型AI,这里有最全的机器学习介绍+应用实例

编译|AI科技大本营参与|张子琦编辑|明明机器学习是人工智能的一个分支,已经成为当今最热门的趋势之一。据Gartner公司预测,到2020年,包括机器学习在内的人工智能(AI)技术几乎将在所有新的软件产品和服务中普及。那么什么是机器学习?它与人工智能有什么关系?技术专业人员应该知道哪些潜在的好处和挑战?对于想要转型AI的程序猿们,AI科技大本营对此类问题做了系统性整理。什么是机器学习?有史以来,第一个使用“机器学习”这个词的人可能是亚瑟·塞缪尔(ArthurSamuel),他开发了第一批用于玩跳棋的计算机程序。1959年,他将机器学习定义为“计算机没有被明确编程的学习能力”的技术。其他计算机科学家随后也提出了更多的机器学习数学定义,但塞缪尔的定义仍然是其中最准确和最容易理解的。机器学习是人工智能的一个子集,是计算机科学的一部分,专注于创造具有人类思维方式的计算机。换句话说,所有机器学习系统都是人工智能系统系统,但并不是所有人工智能系统都具有机器学习能力。机器学习可以划分为下面几个部分1.监督学习

程序员 2018-01-08 发布
AD 友情赞助
12 浏览

回顾2017:谈谈过去一年的成长

在架构方面做一些总结的话,我觉得可以概括为如下几点:做好系统的监控,包括性能指标、业务指标缓存是提高性能的利器,包括分布式缓存和本地缓存(本地缓存失效问题要考虑)多个dubbo接口调用尽量采用异步,一种方案是使用线程池+Future单个批量查询接口如果批量的数目比较大,可以采用分页+异步的并行方案提高效率提高工作效率有很多方面,这里包括时间管理、知识管理、沟通协作、提前设计、谨慎修改、使用插件(1)时间管理在日常工作中总是不免会被各种事情干扰,比如测试突然给你反馈一个问题、产品突然需要上线一个紧急需求、PM突然让你开个会、leader突然找你谈个话。。。诸如此类,作为程序员的我们只想安静地写写代码,有那么难吗。上面这些相信程序员都深有体会,为了更好处理这些事情,我一般会给这些事情设个优先级,哪些是要马上做的(不做可能会造成更大的问题,比如线上突然出现问题)、哪些是可以稍后在做的(比如测试反馈一个问题)。每天用GoogleKeep今天要做哪些事,技术的、业务迭代的(2)知识管理程序员需要不断学习,我一般使用使用印象笔记

程序员 2018-01-08 发布
15 浏览

技术面试的时候该怎么样介绍自己?

“不好意思,稍微打断一下,可以详细介绍一下自己的项目经历么?从入职时间开始,到离职,每一个项目的开始时间,团队人数,你负责的模块。”不要紧张。面试就是聊天,没底气的人,才会紧张。当然对于很多没有工作经验的人来说,硬生生的编造工作经验是一件很吃力的事儿。可是既然选了这条路,就得走下去,最少的自圆其说。第一阶段,自我介绍。自我介绍的时候,请大声说出来自己的名字,哪一年的人,哪个学校,什么专业,在校成绩怎么样。为什么会对计算机这个行业感兴趣,为此主动做过哪些事情。第二阶段,项目经历2016年1月份开始入职秋秋公司,刚开始熟悉环境,听需求,差不多2016年1月底开始着手做项目,这是一个应用分发系统,基本的模块有四部分,用户系统,应用系统,渠道系统,统计系统,后端团队有3个人,我负责用户系统,用户系统的目标是设计成支持千万PV的架构。所以在架构上和压测上花的时间比较长。代码量倒不太多,最后选型用了Tuscany做服务层,WEB层和DB层都支持负载均衡,可以直接通过扩展机器来分担压力。缓存是用Memcache,并没有做集群。后

程序员 2018-01-08 发布
11 浏览

独立开发者赚钱之道|程序员挣钱指南

我相信每一个程序员都有一个梦想:那就是当一个自由自在的独立开发者,这就跟实现了财务自由的成功之人一样,可以随意做自己喜欢的事。当然前提是:一个有独立开发者梦想的人,必须热爱编程才可以。要不然,即使独立了,干的是自己不喜欢的开发编程,想必也是痛苦的。当然,想成为一个独立开发者并不是一件非常的容易的事,前期可能会遇到很多问题,比如:作为独立开发者,不用再朝九晚五的工作了,所以就没有了工资来源,那最现实的问题就是生活的费用如何而来,再更进一步,还要面对挣钱养家。所以作为独立开发者要学会如何利用这个职业挣到钱才行。其实,我就在为此一直的拼搏,找方法,但是一直没能找到足以让我辞职去做独立开发者的决心:怎样才能挣到和平时工作工资持平的钱。今天我就来讲讲关于我在这方面的一些经验和感悟,希望可以给大家带来一起启发和成长。两条路的尝试我自从干了程序员这行,就有一个梦想,那就是可以开发一款自己喜欢的产品,或者通过开发接外包的方式挣到足够的外快,然后我就可以轻轻松松的实现了自由独立的职业。但是梦想很丰满现实很骨感。随着社会和技术的进步,总感觉自己离独立开

程序员 2018-01-08 发布
AD 友情赞助
12 浏览

程序员如何正确玩转王思聪的《冲顶大会》?

来源|掘金作者|livc冲顶大会是最近很火的一款直播答题游戏,每天指定时间开放,12道题,每题3个选项,10秒作答,所有通关者分享奖金(每场奖金五万元或十万元),邀请好友可以获得复活资格。类似的游戏还有很多比如头条、映客、花椒直播等都推出了自己的答题游戏,这类模式的鼻祖是美国去年8月上线的HQTrivia。看到这你可能会想,这尼玛不就是《开心辞典》搬到手机上了吗?这也能赚钱?没错,就是这样。我这几天玩了几场,经过观察发现每场人数在三十万到五十万之间,现在互联网流量这么贵,花几万块钱就能在这么短时间带来这么多用户,相当值啊。罗振宇在跨年演讲时引用了德鲁克的一句话:“对创新的最大赞美,莫过于人们说——这太显而易见了,为什么我就没有想到呢?”,我想直播答题就是这样的现象级创新产品,而且它还有很多非常值得探索的盈利模式。道高一尺,魔高一丈,我们看看有哪些可以Hack的方法。题目出现再去搜索肯定是来不及的(除非你单身40年的手速),广大人民的作弊策略也是层出不穷。最简单的是一群人一起玩,可

程序员 2018-01-08 发布
13 浏览

2017年度盘点丨基础架构演化:从“以资源为中心”到“以应用为中心”的迁移

作者:刘建,搜狗资深架构师,商业平台基础平台负责人,十多年Java相关研发经验,在互联网软件体系结构、分布式计算、面向服务体系结构、用户身份安全等方面有浓厚的兴趣及实践经验。责编:钱曙光(qianshg@csdn.net)声明:CSDN专家原创投稿文章,未经授权禁止任何形式的转载。谈到基础架构,不同的人有不同的理解。一般说来,我们将支撑应用研发部署的底层软硬件的集合叫做基础架构。它不仅涉及到IDC、机房、机架、网络、主机、存储等硬件资源,也涉及到操作系统、系统软件、日志管理、应用管理监控等基础软件资源。基础架构支持了分布式服务、大数据、云计算、机器学习等基础领域,也成为IT类企业提升生产力、降低成本的核心。近些年来,随着虚拟化、容器化等新技术的不断涌现和发展,随着应用开发模式从单体应用、MVC、SOA到微服务化,基础架构领域发生了翻天覆地的变化,其对应用的灵活性和透明性不断提升,也显著提升了研发效率,降低了研发成本。从IaaS、PaaS到CaaSIaaS基础架构涉及IDC、机房、网络、主机等基础资源、机架设

软件架构 2018-01-08 发布
13 浏览

(五):C++分布式实时应用框架——微服务架构的演进

C++分布式实时应用框架——微服务架构的演进上一篇:(四):C++分布式实时应用框架——状态中心模块版权声明:本文版权及所用技术归属smartguys团队所有,对于抄袭,非经同意转载等行为保留法律追究的权利!OCS(onlinechargingsystem,在线计费系统)在进行云化改造的过程中,从实用主义角度出发,微服务架构并不是我们的目标。虽然我们也对系统进行了容器化改造(Docker),并根据业务进程的功能将系统分成了好几类的容器,但这一切多是出于对系统中的某些处理节点进行动态扩缩容的需要,跟微服务半点关系没有。随着系统改造的深入,系统的通讯关系复杂程度开始超过我们之前的估计。如果说数量众多的功能节点还有人可以勉强掌握,这些节点间错综复杂的通讯关系连线已超过程序员可以驾驭的范畴。在讨论如何简化程序员实现整个系统各类节点的通讯关系的配置过程中,节点微服务化的理念渐渐进入我们的脑海之中……下面先给大家介绍下我们所面临的困境,下面的图是我们系统一部分节点的通讯关系总图(注意,只是其中一部分):还记得

软件架构 2018-01-08 发布
AD 友情赞助
16 浏览

学习 Canal(二):Canal 原理

MySQLBinaryLogMySQLBinaryLog支持两种数据复制方式:基于语句的复制(>=MySQL3.23,--binlog-format=STATEMENT)基于行的复制(>=MySQL5.1,--binlog-format=ROW)BinaryLog是向后兼容的,新版本MySQL可以作为老版本MySQL的备库,但是反之则不行步骤:主库将数据更改记录到BinaryLog中从库将主库的BinaryLog复制到自己的RelayLog中从库读取RelayLog中的事件,进行重放显示主库状态:SHOWMASTERSTATUSFilebinlog文件名Positionbinlog当前位置如果需要Canal读取最新的binlog,那么可以配置instance.properties文件下canal.instance.master.journal.name和canal.instance.master.position属性参考:h

MySQL 2018-01-08 发布
16 浏览

DB2 Vs MySQL系列 | 体系架构对比

摘要:DB2体系结构DB2forLUW进程模型在DB2v9.5之前都是多进程模型,DB2v9.5之后体系架构变更为单进程多线程模型。是一个C/S结构,客户端可以通过TCP/IP或IPC协议与服务器通信,每当客户端与服务器建立连接之后,会在服务器端产生一个代理线程(db2agent)负责处理来自客户端的所有请求,但是当某一时刻并发请求很多或者连接断开时,重复地产生与销毁代理线程会产生很大的系统开销,所以DB2服务器在启动时创建一个常连接池来避免重复地创建/销毁代理线程。DB2体系结构DB2forLUW进程模型在DB2v9.5之前都是多进程模型,DB2v9.5之后体系架构变更为单进程多线程模型。是一个C/S结构,客户端可以通过TCP/IP或IPC协议与服务器通信,每当客户端与服务器建立连接之后,会在服务器端产生一个代理线程(db2agent)负责处理来自客户端的所有请求,但是当某一时刻并发请求很多或者连接断开时,重复地产生与销毁代理线程会产生很大的系统开销,所以DB2服务器在启动时创建一个常连接池来避免重复地创建/销毁代理

MySQL 2018-01-08 发布
12 浏览

2018年云栖社区值得订阅的11个精选技术期刊!

已发行:21期刊物简介:云计算的1024种玩法是一个以场景化展示的云服务器入门教程,适合新手阅读。最新一期:《回忆经典,用虚拟主机重建复古DZ和无心宠物》摘要:在移动互联网和大型网游没有普及前,很多地方论坛或者专业性论坛都会有一个——“无心宠物”插件来引流和吸引用户,可以说是当下网页游戏的老前辈了。还记得我以前就是为了玩这个游戏,就在各个论坛疯狂发帖赚经验,想来还是很有趣~。这次的1024就带大家重新温故一下昔日的经典。订阅地址:http://click.aliyun.com/m/3926

MySQL 2018-01-08 发布
AD 友情赞助
21 浏览

Mysql中分页查询两个方法比较

另外一种是使用SQL_CALC_FOUND_ROWSSELECTSQL_CALC_FOUND_ROWSaFROMfooWHEREb=1LIMIT100,10;SELECTFOUND_ROWS();第二种方式调用SQL_CALC_FOUND_ROWS之后会将WHERE语句查询的行数放在FOUND_ROWS()之中,第二次只需要查询FOUND_ROWS()就可以查出有多少行了。讨论这两种方法的优缺点:首先原子性讲,第二种肯定比第一种好。第二种能保证查询语句的原子性,第一种当两个请求之间有额外的操作修改了表的时候,结果就自然是不准确的了。而第二种则不会。但是非常可惜,一般页面需要进行分页显示的时候,往往并不要求分页的结果非常准确。即分页返回的total总数大1或者小1都是无所谓的。所以其实原子性不是我们分页关注的重点。下面看效率。这个非常重要,分页操作在每个网站上的使用都是非常大的,查询量自然也很大。由于无论哪种,分页操作必然会有两次sql查询,于是就有很多很多关于两种查询性能的比较:SQL_CALC_FOUND

MySQL 2018-01-08 发布
11 浏览

记录mysql性能查询过程

返回结果:一次查询就会差别这么多!!InnoDB和MyISAM,赶紧分析分析为什么。首先是使用explain来进行查看确定两边都没有使用index,第二个查询查的rows,并且MyISAM的查询rows还比InnoDB少这么多,反而是查询慢于InnoDB!!这Y的有点奇怪。没事,还有一个牛掰工具profile具体使用可以参考:http://dev.mysql.com/doc/refman/5.0/en/show-profile.html使用方法简单来说:Mysql>setprofiling=1;Mysql>showprofiles;Mysql>showprofileforquery1;这个数据中就可以看到MyISAM的Sendingdata比InnoDB的Sendingdata费时太多了。查看mysql文档http://dev.mysql.com/doc/refman/5.0/en/general-thread-states.htmlSendingdataThet

MySQL 2018-01-08 发布
7 浏览

InnoDB二阶段日志提交机制

前些天在查看关于innodb_flush_log_at_trx_commit的官网解释时产生了一些疑问,关于innodb_flush_log_at_trx_commit参数的详细解释参见官网。其中有一段是这么写的:Withavalueof2,thecontentsoftheInnoDBlogbufferarewrittentothelogfileaftereachtransactioncommitandthelogfileisflushedtodiskapproximatelyoncepersecond.意思是:如果innodb_flush_log_at_trx_commit的值设为2,那么logbuffer里的内容会在每次提交时被写入logfile,然后logfile也会被flush到disk。由于innodb的logfile据我所知是在硬盘上的ib_logfile,所以对于这里的logfile被flush到disk很疑

MySQL 2018-01-08 发布
11 浏览

MySQL Group Commit 组提交详解

组提交(groupcommit)是为了优化写日志时的刷磁盘问题,从最初只支持InnoDBredolog组提交,到5.6官方版本同时支持redolog和binlog组提交,大大提高了MySQL的事务处理性能。下面将以InnoDB存储引擎为例,详细介绍组提交在各个阶段的实现原理。简介自5.1之后,binlog和innodb采用类似两阶段提交的方式,不过不支持groupcommit;在5.6中,将binlog的commit阶段分为三个阶段:flushstage、syncstage以及commitstage。这三个阶段中,每个阶段都会去维护一个队列,各个列表的定义如下。Mutex_queuem_queue[STAGE_COUNTER];如上,每个阶段都在维护一个队列,第一个进入该队列的作为leader线程,否则作为follower线程;leader线程会收集follower的事务,并负责做sync,follower线程等待leader通知操作完

MySQL 2018-01-08 发布
16 浏览

10分钟搭建MySQL Binlog分析+可视化方案

日志服务最近在原有30+种数据采集渠道基础上,新增MySQLBinlog、MySQLselect等数据库方案,仍然主打快捷、实时、稳定、所见即所得的特点。以下我们以用户登录数据库作为案例。公司内非常多的人员依赖于用户登录数据以及其衍生出来的相关数据:老板要看大屏,每天UV、PV增长在哪里?安全要监控登录是否异常,现在用户账户是否遭到集体攻击?客户小二接到用户反馈,如何实时查询用户登录信息?BI需要分析用户行为,数据分析如何关联用户登录数据?审计上门了,请把您3年前用户的登录数据拿出来吧?接下来我们将演示如何在10分钟内手把手完成从binlog采集到查询、告警、搭建报表等全过程,满足各个老板们的需求:MySQLBinlog采集关键字段索引+统计设置对异常账号进行查询分析对异常登录进行告警配置可视化仪表盘对历史登录信息备份以备数据审计环境准备数据库mysql类型数据库(使用mysql协议,例如RDS、DRDS等),数据库开启binlog,且配置binlog类型为ROW模式(RDS默认开启)用户登录表结构CREATETABL

MySQL 2018-01-08 发布
11 浏览

MySQL 优化实施方案

1.1前言在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的合理方式运行而已。更多关于MySQL查询相关参照:http://www.cnblogs.com/clsn/p/8038964.html#_label6系列文章。图-MySQL查询过程1.2优化的哲学优化有风险,涉足需谨慎1.2.1优化可能带来的问题优化不总是对一个单纯的环境进行,还很可能是一个复杂的已投产的系统。优化手段本来就有很大的风险,只不过你没能力意识到和预见到!任何的技术可以解决一个问题,但必然存在带来一个问题的风险!对于优化来说解决问题而带来的问题,控制在可接受的范围内才是有成果。保持现状或出现更差的情况都是失败!1.2.2优化的需求稳定性和业务可持续性,通常比性能更重要!优化不可避免涉及到变更,变更就有风险!优化使性能变好,维持和变差是等概率事件!切记优化,应该是各部门协同,共同参与的工作,任何单一部门都不能对数据库进

MySQL 2018-01-08 发布
18 浏览

听听大家怎么评论:VueJS 对比 ReactJS

新的框架层出不穷,一个人很难跟上所有这些库和框架,也就是说,这就需要您决定哪些是值得花时间的。让我们看看大家怎么看待VueJS和ReactJS的。RemeLeHane“比起React我更喜欢vue.js。在JavaScript领域vue.js是镇上新来的小子。所以我想说学习的简单性可能是第一。简洁是设计的基础。Vue是简单的,它具有很多从Angular1和react来的概念。你可以使用它来建立任何系统-只是把它包含到HTML文件中。React更大,更复杂一点(例如在设置方面)。所以如果你想只想学一个框架,并且没有一个已经建立的系统那就选择Vue。vue.js很平易近人,提供如何把各种事情做好的更多的结构。如果你还不确定,两者都试试。KathreenRiya“回答你的问题,我认为Vue.js是了解React系统的一个好方法。然而,你看完指南之前你可能会爱上Vue.js。让我告诉你,整件内容都值得一读。找个星期六开始试试吧!在你读我的回答,我非常鼓励你看看Vue的框架比较。它非常体贴,涉及许多重

JavaScript 2018-01-08 发布
21 浏览

TypeScript VS JavaScript 深度对比

TypeScript和JavaScript是目前项目开发中较为流行的两种脚本语言,我们已经熟知TypeScript是JavaScript的一个超集,但是TypeScript与JavaScript之间又有什么样的区别呢?在选择开发语言时,又该如何抉择呢?本文将会深入对比这两种语言,讨论两种语言之间的关联和差异,并概述两种语言各自的优势。JavaScript和TypeScript的概要介绍JavaScriptJavaScript是一种轻量级的解释性脚本语言,可嵌入到HTML页面中,在浏览器端执行,能够实现浏览器端丰富的交互功能,为用户带来流畅多样的用户体验。JavaScript是基于对象和事件驱动的,无需特定的语言环境,只需在支持的浏览器上就能运行。JavaScript语言具有以下特点:JavaScript是一种脚本编写语言,无需编译,只要嵌入HTML代码中,就能由浏览器逐行加载解释执行。JavaScript是一种基于对象的语言,可以创建对象同时使用现有对象。但是Javascr

JavaScript 2018-01-08 发布
AD 友情赞助