腾飞答不忘初心的三个问题

去年的时候有同学在微信上问了我3个问题,我觉得非常有代表性,当时没有回答。主要是通过简短的语言无法全面表述可能会产生歧义,所以决定专门写一篇文章来表达一下我的想法,需要说明的是以下内容只是以我个人的经验给大家一些参考。

初心同学的第一个问题:

我现在有两三个问题,第一个,您觉着NetCore会火起来吗,或者说会比现在好吗,现在政府部门各种国产化是事实。好像确实比较认java,毕竟政府部门,有一定的风向标作用

这是第一个问题,但它并不是一个问题,实际上它包括了如下问题:

  • .NetCore会火起来吗?或者说会比现在更好吗?

  • 政府部门认Java吗, 在国内算是计算机语言的风向标吗?

初心同学的第二个问题:

嗯嗯,第二个,您是怎么看今年各大互联网裁员的事情,程序员年纪大了,注定被裁员吗,您觉着裁员潮会波及范围很大吗,二线目前没看出影响,之前我在北京来着,回石家庄一年了

  • 互联网公司裁员是怎么回事? 

  • 二线城市的程序员发展与生存问题?

初心同学的第三个问题:

最后这个,我描述不清楚。您觉着怎么才算一个优秀的coder。因为很多程序,3年左右的程序员,慢慢写,只要用心,也能写的差不多。5年左右的可能代码写的更好些,效率更高点,也可能两者都写出要求的最优代码。

  • 怎样才算一个优秀的coder? 

  • 职业规划的问题 

列出来之后一看,这位同学是想框我,这明明是6个问题呀。好吧,我们第一个开始说起。

.Net Core会火起来吗?

当然,肯定。一定会越来越好。

为什么如此肯定?第一主要是因为已经不能再坏到哪里去了,过去十年是互联网和移动互联网的黄金十年,C#没有被当作主要语言被广泛使用。在诸多原因的影响下原来那些使用C#语言作为主要开发语言的一线互联网公司也逐渐开始将新的项目切换成使用Java来开发。而移动互联网的浪潮也已经见顶,到了这个时候,可以说该转的和该换的也都换了。 

如果说不能更坏了,那它为什么会变好呢? 因为它值 。我想我在这里就不用数据和实例来举证了,网络上有很多再者这本来就是一篇主观的文章。ASP.NET Core弥补了之前不能跨平台的不足,同时又完全开源,再加上性能高和语法简洁优雅、模块化设设计等诸多特性。从.net core3.1版本来看将grpc提到一等公民的位置上可见.net core布局高远,并且脚踏实地地走在了前面。我们完全可以相信asp.net core会是最好的web框架之一。 

更何况还有服务网格的加持。服务网格是什么?如果你开发一个单体的应用,ASP.NET Core做为Web框架来做API的实现,如果你开发的是一个大型分布式应用,那么后端除了服务的开发你必然会考虑这些事情:

  • 服务之前如何通信(HTTP?,同步还是异步)

  • 服务注册与发现 

  • 服务追踪 

  • 服务通信容错(重试/超时/熔断/限流)

  • ...

当然一个大型分布式应用肯定不止仅仅考虑上面的问题,但是这些是最基础的问题。对应SpringCloud全家桶他们有拿来就用的方案 。

我们真的需要这样的微服务框架吗?那些主流的微服务框架,不管是类库性质的Finagle、Hystrix,还是框架性质的Spring Cloud、Dubbo,本质上都归于应用内解决方案,都存在以下三个问题:

技术门槛高:

随着微服务实施水平的不断深化,除了基础的服务发现、配置中心和授权管理之外,团队将不可避免的在服务治理层面面临各类新的挑战,包括但不限于分布式跟踪、熔断降级、灰度发布、故障切换等,这对团队提出了非常高的技术要求。

多语言支持不足

对于稍具规模的团队,尤其在高速成长的互联网创业公司,多语言的技术栈是常态,跨语言的服务调用也是常态,但目前开源社区上并没有一套统一的、跨语言的微服务技术栈。

代码侵入性强

主流的微服务框架(比如Spring Cloud、Dubbo)或多或少都对业务代码有一定的侵入性,框架替换成本高,导致业务团队配合意愿低,微服务落地困难。

这些问题加起来导致的结果就是,在实施微服务的过程中,小团队Hold不住,大公司推不动。针对微服务有3个版本的说法:

  • 微服务 1.0,仅使用注册发现,基于 SpringCloud 或者 Dubbo 进行开发,目前意图实施微服务的传统企业大部分处于这个阶段,或者正从单体应用,向这个阶段过渡,处于 0.5 的阶段;

  • 微服务 2.0,使用了熔断,限流,降级等服务治理策略,并配备完整微服务工具和平台,目前大部分互联网企业处于这个阶段。传统企业中的领头羊,在做互联网转型的过程中,正在向这个阶段过渡,处于 1.5 的阶段;

  • 微服务 3.0,Service Mesh 将服务治理作为通用组件,下沉到平台层实现,使得应用层仅仅关注业务逻辑,平台层可以根据业务监控自动调度和参数调整,实现 AIOps 和智能调度。目前一线互联网公司在进行这方面的尝试。

