自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 被颠倒的现实主义与理想主义

被颠倒的现实主义与理想主义0.背景之所以想写这个题目,缘起于跟同事的若干次讨论。每次讨论的大概模式一般是这个样子的:A:某某事情应该是这个样子做的,现在的做法不对B:某某做法在我们这里不行,肯定会有一二三四种困难A:不会有多难的,只要如何如何就能解决这一二三四种困难B:肯定不行,你太理想化了,要现实点所有人在工作和学习中,必然不是做过A就是做过B,也许有...

2019-11-06 11:58:17 1707

原创 [每天一个知识点]7-冯·诺依曼体系结构

上帝的bug之一,冯·诺依曼(John von Neumann,1903~1957),犹太人,原籍匈牙利后加入美国国籍,化学专业毕业的数学家、物理学家、计算机科学家,被称为现代计算机之父和博弈论之父,在理论数学、气象学、量子力学、湍流、激波、博弈论、计算机等方面都有重要贡献。(湍流、激波等研究是为军队服务的,1947年美军发嘉奖令,表扬他是物理学家、工程师、武器设计师和爱国主义者)今天的重点是...

2019-11-06 11:57:34 1520

原创 [每日短篇] 24 - HTTPS 和 SSL 自签名证书的现代知识

今天因故需要测试 SSL 自签名证书,在翻阅资料时发现中文社区介绍 HTTPS 和 SSL 证书的网帖不仅陈旧而且存在不少同源的错误,一旦错误内容到处都是就容易被人当成正确的,所以写一篇帖子更新一下现代知识和更正一些错误观点。现在是 2019-11-06,如果很久以后看到这篇帖子,其中与协议版本、密钥强度相关的内容已经过时了,请注意识别。关于 HTTPSHTTPS 是 HTTP 的扩展,重...

2019-11-06 11:52:45 258

原创 如何解决 image has dependent child images 错误

在 Docker 中删除 image 时有时会遇到类似Error response from daemon: conflict: unable to delete 6ec9a5a0fc9f (cannot be forced) - image has dependent child images这样的错误,原因是有另外的 image FROM 了这个 image,可以使用下面的命令列出所有

2017-12-31 13:50:37 14144 1

原创 为什么我不倾向于录用培训机构的学生

首先,培训机构是差生集中处,这话听着很刺耳,但是基本上就是事实,大部分参加培训的都是对自己能力和找到工作没有信心的在校生和应届毕业生。理论上说,在三年或者四年时间里,没有自控能力没有学习能力的,不用抱太多希望在2个月到半年时间里能够学到什么东西。这种大学平进平出培训机构又平进平出的是最为常见的,但是这不代表全部,还要再继续往下看。其次,培训机构本身教学水平极差,教学内容落后,又是应试教育,花在

2016-03-17 10:32:10 2406 3

原创 [每日观点]20150429-软件工程-“试错”是一个良好的借口吗

试错是IT界这几年热起来的一个词,同时也成为了一个新的挡箭牌,最近每当有人指出某某地方设计不合理或者某某地方是错的,就有人说这是试错。试错首先你得不知道被试的东西是对还是错,当你站在科技和人文的十字路口,何去何从,这是个问题。当你站在经十路上,前面是人行横道,右边是排水沟,这不是个问题。即使是真正的试错,也要把已知的部分做好,才能让用户心无旁骛地作出自己的选择。你做一大褂,心想着我是用传统的盘扣呢还是土豪款的黄金纽扣呢,全然不顾用户在旁边看着没有袖子的大褂心里一万头神兽奔腾而过,这不叫试错。在前一家公司

2015-04-29 01:01:10 793

原创 [每日观点]20150420-软件工程-git和svn的优劣和选择

前些日子跟别人争论了一下关于git和svn该用哪个的问题,有些观点没有说透,就一直想写一篇文章写透一点,今天终于不想继续拖下去了。下面就阐述一下我的观点,顺便会提到网上有哪些错误的思维。作为基础,第一点要提到的是,不管是git还是svn(还是其它正常的工具),它只是一个支撑工具,帮助你使用某种特定的方法完成工作,首先你自己得有方法,然后靠工具完成,而不是一种仙丹灵药,一旦服用就自动具有了某某加持。身边看到最多的情况反而是,拿着一把瑞士军刀当石头用,还以为自己已经迈入了高大上的行列。在此基础之上,git和s

