在vue-cli中组件通信
一.父传子组件通信拿app.vue当父组件,content.vue当子组件1.父组件中导入子组件(子组件导出)importcontentsfrom'./components/content';2.在父组件中注册子组件data(){return{test:'0'};},components:{'v-header':headers,'v-content':contents}3.子组件通过props来接收数据<v-content:childs='test'></v-content>二.子与父组件通信子组件:<template><div@click="down()"></div></template>methods:{down(){this.$emit('d
结合Vue 的滚动底部加载
项目手机端分页跳转不理想,自己做了一个滚动加载的一个Demo核心Dom结构<body><divid="Content"><div><ul><liv-for="linlist">{{l.title}}</li><liclass="loading"v-if="loading">加载中</li></ul></div></div></body>Javascript代码<script>varv=newVue({el:"#Content",data:{list:[{title:"使用思维导图,优雅的完成自己的代码"},{title:"左滑右滑的乐趣"}
Vue笔记系列(三)Vue.js进阶
Vue笔记系列1、Vue.js入门2、Vue.js渐进深入响应式的原理追踪变化把一个普通Javascript对象传给Vue实例的 data选项,Vue将遍历此对象所有的属性,并使用 Object.defineProperty(中文版) 把这些属性全部转为getter/setter。Object.defineProperty是仅ES5支持,且无法shim(什么是shim?)的特性,这也就是为什么Vue不支持IE8以及更低版本浏览器的原因。变化检测Vue不能检测到对象属性的添加或删除。由于Vue会在初始化实例时对属性执行getter/setter转化过程,所以属性必须在data对象上存在才能让Vue转换它,这样才能让它是响应的。解决方法就是之前提到的,可以使用Vue.set(object,key,value)方法将响应属性添加到嵌套的对象上。还有就是之前提到的要注意,对象不能是Vue实例,或者Vue实例的根数据对象。声明响应式属性
油腻的前端SPA——CoolBlog(第一篇)
1.写在前面应小鲜肉@大叔一枝花之邀,帮他完成他的大作spring-boot+redis+nginx(其实是入门level)的博客系统,前端部分就是我来写的,先简单介绍下前端技术选型:vue-cli的常用脚手架;iview的UI框架(表单验证和后台dashboard风格很赞);一些简单的库吧比如moment.js,以及quill-editor这种富文本编辑器等..2.主要功能登录、登出博客CRUD(后台dashboard)展示页:主页、归档、分类、关于等2.1Vue-cli很多博客和教程都写的很详细了,入门的朋友建议从官方文档看起。这里简单看看filetree吧package各个依赖项版本"dependencies":{"axios":"^0.17.1","iview":"^2.7.3","moment":"^2.19.2","querystring":"^0.2.0","vue":"^2.5.2","vue-quill-edit
认识Vue组件
前言Vue.js是一套构建用户界面的渐进式框架(官方说明)。通俗点来说,Vue.js是一个轻量级的,易上手易使用的,便捷,灵活性强的前端MVVM框架。简洁的API,良好健全的中文文档,使开发者能够较容易的上手Vue框架。本系列文章将结合个人在使用Vue中的一些经(cai)验(keng)和一些案例,对Vue框架掌握的部分知识进行输出,同时也巩固对Vue框架的理解。认识组件组件是Vue强大的功能之一。Vue组件具有封装可复用的特点,能够让你在复杂的应用中拆分成独立模块使用。注意,所有的Vue组件同时也都是Vue的实例,可接受相同的选项对象。Vue组件的注册我们可以通过全局注册和局部注册的方式来注册一个Vue组件,两种方式的区别在于,全局注册的组件能够在任何地方使用,其实就是所有的Vue实例化的时候都会去渲染这个全局组件;而局部组件只是注册在某一个Vue实例化对象上,只能在这个Vue实例化的时候会渲染,其他地方使用会被当成普通的Html标签渲染。我们就先来了解下全局组件的注册。Vue组件全局注册时通过
RabbitMQ分布式集群架构和高可用性(HA)
cluster:不支持跨网段,用于同一个网段内的局域网可以随意的动态增加或者减少节点之间需要运行相同版本的RabbitMQ和Erlangfederation:应用于广域网,允许单台服务器上的交换机或队列接收发布到另一台服务器上交换机或队列的消息,可以是单独机器或集群。federation队列类似于单向点对点连接,消息会在联盟队列之间转发任意次,直到被消费者接受。通常使用federation来连接internet上的中间服务器,用作订阅分发消息或工作队列。shovel:连接方式与federation的连接方式类似,但它工作在更低层次。可以应用于广域网。2节点类型RAMnode:内存节点将所有的队列、交换机、绑定、用户、权限和vhost的元数据定义存储在内存中,好处是可以使得像交换机和队列声明等操作更加的快速。Disknode:将元数据存储在磁盘中,单节点系统只允许磁盘类型的节点,防止重启RabbitMQ的时候,丢失系统的配置信息。问题说明:RabbitMQ要求在集群中至少有一个磁
第四十一章: 基于SpringBoot & RabbitMQ完成DirectExchange分布式消息消费
消息队列目前流行的有KafKa、RabbitMQ、ActiveMQ等,它们的诞生无非不是为了解决消息的分布式消费,完成项目、服务之间的解耦动作。消息队列提供者与消费者之间完全采用异步通信方式,极力的提高了系统的响应能力,从而提高系统的网络请求吞吐量。每一种的消息队列都有它在设计上的独一无二的优势,在实际的项目技术选型时根据项目的需求来确定。本章目标基于SpringBoot项目整合RabbitMQ消息队列,完成DirectExchange(路由键)分布式消息消费。Exchange在RabbitMQ中有三种常用的转发方式,分别是:DirectExchange:路由键方式转发消息。FanoutExchange:广播方式转发消息。TopicExchange:主题匹配方式转发消息。我们本章先来讲解DirectExchange路由键方式,根据设置的路由键的值进行完全匹配时转发,下面我们来看一张图,形象的介绍了转发消息匹配流程,如下图所示:DirectExchange我们可以看到上图,当消息被提供者发送到RabbitMQ后,会根据配置队
RabbitMQ-Java客户端API指南-下
RabbitMQ-Java客户端API指南-下使用主机列表可以将Address数组传递给newConnection()。的地址是简单地在一个方便的类com.rabbitmq.client包与主机和端口组件。例如:Address[]addrArr=newAddress[]{newAddress(hostname1,portnumber1),newAddress(hostname2,portnumber2)};Connectionconn=factory.newConnection(addrArr);使用AddressResolver接口进行服务发现从版本3.6.6开始,可以让AddressResolver的实现在创建连接时选择连接的位置:Connectionconn=factory.newConnection(addressResolver);publicinterfaceAddressResolver{List
getAddresses()throwsIOException;RabbitMQ磁盘警报
RabbitMQ磁盘警报当可用磁盘空间低于配置的限制(默认为50MB)时,将触发警报,所有生产者将被阻止。目标是避免填满整个磁盘,这将导致节点上的所有写操作失败,并可能导致RabbitMQ终止。为了减少填满磁盘的风险,所有传入的消息都被阻止。在内存不足的情况下,瞬时消息仍然被分页到磁盘,并且会占用已经有限的磁盘空间。如果磁盘警报设置得太低,并且信息被快速转出,则可能会耗尽磁盘空间,并在磁盘空间检查(至少间隔10秒)之间崩溃RabbitMQ。更保守的方法是将限制设置为与系统上安装的内存量相同.如果可用磁盘空间量低于配置的限制,则会触发警报。代理程序数据库使用的驱动器或分区的可用空间将至少每10秒钟进行一次监视,以确定是否应提高或清除磁盘警报。代理启动后,监控将立即开始,导致代理日志文件中的条目:=INFOREPORT====23-Jun-2012::14:52:41===Diskfreelimitsetto953MB在无法识别的平台上将禁用监视,导致如下所示的条目:=WARNINGREPORT====23-Jun-201
RabbitMQ vhost 配置
RabbitMQvhost配置rabbitmqctlset_vhost_limits是用来定义虚拟主机限制的命令配置最大连接限制要限制vhostvhost_name中并发客户端连接的总数,请使用以下限制定义:rabbitmqctlset_vhost_limits-pvhost_name'{“max-connections”:256}'要禁用到虚拟主机的客户端连接,请将限制设置为零:rabbitmqctlset_vhost_limits-pvhost_name'{“max-connections”:0}'要解除限制,请将其设置为负值:rabbitmqctlset_vhost_limits-pvhost_name'{“max-connections”:-1}'配置最大队列数要限制vhostvhost_name中的队列总数,请使用以下限制定义:rabbitmqctlset_vhost_limits-pvhost_name'{“max-queues”:1024}'要解除限制,请将其设置为负值:
RabbitMQ用户增删及权限控制
RabbitMQ用户增删及权限控制用户角色分类none:无法登录控制台不能访问managementplugin,通常就是普通的生产者和消费者。management:普通管理者。仅可登陆管理控制台(启用managementplugin的情况下),无法看到节点信息,也无法对policies进行管理。用户可以通过AMQP做的任何事外加:列出自己可以通过AMQP登入的virtualhosts查看自己的virtualhosts中的queues,exchanges和bindings查看和关闭自己的channels和connections查看有关自己的virtualhosts的“全局”的统计信息,包含其他用户在这些virtualhosts中的活动。policymaker:策略制定者。management可以做的任何事外加:查看、创建和删除自己的virtualhosts所属的policies和parametersmonitoring:监控者。management可以做的任何事外加:列出所有virtualhosts,包括他们
后端程序员都做些什么?
这个问题来自于QQ网友,一句两句说不清楚,索性写个文章。我刚开始做Web开发的时候,根本没有前端,后端之说。原因很简单,那个时候服务器端的代码就是一切:接受浏览器的请求,实现业务逻辑,访问数据库,用JSP生成HTML,然后发送给浏览器。即使后来Javascript在浏览器中添加了一些AJAX的效果,那也是锦上添花,绝对不敢造次。因为页面的HTML主要还是用所谓“套模板”的方式生成:美工生成HTML模板,程序员用JSP,Veloctiy,FreeMaker等技术把动态的内容添加上去,仅此而已。那个时候最流行的图是这个样子:在最初的J2EE体系中,这个表示层可不仅仅是浏览器中运行的页面,还包括Java写的桌面端,只是Java在桌面端太不争气,没有发展起来。每个程序员都是所谓“全栈”工程师,不仅要搞定HTML,JavaScript,CSS,还要实现业务逻辑,编写访问数据库的代码。等到部署的时候,就把所有的代码打成一个WAR包,往Tomcat指定的目录一扔,测试一下没问题,收工回家!不差钱的公司会把程序部署到Webl
老程序员们“拒绝管理岗位,活跃在开发一线”的真实故事
杨先生,软件工程师,50多岁专长:Windows、Linux/Unix、嵌入式;算法设计、C++、C、多线程和分布式、电信、安全、套接字编程、标准委员会成员、产品计划和概念落地;TQM、ISO9000、敏捷开发和传统开发方法论。软件开发仍然是一个年轻的领域,工具和技术仍然在发生快速的变化。如果软件开发人员不能持续地更新他们的技能,在不到20年的时间里,他们就会过时。所以,一个40岁的老程序员很快就会发现自己已经无法胜任工作,而且前途堪忧。好的开发人员会持续学习,直到他们退休,比如KenThompsons和BjarneStroustrups。不过,我们大多数人(特别是40岁左右的)最终都会意识到,我们并不能成为行业的大神。C++变化很大,每几年就会有新版本出现,并且包含了全新的特性,我从来没有停止过学习。也就是说,我已经成为了一个非常有经验的C++开发者,拥有超过20年的全职系统编程经验。如果有人要我给自己的经验打分,从1分到10分,那么毫无疑问,我会给打自己9分,因为比我更了解C++
做到这6点,你也可以从普通程序员变成AI大神
万事开头难,在接触到新鲜事物时,往往会因为一些已有的经验,而影响我们对其的了解和判断。同学们,晚上好。今天我们来探讨一个看似不难,实则很难的问题:普通程序员如何一步步走向人工智能?班主任访谈了十几位成功从程序员过渡到人工智能的童鞋,大概总结了一套【晋级方法】,仅供大家参考~1、重新拾起数学和英语在正式进入人工智能学习之前,建议同学们重新拾起数学和英语。数学主要复习微积分和线性代数,英语主要以一些专业词汇为主,免得后面看论文资料的时候很吃力。复习微积分还是推荐那本经典教材---《普林斯顿微积分读本》,吃透这本书会对你以后学习MachineLearning很有帮助。复习线性代数推荐麻省理工的公开课,大家可以去搜集视频课程。2、了解下人工智能领域在决定真正进入某个领域之前,应该先对这个领域的做个大致的了解,比如这个领域的发展方向?这些技术能解决什么?这个领域有哪些分支,哪些是我真正感兴趣的?人工智能是一门非常广泛的科学,它由不同的领域组成,如机器学习,计算机视觉等等,如果盲目开始进行所谓的学习,可能越往深
笼络程序员?苹果和谷歌隔空比拼开发者收益
开发者,俗称程序员,在笔者的心中一直是比较尴尬的存在。你说他重要吗?存在感有点低,公司开发产品永远没有决策权,有时还得受点各方面的委屈,如果耍性子装酷辞职,后面还有一长队的人等着上位;你说不重要吧?似乎又有点不对,现在的互联网公司哪个离了程序员能转,有的传统企业离了程序员都转不了。但是现在情况有点奇妙,因为笔者发现在世界互联网大会和谷歌开发者大会两场重量级会议中,苹果和谷歌都不约而同的提到了开发者的收益。难道开发者要翻身吗?中国开发者从苹果AppStore赚走1120亿美元苹果大老板库克在世界互联网大会上发话称:自苹果30年前进入中国以来,已为中国创造了500万个工作岗位,有180万中国开发者通过AppStore获得了1120亿元的总收入,约占AppStore全球总收益的四分之一。“为了让科技富有人性,让科技普惠于民,我们竭尽全力来降低进入app的门槛,我们将自己开发的语言开放给所有人,让所有有技术的人都实现自己的梦想”。翻译过来就是,我们都这么努力了,1120亿你一分挣不到,怪我喽!【摊手.jpg】覆盖9亿设备,820亿应用
微服务下的数据一致性的几种实现方式之概述
本人最近学习了一下微服务下数据一致性的特点,总结了下目前的保障微服务下数据一致性的几种实现方式如下,以备后查。此篇文章旨在给大家一个基于微服务的数据一致性实现的大概介绍,并未深入展开,具体的实现方式本人也在继续学习中,如有错误,欢迎大家拍砖。目录传统应用的事务管理1.1本地事务1.2分布式事务1.2.1两阶段提交(2PC)1.2.2三阶段提交(3PC)微服务下的事务管理实现微服务下数据一致性的方式3.1可靠事件通知模式3.1.1同步事件3.1.2异步事件3.1.2.1本地事件服务3.1.2.2外部事件服务3.1.2.3可靠事件通知模式的注意事项3.2最大努力通知模式3.3业务补偿模式3.4TCC/TryConfirmCancel模式3.5总结1.传统应用的事务管理1.1本地事务再介绍微服务下的数据一致性之前,先简单地介绍一下事务的背景。传统单机应用使用一个RDBMS作为数据源。应用开启事务,进行CRUD,提交或回滚事务,统统发生在本地事务中,由资源管理器(RM)直接提供事务支持。数据的一致性在一个本地事务中
京东安全架构师刘刚:电商大促的安全保障一个复杂的超级工程
【51CTO.com原创稿件】在各大电商逐年上涨的营业额和全民购物狂欢的背后,电商平台也面临巨大的安全挑战,比如:漏洞利用、劫持攻击、钓鱼攻击、网络欺诈等。这重重风险之下,电商平台究竟是如何构建自己的安全保障体系的?本文中,51CTO记者带你走进京东一探究竟,深入了解京东大促背后关于安全的那些事儿。大促的安全保障一个复杂的超级工程“大促的安全保障一个复杂的超级工程。”在近日举行的GITC全球互联网技术大会上,京东信息安全部安全架构师刘刚向记者表示:“大促期间,出现了任何服务不可用、不安全的事件,影响都非常大。目前,我们主要面临‘三高’和‘三多’的考验。三高是:业务复杂度高、重要性高、风险影响高;三多是:头绪多、不确定因素多、干系人多。”据悉,京东商城从下单到准备出库就包括首页、购物车、订单中间件、库存中间件等几十个主流程和多个入口。另外,还有用户、价格、评价等强依赖服务,预约、预售、京豆等非强依赖服务。这些复杂并且运转良好的系统,在大流量的冲击下,可能变得极其脆弱。刘刚坦言,京东的业务形态很多。面对挑战,京东信息安全部门不单单要考
阿里高级技术专家谈企业应用架构
阿里高级技术专家Frank从业这么多年,接触过银行的应用,Apple的应用,eBay的应用和现在阿里的应用,虽然分属于不同的公司,使用了不同的架构,但有一个共同点就是都很复杂。导致复杂性的原因有很多,如果从架构的层面看,主要有两点,一个是架构设计过于复杂,层次太多能把人绕晕。另一个是根本就没架构,ServiceImpl作为上帝类包揽一切,一杆捅到DAO(就简单场景而言,这种TransactionScript也还凑合,至少实现上手都快),这种人为的复杂性导致系统越来越臃肿,越来越难维护,酱缸的老代码发出一阵阵恶臭,新来的同学,往往要捂着鼻子抠几天甚至几个月,才能理清系统和业务脉络,然后又一头扎进各种bugfix,业务修补的恶性循环中,暗无天日!CRM作为阿里最老的应用系统,自然也逃不过这样的宿命。不甘如此的我们开始反思到底是什么造成了系统复杂性?我们到底能不能通过架构来治理这种复杂性?基于这个出发点,我们团队开始了一段非常有意义的架构重构之旅(RedefinetheArch),期间我们参考了SalesForce,TMF2.0,汇金和盒
oracle迁移mysql总结
最近我处理了一个项目的数据库迁移,从oracle11g迁移至mysql5.7,其中的一项主要工作就是对代码中的sql进行改写。这里针对两个库的不同点做一下总结,以备后查。oracle与mysql之常用函数的区别:nvl(xx,0)==>coalesce(xx,0)说明:返回第一个非空值。to_char(xx)==>cast(xxaschar)说明:转换为char类型to_char(xx,'yyyymmdd')==>date_format(xx,'%Y%m%d')说明:日期格式化,date_format具体参数查询文档to_char(xx,'yyyyq')==>concat(date_format(xx,'%Y'),quarter(xx))说明:mysqldate_format无法格式化季度,需要借助quarter函数to_number(xx)==>cast(xxasunsignedinteger)说明:转换为数字类类型,unsignedinteger为无符号整数sysdate
Percona Server for MySQL 5.7.20-18 发布
PerconaServerforMySQL5.7.20-18已发布。PerconaServerforMySQL5.7.20-18基于MySQL5.7.20,包含其中所有的错误修复。PerconaServerforMySQL5.7.20-18是PerconaServerforMySQL5.7系列中的最新版本。更新如下:新特性PerconaServerpackagesarenowavailableforUbuntu17.10(Artful).AspartofInnoDBFull-TextSearchimprovements,anewinnodb_ft_ignore_stopwordsvariablehasbeenimplementedwhichcontrolswhetherInnoDBFull-TextSearchshouldignorestopwordlistwhenbuilding/updatinganFTSi