<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[欧阳锋工作室镜像]]></title><description><![CDATA[欧阳锋工作室，做你最坚强的知识后盾！]]></description><link>https://blog.youkuaiyun.com/apple337008</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; apple337008]]></copyright><item><title><![CDATA[使用Flutter，我写了一个开源版本的HandShaker]]></title><link>https://blog.youkuaiyun.com/apple337008/article/details/125392559</link><guid>https://blog.youkuaiyun.com/apple337008/article/details/125392559</guid><author>apple337008</author><pubDate>Tue, 21 Jun 2022 15:48:48 +0800</pubDate><description><![CDATA[使用Flutter，我写了一个开源版本的HandShaker]]></description><category></category></item><item><title><![CDATA[Android手把手视频教程 | 课程简介]]></title><link>https://blog.youkuaiyun.com/apple337008/article/details/103735143</link><guid>https://blog.youkuaiyun.com/apple337008/article/details/103735143</guid><author>apple337008</author><pubDate>Fri, 27 Dec 2019 16:52:27 +0800</pubDate><description><![CDATA[在新的一年到来之前，我准备一份学习大礼送给大家，那就是我们今天的主角：Android手把手系列视频教程。
这个视频教程将从Android基础部分开始讲起，并使用Kotlin作为主要的编程语言，最终会进入高阶部分，最后会有一个应用实战课程，实战课程会使用GitHub合作开发的方式进行，所有参与学习的同学都可以推送PR，PR代码会严格审核，也是让大家了解一下GitHub的开源合作方式。
好了，废话不多...]]></description><category></category></item><item><title><![CDATA[懒癌晚期患者的福音到了，高大上的Kotlin序列化插件来了！]]></title><link>https://blog.youkuaiyun.com/apple337008/article/details/103547505</link><guid>https://blog.youkuaiyun.com/apple337008/article/details/103547505</guid><author>apple337008</author><pubDate>Sun, 15 Dec 2019 12:41:06 +0800</pubDate><description><![CDATA[上周我一哥们在吐槽Kotlin，说IDEA不支持在Kotlin序列化类中生成“高大上”的序列化版本号。我一试，还真不支持！既然IDEA本身不支持，但总有插件支持吧。于是，尝试Google搜索了一下，确实有一个这样的插件，这个插件发布于今年的2月份，一直处于alpha版本状态。赶紧安装测试了一下，确实可以生成序列化版本号，但生成的值似乎有点问题。而且这个插件仅支持Kotlin类，对于Java与Ko...]]></description><category></category></item><item><title><![CDATA[10分钟看懂动态代理设计模式（升级篇）]]></title><link>https://blog.youkuaiyun.com/apple337008/article/details/103442498</link><guid>https://blog.youkuaiyun.com/apple337008/article/details/103442498</guid><author>apple337008</author><pubDate>Sun, 08 Dec 2019 10:21:33 +0800</pubDate><description><![CDATA[关于动态代理，我之前写过一篇文章《10分钟看懂动态代理设计模式》。在这篇文章中，我收到了一些关于动态代理的提问，也有同学在微信公众号给我私信，询问关于动态代理的问题。再次Review这篇文章之后，我发现了一些问题。确实有一些细节没有介绍清楚，有一些地方含混过关了。因此，我决定重新写一篇关于动态代理的文章，希望可以讲清楚关于动态代理实现的每一处细节。这注定又是一场艰难的旅程，你愿意加入我们吗？

...]]></description><category></category></item><item><title><![CDATA[深入链表数据结构，助你搞定链表算法题]]></title><link>https://blog.youkuaiyun.com/apple337008/article/details/103158040</link><guid>https://blog.youkuaiyun.com/apple337008/article/details/103158040</guid><author>apple337008</author><pubDate>Wed, 20 Nov 2019 10:46:13 +0800</pubDate><description><![CDATA[在上一篇文章《巧解约瑟夫环问题》中，我们提到了链表。部分同学可能对链表的数据结构还不太熟悉。今天，我们就一起来尝试手写一个链表类实现。然后，再一起来看一看与链表相关的那些算法题。