2015-04-20 18:35:59 1130

原创 [每天一个知识点]34-职业生涯-用得着和用不着的知识

职场上的新人,经常会说一句话:这个对我没用。比如现在做java开发,python对我没用,现在做开发,项目管理对我没用,大学课程没用,数学物理化学没用。这种功利的想法其实有个问题,就是这个世界上根本不存在多少有用的知识。没有什么三句话就能说清楚的秘诀可以让你的工作变轻松或者让你拿到更多的收入。有句古老的谚语说机会总是留给有准备的人,没有谁有能力恰好掌握刚刚够用的知识,也没谁能把握住命运的脉络预言自己绝不会走上某条道路。——我绝不在考勤机里录入指纹,因为我要给自己留下犯罪的机会。从另外一侧看,也没有任何人会

2015-03-19 16:17:56 930 1

原创 [每天一个知识点]33-软件工程-完美世界

最近一直处于填坑、救火、填坑、救火的节奏中,所以也没能坚持写博客,现在重新开始,看看能坚持几天。今天来说说我们的产出品为什么这么烂,我恶意猜测一下大概设计和开发人员幼小的心灵里面构筑的完美世界是重要原因之一。什么叫完美世界,比如一个方法执行时间永远是0、网速无限快、并发没有冲突、用户可以没有情绪地在界面上重复20次输入相同的东西等,其实这说好听了是完美世界,用正常人的话说叫心智不健全的世界观。很多人写代码,提笔的时候心中想的是紫禁城这种宏伟的建筑,遇到点问题简化一下,遇到点问题简化一点,到了最后做出来的

2015-03-15 12:02:33 781

原创 [每天一个知识点]32-职业生涯-不值得定律

不值得定律非常简单但是非常精准——不值得做的事情就不值得做好。作为码农来说,你成不了程序员的原因,99%是因为你觉得当前手里的工作太没意思。古人说一屋不扫何以扫天下,基本上说的就是这个道理。常常有人问我类似于软件开发好做不、某某语言好学不之类的问题,我的回答一贯是如果你在当前工作上一事无成,换到问的这个上还是会一样。网上有句话更刻薄,叫loser到哪儿都是loser。一般到了工作几年的人,人生都会遇到多次重大抉择,如果每次都挺失败,从概率上来说一般不是选择的路不对,而是人本身不行。当然,这个不行问题出在智商

2015-02-28 23:56:01 994

原创 [每天一个知识点]31-乱七八糟-如何判断预言有效

每一次重大的灾难之后,总有一些人捶胸顿足说自己预测到了这次灾难。在我们身边遇到最多的就是地震的各种预测理论,有看猪狗的有看井水的还有看云彩的甚至还有夜观天象的,其中大部分人都会拿出来一些证据而这些证据看起来似乎也像那么回事。这个时候作为乌合之众或者叫愚蠢的大多数,应该已经被这些证据所折服了,甚至于义愤填膺认为科学界没有给他们公正的待遇而导致了这么多人命的消逝。嗯,就是你,在过去这些年里是否曾经有过至少一次这种感受?先从一种简单的读心术说起,你可以准备若干张写着不同字的卡片,当然不要太多,三到五张足够了,比

2015-02-14 19:28:10 717

原创 [每天一个知识点]30-Java语言-asList

我们经常会遇到需要用少量几个元素或者一个数组构造一个List的场景,今天提供一个最简单的方法Arrays.asList。没什么可以讲的,这个看了文档还不会用就可以放弃做程序员了。唯一需要注意的是,这个方法返回的List是个不可变的集合。

2015-02-13 23:50:27 576

原创 [每天一个知识点]29-C语言-printf的格式符*

*是格式符的flag之一,相当于类似于%(%d)s这种感觉,就是说*会要求用户提供一个int参数,这个参数会成为格式符的宽度。printf ("Width trick: %*d \n", 5, 10);