从0.5到2.0是一个痛苦的过程,现在所有的大型互联网公司包括BAT和TMD基本都走过,也只有他们的体量才可以支撑这样的人力、财力在期望的时间内完成。对于其它的中小企业来说,可能会因为技术调整而错失最佳的发展时机。

而好消息是,由于服务网格中基础设施层抽象的特性, 从0.5到3.0可以跳过 1.0和2.0。享受BAT级别的基础设施以及提供7*24小时的高可用服务不再像以前那样难。 

服务网格作为 sidecar 运行,对应用程序来说是透明,所有应用程序间的流量都会通过它,所以对应用程序流量的控制都可以在 service mesh 中实现。

eShopOnContainers是ASP.NET Core官方团队做了一个基于微服务架构的示例项目,现在最新版本已经加入了grpc和服务网格(Service Mesh)的支持。

也许ASP.NET Core目前没有这样可以拿来就用的全家桶,但是随着服务网格趋于成熟,ASP.NET Core在大型分布式服务的技术选型上“生态不足”这一短板可以被划掉了。

虽然ASP.NET Core会是更好的web框架,但是它没有可能去挑战Java的地位。存量只会稳定地延续,而增量来自于5G、AR以及AI这些新兴市场,也可以说是下一个大的浪潮。它们会以怎样的形式到来,我们会不会参与其中,没有人知道。也取决于.NETer开发者本身这个群体有多少优秀的领导者能够在未来的市场中做出一些成绩。我们也许可以把眼界放的更开阔一些,多了解一些,借着过去吃过的亏在将来赢一些胜算。

另外我还有一个小小的建议:

  1. 不要局限于语言 

不要觉得c#写起来顺手就以为用C#开发效率高(可能真的只是因为你写顺手了)python、go也都是非常好的开发语言,要是你也写顺了,也会发现他们在解决某类问题的时候会更容易。

  1. 多了解一些工作行业之内,程序之外的事情 

除了写代码再多了解一下你们的产品,至少知道它的盈利模式是什么?用户是不是在增长。如果公司是项目制的,就看看项目的利润率大概是多少。即使是纯技术路线的专业或者架构师路线,也很难在脱离业务、产品和的基础之上走上高阶的水平。更何况,这有助于我们更好地理解真实的世界,那个世界和代码里构建的世界不同。

等等,你不是说一个建议吗?

难道你可以一个问题里面多问,我就不可以一个建议里面多提吗 :) 

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

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

相关文章

wordList04

wordList04 如果存在什么问题,欢迎批评指正!谢谢!

用 C# 写一个 Redis 数据同步小工具

用 C# 写一个 Redis 数据同步小工具Intro为了实现 redis 的数据迁移而写的一个小工具,将一个实例中的 redis 数据同步到另外一个实例中。(原本打算找一个已有的工具去做,找了一个 nodejs 的小工具,结果折腾了好久都没装上。。。于是就自己写了…

数据结构----冒泡排序

数据结构----冒泡排序 原理&#xff1a;参考趣学数据结构 代码&#xff1a; #include<stdio.h> #include<stdlib.h> void bubbleSort(int a[], int length) {//冒泡排序for (int i 0; i < length - 1; i) {//趟数for (int j 0; j < length - i - 1; j) {if…

C#如何安全、高效地玩转任何种类的内存之Span的本质(一)。

前言作为.net程序员&#xff0c;使用过指针&#xff0c;写过不安全代码吗&#xff1f;为什么要使用指针&#xff0c;什么时候需要使用它&#xff0c;以及如何安全、高效地使用它&#xff1f;如果能很好地回答这几个问题&#xff0c;那么就能很好地理解今天了主题了。C#构建了一…

数据结构------选择排序

数据结构------选择排序 原理&#xff1a;参考趣学数据结构 代码&#xff1a; #include<stdio.h> #include<stdlib.h> void simpleSelectSort(int a[], int length) {//选择排序int j;for (int i 0; i < length - 1; i) {int k i;//每趟排序中找到最小的元素…

[蓝桥杯2018初赛]第几个幸运数-数论+枚举

代码如下&#xff1a; #include <iostream> #include <cmath> using namespace std; typedef long long LL; LL n 59084709587505; LL ans 0;int main() {for (int i 0; pow(3, i) < n; i)for (int j 0; pow(5, j) < n; j)for (int k 0; pow(7, k) <…

向大厂看齐!为自己的程序增加自动转储的功能!

如果你还不清楚什么是转储文件&#xff0c;不知道什么时候需要转储文件&#xff0c;请参考转储文件系列文章的第一篇 —— 转储文件知多少。前言不知道各位小伙伴有没有遇到过 微信 或者 QQ 崩溃的情况。它们在崩溃的时候都会自动弹出一个对话框&#xff0c;提示用户上传相关文…

