程序员

信号量Semaphore,读写锁ReadWriteLock,计数器CountDownLatch,循环栅栏CyclicBarrier运用

不羁的心 提交于 2020-01-10 06:20:53
1.信号量Semaphore: 像synchronized, ReentrantLock等这些对临界区资源进行同步后,所有对临界区资源进行访问的线程都得串行排队,而信号量允许指定的线程数同时进行访问 demo: import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Semaphore; public class TestSemaphore implements Runnable{ private static Semaphore semaphore = new Semaphore(5); //允许同时5个线程进行访问 不会阻塞 @Override public void run(){ try { semaphore.acquire(); System.out.println(System.currentTimeMillis() +" "+ Thread.currentThread().getName()); Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); }finally { semaphore.release(

程序员从初级到中级10个秘诀

僤鯓⒐⒋嵵緔 提交于 2020-01-10 05:47:33
Justin James曾发表过一篇博文《 10 tips for advancing from a beginner to an intermediate developer 》,为我们分享如何才能完成程序员从初级到中级的蜕变,现将 中文译文 转载于此,供大家借鉴。 在一封与TechRepublic会员交流的邮件当中,他提到了面向程序员的博客、文章及杂志分成两类:面向初学者类(“hello world”这种类型的教程)以及面向专家类(MSDN杂志)。这个观点很好,有关程序员如何从初级跃升到中级的信息极少。以下是为了实现这种转变需要你去做的10件事。 1.学习另一门语言 其实你学的是哪一门语言并没有关系,但是学习另一门语言(不管你已经了解多少种语言)将把你打造为更好的程序员。能学会一门与你日常使用的语言风格迥异的语言则更佳。打个比方,如果你是C#程序员,学习VB.NET或者Java对你的帮助就没有学习Ruby或者Groovy大。 我说“学另一门语言”的意思是要真正学会它。学习一门语言包括三个领域的知识:语法、内置操作符和库,以及“如何使用”。前面两个简单;我认为一名有经验的程序员,根据语言的不同,能在半小时到几小时内掌握足以维护代码的语法知识。操作符和库只不过是知识逐步积累的过程,你什么时候想清楚要了解什么了,再去查阅参考材料也不迟。只有第三项,“如何使用它”

如何从初级程序员到中级程序

↘锁芯ラ 提交于 2020-01-10 00:32:26
在一封与TechRepublic会员交流的邮件当中,他提到了面向程序员的博客、文章及杂志分成两类:面向初学者类(“hello world”这种类型的教程)以及面向专家类(MSDN杂志)。这个观点很好,有关程序员如何从初级跃升到中级的信息极少。以下是为了实现这种转变需要你去做的10件事。 1.学习另一门语言 其实你学的是哪一门语言并没有关系,但是学习另一门语言(不管你已经了解多少种语言)将把你打造为更好的程序员。能学会一门与你日常使用的语言风格迥异的语言则更佳。打个比方,如果你是C#程序员,学习VB.NET或者Java对你的帮助就没有学习Ruby或者Groovy大。 我说“学另一门语言”的意思是要真正学会它。学习一门语言包括三个领域的知识:语法、内置操作符和库,以及“如何使用”。前面两个简单;我认为一名有经验的程序员,根据语言的不同,能在半小时到几小时内掌握足以维护代码的语法知识。操作符和库只不过是知识逐步积累的过程,你什么时候想清楚要了解什么了,再去查阅参考材料也不迟。只有第三项,“如何使用它”-要花上你几个月的时间去跟这门语言打交道,真正的奇迹就在此发生。我建议用这门语言的风格去做一个适合该语言的项目。 真正学会了另一门语言之后,我敢保证你的程序员水平一定会突飞猛进。 2.学习先进的搜索技术、手段和及策略 作为一名好的程序员,不仅仅是技能的问题了,而是你寻找信息的技巧

为什么要使用PHP框架?

吃可爱长大的小学妹 提交于 2020-01-09 09:42:56
PHP 成为世界上最流行的脚本语言有许多原因:灵活性,易用性等等。但通常只用PHP或者其他语言编码就会显得单调、重复,这时候就需要一个PHP框架来代替程序员完成那些重复不变的部分。本文通过回答What, When, Why 以及 Which这些问题,将对PHP框架进行全面解析。 PHP框架是什么? PHP框架提供了一个用以构建 web 应用的基本 框架 ,从而简化了用PHP编写web应用程序的流程。换言之,PHP框架有助于促进快速 应用 开发 ( RAD ),不但节省开发时间、有助于建立更稳定的应用,而且减少了重复编码的开发。通过确保适当的 数据库 交换和在表现层编码,框架还可以帮助初学者建立更稳定的应用服务。这可以让你花更多的时间去创建实际的Web应用程序,而不是花时间写重复的 代码 。 通常认为PHP框架的作用相当于模型-视图-控制器(Model View Controller)。MVC是种编程的架构模式,将业务逻辑从UI中分离出来,允许一个一个单独修改(也称为关注点分离)。在MVC中,Model指数据,View指表现层,Controller则指应用程序或业务逻辑。基本上, MVC打破了一个应用的开发进程,这样各组件就可以不受影响地各自 工作 。从本质上讲,这使得用PHP编码更快更简单。 为什么要使用PHP框架? 开发人员使用PHP框架的好处很多,其中之一是加快开发进程

改善程序员生活质量的 3+10 习惯

眉间皱痕 提交于 2020-01-09 01:07:03
http://sjyuan.cc/10-habbits-improve-developers-life/ 一封离职邮件 2017年的一天,代码伴随着手指极具节奏感地输出在IDE上,突然某Chrome插件弹出一封邮件提示: “今天是我在ThoughtWorks的最后一天” 。遇到这种离职邮件,我都会点进去,一来看看是否是自己曾经共事的小伙伴,二来了解一下小伙伴离职的原因。离职原因无出其右: 跳出去接受更有挑战的机会 。但这次我受惊了: 因为患有严重的颈椎病,去寻求治疗 … 段子背后的真相 有一则段子是这么描述程序员的职业发展: 某编程语言入门 -> 某编程语言进阶 -> 某编程语言最佳实践 -> 架构的艺术 -> 颈椎病康复指南 每次看到这个段子,我都只是一笑而过,还偶尔给别人讲起逗逗乐。可如今它不仅是一个段子,更像是一则不那么古老的寓言应验了!或许你会说: 腰肌劳损 、 腰椎盘突出 、 颈椎弯曲 这些在程序员圈子司空见惯了。 真相又是什么呢?因为我身边的例子为数不多,我仍然跟之前一样保持疑问的态度。 可不管真相如何,这封邮件却触动了我,让我想写点东西,来分享我平时在做且自认为很有意义的事情。 认知是一切的基础 古人所说 知行合一 ,强调的是认知和行为一致,人们在做一件事情之前首先是要形成一定的认知。比如,我为什么要持续学习?我为什么要花时间去健身?而只有当我的认知中

十一个程序员日常表现,很真实!

醉酒当歌 提交于 2020-01-08 23:55:25
1、往运行服务器上直接上传文件时程序员的样子 2、当老板说项目如果能赶在最后期限前开发完成将会有一笔奖金时程序员的样子 3、当凌晨3点还在修改bug时程序员的样子 4、当发现没有按CTRL-S就关闭了文件时程序员的样子 5、当使用正则表达式返回了想要的结果时程序员的样子 6、第一次使用CSS美化页面时的效果 7、当所有人都在办公室挥汗如雨的加班而你却能安然的回家度周末时的样子 8、当老板想找一个人来修改这个严重bug时程序员的样子 9、当发现有东西上周五还好用而到了周一不好用了时程序员的样子 10、当经过了数小时的努力后第一次运行开发出的脚本时程序员的样子 11、当在没有使用谷歌搜索的情况下就找到了问题解决方案时程序员的样子 来源: 51CTO 作者: wx5d9ed7c8443c3 链接: https://blog.51cto.com/14570694/2464805

Serverless+SCF=打倒服务器,解放程序员

≡放荡痞女 提交于 2020-01-08 21:03:06
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由 云加社区技术沙龙 发表于 云+社区专栏 “你做什么工作的?” “程序员。” “那正好,你帮我修一下电脑吧!” 在很多外行人的眼里,程序员就是神一样的存在。他们全年996,节假日无休,不仅Java、PHP、C++要样样精通,还要会修电脑修音响修手机,做前端要懂运维,做后台要懂运营……可是程序员毕竟是人不是神,给程序员减负不仅事关他们的头发数量,也关乎工作质量。 那么究竟要如何减负呢?近两年,Serverless技术的崛起让开发者们看到了希望。这一技术旨在让开发者不再过多考虑服务器问题,让服务器真正的服务开发者,而不是因果颠倒。智能运维解放开发者的双手, 无服务器让开发者更为专业和专注。 但这种解放不是没有代价的,Serverless架构的开发门槛并不低,寻找合适的运行环境也不容易。本是想解放程序员的双手,结果却得到了更大的麻烦,这显然是难以接受的。 寻求真正的解放,就要精准的技术和高效的环境。本期云+社区技术沙龙就将会聚焦“Serverless架构开发与SCF部署实践”,寻找为开发者减压和Serverless技术敏捷开发的优质解决方案。我们将会探索Serverless架构应用、小程序云开发、API网关以及对象存储等多个领域,直到真正实现为程序员减负! 我不是码神,但你能更接近 议题一: 极致性能

让程序员泪流满面的 11 个 Git 面试题,到底有多难?

三世轮回 提交于 2020-01-08 16:12:09
在今年的 Stack Overflow 开发者调查报告中,超过 70% 的开发者使用 Git,使其成为世界上使用人数最多的版本控制系统。Git 通常用于开源和商业软件开发,对个人、团队和企业都颇有益处。 Q1: 什么是 Git 复刻(fork)?复刻(fork)、分支(branch)和克隆(clone)之间有什么区别? 主题:Git 难度:⭐⭐ 复刻(fork) 是对存储仓库(repository)进行的远程的、服务器端的拷贝,从源头上就有所区别。复刻实际上不是 Git 的范畴。它更像是个政治/社会概念。 克隆(clone) 不是复刻,克隆是个对某个远程仓库的本地拷贝。克隆时,实际上是拷贝整个源存储仓库,包括所有历史记录和分支。 分支(branch) 是一种机制,用于处理单一存储仓库中的变更,并最终目的是用于与其他部分代码合并。 Q2: “拉取请求(pull request)”和“分支(branch)”之间有什么区别? 主题:Git 难度:⭐⭐ 分支(branch) 是代码的一个独立版本。 拉取请求(pull request) 是当有人用仓库,建立了自己的分支,做了些修改并合并到该分支(把自己修改应用到别人的代码仓库) Q3: “git pull”和“git fetch”之间有什么区别? 主题:Git 难度:⭐⭐ 简单来说,git pull 是 git fetch + git

高效程序员的七个习惯

会有一股神秘感。 提交于 2020-01-08 09:18:34
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 软件工程师花费大量时间通过练习leet code问题和完善简历来获得更好的面试通过可能。一旦他们最终被谷歌、亚马逊或其他公司录用,他们可能会发现:过去用来得到这份工作的技能与他们日常工作中需要的技能并不匹配。 我们的团队受到 TechLead 创建的高效程序员七项技能的启发。我们想提供我们自己对这个话题的看法。以下是我们总结的高效程序员的七项技能。 1. 学习如何阅读别人的代码 除了你,每个人写的代码都是垃圾?实际上,能够在别人的代码之上继续工作是一项有多重好处的伟大技能。 不管以前工程师的代码是多么混乱或者考虑不周,您仍然需要能够扩展它。毕竟,这是你的工作。同时,这个“以前的工程师”也可能是一年前的你。 这项技能在两个方面对你有益。第一,能够阅读他人的代码是一个了解什么是糟糕设计的好机会。当你浏览别人的代码时,你会知道什么是有效的,什么是无效的。更重要的是,您可以了解什么类型的代码对于其他工程师来说是容易扩展的,以及什么类型的代码难以扩展。 你需要确保在阅读他人代码时尽可能多地找出问题所在。这样,其他的工程师就会知道你是一个多么优秀的工程师。确保您提出了关于可维护代码和良好注释的重要性观点。这进一步显示了你在编程领域的优势。 您的代码应该设计得非常好,不需要任何文档。事实上,如果你是一个好的程序员