微服务设计-笔记
幂等-多次执行操作和一次执行操作幂等.退款就应该是这样.重复支付失败.-如何进行隔离?如何隔离?负载均衡是把所有的微服务实例都放在一个独立的VLAN里。VLAN是一个虚拟局域网,所有的外部请求只能通过一个路由器访问内部。在这个例子中,这个路由器也就是SSL终端负载均衡器。VLAN外部跟微服务通信的唯一方式是通过HTTPS,而内部的所有通信都是通过HTTP.内部的负载均衡.nginx只用来进行SSL加密通信.重新设计你的设计应该“考虑10倍容量的增长,但超过100倍容量时就要重写了”。在某些时刻,你需要做一些相当激进的事情,以支持负载容量增加到下一个级别。参考:ChallengesinBuildingLarge-ScaleInformationRetrievalSystems扩展数据库服务可用性VS数据持久性.不同的概念.扩展读取.读从库.可能会有数据一致性问题.CAP原理读缓存.扩展写Hash->分片.mysql.分库分表.缓解压力问题.如何进行跨分片的
CISQ给你的代码来打分
至顶网软件频道消息:白盒测试的全新解决思路在这个软件定义的时来,谁来定义软件?作者从事测试工作也有近二十年的时间了,但也只能对着一个个“黑盒子”测试它的基础性能、应用处理,不是不想把这个“黑盒子”打开,看一下它的代码,而是不能。自打操作系统从DOS时代的十六位升级到32位,乃至现在的64位之后,软件编程就不再是一个人单打独斗就可以完成的了。十几人、二十人为实现一个功能编写几十万上百万行代码,这样的事情很常见。这么多行代码很难去一一进行审查。所以这么多年以来,测试还是围绕着这个“黑盒子”在打转。作为一个第三方的评测机构而言,黑盒测试已经可以满足对软件产品(即便有很多软件是打包在硬件之中)的评测需求。而对于厂商和实际使用软件的用户而言,依靠黑盒测试来查找软件中的BUG就远远不够了。如何对应用系统的安全性、稳定性和效率等质量问题一直是困扰企业的核心问题。代码在系统结构方面的质量问题是常规测试手段所难以发现的,如何衡量软件代码质量?是否有相关代码质量标准能够依循?在12月12日举行的“测试改进软件架构与代码质量研讨会”上,开斯特(北京)软件技
软件系统管控难题已破 CAST智能分析平台引入中国
【51CTO.com原创稿件】软件定义时代质量评估成产业发展瓶颈在“互联网”时代,以云计算、大数据、移动互联网、物联网等为代表的新一代信息技术的涌现,为软件产业的发展带来了深刻变化,软件定义的理念必将引领新一轮的信息技术变革。软件由一行行代码组成,代码的编写质量决定了软件的最终质量。然而,软件质量管理成为当今被讨论越来越多的话题,每个企业都期望软件能满足自身的需求、并且软件产品上线运行稳定、没有重大问题,可惜现实与理想往往存在较大差距。研究数据表明,代码层缺陷占软件整体缺陷频率的92%,比重很高,而由代码层缺陷引起的应用宕机只占10%,其余90%的应用宕机都是由系统层缺陷导致的。软件产品多种多样,它背后的代码非常复杂,几十万行的代码要想人工去了解其质量水平很难。传统的软件测试手段包括功能测试和压力测试,能了解软件可以实现的功能和达到的性能,这两种测试手段往往只能找到代码层缺陷,包括功能性不完善,或在压力下反应出现异常等等,而对于导致大多数应用宕机的系统层缺陷却很难甄别。Gartner研究分析表明,对能够测试结构性软件质量的解决方
企业微服务架构转型-门户建设(12.19)
对于传统企业IT架构转型过程中,前面我们重点讲了一些关键的需要下沉到平台层的内容,今天重点讲下门户层的一些关键点。因为准确来讲平台+应用的构建模式的完整定义为平台+应用模块+门户,在整个应用和集成架构规划好后可以看到,只有中间的应用模块是在不断扩展的。底层的平台能力都能够以能力开放的方式暴露,同时最终的用户又只需要面对统一门户这么一个统一入口。在统一门户的规划和建设过程中,有一些关键点说明如下:关于4A类功能的建设对于4A层面的内容,或者说至少要实现单点登录和统一认证,统一用户和统一授权。企业在规划建设的过程中可能没有独立的4A系统,那么这些内容可以规划到统一门户里面来集中化建设。在这块内容简单的过程中有几个关键点,需要在统一门户建设中注意。1.实际的统一认证仍然是在LDAP库,因此需要门户和LDAP库集成实现统一认证过程。2.门户实现统一用户和账号管理,实现用户对业务系统或模块的授权,这些信息从门户朝下游系统分发。3.单独登录的过程相对授权来说是一个反向过程,但是最终的验证仍然需要由LDAP验证完成后返回。4
MySQL SQL优化之覆盖索引
摘要:前些天,有个同事跟我说:“我写了个SQL,SQL很简单,但是查询速度很慢,并且针对查询条件创建了索引,然而索引却不起作用,你帮我看看有没有办法优化?”。我对他提供的case进行了优化,并将优化过程整理了下来。前些天,有个同事跟我说:“我写了个SQL,SQL很简单,但是查询速度很慢,并且针对查询条件创建了索引,然而索引却不起作用,你帮我看看有没有办法优化?”。我对他提供的case进行了优化,并将优化过程整理了下来。优化前的表结构、数据量、SQL、执行计划、执行时间表结构CREATETABLE`t_order`(`id`bigint(20)unsignedNOTNULLAUTO_INCREMENT,`order_code`char(12)NOTNULL,`order_amount`decimal(12,2)NOTNULL,PRIMARYKEY(`id`),UNIQUEKEY`uni_order_code`(`order_code`)USINGBTREE)ENGINE=InnoDBAU
记一次MySQL死锁排查过程
背景以前接触到的数据库死锁,都是批量更新时加锁顺序不一致而导致的死锁,但是上周却遇到了一个很难理解的死锁。借着这个机会又重新学习了一下mysql的死锁知识以及常见的死锁场景。在多方调研以及和同事们的讨论下终于发现了这个死锁问题的成因,收获颇多。虽然是后端程序员,我们不需要像DBA一样深入地去分析与锁相关的源码,但是如果我们能够掌握基本的死锁排查方法,对我们的日常开发还是大有裨益的。PS:本文不会介绍死锁的基本知识,mysql的加锁原理可以参考本文的参考资料提供的链接。死锁起因先介绍一下数据库和表情况,因为涉及到公司内部真是的数据,所以以下都做了模拟,不会影响具体的分析。我们采用的是5.5版本的mysql数据库,事务隔离级别是默认的RR(Repeatable-Read),采用innodb引擎。假设存在test表:CREATETABLE`test`(`id`int(11)unsignedNOTNULLAUTO_INCREMENT,`a`int(11)unsignedDEFAUL
Mysql的管理及使用
-u
Python自动化--语言基础6--模块操作之re、MySQL、Excel
1、Python自有模块正则1importre23#re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None4print(re.match("aaa","aaaabbb").group())#在起始位置匹配5print(re.match("aaa","abbbaaa"))#不在起始位置匹配,返回None67#re.search扫描整个字符串并返回第一个成功的匹配8print(re.search("haha","geinizhanggognzi").group())910#re.findall从左到右扫描字符串,按顺序返回匹配,如果无匹配结果则返回空列表11print(re.findall("\d","queshihenlihai"))12print(re.findall("\d","zhengchangfasheng"))1314#sub用于替换字符串中的匹配项15print(re.sub("g..t","good","gootgeetup")
从Windows迁移SQL Server到Linux
前一篇文章关于SQLServeronLinux的安装,地址:http://www.linuxidc.com/Linux/2017-12/149607.htm,现在测试把Windows平台下的一个数据库迁移到Linux平台下。1.环境Windows:MicrosoftSQLServer2008R2(SP3)-10.50.6000.34(X64)Linux:CentOS7.4,SQLServer2017(RC2)-14.0.900.75(X64)2.在Windows下创建备份在Windows下使用SSMS完整备份数据库BACKUPDATABASEdb1TODISK='D:\sql_bak\db1\db1.bak'WITHCOMPRESSION,INIT,SKIP,NAME='full_backup',STATS=1GOcode-1:备份数据库3.复制备份文件到Liunx把备份文件复制到Linux,如放到/tmp/下。可以用FTP,或rz等工具。4.
Vue 2.0学习笔记:使用$refs访问Vue中的DOM
通过前面对Vue的学习,到现在我们很有必要进一步了解Vue实例中的一些特殊的属性和方法。首先要了解的是$refs属性。但是在深入到JavaScript部分之前,我们先看看模板。{{message}}
2018 年你应该知道的 Vue.js 的 11 个组件库
2018年来临之际,继最热的React组件库和Angular组件库之后,这里有11个流行和实用的Vue.js组件库完善你的下一个用Vue.JS编写UI界面的应用程序。与React和Angular不同的是,Vue.js是EvanYou通过众包(crowd-sourcing)来维护的一个开源项目。这也是Vue.js最好的一部分,因为会鼓励你写出更好的代码和更好的文档。Vue.js项目在得到8万多个star的时候,Adobe,Gitlab和其他公司也都使用了它,它的受欢迎程度超过了想象,而且人气似乎还在继续增长。Vue成功的很大一部分在于其组件。使用其组件你可以独立思考UI的每个片段,鼓励可重用性和模块化,并帮助保持UI的一致性。所有的Vue组件也都是Vue实例,所以接受相同的选项对象并提供相同的生命周期钩子函数。组件也可以与Bit共享来连接像Git,Yarn和NPM这样的工具,以形成存储库之间的无摩擦代码共享体验。也可以将任何
大白话Vue源码系列(02):编译器初探
阅读目录编译器代码入口文件Vue.prototype.$mount构建AST的一般过程Vue构建的ASTVue版本:2.5.9Vue的编译器模块相对独立且简单,本篇就从这块入手,先把它干掉。编译器代码入口文件前面已经提到,Vue项目中的entry-runtime.js文件是Vue用于构建仅包含运行时的源码文件,而entry-runtime-with-compiler.js是用于构建同时包含编译器和运行时的全功能文件。因此两个文件的差集必然就是编译器实现。先看一下entry-runtime.js文件的内容:importVuefrom'./runtime/index'exportdefaultVue文件里总共就这两行代码。这样的话就基本确定编译器相关的代码就在entry-runtime-with-compiler.js文件里了,事实证明也确实是这样。Vue.prototype.$mountentry-runtime-with-compiler.js文件里的关键代码是为Vue
可能是最全的Vue-TypeScript教程(附实例代码和一键构建工具)
功能轮播搜索列表懒加载简单动画loadingvue-router.tsvuex.tsvue-class-component使用vuex-class使用xxx.d.ts声明文件基于类的编写方式mock数据tsconfig.jsonwebpack配置vue-typescript-cli项目地址:github.com/SimonZhangI…欢迎提建议,觉得不错的给个star~完成后的简单例子基于类的写法加上静态类型检查,简直不能再嗨
vue mixins和extends的妙用
vue提供了mixins、extends配置项,最近使用中发现很好用。如有不对请指正,感谢尤大提供搞笑生产工具。混合mixins和继承extends看看官方文档怎么写的,其实两个都可以理解为继承,mixins接收对象数组(可理解为多继承),extends接收的是对象或函数(可理解为单继承)。继承钩子函数constextend={created(){console.log('extendscreated')}}constmixin1={created(){console.log('mixin1created')}}constmixin2={created(){console.log('mixin2created')}}exportdefault{extends:extend,mixins:[mixin1,mixin2],name:'app',created
vue.js之生命周期,防止闪烁,计算属性的使用,vue实例简单方法和循环重复数据
摘要:今天是比较糟糕的一天没怎么学习,原因是学校的wifi连不上了~~。今天学习一下vue的生命周期,如何防止闪烁(也就是用户看得到花括号),计算属性的使用,vue实例简单方法,以及当有重复数据时如何循环一、vue的生命周期:熟悉它的生命周期可以让开发更好的进行。钩子函数:created->实例已经创建√beforeCompile->编译之前compiled->编译之后ready->插入到文档中√beforeDestroy->销毁之前destroyed->销毁之后
折腾记:Hello Parcel
Parcel是一个新出的「快速,零配置的Web应用程序打包器」,光是零配置这一点,看着就已经比webpack好一万倍了——webpack让我们怀疑,前端是否要衍生出一种副职业:配置工程师。我至今也没有能够掌握「如何优雅的配置Webpack」,之前本来准备用poi来简化webpack配置,不过突然想起了这个更高、更快、更强、(更懒)的新道具,于是又折腾了起来。Parcel有啥优点首先,他的优点是零配置,也就是说,你不用自己配置就能支持JS/CSS/HTML,开箱即用。此外,零配置不代表不能配置,它提供了接口,可以让你进行一些插件的开发,在此基础上做出一些DIY,零配置的意义其实是带默认值、开箱即用的配置,而并非不可配,灵活性差。其次,速度快,这也是很重要的一个提高,webpack要打包大型项目不免让人觉得有点慢,而Parcel利用多核与缓存(你可以在打包后在目录内看到.cache),让打包速度提高了几倍。HelloWorldforVueand
angular 学习笔记
在Angular2中一个Module指的是使用@NgModule修饰的class。@NgModule利用一个元数据对象来告诉Angular如何去编译和运行代码。一个模块内部可以包含组件、指令、管道,并且可以将它们的访问权限声明为公有,以使外部模块的组件可以访问和使用到它们。模块是用来组织应用的,通过模块机制外部类库可以很方便的扩展应用,Rc5之后,Angular2将许多常用功能都分配到一个个的模块中,如:FormModule、HttpModule、RouterModule。NgModule的主要属性如下:declarations:模块内部Components/Directives/Pipes的列表,声明一下这个模块内部成员providers:指定应用程序的根级别需要使用的service。(Angular2中没有模块级别的service,所有在NgModule中声明的Provider都是注册在根级别的DependencyInjector中)imports:导入其他module,其它module暴露的出的Components、Direc
TypeScript, Angular 和移动端的跨平台开发
摘要Google技术经理陈亮将为大家介绍TypeScript和Angular是什么以及如何利用TypeScript和Angular进行移动端的跨平台介绍。内容来源:2017年7月15日,GoogleEngineeringManager陈亮在“2017JavaScript中国开发者大会”进行《TypeScript,Angular,和移动端的跨平台开发》演讲分享。IT大咖说作为独家视频合作方,经主办方和讲者审阅授权发布。阅读字数:2027|3分钟阅读嘉宾演讲视频及PPT:t.cn/RTRvFIcWhat’sTypeScript?TypeScript是凌驾于ES5、ES6,具备静态类型的JavaScript的超集。它为我们带来的优势包括未来JavaScript的一些特征在TypeScript里都有。并且它有一个非常强大的类型系统,通过这个强大的类型系统,能够和IDE进行很好的整合。TypeScript在2012年的时候做了发布,当时的创始人AndersHejIsberg是微软的一个架构师,用他的话来说,
Angular2+,路由预加载--预先加载延迟模块
使用懒加载才会存在预加载的概念预加载是自己加载完了再去加载其他模块注意,是自己加载完也就是闲时再去加载预加载指定模块参考了很多例子,虽然实现了预加载但却是在本模块内容没加载完就会去加载延迟模块,这样就等于没有配置懒加载,所以得进行一些优化。1.虽然配置了预加载但却在本模块没加载完就去加载延迟模块了(bad)├─app.module.ts├─app.routes.ts├─shared└─service└─preview-load.tspreview-load.tsimport{Observable}from'rxjs/Rx';import{PreloadingStrategy,Route}from'@angular/router';exportclassPreloadModulesimplementsPreloadingStrategy{preload(route:Route,load:Function):Observable
前台分页,以及类别选择
效果:前台分页区别于后台分页的将第几页和共多少条传到后台,再从后台从数据库查询出当前页应该显示的数据返回前台分页是将所有的数据都查出存到前台,在经过用js进行判断,分页,显示HTML代码: