Go 在酷狗数据库中间件的应用
来自酷狗音乐/基础架构组。目前在酷狗主要负责数据库变更通知服务(数据迁移、同步、订阅)、消息队列、数据库中间件等工作,两年通讯设备开发经验,四年互联网经验,五年C/C++开发经验,一年Golang开发经验。(E-mail:liuyun827@foxmail.com)本次分享主要围绕Go在数据库中间件应用这方面展开;首先会聊一下程序开发的需求,具体会参考Go的特性是否满足这些需求;接下来会介绍一下近期采用Go语言开发的mysql中间件这个项目,整体方案,分表路由、故障切换、平滑扩容,系统运维,主要从以上这五个方面进行展开。程序开发需求程序开发对开发语言的要求,简单概括如下几点:语言特性精炼,容易入门开发效率高,代码逻辑清晰运行性能强,节省机器资源部署维护方便生态圈完善Golang的特性结合Golang与C之间区别,阐述一下Golang的特性:Go语法简练;没有学习压力开发效率高;语言描述能力接近于脚本语言性能高;接近于C/C++,充分利用资源容易部署;可执行程序,编译时解决上线部署、运行时
mysql 数据去重
从excel中导入了一部分数据到mysql中,有很多数据是重复的,而且没有主键,需要按照其中已经存在某一列对数据进行去重。添加主键由于之前的字段中没有主键,所以需要新增一个字段,并且将其作为主键。添加一个新的字段id,对id中的值进行递增操作,然后再设置为主键。对id字段进行递增的赋值操作如下:SET@r:=0;UPDATEtableSETid=(@r:=@r+1);然后设置为主键即可。去重添加玩递增的id字段后,就可以对数据根据某个字段进行去重操作,策略就是保存id最小的那条数据。DELETEFROM`table`WHERE`去重字段名`IN(SELECTxFROM(SELECT`去重字段名`ASxFROM`table`GROUPBY`去重字段名`HAVINGCOUNT(`去重字段名`)>1)tmp0)AND`递增主键名`NOTIN(SELECTyFROM(SELECTmin(`递增主键名`)ASyFROM`table`GROUPBY`去重字段名`HAVING
阿里云数据库 MySQL 5.7 单机版发布,看看适合你吗?
1.jpg首先,我不是这么认为的:原因有:RDS是高可用的,包括一主一备两个实例,遇到故障,比如宕机可以自动转移(据说大概几秒到几十秒内,不过目前我用了几年了,非常稳定,没有发生过故障)。那么相比之下,你就要买两台ECS自建MySQL,两台的价格我敢说绝对比RDS贵。另外,你也许根据网上的教程,会搭建个数据库主从(注意:主从不是主备哦),但又实现不了主从切换;也许你通过使用一些第三方开源软件搭建了主备,但你要知道维护成本有多高,遇到故障的时候,你敢保证一定能很快解决吗(比如1分钟内)?RDS集成的监控、备份、性能调优的工具,都是自建MySQL不具备的,如果真要自己搭建,一是又需要增加服务器,二是这些系统本身也有一定的复杂度,部署和使用都不简单。所以,RDS完全是物有所值的,至少我个人这么认为。自建数据库,要考虑的很多:硬盘用不用ssd?要不要做raid?做raid几?硬盘买多大?买大了浪费,买小了,下次你还得增加硬盘,甚至是重做raid,换机器停机迁移数据(笔者想起这些曾经做过多次的工作就觉得很恐怖,有木有?)。而RDS的存储空间
万字干货总结:MySQL优化原理学习,这一篇就够了!
本文让你重新理解并审视那些流行的优化建议,并在实际业务场景下合理的运用。说起MySQL的查询优化,相信大家收藏了一堆奇技淫巧:不能使用SELECT*、不使用NULL字段、合理创建索引、为字段选择合适的数据类型…..你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视这些优化建议,并在实际业务场景下合理的运用。MySQL逻辑架构如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器。下图展示了MySQL的逻辑架构图。MySQL逻辑架构整体分为三层,最上层为客户端层,并非MySQL所独有,诸如:连接处理、授权认证、安全等功能均在这一层处理。MySQL大多数核心服务均在中间这一层,包括查询解析、分析、优化、缓存、内置函数(比如:时间、数学、加密等函数)。所有的跨存储引擎的功能也在这一层实现:存储过程、触发器、视图等。最下层为存储引擎,其负责MySQ
MySQL服务器硬件和操作系统优化
1.拥有足够的物理内存来把整个InnoDB文件加载到内存中——在内存中访问文件时的速度要比在硬盘中访问时快的多。2.不惜一切代价避免使用Swap交换分区–交换时是从硬盘读取的,它的速度很慢。3.使用电池供电的RAM(注:RAM即随机存储器)。4.使用高级的RAID(注:RedundantArraysofInexpensiveDisks,即磁盘阵列)–最好是RAID10或更高。5.避免RAID5(注:一种存储性能、数据安全和存储成本兼顾的存储解决方案)–确保数据库完整性的校验是要付出代价的。6.将操作系统和数据分区分开,不仅仅是逻辑上,还包括物理上–操作系统的读写操作会影响数据库的性能。7.把MySQL临时空间和复制日志与数据放到不同的分区–当数据库后台从磁盘进行读写操作时会影响数据库的性能。8.更多的磁盘空间等于更快的速度。9.更好更快的磁盘。10.使用SAS(注:SerialAttachedSCSI,即串行连接SCSI)代替SATA(注:SATA,即串口硬
SSISDB6:参数和环境变量
SSISDB6:参数和环境变量参数(Parameter)是Package暴露给外界的接口,通过传递不同的参数值,能够控制Package的执行流程,执行不同的任务(Task)。参数分为Package级别的参数(PackageParameter)和工程级别的参数(ProjectParameter),Package参数只能作用于当前的Package,而Project参数能够作用于当前Project中包含的所有Package。参数的值只能引用,不能修改。参数除了直接赋值之外,还能通过环境变量来赋值。环境是变量的集合,参数引用不同环境中的变量,能够快速切换Package引用的参数值,例如,在测试环境和产品环境之间快速切换,这是参数化编程带来的便利。一,参数的值参数有三种类型的值:design_default_value,Default_Value和Execution_Value:design_default_value:在设计SSISProject时,设置parameter的默认值。Default_Value:在project
零基础如何学习Html,css,JS,JQ,框架
今日小编简略给我们共享一下学习前端的过程,以及面临的问题,和今后就业的状况,正本从事web前端许多年,协助新手处理这些小问题应该是小用菜一碟。一、HTML的学习,超文本符号言语,网页三剑客之一,作为静态布局,HTML的学习会相对简略许多,只需你不断的检查HTML手册,不断的去做通晓界面,就不会有什么问题,记住不要死记硬背。二、CSS的学习,现在的布局都是HTML+CSS+DIV的布局,CSS能够跟HTML完美的合作,CSS的学习也是非常的简略,不必多说。三、JavaScript是前端的中心,是web脚本言语运用最多的语音,也是你从事前端开发能够拿到多少薪酬的规范,一个人的原生JS的把握程度,将会决议他在前端这个职业中的开展长远,JS是不简略了解的,包含后边的结构都是js封装的,所以JS是很难自学好的,主张新手要有人辅导学习JS,否则你可能很快就抛弃。四、JQ的学习,这是一个非常优异的结构库,里边用JS封装了很多的功能,用JQ完成特效就相对简略一些,如果你JS学的非常好的话,那么JQ学起来必定是没有任何的问题。五
网页性能优化
修改DOM修改样式表用户事件(比如鼠标悬停、页面滚动、输入框键入文字、改变窗口大小等等)重新渲染,就需要重新生成布局和重新绘制。前者叫做"重排"(reflow),后者叫做"重绘"(repaint)。需要注意的是,"重绘"不一定需要"重排",比如改变某个网页元素的颜色,就只会触发"重绘",不会触发"重排",因为布局没有改变。但是,"重排"必然导致"重绘",比如改变一个网页元素的位置,就会同时触发"重排"和"重绘",因为布局改变了。对于性能的影响重排和重绘会不断触发,这是不可避免的。但是,它们非常耗费资源,是导致网页性能低下的根本原因。提高网页性能,就是要降低"重排"和"重绘"的频率和成本,尽量少触发重新渲染。前面提到,DOM变动和样式变动,都会触发重新渲染。但是,浏览器已经很智能了,会尽量把所有的变动集中在一起,排成一个队列,然后一次性执行,尽量避免多次重新渲染。一般的规则是:样式表越简单,重排和重绘就越快。重排和重绘的DOM元素层级越高,成本就越高。table元素的重排和重绘成本,要高于div元素提高性能的九个技巧有一些技
jqGrid 历史和现状(1)
jqGrid是前端用的比较多的jquery表格插件。jqGrid最早由保加利亚的TonyTomov创建的项目。在2007年,Tony使用jquery重写了一个用makoomba开发的grid插件。在2007年5月5日,发布了1.0beta版本。从下图可以看到,jqgrid的开源协议是MIT/GPL协议。2007年6月30日,发布1.1beta版本。从下图可以看出,大家最熟悉的demo演示当时还没有。2007年8月4日,发布2.0正式版。2007年10月7日,发布3.0候选版。3.0版本完全重新编写了jqgrid的代码,消除了插件的影响并开始兼容更高版本的jquery。2008年3月7日,发布3.0最后预览版。2008年3月22日,发布3.0正式版。2008年4月7日,发布3.1版本。2008年7月15日,发布3.2版本。2008年10月10日,jqgrid经过一年半的时间,备受jquery社区的关注,越来越多的人使用。
Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十二)Spring集成Redis缓存
作者:13GItHub:https://github.com/ZHENFENG13版权声明:本文为原创文章,未经允许不得转载。整合Redis本来以为类似的Redis教程和整合代码应该会很多,因此也没打算特别认真的做这个教程,但是看了一下网上类似的教程好像不是特别多,刚好也要在perfect-ssm项目中整合Redis,因此花了两天时间做了整合和测试,并整理在这篇文章中,希望给看到教程的朋友一些帮助。pom.xml依赖安装
WebSocket探秘
长连接:一个连接上可以连续发送多个数据包,在连接期间,如果没有数据包发送,需要双方发链路检查包。TCP/IP:TCP/IP属于传输层,主要解决数据在网络中的传输问题,只管传输数据。但是那样对传输的数据没有一个规范的封装、解析等处理,使得传输的数据就很难识别,所以才有了应用层协议对数据的封装、解析等,如HTTP协议。HTTP:HTTP是应用层协议,封装解析传输的数据。从HTTP1.1开始其实就默认开启了长连接,也就是请求header中看到的Connection:Keep-alive。但是这个长连接只是说保持了(服务器可以告诉客户端保持时间Keep-Alive:timeout=200;max=20;)这个TCP通道,直接Request-Response,而不需要再创建一个连接通道,做到了一个性能优化。但是HTTP通讯本身还是Request-Response。socket:与HTTP不一样,socket不是协议,它是在程序层面上对传输层协议(可以主要理解为TCP/IP)的接口封装。我们知道传输层的协议,是解决数据在网络中传
解决 vs 出现Error MC3000 给定编码中的字符无效
在xaml写中文注释,发现编译失败ErrorMC3000给定编码中的字符无效我的xaml写了一句代码
ActiveReports 报表控件发布全新 V12 版本,多项新特性增强设计能力
日前,全球控件行业领导者葡萄城宣布正式发布报表控件产品ActiveReports报表控件v12版本,新版本再次针对设计器的功能及易用性方面做了极大的增强,真正让用户零编码实现复杂报表的设计。ActiveReports报表控件v12包含的主要更新有:1.灵活可定制的安装选项,可指定VS版本,也可只安装独立报表设计器2.无需复杂的ETL(数据抽取、转换、装载)过程,原生实现跨数据源操作3.报表导出增加对JSON和CSV的支持4.页面报表支持子报表嵌入,在保证报表布局一致性的基础上,极大增强表现形式5.新增多种生产制造、物流专用条码类型6.矩表控件又增RepeatToFill的属性7.RPX报表转换器8.文本框新增最小缩放比例属性无需ETL,即可实现跨数据源操作化繁为简,将复杂问题简单化,设计人员只需要进行属性设置。在创建复杂报表时,常常因为不同业务数据会存储于不同的业务环境,客户信息存储与CRM,销售数据存储与SCM,而订单信息又存在ERP,当要设
手把手教渗透测试人员打造.NET可执行文件
导语:在这篇文章中,我们会对上一篇文章中介绍的.NET可执行文件进行一些改进。首先,我们会将有效载荷的PowerShell代码嵌入到exe文件中。在这篇文章中,我们会对上一篇文章中介绍的.NET可执行文件进行一些改进。首先,我们会将有效载荷的PowerShell代码嵌入到exe文件中。接下来,将为其添加一个自定义应用程序清单,来控制我们的程序在哪个级别运行。如果你还没有看过第一篇内容的话,你可以在这里找到,或者,你可以直接阅读第一篇文章中的相关代码就行了,地址在这里。单级有效载荷跟通过PowerShell下载和执行有效载荷不同,我们这里要将有效载荷写入文件,然后让PowerShell从中进行读取,并执行它。*“等等,啥?这是要把这些东西放到硬盘上吗?!”*是的,但是……我们会进行加密处理,毕竟很多应用程序都会向硬盘上面写东西的,所以,这不会引起别人的怀疑。*当然,这里算不上真正意义上的加密技术,但是对我们来说已经足够了。我们将对有效载荷的每个字节进行异或运算,然后进行base64编码。也就是说,我们的异或运算就是前面所
计算2个时间之间经过多少Ticks
publicvoidDurationSeconds(){TimeSpants=(_EndDate-_StartDate).Duration();//Console.WriteLine("DuractionSeconds:{0}",ts.Ticks/10000000L);Console.WriteLine("DuractionSeconds:{0}",ts.Ticks/10000000D);}publicvoidDurationMinutes(){TimeSpants=(_EndDate-_StartDate).Duration();//Console.WriteLine("DuractionMinutes:{0}",ts.Ticks/(10000000L*60));Console.WriteLine("DuractionMinutes:{0}",ts.Ticks/(10000000D*60));}publicvoidDurationHours(){TimeSpa
LinqToObjectiveC–Linq风格的查询API
基于谓词筛选值的序列。下面的示例使用where方法查找为25的人员:NSArray*peopleWhoAre25=[inputlinq_where:^BOOL(idperson){return[[personage]isEqualToNumber:@25];}];linq_select-(NSArray*)linq_select:(LINQSelector)transform;将序列中的每个元素投影到新表中.array中的每个元素都由’选择器’转换成新的表单,然后用于填充输出array。下面的示例使用返回每个Person实例的NAME的选择器。输出将是NSString实例的array。NSArray*names=[inputlinq_select:^id(idperson){return[personname];}];linq_selectAndStopOnNil-(NSArray*)linq_selectAndStopOnNil:(LINQSelector)t
RabbitMQ用户增删及权限控制
RabbitMQ用户增删及权限控制用户角色分类none:无法登录控制台不能访问managementplugin,通常就是普通的生产者和消费者。management:普通管理者。仅可登陆管理控制台(启用managementplugin的情况下),无法看到节点信息,也无法对policies进行管理。用户可以通过AMQP做的任何事外加:列出自己可以通过AMQP登入的virtualhosts查看自己的virtualhosts中的queues,exchanges和bindings查看和关闭自己的channels和connections查看有关自己的virtualhosts的“全局”的统计信息,包含其他用户在这些virtualhosts中的活动。policymaker:策略制定者。management可以做的任何事外加:查看、创建和删除自己的virtualhosts所属的policies和parametersmonitoring:监控者。management可以做的任何事外加:列出所有virtua
懒程序员笔记
坚持更新“懒程序员改变世界”的博客已经两年了,近期准备和老友办一个“懒程序员笔记”的订阅号,既然都是“懒程序员”的主题,那就围绕着它写点儿什么吧。有一篇文章叫《世界是由懒人创造的》(真的是马云分享的吗?),大致意思就是懒人推动了世界的发展。因为懒,才能创造出一堆的发明,来让我们的生活更方便。当然了,文章弥漫着浓浓的调侃氛围。赞赏、批判这篇文章的人都有不少,至于我的观点嘛,想必从本文的标题中也能看出一二。但是请别忘记,原文最后也写了:“要懒出风格,懒出境界”。在程序员的世界中,偷懒尤其重要。懒得造轮子?网上大把大把的开源库等着你试用。不想稍微改点代码就从头到位测一遍?那就用自动化测试吧。不想每次部署的时候手忙脚乱?那就上持续交付。不想每次总跟客户扯皮?那就搞敏捷,把客户变成团队的一员。不想让开发和运维互斗?那就拥抱DevOps,大家都在一条船上。可以说,“偷懒”是技术进步的原动力。有些人喜欢说“痛点驱动”,其实它们是一回事,因为没法儿偷懒,所以很“痛”啊。程序员们也非常厌恶重复性的劳动,例如填写工时、定期发送邮件、给别人权限
写代码时,程序员都在想什么
01读大神写的代码的时候:这是什么…………我X,太牛X了。读刚来的程序员写的代码的时候:这是什么…………我X,太傻X了。02读大神写的代码的时候当读其他程序员写的代码的时候03当别人写的bug,让自己发现的时候:我操这个大撒比写出这么个烂代码幸亏有哥这样神一样的存在才发现哥真是救世主没有哥这个公司分分钟要倒闭。当自己写的bug,被自己发现的时候:卧槽,隐藏的很深啊!哥就是犀利,自己开发自己测试,看测试那帮撒逼什么也不会干,这么明显的bug都测不出来,真是一群废物!还好没有被领导发现。当自己写的bug,被别人发现的时候:卧槽,这货会操作吗?是不是真有bug啊,该不会是这傻逼弄错了吧?可以重现么?什么?可以重现?。。。这个程序刚上线还处于调试阶段,有bug很正常谁的程序没bug,连操作系统都有bug。。。没关系,问题不大,要不用
非典型外包提供商「骇客山谷」不仅建立程序员社区,还给业务做减法
在骇客山谷创始人关易燃看来,绝大多数企业的死亡,是由于技术不过关或者对产品需求把控不到位。而真正具备很强技术能力的人才,又缺乏产品的创新意识。公司在创业初期决定做公众号、小程序和APP时,会面临太多的不确定性。顺理成章的,很多创始人想到了外包公司,分析功能,谈价钱,付款。思路是没错,但很多外包公司的目的是一锤子买卖式的赚钱,所以很多外包不怕功能多、需求复杂和逻辑混乱,他们没有对项目预期的规划和预算,只要创始人有钱,什么功能都能实现。所以找外包的效果要么是产品没有按期上线,要么开发出的产品功能不全、用户体验极差。骇客山谷共有两条业务线,其中一条是叫“快上线”的外包业务。与其他外包业务不同之处在于,在了解创始人思路后,会站在创始人、项目的角度,把成本尽量控制在1W美金内为其开发相应产品。创始人找过来后,分析业务后指明哪些功能是需要技术开发实现的,哪些功能其实并不需要开发,用市面上现有的产品、技术就能实现。总的来说,给功能、产品做减法,将其变少、变精,跑通最为核心的流程。举个栗子,创始人想在微信公