Skip to content

四火的唠叨

一个纯正程序员的啰嗦

Menu
  • 所有文章
  • About Me
  • 关于四火
  • 旅行映像
  • 独立游戏
  • 资源链接
Menu

朴素贝叶斯分类

Posted on 03/19/201306/23/2019 by 四火

bayes 贝叶斯定理

英国数学家贝叶斯(Thomas Bayes)曾经给出如下定理:

P(A) 表示 A 事件发生的概率,P(B) 表示 B 事件发生的概率;P(A|B) 表示在 B 事件已经确定发生的情况下,发生 A 事件的概率;P(B|A) 表示在 A 事件已经确定发生的情况下,发生 B 事件的概率;P(AB) 表示 AB 事件同时发生的概率。所以:

P(A)P(B|A)=P(AB)=P(B)P(A|B)

也就是说,A 事件发生的概率乘以 A 事件已发生条件下 B 事件发生的概率,和 B 事件发生的概率乘以 B 事件已发生条件下 A 事件发生的概率,这二者是相等的,都等于 AB 事件同时发生的概率。

(特例:如果 A、B 是独立事件,互不相关,那么 P(A)=P(

[……]阅读全文

Continue reading

大数据时代的隐私安全危机

Posted on 03/17/201306/23/2019 by 四火

big data 315 晚会上,网易销售人员为了强调” 精准营销”,面对央视镜头称:通过 cookies 代码可以追踪用户隐私,甚至能读取网易用户的私人邮件。这件事情引起了轩然大波,网易股价当天就暴跌,但是也引起了无数争论。不可否认通过 cookie 可以获取用户信息,但是在这样做的企业有多少呢,这并不是一件稀奇到值得争论的事情;而推送恶意广告或者获取私人邮件,又成了遭来非议的过分行为。

网易手里掌握了多么海量的用户信息,该怎样用这些信息去谋取利益,却又避免背上 “作恶” 的骂名?这似乎就是薄薄一层窗户纸而已。没有足够的法律法规,也没有足够统一和公开的标准,每个人都会有自己的理解。当 Google 在利用搜索推送关联广告赚钱的

[……]阅读全文

Continue reading

reCAPTCHA 项目

Posted on 03/14/201306/23/2019 by 四火

image 要说 reCAPTCHA,就要先说一说 CAPTCHA,全称是 Completely Automated Public Turing test to tell Computers and Humans Apart,即全自动区分计算机和人类的图灵测试,也就是通常说的 “验证码”,目的就是要把计算机和人区分开来。在互联网站上,为了防止不安全的、重复暴力的登陆密码破解等操作,需要使用验证码来将机器行为拒之门外。

验证码当然可以被识别,随着破解和反破解技术的发展,验证码的技术日新月异(简单的验证码很容易实现,在我刚开始学习 JavaEE 的时候,曾经写过一个验证码的实现程序)。最初对于验证码的机器识别,大多采用

[……]阅读全文

Continue reading

IT 外企在中国

Posted on 03/08/201306/23/2019 by 四火

外企 要说这个话题是因为昨天和朋友聊起 IT 外企在中国就会“ 变味” 的现实。

朋友口中的 Google 中国,尤其是在那件众所周知的事情之后,实在是不能和本土 Google 公司相提并论。他以前在北京和上海的 Google 中国工作过,他说,把一群非常优秀的人放到一起,就能做出成功的产品吗?未必如此,他经历了许许多多失败的项目。在会上大家总是一致喊好、互相鼓励,但是私下里却清醒地意识到、谈论着产品的问题。可为什么就没有人公开地说真话?

我们可以细心数一数在中国的那些非常有名的 IT 外企,的确并没能够做出多少革命性的或者令人眼前一亮的产品来,在我看来这实在算不得成功。鲁迅早就说过,中国是一

[……]阅读全文

Continue reading

过多 if-else 分支的优化

Posted on 02/25/201310/08/2024 by 四火

if-else 我想谈一谈这个话题是因为我的上一篇博客在 ITEye 上有一些朋友回复,说 if-else 过多的分支可以使用 switch 或者责任链模式等等方式来优化。确实,这是一个小问题,不过我们还是可以整理一下这个小问题的重构方式。

为什么要优化?

你没有看错。这是要放在第一条谈论的。

有许多人会说,叠起来一堆 if-else 分支,代码就不优雅了。可是,怎样去定义 “优雅” 的概念呢?再退一步说,即便不 “优雅”,又有什么问题?

对于这样一段再普通不过的代码:

int code;
if("Name".equals(str))
	code = 0;
else if("Age".equals(str))
	code = 1;

[……]阅读全文

Continue reading

代码洁癖症的表现

Posted on 02/23/201310/08/2024 by 四火

cleanliness 有下列情形之一的,你患上了代码洁癖症。症状程度可轻可重,轻者帮助写出优雅整洁的代码,重者走火入魔,万劫不复。

  1. 多余的空行、分号,没有使用的变量,见一个删一个。
  2. tab 或者空格没有对齐的必须纠正过来,除了缩进用,不允许看到代码内连续两个空格。
  3. 看到一个类某个方法没有注释,不由自主地加上,不管有没有意义。
  4. 错误的拼写,无论是在命名还是注释必须纠正过来;不一致的大小写,必须要纠正过来;标点符号的遗漏,必须补上。
  5. 看到 if(a==0) 这样的代码必须改成 if(0==a) 这样的形式。
  6. 所有 IDE 对代码的告警必须消除,无论采取的方式是否有实际意义。
  7. 看到赤裸的数字,必须定义成常量,即便数字表意很直观,还

[……]阅读全文

Continue reading

吐槽一下新浪微博网页版的 UI 设计

Posted on 02/19/201306/23/2019 by 四火

1. 不一致的按钮。有向下箭头是鼠标悬停的时候显示下拉菜单吧:

image

可是,右侧这样的普通按钮也会有悬停+显示下拉菜单的效果:

image

继续,新浪微博没有把这样的效果统一贯彻到底,发微博的按钮就容易误导用户悬停然后等待下拉菜单,结果怎么也等不来:

image

 

2. 右侧这样的 tab 页是鼠标悬停激活切换的:

image

但是到了正中的 tab 页,需要鼠标单击切换:

image

 

3. 按钮风格太多,不够直观简洁。总的来说,就如同淘宝和 Amazon 比较,如同微博和 Twitter 比较,国内许多网站更加本地化,风格偏重于陈列更多应用和功能,下面是一部分按钮的简单分类:

image

其中有一些不一致和冗余的

[……]阅读全文

Continue reading

数据库范式总结

Posted on 02/12/201310/14/2019 by 四火

db 数据库表结构设计时,遵从一定的范式(NF,Normal Form)可以减少数据冗余和操作异常。

第一范式(1NF)

1NF 指的是每个属性值都是不可再分的。

满足 1NF 的关系被称为规范化的关系,1NF 也是关系模式应具备的最起码的条件。

比如有这样一张表 user 的两列:

  • name
  • phone_number

phone_number 这一列只存储一个电话号码,如果一条数据同时存储了住宅电话和手机号码,比如:“010-65576558,13765556765”,那么这个属性是可以再分的,违背了 1NF。

第二范式(2NF)

2NF 要求去除局部依赖 [……]阅读全文

Continue reading

关于方校长一条微博的陈述

Posted on 02/10/201310/02/2024 by 四火

谈论这个话题仅仅是因为最近北邮方校长的一条微博,引来了两万多条转发。在此我想谈论一些事实,给并且不做太多主观评定;我也想援引一些资源链接(大部分援引自维基百科),帮助不了解情况的人明白其中发生了什么:

image

其实,微博的内容已经不重要了,欢乐的是转发里的评论记录,当然,新浪 “适时” 地把查看转发的功能给关闭了:

image 

但是,依然可以从手机客户端上看到很多转发的记录:

image

还有这两张截图:

image image

为何此人遭到社会各界人士如此祝愿?我注意到,其中有非常多的微博 “大号”,有很多 IT 业界知名人士,依然在新春佳节之际为其送上了一字祝福。我想大部分网民,尤其是程序员应该清楚其中的缘由,但也有很多人觉得

[……]阅读全文

Continue reading

梅森素数

Posted on 02/06/201306/23/2019 by 四火

mason_prime 古希腊数学家欧几里德就已证明素数有无穷多个,并提出一些素数可写成 “2P-1”(其中指数 P 也是素数)的形式,其中 17 世纪法国数学家、法兰西科学院奠基人马林·梅森(Martin Mersenne)是其中成果较为卓著的一位,因此数学界将 “2P-1” 型的素数称为 “梅森素数”。

1772 年,欧拉在双目失明的情况下,靠心算证明了 231-1(即 2147483647)是第 8 个梅森素数,这个记录一百多年内都没有人打破。下面是欧拉证明素数有无穷多个的过程,但是梅森素数是否有无穷多个还没有人能证明。

假使素数 p1,p2,p3……pn 只有那么多个,现在有新数 p=p1*p2*p3*……pn + 1,可见 p 无法被 p1

[……]阅读全文

Continue reading

进阶过程:程序员做项目的独立性

Posted on 02/05/201310/01/2024 by 四火

project 第一阶段:编码机器

这是最低级的阶段,程序员拿到详细设计文档,上面连许多方法接口都定义好了。重构一些代码,写一些实现,调用一些既定的 API,然后花许多时间在各种各样的场景测试上面。从做的工作上看,这都不能算程序员,最多,只是编码技巧卓越的码农而已。因为它几乎扼杀了一切创造力,但是这很常见,比如在一些对日外包公司,就是如此。

第二阶段:独立的实现者

程序员得到的只是粗略的设计文档,也许注明了外部接口的清单,还有框架和基础设施的 API,需求已经澄清清楚,接下去要做的就是发挥聪明才智把软件实现设计好,把代码写好,测试通过。这项工作可以在安静和独立的环境中完成,因为没有什么是不够明确的,那些本不清楚

[……]阅读全文

Continue reading

兴趣的力量

Posted on 02/01/201310/01/2024 by 四火

interest 一月底我就到家了,休假准备过春节。正好有闲暇的时间可以来思考许多事情。我去理发的时候,理发师和我热烈地聊起来。她说她的孩子在读高一,文科成绩比理科好多了,文理分科的时候,孩子很有主见,执着地要选择理科;但是父母觉得他更适合学文。我和理发师说,就怕没有想法。既然孩子那么有主见,有那么强烈的倾向,这是一件好事,你不妨听听他的想法,为什么不支持他?退一步说,就算他在文科方面更具备天赋,现在你干涉了他坚定的选择,他没能做出自己想要的选择,也许未来有一天他会后悔,会责怪你;再有,千万不要忽视了兴趣的力量,它可以很大程度地影响一个人。

我现在的团队里有一位 “数学家”。他非常聪明,是那种居然可以看数学论文

[……]阅读全文

Continue reading

几种华丽无比的开发方式

Posted on 01/22/201306/23/2019 by 四火

work 不要被我的标题骗了。我可不是来宣扬什么模型驱动开发,或者什么测试驱动开发的,那些都弱爆了。今天我要说的,是几种看起来激动人心、华丽无比,但是可以让程序员们痛苦不堪的开发方式,特别适合那些热衷于折磨虐待程序员的项目经理和产品经理们。当然,掌握以后,偷偷用就好了,请不要来感谢我。

 

进度驱动开发(SDD,Schedule Driven Development)

这是在国内最为流行的开发方式,大家心照不宣,口口相交,代代相传,我只是把它写下来而已。它最华丽的地方在于,可以百分之百,甚至百分之二百地压榨程序员的劳动力。

需要实现哪些需求?用什么技术?用什么平台?项目采用什么流程管理?这些

[……]阅读全文

Continue reading

程序员,都去写一写前端代码吧

Posted on 01/19/201306/23/2019 by 四火

html 你可以认为我是一个极端的人,就像有许多人专注于自己的领域而不屑于其它“ 肤浅” 的工作范畴一样。比如我见过不少认为做 portal 没有技术含量的判定,做工程都是充满苦逼行为的言论,最近则还有那些“ 大数据” 崇拜者的疯狂吐槽…… 我的极端则有些不同,我的极端在于我认为绝大多数优秀的程序员,都要尝试多方面的事情。并不只有底层开发或者机器学习充满睿智的挑战,我做了几年网站,很难说这就是我最初的兴趣,虽然也在接触和学习其他的领域,但是依然觉得,做网站仍旧充满挑战,互联网真是一个奇葩充斥的地方。

前端开发,则是这“ 多方面的

[……]阅读全文

Continue reading

51CTO 的访谈

Posted on 01/11/201306/23/2019 by 四火

mail 这篇 51CTO 对我的访谈是关于找工作过程相关的体会,文章有过整理改动。无论从年纪还是从资历来说,其实我并不能算是一个很有资格的受访者。当然,我还是希望可以帮到那些软件行业涉足未深和忙于找工作的朋友。邮件对话最终整理成 51CTO 的这篇文章。

[51CTO]:面试中较为偏重的一方面就是询问经历这一环节,您觉得,哪些工作经历或是学习经历可以给面试者的印象 “加分”。

[四火]:首先, 我认为经历不能成为最为偏重的部分,原因很简单,人人都会吹牛,经历容易伪造。如此一来,面试官获得的印象,很大程度上和应聘者的口才有关系。但是,经历一定是面试中的重要组成部分。因为它可以反映出应聘者的经验和眼界,而这两

[……]阅读全文

Continue reading

用 JavaScript 截图

Posted on 01/08/201310/08/2024 by 四火

canvas 使用 JavaScript 截图,这里我要推荐两款开源组件:一个是 Canvas2Image,它可以将 Canvas 绘图编程 PNG/JPEG/BMP 的图像;但是光有它还不够,我们需要给任意 DOM(至少是绝大部分)截图,这就需要 html2canvas,它可以将 DOM 对象转换成一个 canvas 对象。两者的功能结合起来,就可以把页面上的 DOM 截图成 PNG 或者 JPEG 图像了,很酷。

Canvas2Image

它的原理是利用了 HTML5 的 canvas 对象提供了 toDataURL() 的 API:

var strDataURI = oCanvas.toDataURL();  
// returns "data:ima

[……]阅读全文

Continue reading

Bootstrap: New Net-volution

Posted on 01/04/201310/08/2024 by 四火

bootstrap A lot of companies developed their own mature front-end components or frameworks since several years ago, while only two twitters made it popular all around the world. Just think of it why. I don't believe Bootstrap implies too much complex technologies, but it contains great ideas of layout an

[……]阅读全文

Continue reading

2012 年回顾和 2013 年计划

Posted on 01/03/201306/23/2019 by 四火

2013 2012 年,我来到北京 Amazon 工作,接受互联网的新挑战,感受不一样的企业文化。在这个过程中,长了一些见识,结识了一大帮人,有一部分观念发生了改变。

  1. 终于得以进入互联网行业,同时,能够在北京这个软件氛围浓厚的大城市工作,增长见识。而且,学到了一些新技术,这也是我当初选择新挑战的一个原因。
  2. 从民企到外企,两家企业文化鲜明的公司,两种特异的文化风格,给我带来认识上和眼界上的冲击是巨大的。在其中,结识了一票性格鲜明的牛人,我会更多地思考怎样才能建立一支优秀的团队。
  3. 把我的博客固定在独立域名的站点上了。这是一种和更多人交流的途径,但是更多情况下,是写给自己看的。对于这个平台的自由度,我很满意,我

[……]阅读全文

Continue reading

多面手程序员

Posted on 12/29/201210/01/2024 by 四火

1 先来看看这样的场景:

  • “没有美工做的高保真页面,我怎么来开发呢?我没有审美,也不会用 PS 作图啊。”
  • “正交测试这种技巧,是测试工程师应该掌握的,开发不需要了解。”
  • “目前进度的瓶颈在产品经理那里,他还没有给我澄清需求。难道要一个写代码的去给客户整理需求么?”
  • “我是 C++程序员,我是做底层开发的啊,这种页面样式的问题我怎么可能懂?”
  • “这是维优人员关注的线上数据,他应该把日志、错误现象全部备齐了再提交问题给开发。”
  • “这是他的模块,把问题提给他来处理。”
  • ……

这些是我下面要反驳的一些做法,你有没有中枪的?

事实上,我已经在很多篇文章里(比如这篇文章)阐述了这样的观点:程序员要多能。很多情

[……]阅读全文

Continue reading

JQuery 表格插件介绍:Flexigrid 和 DataTables

Posted on 12/27/201210/08/2024 by 四火

image JQuery 的表格插件有很多。Flexigrid 和 DataTables 是我最近使用的,并且功能比较强大,在这里介绍一下。如果你在寻找前端绘制表格的插件,可以考虑它们。

Flexigrid

官方 Flexigrid 的特性展示:

  • 列宽度可拖拽调整
  • 高度和宽度可拖拽调整
  • 列头可排序
  • 主题支持
  • 支持 XML/JSON 格式的 Ajax 数据源
  • 支持分页
  • 可以显示/隐藏列
  • 表格搜索功能
  • JavaScript API 支持

要得到这样功能丰富、美观的表格:

image

只需要这样的代码:

$("#flex1").flexigrid({
	url: 'post2.php',
	dataType: 'json',
	colMo

[……]阅读全文

Continue reading
  • Previous
  • 1
  • …
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • …
  • 23
  • Next

订阅·联系

四火,啰嗦的程序员一枚,现居西雅图

Amazon Google Groovy Hadoop Haskell Java JavaScript LeetCode Oracle Python Spark 互联网 前端 华为 历史 同步 团队 图解笔记 基础设施 工作 工作流 工具 工程师 应用系统 异步 微博 思考 技术 数据库 曼联 测试 生活 程序员 管理 系统设计 缓存 编码 编程范型 英语 西雅图 设计 评审 问题 面试 项目

分类

  • Algorithm and Data Structure (30)
  • Concurrency and Asynchronization (6)
  • System Architecture and Design (43)
  • Distributed System (18)
  • Tools Frameworks and Libs (13)
  • Storage and Data Access (8)
  • Front-end Development (33)
  • Programming Languages and Paradigms (55)
  • Testing and Quality Assurance (4)
  • Network and Communication (6)
  • Authentication and Authorization (6)
  • Automation and Operation Excellence (13)
  • Big Data and Machine Learning (5)
  • Product Design (7)
  • Hiring and Interviews (14)
  • Project and Team Management (14)
  • Engineering Culture (17)
  • Critical Thinking (25)
  • Career Growth (57)
  • Life Experience and Thoughts (45)

推荐文章

  • 谈谈分布式锁
  • 常见分布式系统设计图解(汇总)
  • 系统设计中的快速估算技巧
  • 从链表存在环的问题说起
  • 技术面试中,什么样的问题才是好问题?
  • 从物理时钟到逻辑时钟
  • 近期面试观摩的一些思考
  • RSA 背后的算法
  • 谈谈 Ops(汇总 + 最终篇):工具和实践
  • 不要让业务牵着鼻子走
  • 倔强的程序员
  • 谈谈微信的信息流
  • 评审的艺术——谈谈现实中的代码评审
  • Blog 安全问题小记
  • 求第 K 个数的问题
  • 一些前端框架的比较(下)——Ember.js 和 React
  • 一些前端框架的比较(上)——GWT、AngularJS 和 Backbone.js
  • 工作流系统的设计
  • Spark 的性能调优
  • “残酷” 的事实
  • 七年工作,几个故事
  • 从 Java 和 JavaScript 来学习 Haskell 和 Groovy(汇总)
  • 一道随机数题目的求解
  • 层次
  • Dynamo 的实现技术和去中心化
  • 也谈谈全栈工程师
  • 多重继承的演变
  • 编程范型:工具的选择
  • GWT 初体验
  • java.util.concurrent 并发包诸类概览
  • 从 DCL 的对象安全发布谈起
  • 不同团队的困惑
  • 不适合 Hadoop 解决的问题
  • 留心那些潜在的系统设计问题
  • 再谈大楼扔鸡蛋的问题
  • 几种华丽无比的开发方式
  • 我眼中的工程师文化
  • 观点的碰撞
  • 谈谈盗版软件问题
  • 对几个软件开发传统观点的质疑和反驳
  • MVC 框架的映射和解耦
  • 编程的未来
  • DAO 的演进
  • 致那些自嘲码农的苦逼程序员
  • Java 多线程发展简史
  • 珍爱生命,远离微博
  • 网站性能优化的三重境界
  • OSCache 框架源码解析
  • “ 你不适合做程序员”
  • 画圆画方的故事

近期评论

  • + 1.943624 BTC.NEXT - https://graph.org/Ticket--58146-05-02?hs=9a9c6f8dfe3cdbe0074006e3e640b19b& on 所有文章
  • Anonymous on 闲聊投资:亲自体验和护城河
  • 四火 on 关于近期求职的近况和思考
  • YC on 关于近期求职的近况和思考
  • mafulong on 常见分布式基础设施系统设计图解(四):分布式工作流系统
  • 四火 on 常见分布式基础设施系统设计图解(八):分布式键值存储系统
  • Anonymous on 我裸辞了
  • https://umlcn.com on 资源链接
  • Anonymous on 我裸辞了
  • Dylan on 我裸辞了
© 2025 四火的唠叨 | Powered by Minimalist Blog WordPress Theme