2024年末总结
前言回顾一下我2024年的主要成长点,主要是想记录一下我走过的路。这篇也是文笔水平有限想到啥写啥,纯纯意识流🥸。
人生首个挫折🚧对,我将它视为我人生中第一个真正意义上的挫折,它真的把我打的措手不及,对我未来人生规划彻彻底底的颠覆。虽然在之前的文章中我从未袒露,现实中我也尽量避开,但我还是想在这篇文章中坦然的讲讲吧。这件事情一直是我心上的一道深深的伤疤,很少向别人提起。大一上的我其实一直准备着转专业去当一名教师,计划去摆烂的过一生的,也不能这么说,就是一直幻想是在高中讲台上和学生讲讲课唠唠嗑,安安心心的过日子。计算机其实一直是我的planB或者更准确地说是众多兴趣爱好中的一个,那时候的我对计算机就业是没有任何心理准备的。期间准备转专业的过程不想多言,我努力过,但最后的结果就是转专业失败。我恨在我通过了校内的笔试面试,却卡在了政府的官员身上,这种令人无可奈何的戏剧转折打的我措手不及。我也是从这才懂得努力是不一定会成功的,过往的人生我一直都算是幸运儿,只要努力就能得到正反馈,我也一直觉得会一直心想事成下去,但很遗憾人生就不是这样的,只是我还没遇到罢了。虽然我多想笑着来说,觉得已经看淡,现 ...
Radmin LAN技术分析——NAT穿透
前言本文主要是分析一下Radmin LAN,最近在我们团队要做Radmin LAN的产品体验,我负责技术分析部分。本文不涉及具体操作教程,聚焦于工作原理。Radmin LAN 特别适合用于远程工作、在线游戏或搭建小型虚拟局域网。它不同于传统的企业级 VPN 服务,配置简单且使用方便。Radmin LAN 是由一家创始于1999年的(11-50人规模)的小公司Famatech,专注于桌面和服务器管理远程控制软件的开发。Radmin LAN 实际上就是一个VPN,主要用于连接不同地理位置的设备,让它们仿佛在同一局域网内,官网自己也叫它 Radmin VPN 。之后我会将这两种叫法混叫,当侧重在虚拟局域网时,我会叫它Radmin LAN,而侧重不同设备通信时则叫Radmin VPN。
Radmin LAN 的工作原理Radmin LAN 的工作原理核心在于通过其云服务器搭建起分布式虚拟局域网,让分布在不同地理位置的设备能够像在同一局域网中一样通信。这种原理通常涉及几个关键步骤:
创建虚拟局域网(LAN)
建立点对点(P2P)连接
为每个设备分配一个虚拟 IP 地址以模拟局域网
相互间通信使 ...
我最近在干什么【1】
前言打算开一个新系列,偏休闲点的,不是完整全面的技术分享,话题还是聚焦个人成长(学的技术、了解到的信息、看的书……) 方面。文章偏意识流点,单纯分享我最近在干什么,不定期更新,有话则长无话则短。
JS精进之前为了快速从安卓转型到前端,趁早开始干项目实操,就主打速通,两个月fast learn了前端三件套和React,学得挺粗糙笼统的,没有多少内部整合的时间。计划一轮学How,先用起来;二轮学Why,学学原理机制;三轮学What,读读源码。一个月前(11月初)本计划开始学习RN,走走跨端路线,但也没想到这么快就碰到瓶颈,RN起了个头就推进不下去了。于是乎就把精力重新集中会JS的学习,学了近两周,补了之前略过的知识点和ES6之后的语法糖,查漏补缺的同时学学了闭包、提升、类型转化、GC等等稍微偏底层的知识。
前端工程化其实这件事情应该是贯彻始终的,我也是从最开始的一脸懵逼,啥是vite,为啥不用CRA(create-react-app),ESlint是啥,npm又是啥?当初给我的感觉就是混乱,什么乱七八糟的东西,差生文件多。学习过程中也是东学一点西学一点,不知不觉间凑齐了大致上的拼图,拼成了 ...
JS特性之Hoisting(提升)
前言为了写这篇文章其实也不容易,本来想讲GC的,发现lkq写过了,后来想讲类型转换,发现🗻🐟🏠写过了。🫡🫡🫡最后没办法了,让我水一水喽(bushi)
补一下,现在又学习了些新知识,发现这篇讲的有些错误,以补充或纠正的形式特此改正。(24/11/27)
Hoisting提升🏗️前置知识啥是提升?简单的说 Hoisting 是JS引擎在代码执行前将所有声明提升到其所在作用域的顶部这句话你可以在看完这篇文章后再回头看看这句话,真的是一言蔽之。接下来我会简单讲解一下。
所有声明JS中拢共有
变常量var let const
函数function
类class
模块import export是的这些都会提升,但是JS引擎在处理这些声明时会有不同的细节处理。
所在作用域JS中拢共 global function block module四个常规的作用域,这不会区别自己学去。[[JS作用域]]好像还有词法作用域 (Lexical Scope)、动态作用域 (运行时上下文context)、私有作用域 (Private Scope),嘿🫠我也不会,估计是不同的 ...
终端应用开发沉思录
前言以下所有分析皆是从我的视角出发,探讨下我现行局势下觉得最有可能的实现且有未来发展前景的技术方案。由于本人没有啥开发经验,所以多是纸上谈兵,仅仅记录和分享下我个人想法。
移动App的开发模式:在技术选型上,其实好久没这么犹豫过了,最近几天学到React Native,但迟迟没有全身心投入,就是在疑虑其和市面上的其他技术相比是否值得学习。目前移动应用开发有以下三条主要道路(原生 H5 混合)外加一个国内特色的小程序
开发模式
典型应用场景
优点
缺点
代表技术
原生开发
高性能需求、UI/UX要求严格的场景
性能高,完整API支持,用户体验佳
开发和维护成本高,无法跨平台
Android SDK, iOS SDK, UWP
H5开发
跨平台、快速迭代、内容动态更新的场景
一次开发,多平台适配,更新简单
性能受限,功能受限
HTML, CSS, JavaScript, JSCore, V8
混合开发
跨平台、调用原生功能、性能要求较高的场景
跨平台,调用原生功能,维护成本低
性能较原生略差,复杂功能开发受限
React Native, Weex, uni-a ...
Git通讲-第四章:Git的未来与我的感悟
前言这估计就是本系列的最后一篇文章了,我将在这篇中为系列做个总结,探讨一下git的未来,分享下我洋洋洒洒写了这么多篇文章下来的个人感悟。
Git的未来Git不仅是一个强大且灵活的分布式版本控制系统,而且在过去的十几年中不断发展。其未来发展方向体现在两大方面:核心功能的改进和与生态系统中其他工具的整合。
Git的持续发展随着技术的发展和用户需求的变化,Git的开发者们不断对其进行优化和扩展。比如,近年来的更新中引入了以下改进:
性能优化:为了应对超大规模代码库的管理需求,Git引入了诸如partial clone(部分克隆)和sparse checkout(稀疏签出)等功能,这些功能让开发者能够选择性地检出代码,提高了效率。
安全性提升:随着计算机算力提升,SHA-1算法安全隐患的逐渐增加,Git逐步引入了更强的哈希算法(如SHA-256),以保证数据的安全性和完整性。
用户体验优化:Git的CLI体验也在逐步改进,通过更丰富的输出提示和更多的人性化选项,使得命令的执行更为直观,降低了初学者的使用门槛。
未来,Git可能会继续在以下方面优化:
更加智能的合并和冲突解决工具:Git社 ...
Git通讲-第三章(4):GUI工具和插件
前言这篇文章是我昨天晚上躺在床上突然想起来要写的,感觉Git的Git - GUI Clients像是GitHub Desktop还是值得讲一讲的。Git官网上推荐了39款GUI客户端,我就挑几款介绍一下,主要还是带大家了解一下有这东西。此外,由于之前提到过微软收购了GitHub,也在自家IDE-VScode等中官方支持了一些可视化插件,还是挺好用的。
Git GUI工具以下是几款Git GUI工具的介绍:
1. Sourcetree | Free Git GUI for Mac and Windows
开发者:由Atlassian开发,免费使用。
支持平台:Windows、macOS。
特点:
详细的提交历史可视化:Sourcetree展示了清晰的提交历史图,帮助用户追踪项目进展。用户可以直观地查看提交、分支和合并情况。
分支和合并管理:简化了分支和合并操作的复杂性,通过图形化的分支树状结构,使得Git操作更直观。
子模块支持:能够管理多个子模块(或仓库),方便对大型项目的依赖进行管理。
适用场景:适合需要高效管理分支和分布式项目的用户。
优缺点:
优点:界面详细、功能丰富、免费。 ...
Git通讲-第三章(3):子模块
前言这个子模块(submodule) 也是我在写这章的时候才知道的东西😁,也是把书读厚了,学到新东西了。我也没实践过但是我猜啊,比如在React Native的开发过程中,除了用RN的那一套前端代码,在需要用到某些RN无法实现的功能时,需要进行原生开发,这时候这一个项目同时又前端的代码(typescript)、Android的代码(kotlin)、ios的代码(swift),利用这个子模块(submodule)就可以在这个大项目中又对三块截然不同的代码进行细分管理。嘻嘻,讲都讲到这了那我就简单提提我设想的技术路线,我之前学过一年的安卓开发,期间也接触了ios的开发,也是发现了原生开发的磨叽,想着能否实现跨端,于是发现了React Native,便开始从头来过,走前端路线三件套、React、ts、tailwind等等前端技术,最后过渡到RN,在移动端深入下去🤪🤪🤪。
子模块(submodule)Git中的子模块(submodule)功能主要用来管理一个仓库中的多个独立的项目代码,便于将其作为另一个项目的依赖并一起管理。子模块适合那种多项目组合的场景,比如在一个大项目中嵌入另一个独 ...
Git通讲-第三章(2):Hooks钩子
前言这篇文章我们来聚焦.git/hooks/这个熟悉又陌生的文件夹。我不知道读者有没有前端经验,React里也有Hook的概念,但是此hook非彼hook。不懂,我们看下去就知道了。
Git 钩子的基本概念以下是 Git 钩子(hooks)的详细介绍,包括使用场景、编写示例和注意事项。Git的钩子(hooks)是一组钩子脚本文件,位于.git/hooks目录下。它们允许你在Git的特定事件(如提交、合并、推送等)发生时,自动执行自定义脚本。默认情况下,Git在.git/hooks目录中会提供一些样例文件,这些样例文件以.sample为扩展名。
Git Hooks 的分类Git hooks分为客户端钩子和服务器端钩子两类:
客户端钩子:这些钩子在本地仓库运行,主要用于检查或优化提交的代码,确保符合规范,适用于代码风格检查、运行测试等常规操作。
服务器端钩子:这些钩子在远程仓库服务器上运行,通常用于更高级的代码控制,比如防止不合规的代码被推送到共享仓库上。
客户端钩子这些钩子在本地仓库中运行,通常用于代码质量检查、测试等。
pre-commit:在提交前执行。用于检查代码是否符合要求 ...
Git通讲-第三章(1):常用指令及仓库分区
前言本章开始,我会笼统的介绍一下git的一些常用指令,然后挑我感兴趣的一些指令进行详细解析和拓展。这章将不像前一章那样关注概念的理解,而是逐渐将重心转移到应用上去。
Git指令Git的指令(命令)可以分为几种主要类型,每种类型针对不同的操作和功能,其实如果你一路看下来光看名字也能猜出个所以然,前面文章中也多多少少触及到了一些Git指令。以下是主要的几种类型指令:
1. 配置命令
git config:设置Git的全局或本地配置。
2. 仓库命令
git init:初始化新的Git仓库。
git clone:克隆远程仓库。
3. 文件操作命令
git add:将更改添加到暂存区。
git rm:删除文件。
git mv:移动或重命名文件。
4. 提交命令
git commit:提交更改。
git commit --amend:修改上一个提交。
git commit -m "message":提交时直接添加提交信息。
5. 分支和合并命令
git branch:管理分支。
git checkout:切换分支或恢复文件。
git merge:合并分支。
git r ...