Bye~ 2023

Bye~ 2023

2023年是奔波的一年,跨越了半个中国,将base搞到了浙江。来这边的第一感受就是,太…热了,太…潮了,太…冷了。没错,一个北方人在南方的冬天觉得冷。。。你敢信?不过遇到的人是真的很nice,比如房东。
今天是2023年12月31日,去年的今天,正在趁着空闲时间偷学Rust。Rust真的让我又爱又恨,这几年时间学一学,放一放,又学一学,入门了好多次,每次都有新体验。

2023年的主要技术栈,是以Go为主,慢慢的渗透进了Go的runtime、汇编等,未来也打算深入底层,产出高质量文章哦。

聊聊技术吧

之前写的技术博客因为时间仓促,来不及细化,好多只贴了代码,2024年,力争写的每篇博客都足够透彻。

有同学可能发现,我的大部分博文都以底层原理为导向。那么为什么这么搞呢?原因大概有以下几点:

  • 出于热爱,这是最主要的一点。好多同学看了底层相关技术就头疼,只想专注于业务。
  • 为了知其原理,并为后续的深度使用埋下伏笔(你很可能在未来的工作中根本用不到底层的技术,但学习后一定会有收获)。
  • 提升自己的竞争力,(深挖技术的护城河减缓可取代性,这一点深有体会)
  • 写更整洁的业务代码(没办法,在国内大多数厂子,不做业务…没饭吃啊)。

现在国内互联网内卷的程度已经…无法描述了。时间若回退10年。即使你非计算机专业;跨专业,跨行业,找个培训班培训几个月,完全可以胜任编码的工作。但是现在跨行业搞计算机…几乎无法得到满意的薪水。。。
“卷”带动了计算机专业同学的学习动力,同时为计算机行业筑起高高的门槛。(跨行业来搞IT的同学,是要苦行一段路的)。

对编程语言的看法

若单纯从业务实现的角度考虑,所有语言的初衷,都是为了解决某个领域的疑难杂症,所以编程语言是为实现业务而服务的,所有编程语言目的都一样

时长听到悦耳或刺耳的一种声音:编程语言只是工具。这句话要么出自高手的口中,要么出自菜鸡的口中,对号入座。

编程语言真正存在的意义就是为了解决某些特定领域的问题。一门语言不可能完全适用于所有的业务领域。而每一种编程语言都有自己的使命与其内在的箴言
三天上手一门语言,五天就写业务,出了问题开始拆东墙补西墙…这是只学语法,然后美其名曰精通很多种语言的人经常遇到的问题。这类人可以说是编程语言的使用者,简称会干活的人
会干活的人会干好活的人的区别在于,一个能完成工作,一个能很好的完成工作。换做你是用人单位,你想招聘哪一类人呢?举个最简单的例子,对有序数组进行搜索的时候,他使用了线性遍历,你使用了二分查找,你俩代码执行效率是N和logN的时间代价。谁更胜一筹呢?所以会干活和会干好活,是两种截然不同的概念,这也是程序员之间的差距。

对编程语言选择的建议

个人观点,初学者首选的是静态编译型语言,这类语言有很多,如:(C/C++、Go、Rust)等。至于是否需要是纯面向对象的语言,这个我认为都无所谓,面向对象语言大量使用继承,搞得类都要爆炸了…多继承把类的关系图搞的乱七八糟,一个"儿子"可以有多个"父亲",这难道不是杂交吗。现在新兴的编程语言多数以组合的方式来代替继承,将对象间的关系扁平化处理,使得复杂的关系网得以清晰。

对于有经验者,我的建议是徒劳的…

