GithubHelp home page GithubHelp logo

bennyhuo / kotlin-tutorials Goto Github PK

View Code? Open in Web Editor NEW
4.1K 204.0 567.0 10.44 MB

仓库持续记录以 Kotlin 为基础的视频内容的制作过程

Kotlin 91.35% Java 8.53% C# 0.12%
kotlin java-kotlin kapt tutorial article video

kotlin-tutorials's Introduction

GitHub license

Kotlin-Tutorials

2021.6 更新

这个仓库最初(2016年底)是用来分享一些 Kotlin 教程的,感兴趣的话可以查看这里。后来随着 Google 的大力支持,Kotlin 已经逐步在 Android 开发领域占据了一席之地。我就以个人经历来说说自己的感受吧:

过去几年我所在的腾讯公司当中,Kotlin 的落地项目实际上已经相当可观,例如:

  • 外部开源的 Android 插件化框架 Shadow,核心逻辑基本上使用 Kotlin 编写。
  • 蓝鲸 CI 平台,这是一个后端项目,在腾讯内部已经成为公司主推的 CI 平台,之前我在上面做持续集成时需要做插件开发,惊喜地发现打印出来的调用堆栈居然有 Kotlin 身影。
  • 内部还有团队使用 KMM 做跨平台的 UI 控件渲染,这可以说是非常有挑战的工作了,不仅要在移动端支持 Android、iOS,还要同时支持桌面版。基于这个框架所属产品的体量,我们大概率已经是这套技术方案的用户了。

今年初我因个人原因离开了鹅厂,去了北京猿力科技有限公司(猿辅导/看云集团),不出所料,在这家号称小而美有技术追求的公司当中,Kotlin 在项目上的应用已经相当广泛了,新代码很少能见到 Java 的身影(有需要内推的小伙伴可以找我)。

所以,作为“布道者”,过去我们总是想着怎么让更多的开发者知道 Kotlin,现在我们则需要提供更多的 Kotlin 的学习材料,来帮助大家更好的使用 Kotlin。

我目前主要的想法就是做一些视频放到 B 站上(账号:bennyhuo 不是算命的),当然视频的内容也不限于 Kotlin 本身。

有想法的小伙伴欢迎与我交流,也欢迎加微信群,请先添加微信好友 bennyhuo007,暗号“好家伙”,我拉你进群

内容清单

内容清单已迁移至我的个人主页:Benny Huo 的专栏

联系我


以下是过去几年我的一些积累和产出,有兴趣可以关注。

这是一本从基础知识、设计**、技术方案、应用方法、实践技巧5个维度系统讲解Kotlin元编程,并以此大幅提升Kotlin工程师开发水平、研发效率和开发体验的著作。

本书的出版打破了元编程技术资料少、门槛高的行业现状。本书包含大量案例,这些案例大多来自真实的生产实践,相对成熟和完善,可以作为元编程项目的范本。同时,本书提供大量的代码,为了提升阅读体验,在注释、书写和排版等方面对代码做了精心的优化。

随书源码

本书源码地址《深入实践 Kotlin 元编程》源码

购买途径

Kotlin 协程可以说是截止目前为止 Kotlin 中最让人困惑的一部分内容了,官方文档也比较简略,对于初学者不够友好。今年我把过去在公众号和博客发布的协程相关的文章进行了整理和扩充,进一步完善了诸多细节编写了本书,有兴趣可以留意一下。

随书源码

本书源码地址《深入理解 Kotlin 协程》源码

购买途径

我在做 基于 GitHub App 业务深度讲解 Kotlin1.2高级特性与框架设计(目前已经下线) 这门课的时候,顺便做了一个注解处理器的框架,叫 Tieguanyin(铁观音),这个框架主要是用来解决 Activity 跳转时传参的问题,我们知道 Activity 如果需要参数,那么我们只能非常繁琐的使用 Intent 来传递,有了这个框架我们就可以省去这个麻烦的步骤。

在这里,框架的内容其实不是重点,重点是,它是一个注解处理器的项目。为了让它的作用尽可能的放大,我对原框架做了简化,做了这套课程。

Kotlin 1.3 是一个相对成熟和稳定的版本,这次基于 Kotlin 1.3.50 重新制作入门到精通的课程,相比之下新课知识点梳理更详细,内容干货更多,讲法也更成熟,希望能对大家有帮助。

视频地址: http://coding.imooc.com/class/398.html

最近不少朋友反馈希望能看到一些深入分析框架的课程,正好前段时间对 Retrofit 又做了一次深入的分析,整理了一套免费视频分享给大家~

我一直做 Kotlin 的推广和宣传,发现大多数学习 Kotlin 的同学都是被行业“胁迫”不得不学。大家的诉求更多是怎么样找到一份好的工作,考虑到学习 Kotlin 的同学大多都是 Android 开发者,我就花了半年的功夫仔细整理了这一套视频出来,题目看上去不多,但每一个题目背后能引出的知识点可一点儿都不少。不求面面俱到,只求精准打击,面试过程中只要你能给面试官留下深刻的印象,那么这事儿就成了。

kotlin-tutorials's People

Contributors

bennyhuo avatar cooperkong avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kotlin-tutorials's Issues

心得体会

灌水的视频,不过大家可能会比较喜欢听

  • Java 转 Kotlin 的心得体会

不符合预期,视频停止剪辑,放弃

android kotlin

请问后期会出一些android kotlin + android databinding demo吗

KMM!!!KMM!!!

KMM!!!KMM!!!
什么时候才能kotlin一套代码开发移动端啊啊啊,
(ios没有动态代理?)

咨询一个问题

