自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

蛋壳城堡

不动之水动兮,乱世流年;不惑之人惑兮,万事蹉跎。

  • 博客(56)
  • 资源 (13)
  • 收藏
  • 关注

原创 MyBatis自定义自定义动态SQL解析方式

引子之前项目中一直使用的是JPA作为ORM框架,最近,新加了一个子服务,使用的是MyBatis 作为ORM框架。既然用的是MyBatis,那就面免不了 循环迭代参数、if 动态SQL查询等。然而,MyBatis 的动态SQL要写很多判断逻辑、迭代逻辑,老是从其它SQL中去Copy就显得太Low了。所以,我查了查MyBatis的官方文档,最终找到了解决方案,这里我将方法分享出来,希望能帮到...

2019-12-13 16:15:10 1694

原创 SpringBoot + MyBatis配置多数据源

引子最近项目中,由于数据源更替,部分原来的需要通过REST API获取的数据需要切换成 直接从数据库中获取,所以,需要给项目配置多数据源。在查阅了一些文档后,这里记录下自己亲身实践后的结果,希望能帮到大家。配置项下面是在 application.properties 中配置的数据:# 多数据源配置,数据源一user.datasource.jdbcUrl=user.dataso...

2019-12-13 13:02:35 299

原创 Java8 lambda表达式,Comparator.comparing().thenComparing()报错

最近更新加上了部分我自己对问题的理解,同时附件信息中贴上了一个我最近在公司内部分享的PPT,里面详细讲述了函数式接口、Lambda表达式、Stream、Optional等JDK8的新特性。有需求的同学可以下载参考一下。引子在对集合进行操作的时候,我喜欢用Java8的新特性——Stream/lambda表达式等。最近,在项目中就碰到了一个怪异的问题,这里记录下来,并将解决方式分享给大家。...

2019-06-04 14:04:55 21137 9

原创 MySQL系统变量explicit_defaults_for_timestamp与SQL Mode,MySQL中诡异的Timestamp自动更新

引子最近在项目中碰到了一个问题:项目使用的ORM为JPA,Entity实体中存在下面两条属性:create_time:希望在当前条目添加时,自动设置为当前值。 update_time:希望在条目每一次修改时,自动更新为修改时的当前时间。然而在实际操作中,却出了一些列的问题,在这里,将问题记录并解决。MySQL版本:5.6.24-log 远程连接工具:Navicat...

2019-04-10 19:48:36 4884 3

原创 SpringMVC中自定义注解,实现同时支持将POST-Json/POST-Form/GET请求的参数封装为对象

问题描述:在我现在的项目中,由于人员更替,代码有些不规范。前端Web、App 对后端同一接口的请求方式可能不一样。例如,有的接口Web请求的时候,使用的是 Post  请求,数据包装为一个Json Object;但是在App端,可能使用的是Post 一个 表单数据过来。这样,后端接收数据的时候,@RequestBody 便不能满足需求。所以需要我们寻求一种解决方式同时兼容这些请求的方式。解...

2018-12-05 19:42:20 2854 2

原创 Spring AOP execution表达式,拦截 参数被注解注释了的方法

