程序员

你或许以为你不需要领域驱动设计

末鹿安然 提交于 2019-12-03 11:03:47
作者:邹溪源,长沙资深互联网从业者,架构师社区合伙人! 一 犹记得刚刚参加工作时,是地图厂商四维图新集团旗下的一家子公司,主要从事规划测绘相关软件研发的公司。当时我的项目是为勘测设计院提供相对应的应用软件,对地理信息和规划相关的图纸信息领域的认知,几乎已经专业水平。事实上,规划设计大概和软件设计类似,有规划的设计、或无规划的设计,造成的结果几乎是天壤之别。 我们或许很容易就能设想到一个毫无规划设计的城市,纵横交错的路网、杂乱无章式的建筑布局、各种凌乱的棚户区设计,恰好象征着软件设计的无序性,也恰好体现了软件企业在经费不足、组织缺乏管理、开发者能力不足、软件随时随地想改就改时的行业现状,只能说这样的软件是最能符合当时实际劳动生产力水平的产品。 图一:巴西棚户区如图一所示,巴西棚户区,层层叠叠、风格迥异、密密麻麻,如果作为一个外人贸然来到这样的地方,大概很容易迷失期间、更不用说充斥在棚户区的各类毒品和黑社会。杂乱无章的建筑和街区,就像代码中错综复杂的调用链;而借助贫民区搞事的黑社会就像是代码中的异味或者bug,表面上看起来如此平静、与世无争、但是你永远也不知道啥时候会来一冷枪。 不要以为离我们很远,我们其实轻易就能写出这样的软件工程项目。不一定是“大泥球”系统,也有可能只是一些看似简单的业务系统,但内部代码逻辑,可能会复杂到令人窒息的程度

互联网公司里都有哪些潜规则?

帅比萌擦擦* 提交于 2019-12-03 08:16:40
阅读本文大概需要 2.8 分钟。 今天和大家聊一下啊,互联网公司到底有哪些潜规则 呆过互联网公司的人都知道,互联网公司的很多玩法都是在传统行业很少见到的,所以今天给大家讲一些互联网公司的潜规则,如果你们身在互联网公司相信也能感同身受。 当然,如果你们未来可能进入到互联网行业,进入到互联网公司,那么了解这些潜规则对你们来说一定也是有帮助的。 第一点:互联网公司偏爱加班 相信很多身处于互联网公司的人都会发现,互联网公司都喜欢加班。 这是为什么呢?只能说整个行业现在的氛围都是## 这样子的,互联网公司本质上就是希望更快地做出更好的互联网产品,然后成为行业的先锋,这就要求公司的产品必须快速迭代,不断升级。 如何提高产品升级的速度,唯一的办法就是依靠员工的产出,所以加班就成为了互联网公司最令人诟病的潜规则之一。 虽然说加班文化是公司缺乏人文关怀的体现,但是在互联网公司混得好的人通常更加能吃苦,更加有奋斗意识,所以很多人把加班当成了稀松平常的事情。 越来越多的互联网人接受了加班这一现实,同时有多越来越来的互联网公司也加入了加班大潮。 第二点:跳槽涨薪 跳槽涨薪是很多程序员都知道的一个潜规则,通常来说,从一家公司挖到一名技术老练的员工是非常划算的,相对来说,涨薪的代价并不是很高。 这也是为什么互联网公司都喜欢去招一些社招的程序员,因为他们相对来说比较有经验,不需要重新培养的过程,并且一般来说

那些拼命加班的程序员们,后来都怎么样了?

牧云@^-^@ 提交于 2019-12-03 08:15:40
阅读本文大概需要 5 分钟。 作者:黄小斜 小张是个 80 后程序员,典型的技术人,他非常热衷于技术,对代码有着独特的追求。 小张属于踏实肯干的程序员,在公司工作兢兢业业,也干出了很不错的成绩,当然,与之伴随的是,加班成为了家常便饭。 公司还不错,算是一个比较有潜力的成长型公司,转眼间,他已经在目前这家互联网公司干了七年了,自己也算是技术骨干,手下也带了一些新人。 只不过曾经的小张已经变成了老张,发际线也已经移动到了无法自拔的境地。 回想起小张刚进公司的时候,意气风发,大有初生牛犊不怕虎的姿态,进入公司之后立刻进入状态,发光发热,一看就是个愿意奋斗的年轻人。 赶上某次项目压力大,小张不得不连续加班一个月,每天都得工作十多个小时。 这段时间过后,小张开始发现自己的发际线越来越高了,是不是自己的错觉呢,小张心里想到,家里也没有遗传这个基因呀。 过了两年之后,小张逐渐开始吃不消了,身体也经常出问题,不仅仅是掉头发,几年间把该患上的职业病都给患上了。 现在正值升职的大好时机,不加班赶进度的话,怎么做出成绩呢,又怎么换来自己的职场前途呢?于是小张咬咬牙继续坚持了下去。 毕竟都是混口饭,也不容易,现在多吃点苦,以后能混出头,就算头发少点也不亏的嘛。 小张如是想到,于是他继续每天加班加点干活,发际线也一直往上提升,直到有一天,小张发现自己的发型已经无法挽回了,算是一个标准的地中海发型。

大厂程序员的一天是如何度过的?

流过昼夜 提交于 2019-12-03 08:11:20
阅读本文大概需要 5 分钟。 小李是一位大公司里的程序员,虽然已经在公司上班一年了,但也只能算是个新人,毕竟 title 摆在那里。 小李做的项目不算核心项目,但是至少在技术栈上还是比较有有深度的,所以小李对现在的工作还算满意,就是工作压力大了点。 这一天早上,小李照常准时起床,因为家里离公司有半小时的车程,所以他不得不在七点多就匆忙地从床上爬起来,很熟练地完成了洗漱、吃早餐、换衣服等动作,然后踏上挤地铁的上班之路。 每天这个时候,小李都要从熙熙攘攘的人群中穿过,直到最终的目的地,那就是公司。 在路上奔波了半天的小李,终于到达了公司,进公司第一件事就是排队等电梯。每天九点是电梯的高峰期,小李,看着前面长长的队伍,心里不由得叹一口气:唉,又要迟到了。 好不容易挤上了电梯,来到了自己所在的工位,小李扔下双肩包,往椅子上一坐,差点就来了个葛优躺。 “小李,来开早会了",主管喊到,于是十几个人围成一圈,大家开始讨论今天的工作进度,以及昨天的工作情况。 轮到小李来讲了,小李好像还没睡醒,犹豫了半天,赶紧说到:今天我打算做a项目的xx开发工作,目前完成了百分之多少,测试了完成了百分之多少,什么时候准备发布上线。诸如此类的话,小李每天都要说。 开完早会,小李回到了自己的工位上,开始吭哧吭哧的写代码。小李有个好习惯,就是喜欢在工作之前把今天的任务清单列出来,排个优先级,这样子他的一天的效率会更高。

Python能做什么,自学Python效果怎么样?

柔情痞子 提交于 2019-12-03 07:16:14
短时间掌握一门技能是现代社会的需求。生活节奏越来越快,现在不是大鱼吃小鱼,而是快鱼吃慢鱼的时代,人的时间比机器的时间更值钱。Python作为一种轻量级编程语言,语言简洁开发快,没那么多技巧,受到众多追捧。 如今,Pyhon越来越火,屡次超越Java、C++成为编程语言排行榜第一的语言,国内的公司和程序员们越来越喜欢使用Python。 新晋王者Python凭啥获得此地位,Python能做什么呢? 原因很简单!应用范围广: 全栈开发、网络爬虫、数据挖掘、人工智能、Web 开发、系统网络运维、数据分析和计算、图形程序开发等方向不一而足 从大公司角度而言: 国内基于Python创业成功的案例不在少数,豆瓣、知乎、果壳,全栈都是 Python,大家对Python自然有信心。并且从这几家公司出来的程序员与 CTO,创业的话一般都会选择Python,雪球定会越滚越大。 从小公司角度而言: 现在创业公司越来越多,用Python出项目快,开发成本小,雇佣的员工数量也可以保持在可控范围。 从开发者个人角度而言: 计算机语言只是用来达成目(偷懒)的工具,我们只是希望通过简单的输入,让程序替代我们执行一些枯燥繁琐的工作。至于句式是否优美、效率相差几何、能否反映出使用者的智力逼格,我们并不关心。下面才是我关注的: 提高个人编码效率起码3倍; 各种强大的第三方库,拿来就能用; 语句简洁,小白都能理解。

写给即将入行的程序员的一封信

♀尐吖头ヾ 提交于 2019-12-03 07:09:22
首先,欢迎来到程序员的世界。在这个世界上,不是有很多人想创造软件并解决问题。你是一名hacker,属于那些愿意做一些有挑战性的事情的人。   “当你不创造东西时,你只会根据自己的感觉而不是能力去看待问题。” – WhyTheLuckyStiff   对于下面的文字你不必完全接受,所有这些来自一个其貌不扬的程序员。我喜欢把事情做到最好,而不是对原来的东西修修补补。   仅仅是因为爱好,开始做一些创新,这是一个很好的开始!如果你说“我要先学习一下再开始做”,那么你永远不会真正开始。每个人都需要从某个地方开始,所以现在打开你的编辑器开始写代码吧。   下面是一些很重要的建议,虽然有人并不认同,但我保证你看完我的分析以后会站在我这一边。一开始,先不要管算法和数据结构。大多数简单的程序不 需要用到算法和数据结构,所以当你真正需要时再去学习。编程一段时间以后,你就会知道在哪些地方用到他们。这时知道算法的名字并了解它们的功能,然后找一 些相关的论文去理解算法并动手编程实践。如果没有现成的函数库(其他程序员提供的可重用代码),你用自己喜欢的编程语言来实现它。    0. 选择一门好的编程语言,一门你自认为可以用它快速地做出一些有用东西的语言。   不要选择C语言作为你第一门编程语言。也许选择C语言会给你一种过时的满足感。虽然它比早期的汇编语言提供了更好语法描述,但是今天C(或者 C++

Java编程思想读书笔记 第一章 对象导论

▼魔方 西西 提交于 2019-12-03 07:05:40
抽象过程 纯粹的面向对象程序设计方式: 万物皆为对象: 对象可以存储数据,还可以在其自身执行操作 程序是对象的集合: 通过发送消息告诉彼此要做的 每个对象都有自己的由其它对象构成的存储:可以在程序中构建复杂的体系,并将复杂性隐藏在对象之后 每个对象都是某个类的对应实例:类的特性在于可以发送什么样的消息给它 某一特定类型的对象可以接收同样的消息 访问控制:隐藏实现细节 类创建者:创建新数据类型的程序员 客户端程序员:使用各种类以实现快速应用开发 向客户端程序员隐藏实现细节 库设计者可以改变设计方式而不影响客户端程序员 accesser specifier public private protected: 继承的类可访问 default: 包访问权限,类可以访问在同一个包中的其它类成员 继承 is-a:导出类只覆盖基类的方法。 is-like-a:导出类含新的接口元素。 静态绑定:编译器将产生对一个具体函数名字的调用,而运行时将这个调用解析到将要执行的代码的绝对地址 动态绑定:当向对象发送消息时,被调用的代码直到运行时才能确定。编译器确保调用方法的存在,并对调用参数和返回值执行类型检查(无法提供该保证的语言是弱类型的),但是并不知道将被执行的确切代码。Java默认动态绑定,更好的支持多态。 来源: https://www.cnblogs.com/Willendless/p

赢在面试之Java基础篇(5)

我与影子孤独终老i 提交于 2019-12-03 06:43:13
41、a.hashCode() 有什么用?与 a.equals(b) 有什么关系? hashCode() 方法对应对象整型的 hash 值。它常用于基于 hash 的集合类,如 Hashtable、HashMap、LinkedHashMap等等。它与 equals() 方法关系特别紧密。根据 Java 规 范,两个使用 equal() 方法来判断相等的对象,必须具有相同的 hash code。 42、字节流与字符流的区别 字节流直接与终端进行数据交互,而字符流需要将数据经过缓冲区处理后才可以输出。 在开发之中,对于字节数据处理比较多,例如,图片,电影,文字,而字符流最大的好处是它可以进行中文的有效处理。如果在日常开发中有中文处理,用字符流,如果没 有,建议使用字节流。 在使用OutputStream输出数据的时候即使没有关闭输出流,那么内容也可以正常输出;但是反过来writer如果没有关闭就不可以正常输出,缓冲区的内容没有被清空,在有特殊 情况不能关闭字符输出流,可以使用flush()方法强制清空缓冲区。 43、什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用。 我们有时候将一个java对象变成字节流的形式传出去或者从一个字节流中恢复成一个java对象,例如,要将java对象存储到硬盘或者传送给网络上的其他计算机,这个过程我们 可以