自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

转载 生产环境出现事故,开发和运维都有责任,到底该谁背锅

发生一档子事情,公司技术团队之中有两个部门,一个开发一个运维,开发负责公司项目软件项目实现,运维负责项目运行生产环境服务器与数据的管理与维护。 前两天生产环境发生一起故障,项目依赖的redis服务器由于内存不足而出现写入故障,有一批用户丢失了一小时的数据, 公司发出批评通告, 运维全责,运维部门涉事相关员工与领导统统被罚。为什么运维被罚,因为服务器内存不足会报警,向负责服务器的...

2019-01-18 10:58:00 1204

转载 JavaScript日历控件开发

概述在开篇之前,先附上日历的代码地址和演示地址,代码是本文要分析的代码,演示效果是本文要实现的效果代码地址:https://github.com/aspwebchh/javascript-control/tree/master/calendar演示地址:https://www.chhblog.com/html/demo/calendar.html本文的目的除了详细说明开发一款具...

2018-10-11 10:31:00 419

转载 面向对象,更适合JavaScript

面向对象程序设计是软件开发中一个很庞大很复杂的话题,它并不是仅仅学会类、继承、封装、多态这些面向对象编程语法元素就表示掌握的,这些语法元素只是实现面向对象程序的工具, 就像砖块、水泥能搭建小屋,也能造高楼大厦,然而在这里重要的不是砖块水泥,而是其它因素。所以,利用面向对象技术写程序,语法元素不是关键,关键在于组织这些语法元素的方法和技巧。这些方法和技巧,比如说那威名远播的23个...

2018-05-07 09:06:00 159

转载 一个普通程序员眼中的「技术」

技术是程序员安身立命的根本,可一味的追求提高技术却未必能从技术上获得相应的回报。通常情况下, 程序员要使自己所学的技术产生相应的价值或者收入必须依托于某个公司, 靠自己单干很难赚到钱, 即使能赚到钱性价比也不如替企业打工来的高。 所以程序员一般都是替别人打工的。 程序员在企业里打工,目的就是替公司解决相应的问题, 可程序员们有时...

2018-04-23 14:43:00 200

转载 深入理解MVC

MVC无人不知,可很多程序员对MVC的概念的理解似乎有误,换言之他们一直在错用MVC,尽管即使如此软件也能被写出来,然而软件内部代码的组织方式却是不科学的,这会影响到软件的可维护性、可移植性,代码的可重用性。MVC即Model、View、Controller即模型、视图、控制器。我在和同行讨论技术,阅读别人的代码时发现,很多程序员倾向于将软件的业务逻辑放在Controller里...

2018-04-16 08:59:00 390

转载 一个条件判断引发的思考

有一套web系统,会部署到不同的服务器上分别运行,这套系统类似于市面上的OA系统一样, OA开发商会给不同的企业客户部署一套独立的互不关联的系统,我维护的这套系统也差不多,分别被部署在互不关联的服务器上,当然,这些系统的代码是同一套,功能也都是相同的。前两天,有客户反馈,他们系统的某个功能无法正常使用。我开始排查问题,发现部署在其它服务器的系统这个功能都是正常的,唯独这个客户的...

2018-04-12 14:42:00 89

转载 一个毕生难忘的BUG

记得以前接手过一个Java项目,服务器程序,直接让Jar在linux上跑的那种,这个项目由两个web服务组成,也就是两条Java进程,主进程 xxx.jar,辅助进程 xxx_helper.jar。主进程程序中某些功能依赖于辅助进程提供的服务。困扰我们的BUG是在生产环境中辅助进程xxx_helpler.jar不定时无故崩溃,且无jvm错误日志产生,也无被系统本身因为...

2018-04-03 09:30:00 279

转载 到底该不该使用存储过程

看到《阿里巴巴java编码规范》有这样一条关于这条规范,我说说我个人的看法用不用存储过程要视所使用的数据库和业务场景而定的,不能因为阿里巴巴的技术牛逼,就视他们的手册里的每一项规范为圣经, 盲目的去遵循。对于手册中的这项规范,我觉得使用MySQL的程序员认同占多数, 而使用SQL Server的程序员反对占多数。 原因在于MySQL对SQL编程和复杂查询...

2018-02-24 09:26:00 102

转载 MySQL查询性能优化一则