本篇文章我们依然使用Java语言实现，如果你对其它语言的实现感兴趣，请在微信公众号”欧阳锋工作室“中给我留言
常见的线性链表分为两种：单向链表与双向链表。所谓单向链表，即链表只能通过单向访问，从上一个节点可以访问到下...]]></description><category></category></item><item><title><![CDATA[巧解约瑟夫环问题]]></title><link>https://blog.youkuaiyun.com/apple337008/article/details/103115724</link><guid>https://blog.youkuaiyun.com/apple337008/article/details/103115724</guid><author>apple337008</author><pubDate>Mon, 18 Nov 2019 00:05:02 +0800</pubDate><description><![CDATA[100个小孩手拉手围成一圈，从第1个小孩开始报数，数到3出列，下一个小孩继续从1开始报数，循环报数，求最后留在队列中的小孩的位置。

这是一道非常经典的算法题，我在面试的时候经常提到这道题。这道题是完全可以通过正向思维解答的，但遗憾的是，在所有面试的人中，几乎没有一个人可以正确地解答这道题。

那么，到底要如何解答这道题呢，我们一起来试试看！
解法一：生死看淡，不服就干
首先，我们尝试用正向思维...]]></description><category></category></item><item><title><![CDATA[理解Kotlin语言独有的位置注解，让注解控制更精准]]></title><link>https://blog.youkuaiyun.com/apple337008/article/details/103092236</link><guid>https://blog.youkuaiyun.com/apple337008/article/details/103092236</guid><author>apple337008</author><pubDate>Fri, 15 Nov 2019 20:56:55 +0800</pubDate><description><![CDATA[在Kotlin语言编写的代码中，你应该看到过类似这样的注解@file:JvmName(...)，这有点难以理解，正常的注解不会存在类似@file:这样的前缀，在Java语言中也没有类似的语法。那么，这到底有什么作用呢？ 由于其特殊的作用，我把它称之为”位置注解“。

Kotlin语言是一门将语法简化到极致的编程语言，我们一起来看一段简单的代码：
class Person {
    var na...]]></description><category></category></item><item><title><![CDATA[正确使用Kotlin注解，兼容Java代码]]></title><link>https://blog.youkuaiyun.com/apple337008/article/details/103064618</link><guid>https://blog.youkuaiyun.com/apple337008/article/details/103064618</guid><author>apple337008</author><pubDate>Thu, 14 Nov 2019 11:39:33 +0800</pubDate><description><![CDATA[大多数情况下，你不需要关注这个问题。但是，如果你的代码中包含了部分Java代码，理解这些注解将帮助你解决很多棘手问题。


产生这个问题的根本原因在于：Kotlin语言与Java语言的设计思路不同，部分特性属于Java语言独有，例如静态变量。部分特性属于Kotlin语言独有，例如逆变和协变。

为了抹平这些差异，Kotlin语言提供了一个绝佳的思路，通过添加注解可以改变Kotlin编译器生成的J...]]></description><category></category></item><item><title><![CDATA[一个从来不玩游戏的人做了一款小游戏，你会来玩吗？]]></title><link>https://blog.youkuaiyun.com/apple337008/article/details/102533674</link><guid>https://blog.youkuaiyun.com/apple337008/article/details/102533674</guid><author>apple337008</author><pubDate>Sun, 13 Oct 2019 15:47:14 +0800</pubDate><description><![CDATA[哈喽，大家好。我是一个几乎不玩游戏的人，小的时候也玩过小霸王游戏机，被父亲阻止。从此以后，对游戏便没了兴趣。
虽然对大型游戏没了兴趣，但对一些益智类的小游戏却情有独钟，发现一些独特的小游戏总忍不住看上一眼。
在一次偶然的机会，在国外的一个网站上发现一款推方块的小游戏，目的就是排除干扰方块，将目标方块移出游戏面板。
刚开始的时候觉得这很简单，不就是移动方块吗？可是上手一玩却并不是那么回事，有一个通用...]]></description><category></category></item><item><title><![CDATA[Hexo搭配快评实在是太妙了！！！]]></title><link>https://blog.youkuaiyun.com/apple337008/article/details/101356318</link><guid>https://blog.youkuaiyun.com/apple337008/article/details/101356318</guid><author>apple337008</author><pubDate>Wed, 25 Sep 2019 12:59:22 +0800</pubDate><description><![CDATA[快评是什么
快评是由深圳市一行代码科技有限公司开发的一款社会化的评论系统，快评使用Markdown编辑器进行评论回复。目前，支持使用微信或手机号进行登录。
体验地址：
集成步骤
1）注册并登录快评官网
官网地址：https://kuaiping.yhdm360.com/
点击右上方登录按钮，使用手机号加验证码的方式登录。首次登录后会看到申请免费使用的按钮，点击申请免费使用，填入申请域名，域名校验通...]]></description><category></category></item><item><title><![CDATA[为程序员同学们做点事]]></title><link>https://blog.youkuaiyun.com/apple337008/article/details/101321458</link><guid>https://blog.youkuaiyun.com/apple337008/article/details/101321458</guid><author>apple337008</author><pubDate>Wed, 25 Sep 2019 00:04:09 +0800</pubDate><description><![CDATA[哈喽，大家好，我是欧阳锋。
2019年，我创业了，迄今为止，我们已经奋斗了7个多月。
今天，我带来了我们团队主要面向程序员同学们的一款作品：快评。
什么是快评
快评是一款社会化的评论系统，类似国内的畅言，国外的Disqus, 目前快评可以支持微信或手机号的方式登录，即将支持Github、QQ等其他方式登录。
与畅言不同的是，快评完全支持Markdown语法，并且使用了一款颜值超高的Markdown...]]></description><category></category></item><item><title><![CDATA[2018最新Kotlin基础视频教程终于上线了]]></title><link>https://blog.youkuaiyun.com/apple337008/article/details/80970197</link><guid>https://blog.youkuaiyun.com/apple337008/article/details/80970197</guid><author>apple337008</author><pubDate>Mon, 09 Jul 2018 14:56:56 +0800</pubDate><description><![CDATA[
  本篇文章已经在微信公众号【欧阳锋工作室】完成首发


