天赋差的程序员,难道就只能半途而废吗?

全世界只有3.14 % 的人关注了

数据与算法之美


在很多人看来,也许优秀的程序员靠的就是与生俱来的强大天赋,外加蜻蜓点水般的时间付出,就能够炼就算无遗漏的编码技能。那么果真是如此吗?身为不太聪明的开发者难道就活该中途止步吗?本文的作者就表示“不想承认自己太笨,学不会编程”,然后凭着这样不服输的精神以及对开发工作的热爱,他加倍地努力,脚踏实地地一步步走出了自己的开发者之路。


在本文中,他分享了从最初的程序员小白、到现在的高级工程师,十四年的时间他是如何不断提升自己的,希望借此文,能够给广大的程序员们以勉励:输在了起点,并不意味着就输掉了终点。


以下为译文:


在我看来,编程从来都不是易事。我第一次编程是在11岁,那时候我拿到了如下这本书。而且当时我很喜欢玩任天堂64,还梦想着以后自己制作游戏。


640?wx_fmt=jpeg

《青少年游戏编程》,这本书改变了我的一切


但是,想象是美好的,现实的我能力却远远低于平均水平。

我曾在这些论坛(http://mojolabs.nz/forums.php)写了一篇文章寻求帮助如何理解一个while循环——毋庸置疑,我表现得像个浑身长满刺的小刺头,因为我觉得那些比我聪明的人老是用高人一等的语气跟我说话,告诉我应该好好学习一下基本知识,而不是一头扎进电脑游戏的制作。

640?wx_fmt=png

当时的那些论坛大概像这样(大约在2005年)

所以,虽然我的野心很大,但是这个TwisterMan(转圈圈的小人)不会自己编程!(我完全是用微软的画图软件手动画出来的......)


640?wx_fmt=jpeg

TwisterMan动画框架,这个小人正在施展旋风腿

小心下面这个长刺的家伙!

640?wx_fmt=jpeg

嗷……

还有下面这个大Boss……

640?wx_fmt=jpeg

咩……?

重点在于我发现我不擅长编程(而且在设计方面也没有天赋,呵呵!),我不明白如何才能像程序员那样思考,而且我的学习之路也很崎岖,因为我没有任何基础知识。直到十四年的现在,我的编程技术才有所进步。

为什么这么呢?难道这意味着你必须经过14年的努力才能成为一名优秀的程序员?还是说每个人的编程职业生涯都要从画长刺的小人开始呢?在这篇文章中,我就来分享下帮助我提高编程能力的具体事宜,以及每个人在成长过程中所需要经历的不同阶段。

入门阶段


不要以为自己能轻易做得很好

做人要谦虚,阻碍你成为优秀的程序员的最大敌人就是你自己。此外,谦虚可以使人快乐,所以何妨一试呢?不过,即使嘴上说着你会试试看,但是固执己见的你根本就不会听我的话,对不对?骄傲最难克服了。

认真学习基础知识

在你开始学习基础知识时,不用担心基础知识之外的东西,也不必将你的程序用图形表示出来。

新手入门时你可以做的最大努力就是学会理解、遵循逻辑:理解如果if语句中的某些东西为true,那么if语句内部的语句会被运行;理解for循环的执行次数;理解大括号的用途;理解不同的原始数据类型......等等。

不必担心算法问题

我十分不喜欢纯算法的问题。我认为这些问题并不能决定你是否是一名有经验的程序员,这家猎头公司也有相同的看法(https://triplebyte.com/)

说实话,我就不太擅长一些数学编程算法,而且我也不擅长解逻辑谜题!要么你喜欢算法,要么你对它们漠不关心——所以不必担心你属于哪一种,重要的是你要有解决问题的能力。

变得勇敢

这一点很重要。姑且先不说程序员,如果在生活中如果遇到挫折你没有勇气再站起来,那么你就会很痛苦。如果在编程的时候你不够勇敢,那么你会更痛苦。我认为我成功的最大因素就在于勇敢。

640?wx_fmt=jpeg

勇敢的真实模样

但是,要成为勇敢的人并不容易。金钱买不来勇敢,你必须培养、锻炼、加强你的勇气。最重要的是你需要一个培养勇气的目标,如果没有目标,那么你会丧失前进的理由。

那么我的目标是什么?我如何成为了一个勇敢的人?很讽刺的是,我的勇气来自我的骄傲。我很固执,一门心思想学编程,因为编程很难;而且我无法忍受这个事实——编程太难,我学不会。

所以我加倍地努力,因为我不想承认自己太笨,学不会编程。从入门到实践,推荐阅读《Python编程》

建立一个小项目

这个项目并一定要很大,你只需建立你感兴趣的东西(或者在某些方面有用的东西),然后扩展并尝试一些你没做过的事情。

我做的第一个应用程序是一个控制台应用程序,它可以接受一些输入,例如作者的名字和姓氏,以及他们发布的作品,然后按照美国现代语言协会的风格来格式化展示这些作品的页面。

整个应用程序大约有70行,包含获取用户输入的代码(类似于C#中的ReadLine),然后以正确的格式输出,就是如此简单的一个控制台应用。


新手阶段


在这个阶段,你可以编写一些代码了,但还无法编写任何实质性的东西。你明白不同的类型,还知道一些不同的术语,但大部分编程方面的经验可能仅限于在一个编辑器中使用一种语言。你也可以编写简单的练习,但前提是有人给你解释清楚。

阅读别人的代码

我作为新手的大部分时间都是在大学里,我从StackOverflow上学到了很多东西。多看,多读,注意别人写代码的方式。StackOverflow可以帮助你拿下学位,这可不是一句笑谈,请看下图。

640?wx_fmt=jpeg

随着经验的增长,你会越来越依赖StackOverflow

向那些没有听说过StackOverflow的人解释一下,StackOverflow是一个编程答疑社区。人们在上面发布有关编程的问题,社区负责解答。你可以给优秀的答案点赞,而质量较差的答案却无法得到点赞。

在StackOverflow上你可以同时看到好的和坏的代码(偶尔也会看到有趣的代码),但是请不要过于依赖死记硬背如何编写完美的代码,你需要在经常访问该网站的时候注意那些编程的模式。

学习面向对象

我估计大多数开发人员都会接触到面向对象的系统,因此学习面向对象至关重要。简而言之,面向对象可以按照对象的关系和逻辑组织你的程序,通常对象可以反映你正在使用的域。

想了解更多关于面向对象的内容,可以参看这个链接:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/object-oriented-programming。

参加高难度的课程

这一条仅适用于学生,但如果你不在学校,那么也可以在网上学习算法(https://www.coursera.org/specializations/algorithms)

算法是必须学习的内容,你需要学习数据结构和算法,包括堆、堆栈、队列/链表、指针等等。只要你顺利通过这些高难度的课程(而不是蒙混过关),那么你的编程技术就可以得到进一步的发展了。我建议你至少拿到B或B+(或者你的在线课程的同等评分)

但是很有可能有至少一半的人无法通过这个课程,或掌握这些概念。这门课程真的可以淘汰那些无法进一步发展的人(这就是为什么勇气如此重要!!),祝你好运!

再次扩展项目

这时,你可以接受另一个比你以往从事过的项目更大的项目。合适的项目包括Web应用程序、硬件项目、为开源库做贡献(如果你愿意接受挑战的话),或者也可以是桌面应用程序。

这些你可以参与的项目很有可能就是你的实习项目(或者可以让你获取相关的经验来申请实习的职位),所以如果你对你感兴趣的事情有一个大概的想法,那么就可以在这个领域建立一个项目。

这一步看似很难,但没关系,这一步本来就充满了挑战。参加这样的项目有助于推动你成长,还可以让你学到很多知识,这些都可以直接转化为将来你的编程工作需要做的任务。

收获回报

到了这个阶段,你就可以辅导或指导年轻的程序员了。抓住一切机会,教别人的同时你也能学到新的东西。你可以考虑加入这个网站(https://code.org/)做义务教学。考虑教学?写博客怎么样?在职业生涯的后期阶段你也可以随时考虑如何回报社会!


初级程序员


到了这个阶段,你就拥有一些编码经验了,但还没有太多现实世界的编程经验。

诚实地问自己

你真的喜欢编程吗?这是我希望自己长期从事的事业吗?你可能不知道自己想要的究竟是什么,但如果你喜欢学习新技术、成长和解决问题,那么说明你选对了领域。

不管怎样,不要害怕退缩。如果你不喜欢做程序员,那么请诚实地面对自己,寻求更好地符合自己兴趣的不同道路。

640?wx_fmt=jpeg

回顾你的优点和缺点

为自己建立长期目标

另一方面,如果你喜欢编程,那么你希望自己往哪个方向发展?从事Web开发、嵌入式系统、物联网、还是软件开发?你不需要完全确定朝哪个方向发展,但是可以在路上每跨出一步就认真思考你是否要继续前进,在线课程或认证可以帮助辨别你的发展方向。

你可以尝试不同的领域,并找到自己感兴趣的领域。

专攻

熟练使用各种编程语言,努力成为专家——但不要试图掌握所有。问问你自己,你是否可以在工作中担任某个专业角色。如果你是自由职业者,那么客户会欣赏(并期望)你是某个具体领域的专家,而非广而不精。

举一个专业化的简单例子——Web开发中的可视化,就要求专注于前端(JS、React或其他),或者专注于后台(C#、PHP或Node等)

渊博的知识储备

这要求你掌握一门以上的语言。举个例子,如果你从事Web开发,那么你需要掌握CSS、JS和HTML;如果你从事软件开发,情况也是如此。

你关注的东西越多,学到的就越多。

使用源代码管理

你需要熟悉源代码管理,并尽可能多地使用,因为在大多数公司中工作都需要使用源代码管理(除非假设你在银行工作)

640?wx_fmt=png

Git中的分支

说真的,上述提到的银行只是开个笑话,一定要好好学习源代码控制。

清楚何时提问

你可以在工作中学到该何时提问,但在正式参加工作之前,你可以阅读这篇文章(https://debugandrelease.blogspot.com/2018/11/how-to-approach-problem-you-dont-know.html)


中级程序员


阅读,阅读,再阅读

这个阶段,你可以阅读有关编程、技术和你正在使用的语言的博客、新闻文章、播客和视频,还可以订阅博客或电子邮件简报。这里就是一个包含大量C#资源的网站(https://medium.com/@jakubgarfield/how-to-keep-up-to-date-as-a-c-developer-387bff208158)

对于一门语言以及该领域(以及两者如何相互关联)的信息了解得越多,你就越有可能成为更加优秀的程序员。如果你想成为拥有更高能力的优秀程序员,那么这一点是必不可少的,所以一定要保持良好的习惯!

发现更多工具

发现持续性集成与持续性交付(即CI / CD,例如Jenkins,Visual Studio团队服务)和自动构建等工具,可以更好地提供自行建立API文档、IDE扩展、组件反编译器、管理虚拟机、不同风格的包管理器(Chocolatey和NPM)、看板等等功能特性。

当然,以上这些只是一些主要的工具(也是我个人比较偏爱的一些工具)。工具的发展瞬息万变,比如就在你读这篇文章的时候,可能就出现了新的工具(同时也有些工具被淘汰了)

参加各种会议

通常,公司都会出钱让员工参加各种技术大会。这些会议可以为你提供整个技术领域更广阔的视野,以及创建了日常所用工具和软件的专业人士的深刻见解。这些会议由一群非常聪明的人组织和领导,你可以聆听他们的谈话,在满屋子的聪明人中间你可以表现得很谦虚。

640?wx_fmt=jpeg

VSLive是Windows / C#开发人员的会议

业余项目

你可以继续在Github上探索自己的兴趣所在。尝试创造任何你感兴趣的东西,而不仅仅局限于那些可能会赚钱的东西。建立一些你喜欢做的事情!以下几个简单的问题可以帮助你开始自己的业余项目:

  • 我想解决什么问题?

  • 我想学习哪些我现在不懂的知识?

汲取信息

从那些比你聪明的人那里汲取信息:向他们提问题;问他们为什么选择这种方式;问他们为什么选择那个框架;问他们你未能完全理解的知识......

但是,要注意火候。

掌握自己的领域

我希望到此为止你找到了某个自己可能感兴趣的领域。无论是电子商务,还是农业、时尚、制造,领域本身并不重要,重要的是你需要积极地走出去学习你所从事的领域。你不应该再继续一门心思地写代码,应该利用你的编程知识来解决某个领域的问题。

这就是为什么找到自己喜欢从事的职业非常重要的原因!

了解首字母缩略词与术语

比如SaaS、DRY、SRP、SOLID、PaaS、Blue/green......等等。一旦掌握了这些,你就可以看看如何应用这些术语,以及如何在编程时应用它们了。

改善你的工作记忆

如果你有以下特质,那么我确信你会是一名优秀的程序员:

  • 逻辑思考的能力;

  • 在限定时间掌握大量信息。

很明显,你需要理解逻辑(解决问题这一类的逻辑),但是如果你无法在脑海中记住大量信息,那么作为一名程序员你就无法更好地掌握你遇到的(更抽象)的问题。

我们的工作记忆力很有限,除非我们能够以某种方式清空我们的思想,否则我们根本就没有足够的脑力。为此,我有一个建议——哈希表记忆,它极大地帮助我的大脑获得了更多记忆空间。

通过这种记忆方式,我们不需要记住每个细节中的所有内容,而是只需记住信息的存储位置。

640?wx_fmt=png

哈希表记忆

我倾向于写下来,并在一些媒体(笔和纸,.docx,在线博客,类似于Confluence的服务)上记录下我的知识。在下次需要回忆有关Powershell命令行的详细信息时,我只需要知道查看什么地方,而无需记住所有信息。

更多了解大厂商(PaaS,Iaas,Saas等)

到这个阶段的时候,你应该知道哪些是主要厂商,以及他们在做什么,但是你不需要成为像他们一样的专家。

举几个例子,比如 AWS、GCP和Azure。很可能你会在日常工作中使用其中一种产品,坦率地说,这是行业发展的方向。

如果你不喜欢使用在线平台,或者你身处一个保守的工作场所,那么你很可能仍然还在使用本地的服务。当负责超敏感数据(例如PCI或PHI)时,你也可以使用本地系统。

了解数据库

关系型和非结构化,这两种数据库结构你都需要了解(或者至少拥有其中一个模型的工作经验)。如果你使用大数据(Hadoop),那么数据库就更加不可或缺了。


高级程序员


掌握框架

为了你的职业生涯迈向下一个阶段,你必须清楚地了解你的框架。为此,你可以广泛地阅读互联网上的博客和文章,持续性地与他人交谈并分享这些信息。这个博客(https://blogs.msdn.microsoft.com/dotnet/tag/c/)上就是.NET框架的基本知识。此外,框架的学习同时还包括学习键盘快捷键。

在这一步中,你可以构建自己的解决方案(关于如何应用自己的知识,请参照下图的示例)

640?wx_fmt=png

构建应用程序解决方案

注重安全性

安全应该是所有应用程序的重要关注点。成为高级程序员后,你可能需要参与对安全与权限有一定要求的工作或项目,你需要了解OAuth、OIDC、基于会话或Cookie的身份验证、JWT以及一些活动目录的知识。你还应该考虑如何保护应用程序中的API密钥等的安全。

锻炼管理人员与项目的技巧

比如向老板传达项目状态、识别和管理阻碍项目进展的因素、组织项目范围、以及与利益关系人或非开发人员沟通等是你接下来必须掌握的技巧(虽然不必做到尽善尽美)。要注意你是生活在现实中的,这些事情避无可避。

640?wx_fmt=gif

与老板沟通

如果你是自由职业者,那么情况亦是如此!

听取反馈

我们都不想听到负面的反馈,但是忠言逆耳,你必须听取负面的反馈。询问你的同事、经理、或看过你代码的人的意见,你不一定需要他们给你严格的编程反馈,也可以询问是否有社交方面的问题可以改进——凡是有关个人的改进都可以让你提高自己的编程能力。

加速流程

通过shell自动化来加快你的速度。如果你工作的公司还没有建立好的实践,那么抓住机会自己动手创建脚本(使用shell脚本),或者按照正确(但更难)的方式执行脚本,并为你的团队构建一个有助于交付价值的流程。

承担复杂的工作

这与改善工作记忆密切相关,迫使自己接手越来越难的代码,会持续推动你的理解极限。

研究优化

你应该花一些时间学习优化。

对于C#来说,这包括异常、循环、字符串比较、ASCII、结构等等(https://www.dotnetperls.com/optimization)。掌握如何以及何时实现这些优化是普通程序员与优秀程序员的真正区别。

此外,想了解有关包装与解包装性能的更多信息,可以查看这个链接:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/types/boxing-and-unboxing。


资深程序员


事先说明,我还不是资深程序员,但是我很幸运能够与那些比我更聪明的人共事,这些人身上充满了资深程序员的特质。

选择妥协

在这个阶段,你所遇到的问题也许没有明显的正确或错误的答案,所以你必须选择一个不那么糟糕的选项。

举个例子,最近我与一位同事进行了一次这样的谈话。

当时他正在讨论在.NET Core Web应用程序中公开HttpContext的选项。问题是我们应该通过构造函数注入传递HttpContext,还是应该通过一个工厂(factory)访问HttpContext。通过构造函数传递HttpContext可以很好地提供代码,但是使用工厂可以提供额外的好处,例如自定义HttpContext类以及将来更容易修改(和添加)

在这种情况下,HttpContext工厂需要创建成IServiceProvider调用的扩展,以关联依赖关系。按照这种方式创建的工厂将限制可以使用扩展的主机(webhosts),因为Web主机必须知道并使用IHttpContextAccessor。换句话说,如果应用程序切换主机,HttpContext工厂可能无法正常工作。

所以,最后我们得出的结论是,在这种情况下更好的选择是创建HttpContext工厂选项,因为应用程序主机不太可能会改变。

我们推断在这种情况下更好的选择是创建HttpContext工厂选项,因为应用程序主机不太可能会改变。

主题专家

成为无所不知无所不晓的专家。如果你还想继续探索未知的领域,那么可以考虑进入研究领域。

译者:诗书塞外   

来源:https://spectrum.ieee.org/at-work/innovation/the-2018-top-programming-languages

版权归原作者所有,转载仅供学习使用,不用于任何商业用途,如有侵权请留言联系删除,感谢合作。


640?wx_fmt=png精品课程推荐:

640?wx_fmt=png

640?wx_fmt=png

选购数学科普正版读物

严选“数学思维好物”

送给孩子的益智礼物   |   办公室神器

算法工程师成长阅读   |   居家高科技

理工科男女实用型礼物精选   

640?wx_fmt=png

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

----640?点击头像关注----

640?wx_fmt=png

超级数学建模

640?wx_fmt=png

数据与算法之美

640?wx_fmt=jpeg

少年数学家

640?wx_fmt=jpeg

数锐学堂

640?wx_fmt=jpeg

惊喜酱(个人号)

640?wx_fmt=jpeg

玩酷屋COOL


640?wx_fmt=gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302071.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

String是一个奇怪的引用类型

点击蓝字关注我们开局两张图,内容全靠刷。马甲哥看到这样的现象,一开始还是有点懵逼。这个例子,string是纯粹的引用类型,但是在函数传值时类似于值传递;我之前给前后示例的内存变化图吧:根因就是大多数高级…

限时秒杀│中科院推荐!6个引自美国NASA盒子,玩转科学

比勤奋更重要的,是孩子的思维能力。从上幼儿园开始,很多父母很喜欢给孩子报各种兴趣班,比如钢琴班、英语班、乐高班、报各种各样的课程,就是希望孩子具有18般武艺,赢在起跑线上。其实除了外在的能力,不显山…

.NET6又出新版本,新增这几个大杀器!

.NET6 Preview4终于发布了,作为第4个预览版,伴随着Build2021发布的,器更新内容也是非常丰富的。推荐关注的有以下11项:引入最小 API异步流HTTP 日志中间件新项目中使用 Kestrel 作为默认启动IConnectionSocketFeature改进单页应用…

蜗杆参数法设计_技术贴 | 减速器结构及设计的注意事项

减速机器用于低转速大扭矩的传动设备,原理是把电动机、内燃机、马达或其它高速运转的动力,通过减速机的输入轴上齿数少的齿轮啮合输出轴上的大齿轮,从而达到减速的目的;大小齿轮的齿数之比,就是传动比。减速器是一种由…

听说热爱生活的人都关注了他们

全世界有3.14 % 的人已经关注了数据与算法之美在信息爆炸的时代快节奏的生活里 你是否曾有一瞬间觉得忙碌而空虚?以下10个优质公众号能让你在闲暇的时候不断的提升自我,拓宽视野愿以书卷气,行我路千里近现代史研究通讯ID:jxsdyjtx…

基于abp vnext制作项目脚手架

首先说明,尊重原创,本文是参考https://www.cnblogs.com/myshowtime/p/14507675.html这篇文章写的,里面内容有部分是直接拷贝过来的。感谢作者分享!!!前期准备工作使用命令 abp new LS.Template --template …

Windows Server 2012 DHCP 服务器中的新功能:故障转移和策略

Windows Server 2012 DHCP 服务器中的新功能如下: DHCP 故障转移:此功能提供让两个 DHCP 服务器服务于 同一子网或作用域的 IP 地址和选项配置的能力,前提是 DHCP 服务对客户端持续可用。两个 DHCP 服务器复制它们之间的租用信息,…

android mvc mvp 简书,浅析 MVP,MVC,MVVM模式(Android)

前言当我们接手一个项目的时候,经常会发现一个activity或fragment动辄上千行甚至上万行代码,这给阅读带来很大的困扰,如果想读懂代码,需要花费很多时间跟精力。引起这个问题的原因想必大家都了解,随着人员不断变动&…

android studio插入数据表中没有_学Java能拿高薪吗 Java中常见排序算法有哪些

学Java能拿高薪吗?Java中常见排序算法有哪些?作为老牌编程语言,Java拥有广阔的市场占有率,几乎90%以上的大中型互联网应用系统在服务端开发都会首选Java。为了加入到Java这一高薪行业,很多人会选择专业学习一下&#x…

最全知识点总结!| 大数据学习路线指南

全世界只有3.14 % 的人关注了数据与算法之美大数据是对海量数据进行存储、计算、统计、分析处理的一系列处理手段,处理的数据量通常是TB级,甚至是PB或EB级的数据,这是传统数据处理手段所无法完成的,其涉及的技术有分布式计算、高并…

欢迎来到开源的世界!

✉️ 请查收您的保姆级开源百科编程导航 致力于推荐优质编程资源 ????项目开源仓库:https://github.com/liyupi/code-nav跪求一个 star ⭐️大家好,我是鱼二,今天推荐一份开源知识入门的在线电子书《开源指北》。正如官方对这本书的描述&…

html图片宽度高度等比例绽放,css图片自动绽放大小,左右,上下居中

无标题页.pic{max-height:400px;max-width:400px;_width:expression("400px");_height:expression((document.documentElement.clientHeight||document.body.clientHeight)>400?"400px":"");/*_width:expression((document.documentElement.…

归纳推理测试没做完_朋友买了1斤紫菜,2年还没吃完,我教他这样做,2个月就吃完了...

朋友买了1斤紫菜,2年还没吃完,我教他这样做,2个月就吃完了紫菜成熟啦,这段时间回老家,都会看到紫菜养殖户脸上挂着笑容,因为今年的紫菜收成还不错。回家就为了拿紫菜,因为紫菜成熟的季节&#x…

机器学习都需要有哪些数学知识?

随着科技的快速发展,人工智能的重要性日渐显现。机器学习是一个异常丰富的研究领域,有大量未解决的问题:公正、可解释性、易用性。如同所有的学科一样,它的基本思想不是请求式的过程,而是需要耐心地用高级数学框架思考…

html5伸缩效果,【HTML5】Jquery打造竖向伸缩/展开菜单

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼效果图如下:jquery打造竖向伸缩/展开菜单body { font-family: Arial; font-size: 16px; }dl { width: 300px; }dl,dd { margin: 0; }dt { background-color:#ae8758; background-image:url(/jscss/demoimg/201207.png);…

看过这么多爆文,依旧走不好异步编程这条路?​

点击蓝字关注我们本文带大家抓住异步编程async/await语法糖的牛鼻子: SynchronizationContext。引言 C#异步编程语法糖async/await,使开发者很容易就能编写异步代码。零散看过很多文章,很多是填鸭式灌输 (有的翻译文还有偏差)。遵守以上冷冰冰的②③条的…

Android获取设备已安装的应用

2019独角兽企业重金招聘Python工程师标准>>> 项目中&#xff0c; 我们经常要用到显示系统已安装的应用&#xff0c; 可以通过两种方式获取已安装的应用&#xff0c; 一种是通过ApplicationInfo, 一种是通过ResolveInfo. 这里用的是ResolveInfo, 上代码。 <!-- la…

如何讲页面打入jar包中_如何把我的Java程序变成exe文件?

JAVA是一种“跨平台”的语言&#xff0c;拥有“一次编写&#xff0c;处处运行”的特点&#xff0c;让它成为当今IT行业&#xff0c;必不可少的一门编程语言。每一个软件开发完成之后&#xff0c;应该大家都需要打包程序并发送给客户&#xff0c;常见的方式&#xff1a;java程序…

Api网关Kong集成Consul做服务发现及在Asp.Net Core中的使用

&#xfeff;1622219047536写在前面Api网关我们之前是用 .netcore写的 Ocelot的&#xff0c;使用后并没有完全达到我们的预期&#xff0c;花了些时间了解后觉得kong可能是个更合适的选择。简单说下kong对比ocelot打动我的&#xff1a;1、kong可以直接代替Nginx/OpenRestry做前端…

女生学高铁和计算机哪个更好,2020铁路最好的5个专业 女生上铁路学什么专业好...

铁路专业一直是比较受欢迎的&#xff0c;有些同学都想学习铁路专业&#xff0c;应为一旦找到和铁路相关的工作&#xff0c;工资待遇都是非常好的&#xff0c;但是铁路里面也不是所有的专业都非常好&#xff0c;那么铁路里面最好的专业有哪些呢&#xff1f;女生适合学习铁路的哪…