公司有一套Web系统, 使用方反馈系统某些页面访问速度缓慢, 用户体验很差, 并且偶尔还会出现HTTP 502错误。这是典型的服务器端IO阻塞引发的问题,通过对访问页面的程序逻辑进行跟踪,发现问题应该是出在某个SQL查询上。在页面程序运行的某个步骤中,有这样一段SQLselect distinct(server) from user_record where ty...

2018-01-30 09:22:00 132

转载 使用Java内置的Http Server构建Web应用

一、概述使用Java技术构建Web应用时, 我们通常离不开tomcat和jetty之类的servlet容器,这些Web服务器功能强大,性能强劲,深受欢迎,是运行大型Web应用的必备神器。虽然Java的设计初衷就是用来开发大型应用的,然而有时候我们开发的程序只是简单的小型应用,对于功能的需求和性能的要求并不高, 可能仅仅就几百行甚至几十行代码,这个时候使用tomcat之...

2018-01-17 09:07:00 111

转载 程序员的健康问题

先说背景,本人程序员,在一家游戏公司上班,除了吃饭上厕所,其它时间就是坐在电脑面前敲代码,我的其他同事也是如此。 程序员这份工作没有危险性, 坐在电脑面前能出什么事? 除非电脑爆炸。虽然偶尔能看“某某公司程序员加班过度导致猝死”这样的报道,但是毕竟是极少数,甚至比买彩票中大奖的几率还要低。此外,猝死也不是程序员的专利,比如说医生这个职业中奖次数比程序员还要多。 然而,直到前些天,我才真切...

2018-01-16 08:59:00 176

转载 一款能帮助程序员发现问题的软件

除了赚钱,我有一个愿望是做一个软件,有好多人喜欢用的那种。可是这并不容易,首先这个软件要能恰到好处的解决别人的问题;其次,软件要做的足够好用, 如果存在同类型的软件,至少要做的比对方好。很久了,我绞尽脑汁也没有做到这件事情。后来我想,既然写不出能解决别人问题让别人喜欢用的软件,那就写能解决自己问题,自己喜欢用的软件。跑不了先从走开始嘛, 如果连走都不会,那就趁早回家躺着,别做这...

2017-12-20 09:47:00 119

转载 写了一个bug,最后却变成了feature,要不要修呢?

事情是这样子的,前不久接到一个需求,为一个游戏开发礼包码功能通常一款游戏运营期间会搞各种各样的活动吸引玩家,其中最常见的就是发放礼包, 玩家可以通过礼包码兑换礼包。用礼包码兑换礼包有个一限制,游戏运营商不会让玩家无限制兑换, 针对某一次发放礼包的活动,一个账号只能兑换一次, 即使玩家手上有多个礼包码也不能多次兑换。 打个比方,某一款游戏搞活动向玩家发放礼包,...

2017-11-01 09:13:00 148

转载 不管你信不信,反正我信了 - 怎样做好程序员

很多程序员, 包括我自己, 在职业生业道路上前进时会陷入一个误区, 认为对程序员而言最重要的是技术,因而不断的提升技术水平来武装自己。他们写代码是以技术为驱动的,比如说在项目中使用XX高端的技术,实现XX设计模式、精妙算法。 这没有什么问题,追求技术水平的提高是好事, 能更好的解决问题,能提升自身的行业竞争力。 但是, 在追求技术的过程中,不能忽略掉一样更加重要的事物。...

2017-10-26 09:24:00 77

转载 细说10月24号为什么是程序员的节日?

10月24日,有人把这个日子定为程序员的节日,因为1024这个数字和程序员密切相关。下面我就为大家解密,1024跟程序员有什么关系,程序员写程序又到底是怎么回事?我们所使用的电脑和手机装着各种各样的软件,能帮我们完成各种各样的任务,帮我们工作,供我们娱乐,这部神奇的机器似乎无所不能。但是你关掉显示器,拆开机箱, 会发现里面只有密密麻麻的电路, 这些电路以一种...

2017-10-25 09:44:00 574

转载 浅谈 var 关键字

提起 var关键子,程序员的第一反应就是JavaScript, 事实上这个关键子在其他语言中也有被采用。比如说C#, 比如说kotlin, 用法和JavaScript中使用差不多,作为要声明变量的前缀var myInt = 1;var myList = new List<String>();var myValue = getValue();...

2017-10-24 10:06:00 167

转载 px转vw和vh的工具(对前端同学有用)