从5月份开始制作这个视频，历时两个多月，终于在网易云课堂与大家见面了…





视频特色


在前期课程中，使用普通编辑器进行编码，治疗你的IDE依赖症
所有课程均使用live coding的方式授课，保持与你的频率一致
每节课程课后都准备了相应的习题供大家巩固练习
课程覆盖面广，线下效果持续跟踪
项目实战部分是一个非常有意思的小项目，...]]></description><category></category></item><item><title><![CDATA[使用Kotlin语言两年后，我有话要说]]></title><link>https://blog.youkuaiyun.com/apple337008/article/details/80182927</link><guid>https://blog.youkuaiyun.com/apple337008/article/details/80182927</guid><author>apple337008</author><pubDate>Thu, 03 May 2018 17:08:22 +0800</pubDate><description><![CDATA[


  使用Kotlin语言已经两年了，它已经成为了我使用频率仅次于Java的编程语言。在此期间，很多人也谈了自己的一些使用感受。但我想，我是最有发言权的。迄今为止，我已经在三个生产环境应用中使用了Kotlin语言。因此，希望我的这些感想能够给你一些启发。




Q：是一个什么机缘让你开始决定使用Kotlin？


  如果我没有记错的话，大概在2016年3月份的时候突然收到一条来自Bugly...]]></description><category></category></item><item><title><![CDATA[关于Kotlin抛弃可检测的异常处理，你怎么看？]]></title><link>https://blog.youkuaiyun.com/apple337008/article/details/80077857</link><guid>https://blog.youkuaiyun.com/apple337008/article/details/80077857</guid><author>apple337008</author><pubDate>Wed, 25 Apr 2018 13:21:00 +0800</pubDate><description><![CDATA[
  可检测的异常英文翻译为Checked Exception，以下简称为CE。CE是一个备受争议的话题，有人主张CE是一个不可或缺的特性，也有人认为CE带来了一些问题，是一个冗余特性。这其中的支持者和反对者中都不乏软件行业的大佬。今天，我们借助这篇文章一起来讨论一下CE存在的必要性。




什么是CE

部分同学可能还不知道CE到底是什么。因此，在开始命题之前，有必要给大家解释一下CE的概念。...]]></description><category></category></item><item><title><![CDATA[测测你的Kotlin基础]]></title><link>https://blog.youkuaiyun.com/apple337008/article/details/80077765</link><guid>https://blog.youkuaiyun.com/apple337008/article/details/80077765</guid><author>apple337008</author><pubDate>Wed, 25 Apr 2018 13:08:57 +0800</pubDate><description><![CDATA[


  本次测试满分160分，测测看，你能拿几分 &amp;lt;&amp;lt;&amp;lt;


1）Kotlin语言有基本数据类型吗？（5分）



2）Kotlin中有哪些访问控制符，分别代表什么意思？默认访问控制符是什么？（5分）



