博文原创,转载请联系博主! 使用C语言也有两个年头了,BUG写出来过不少,也改过不少BUG.但是偏偏就是有这么一个BUG让我手头的项目停工了两天,原因从百度找到谷歌,资料从MAN手册找到RFC也没有找到问题的原因,但是真正发现BUG原因之后实在是让自己汗颜. 不管如何,决定把这个BUG写进博文,也是给学习C语言的朋友们提个醒,查看BUG的眼光不要太高,思考问题要自底向上思考. 具体项目在我的github里: https://github.com/yue9944882/HttpAccelerate…
这一周线上碰到一个诡异的BUG. 线上有个定时任务,这个任务需要查询一个表几天范围内的一些数据做一些处理,每隔十分钟执行一次,直至成功. 通过日志发现,从凌晨5:26分开始到5:56任务执行了三次,三次都因为SQL查询超时而执行失败,而诡异的是,任务到凌晨6:00多就执行成功了. 每天都是凌晨五点多失败,凌晨六点执行成功. 点开异常日志一看是这样的: 总结来说就是MySQL查询超时. 像这种稳定复现的BUG,我原以为只需三分钟能定位,没有想到却耗费了我半天的时间. 排查之路 Explain 看到…
联想ERP项目实施案例分析(10):回到最初再反思IT价值 投入上千万(未来每年的维护费也非常高),投入一年实施时间,高级副总裁亲自挂帅,各级业务部门管理者亲自负责.骨干业务人员充当区域IT实施者/推进者/先锋示范者,推动力度不可谓不大,投入不可谓不大. 我回想了回想,联想日常的管理水平非常高.运行力非常高.精细化管理程度也非常高.组织设计/人员分工/专业能力/士气都不错,不像非常多中国企业本身就管理不到位,效率不高往往是由于:层层管控道道审批.老板一言堂/下属谁也不拍板仅仅和稀泥.对计划制定和…
一个程序员在没有成长成为架构师之前,几乎都要跟 Bug为伴,程序员有很多时间都是花在了查找各种 Bug上. 我印象深刻的一个Bug, 是一个服务器网络框架无锁队列的 Bug .那个 Bug 连续查找了五天的时间,才最后定位出来. 当时我们的分布式存储系统出现了性能瓶颈,定位后发现瓶颈是在服务器网络框架上,所以我们决定为此替换一个最新研发的网络框架.这个新的网络框架为了追求高的性能,采用了无锁队列的设计. 第一天编码测试完成后.测试环境跑,完全正常,特地搞了一堆 log 来重放请求,程序跑得特别欢…
作为一个薪水两万起步的工作,我想知道这些牛人们都会哪些技能呢? Web安全相关概念.熟悉渗透相关工具.渗透实战操作.关注安全圈动态.熟悉Windows/Kali Linux.服务器安全配置.脚本编程学习.源码审计与漏洞分析.安全体系设计与开发等. 看着就很厉害的样子,怪不得技术好的牛人都叫大神呢,虽然我们达不到大神的境界,但是我们可以了解一些简单的基础知识,比如说今天给大家介绍一个实用技能:利用BurpSuite学习注入工具语句. 大家都知道,BurpSuite可以代理浏览器,那它还能代理别的客…
惟楚有材,于斯为盛 本文有感于2019长沙互联网求职招聘大会,内容比较多,但都是我自己的一些所见.所感和所愿. 2019年3月的最后一天,参加2019长沙互联网求职招聘大会,看到了很多的招聘企业,也看到了很多来求职的技术朋友们.金三银四,找工作的黄金时间,也是招聘的旺季!从去年开始,网上一直可以看到说互联网的寒冬来了,一些一线城市互联网公司的程序员们纷纷被“优化”,那么对于长沙来说,一个互联网发展离一线差距还有点远的城市,今天在三月的最后一天能够聚集这么多优秀的公司,一起组织这次线下的招聘大会,…
Spring 循环引用(一)一个循环依赖引发的 BUG Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) Spring 循环引用相关文章: <Spring 循环引用(一)一个循环依赖引发的 BUG>:https://www.cnblogs.com/binarylei/p/10325698.html <Spring 循环引用(二)源码分析>:https://www.cnblogs.com/binarylei/…
android一个下拉放大库bug的解决过程及思考 起因 项目中要做一个下拉缩放图片的效果,搜索了下github上面,找到了两个方案. https://github.com/Frank-Zhu/PullZoomView 这个库本来做的还可以,不过有个缺陷就是,当scroolview滑动到底部,再向上拉动,会导致放大效果不连续,需要重新释放,再次下拉,这对于追求细节的我来说,不可忍受.看了半天他的代码,感觉他的实现方式很难修改为我想要的效果,后来就放弃了. https://github.com/G…
1. 缘起 这几天调gcc 7.5.0 +glibc 2.23的交叉编译工具链,由于gcc 7.5.0的默认打开Werr,偶然发现了glibc一个隐藏了二十年的世纪大bug. 这个bug在glibc 2.0版本刚开始就引入了,但直到2.25版本才最终解决,即使按glibc-2.0.1.bin.alpha-linux.tar.gz 版本的发布时间(04-Feb-1997)到glibc-2.25.tar.bz2 的发布时间(05-Feb-2017),也持续了20年加一天. 用gcc 7.5编译的时候…
目录 简介 本文的目标 支持多个图片服务 http2处理器 处理页面和图像 价值上亿的速度优化方案 总结 简介 其实软件界最赚钱的不是写代码的,写代码的只能叫马龙,高级点的叫做程序员,都是苦力活.那么有没有高大上的职业呢?这个必须有,他们的名字就叫做咨询师. 咨询师就是去帮企业做方案.做架构.做优化的,有时候一个简单的代码改动.一个架构的调整都可以让软件或者流程更加高效的运行,从而为企业节省上亿的开支. 今天除了要给大家介绍一下如何在netty中同时支持http和https协议之外,还给大家介绍…
这是Thinking in java 中的一道题,下面是我的解决方案: package test; import java.util.LinkedList; import java.util.ListIterator; /** * * 创建一个LinkedList,然后在其中插入多个值,确保每个值都插入到List中间(偶数中间两个数之一,奇数在正中间) * */ public class InsertInMiddle { public static void main(String[] args…
js字符串长度计算(一个汉字==两个字符)和字符串截取 String.prototype.realLength = function() { return this.replace(/[^\x00-\xff]/g, "**").length; // [^\x00-\xff] - 匹配非双字节的字符 }; String.prototype.realSubstring = function(n){ var str = this||''; if(this.realLength()<=n…
在hibernate有三种类型的高速缓存,我们使用最频繁.分别缓存.缓存和查询缓存.下面我们使用这三个缓存中的项目和分析的优点和缺点. 缓存它的作用在于提高性能系统性能,介于应用系统与数据库之间而存在于内存或磁盘上的数据. 我们编程的模式通常是这种page-->filter-->action-->server-->dao-->db,能够在这一个请求过程中的不论什么一点增加缓存,上一篇介绍的是在server层加缓存:service利用aop加缓存. 为页面添加缓存:为页面加缓存…
同一个tomcat多个项目共享session,一个tomcat两个项目共享sessionId >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ©Copyright 蕃薯耀 2017年7月12日 http://www.cnblogs.com/fanshuyao/ 一个是2个项目,一个是web-sess…
HTML代码: 一个节点两个关联input  多出现于密码框 先需要模拟点击进入第一个input,才能激活第二个input. 代码: driver.find_element_by_name('Textbox1').click() driver.find_element_by_id('TextBox2').send_keys(password)…
-(void)addLabel{ UILabel *label = [[UILabel alloc]init]; label.backgroundColor = [UIColor grayColor]; [self.view addSubview:label]; label.translatesAutoresizingMaskIntoConstraints = NO; NSLayoutConstraint *leftic =[NSLayoutConstraint constraintWithIt…
一.有时在编译NSIS时会出现如下错误: 注意: 您可能有有一个或两个(大)的旧临时文件 残留在临时目录文件夹中 (通常这种情况只会发生在 Windows 9x 系统中). 二.本人遇到的问题原因: 第一次编译一半时,被我强行结束进程,但是它的进程并没有全部结束,从而导致临时文件一直存在. 在下次再编译时,就会出现这个错误. 三.解决方法: 在任务管理器中找到进程“makensisw.exe”和"makensis.exe",并杀死这两个进程,临时文件会自己删除. 再次编译通过.…
移动端H5页面开发,碰到一个字体变大的BUG webkit内核下,对不定高宽的元素可能会放大其字体.那么,就可以设置一个max-width:或者使用-webkit-text-size-adjust: none;禁用缩放.…
我在 feature 分支开发得多些,但总时不时被高优先级的 BUG 打断需要临时去 develop 分一个分支出来解 BUG.git 2.6 以上开始提供了 worktree 功能,可以解决这样的问题. 阅读本文将了解使用 git worktree 高效进行并行开发的方法. git worktree 从一个仓库中可以创建多个工作目录,方便多开编辑器并行开发. 快速上手 git worktree add -b <新分支名> <新路径> <从此分支创建> 例如,你正在某个…
对于学习一门新的语言,关键是学习新语言和以前掌握的语言的区别,但是也不要让以前语言的东西,固定了自己的思维模式,多看一下新的语言的编程思想. 1.引包 using System;java用import2.构造函数和java语法相同3.析构函数  变量和类的对象都有生命周期,生命周期结束,这些变量和对象就要被撤销.  类的对象被撤销时,将自动调用析构函数.一些善后工作可放在析构函数中完成.  析构函数的名字为~类名,无返回类型,也无参数.Person类的析构函数为~ Person().  C#中类…
Java程序员学C#基本语法两个小时搞定(对比学习)   对于学习一门新的语言,关键是学习新语言和以前掌握的语言的区别,但是也不要让以前语言的东西,固定了自己的思维模式,多看一下新的语言的编程思想. 1.引包 using System;java用import2.构造函数和java语法相同3.析构函数  变量和类的对象都有生命周期,生命周期结束,这些变量和对象就要被撤销.  类的对象被撤销时,将自动调用析构函数.一些善后工作可放在析构函数中完成.  析构函数的名字为~类名,无返回类型,也无参数.P…
在日常的 web 开发中,后端人员常基于现有的 web 框架进行开发.但单纯会用框架总感觉不太踏实,所以有空的时候还是看看这些框架是怎么实现的会比较好,万一要排查问题也快一些. 最近在学习 go 语言,也尝试学习一下 go 语言当前最流行的 web 框架 gin,于是有了这篇学习笔记.看完这篇文章应该能理解 gin 最基础的操作了,但由于 gin 是基于 go 原生的 http 服务器搭建的,所以会先从 go 网络基础库中的 http 服务器开始说起. 目录 1. 认识请求处理器 2. 服务器启…
列表:一个打了激素的数组 让编程改变世界 Change the world by program 列表:一个打了激素的数组 有时候我们需要把一堆东西暂时存储起来,因为他们有某种直接或者间接的联系,我们需要把他们放在某种"组"或者"集合"中,这将来可能要用上. 很多接触过编程的朋友都知道或者听说过数组,数组这个概念呢,就是把一大堆同种类型的数据挨个儿摆在一块儿,然后通过数组下标进行索引.但是呢,数组有一个基本要求,就是你所放在一起的数据必须类型一致. 由于Python…
题目:给定一个长度为N的数组,其中每个元素的取值范围都是1到N.判断数组中是否有重复的数字.(原数组不必保留) 方法1.对数组进行排序(快速,堆),然后比较相邻的元素是否相同.时间复杂度为O(nlogn),空间复杂度为O(1). 方法2.使用bitmap方法.定义长度为N/8的char数组,每个bit表示对应数字是否出现过.遍历数组,使用 bitmap对数字是否出现进行统计.时间复杂度为O(n),空间复杂度为O(n). 方法3.遍历数组,假设第 i 个位置的数字为 j ,则通过交换将 j 换到下…
<span style="font-size:18px;">package com.io.other.split; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties;…
我们有一个job A, A只是配置了一些参数,它会去触发模板job B. 我一开始点击构建A, 马上发现参数配置不对,于是撤消了构建,但是我没有发现B已经被触发,我重新配置参数,然后再次构建A,这个时候就有两个B在同时构建一个项目,时间差了几十秒. 两个B在不同的机器上进行,第一个B,我们暂且叫B1(构建号644), 第二次的叫B2(构建号#645), B1构建的机器最后硬盘空间不足失败了,B2成功了.但是奇怪的是B2#645在19:30构建完成后居然去检查B1#644的状态,此是B1还没有构建…
项目中没用spring 的restTemplate 而是采用 jersey来做rest 的实现,一直用着,也没发现有什么不对,后来加入了,以quartz用硬编码方式实现,结果启动项目的时候报错 ,具体信息为job id重复.后来经排查是因为:jersey依赖于org.springframework.web.context.ContextLoaderListener初始化 的ApplicationContext,而spring mvc 依赖于org.springframework.web.serv…
先写一个简单App页面,其实就是简单修改了react-router的官方例子中的animations例子,修改了两个地方: 1.路由方式由browserHistory修改为hashHistory 2.在Page1组件中打印console.log('render page1'); 直接上代码: 然后现在点击Page1链接,会发现render page1 被打印了两次,说明,Page1组件被渲染了两次,假如Page1组件比较复杂的话,岂不是很影响性能: 为了仔细研究为什么会render两次,下面把P…
1.背景 MGR是个好东西,因为他从本质上解决了数据不一致的问题.不光是解决了问题,而且出自名门正派(Oracle的MySQL团队),对品质和后续的维护,我们是可以期待的. 但是在调研的过程中,发现有个严重的bug(https://bugs.mysql.com/bug.php?id=92690),在网络有延迟.丢包和数据损坏时,会导致各个节点间数据严重不一致.而上述网络情况,在跨地域部署时候,出现的概率还是比较高的,因此,必须解决上述问题.我也一直在等待官方团队的修复(该bug在2018年11月…
其实,面试官并不关心你描述的这个bug是否真的有价值,或有多曲折离奇?他只是: * 了解你平时工作中的测试能力 所以,这就要求的你平时工作中遇到bug时试着自己去定位,定位bug的过程远比你的单纯的执行测试用例有“价值”(自我技能提高的价值),在定位bug的过程中你需要掌握和运用更多知识. 另外,建议你平时养成总结的好习惯,发现的bug,开发解决了,最好问问他原因以及解决的方法,这样再遇到类似问题时,自己也可以试着定位解决.遇到难解决的bug,也可以把最终的解决过程记录下来.(这不是就有素材了)…