2015-02-12 20:57:43 650

原创 [每天一个知识点]28-C语言-printf的格式符%p

c语言的printf函数基本上无所不能,今天讲个不太常见的格式符%p,是用来打印指针的。%p打印出来的格式是带0x的十六进制数字。需要注意的是不要用%X来代替%p,因为并非在所有系统下int和void*的长度都是一样的。

2015-02-11 21:44:23 863

原创 [每天一个知识点]27-职业生涯-饿了不能吃石头所以吃沙子

标题的那句话,一看就不是人话,但是在我们工作中有时候还是经常会听到类似的话,用以抚慰说话者因为无能而无法寻找正确解决方案而导致的愧疚。试着随便列几个出来:1. 写一堆没用而且即时失效的文档,说总不能没有文档吧?2. 代码评审只知道看空格有没有空,括号位置对不对,说总比没有代码评审好吧?3. 招聘时招不到合适的人,于是就招个低水平的欢迎大家继续补充有很多事情是如此的符合人类的习惯,一下就在大脑中出现,以至于都懒的去考虑是不是对的。其实有个简单的方法是把当前的场景代入到一个自己熟悉能够驾驭的场景里,

2015-02-10 18:07:55 658

原创 [每天一个知识点]26-软件工程-有多少管理是为了满足管理者的掌控感

前几天重感冒,所以停更了4天,今天一并补上,装作从来没间断过的样子……今天早上醒来之后跟朋友聊天,有个朋友头疼于他的美工只愿意每周两天到办公室而其它时间在家工作。当然,细节绝没有这么简单,我也无意讨论这件具体的事情应该怎么做。从这里我想引出的是这样一个事情,项目管理中哪些事情是该做的哪些事情是不该做的。在《人件》中作者讲了一个管理者的故事:“他有一个非常有天赋的员工,每年大部分时间花在回访客户的路上,结果以报销单为生。该员工的开支分析报告显示,他在吃饭上的花费与其他出差者不协调,他比其他出差者 的餐

2015-02-10 15:40:03 924 6

原创 [每天一个知识点]25-职业生涯-核桃皮是当水果吃好还是当蔬菜吃好?

黄瓜是美容保健用品还是水果,西红柿是水果还是蔬菜,一直是个挺有争议的问题,但是对于核桃皮的分类,大概除了相信吃啥补啥打算练铁头功的人,应该没有人会怀疑它既不是水果也不是蔬菜。究其原因,还是我们的智商和经验足以驾驭这种问题,但是在职场上,并非每个问题我们都有足够的智商和经验。但是对于有经验的人,他们有个基本的能力是知道自己不知道,而职场新人,往往会有一些奇怪的念头,比如核桃皮到底怎么吃这类想法。比如,我记得几个月前,有人拿两本struts1的书问我哪本更适合初学者,我告诉他struts1已经过时了,要学就学点

2015-02-05 20:19:08 1497

原创 [每天一个知识点]24-编程技巧-如何简单计算分页等需要进1的除法

我们经常遇到这种场景,一个盒子可以装5台肾6,要偷偷带走21台肾6需要多少个盒子?或者一页纸可以记7个妹子的电话号码,要记20个妹子的电话号码需要准备多少张纸?当然,更现实的可能是web页面上一页显示n条记录,x条记录需要分多少页显示。要精确计算当然是double pages = (double)x / n;你就能得到1.5页或者是3.1415929页这种奇怪的数值了,不过你的老板可能会嫉妒你的算术水平,会要求你得到2或者4的结果,这时候怎么办?难道用int pages = x / n + 1;这

2015-02-04 19:54:08 992

原创 [每天一个知识点]23-软件工程-有什么必要要提高生产力

不管是主管还是员工,都一直口口声声要提高效率提高生产力,实际上效率几乎没有可以看得见的提升。原因有很多,今天单拿一条来说,提高生产力之后给员工带来了什么好处。任何的效率提升,无非改变的是减少等待时间、减少交互时间,对于信奉西班牙人理论的项目经理们来说,是员工有了更多的剩余价值可以压榨剥削了,而绝不会说效率提高了50%那么下班时间就可以从晚上22点提前到下午18点,提高的永远是单位时间内的效率,而非减少工作时间。在这个前提下的任何改进,都不会有实际的效果(也许会有形式上的效果)。

