Percona Toolkit初识
第二步确定Perconapackages可用:sudoyumlist|greppercona成功能看见percona-release.noarch0.1-4@/percona-release-0.1-4.noarchPercona-Server-55-debuginfo.x86_645.5.54-rel38.7.el7percona-release-x86_64Percona-Server-56-debuginfo.x86_645.6.35-rel81.0.el7percona-release-x86_64Percona-Server-57-debuginfo.x86_645.7.17-13.1.el7percona-release-x86_64...最后一步yum安装:yuminstallpercona-toolkit
pt-online-schema-change大表结构修改利器
简介:pt-online-schema-change是Percona-toolkit一员,通过改进原生ddl的方式,达到不锁表在线修改表结构。pt-osc工作过程创建一个和要执行alter操作的表一样的新的空表结构(是alter之前的结构)在新表执行altertable语句(速度应该很快)在原表中创建触发器3个触发器分别对应insert,update,delete操作以一定块大小从原表拷贝数据到临时表,拷贝过程中通过原表上的触发器在原表进行的写操作都会更新到新建的临时表Rename原表到old表中,在把临时表Rename为原表如果有参考该表的外键,根据alter-foreign-keys-method参数的值,检测外键相关的表,做相应设置的处理默认最后将旧原表删除使用之前,请参考安装Percona-toolkit教程参考:PerconaToolkit初识下面是pt-online-scheme-change示例:在test库新建表pt:CREATETABLE`pt`(`id`int(11)NOTNUL
MySQL--Online DDL
最近帮助客户订正SQL时注意到alter的操作可能会锁表(MDL),所以也补一下onlineddl的知识,避免不当的操作影响业务的运行。OnlineDDL原理:MySQL数据库操作中,DDL操作(比如CREATE,DROP,ALTER等)代价是非常高的,特别是在单表上千万的情况下,加个索引或改个列类型,就有可能堵塞整个表的读写。1.1OnlineDDL原理在MySQL支持OnlineDDL之前,执行DDL主要有两种方式:copy方式和inplace方式,通过在ALTER语句的ALGORITHM参数指定。ALGORITHM=INPLACE,可以避免重建表带来的IO和CPU消耗,保证DDL期间依然有良好的性能和并发。ALGORITHM=COPY,需要拷贝原始表,所以不允许并发DML写操作,可读。这种copy方式的效率还是不如inplace,因为前者需要记录undo和redolog,而且因为临时占用bufferpool引起短时间内性能受影响。1.2OnlineDDL锁定选项OnlineDDL方式实质也包含了INPLACE和COP
Python操作SQLServer数据库
使用python语言操作微软的SqlServer数据库,可以利用这个库:pymssql1、安装pymssqlpymssql支持pip安装,所以只需要:pipinstallpymssql2、使用首先是连接数据库,然后打开操作光标Cursor,由光标去查询、修改数据库。db_conn=pymssql.connect(host=DB_HOST,user=DB_USER,password=DB_PASS,database=DB_NAME)db_cur=db_conn.cursor(as_dict=True)connect方法中传入数据库连接信息,返回数据库连接对象,后面会用到。cursor方法中指定了查询数据时返回的格式为字典查询:db_cur.execute("selecttreelid,treelnamefromTREELwhereTREELSTATE='Y|0'")data=db_cur.fetchall()通过fetchall可以获取全部结果。如果是insert或者upd
Vue数据绑定的原理
原理其实原理很简单,就是拦截了Object的get/set方法,在对数据进行set(obj.aget=18)时去重现渲染视图实现方式有两种方式1定义了同名的get/set就相当于定义了agevartest={_age:18,getage(){console.log('触发get');//直接会this.age会进入死递归的returnthis._age;},setage(age){console.log('触发set');this._age=age;}};为了让test不显示多余的变量,可以把_age定义在外部var_age=18;vartest={getage(){console.log('触发get');//直接会this.age会进入死递归的return_age;},setage(age){console.log('触发set');_age=age;}};方式2使用这种方式完美的解决了对象内包含多余的变量的问题functiontest(){va
关于 Parcel 你所需要知道的一切:时下火爆的快速 Web 应用打包器
这是一次试翻,之后会每两周翻译一篇文章(练习英语阅读)。原文:https://medium.freecodecamp.org/all-you-need-to-know-about-parcel-dbe151b70082真的吗?又是一个打包器或者说构建工具?完全正确,进化和创新的结合为你带来了[Parcel]。(https://parceljs.org/)Parcel有什么特别之处以及为什么我要关心呢?虽然Webpack用复杂性的成本带来了许多的可配置型,相对的,Parcel带来的是简单性。Parcel本身把自己称为「零配置」。上述的详解——Parcel提供了一个开箱即用的开发服务器。开发服务器将在你更改文件时自动重建你的应用,并支持热更新来实现快速开发。Parcel到底哪里好?快速的打包时间——Parcel比Webpack、Rollup和Browserify都要快。Parcel跑分不过有一点需要考虑:Webpack依旧是极好的,有时候它打包的更快。图片来源Parce
使用 Observable Data Service 儲存 Component 間共用變數
Component間共用的資料有兩類,一類是來自API的資料,將來還會寫回server,另一類是component間自己的狀態資料,不必寫回server;事實上這種不必寫回server的共用資料,也可以使用ObservableDataService實作。VersionNode.js8.9.3AngularCLI1.6.2Angular5.1.2RxJS5.5.2UserStory線上執行:StackBlitz共用counter初始值為0無論按哪個+,或哪個-,最後都是同一個counter作用Task原來該有的功能必須保留,但拆成2個component但2個component會共用一份資料,且互相影響ArchitectureObservableDataServicevs.普通Service相同點:兩者本質上都是service都使用@Injectabledecorator都是回傳Observable相異點:O
使用viewport为移动设备做适配
设备像素和CSS像素设备像素(devicepixel,dp):又称为物理像素。指设备能控制显示的最小物理单位,意指显示器上一个个的点。从屏幕在工厂生产出的那天起,它上面设备像素点就固定不变了,单位pt。pt在css单位中属于真正的绝对单位,1pt=1/72(英寸),而1英寸等于2.54厘米。所以设备像素的特点就是大小固定,不可变。比如iPhone5的分辨率为640x1136px.CSS像素(csspixel,px):又称为虚拟像素,也可以理解为直觉像素。CSS像素是Web编程的概念,指的是CSS样式代码中使用的逻辑像素。在CSS规范中,长度单位可以分为两类,绝对(absolute)单位以及相对(relative)单位。px是一个相对单位,相对的是前面所说的设备像素(devicepixel)。比如iPhone5的CSS像素数为320x568px.px相对单位指的是图像显示的基本单元,作为一个抽象概念,CSS像素又具有两个方面的相对性,即:在同一个设备上,每1
[译]JavaScript 是如何工作的:深入剖析 WebSockets 和拥有 SSE 技术 的 HTTP/2,以及如何在二者中...
欢迎来到旨在探索JavaScript以及它的核心元素的系列文章的第五篇。在认识、描述这些核心元素的过程中,我们也会分享一些当我们构建SessionStack的时候遵守的一些经验规则,这是一个轻量级的JavaScript应用,其具备的健壮性和高性能让它在市场中保有一席之地。如果你错过了前面的文章,你可以在这儿找到它们:对引擎、运行时和调用栈的概述深入V8引擎以及5个写出更优代码的技巧内存管理以及四种常见的内存泄漏的解决方法事件循环和异步编程的崛起以及5个如何更好的使用async/await编码的技巧这一次,我们将深入到通信协议中,去讨论和对比WebSockets和HTTP/2的属性和构成。我们将快速比较WebSockets和HTTP/2,并在最后,针对网络协议,分享一些如何选择这2种技术的想法。简介现在,富交互web应用已然司空见惯了。由于internet经过了漫长的发展,这一点看起来也不足为奇了。最初,internet的建立不是为了支持这样动态的、复杂的web应用程序。它只被
一种优雅的条件引用第三方.net库的方法
一种优雅的条件引用第三方.net库的方法1.遇到的问题今年我一直在开发一个WebApiClient库,旨在.net下能像java的retrofit一样,方便地请求服务端的http接口。在这restfulapi盛行的年代,json的身影无处不在,.netframework自然也有json库,System.Web.Script.Serialization.JavaScriptSerializer就是其中一个,但综合性较好的,还是第三方的json.net。在开发WebApiClient过程中,我一直没有依赖json.net,原因是:如果我的WebApiClient依赖json.net的版本是6.0,某个第三方库ThirdLib依赖的json.net版本是7.0,在项目中会无法都使用WebApiClient和ThirdLib,原因是他们依赖的json.net版本不一样而决生冲突,给使用者解决起来很非常麻烦。2.期望的效果我期望的效果是,如果引用WebApiClient库的项目有使用到json.net,那么WebApiClient在json序列化
C#面向插件级别的软件开发 - 开源研究系列文章
AustinLiu'sFashion      人在20岁以意志力著称,在30岁以智慧取胜,在40岁则靠的是理智的判断。一个人只有时刻保持幸福快乐的感觉,才会使自己更加热爱生命,热爱生活。只有快乐,愉快的心情,才是创造力和人生动力的源泉;只有不断自己创造快乐,与自己快乐相处的人,才能远离痛苦与烦恼,才能拥有快乐的人生。
架設私有的 NuGet 伺服器
內部的使用通常不需要網站介面,能夠存取私有NuGetServer上的套件就可以了,這裡用NuGetServer這套件來架設。以下分三個段落:架設NuGetServer步驟設定VisualStudio的NuGet來源新增NuGet套件架設NuGetServer步驟建立ASP.NETWeb應用程式(.NETFramework)專案,取名叫做PrivateNuGetServer。選用空白專案範本。使用NuGet安裝NuGetServer套件,你也可以使用NuGet的套件管理器主控台並執行Install-PackageNuGet.Server指令來安裝。注意!如果你的目標框架是使用.NETFramework4.5.2,NuGetServer套件請選用2.10.3版。安裝套件的過程中,會修改web.config增加所需設定,另外還會產生一個Packages資料夾,之後上傳的套件就會存放在這裡。如果想要在NuGetS
c#实现超实用的<证件照换底色>小工具
c#实现超实用的<证件照换底色>小工具1前言我们在工作和生活中经常要填写一些个人资料,这时候往往需要放证件照上去,但是有时候人家要求是红底或白底,但是偏偏不巧的是你以前照了张蓝底的。这时候你想换个底色,于是在百度上一搜“证件照换底色”,出来了一堆photoshop教程,程序员可以找公司美工帮个忙,但是一般人就很纠结了,所以呢我就花了半天的功夫写了一个小软件,简化大家的操作难度,哎!现在越来越发现会写点程序真好。O(∩_∩)O哈哈~2.实现思路(1)首先说一下像素的组成RGB当前展示白色的RGB值是255,255,255,相反黑色的RGB就是0,0,0,其他颜色就是0~255的RGB颜色组合。我们就是通过颜色的RGB值得范围来替换证件照底色的。(2要过滤底色的RGB范围选择)我们一般拍照的时候后面都有一块幕布做底色,但是由于曝光和幕布底色的稍微的不同,导致背景其实是一个颜色范围,而非单一的颜色,这就要求我们必须找出这个范围,我这里选择前五排的像素作为初始过滤的颜色范围。下面就是代码获取这个
ASP.NET 谨用 async/await
C#5.0引入async/await关键字,旨在简化异步编程模型,抛去语法糖就是Net4.0的Task+状态机。其实在处理异步编程使用Task还是挺简单的,不过既然推出了新的语法糖,难免会尝试一下,然而在使用中却没想象中那么单纯。以下针对ASP.NET应用程序实际使用过程中的一些总结,包括异常捕获、死锁、应用程序崩溃,实际使用过程中一不注意就可能掉坑里了。异常捕获async方法有三种返回类型:void、Task、Taskasyncvoid该方式声明的方法是无法使用catch捕获异常的,所以以下代码的try、catch并没什么卵用。privatestaticasyncvoidThrowExceptionAsync(){awaitTask.Delay(1000);thrownewException("抛个异常玩玩");}publicstaticasyncvoidCatchAsyncVoidException(){try{ThrowExceptio
.Net Core建站(3):搭建三层架构
啊,终于到写三层架构的时候了,老实说,我都不知道自己这个算不算三层架构,姑且就当它是吧,具体属于哪一个体系,希望有大佬指点一下(^o^)/不晓得有人注意到没有,我写了三篇博客,然后就改了三次标题ヽ( ̄▽ ̄)ノ,从最开始的Core建数据库,到Core数据库操作,再到现在的Core建站,也算是下决心写个系列啊,,感觉要更好久的样子,,好吧,不要在意那些细节,文中可能会有一些我不知道的坑,毕竟自己也是一边自学一边写,不过保证功能还是能用的,发现有坑记得说,,我改,,(〃'▽'〃)//===================emmm,我是分割线===================强烈推荐阅读:设计模式六大原则讲的相当浅显易懂,,首先上一个截图,看看现在的项目结构,今天的主角是DataBase文件里面的那一堆项目啊,BLL,DAL和Interface,,Models是生成数据库时使用的,所以今天用不上,,按我的理解,先说说正常的三层架构吧,UI:界面层,这个层最简单,只是给BLL传递数据,然后,将
Unity 3d游戏逆向及.NET Reflector工具使用介绍
Unity3d游戏逆向及.NETReflector工具使用介绍移动平台游戏框架主要有unity3d和cocos2d。我们首先得识别游戏使用的框架。识别Unity游戏Android平台的apk包可以直接解压,看是否有./assets/bin/Data/Managed目录,也可以查看lib文件夹下面包含的一些so,如果有libmono,libunity等模块,基本可以确定是unity游戏了。Android平台中C#编写的主逻辑模块代码静态编辑之后存储于Assembly-CSharp.dll文件中。因为unity的跨平台,Android平台是unity编译的游戏,那么其对应的IOS平台上也是unity编译出来的。如果希望直接从IOS上面去看是否是unity游戏,可以提取游戏中的主模块查看是否有unity之类的函数即可。破解思路下面列举了一些破解版思路,如果能直接下断点在函数头修改寄存器可直接修改寄存器测试,遇到一些不能直接修改的,就用第二种方法,把修改后的Assembly-CSharp.dll注入到游戏中,让游戏执行
Java程序员的级别定义:对号入座,你在哪个阶段心里要有点数
初级刚入职场的新人一般都在这个级别了。这一点倒是不区分本科还是硕士,比如我第一家公司硕士毕业进去算初级工程师,本科是[助理工程师]。而公司对于刚毕业的同学的级别定义也是类似,本科T1-1,硕士T1-2。大级别都是T1,小级别上的细分区分可能也就是在薪酬起点上略有不同(别问我差多少,我也不知道,但估计差距不大)。中级要说中级和初级最本质的区分是什么,我觉得体现在独立性方面。初级的同学刚进公司,一般还会给安排一对一的导师帮助其快速上手,所以很多初级的同学在工作上就对导师存在依赖性。而工作一段时间(1、2年吧)后,他们对公司的各种开发流程规范已经相当熟悉,熟悉其参与项目中的部分业务、产品和代码,能够按要求完成业务功能开发。所以中级的工程师基本能够独立承担开发工作,甚至有些还能指导新人了,成长为公司「动作执行」层面的中坚力量。这个层面的基本要求就是:完成动作、达成品质、优化效率。但观察下来这个级别的工程师多数都能做到完成,但品质可能有瑕疵,效率上甚至可能有缺陷。而关于效率和品质总是在不断的迭代和改进中去不断完善的,自身也在这个过程不
重构系列谈(一):重构时机的把握
软件设计和软件实践的方法都是有成本的,在很多技术实践都需要做的情况下,如何对局势和形势作出一个判断和把握,找到恰当的时机进行重构,从而获得较佳的性价比呢?老乐尝试对这个问题给出一些建议。重构系列谈(一)重构时机的把握重构是一种在不改变软件系统外在行为的前提下,优化代码内部质量的方法,使得代码易于复用、易于理解、减少冗余,从而使软件实现的复杂度逼近于软件要解决问题的复杂度,降低理解和维护成本。重构的时机一般从以下两个角度考虑:1、缺失cleancode软件是对业务逻辑的一种表述,代码中的变量、类型、函数等所有代码元素都应该能够显式的、合理的表达业务逻辑,代码中如果出现了晦涩的命名、无序的排版、超高的圈复杂度、高低不平的语义(概要和细节不合理的同时存在,代码应该像英文的文章一样,按topic、brief、detail逐步展开,而不是三者无序混合杂乱,造成粗细粒度的语句杂乱无章的堆砌)、以及常提的22种坏味道等,这些都是要进行cleancode层级的重构,增加代码的可理解性,降低维护成本。2、需求变化方向变化在
**Mysql5.7新特性之----- 浅谈Sys库**
摘要:MySQL5.7开始引入了一个新的sysschema,sys是一个MySQL自带的系统库,在安装MySQL5.7以后的版本,使用mysqld进行初始化时,会自动创建sys库**Mysql5.7新特性之-----浅谈Sys库**随着mysql5.7的逐渐升温,人们对其也越来越感兴趣,我最近又重新学习了一下5.7版本的SYS库。**SYS库介绍什么是sys库?**MySQL5.7开始引入了一个新的sysschema,sys是一个MySQL自带的系统库,在安装MySQL5.7以后的版本,使用mysqld进行初始化时,会自动创建sys库,sys库里面的表、视图、函数、存储过程可以使我们更方便、快捷的了解到MySQL的一些信息,比如哪些语句使用了临时表、哪个SQL没有使用索引、哪个schema中有冗余索引、查找使用全表扫描的SQL、查找用户占用的IO等.Sys库的数据来源:sys库里这些视图中的数据,都是从information_schema里面获得的,目标是把performance_schema的把复杂度降低,让DBA能更
JavaScript--DOM事件
JavaScript--DOM事件事件就是文档或浏览器窗口中发生的一些特定的交互瞬间。一、HTML事件语法: