程序员

你真的需要掌握多种语言吗?

*爱你&永不变心* 提交于 2019-12-01 17:11:09
你需要掌握多种语言吗? 我刚刚断送了我的事业。嗯,别人就是这么对我说的。 我的同事们知道了我要离开公司,大多数对此表示理解。让他们不解的是,我目前就职的公司是一家 Windows 商店,我们用 C#.net 写代码,而我要入职的岗位要求在 Linux 环境下进行开发,以 Java 为主要的编程语言。他们认为编程语言的改变会让我丢失多年的编程语言经验,许多人赞同我同事们的观点。 编程语言 有上百种。有些编程语言十分常见,例如 Java、C#、 PHP、 Ruby、 Python、Javascript 等,而有些编程语言则处于边缘地带或者是新兴的,例如 Awk、Go、Julia、Rust等。面对这么多的选择,你如何知道应该重点关注那种语言呢?因此,我开始思索,你真的需要掌握不止一种编程语言吗? ##九个掌握多种语言的理由 1.对于同一个问题,你可以有多种解决方法。掌握不同的编程语言之后,你会有更多的选择。毕竟如果你只有一把锤子,一切看起来都像是钉子。 2.你具有更多卖点,因此你会有更多的工作机会。有时,学习第二种语言能加倍工作机会的数量。然而,这取决于你所学习的语言种类。无论如何,你将会有更多的合适机会,从而增加求职能力。 3.这表明你具备学习新语言的能力。潜在的雇主知道你并非死板或者惯守成规的人。 4.学习是有趣的。学习新的事物会让你的头脑保持兴奋。这将有助于你在新领域的成长和提高。

【转】只因写了一段爬虫,公司200多人被抓!

≯℡__Kan透↙ 提交于 2019-12-01 17:06:58
“一个程序员写了个爬虫程序,整个公司200多人被端了。” “不可能吧!” 刚从朋友听到这个消息的时候,我有点不太相信,做为一名程序员来讲,谁还没有写过几段爬虫呢?只因写爬虫程序就被端有点夸张了吧。 朋友说,消息很确认并且已经进入等待审判阶段了。 01.对消息进一步确认 朋友认识几个律师朋友,和他们有一些业务来往,得知他们想尝试把业务扩展到程序员这个群体。那段时间我刚好离职也有时间,在朋友的安排下一起聊聊看看有没有合作的机会。 他们为什么想扩展人群到程序员这个行业呢?其实就是因为他们代理了这名程序员的官司,才发现很多程序员完全不懂法,直接说是法盲一点都不过分。 刚好我也很好奇程序员因爬虫被抓这个案子,看看到底是怎么回事,就和两名律师以及朋友坐到一起,深入交流后才知道整个事件的来龙去脉。 这名程序员在被警察逮捕后,警察审问期间一直不承认自己触犯了法律,并且也完全没有意识到自己犯法了。进去之后总以为警察搞错了,过几天就会把自己放出来,结果也错过了取保候审的机会。 律师说,这名程序员的妈妈当时在他毕业的时候,就因程序员这个行业太辛苦不同意他做程序员,但他对这个行业一直都很感兴趣,坚持做了一名码农,没想到两年后出现了这个事情。 他们家里人都后悔死了,距离事发当日到现在已经过去了半年,当事者还被关在监狱中。不管这件事如何收尾,对这名程序员和他的家庭都是一个很大的打击。

程序员面试中要注意什么 MySQL数据库表如何设计

▼魔方 西西 提交于 2019-12-01 16:26:25
序员面试中要注意什么?MySQL数据库表如何设计?如果要选择一门程序员必备的技能,那答案无疑是数据库,而MySQL是首选。很多企业在面试过程中会提问MySQL数据库表设计要注意什么,接下来千锋就给大家讲解一下。 MySQL相较于MSSQL SERVER和Oracle,是一款功能强大的小型数据库,能很好的满足千万级数据量的项目需要。注意,MySQL本身是没有可视化界面的,在Windows系统中你可以通过dos命令进行简单的连接和查看,在Linux系统下可以通过MySQL的命令进行连接查看。 MySQL支持很多种不同的数据类型,并且选择正确的数据类型对于获得高性能至关重要。在设计MySQL表时,你需要注意五点: 1、一定要设计主键 主键,又叫主关键字,用来唯一地标识表中的某一条记录。它能保证实体的完整性,加快数据库的操作速度,这一点很重要。主键使用自增最佳,这样每次插入新的记录,记录就会顺序添加到当前索引节点的后续位置,当一页写满,就会自动开辟一个新的页。如果不是自增主键,那么可能会在中间插入,就会引发页的分裂,产生很多表碎片。 2、字段命名最好避开保留字 在给字段命名的时候,要尽量避开关键字,以免出了问题而不好查找。虽然在以关键字命名的字段上加''可以不再报错,但保险起见,就不要这么设计。 3、表名长度尽可能短 表名称不要太长,Oracle限制字符为30个,如果有转数据库的需要

事物的四种隔离级别 脏读、不可重复读 、幻读, 序列化的 简单介绍。

天涯浪子 提交于 2019-12-01 16:22:50
一、原理解析    来自对 https://www.cnblogs.com/ubuntu1/p/8999403.html 的编写。 一、事物的四种隔离级别? /* 由低到高分为 Read uncommitted 读未提交 脏读! Read committed 读提交 不可重复读。 Repeatable read 重复读 幻读 Serializable 序列化 串行读 */ 1. Read uncommitted (脏读!) // 读未提交 就是一个事物可以读取另一个未提交事物的数据。 事例:老板要给程序员发工资,程序员的工资是3.6万/月。但是发工资时老板不小心按错了数字,按成3.9万/月, 【该钱已经打到程序员的户口,但是事务还没有提交】, 就在这时,程序员去查看自己这个月的工资,发现比往常多了3千元。 【但是老板及时发现了不对,马上回滚差点就提交了的事务,将数字改成 3.6 万再提交。】 // 分析:实际程序员这个月的工资还是3.6万,但是程序员看到的是3.9万。他看到的是老板还没提交事务时的数据。这就是脏读。 2. Read committed (不可重复读) // 读提交 就是一个事物要等待领一个事物提交后才能读取数据。 事例:程序员拿着信用卡去享受生活(卡里当然是只有 3.6 万),当他埋单时(程序员事务开启), 收费系统事先检测到他的卡里有 3.6 万, 就在这个时候!

2019.10.17 MVC

时间秒杀一切 提交于 2019-12-01 16:01:47
MVC无人不知,可很多程序员对MVC的概念的理解似乎有误,换言之他们一直在错用MVC,尽管即使如此软件也能被写出来,然而软件内部代码的组织方式却是不科学的,这会影响到软件的可维护性、可移植性,代码的可重用性。 MVC即Model、View、Controller即模型、视图、控制器。我在和同行讨论技术,阅读别人的代码时发现,很多程序员倾向于将软件的业务逻辑放在Controller里,将数据库访问操作的代码放在Model里。 最终软件(网站)的代码结构是,View层是界面,Controller层是业务逻辑,Model层是数据库访问。 不知道大家知不知道另外一种软件开发模式三层架构,它和MVC相似之处是也分为三层,分别是UI层表示用户界面,BLL层表示业务逻辑,DAL层表示数据访问。三层架构曾经红极一时,MVC大行其道之后它就销声匿迹了, 可现在看来, 它似乎只是改头换面, 装扮成MVC的样子,并且深受程序员们的欢迎,因为它的这种分层方式和前文描述的MVC如出一辙。 再说的直白点,很多程序员将MVC当成了三层架构在用,这看起来似乎没什么问题,毕竟三层架构也是一种和MVC齐名的架构模式。可问题在于用三成架构的思路写MVC,那么写出来的东西既不是三成架构也不是MVC,到是像一个什么都不是四不像。熟悉天龙八部的同学应该知道这样一段情节

Java内存分区

