递推算法与递推套路(算法基础篇)

首图

默认标题_公众号封面首图_2021-10-12+15_47_48

联系我们有道技术团队助手:ydtech01 / 邮箱:[ydtech@rd.netease.com]

相信了解算法同学经常会说动态规划太难了,看到题目完全不知从何下手,或者是说“一看题解就会,一看题目就废”这样的一个状态。本质上是由于学习动态规划的时候,学习方法不对,最终导致南辕北辙,没有掌握其中精髓。而动态规划与递推算法又有着暧昧不清的关系,我们选择先从递推算法入手,一步一步揭开动态规划的神秘面纱。

阅读全文
玩转TypeScript工具类型(下)

首图

封面3

联系我们有道技术团队助手:ydtech01 / 邮箱:ydtech@rd.netease.com

本文是《玩转TypeScript工具类型》系列的最后一篇,包含了如下几部分内容:

  • ThisParameterType
  • OmitThisParameter
  • ThisType

快捷跳转

阅读全文
玩转TypeScript工具类型(中)

首图

封面2

本文是《玩转TypeScript工具类型》系列的第二篇,包含了如下几部分内容:

  • 必读:extends条件运算符
  • Exclude<Type, ExcludeUnion>
  • Extract<Type, Union>
  • NonNullable
  • 必读:tuple type元组类型
  • Parameters
  • ConstructorParameters
  • ReturnType
  • InstanceType
阅读全文
玩转TypeScript工具类型(上)

首图

封面

联系我们有道技术团队助手:ydtech01 / 邮箱ydtech@rd.netease.com

随着前端项目的规模不断变大,多人协同开发已经成为了前端开发的标配,随之而来的就是 TypeScript 被越来越多的项目所使用,这种变化并不是对技术的盲目追求,而是业务驱动下的技术进步,TypeScript 通过对原生 JavaScript 提供强类型加持,在很大程度上提升了代码质量,大大降低了多人协同场景下不同模块接口相互调用可能出现的隐性 bug。本系列分享来源于我日常开发中对 TypeScript 工具类型的一些学习和使用体会,本系列文章分为上中下三篇,通过本系列分享,希望可以达到如下几个目的:

  • 从源码的角度理解每一种工具类型的实现机制
  • 通过一两个简单的例子了解每一种工具类型的基本用法
  • 与此同时加深对 TypeScript 的理解
  • 最终实现可以在实际工作中举一反三
阅读全文
有道词典 Flutter 架构与应用

首图

封面

联系我们有道技术团队助手:ydtech01 / 邮箱ydtech@rd.netease.com

在 18 年 Flutter 发布正式版 1.0 版本以来,有道 Luna 团队保持持续的关注,在不少业务上进行大量的尝试,Flutter 本身统一 Skia 引擎带来的跨平台特性和一致的体验,AOT 下高性能,JIT 下热重载带来提高开发效率等特性,都让人们保持极大的热情和持续的投入,其生态社区也在快速增长。

从实际表现上来看,整个技术栈设计很好。上层 Flutter Framework 引入 Widget/LayerTree 等概念自己实现了界面描述框架,下层Flutter Engine 把 LayerTree 用 OpenGL 渲染成用户界面。

长期来看,用 Flutter 来替代 Native ,实现双端代码统一,节约人力开发,也是我们持续探索的方向。

阅读全文
你真的了解二叉树吗?(手撕算法篇)

首图

封面1

联系我们有道技术团队助手:ydtech01 / 邮箱ydtech@rd.netease.com

前言

本文属于系列文章《你真的了解二叉树吗》的第二部分——手撕算法篇。

如果你还没有看过第一部分《你真的了解二叉树吗(树形结构基础篇)》的话,强烈建议先看一下第一部分的内容,这样你在解题时会更加如虎添翼。很多第一篇里面已经讲过的内容,在这里将不再赘述。

阅读全文
你真的了解二叉树吗?(树形结构基础篇)

