使用Vue的axios自定义header时报错处理~
前端Axios的设置处理当Content-Type为application/json的时候,会先产生一个OPTION请求(如Network所示)。可以把Content-Type设置为application/x-www-form-urlencoded。设置Auth请求头,参看官方文档axios.defaults.baseURL='https://api.example.com';axios.defaults.headers.common['Authorization']=AUTH_TOKEN;axios.defaults.headers.post['Content-Type']='application/x-www-form-urlencoded';举个栗子~//新创建axios实例配置const$axios=axios.create({baseURL:'http://domain.com',timeout:5000,headers:{'
基于 Vue 的移动端图片查看插件.
wc-view移动端图片浏览插件.演示地址演示地址安装npmiwc-view--save-dev使用importwcViewfrom'wc-view';import'wc-view/style.css';Vue.use(wcView);img标签时:<imgclass="wc-preview-img":src="url"v-for="(url,key)inlist":key="key"@click="$preview($event,list,key)">如果list是一个对象数组的时候,需要额外为$preview传递一个参数,用于标记对象里哪一个字段是图片url;<imgclass="wc-preview-img":src="item.img"v-for="(item,key)inlist":key="key"@click="$preview($event,list,key,'img')">背景图时:<divv
vue-loader 源码解析系列之 整体分析
笔者系vue-loader贡献者(#16)之一官方说明vue-loaderisaloaderforWebpackthatcantransformVuecomponentswritteninthefollowingformatintoaplainJavaScriptmodule简单来说就是:将.vue文件变成.bundle.js,然后放入浏览器运行。观察输入输出输入测试是最好的文档,所以我们从测试用例开始分析,找到test/fixture/basic.vue,内容如下:<template><h2class="red">{{msg}}</h2></template><script>exportdefault{data(){return{msg:'HellofromComponentA!'}}}</script><style&
【前端项目上线】问题详细分析
项目:https://github.com/itguide/vn...安装环境:nginxnodemongodb把代码上传到服务器1.rz上传2.使用github克隆把依赖包下载cd/home/wwwroot/vnshop/clientnpmicd/home/wwwroot/vnshop/servernpmi编译客户端代码cd/home/wwwroot/vnshop/clientnpmrunbuild添加虚拟主机,绑定域名,并且把域名访问的路径指定到/home/wwwroot/vnshop/client/src/dist启动serverapi服务cd/home/wwwroot/vnshop/servernpmstart或者node./bin/www测试api域名:3000/url配置反向代理vim/usr/local/nginx/conf/vhost/vnshop.shudong.wang.conflocation/api/{proxy_passhttp://1
小白成长日记:写个日历
每天进步一点点。写个简单的小日历,依旧用vue,方便完成图思路本月的天数截取上月的天数截取下月天数今天给一个样式上月、下月切换回到今天大致需要完成的东西有以上东西html部分<divid="calendar"><divclass="top"><divclass="YM"><spanclass="left"@click="prevM"><</span><p>{{year}}-{{month}}<spanclass="back"@click="backDay">今</span></p><spanclass="right"@click="nextM">></span></div><divclass="weeks"><
手摸手,带你优雅的使用 icon
前言本篇文章其实陆陆续续写了快半年,主体部分写好了很久了,但由于种种原因一直没有发布。首先来说说写这篇文章的主要初衷是:在做前端后台项目的时候经常会用到很多icon图标,刚开始还好,但随着项目的不断迭代,每次修改添加图标会变得很麻烦,而且总觉得不够优雅,就开始琢磨着有啥简单方便的工作流呢?演进史首先我们来说一下前端icon的发展史。远古时代在我刚开始实习时,大部分图标都是用img来实现的。渐渐发现一个页面的请求资源中图片img占了大部分,所以为了优化有了imagesprite就是所谓的雪碧图,就是将多个图片合成一个图片,然后利用css的background-position定位显示不同的icon图标。但这个也有一个很大的痛点,维护困难。每新增一个图标,都需要改动原始图片,还可能不小心出错影响到前面定位好的图片,而且一修改雪碧图,图片缓存就失效了,久而久之你不知道该怎么维护了。font库后来渐渐地一个项目里几乎不会使用任何本地的图片了,而使用一些font库来实现页面图标。常见的如FontAwes
vue组件发布到npm(简化版)
个人博客地址url我们都知道我们很多时候,要将公共的组件好用的发布到npm,上面然后自己好使用1.0新建项目1.1初始化项目输入npminit,之后需要填什么就写什么新建src目录,并在src目录下新建alert.vue$npminit$mkdirsrc$cdsrc$touchalert.vue最后的目录结构1.2修改入口文件打开package.json,并修改1.3写组件内容这个组件内容可以随便写,我们就先测试一下,我是这样写的<template><divclass="alert"><div>dddddd</div></div></template><style>.alert{color:red;}</style><script>exportdefault{
vue仿豆瓣页面踩坑记录(1)
很简单的页面,主要是想熟悉一下vue,项目是用vue-cli搭建的,使用vue+vue-router+axios先看效果1:axios请求第三方接口,不支持jsonp,需要在服务器conf文件夹下的index.js文件中配置代理2:请求的图片地址有一部分返回403,访问受限制只要在原链接前面加上这个就可以了https://images.weserv.nl/?url...(这里需要将原链接中的http://去掉,用了字符串截取方法,本来想用正则的,可惜没写出来,不熟悉,大神看到可以指教一下)3:vue中img标签读取src变量值时,不需要加{{}},而是直接src="list.images",src="{{list.images}}"是错误写法
一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](三)
前言上一篇《一步一步创建ASP.NETMVC5程序[Repository+Autofac+Automapper+SqlSugar](二)》我们通过如下操作:创建实体及工具类创建Repository类完善View层修改控制器创建视图数据库连接创建数据库和表实现了简单的数据库连接及数据查询操作,既然是简单的数据库连接,那我们有必要对它进行进一步的升级、封装。今天我们就引入一个国内开发者开发并维护的ORM开源框架。如果你当前还不知道什么是ORM,或者C#/.NET中有哪些主流的ORM的话,请参见本站的关于ORM相关的文章:什么是ORM?为什么用ORM?浅析ORM的使用及利弊目前的.NET(C#)世界里,主流的ORM框架有哪些--SqlSugar,Dapper,EntityFramework(EF)还是...本篇知识要点引用SqlSugar使用SqlSugar对Repository类的改造安装SqlSugar还是熟悉的配方,还是熟悉的味道,和前文一样我们同样使用Nuget程序包管理工具来安装SqlS
AWS 推出用 ActiveMQ 架設的服務,Amazon MQ
AWS把ActiveMQ包起來賣服務:「AmazonMQ–ManagedMessageBrokerServiceforActiveMQ」。在AWS上已經有AmazonSQS這類服務的情況下,應該還是因為ActiveMQ的生態更豐富,所以決定支援ActiveMQ...光是支援的通訊協定就比自家多很多,有很多應用可以直接接上去:WithAmazonMQ,yougetdirectaccesstotheActiveMQconsoleandindustrystandardAPIsandprotocolsformessaging,includingJMS,NMS,AMQP,STOMP,MQTT,andWebSocket.不過支援的地區還是有限:AmazonMQisavailablenowandyoucanstartusingittodayintheUSEast(NorthernVirginia),USEast
流计算框架 Flink 与 Storm 的性能对比
背景ApacheFlink和ApacheStorm是当前业界广泛使用的两个分布式实时计算框架。其中ApacheStorm(以下简称“Storm”)在美团点评实时计算业务中已有较为成熟的运用(可参考Storm的可靠性保证测试),有管理平台、常用API和相应的文档,大量实时作业基于Storm构建。而ApacheFlink(以下简称“Flink”)在近期倍受关注,具有高吞吐、低延迟、高可靠和精确计算等特性,对事件窗口有很好的支持,目前在美团点评实时计算业务中也已有一定应用。为深入熟悉了解Flink框架,验证其稳定性和可靠性,评估其实时处理性能,识别该体系中的缺点,找到其性能瓶颈并进行优化,给用户提供最适合的实时计算引擎,我们以实践经验丰富的Storm框架作为对照,进行了一系列实验测试Flink框架的性能,计算Flink作为确保“至少一次”和“恰好一次”语义的实时计算框架时对资源的消耗,为实时计算平台资源规划、框架选择、性能调优等决策及Flink平台的建设提出建议并提供数据支持,为后续的SL
Handler机制原理(二)MessageQueue的源码分析
看源码有一段时间了,越来越能从代码中感觉到工程师们满满的激情,无论是基础Java语法还是高级的语言特性都被发挥的淋漓尽致,写的恰到好处。分析源码的过程,何尝不是与大神们进行灵魂沟的过程。MessageQueue属于低层类且依附于Looper,Looper外其他类不应该单独创建它,如果想使用MessageQueue可以从Looper类中得到它。消息队列存储原理再上一章Message源码分析中我们知道了Message内部维持了一个链表缓存池来避免重复创建Message对象造成的额外消耗,以静态属性privatestaticMessagesPool作为缓存池链表头,Messagenext;作为链表的next指针。有意思的是Message对象中next指针的不止用于链表缓存池,在MessageQueue中也采用同样的方法存储消息对象:publicfinalclassMessageQueue{......MessagemMessages;......}上面代码中的mMessages就是MessageQueue用来维持消息队
MQTT---HiveMQ源码详解(五)Netty-启动与Listeners加载
这里写图片描述publicListenableFuture>startListeners(){//为netty注册Shutdown,为了使netty主线程在关闭时,能够关闭掉worker和bossthis.shutdownRegistry.register(newNettyShutdown(this.childEventLoop,this.parentEventLoop,this.hiveMQConfigurationService.internalConfiguration().getInt(Internals.EVENT_LOOP_GROUP_SHUTDOWN_TIMEOUT)));//记录Listener启动的结果的Future列表,方便在日志/控制台中打印出Listener绑定的结果。List
MQTT---HiveMQ源码详解(一)概览
多个客户端与LoadBalancer连接,由LoadBalancer做负载均衡,将连接分发到各个Broker。多个Broker组成Cluster,由JGroup进行集群通讯。多个Broker由一致性hash环虚节点,进行集群中数据的主主备份,以达到高可用。HiveMQ提供多种集群Discovery来达到不同组网场景中的集群发现。架构图这里写图片描述Handlers由实现NettyChannelHandlerAdapter。处理SSL;处理MQTT协议的codec;处理监控数据收集;处理流量限制;扩展点回调触发等客户端长链接。SPI是HiveMQ扩展出来为做HiveMQBroker端二次开发,提供各种Callback、Cache、Scheduler、Authentication、Authorization、Configuration等等扩展点;还提供了各种异步/同步的接口Service。以便开发人员基于HiveMQ开发属于自己的业务;Plugins是基于SPI提供出来的扩展点,按照HiveMQ的Plugin开发要求,注册属于客户自己的Pl
MQTT---HiveMQ源码详解(三)配置加载
config-urml初看这样的uml图保证所有人都是一脸懵逼,没关系,且听我一一道来。1、由上一篇我们可以知道config读取是在main方法中就通过HiveMQConfigurationServiceFactory的静态方法create创建。2、请记住config.xml里面的配置,其实config.xml的根就是HiveMQConfigurationService,他持有了GeneralConfigurationServiceListenerConfigurationServiceMqttConfigurationServiceInternalConfigurationServiceThrottlingConfigurationServicePersistenceConfigurationServiceSharedSubscriptionsConfigurationServiceRestConfigurationServiceClusterConfigurationService这些接口定义在hivemqspi上都可以看到其源码,
MQTT---HiveMQ源码详解(九)Netty-Codec
MqttMessageDecoder持有上述所有MessageDecoder,根据mqtt固定表头,确定是不同的消息,调用不同的MessageDecoder去讲字节码转换成mqttmessage对象。因为由两个版本,所以ConnectMessageDecoder分别使用不同版本的MessageDecoder去处理。MQTT交流群:221405150RocketMQ交流群:10648794NewSQL交流群:153575008
MQTT---HiveMQ源码详解(十)Netty-Statistics
所谓统计无外乎就是采集埋点、输出报告采集埋点类图这里写图片描述通过StatisticsInitializer实现handlerAdded方法,为pipeline中添加GlobalTrafficCounter(流量计数器)、GlobalMqttMessageCounter(mqtt消息数量计数器)、MqttConnectionCounterHandler(mqtt连接数量计数器)GlobalTrafficCounter继承netty的GlobalTrafficShapingHandler,来获得流量计数器,来统计当前(最后5秒)的读/写流量、累计的读/写流量。GlobalMqttMessageCounter根据当前的mqtt消息类型,来分类统计每种mqtt消息的读/写的数量和吞吐。MqttConnectionCounterHandler通过监听mqttconnect消息以及当前Channel的closeFuture来统计总连接数、当前连接数;MqttConnectionCounter数据细粒度的一个带ReadWriteLock的统计器
MQTT---HiveMQ源码详解(十二)Netty-MQTT消息、事件处理(流程)
简介前面这些章节,讲的基本上都是属于netty对MQTT周边的一些处理,由于MQTT协议总共目前可用的消息类型有14个,如果再加上对应的事件处理加载一起那就估计大概有14*3个handler,如果每个来讲一遍,难免有些枯燥,而且知识点会很分散,思考再三,想把整体的MQTT消息以及对应的事件处理作为一节来介绍,我们只讲它整体的实现思路、处理流程即可,这样对需要自己写broker的朋友的帮助应该是非常大的,这也符合最初写此系列博客的初衷。热身一、Callbackcallback1、分类HiveMQ的Callback总体分为同步、异步两种callback,其中部分异步callback被标记为lowlevel。2、同步可以看出同步的callback主要分为broker的callback、安全相关的callback、OnConnectCallback、OnPublishReceivedCallback、OnSubscribeCallback,这些回调都是使用异步线程调用。broker在启动和关闭时,会触发OnBrokerStart和OnBrok
MQTT---HiveMQ源码详解(十四)Persistence-LocalPersistence
简介HiveMQ的Persistence提供配置包括File和Memory,以解决不同场景的不同需求,使用者可以自行配置六种信息的PersistenceMode就代码来讲,又分为LocalPersistence和Cluster/SinglePersistence。LocalPersistence主要是作本地的Persistence;Cluster/SinglePersistence主要是根据用户是否Cluster来决定不同的Persistence业务处理。本节我们先讲LocalPersistence
MQTT---HiveMQ源码详解(七)Netty-SSL/NoSSL
实现功能根据用户配置的不同的Listener(TcpListener、TlsTcpListener、WebsocketListener、TlsWebsocketListener),为pipeline中添加不同的Handler实现步骤1、根据Listener不同,生成不同的Handler2、加入到pipeline中,让其为每一个客户端服务类图ssl由上图可以看出针对不同的Listener都会有对应类型的ChannelInitializer去初始化TransportChannel,明白这一点,那就好理解了。1、ChannelInitializerFactory是AbstractChannelInitializer的一个工厂类,针对不同的Listener,可以生成不同的ChannelInitializer。2、ChannelInitializerFactory去判断Listener类型,去创建对应的AbstractChannelInitializer,TlsTcpChannelInitializer、WebsocketChannelIni