≯℡__Kan透↙ 提交于 2019-12-01 15:25:16
Java程序是交由JVM执行的,所以Java内存区域划分的时候事实上是指JVM区域划分 1、Java程序执行过程: 如图所示,首先Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀),然后由JVM中的类加载器加载各个类的字节码文件,加载完毕之后,交由JVM执行引擎执行。在整个程序执行过程中,JVM会用一段空间来存储程序执行期间需要用到的数据和相关信息,这段空间一般被称作Runtime Data Area(运行时数据区)也就是我们常常说的JVM内存。因此,在Java中我们常常说到的内存管理就是针对这段空间进行管理(如何分配和回收内存空间)。 一、运行时数据区域包括五部分 根据《Java虚拟机规范》的规定,运行时数据区通常包括这几个部分:程序计数器(Program Counter Register)、Java栈(VM Stack)、本地方法区(Native Method Stack)、方法区(Method Area)、堆(Heap)。 如上图所示,JVM运行时数据区包括这五部分,在JVM规范中虽然规定了程序在执行期间运行时数据区应该包括这几部分,但是至于具体如何实现并没有做出规定,不同的虚拟机厂商可以有不同的实现方式。 二、运行时数据区的每部分到底存储了那些数据? 1、程序计数器 程序计数器(Program Counter Regist

程序员转型架构师,推荐你读这几本书

随声附和 提交于 2019-12-01 15:24:41
从CRUD的程序员,到系统的架构师,进阶推荐读这几本书。架构师书单分为两部分,第一部分是关于系统架构的方法论,包括领域驱动设计,微服务,整洁架构,第二部分介绍各大互联网大公司是如何做系统架构落地实践。 程序员书单会做成一个系列,会推荐面试,职业规划,软技能等不同主题的书单,同时我会在博客和公众号「架构进化论」中,对书单中推荐的好书做解读,欢迎持续关注。 一、方法论 《领域驱动设计》 这本书可以帮助我们理解用代码呈现真实世界的重要性,并且告诉我们如何更好地进行建模。 简而言之,这本书提供了深入的架构洞察力,并帮助你在不断变化的环境中创建强大的系统,最重要的是,Eric Evans用开发人员可以理解的语言来描述,非常难得。 书中给出了领域驱动设计的系统化方法,并将人们普遍接受的一些实践综合到一起,融入了作者的见解和经验,展现了一些可扩展的设计新实践、已验证过的技术以及便于应对复杂领域的软件项目开发的基本原则。 《架构整洁之道》 来自传奇人物Robert C. Martin的实用软件架构解决方案,作者还有另外一本非常经典的书《代码整洁之道》。 干净的架构对于每一个软件架构师、系统分析师、系统设计师和软件管理人员来说都是必不可少的,想要成为软件架构师,这本书一定是必不可少的。 《微服务设计》 这是一本了解现代分布式软件设计和体系结构的好书,特别是微服务,如Uber,Facebook

吃一堑长一智,作为程序员的我们记住这几点

拥有回忆 提交于 2019-12-01 12:26:50
正文 1、多沟通,先理解需求,再动手写代码。 墨菲定律真的很适用需求沟通,你不理解的需求做出来往往都是错的!这样只会浪费时间,浪费精力。 2.写代码前先要理好思路,接着再写代码也不迟 拿到需求,按照要实现的功能,先分析去实现的思路。 在分析实现思路的时候,可以一边分析,一边用中文把它写下来。或者你在工具里直接写成注释,那接下来的工作就是一个个翻译的过程,很容易实现了。可以避免少走很多弯路。 3、业务高于技术 从绝对的价值来说,技术比业务重要的多,但是,从企业的角度来说,技术是为公司商业做服务。所以对企业来说,业务远比技术重要。 4、一定要写注释 很多人不愿意写注释,其实写注释主要目的是为了提高程序的可读性,好的程序应首先易于阅读,其次才是效率高低的问题。注释少了,别说别人看,时间长了自己都看不懂自己的代码! 5、频繁改需求 偶尔改需求是很正常的事情,因为需求根据商业需求不断调整的,改需求是再正常不过的事。如果频繁地改需求。那你可能就要抱怨了!但是要学会理解,毕竟拿工资干活也是很正常的事情! 6、需求文档一定要写! 如果没有写需求文档会导致这个需求只有公司的某个人知道,而其他人如果想要参与到这项工作中就需要问他,如果大部分需求还是通过口头沟通,不写文档做记录,后续就容易扯皮!所以写好了需求文档,谁都可以看,谁也别问谁,谁也别影响谁。需求文档是属于流程规范化的一个部分,这是专业性的表现

只因写了一段爬虫,公司200多人被抓!

。_饼干妹妹 提交于 2019-12-01 12:05:42
“一个程序员写了个爬虫程序,整个公司200多人被端了。” “不可能吧!” 刚从朋友听到这个消息的时候,我有点不太相信,做为一名程序员来讲,谁还没有写过几段爬虫呢?只因写爬虫程序就被端有点夸张了吧。 朋友说,消息很确认并且已经进入等待审判阶段了。 01.对消息进一步确认 朋友认识几个律师朋友,和他们有一些业务来往,得知他们想尝试把业务扩展到程序员这个群体。那段时间我刚好离职也有时间,在朋友的安排下一起聊聊看看有没有合作的机会。 他们为什么想扩展人群到程序员这个行业呢?其实就是因为他们代理了这名程序员的官司,才发现很多程序员完全不懂法,直接说是法盲一点都不过分。 刚好我也很好奇程序员因爬虫被抓这个案子,看看到底是怎么回事,就和两名律师以及朋友坐到一起,深入交流后才知道整个事件的来龙去脉。 这名程序员在被警察逮捕后,警察审问期间 一直不承认自己触犯了法律 ,并且也完全没有意识到自己犯法了。进去之后总以为警察搞错了,过几天就会把自己放出来,结果也 错过了取保候审的机会。 律师说,这名程序员的妈妈当时在他毕业的时候,就因程序员这个行业太辛苦不同意他做程序员,但他对这个行业一直都很感兴趣,坚持做了一名码农,没想到两年后出现了这个事情。 他们家里人都后悔死了,距离事发当日到现在已经过去了半年,当事者还被关在监狱中。不管这件事如何收尾,对这名程序员和他的家庭都是一个很大的打击。 以下内容根据