首图

封面

联系我们有道技术团队助手:ydtech01 / 邮箱ydtech@rd.netease.com

前言

树形结构,尤其是二叉树,在我们平时开发过程中使用频率比较高,但之前对于树形结构没有一个比较系统全面的了解和认知,所以借此机会梳理一下。

本文属于《你真的了解二叉树吗》系列文章之一,主要介绍的是树形结构的基础,在看完这篇文章之后,如果想要更加熟练掌握二叉树的话,可以看另一篇《你真的了解二叉树吗(手撕算法篇)》(下周发布)。

阅读全文
大厂offer?拿来吧你!网易有道笔试编程题特辑

首图

封面4

联系我们有道技术团队助手:ydtech01 / 邮箱:ydtech@rd.netease.com 欢迎应届生同学们

来到2022年校招运动会

现在迎面向你们走来的

网易有道代表队!

(传送门:http://hr.youdao.com/ )

他们食堂好吃

他们从不内卷

今天,他们还带来了

10道笔试编程题

据说全做对的同学

都顺利地拿到了 offer!

同学们,请开始你们的 ~~bug~~

啊不

表演吧!

阅读全文
中国大学 MOOC Android 性能优化:冷启动优化总结

首图

封面4

联系我们: 有道技术团队助手:ydtech01 / 邮箱:ydtech@rd.netease.com

本文的重点在于如何定量的排查冷启动过程中的耗时操作,并提供对应的优化思路和实践方法总结。同时本文涉及到的冷启动优化主要涵盖两个方面:Application 的性能优化和 Launcher Activity 的性能优化。

一、背景

中国大学 MOOC 是网易与高教社携手推出的在线教育平台,目前,经过长期的产品打磨和专研,在课程数量、质量以及影响力,中国大学 MOOC 已成为全球领先的中文慕课平台。同时经过此次优化,冷启动速度整体提升27%。

在我们日常开发中,随着 app 整体迭代次数增多,由于长久以来的迭代需求,android app 本身也集成了较多的第三方组件和 SDK,同时在日常迭代中,也是以业务迭代需求实现为主要目的,导致现在 app 本身,或多或少存在一些性能可优化空间。所以有必要进行性能优化,提升用户体验

此次优化,主要侧重于两个方面:

  • Application 的性能优化
  • app 启动页性能优化

该文档重点不在于代码规范和业务代码逻辑导致的性能问题,而是在假设代码无明显、严重性能漏洞,并且不改变原有业务逻辑,量化性能监测数据和问题,并针对其进行优化修改。

阅读全文
JAVA语言异步非阻塞设计模式(应用篇)

首图

应用篇头图

1.概述

本系列文章共2篇。在上一篇《原理篇》中,我们看到了异步非阻塞模型,它能够有效降低线程IO状态的耗时,提升资源利用率和系统吞吐量。异步API可以表现为listener或Promise形式;其中Promise API提供了更强的灵活性,支持同步返回和异步回调,也允许注册任意数目的回调。

在本文《应用篇》中,我们将进一步探索异步模式和Promise的应用:

第2章:Promise与线程池。 在异步执行耗时请求时,ExecutorService+Future是一个备选方案;但是相比于Future,Promise支持纯异步获取响应数据,能够消除更多阻塞。

第3章:异常处理。 Java程序并不总能成功执行请求,有时会遇到网络问题等不可抗力。对于无法避免的异常情况,异步API必须提供异常处理机制,以提升程序的容错性。

第4章:请求调度。 Java程序有时需要提交多条请求,这些请求之间可能存在一定的关联关系,包括顺序执行、并行执行、批量执行。异步API需要对这些约束提供支持。

本文不限定Promise的具体实现,读者在生产环境可以选择一个Promise工具类(如netty DefaultPromise[A]、jdk CompletableFuture[B]等);此外,由于Promise的原理并不复杂,读者也可以自行实现所需功能。

阅读全文