2015-02-03 23:26:17 809

原创 [每天一个知识点]22-Java语言-二进制字面值

今天又是Java7新特性。在旧版的java中,字面值只支持十进制、八进制、十六进制3种类型,在Java7中又多了一种二进制,它的前缀是0B,配合需要位运算的场景特别合适,尤其是跟下划线组合使用:int i = 0B1010_1100_0010_1100_0000_1111_0001_1011;

2015-02-02 23:18:16 1106

原创 [每天一个知识点]21-Java语言-MultiCatch

这又是一个Java7的新特性。在以往的代码里面,每个catch只能写一个异常,一些设计缺乏深思熟虑的代码会抛出太多异常,导致catch部分可能比try中的代码都长,而且catch中的代码还又是完全相同的。在Java7中,一个catch中可以书写多个异常类型,中间用|分隔开,最后还是一个变量名,这样就可以一次性处理多个异常了。有一个限制就是在同一个catch中不能有任意两个异常有父子关系。示例代码try { ...} catch (IOException | ClassNotFoundExcep

2015-02-01 16:19:35 626

原创 [每天一个知识点]20-Java语言-菱形运算符

在Java7中对泛型的支持得到了增强,消除了冗余的泛型实例化类型指定,例如在new对象时可以简化书写,将new后面<>内的内容省掉,这个<>也被称为菱形运算符,使用菱形运算符编译器会自动推导泛型的实例化类型。示例代码:Map<Integer, List<String>> map = new HashMap<>();

2015-01-31 23:54:29 3654

原创 [每天一个知识点]19-杂谈-你有资格做哪些评价?

今天谈这个因为今天看到一个评价:某某事情谁谁讲得很客观。这又让我想起来以前有初学者相互推荐学习材料的时候经常有人说某某的书或者视频讲得好推荐学。所谓客观是指讲述的接近真实情况,所谓好是指内容正确形式通俗易懂。但是,对于一个非该领域权威人士何谈判断对方客观与否,对于一个初学者何谈判断内容正确与否呢?每次当自己下类似结论的时候,是不是该慎重一点呢?

2015-01-30 15:22:05 567

原创 [每天一个知识点]18-Java语言-在switch中接受String类型

在Java7中增加了一个新特性,switch可以接受String类型的变量,这就省下了书写大量if ("xxx".equals(yyy))的繁复工作。示例代码就免了,仅仅是一个数据类型的改变而已,如果会用原来的switch而在5分钟内搞不定String类型的switch,建议还是放弃做程序员吧……至于内部实现,java一点都没增加新内容,其实代码是被转换成了这个样子switch (xxx.hashCode()) {case 1024: // 假设原来是"aaa",而"aaa"的hashCode是1

2015-01-29 20:08:22 1006 3

原创 [每天一个知识点]17-Java语言-@Override注解

@Override注解用于标注一个方法是重写父类的方法,这属于一种元信息,描述的是程序员在写这段代码时的意图。因为种种原因,其实我们很容易出现想写重写实际写了个重载、修改了父类的方法签名忘记修改子类的方法签名等问题,而这些问题还依然是符合语法的,于是传统的编译器就无法识别这种错误。通过@Override注解的标注,给编译器提供了一个检查代码是否符合意图的机会,我们可以通过开关让编译器在发现此类错误的时候产生警告或者错误,以提高代码的质量。

2015-01-28 18:28:54 850

原创 [每天一个知识点]16-软件工程-什么叫完成

90-90法则是贝尔实验室的Tom Cargill所提出的,内容是:开发软件时前90%的代码要花费90%的开发时间,剩余的10%的代码要再花费90%的开发时间。这倒是应了中国一句古话,西汉的刘向说的,行百里者半于九十。看起来软件开发并非是异于其它领域的特殊行业,只是它的从业者们常常做出一些更令人惊讶的事情来。这往往会导致“最终交付时间”远远大于预计时间的180%,但是说完成了却仅花了很短的时间。这里面比较经典的应该是早些年IBM顾问说华为的一句话:有时间改bug没时间把代码写好。我见过很多关于“完成”的场

2015-01-27 19:25:41 956 1

原创 [每天一个知识点]15-Java语言-字符串连接

昨天说了字符串拼接,今天来说说连接,我指的是非数组或集合类型的一堆内容拼一个字符串出来。最简单的是用+运算符,然后还有StringBuilder和StringBuffer。如果是培训学校教的,一般都是说首选使用StringBuilder其次是StringBuffer,不要用+效率很低。实际上在大部分情况下使用+已经足够了,因为+实际上编译之后就是StringBuilder(没有StringBuilder的版本是StringBuffer),而且如果是2个字符串常量相加还能在编译器合并成一个。一种考虑手工创

2015-01-26 20:11:47 717

原创 [每天一个知识点]14-Java语言-字符串拼接

在字符串处理操作中,非常常用的一个功能是将一个字符串数组或者字符串集合使用某种分隔符拼接为单一的字符串(需要注意拼接操作往往是不可逆的)。除了丑陋的自己写之外,常用的方式还有下面几种:1. Java8的String.join2. Guava的Joiner3. Apache commons-lang3的StringUtils这3者都能实现最基本的功能,但是在细节上还是有很多不同,使用时值得注意选择。简要说起来主要区别如下:1. Java8的String.join实现最简单,但是它会将null输出为"

2015-01-25 17:24:29 966

原创 [每天一个知识点]13-String对象与常量的老生常谈

有种很常见的面试题是关于何种情况下会创建对象何种情况下不会创建对象的,对于字符串常见的就是String str1 = "abc";String str2 = new String("abc");String str3 = String.valueOf("abc");等等情况。其实我并没有很想清楚对新人的面试考查这些细节问题的目的是什么,其实只要记住一条,绝不轻易new String对象和原生类型的包装类型就可以了,至于这里面的细节差异,绝不是新人能搞懂以及需要搞懂的。下面还是简单讲讲上面几行代

2015-01-25 13:31:26 675

原创 [每天一个知识点]12-Maven怎么读

今天内容简单,不过是个10个人9个错的事情。做java开发的一般都听过说maven这个东西,不过一读起来就有意思了。我遇到的大部分人都读“妈喂”,而且当你用正确的发音“没喂”读的时候他们还会纠正你一下,也不知道哪儿来的这底气。贴下音标,英音是[ˈmeɪvn]美音是[ˈmevən]。

2015-01-25 13:25:54 8078 4

原创 [每天一个知识点]11-Java语言-String.split

今天继续讲String类,集中几天时间把String这个最常用的类型过一遍。String的split方法有2个String[] split(String regex)Splits this string around matches of the given regular expression.String[] split(String regex, int limit)Splits this string around matches of the given regular expres

2015-01-25 13:21:30 640

原创 [每天一个知识点]10-Java语言-正则表达式使用

正则表达式是个非常常用的工具,尤其是用于匹配和替换的时候,几乎每个程序中都有机会用到,java支持的正则表达式语法见regular expression。我在代码中经常看到的用于匹配的写法是Pattern p = Pattern.compile("a*b");Matcher m = p.matcher("aaaaab");boolean b = m.matches();或者boolean b = Pattern.matches("a*b", "aaaaab");这种复杂的写法,这也不知道是

2015-01-25 13:13:04 645

原创 [每天一个知识点]9-Java语言-CharSequence是什么

在跟字符串相关的方法中,我们常常会看到参数类型是CharSequence,比如boolean contains(CharSequence s)Returns true if and only if this string contains the specified sequence of char values.String replace(CharSequence target, CharSequence replacement)Replaces each substring of this

2015-01-24 15:41:30 2526

原创 [每天一个知识点]8-《人件》摘抄-管理:莽汉的定义

管理的复杂性足以令它藐视对它的简单定义,但是在伦敦举行的一次专业协会会议上,我们遇到了一个高级经理,在他身上那些细微差别就不复存在了。他用这样的话概括他对这个主题的全部看法:“管理就是赶驴”。这种说法等同于这样的观点:经理给出他们的所有想法,而他们手下的人仅仅按照他的吩咐去做就可以了。那样也许可以使吉士汉堡的生产正常地运转,但是对于任何用脑子工作而不是用手工作的人而言是不起作用的。在这样一种环境中工作的每一个人需要让他们的大脑正常运转。你也许可以 “赶”人,迫使他们动起来,但你不能迫使他们去创造、去发明

2015-01-24 15:39:25 600

原创 [每天一个知识点]6-Java语言-char和code point

java.lang.String有2个方法char charAt(int index)Returns the char value at the specified index.int codePointAt(int index)Returns the character (Unicode code point) at the specified index.仔细看一下这2个方法的描述,正常来说应该会产生一个疑问,char和unicode code point有什么区别?(懂unicode的除

2015-01-24 11:09:40 2137

原创 [每天一个知识点]5-影响项目成败的主要问题不是技术问题而是社会学问题

如何让团队成员发挥最大的作用:如何高效、开心地工作,如何在职业上发展,如何有效配合,如何愉快地相处……实际上很多项目中,团队完全具备解决技术问题的能力,只是由于社会学问题,导致团队的能量无法释放出来。“如果你发现自己关注的是技术而不是社会方面的问题,你就相当于在一条黑暗的街上丢掉钥匙,却到邻近的另一条街上去寻找。因为‘这条街上的灯比那条街上的要亮一些’。”

2015-01-24 11:04:52 525

原创 [每天一个知识点]4-Java语言String.format

从jdk1.5开始,java.lang.String新增了2个format方法,签名分别是:static String format(Locale l, String format, Object... args)Returns a formatted string using the specified locale, format string, and arguments.static String format(String format, Object... args)Returns a

2015-01-24 11:00:39 589

原创 [每天一个知识点]3-程序员的三大美德(2)

Perl它爹Larry Wall说程序员有三大美德:懒惰、急躁、傲慢。今天来说第三个,傲慢。原文解释的傲慢是:极度的自信,使你有信心写出(或维护)别人挑不出毛病的程序。我们常见的傲慢是对自己极度自信,可以随便鄙视别人的观点,甚至在不了解别人的立场、观点、知识体系、能力的情况下,夜郎自大认为自己是掌握唯一真理的。通常来说,懂的越多的人,越知道自己不懂的越多,在正常人范围内(刨去个别天才)自信程度与能力水平成反比。

2015-01-24 10:57:51 1391 2

原创 [每天一个知识点]2-code monkey

《Code Monkey》(http://v.youku.com/v_show/id_XMjg0MjI4MDg0.html)是Jonathan Coulton制作的一个MV,曾被Bob大叔唱起过。code monkey说好听点是程序猿,更残酷点叫码农。一个不那么好听的定理叫猴子与打字机定理,只要有足够多的猴子在键盘上随便敲,也有机会敲出一本莎士比亚的著作来。code monkey也是一样,对着键盘乱敲一通,往往也能敲出一段看起来可以运行的代码。只是,这是不是个光荣的事情呢?

2015-01-24 10:57:00 645

原创 [每天一个知识点]1-程序员的三大美德(1)

Perl它爹Larry Wall说程序员有三大美德:懒惰、急躁、傲慢。今天来说第二个,急躁。原文解释的急躁是:当你发现计算机懒洋洋地不给出结果。于是你写出更优秀的代码,能尽快真正的解决问题。至少看上去是这样。我们常见的急躁是什么?急躁的程序员拿到一个需求,还没看明白就开始写代码,写完代码还没做充分的测试就提交给QA。急躁的项目经理,认为“一张能够真正按时完成的进度表是没有价值的,因为它没有对工作人员带来压力。更好的做法是有一张毫无希望、不可能按时完成的时间表,它可以榨取员工们更多的劳动。”

2015-01-23 10:53:10 1461

空空如也

空空如也

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

TA关注的人

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