首页 > 其他分享 >关于学习.NET的历程回顾与今后的探索实践方向

关于学习.NET的历程回顾与今后的探索实践方向

时间:2024-07-24 13:39:46浏览次数:13  
标签:回顾 C# 学习 跨平台 使用 NET 历程 WPF

关于学习.NET的历程回顾

自从2023年9月11日注册公众号以来,这次还是第一次介绍自己。我今年24岁,双非本,211硕,非计算机相关专业。大学期间接触过计算机相关的课程可能就《大学生计算机基础》、《C语言程序设计》,并且也没掌握多好。

22年4月研究生复试结束,联系好导师后,由于导师研究方向的缘故,才第一次接触到.NET。

image-20240723103636318

22年9月研究生开学,正式开始学习.NET,当时为了学习VB.NET,买了一本《VB.NET程序设计与软件项目实训》。

开始看《Visual Basic.NET实用教程》。

当时使用的还是.NET Framework+VB.NET+DevExpress+SqlServer+Winform组合,如果没有自己探索,可能研究生三年都会一直这样使用。

经过自己的探索了解,发现2016年就已经有.NET Core可以跨平台还更加强大,而且在.NET生态中,主流语言也不是VB.NET而是C#。

开始尝试学习C#,在力扣上使用C#做难度为简单的题,虽然那时候对我而言并不简单。

image-20240723104248626

这时期主要还是在学习.NET Framework+VB.NET+DevExpress+SqlServer+Winform组合。

有空的时候开始看一些有关C#的电子书,比如《深入理解C#》、《C# 7.0本质论》、《C#入门经典》、《C#图解教程》。

image-20240723110630180

主要是阅读《C#图解教程》与《C#入门经典》,《深入理解C#》与《C# 7.0本质论》没有看下去。

从之前与数据库交互直接使用ADO.NET,到后来使用SQLHelper类,再到使用Dapper,后来才了解到还有ORM的存在,开始学习使用EFCore、SQLSugar,还有一个FreeSQL还没使用过。最开始的实践基本上都是基于事件驱动编程,在Winform中通过拖拽设计页面,在写一下事件处理函数,就这些写了好几个月,我都不知道C#中的委托与事件为何物,更不用说Linq与异步了。

研究生阶段总是对就业充满焦虑的,我也知道.NET在国内确实不是主流,而且也发现现在B/S架构比C/S架构更流行。

23年2月开始学习html、css、javascript,说是学习,其实没有真的先去学这些再上手,而是直接去使用LayUI进行web前端的学习。

image-20240723110916897

23年3月开始看B站的黑马程序员的SpringBoot的教程学习,学习了SpringBoot+MyBatis Plus基本的CRUD操作。

image-20240723111232710

但是也明白现在java太卷了,而且自己真的不喜欢java八股文,什么jvm调优、分布式、高并发、微服务,这些东西还没接触过,如果只是为了面试死记硬背,自己没有真的在项目中使用到,感觉很虚。看了现在java招聘的要求,除了掌握Spring Boot、Spring Cloud、MyBatis外,还要掌握各种中间件如缓存数据库Redis、消息队列kafka、rabbitMQ等、Elasticsearch等,数据库不局限于关系型数据库MySQL、PostgreSQL还需要掌握非关系型数据库MongoDB。刚开始学习看到这些让我畏惧,于是又陷入到迷茫中。

23年4月,觉得畏惧java那就继续C#吧。在B站上观看杨中科老师的.NET6教程视频,买了杨中科老师的《ASP.NET Core技术内幕与项目实战》,但由于读研还需要做其他的事情,web开发这块都没有涉及到,教程和这本书没有看完,但还是从中学到了很多东西。

image-20240723111708685

23年5-6月,觉得要不试试C++与嵌入式吧,网上说不用担心35岁失业,越老越吃香。开始学习侯捷老师的C++视频,买了《C++ Primer》开始看。

image-20240723113518964

由于之前学过Winform,就开始了C++的跨平台UI框架Qt的学习。嵌入式方面花了两百多买了一块STM32开发板。这块板子到现在为止我还没有动过。

就是在买了这块板子之后,我突然意识到这样下去不行,学啥都只是学了个皮毛,学啥都坚持不下去,一直很焦虑未来的就业。

学编程要么为了兴趣要么为了赚钱。我发现我其实很喜欢C#,对.NET也有兴趣,我想先不考虑就业的问题,毕竟当时才研一下,距离找工作还有一段时间。我决定基于兴趣去搞事去玩,想用C#干啥就干啥,不考虑当下的市场情况。