容器技术盛行的大背景下,静态语言的优势要高于动态语言。静态语言写的程序被编译好之后,直接打包进镜像,在容器中运行即可,高效调用系统API,无过多中间层。
而动态语言大多数带有一个虚拟机,如:栈机或寄存器机,通过把源代码动态翻译成虚拟机所需指令,再将该指令转换为机器码执行(或将代码直接翻译成机器码),该效率十分低下;即使事先将代码编译成伪机器码,再动态生成机器指令,效率也不见得好到哪去。虚拟机可以为代码带来良好的跨平台特性。
就云原生的时代而言,服务至上,应用程序多数部署在amd或arm等架构的服务器上,这时候大概率需要一种能编译成二进制的语言。某些动态语言,背着重重的壳(虚拟机),最生动的例子就是java语言,我们期望使用它编写的软件能直接以二进制的形式执行,而非解释执行,这一点graalvm(官网:https://www.graalvm.org/)貌似做到了,但仍然存在一定bug。这就很拧巴,未来java编写的服务端程序可能既要以二进制方式执行,又要以JVM解释执行,囧++。

2024规划

业余时间补充完善:具象的Go抽象的Go两个专栏,2024主体输出内容仍然以Go为中心、可能还有Rust、数据结构与算法以及各类中间件的使用。深入浅出、拳拳到肉、敬请期待!

提前祝各位同学元旦快乐!一切顺遂~
明年见~ Bye~

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

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

相关文章

2023-12-11 LeetCode每日一题(最小体力消耗路径)

2023-12-11每日一题 一、题目编号 1631. 最小体力消耗路径二、题目链接 点击跳转到题目位置 三、题目描述 你准备参加一场远足活动。给你一个二维 rows x columns 的地图 heights ,其中 heights[row][col] 表示格子 (row, col) 的高度。一开始你在最左上角的格…

自定义富集分析结果的term顺序

大家好,元旦过得还好吗?之前我们聊过如果富集分析结果不理想,如何选择富集分析的terms,如果不记得,可以看看这三个推文和视频。 ​富集分析结果不理想:如何从上千个term中找到自己想要所有term?…

Spark 集群搭建

文章目录 搭建前准备安装搭建解压并重命名环境变量配置配置文件yarn-site.xmlspark-env.sh 官网求 π(PI) 案例启动spark-shell通过浏览器查看显示查看 Spark 的网页信息展示 搭建前准备 下载地址:Index of /dist/spark (apache.org) 配置好 hadoop 环境&#xff…

HttpClient入门

HttpClient入门 简介 HttpClient 是 Apache HttpComponents 项目中的一个开源的 Java HTTP 客户端库,用于发送 HTTP 请求和处理 HTTP 响应。它提供了一组强大而灵活的 API,使得在 Java 程序中执行 HTTP 请求变得相对简单 maven依赖 org.apache.httpco…

【BIG_FG_CSDN】C++ 数组与指针 (个人向——学习笔记)

一维数组 在内存占用连续存储单元的相同类型数据序列的存储。 数组是静态存储器的块;在编译时确定大小后才能使用; 其声明格式如下: 元素类型 数组名[常量];元素类型:数组中元素的数据类型; 常量&#…

租房数据分析可视化大屏+58同城 Django框架 大数据毕业设计(附源码)✅

毕业设计:2023-2024年计算机专业毕业设计选题汇总(建议收藏) 毕业设计:2023-2024年最新最全计算机专业毕设选题推荐汇总 🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题&#xff…

【力扣题解】P105-从前序与中序遍历序列构造二叉树-Java题解

👨‍💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【力扣题解】 文章目录 【力扣题解】P105-从前序与中序遍历序列构造二叉树-Java题解🌏题目描述💡题…

Node.js+Express 路由配置,实现接口分类管理

首先创建一个路由目录及文件 routes/user.js代码 const express require(express); const router express.Router(); // 使用express提供的router对象 const db require(../dbserver/mysql);router.get(/api/user, (req, res) > {const sqlStr SELECT * FROM sys_user;…

StratifiedKFold解释和代码实现

StratifiedKFold解释和代码实现 文章目录 一、StratifiedKFold是什么?二、 实验数据设置2.1 实验数据生成代码2.2 代码结果 三、实验代码3.1 实验代码3.2 实验结果3.3 结果解释3.4 数据打乱对这种交叉验证的影响。 四、总结 一、StratifiedKFold是什么? …

SpringBoot 中获取 Request 的四种方法

SpringBoot 中获取 Request 的四种方法 方法1、Controller中加参数来获取request方法2、自动注入来获取request方法3:基类中自动注入(推荐)方法4:从RequestContextHolder中获取request 方法1、Controller中加参数来获取request 一…

Eclipse汉化

目录 一、首先电脑已经下载好Eclipse 二、打开Eclipse Babel 三、打开Eclipse 1、工具栏——>Help——> Install New Software 2、 点击Add 3、添加复制的链接,点击Add 4、等待加载 5、勾选Chinese(Simpliied),而后Next&…

动画墙纸:将视频、网页、游戏、模拟器变成windows墙纸——Lively Wallpaper

文章目录 前言下载github地址:网盘 关于VideoWebpagesYoutube和流媒体ShadersGIFs游戏和应用程序& more:Performance:多监视器支持:完结 前言 Lively Wallpaper是一款开源的视频壁纸桌面软件,类似 Wallpaper Engine,兼容 Wal…

算法题明明的随机数

第一行先输入随机整数的个数 N 。 接下来的 N 行每行输入一个整数,代表明明生成的随机数。 具体格式可以参考下面的"示例"。 import java.util.Iterator; import java.util.Scanner; import java.util.TreeSet; // 注意类名必须为 Main, 不要有任何 pa…

HarmonyOS 组件通用属性之通用事件 文档参数讲解(触摸事件)

好 本文 我们来说说触摸事件 字面意思也非常好理解 就是我们手机手指触摸物体触发 我们先在编辑器组件介绍中 找到这个东西的基本用法 Button("跳转").onTouch((event: TouchEvent) > {})最明显的就是 event 的类型变了 点击事件的是 ClickEvent 而这里是 Touc…

CMake入门教程【基础篇】开关(option)

文章目录 1.概述2.定义简单选项3.使用选项控制宏4.设置缓存变量5.设置高级选项6.使用选项设置变量 1.概述 option 是 CMake 中用于定义选项的命令。选项可以用来控制代码的编译行为,允许用户在构建过程中进行配置选择。 option 命令的语法如下: option(&…

PID为1的僵尸进程的产生及清理

父进程PID为1的僵尸进程通常是由init系统(在Linux系统中通常是systemd)产生的。这种情况通常发生在以下几种情况: 子进程结束,但其父进程没有正确地调用wait()或waitpid()系统调用来获取子进程的退出状态。在这种情况下&#xff0…

主成分分析(PCA):探索数据的核心

文章目录 前言1. 什么是 PCA ?2. PCA 的原理2.1 协方差和方差2.2 核心思想2.3 步骤 3. PCA 的应用场景4. PCA 的优缺点5. 示例:人脸识别5.1 完整代码5.2 运行结果 结语 前言 当今社会,数据无处不在。从社交媒体到金融交易,从医疗…

十大排序算法——排序算法效率比较——选择排序、冒泡排序、选择排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序

都2024年了,就不要看这种纯文字的教程了吧。一文包含十大排序算法。作者把算法原理和代码实现分为两个链接,如果想挑战一下自己的代码能力,可以选择只学习算法原理,代码完全由自己实现。 算法名称教程地址选择排序选择排序算法原…

【代码解析】代码解析之生成token(1)

本篇文章主要解析上一篇:代码解析之登录(1)里的第8行代码调用 TokenUtils 类里的genToken 方法 https://blog.csdn.net/m0_67930426/article/details/135327553?spm1001.2014.3001.5501 genToken方法代码如下: public static S…

一篇文章学会如何使用 NestJS 的 Guards 守卫实现系统用户身份验证和授权

前言 当我们基于NestJS框架构建和管理应用程序时,为了保障其安全性,我们常常需要对某些敏感操作或敏感信息的访问进行限制,这是我们需要使用到 守卫 的地方。它作为一种可以阻止未经授权的访问的机制,对我们的应用程序起到了守护…