现在我在做一个sdk,编译出aar给客户程序用。我将sdk的library项目改成kotlin支持后,发现在xml里不能写中文拼接的textview了
像这样:
image

显示出来会是乱码:

image

如果直接依赖library项目不会有乱码问题,但是如果用打出来的aar包就会有这个问题。
求大神指教啊/(ㄒoㄒ)/~~

撸一些小程序

可以考虑带着我们撸一些实用的小工具.在实践中使用kotlin的特性.

Gradle 迁移 KTS 系列视频

前不久开源了一个小项目 Android-LuaJavax,在改造 Gradle 脚本的时候也同时看到群里有不少小伙伴在问 KTS 编写 Gradle 脚本的问题,于是想要做几个视频来介绍下 Gradle 脚本从 Groovy 到 Kotlin 需要掌握哪些内容。

大家如果有什么想法,也欢迎加入 催更群:966752510 一起讨论。

请问kotlin在idea中如何快速生成变量名

老师你好,当我使用idea编写java代码的时候,由于是类型在前,所以idea会自动的提示我几个可能的变量名(如下图),请问在kotlin中是否有这样的功能呢?

关于kotlin交流群

您好,拜读了您的作品,获益匪浅。本想加入您的qq交流群,但是有一个叫Dado杰的管理员拒绝了申请,并且附言‘好歹百度一下’,请问加群有什么硬性条件么?

JetPack Compose 相关

等我稍微有点儿空的时候集中学习一下,现在也只是大概了解。

相关:Kotlin IR

第十期的一个问题

首先感谢视频制作,对刚学Kotlin来说真是极好的。希望能继续下去,期待Kotlin和Android的视频。
第十期讲单例中的LazyNotThreadSafe类里,用到了

 fun getInstance() = {
            if(instance2 == null)
                instance2 = LazyNotThreadSafe()
             instance2
        }

而为什么不是传统function写法呢

fun getInstance() : LazyNotThreadSafe{
            if(instance2 == null)
                instance2 = LazyNotThreadSafe()
            return instance2
        }
//报错,Platform declaration clash: The following declarations have the same JVM signature (getInstance()Ldemo/singleton/LazyNotThreadSafe;):

可是这两种写法方法名是一样的啊,小白求解

Kotlin 入门开源电子书计划

准备做一个长期的 Kotlin 基础教程的编撰工作,作为官方文档的补充,大家有想法欢迎回复跟我一起讨论并参与编撰。

内容目标(暂定):

  1. 主线内容涵盖 Kotlin common、Kotlin Jvm、Kotlin js、Kotlin Native,通用部分则不依赖 Kotlin Jvm(不像过去大家习惯的方式)
  2. Kotlin 的常见库的使用方法
  3. 编译器配置、Gradle DSL 等等

输出形式:

  1. GitBook(主要目标,配合官网)
  2. 纸质书(不排除可能性)

时间安排

  1. 大纲梳理,整体初步构思
  2. 基础部分 - 待细化
  3. Jvm 部分
  4. Js 部分
  5. Native 部分
  6. 框架部分(ktor、datetime、serialization...)

@Suppress 注解可以用的 names

在 kotlin 中 @Suppress 是一个神奇的注解,能消除编译器的警告,甚至还能消除错误,不过这个注解的参数 names 很多时候不知道该怎么写

/**
 * Suppresses the given compilation warnings in the annotated element.
 * @property names names of the compiler diagnostics to suppress.
 */
@Target(CLASS, ANNOTATION_CLASS, TYPE_PARAMETER, PROPERTY, FIELD, LOCAL_VARIABLE, VALUE_PARAMETER,
        CONSTRUCTOR, FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER, TYPE, EXPRESSION, FILE, TYPEALIAS)
@Retention(SOURCE)
public annotation class Suppress(vararg val names: String)

这里 好像有这个names参数的信息,不过我测试过并不是全部都能生效的。

视频快水起来

关于单例

单例部分有点问题。

Java 中,单例除了要满足 『单例』 和『线程安全』以外;

还必须要满足『防止序列化和反射攻击』。

而使用静态内部类可以强制性地通过反射来进行实例化破坏单例条件。

Great work!

我也在试用Kotlint做开发,还没有放到生产环境。
我觉得还可以在你的目录中补充下注解相关的内容,以及Dagger2的使用。
最近我在翻译一部分kotlin的文章,我们可以一起合作 :)

关于 Telegram 群

问一下有没有 Telegram 群呢?

QQ 毕竟对 Linux 不友好,聊天和文件也不能永久保存多端同步

我在fragment中通过id来操作控件,但是报空指针。为什么

`class GoodsDetailsFragment : BaseFragment(){

 override fun initView(inflater: LayoutInflater?, container: ViewGroup?): View {
    return inflater!!.inflate(R.layout.layout_fragment_goodsdetails, null)
}

 override fun initData() {
     
    super.initData()
    val urlsList = arrayListOf<String>("xxxxxxxx")
    val itemList = ArrayList<GoodsDetailsItem>()
    (urlsList.indices).forEach{i ->
        itemList.add(GoodsDetailsItem(urlsList[i]))
    }
     
    val goodsDetailsAdapter = GoodsDetailsAdapter(R.layout.layout_fragment_goodsdetails_item, itemList)
    fragment_goodsdetails_img_recyclerview.layoutManager = LinearLayoutManager(mActivity)
    fragment_goodsdetails_img_recyclerview.isNestedScrollingEnabled = false
    fragment_goodsdetails_img_recyclerview.adapter = goodsDetailsAdapter

}

}`

fragment_goodsdetails_img_recyclerview为空
为什么啊?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.