webpack实践——DLLPlugin 和 DLLReferencePlugin的使用
webpack文档中写到:DLLPlugin和DLLReferencePlugin用某种方法实现了拆分bundles,同时还大大提升了构建的速度。首先build文件夹添加----webpack.dll.config.js:varpath=require("path");varwebpack=require("webpack");module.exports={//要打包的模块的数组entry:{vendor:['vue/dist/vue.esm.js','vue-router']},output:{path:path.join(__dirname,'../static/js'),//打包后文件输出的位置filename:'[name].dll.js',//vendor.dll.js中暴露出的全局变量名。library:'[name]_library'//与webpack.DllPlugin中的`name:'[name]_
WebSocket解析
WebSocket解析转载请注明出处:WebSocket解析现在,很多网站为了实现推送技术,所用的技术都是轮询。轮询是指在特定的时间间隔(如每一秒),由浏览器对服务器发起HTTP请求,然后由服务器返回数据给浏览器。由于HTTP协议是惰性的,只有客户端发起请求,服务器才会返回数据。轮询技术实现的前提条件同样是基于这种机制。而WebSocket属于服务端推送技术,本质是一种应用层协议,可以实现持久连接的全双工双向通信。在介绍WebSocket之前,先谈谈轮询技术和HTTP流技术。文章目录传统轮询技术:Ajax短轮询CometAjax长轮询HTTP流HTML5实现服务端推送SSEWebSocketAjax短轮询(AjaxPolling)Ajax短轮询即客户端周期性的向服务器发起HTTP请求,不管服务器是否真正获取到数据,都会向客户端返回响应。每个request对应一个response,由于HTTP/1.1的持久连接(建立一次TCP连接,发送多个请求)和管线化技术(异步发送请求),使得HTTP请求可以在建立一次TCP连接之后发起多个异步请求
vue版本的timesheet图表
Githubhttps://github.com/SamHz/vue-...说明由于工作需要,将timesheet改为一个以两个时间段内所有周作为参考的组件,所以把它重写成了一个Vue的组件,保留了原有的以年为参考的方式,另外引入moment.js来操作时间比原来作者的更简单了。安装与使用npminstallvue-timesheet-sJavascriptCode://pleasemakesureinstallmoment.jsthisweekstabledriverit,thanks.import'vue-timesheet/dist/vue-timesheet.min.css'importvueTimeSheetfrom'vue-timesheet';exportdefault{components:{vueTimeSheet},data(){return{//yearsta
基于 Vue.js 的移动端组件库mint-ui实现无限滚动加载更多
通过多次爬坑,发现了这些监听滚动来加载更多的组件的共同点,因为这些加载更多的方法是绑定在需要加载更多的内容的元素上的,所以是进入页面则直接触发一次,当监听到滚动事件之后,继续加载更多,所以对于无限滚动加载不需要写首次载入列表的函数,代码如下:html://父组件<divv-infinite-scroll="loadMore"infinite-scroll-disabled="loading"infinite-scroll-distance="1000"><LifeLists:loadingTextBtn="loadingTextBtn":loadingText="loadingText":loadingComplete="loadingComplete":lifeList="lifeList"></LifeLists></div>//LifeLists组件:<LifeListItem:lists="lifeList">&l
C#中级-从零打造基于Socket在线升级模块
C#中级-从零打造基于Socket在线升级模块一、前言前段时间一直在折腾基于Socket的产品在线升级模块。之前我曾写过基于.NetRemoting的、基于WCF的在线升级功能,由于并发量较小及当时代码经验的不足一直没有实际应用。这次下定决心撰写基于Socket的在线更新功能,一方面是觉得Socket的并发量较高,另一方面也是自己工作了一年多,积攒了一定的经验,应该能hold住。本文将展示的是Protype版本,Release版本已在远程测试服务器上运行,并发数过万没有什么问题,文件更新都很正常。代码的Github地址将在本文最后提供。本文将展示的在线更新功能模块涉及DevexpressWPF、Webapi、WindowsService,我会从最基础的开始说起,非常适合初入的新手,大牛或者老司机可直接略过。二、方案公司的产品是运行在某一BIM软件上的插件,要想做在线更新,有以下两种方案:方案一:插件安装后会在客户桌面上生成一个快捷方式,双击快捷方式会启动一
vue项目打包后想发布在apache www/vue 目录下
使用的是vue-element-admin做示例,其他项目应该大同小异。目的:想将项目打包后发布到apache的www下的vue子目录先讲结论:需要修改router/index.js中newRouter配置,加一个base:'/vue/',它指定应用的基路径,该应用是服务于localhost/vue路径下,所以必须加base配置,否则应用会展示404页面需要修改config/index.js中build下的assetsPublicPath:'/vue/',如果用相对路径,chunk文件会报错找不到。修改httpd.conf文件,开启rewrite_module功能。LoadModulerewrite_modulelibexec/apache2/mod_rewrite.so,去掉前面的#。然后找到AllowOverrideNone的那行,把它改成AllowOverrideAll,来使.htaccess文件生效。在apache的www/vue目录下新建.htaccess文件,需要修改Rewri
一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](六)
前言大家好,我是Rector又是星期五,很兴奋,很高兴,很high...啦啦啦。。。Rector在图享网又和大家见面啦!!!上一篇《一步一步创建ASP.NETMVC5程序[Repository+Autofac+Automapper+SqlSugar](五)》,我们完成了:AutoMapper是什么简述安装AutoMapperAutoMapper的配置AutoMapper的应用通过前面几篇文章的学习,本系列【一步一步创建ASP.NETMVC5程序[Repository+Autofac+Automapper+SqlSugar]】中主要涉及到的技术和组件已基本介绍到位了。接下来的系列文章主要会以知识技术整合,提升,重构等为中心来展开,通过解决项目实战遇到的各种问题来帮助大家有目,有方向性地学习,以达到提升大家的ASP.NENTMVC5开发技能的效果。本文知识要点今天要给大家分享的是本系列[一步一步创建ASP.NETMVC5程序]的进阶知识:泛型仓储为什么使用泛型仓储说到为什么使用泛型仓储,我们不得不回到我们的项目
【笔记】事务
一、概念:1、事务(Transaction)指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。2、事务通常由高级数据库操作语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begintransaction和endtransaction语句(或函数调用)来界定。3、事务由事务开始(begintransaction)和事务结束(endtransaction)之间执行的全体操作组成。在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。二、特性:1、事务是恢复和并发控制的基本单位。2、事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。①原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。②一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。③隔离性(isolation)。一个事务的执行不能被
ActiveMQ从入门到实践
一、什么是ActiveMQ首先我们应该先了解J2EE中的一个重要规范:JMS(TheJavaMessageService)Java消息服务。而JMS的客户端之间可以通过JMS服务进行异步的消息传输。它主要有两种模型:点对点和发布订阅模型。点对点的模型特点::每个消息只有一个消费者(Consumer)(即一旦被消费,消息就不再在消息队列中)。发送者和接收者之间在时间上没有依赖性,也就是说当发送者发送了消息之后,不管接收者有没有正在运行,它不会影响到消息被发送到队列。接收者在成功接收消息之后需向队列应答成功。发布订阅模型特点:每个消息可以有多个消费者发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息,而且为了消费消息,订阅者必须保持运行的状态。为了缓和这样严格的时间相关性,JMS允许订阅者创建一个可持久化的订阅。这样,即使订阅者没有被激活(运行),它也能接收到发布者的消息。JMS还定义了五种不同的消息正文格式,以及调用的消息类型,允许你发送并接收以一些不同形式的数据,提供现
Apache Kafka:改变您思考大数据和企业消息的方式
您或许听说过ApacheKafka。Kafka为应用程序和数据管道传输数据和记录,由于它的容错能力,它可以充当企业消息系统。在本文中,我将深入剖析让ApacheKafka变得如此实用的原因,以及它如何为您的应用程序提供帮助。我还将介绍最适合应用Kafka的环境(并假设该环境适合您的应用程序架构)。然后,我将介绍您的架构的发展方向,以及发展道路上的阻碍!您的大数据环境中包含以下内容大量数据源您拥有数据源。大量的数据源。这些数据源就是您的应用程序:从支付处理系统,到面向客户的网站,再到社交媒体平台,等等。更别提所有提供行政职能、管理报告等特性的内部应用程序了。这些应用程序生成了大量数据。它们也使用着大量数据。或者同时生成和使用大量数据。如果您的系统架构看起来像在开始使用Kafka之前在LinkedIn上实现的架构,那么ApacheKafka可能很适合您。数据压力(大数据的3V除了大量数据源之外,您还存在“大数据问题”:您企业中(许多不同种类)的数据源正以越来越快的速率生成数据,导致要处理的数
AI的史诗年,会发生点什么?
本文作者为KritiSharma,赛捷集团AI部门副总裁;经燈桀编译,发布于AI星球。2017年,AI几乎是人人都在讨论的话题。这一年里,它持续性地引发了强烈的轰动效应。目前,人们在AI的研究上已经取得了不小的进步,大部分人都了解了AI驱动技术和应用的现实情况,这些技术和应用也给他们的生活贴上了数字化标签。然而,AI技术的内部运作过程仍旧不为人所知。而这恰恰是AI将如何在2018年继续引导主流的关键所在,以下是我对此的一些看法。1、人们将不再期待创造人性化AI随着AI逐步融入平台技术,人们用于管理个人财务,查找公共记录,评估客户体验和学习新事物的平台获得了技术上的飞速提高,而这种行业转变在未来将变得更加普遍。AI工程师和开发人员将转向构建算法驱动的AI,让它们可以以人为的方式响应,制定决策并与人互动。对我而言,这是AI在2018年将会经历的最有希望的转变之一,因为它让AI看起来更像人类,而不仅仅存在于行为上。2、消费者对AI的看法将被重视AI行业将致力于与购买和订阅其产品和服务的人建立信任。这意味着他们要主动地将
月薪8K与月薪3W的程序员原来差距到底在哪里?
经常会有人在提问,现在Java好找工作嘛?Python到底好不好学?我要不要学习大数据呢?这些问题的答案其实大家心里都明白:只要你足够认真并坚持下去,学什么都能够找到一份好的工作。思考:【要知道自己到究竟要什么】这是自我定位最关键的一点,也是最重要的一步。因为这关系到你能够够选对学习方向,能否沉下心来去学习。我们都知道,去做自己感兴趣的事情时,事半而功倍,因为你愿意为此投入精力,而不是出于某种原因不得不去做。经常会有人在后台提问,现在Java好找工作嘛?Python到底好不好学?我要不要学习大数据呢?这些问题的答案其实大家心里都明白:只要你足够认真并坚持下去,学什么都能够找到一份好的工作。对一个搞技术的人来说,年龄的增长其实不是那么可怕,可怕的是你没有匹配自己年龄的技术深度。当你的工作换一个刚毕业的学生都能做的时候,你很快就会被淘汰了。所以,选方向一定要选自己感兴趣的方向,因为只有这样,你才有兴趣去往深入了学,你才不会在未来被年轻人挤下去。目标【确认学习目标】首先,你需要确认你要学什么,切记不要三心二意。学习最好一
看看100万程序员怎么评论:美国 IT 公司程序员会加班吗?
我觉得加班只是心态问题,8小时工作,假如自己能做8点活,(这里的‘点’作为一个单位,想不到好词了)此时如果把自己定位为7,做7点的活,拿7点的工资,大概是能游刃有余的,然后每天还有8小时用来绿色生活,运动学习,等自己实力上去了,说不定8小时能做16点的活,这时候就能轻松的拿到14点的工资了,而如果开始就如果把自己定位为10,做10点的活,想拿10点的工资,也许就要加班平均2小时,而如果丧心病狂的想要16点工资,也许刚开始加班8小时能勉强完成,可接下来状态越来越糟,加班10小时,甚至可能通宵不睡觉在家加班16小时还是做不出满意的东西,可能就离死不远了…分享之前我还是要推荐下我自己创建的web前端学习群:621071874,包括我自己整理的一份最新的适合2017年学习的前端资料和零基础入门教程,欢迎初学和进阶中的小伙伴
技术人成长的四个阶段
公众账号原文https://mp.weixin.qq.com/s?__biz=MzI3OTUwMjM4MA==&mid=2247484010&idx=1&sn=3cf3f46d89c0d152fe5c4ae621d45fd5&chksm=eb478929dc30003f567b8838c33f39bade78ea28bcb8ff92f9a4c9e0eaa4d44c968ba225ede5
当DDD遇上微服务
DDD与微服务是可以相通的,其关键在于BoundedContext。分布式系统的定义在谈论这个之前,我们需要就什么是分布式系统达成一致。在我看来,判断一个系统是否是分布式的,其标准是看系统中是否存在跨进程通信。是进程决定了协作与通信的方式,从而引申出两种具有本质区别的编程模型:进程内编程模型跨进程编程模型它们之间的区别在于组件之间的调用方式。进程内的组件调用是非常简单的,就Java而言,各个驻留于同一个JVM的对象与变量都放在堆内存或者栈内存中,对象的调用(包括方法的调用)就是一种内存的寻址。Java语言通过new关键字创建实例,从而获得该实例的指针,以便于对该实例的属性与方法进行调用。跨进程组件之间的调用方式与进程内调用有着本质的。虽然跨进程通信机制存在各种不同的实现,但它们要考量的因素都是相同的,需要考虑:进程间的通信协议如何寻址消息的序列化与反序列化除此之外,在资源管理、事务一致性以及部署方面,都会因为跨进程通信的原因而产生巨大的差别。显然,跨进程通信固有的复杂度带来了编程模型的改变,但它能够更加有效地利用硬件资源
窥视2018:AWS在人工智能与微服务上的最佳实践
刚刚结束了拉斯维加斯的2017re:Invent大会,AWS就于12月16日(上周六)带着其新的发布、新的理念携手InfoQ来到了西湖畔,布道基于人工智能、大数据、微服务、无服务器的架构实践与实现,与更多的杭州开发者探秘20+项新服务、功能、硬件背后的架构基石。回顾2017年,AWS在各技术领域的创新可谓达到了「热火朝天」的境界。无论是身处于AI时代大潮的普通开发者群体,亦或是受制于架构飞速演进而无力取得突围的架构师们,都对奋力冒出头的架构新星们(如微服务、Serverless)如何演进、如何设计等充满了疑惑。同时伴随着AI的到来,架构和运维都受到了不同程度的挑战。带着对这些问题的解答,AWS解决方案架构师陈琳涛、吴鹏程及杭州登虹科技运维负责人高峰开始了这场布道。AI:虚幻的泡沫or真实的未来?(查看并下载讲师ppt,提取码:x6v2)现在这个时代大家都做人工智能,很多用户稍微把大数据梳理一下,紧接着就说推荐推模型怎么做、图像识别怎么做。所以在这个过程中,很多人会问有什么方法快速实现智能?增加用户体验的更加自动化
MySQL · 最佳实践 · 如何索引JSON字段
如果只是基于上面的表的结构我们是无法对JSON字段中的Key进行索引的。接下来我们演示如何借助虚拟字段对其进行索引。增加虚拟字段虚拟列语法如下:在MySQL5.7中,支持两种GeneratedColumn,即VirtualGeneratedColumn和StoredGeneratedColumn,前者只将GeneratedColumn保存在数据字典中(表的元数据),并不会将这一列数据持久化到磁盘上;后者会将GeneratedColumn持久化到磁盘上,而不是每次读取的时候计算所得。很明显,后者存放了可以通过已有数据计算而得的数据,需要更多的磁盘空间,与VirtualColumn相比并没有优势,因此,MySQL5.7中,不指定GeneratedColumn的类型,默认是VirtualColumn。如果需要StoredGeneratedGolumn的话,可能在VirtualGeneratedColumn上建立索引更加合适,一般情况下,都使用VirtualGeneratedColumn,这也是MySQL默
融资发布丨对标阿里巴巴投资的MariaDB,旧金山开源低延迟图形数据库DGraph获贝恩资本领投185万美元...
评论融资发布丨对标阿里巴巴投资的MariaDB,旧金山开源低延迟图形数据库DGraph获贝恩资本领投185万美元种子轮融资#鸵鸟报道2017-12-2215:510162来源:鸵鸟创投媒体摘要:DGraph很可能会与MariaDB在同一领域里与之构成竞争关系。编者按:DGraph很可能会与MariaDB在同一领域里与之构成竞争关系。据外媒消息,鸵鸟创投媒体(微信:Wechuangye)了解到,总部位于美国旧金山的开源分布式图形数据库DGraph宣布获得了一笔185万美元种子轮融资,领投方为贝恩资本,参投方包括Atlassian联合创始人MikeCannon-Brookes,BlackbirdVentures和AirTreeVentures。截至目前,该公司的融资总金额已经接近300万美元。鸵鸟创投媒体(微信:wechuangye)还了解到,DGraph公司创始人ManishJain曾在谷歌搜索业务部门工作过,而作为一个可扩展的、分布式的、且低延迟的图形数据库,DGraph公司的目标就是要提供谷歌级别的
Vue 是否适合做移动端 WebApp
关于这个问题,肯定因为有其它的对比,才会有如此问题。在此不要急着给肯定的答案,先列举一些前端常用的技术解决方案:[if!supportLists]1、[endif]JQuery||Zepto+Bootsrap[if!supportLists]2、[endif]Vue+VueX[if!supportLists]3、[endif]React+Redux[if!supportLists]4、[endif]Angular以上是目前端市场比较热门的几种技术解决方案,很多人都在拿这几个方案来做对比,其实这种对比没有太多意义,为什么这么说?一对男女,在热恋的时候你浓我浓,对方的所有都是这个世界上最好的,为此立下山盟海誓,山无棱,天地合,才敢与君绝。但随着时间、环境的变迁,对方的缺点变得越来越不能接受,便开始拿其与身边的异性对比,越对比越感觉这不是自己想要的结果,最后在对比中彼此都成为了最熟悉的陌生人。此情况循环几次,最后发现,世界本没有最好的,坚定一份选择,好好经营,便能成为最适合、最好的。技术亦是如此。
webpack提取第三方库的正确姿势
我们在用webpack打包是时候,常常想单独提取第三方库,把它作为稳定版本的文件,利用浏览缓存减少请求次数。常用的提取第三方库的方法有两种CommonsChunkPluginDLLPlugin区别:第一种每次打包,都要把第三方库也运行打包一次,第二种方法每次打包只打包项目文件,我们只要引用第一次打包好的第三方压缩文件就行了CommonsChunkPlugin方法简介我们拿vue举例constvue=require('vue'){entry:{//bundle是我们要打包的项目文件的导出名字,app是入口js文件bundle:'app',//vendor就是我们要打包的第三方库最终生成的文件名,数组里是要打包哪些第三方库,如果不是在node——modules里面,可以填写库的具体地址vendor:['vue']},output:{path:__dirname+'/bulid/',//文件名称filename:'[name].js'},plugins:{//这里实例化webpack.optimize.C