但是读研也并不简单,不是你想干什么就能干什么的,你需要做你的课题研究,也要帮老师做横向。可能很多人都没听说过Modelica,Modelica是一种面向对象的语言,用于对信息物理系统进行建模。它支持由数学方程控制的可重用组件的因果连接,以促进从第一性原理进行建模。简单的说就是能更高效地对复杂系统进行建模,可以用它来进行物理系统的仿真建模与matlab中的simulink类似。

image-20240723115245154

23年9月-24年6月其实我研究生生涯的主要任务是使用MWorks.Sysplorer+Modelica进行某个物理系统的仿真计算。

23年6月至今,基于兴趣爱好学习C#的一些历程分享:

  • 用C#干爬虫:C# + Html Agility Pack + HttpClient + Selenium/Playwright爬取并解析静动态网页数据。
  • 用C#玩AI:C# + NumSharp实现最小二乘法并使用Scottplot或OxyPlot绘图;用ML.NET Model Builder做了个简单的猫狗识别,并在.NET应用中集成。用C#训练模型其实并不推荐,还是主流的python的Pytorch比较好,但是可以使用ONNX与OpenVINO推理模型;最近LLM这么火,将LLM与自己的应用集成,除了可以用python的langchain外也可以用SemanticKernel实现相同的目的,还可以结合向量数据库、提示词工程等,做一些Rag应用,现在还有GraphRAG,都很值得尝试,去做一些AI Agent应用多好玩啊。
  • 用C#做客户端:C#技术栈中涉及到客户端可用的很多,winform简单易上手,基于事件驱动很好理解,缺点做出好看的界面不容易,虽然现在可以靠Blazor Hybrid但本质上不算是winform算webview了以及不能跨平台;使用WPF,基于数据驱动,配合MVVM模式可以很好的实现UI与业务逻辑的解耦,使用xaml构建页面更加灵活,WPF中还有很多很好的设计,如数据绑定,命令,依赖属性等等,WPF很强大,我也很喜欢WPF,缺点还是不能跨平台。WinUI3也可以做现代化风格的Windows应用,缺点还是不能跨平台。跨平台客户端的方案有Avalonia、Uno Platform、Maui,其中Maui可以结合Blazor Hybrid使用一些Blazor组件库可以快速构建美观的页面。
  • 用C#做后端:ASP.NET Core MVC,前后端分离可以Vue/React+ASP.NET Core Web Api+EFCore/SQL Sugar/FreeSql +SqlServer/MySql/PostgreSQL+MongoDB+Redis/Garnet等技术栈,前后端不分离可以使用Blazor,使用C#前后端都搞定,构建项目效率很高。

今后的实践探索方向

学编程要么为了好玩要么为了赚钱,一直基于兴趣完全不考虑赚钱太理想主义了,我也明白.NET在国内的岗位不算多,特别是大公司的岗位。之前考虑兴趣与赚钱在国内能更好的结合,我主要学习WPF技术,我觉得WPF技术在国内就业岗位还是有的。WPF是个好东西,但是很多人都不认识,哈哈可以说别人不“识货”,但这是个人没法改变的。随着就业压力的增加,我决定不再局限于.NET,拓展自己的技术栈,为以后的就业增加竞争力。TypeScript同样出自我很崇拜的C#语言创建者Anders Hejlsberg之手,单纯知道这个我就很想学习使用TypeScript。

image-20240723143304678

今后可能会探索的技术栈。

前端:语言 TypeScript / JavaScript,框架 Vue3/React

后端:语言 C#/Go/Java,框架ASP.NET Core Web API/Spring Boot

客户端:语言C#/Dart,框架WPF/Avalonia/Flutter

人工智能相关:语言C#/Python,框架SemanticKernel/Pytorch/langchain

虽然说语言与框架的思想总有相通之处,但生态、相关工具链、以及各种解决方案的掌握都需要时间。而且也只有真的实践了,才会真的积累有效的经验。

为什么写公众号?

其实做公众号初心不是为了赚钱,虽然说由于关注人数的增加与阅读量的增加,现在每个月都能有几十块的收入。

image-20240723145336461

image-20240723145410695

除去OSS的成本每个月几块钱,每个月也还能赚几十块。

但是如果想通过这种方式搞钱付出回报比太低了,你写那么多原创文章,还是付出了一定的时间精力的,但是赚到的钱还不够去外面吃顿饭还不够买几杯奶茶,如果只是为了赚钱,估计早就放弃了。

其实做公众号最主要还是为了自己,于我个人而言,发表博客能给我带来正反馈,当有人点赞、收藏、分享的时候,我就会有成就感,觉得自己的分享是有价值的,对别人是有帮助的,而且知识的掌握,也不是一蹴而就的,自己时不时的回顾也很方便,如果还能帮助到有需要的人,那就更有意义了。获取正反馈之后,学习更有动力与兴趣,更会分享,更分享更有正反馈,就形成了一个良好的循环,我也发现这样做,比之前的学习都更持久更加有收获。因为当你入门一个东西,如果半天没有成果,没有积累起成就感就会很容易放弃的。

目前文章同步分享在微信公众号、博客园、CSDN、稀土掘金、知乎。

image-20240723151525860

image-20240723151704749

通过网络在广袤的时空中有幸与各位产生联结,如果文章对您有所帮助那就太好了,接下来会根据自己的探索实践,分享一些.NET技术栈之外的东西,当然还是以C#相关的为主,当成是个人学习的记录,如果对您有用可以继续关注,如果觉得没有帮助了取消关注也没有关系,仅以此文回顾自己.NET的学习历程与确定未来探索方向,祝各位都能奔赴自己的星辰大海!

标签:回顾,C#,学习,跨平台,使用,NET,历程,WPF
From: https://www.cnblogs.com/mingupupu/p/18320722

相关文章

  • 在 Kubernetes 中设置 Pod 优先级及其调度策略详解
    个人名片......
  • Kubernetes Secret 详解
    KubernetesSecret是一种用于存储和管理敏感信息的对象,如密码、OAuth令牌和SSH密钥等。使用Secret可以避免将机密数据直接放在Pod规约或容器镜像中,从而增加了应用程序的安全性。Secret的类型Kubernetes支持多种类型的Secret,包括:​​Opaque​​:默认的Secret类......
  • ASTGNN(Localised Adaptive Spatial-Temporal Graph Neural Network)
    引言        本文主要探讨的问题是:能否以及在多大程度上对时空图模型进行局部化。并且将研究领域集中到ASTGNN上。ASTGNNs通常使用自适应图卷积层对空间依赖性进行建模。通过学习图邻接矩阵来捕获空间依赖性。因此,ASTGNN的局部化是通过邻接矩阵(仅捕获空间依赖性)的稀疏......
  • .NET 中高效 Excel 解决方案 MiniExcel
    前言MiniExcel是一个用于.NET平台的轻量级、高性能的库,专注于提供简单易用的API来处理Excel文件。以下是MiniExcel的特点总结:轻量级与高效:MiniExcel设计为占用较少的系统资源,尤其在内存使用上表现优秀,适合处理大数据集而不会导致内存溢出。简单易用:API设计直观,......
  • 0207-pnet 模拟链路层数据
    环境Time2022-11-20WSL-Ubuntu22.04Rust1.65.0pnet0.31.0前言说明参考:https://docs.rs/pnet_datalink/0.31.0/pnet_datalink/dummy目标使用pnet_datalink包中的dummy模拟数据链路层的数据交换。Cargo.toml[package]edition="2021"name="network"versi......
  • K8s - 利用Kubeasz工具快速部署Kubernetes
    Kubeaszhttps://github.com/easzlab/kubeasz/https://github.com/easzlab/kubeasz/releasesKubeasz是一个基于ansible-playbook的Kubernetes二进制方式自动化部署项目,避免纯手工部署kubernetes过程中繁琐易错的步骤。考虑到了国内的网络环境,能够快速地完成Kubernetes......
  • 【云原生】Kubernetes 中的 PV 和 PVC 介绍、原理、用法及实战案例分析
    ✨✨欢迎大家来到景天科技苑✨✨......
  • kubernetes pod 冷启动时间
    我在记录Kubernetes中pod的启动时间时遇到了一个奇怪的现象。启动时间类似于正弦函数:长-短-长-短......场景:两台运行Ubuntu20、8G内存的虚拟机,部署一个Kubernetes控制节点和一个工作节点,使用Docker作为底层容器,容器镜像提前下载到本地。工作流程:每6秒启动......
  • 在pip包中分发pythonnet dll类型信息
    我已经能够使用C#通过以下方式加载pythonnetdll:fromimportlib.resourcesimportpathimportsys#Assuming'my_package.lib'isthesub-packagecontainingtheDLLswithpath('pyrp.lib','')aslib_path:sys.path.append......
  • BCGSoft BCGControlBar for .NET Crack
    BCGSoftBCGControlBarfor.NETCrackBCGSoftBCGControlBarfor.NETGreatFeatures:MicrosoftOffice-styleRibbonBarVisualStudio-likeDockingPanesVisualThemesCustomizableToolbarsandMenusGridandReportcontrollers......