CSS3中有两个新尺寸单位vw和vh, 这两个单位非常适合于开发移动端自适应页面。假如说有一个设计师做了一张1136x750px的页面,这长页面是针对iPhone6的屏幕设计的。 前端开发工程师将这张设计稿转换成网页, 网页中所有的元素尺寸都用px硬编码, 那么这张网页在iPhone6中能跑的好好的,但是到了其他手机中会容易出问题, 毕竟很多手机的屏幕尺寸和iPhone6是...

2017-10-16 09:26:00 1952

转载 lambda表达式杂谈

var personInfo = [ { name: "张三", age: 20, gender: "male" }, { name: "李四", age: 18, gender: "male" }, { name: "王五", age: 19, gender: "male" }, { name: "春香", age: 17, g...

2017-10-09 09:33:00 68

转载 Java平台与.Net平台在服务器端前景预测

如果是服务器端, 毫无疑问C#是很难跟Java拼的。就算将来,微软逆袭的机会也很渺茫了。就技术的先进性来说, Java平台是不如.Net平台, 但是, 程序员对于两个平台,直接接触的基本以语言为主,也就是Java和C#,至于JVM和CLR,这两个运行时的好坏, 对于程序员而言 ,没有那么明显。所以, 程序员的注意力都是在Java和C#两门语言身上的。就语言特新而言...

2017-09-25 09:23:00 117

转载 你编程不厉害, 是因为还不够努力

说一个人, 如果是写代码的, 又爱上知乎逛逛, 应该知道他简单的介绍下这个人。 他姓龚,年龄应该在八零后,八五前这个范围, 现在在微软工作,图形学领域。他技术很牛逼, 牛逼到我们普通的程序员终其一身也没有办法到达他的境界。普通程序员都是大学开始接触编程技术的,而他在小学时就开始编程了,高中毕业前就开发出了一款游戏引擎。 说直接一点, 在大学里,专业方面, 老...

2017-09-21 10:09:00 146

转载 等待与希望,.NET Core 的发展壮大

前几天微软推出了.net core 2.0, 尽管我现在使用的技术栈和微软已经没有一丝瓜葛, 但碰到微软放大招,心里还是瘙痒难当,忍不住偷偷摸摸的体验了一把。 谁叫我是通过微软系技术入的行呢,旧情难忘, 藕断丝连啊。就像你们的初恋情人一样, 怎么忘也忘不掉.net core 1.X两年前就出来的, 我没去碰。 因为微软的重量级产品都一个尿性,第一个版本上线, 会有各不完善,...

2017-08-22 09:30:00 57

转载 技术无界

今天开始着手开发一个android项目。 我曾经有过几个android项目的经验, 但近些年一直在跟服务器相关的程序打交道, 开发客户端那一套技术都快忘记光了。所幸, 我的脑子里对于android开发相关的细节还有淡淡的印象,加上参考我以前写的项目的代码, 整个app技术核心相关的结构已经快被我拼凑完成,接下来就是边看api文档边开发了。此时,假如把我电脑的网线给拔了...

2017-08-15 09:33:00 80

转载 做人肉代码翻译器是什么感受?

程序员编码的常规流程是通过大脑把将要实现的功能切分成一个个逻辑单元,使用编程语言将这些逻辑单元实现并组织在一起,积少成多, 形成电脑软件缺乏经验的程序员可能并不是以这总方式实现功能,对于一个功能,在逻辑实现的逻辑组织上, 他们也许不会提前组织和规划。 想到哪写到哪,想写什么写什么。其实这样做也没什么大问题, 只是效率低了点、代码质量差了点、 BUG多了点、维护难了点,我以前就是...

2017-08-09 09:04:00 213

转载 为什么要使用元组?

在JavaScript或php之类语言, 因为不支持元组, 严重影响了编程体验和代码可读性,用过从语言层面原生支持元组语法的语言后, 才会觉得不支持元组的语言真的low到了家,元组真的是编程语言中不可多得的优良特性。元组最重要的特点是用来实现多值返现, 对于天生就支持多值返回特性的语言, 如golang, 元组存在的意义不大。 然而, 对于只支持单反回值函数的语言碰到有多返回值需求的...

2017-06-05 10:52:00 541

转载 把需求变化带来的代码修改成本降至最低的一种方法

为解决工作中一些繁琐的问题, 写了一个GUI程序, 操作界面是这个样子的这个程序的实现起来并不是非常的繁琐, 但在界面的交互操作上, 也不仅仅只是展示数据。 如上面图片所见,列表中的每一条记录每一个数据项都需要可以填写和选择; 需要添加和删除记录;还需要调整记录的位置;向上移动、向下移动;要实现这些操作, 控制UI的程序其实挺复杂的。我哼哧哼哧的把这个程序写完, 拿去给...

2017-05-22 09:06:00 245

转载 kotlin, 一种新的android平台一级开发语言

最近看到一则科技新闻, 大致内容是google将kotlin语言作为android应用开发的一级语言, 与java并驾齐驱, 这是一个开发界的大事件大新闻, 连google的亲儿子go语言也没有这种待遇, 而kotlin貌似名不见经传,之前根本连听都没听说过。 这让我对kotlin产生了极大的好奇心,这种能让得到google如此宠幸的语言到底是何方神圣?在网上查了相...

2017-05-20 08:12:00 112

转载 编程语言之间的差别真有那么大吗?

软件开发是一种特殊的职业,特殊到有点匪夷所思,行业从业人员的工种分类非常的不稳定, 比如说古时候有C工程师、C++工程师、VB工程师,后来有了Java工程师、.net工程师、php工程师, 再后来又有了前端开发工程师、nodejs工程师、 golang工程师、python工程师什么的, 反正每隔个几年就会莫名其妙的蹦出来几种新的软件开发职业,让一批又一批的人趋之若鹜。然后这些不同的职业却...

2017-05-19 09:07:00 166

转载 使用测试用例来约束自己的代码

写测试代码这种事情 ,以前只在网上和书上看到过, 自己从来没有写过。 每当看到那些世界顶级程序员编写的技术书籍中出现“测试用例”“测试代码”的字样或者一些行业的鼎鼎大名的技术大牛们提及写测试的重要性的时候,我的心里就会产生一种自己编的一定是假程的错觉, 为什么我写代码就从来不用那玩意?就拿开发一个MVC框架的Web应用程序设来说, 通常的做法就是新建一个控制器和一个模型, 把代...

2017-05-08 09:15:00 333

转载 变身超人程序员

清明节放假前工作最后一天,协助同事解决了一个BUG,这个BUG对于所属的程序而言,可以说不是痛不痒,完全不影响使用,只是看起来有点变扭而已。然而, 对我而言, 解决这个问题的思路却是比较有代表性的,颇有一种曲线救国的味道。事情大概是这个样子的。有需求部门反应,我们部门负责的某个项目的页面上数据显示有问题。有10条数据,每页显示4条,那么正常情况下第1页应该显示4条,第2页4条,...

2017-04-19 09:21:00 167

转载 sql连接查询中on筛选与where筛选的区别

sql查询这个东西, 要说它简单, 可以很简单, 通常情况下只需使用增删查改配合编程语言的逻辑表达能力,就能实现所有功能。 但是增删查改并不能代表sql语句的所有, 完整的sql功能会另人望而生畏。 就拿比普通增删查改稍微复杂一个层次的连接查询来说, 盲目使用, 也会出现意料之外的危险结果,导致程序出现莫名其妙的BUG。在连接查询语法中,另人迷惑首当其冲的就要属on筛选和wh...

2017-04-18 09:29:00 362

转载 让程序的性能提升10倍

公司有一个Web Service,访问量不大, 但也不算小, 每天几百万的量级。正常情况下, 平均每个请求响应的时间在200毫秒左右。每天几百万的访问量, 那么程序每秒请求处理数量在几十个左右, 高峰期也就上百, 而服务器上php处理请求的进程数是大于这个数的,因此, 服务器的处理能力勉强能满足当前量级的请求, 除了少数时候高峰期会出现不稳定的状况, 大多数时候也算是相安无事,...

2017-04-17 09:21:00 155

转载 以正确的姿势实现一棵JavaScript菜单树

菜单树是常见的前端特效, 一般长下面这样还有各种形态的变种, 有长这样的也有长这样的尽管这些菜单的相貌都不尽相同, 在功能实现的本质上却都是相同的。实现程序的大致流程如下读取服务器端的菜单数据将数据转换成html菜单结构为菜单结构绑定各种交互事件,如展开、关闭等。然而, 随着需求的变化, 菜单往往会需要一些基础之外的...

2017-04-07 09:19:00 90

转载 利用php数组函数进行函数式编程

因为一个BUG, 我在一个摇摇欲坠,几乎碰一下就会散架的项目中某一个角落中发现下面这样一段代码这段程序与那个BUG有密切的关系。 我来回反复的捉摸这段代码, 发现这段代码实现了两个功能第一个是在一个从数据库中读取的列表数组中找出某个值是最大的一条记录, 并且把这个最大的值和跟这个值相关的时间给取出来。第二个比较复杂 ,是将这个列表数组中的值映射到另外一个列表数组中, 可以...

2017-04-06 09:22:00 180

转载 深入浅出数据库索引原理

前段时间,公司一个新上线的网站出现页面响应速度缓慢的问题, 一位负责这个项目的但并不是搞技术的妹子找到我,让我想办法提升网站的访问速度 ,因为已经有很多用户来投诉了。我第一反应觉的是数据库上的问题,假装思索了一下,摆着一副深沉炫酷的模样说:“是不是数据库查询上出问题了, 给表加上索引吧”,然后妹子来了一句:“现在我们网站访问量太大,加索引有可能导致写入数据时性能下降,影响用户使用的”。当...

2017-03-31 18:44:00 2775

转载 提高代码质量的重要手段:将细节隐藏起来

「信息隐藏」在软件开发领域中是一个非常重要的核心要点, 它的另一个名称叫做「封装」, 但是因为现代面向对象技术流行的原因, 「封装」似乎已被视为和private是等价的, 这就导致了封装的含意并不那么准确了, 事实上它的使用范围在代码的编写中无处不在, private只是封装的其中一项用途而已。 因为封装一词已经被误用太久,所以使用「信息隐藏」能更简单的阐述清楚这个概念,这能避免受对「封...

2017-03-31 09:01:00 270

转载 Java中元组的使用

元组在计算机领域有着特殊的意义,这个名字听起来似乎有些陌生, 平时在写代码也基本没什么应用场景, 然而, 出人意料的是, 元组跟程序设计密切相关, 可能有的同学不知道, 关系数据库中的「纪录」的另一个学术性的名称就是「元组」, 一条记录就是一个元组, 一个表就是一个关系, 纪录组成表, 元组生成关系, 这就是关系数据库的核心理念。元组是关系数据库不可脱离的部份, 但是在程序设计...

2017-03-30 13:29:00 437

转载 JavaScript如何一次性展示几万条数据

有一位同事跟大家说他在网上看到一道面试题:“如果后台传给前端几万条数据,前端怎么渲染到页面上?”,如何回答? 于是办公室沸腾了, 同事们讨论开了, 你一言我一语说出自己的方案。 有的说直接循环遍历生成html插到页面上;有的说应该用分页来处理;还有的说这个面试官是个白痴, 哪有后台传几万条数据给前端这种情况的;我仔细思考了一下,先不论后端到底会不会白痴到传几万条数据给前端,假如真碰到这种...

2017-03-29 21:10:00 1628

转载 如何正确使用缓存技术

缓存技术是用来提升程序运行性能的常见手段,如你所见, 阿里巴巴、新浪微博、美团网等互联网龙头企业都是用缓存技术来提升自己家网站的性能。然而,任何事物都有两面性, 缓存技术使用得当带来的好处自然不言而喻, 但是如果使用不当, 产生的副作用也够让人喝一壶的。我们写服务器程序时,使用缓存的目的无非就是减少数据库访问次数降低数据库的压力和提升程序的响应时间, 然而根据具体的使用场景又可以派生...

2017-03-29 13:39:00 155

转载 为什么代码越写越复杂

代码复杂程度可以用“熵”来表示,“熵”是物理学中的概念, 表示所有“无序”的总和, 尽管软件开发不受任何物理定律的约束,然而熵对软件开发的影响非常之大, 当代码中的无序增长到一定程度时,代码复杂到了程序员难以掌控, 软件就“腐烂”了。追本溯源,导致软件腐烂的原因其实并不复杂, 跟我们现实世界中的方方面面有着密切的关系。随便拿一则经常被报道的新闻事件来说国外某处著名旅游景点的墙...

2017-03-29 09:05:00 392

转载 JavaScript贪食蛇游戏制作详解

之前闲时开发过一个简单的网页版贪食蛇游戏程序,现在把程序的实现思路写下来,供有兴趣同学参考阅读。代码的实现比较简单,整个程序由三个类,一组常量和一些游戏逻辑以外的初始化和控制代码组成,总共400多行JavaScript。游戏中的三个类分别是「组成蛇身体的节点」「蛇」「贪食蛇游戏」的抽象,常量用来表示游戏中的各种状态。先从常量讲起var TRANSVERSE = 30;...

2017-03-28 09:11:00 139

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除