3）Kotlin接口是否允许有方法实现？是否允许声明成员变量？（5分）



4）Sealed类有什么作用？（5分）



5）Kotlin语言中如何实现类似Java创建匿...]]></description><category></category></item><item><title><![CDATA[测测你的Java基础]]></title><link>https://blog.youkuaiyun.com/apple337008/article/details/80077761</link><guid>https://blog.youkuaiyun.com/apple337008/article/details/80077761</guid><author>apple337008</author><pubDate>Wed, 25 Apr 2018 13:08:00 +0800</pubDate><description><![CDATA[



Let’s get started &amp;lt;&amp;lt;&amp;lt;

1）关键字volatile、transient各有什么作用？

2）下面两种使用synchronized关键字的方式有什么区别？



// 第一种
synchronized(this) {
      ...
}
// 第二种
synchronized(A.class) {
    ...
}

3）ArrayList和Li...]]></description><category></category></item><item><title><![CDATA[Kotlin难点解析：extension和this指针]]></title><link>https://blog.youkuaiyun.com/apple337008/article/details/79936320</link><guid>https://blog.youkuaiyun.com/apple337008/article/details/79936320</guid><author>apple337008</author><pubDate>Sat, 14 Apr 2018 00:48:24 +0800</pubDate><description><![CDATA[
  扩展（extension）是Kotlin语言中使用非常简单的一个特性。这篇文章并不是要讲解扩展的基本用法，而是解决在一些复杂场景中，扩展容易让人产生迷惑的一些问题。除了扩展，本篇文章还将讲解this指针在Kotlin语言中的基础用法。






扩展函数难点解析

大多数场景下，你都能轻松搞定Kotlin扩展。可是，看看下面这个题目，你还能脱口而出，告诉我答案是什么吗？



open c...]]></description><category></category></item><item><title><![CDATA[技术相对论之软件架构]]></title><link>https://blog.youkuaiyun.com/apple337008/article/details/79618506</link><guid>https://blog.youkuaiyun.com/apple337008/article/details/79618506</guid><author>apple337008</author><pubDate>Mon, 19 Mar 2018 22:08:55 +0800</pubDate><description><![CDATA[


  有同学问我，你是怎样学习编程的呢？为了回答你的这个问题，今天，我们一起来做一件非常有意思的事情。我们以MVC架构为基，从服务端编程开始，依次类推iOS、Android，并最终完成登录、注册功能。




What is MVC ？

正文开始之前，我们先来简单了解一下MVC架构。

MVC全称是Model-View-Controller，是上个世纪80年底Xerox PARC为其编程语言...]]></description><category></category></item><item><title><![CDATA[Android两行代码实现仿微信滑动返回效果]]></title><link>https://blog.youkuaiyun.com/apple337008/article/details/79456188</link><guid>https://blog.youkuaiyun.com/apple337008/article/details/79456188</guid><author>apple337008</author><pubDate>Tue, 06 Mar 2018 11:44:16 +0800</pubDate><description><![CDATA[


  iPhone滑动关闭页面是一个非常讨喜的设计。滑动关闭可以让你聚焦屏幕内容，而不需要因为返回突然切换思维到屏幕下方寻找返回按钮。事实上，在使用Android手机的时候，我经常这样做。原因是，Android不同机型的返回按钮位置不一样。以至于在更换机型后我常常找不到返回按钮，需要一段时间的适应期。而滑动关闭就可以有效地避免这个问题，目前已经有很多类型的Android应用开始支持滑动关闭，比...]]></description><category></category></item><item><title><![CDATA[10分钟看懂动态代理设计模式]]></title><link>https://blog.youkuaiyun.com/apple337008/article/details/79424399</link><guid>https://blog.youkuaiyun.com/apple337008/article/details/79424399</guid><author>apple337008</author><pubDate>Fri, 02 Mar 2018 16:05:33 +0800</pubDate><description><![CDATA[
  动态代理是Java语言中非常经典的一种设计模式，也是所有设计模式中最难理解的一种。本文将通过一个简单的例子模拟JDK动态代理实现，让你彻底明白动态代理设计模式的本质，文章中可能会涉及到一些你没有学习过的知识点或概念。如果恰好遇到了这些知识盲点，请先去学习这部分知识，再来阅读这篇文章。




什么是代理

从字面意思来看，代理比较好理解，无非就是代为处理的意思。举个例子，你在上大学的时候，总...]]></description><category></category></item></channel></rss>