sqlite3 c++ VS编译生成静态库

官网 https://www.sqlite.org/download.html 下载sqlite-amalgamation和x86版本下载sqlite-dll-win32-x86、x64位版本sqlite-dll-win64-x64 解压 SQLITE-AMALGAMATION包含 shell.csqlite3.csqlite3.hsqlite3ext.hsqlite-dll-win32-x86包含 sqlite3.def sqlite3.dll建立一个空…

数据结构----单源最短路径Dijkstra

数据结构----单源最短路径Dijkstra 原理&#xff1a;参考趣学数据结构 代码&#xff1a; stack.h 栈代码 #pragma once #include<stdio.h> #define maxSize 100 typedef struct stack {int * base;int * top; }stack; bool init(stack & Stack) {//栈的初始化Stack.b…

在.NET中执行Async/Await的两种错误方法

微信公众号&#xff1a;架构师高级俱乐部关注可了解更多的编程&#xff0c;架构知识。问题或建议&#xff0c;请公众号留言;如果你觉得此文对你有帮助&#xff0c;欢迎转发在.NET中执行异步/等待的两种错误方法 在应用开发中&#xff0c;我们为了提高应用程序的吞吐能力或者异步…

C#如何安全、高效地玩转任何种类的内存之Span的秉性特点(二)

前言读完上篇《C#如何安全、高效地玩转任何种类的内存之Span的本质(一)》&#xff0c;相信大家对span的本质应该非常清楚了。含着金钥匙出生的它&#xff0c;从小就被寄予厚望要成为.NET下编写高性能应用程序的重要积木&#xff0c;而且很多老前辈为了接纳它&#xff0c;都纷纷…

word List 05

word List 05 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

《ASP.NET Core 微服务实战》-- 读书笔记(第6章)

第 6 章 事件溯源与 CQRS在本章&#xff0c;我们来了解一下随着云平台一同出现的设计模式我们先探讨事件溯源和命令查询职责分离&#xff08;CQRS&#xff09;背后的动机与哲学事件溯源简介事实由事件溯源而来我们大脑就是一种事件溯源系统&#xff0c;接收感官多种形式刺激&am…

数据结构----快速排序

数据结构----快速排序 原理&#xff1a;参考趣学数据结构 代码&#xff1a; #include<stdio.h> #include<stdlib.h> int quickSort(int a[], int l, int h) {//快速排序int i l, j h, p a[l];while (i < j) {while (i<j&&a[j]>p) {//从右往左…

编译调试 .NET Core 5.0 Preview 并分析 Span 的实现原理

很久没有写过 .NET Core 相关的文章了&#xff0c;目前关店在家休息所以有些时间写一篇新的????。这次的文章主要介绍如何在 Linux 上编译调试最新的 .NET Core 5.0 Preview 与简单分析 Span 的实现原理。微软从 .NET Core 5.0 开始把 GIT 仓库 coreclr 与 corefx 合并移动…

数据结构----归并排序

数据结构----归并排序 原理&#xff1a;参考趣学数据结构 代码&#xff1a; #include<stdio.h> #include<stdlib.h> #define N 100 void guiBingSort(int a[], int l, int h,int length) {//归并排序int mid (l h) / 2;int* b (int *)malloc(N*sizeof(int));i…

利用obfuscar对.NET应用进行混淆

背景发布客户端程序产品时&#xff0c;免不了会遇到一些怀有恶意或有强烈学习欲望的用户尝试对程序进行反编译。对于一些编译成本地指令的程序&#xff08;如C、C&#xff09;&#xff0c;编译后可读性低&#xff0c;反编译和破解成本较高&#xff0c;不需要对代码进行太高强度…

数据结构---基数排序

数据结构—基数排序 原理&#xff1a;参考趣学数据结构 代码&#xff1a; #include<stdio.h> #include<stdlib.h> int getNumberBit(int number) {//获取数字的位数int x number,count0;if (x 0)return 1;while (x ! 0) {count;x / 10;}return count; } int g…

C# 版本 疫情传播仿真程序

前言前一阵子看到有人制作了《疫情传播仿真程序》&#xff0c;是用 Java做的。里面根据多种实际情况&#xff0c;如居民移动意愿、医护能力、病毒传播能力&#xff0c;来模拟疫情的发展。看完之后&#xff0c;我暗暗称奇&#xff0c;特别是结合一些视频和照片&#xff0c;确实做…

jmeter 加密解密_使用Jmeter对SHA1加密接口进行性能测试

机会只留给那些有准备的人改变能改变的&#xff0c;接受不能改变的&#xff0c;就是进步性能测试过程中&#xff0c;有时候会遇到需要对信息头进行加密鉴权&#xff0c;下面我就来介绍如何针对SHA1加密鉴权开发性能测试脚本 1、首先了解原理&#xff0c;就是需要对如下三个参数…