问题描述:       项目中碰到一个需求,希望所有“存在参数被自定义注解@RequestModel注释”了的方法都被切面拦截,在实际逻辑执行前,先进行参数验证。 @RequestMapping(value = "list", method = {RequestMethod.GET}) public ResultModel list(@RequestModel RoleLi...

2018-10-30 19:35:17 7769 8

原创 XXL-JOB 注册流程与机制 源代码剖析

之前的项目中需要剥离出定时任务的代码,经过调研,我们决定使用XXL-Job来实现定时任务的调度。但是在使用过过程中,出现了一个问题——线上测试服务器的xxl-job-admin(部署调度中心)中,配置执行器的注册方式使用自动注册的时候,OnLine机器地址总是获取不正确。而当我将xxl-job-admin部署在我本地电脑上的Tomcat中的时候,使用自动注册,OnLine机器地址能正常获取。其...

2018-09-16 13:58:23 8065 9

原创 从源码看SpringBoot启动过程

引子对于最近有找工作需求的人来说,这几天是挺难的。最近听闻身边的一些公司裁员的消息,不知道,这悲伤的2020下,是否隐藏着契机。周末突然想到了之前面试被问到的一道面试题:请简单描述下SpringBoot的启动过程。当时只是简单地说了下,有些点并没有覆盖到。正好,周末有空闲,看了看源码,结合着一些资料,这里就记录下我的理解。软件版本SpringBoot 2.1.4.RELEASE流程分析在启动方法 main() 方法中,调用了SpringApplication.run() 方法,...

2020-05-28 17:55:51 466

原创 2020求职笔记(三)

引子有的地方,当你呼吸到那儿的空气,你身体里的每一根骨头都会告诉你,你不喜欢。今天是崔小胖和我六周年的纪念日。有她在,我的世界就有光,任他千难万险,我都不会迷茫。加油吧,年轻人!题目1、如果一个对象作为 HashMap 的Key,那这个对象需要做些什么?在put一个键值对的时候,hashCode() 和 equals() 方法谁先被调用?两个对象hashCode()相等,equals()就一定会返回 true么?既然你说到了hash冲突,能详细介绍一下么?如果一个对象作为HashMap的

2020-05-17 21:19:26 349

原创 2020求职笔记(二)

引子大概,有一家挺想去的公司面试把我给挂了。反思了一下,问我的问题,大多都是我能回答得好的。面试经验的不足,这几天承受的压力,面试官给我的那种压迫感,让本来就不清晰的思绪更加一片空白。年轻人,继续加油吧~既然决定要做披荆斩棘的利剑,就别甘于被用来劈柴。题目1、散列表、Hash冲突 与 链表法。问题:将 69、45、29、28、16、8、88、38、75、22 这个10个数作...

2020-04-20 18:42:39 334

原创 2020求职笔记(一)

引子人生已经如此地艰难,我却还要找工作,我真的好难。一个工作不到两年的渣渣要在这个时候去找工作,这是何等的无所畏惧与狂妄!年轻人,加油!前几天投了一些简历,经历了一些笔试、面试,这里就记录一下自己求职的心路历程,并且记录一下自己在笔试、面试中碰到的题目。题目1、线程的六种状态?线程的六种状态在 Thread.State 枚举中定义:public enum State {...

2020-04-13 15:09:45 310

原创 TCP协议与UDP协议学习笔记

引子今天正好是周末,刚好偶然翻到了之前学习计算机网络的时候做的关于TCP协议、UDP协议的笔记。TCP三次握手、四次挥手又是面试中的高频考点,正好自己最近也在准备各种面试,这里就总结一下TCP协议和UDP协议相关的知识点。TCP协议与UDP协议TCP协议和UDP协议是运输层的两个主要协议。TCP:Transmission Control Protocol,传输控制协议 UDP:U...

2020-04-05 16:09:44 428

原创 JVM学习笔记(四):JVM类加载机制

引子在上一篇文章《JVM学习笔记(三):Java内存模型》中,我总结了Java内存模型相关的一些知识。接下来,我将继续,参考着周志明老师的《深入理解Java虚拟机》,以及一些自己查阅的书籍、资料,总结一下JVM类加载机制相关的知识。参考文档1、《深入理解Java虚拟机》第三版,周志明 著,第七章。...

2020-03-31 16:16:43 251

原创 JVM学习笔记(三):Java内存模型

引子在上一篇文章《JVM学习笔记(二):JVM GC机制与垃圾收集器》中,我总结了一下JVM的GC机制,并且结合着自己写的实例,分析了一下 标记-清除算法 中的标记过程;同时,我还总结了一下 垃圾收集器 相关的知识点。接下来,在这篇文章中,我就总结一下 Java的内存模型。缓存与缓存一致性计算机在处理任务的时候,与内存交互的I/O操作是不可避免的。而计算机的存储效率与处理器的运算速度有...

2020-03-24 17:03:47 246

原创 Mac安装VMWare Fusion,并且安装 Win10 虚拟机

引子前几天,一位朋友在Mac上安装双系统,最后导致键盘失灵。在帮她解决的过程中,我发现有很多网友到遇到了类似的情况。最后在苹果售后那里解决好问题后,我帮她安装了一个VMWare Fusion + Win10 的虚拟机,这里,记录下安装步骤,以及过程中出现的问题。软件选择目前我知道的Mac虚拟机:Parallels Desktop:收费,难破解,基本无序列号资源;但据说好用、强大,对...

2020-03-23 09:48:24 62231 56

原创 MySQL中的索引

引子在上一篇文章《MySQL InnoDB锁类型》中,我介绍了MySQL InnoDB引擎实现的一些锁。接下来,我再跟着官方文档,总结一下MySQL中的索引。聚簇索引每张 InnoDB表 都有一个特殊的索引,称为 聚簇索引(clustered index),用于存储 行的数据。对于聚簇索引,有以下要点需要了解:当我们在表上定义了主键,InnoDB会将其用作聚簇索引。 ※如...

2020-03-18 15:20:32 270

原创 MySQL InnoDB锁类型

引子在上一篇文章《MySQL事务的特性与隔离级别》中,我写了MySQL事务的特性以及隔离级别。接下来,我跟着官方文档,总结一下 MySQL InnoDB中锁的类型。共享锁与排它锁InnoDB实现了标准的行锁,包括两种:共享锁(Shard Locks,简写为 S lock)和排它锁(Exclusive Locks,简写为 X lock)。共享锁允许持有该锁的事务读取一行,同时会阻止其...

2020-03-13 17:41:37 238

原创 MySQL事务的特性与隔离级别

引子最近准备学习一下MySQL相关的知识。学习知识最好的方式就是去看官方文档。这里,我将根据官方文档的描述,总结一下MySQL事务的四大特性——ACID,以及MySQL数据库提供的四种隔离级别。本文主要是翻译、整理自MySQL 8.0 的官方文档,各位朋友有兴趣的建议直接去官方文档查阅!MySQL事务的特性对于一个数据系统来说,必须满足ACID四大特性,这些特性都与事务紧密相关。M...

2020-01-01 18:22:59 283

原创 Java中的位运算

引子在上一篇文章《计算机信息的表示与存储》中,我详细地总结了原码、补码等表示方式以及其计算。而这些的目的,就是为了引出本文——位运算相关的知识。这里,我将仔细讲一讲位运算相关的知识。位运算基础在Java中,位运算操作分为两种:按位操作 和 移位操作。和C/C++相同,Java中也支持 按位非(~)、按位与(&)、按位或( | ) 和 按位异或(^) 四个按位操作,以及 左移(&...

2019-12-24 19:45:43 556

原创 计算机信息的表示与存储

引子这几天在看HashMap的源码,发现其源码中有一些非常巧妙的位运算,而位运算又牵涉到原码、反码、补码等计算机信息的表示。所以,我就在这里系统地总结一下这部分的知识,一来加深自己的记忆,而来希望可以帮到大家。信息的表示本节中的范例大多来自于《C++程序语言设计》这本书,各位可以去参考一下~二进制几乎所有的计算机都采用的是二进制数系。当数据被转换为二进制数后,计算机才能对其进行...

2019-12-24 10:20:22 2865 1

原创 JVM学习笔记(二):JVM GC机制与垃圾收集器

引子在上一篇文章《JVM学习笔记(一):Java内存区域》中,我总结了一下几大Java内存区域。接下来,我总结一下JVM的GC机制,以及垃圾收集算法 和 垃圾收集器。内存回收区域谈起JVM的GC机制,我们首先需要关注的就是:回收哪儿的内存?如何判断哪些内存需要被回收?怎么回收?下面就一一解答这些问题。在上一篇文章中提到的 程序计数器、虚拟机栈、本地方法栈 三个“线程私有”的区域,随...

2019-12-19 15:33:22 569

原创 JVM学习笔记(一):Java内存区域

引子你所处的环境决定了你能力的上限——或者,你自己成为上限。最近又复习了一下JVM相关的知识,这里,记录下自己学习时总结的一些笔记,一来加深自己的记忆,二来希望能帮到将要面试的各位。PS:本文总结自周志明大牛所著的《深入理解Java虚拟机》第二版的第二章,强烈建议学习虚拟机的各位一读!该书没有一句废话,每一句话都是要点!Java 虚拟机运行时数据区上图就是 Java 虚拟机...

2019-12-16 18:51:32 381

原创 算法时间复杂度的计算:从几道题目讲起

引子最近再来回顾一下算法相关的知识,那自然,首先要学习的就是 时间复杂度的概念,以及其计算方式。下面,我就会简单地介绍下时间复杂度,以及会给出几道典型的时间复杂度计算题。时间复杂度将算法中基本操作的执行次数作为算法时间复杂度。常见时间复杂度的大小比较关系:下面,我将给出几个简单的算法,并计算其时间复杂度。算法案例案例一public void fun(int n...

2019-11-05 15:05:46 9323 9

原创 解决 Mac Catalina 活动监视器中数据不见了,只能看到进程名 的问题

系统环境Mac OS Catalina 10.15问题描述今天不知道怎么回事,活动监视器中突然不能看到进程的各项指标,只能看到进程名了。具体表现如下图:由于我自己当时忘记截图了,又不好复现这个问题,所以这里借用了贴吧朋友的示意图。解决方案删除~/Library/Preferences/com.apple.ActivityMonitor.plist 文件即可。最...

2019-10-31 16:46:11 8308 13

原创 自定义注解支持SPEL表达式

引子我现在负责项目中,数据计算量比较大,有强烈的缓存需求。但是无奈,我司的Redis在集群封装后,不支持“批量操作”的命令。所以,Spring Cache 框架就用不了了。我只能自己使用AOP去实现一套类似的逻辑。问题描述在项目中,我自定义了一个注解:@Documented@Target({ElementType.METHOD})@Retention(RetentionPol...

2019-10-14 13:36:20 2889 3

原创 Redis学习笔记(二):Redis主从复制

引子在上一篇文章《Redis学习笔记(一):Redis持久化——RDB与AOF》中,我记录了一些我学习Redis持久化——RDB与AOF的一些知识点。学习完Redis的持久化机制,下面我紧接着开始学习Redis的主从复制模式。运行环境CentOS 7.6 Redis 5.0.5(这里直接使用我写文章时的最新版,5.0.5)Redis主从复制集群搭建这里,Redi...

2019-09-26 13:58:42 762

原创 30+链表问题(二):如何在一次循环中找到单链表的中间节点?

引子在上一篇文章30+链表问题(一):如何判断链表是否成环?中,我讲了如何使用双指针判断一个链表中是否存在环。在接下来的这篇文章中,我将继续讲一讲双指针的妙用——在一次循环中找到单链表的中间节点。问题描述给定一个单链表,如何在一次循环中,找到链表的中间节点?解决方案一听到这个问题,首先想到的是,倒序遍历这个链表。但是,这是不可行的,因为要求是,只能循环一次,并且,这是一个单链表...

2019-09-12 18:38:36 468

原创 30+链表问题:概览

引子昨天晚上,无意中刷到一篇关于链表的问题。突然又想起当年校招时被问到的一道有关链表面试题。突然心血来潮,准备记录一下,自己碰到的、或者搜罗到的一系列有关链表的面试题,在这里记录下来,并分享给大家。文章目录30+链表问题(一):如何判断链表是否成环?30+链表问题(二):如何在一次循环中找到单链表的中间节点?未完待续。。。公共源码在这里,我将贴出一些公共的源码,在后文中...

2019-09-09 17:59:28 188

原创 30+链表问题(一):如何判断链表是否成环?

引子在上一篇文章《30+链表问题:概览》的引言中,我提到了当初在校招时遇到的一道链表面试题。就是这道题了。下面是问题描述以及解决方案。问题描述给定一个链表,如何判断该链表是否成环?解题思路首先,一听到这个问题,脑子一下子映出下面这幅链表成环的图:如图,上面就是一个已经成环的链表。标红的是头结点。针对这个问题,我的解决方案是:使用两个指针 slow、fast遍历...

2019-09-09 17:53:38 807

原创 Redis学习笔记(一):Redis持久化——RDB与AOF

引子前两天晚上下班的时候,和朋友走在路上聊起了Redis的主从复制与哨兵模式。突然觉得自己对这一块的知识还没有一个比较系统化的了解。所以,现在就开始仔细学习一下相关的知识,整理一下Redis相关的知识点,这里做个记录,同时也希望能帮助到大家。系统环境CentOS 7.6.1810 Redis 5.0.5Redis安装这里,我将简单记录下Redis安装的一些关键命令,...

2019-09-02 11:34:17 311

原创 如何屏蔽Safari浏览器打开开发者工具时,鼠标指针所到之处出现的红色动画块(绘图闪烁)

引子之前一起都使用的某Chromium内核的国产浏览器,但是后来发现用那玩意儿MBP发热太严重了,于是乎,就换成Safari浏览器,使用了下,发热降低了很多,而且调试工具,也还好,能接受。问题描述下面说说碰到的问题。在我没有打开【开始选择元素】的时候,鼠标指针所到之处,仍然会出现红色动画块,如下图:如上图,开始选择元素(红色方框标书的靶装图标)并没开启,但是鼠标在经过一些元素边...

2019-08-29 10:34:36 1137

原创 JPA 动态查询之AND、OR结合使用

引子现在,我负责开发的项目中,使用JPA作为ORM框架。有了JPA,一行SQL都没写过。在昨天,有一个新的需求,需要进行动态查询,这个简单。但是有一个地方需要AND、OR结合使用,这里,我将记录下我的理解与写法,希望能帮助到大家。问题描述需要根据条件进行动态查询,实现一条类似下文的语句:SELECT *FROM tableWHERE 1 = 1 if (a == ...

2019-08-08 18:31:37 16100 1

原创 Spring Cache + Caffeine使用中的坑——缓存数据修改导致缓存Key失效问题

问题描述今天在项目中突然碰到一个问题:使用的缓存是Spring Cache + Caffeine,缓存在执行两次后,突然Key中定义的条件失效。代码如下:public class CodeOutputService { // 注入当前类的对象 @Resources private CodeOutputService codeOutputService; ...

2019-05-27 19:04:54 8982 3

原创 Thymeleaf高级语法:使用rowspan等构建复杂表格

引子之前自己撸代码的时候,需要使用邮件发送报表。当然,我曾在项目中见过有大佬直接使用StringBuilder拼接除了一整个表格的HTML。这种牛逼而又Low B的代码,实在是鄙视。针对这个需求,我选择的方式是,使用Thymeleaf将数据渲染到我们构建好的HTML模板上,同时拿到渲染完毕后HTML文档的字符串,最后将其嵌入邮件中进行发送。通过查询资料,网上对于Thymeleaf的复杂表格...

2019-05-20 18:02:51 5225 1

原创 Elasticsearch入门(六):SpringBoot整合Elasticsearch项目搭建,基础实战

引子在上一篇博文Elasticsearch入门(五):Elasticsearch基础概念与基本操作 中,我讲了一些Elasticsearch的基础知识,以及一些基础操作。本来想接下来讲Elasticsearch的高级查询和复合查询,但是一想,前面的知识还不是很巩固,就先讲一讲SpringBoot如何整合Elasricsearch,同时复习一下前面的基本操作,并在项目中使用代码实现这些操作。...

2019-05-15 20:15:08 3193 2

原创 Elasticsearch入门(五):Elasticsearch基础概念与基本操作

引子在上一篇博文 Elasticsearch入门(四):使用docker搭建Elasticsearch 7.0.0 集群,安装head插件中,我讲了如何在docker环境下搭建ES集群、安装head插件。接下来本文中,我将讲一些Elasticsearch的基础知识,以及一些基础操作。该文章,我是跟着慕课网的Elasticsearch教程第三、四章节走的。基础概念1、索引(Index...

2019-04-29 09:38:59 14291 14

原创 Elasticsearch入门(四):使用docker搭建Elasticsearch 7.0.0 集群,安装head插件

引子在上一篇文章Elasticsearch入门(三):Elasticsearch 7.0.0 集群搭建中,我讲了如何在CentOS 7.6环境下搭建 Elasticsearch 7.0.0 集群。本文呢,我将继续讲一讲,如何使用docker搭建集群。在本文中,docker相关的知识我不详细讲解,有疑问的同学请自行百度或留言给我。此外,如果是ES安装、运行,或者Node.js的安装、head插件...

2019-04-28 00:39:25 3741

原创 SSH访问VMWare的Linux虚拟机

引子我有一台笔记本闲了很久了,闲着没事,我在上面装了一个VMWare,并安装了一个CentOS虚拟机,希望能将其用作一个Linux服务器供自己学习。这里,我将记录下步骤,并且解决遇到的问题。系统环境笔记本系统:Windows10 VMWare版本:15.0.2.40550 Linux版本:CentOS Linux release 7.6.1810 (Core)...

2019-04-20 18:44:59 26590 18

原创 Elasticsearch入门(三):Elasticsearch 7.0.0 集群搭建

引子在上一篇文章Elasticsearch入门(二):Elasticsearch 安装 Head 插件中,我讲了如何安装 Node.js以及安装elasticsearch-head 插件。本文呢,我将继续讲一讲,如何搭建 Elasticsearch 7.0.0 集群。安装环境CentOS 7.6 Elasticsearch 7.0.0 单机搭建...

2019-04-18 13:42:42 17692 8

原创 Elasticsearch入门(二):Elasticsearch 安装 Head 插件

引子:在上一篇文章Elasticsearch入门(一):CentOS 7.6 安装ES 7.0.0中,我们讲了如何在CentOS 7.6环境下安装 Elasticsearch 7.0。下面,我将讲一讲,如何安装ES必备插件之——elasticsearch-head,并且记录下在安装过程中所遇到的问题,以及我的解决方式。安装环境:Node.js10.15.3安装步骤:一、No...

2019-04-17 20:34:12 15313 4

springboot-mybatis-custom-language-driver.zip

MyBatis自定义 循环查询、IN查询、if动态SQL语句书写方式。 文章参考:https://blog.csdn.net/Zereao/article/details/103527229

2019-12-13

springboot-mybatis-multidatasource.zip

SpringBoot + Mybatis 配置多数据源,包含完整代码。 文章参考:https://blog.csdn.net/Zereao/article/details/103424120

2019-12-13

spring-boot-annotation-spel.zip

SpringBoot 自定义注解,属性支持SPEL表达式。介绍了SPEL表达式的解析

2019-10-14

LinkListInterviewQuestion.zip

判断一个单链表中,是否存在环。采用双指针,一快一慢,判断两指针在多次迭代后,是否相遇。即龟兔算法。

2019-09-09

Java8-遇见Lambda.pptx

前几天公司内部分享的PPT,讲述了 函数式接口、Lambda表达式、Stream、OptionalJDK8的新特性。

2019-06-04

spring-boot-thymeleaf-sample.zip

Thymeleaf高级语法:构建复杂表格 文章中所用到的代码实例,使用SpringBoot + Thymeleaf,构建复杂表格的实例代码。使用SpringBoot构建,包含后端代码和前端HTML模板

2019-05-20

spring-boot-elasticsearch-sample.zip

Elasticsearch入门(六):SpringBoot整合Elasticsearch项目搭建,基础实战,文章中的源代码。注意,文中我请求Controller所用的测试数据位于【src/test/java/com/zereao/es/http 目录下的 book.http 文件】中。不知道http文件怎么用的,请参考:https://blog.csdn.net/Zereao/article/details/89378283

2019-05-15

Elasticsearch入门(五):Elasticsearch基础概念与基本操作 文章中所用用到的 http 文件

Elasticsearch入门(五):Elasticsearch基础概念与基本操作 文章中所用用到的 http 文件,包括 es.http和es_book.http

2019-04-28

图片转字符画

图片转字符画,使用Java开发,支持JPG、JPEG、BMP以及GIF格式的图片转字符画。

2019-04-15

icns生成脚本

MacOS下,icns一键生成脚本,自定义MacOS的图标文件。

2019-03-11

删除WIN10各种无用的右键菜单,注册表脚本

一键式删除Windows10各种无用的右键菜单,以及界面美化、使用Windows照片查看器等等等等。

2019-01-07

Netty学习Demo,来自网友的博客

NettyDemo,Marshalling,将以为网友的博文代码丰富并产出代码内容。博客地址:https://blog.csdn.net/haoyuyang/article/details/53243785

2018-06-14

简易计算器源代码

一个简易计算器的代码,使用Android Studio 2.2 开发。发现现在网上适用于初学者的 Android Studio 项目 并不多,所以发出来共享。测试编译通过。暂未找到什么大的BUG。有问题欢迎大家反馈给我,大家一起进步。

2016-10-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除