自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 网易云音乐Android开源项目

NetEase Music 网易云音乐这是一个防网易云音乐Android APP,主要使用MVP(Model View Presenter)架构进行开发,网络请求主要采用 RxAndroid + Retrofit欢迎star https://github.com/shellhub/NetEaseMusicAPP截图NeteaseMusic网易云音乐APP...

2018-12-07 16:54:45 1660

原创 Java Socket 编程详解(干货)

订阅 TheTutorials/Java 学习更多 Java 相关的知识Socket 编程本章节我们使用 Socket 实现一个简单的智能对话系统,包括客户端 (Client), 服务器端 (Server)服务器端 (Server)构造函数我们必须必须在服务器端创建一个 ServerSocket,便于客户端的链接ServerSocket serverSocket = new ServerSocket(8888);开始监听创建完成 ServerSocket 后服务器端并未开始监.

2020-09-18 09:42:01 449

原创 Java 数据结构之栈

订阅 TheTutorials/Java 学习更多 Java 相关的知识Java 集合栈什么是栈堆栈(英语:stack)又称为栈或堆叠,是计算机科学中的一种抽象资料类型,只允许在有序的线性资料集合的一端(称为堆栈顶端,英语:top)进行加入数据(英语:push)和移除数据(英语:pop)的运算。因而按照后进先出(LIFO, Last In First Out)的原理运作。Java 集合类 StackStack 类的声明publicclass Stack<E> exte.

2020-09-14 23:47:49 149

原创 如何在 Docker 中使用 Redis

订阅 TheTutorials/Docker 学习更多 Docker 相关的知识如何在 Docker 中使用 RedisRedis 是一种速度异常快的内存数据库系统,被广泛应用于各种系统中,使用 C 语言开发,本章节学习如何在 Docker 中部署 Redis启动 DockerLinux 中启动 Dockersudo systemctl status docker # 查看 Docker 状态systemctl restart docker # 重启 DockerMac OS X.

2020-09-14 11:36:50 314

原创 Java 实现多线程的几种方式-超详细(干货)

订阅 TheTutorials/Java 学习更多 Java 相关的知识Java 多线程Java 本身提供了对多线程的支持,多线程允许并发的执行程序的多个部分,最大成程度的利用 CPU,一个进程是由多个线程所组成,因此线程可以看作轻量级进程。Java 实现多线程继承 Threadpublic static void main(String[] args) { /* 创建线程 */ MyThread firstThread = new MyThread("firstThre.

2020-09-13 23:31:10 168

原创 为什么变量名命名不能以数字开头(干货)

为什么变量名不能够以数字开头订阅原文学习更多 Java 知识https://github.com/TheTutorials/Java基本所有编程语言都有一个规定,变量名命名不能够以数字开头。如下面的标示符是非法的标识符。17 1age 3_numbers我们可以先假设变量名能够以数字开头,观察下面的例子,例子中的 17, 42, 1111 即是数字也是变量名,则编译器会产生矛盾。int 17 = 497;int 42 = 6 * 9;String 1111 = "Totally tex

2020-09-13 14:39:06 5233 2

原创 Java 中使用下划线分隔超大数字(干货)

Java 中下划线分隔数字订阅原文学习更多 Java 知识https://github.com/TheTutorials/JavaJava 7 以后,数字文字中数字之间的任意位置都可以出现任何数量的下划线字符(_),通过下划线(_)你可以把数字按组进行分开。从而可以可以提高代码的可读性。下面的例子介绍如何使用 _ 作为数字之间的分隔符long creditCardNumber = 1234_5678_9012_3456L;long socialSecurityNumber = 999_99_

2020-09-13 14:37:16 686

原创 Java 中关键词 final,看这篇文章就够了 (干货)

Final 关键词订阅原文学习更多 Java 知识https://github.com/TheTutorials/JavaJava 中的关键词 final 可以理解为最终,不可变的意思。下面介绍 final 的使用场景。修饰普通变量当一个变量使用 final 声明时。它的值不能被二次修改final double PI = 3.1415927;/* cannot assign a value to final variable PI */PI = 3.1415928;如果 f

2020-09-13 14:35:00 114

原创 Java 超级详细的 String 类讲解 (干活)

深入理解 String 类订阅原文学习更多 Java 知识https://github.com/TheTutorials/JavaJava 中的 String 表示一个字符序列(字符串)。这是一个不可变的对象,一旦创建不能修改。可以通过查看源码观察 String 的 类声明public final class String implements java.io.Serializable, Comparable<String>, CharSequence,

2020-09-13 14:32:15 224

原创 Java 中如何使用断言(干货)

断言 Assertion关注原文地址: https://github.com/TheTutorials/Java/blob/master/basics/assertion.mdWikipedia: https://zh.wikipedia.org/zh-cn/%E6%96%B7%E8%A8%80_(%E7%A8%8B%E5%BC%8F)在程序设计中,断言(assertion)是一种放在程序中的一阶逻辑(如一个结果为真或是假的逻辑判断式),目的是为了标示与验证程序开发者预期的结果-当程序运行到断言

2020-09-13 14:28:06 2398

原创 最大公约数和最小公倍数问题

原文地址https://github.com/shellhub/blog/issues/47求解最大公约数和最小公倍数什么是最公约数最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个什么是最大公倍数两个或多个整数公有的倍数叫做它们的公倍数暴力破解法#include<stdio.h>void swap(int *pa, int...

2019-08-16 18:54:16 678

原创 C语言switch史上最详细的讲解

原文链接https://github.com/shellhub/blog/issues/41C语言switch史上最详细的讲解switch语句允许测试变量与值列表的相等性,每个值称之为案例或者case,程序会检查switch后面的值并且与case后面的值比对,如果相等则执行后面的代码或代码块语法switch在C语言中的语法如下switch(expression) { cas...

2019-01-11 08:53:00 127586 7

原创 《C语言结构体史上最详细的讲解》

原文链接https://github.com/shellhub/blog/issues/40struct结构体数据类型前言我们知道,在C语言中有一些基本的数据类型,如charintfloatlongdoublestring(c99)等等数据类型,他们可以表示一些事物的基本属性,但是当我们想表达一个事物的全部或部分属性时,这时候再用单一的基本数据类型明显就无法满足需求了...

2018-12-18 11:07:03 6173

原创 Android网易云历史搜索和热门标签

Android网易云历史搜索和热门标签原文地址最近开发了一个网易云音乐播放器,有这么一个需求,需要展示搜索建议,历史搜索记录项目地址: https://github.com/shellhub/NetEaseMusic从效果图可以看到,标签如果太长无法容纳会自动换行,虽然我们可以自己实现自定义View,但是人生苦短没必要重复造轮子,这里推荐谷歌推出的库flexbox-layout添加...

2018-12-12 11:11:07 942 1

原创 Android Studio / IntelliJ IDEA 中使用lombok

原文连接https://github.com/shellhub/blog/issues/30前言lombok可以通过一个注解自动实现Getter Setter等方法.平时我们可以通过Eclipse或者IntelliJ IDEA快捷键生成Getter Setter方法,当我们需要加入一个新的属性或者修改某属性的变量名或者数据类型时,都需要手动修改Getter Setter方法,这样极为麻烦...

2018-10-20 10:22:04 317

原创 Android设置界面开发

原文连接https://github.com/shellhub/blog/issues/29我们在项目中经常需要用到设置(Setting),在安卓中主要使用android.preference.PreferenceFragment 和 android.support.v7.preference.PreferenceFragmentCompat,在Android API 28中Prefere...

2018-10-17 14:02:06 6929 1

原创 最强Linux shell工具Oh My Zsh 指南

原文更新地址 https://github.com/shellhub/blog/issues/25Oh-My-Zsh!提高你CLI(Command-line interface )的神奇工具 - Ubuntu教程我是命令行界面的忠实粉丝……我不喜欢使用我的电脑鼠标!这促使我寻找出色的工具来增强我在CLI上的用户体验,一次偶然的机会机会在YouTube上观看了国外YouTub...

2018-09-04 12:43:22 4149

原创 设计模式: Java中的工厂设计模式

原文链接 https://github.com/shellhub/blog/issues/22前言工厂设计模式(Factory Design Pattern)属于创建模式之一,工厂设计模式在JDK,Spring,Stuts被广泛使用 当一个类或者接口有多个子类,并且基于输入返回特定的子类,此时会使用工厂设计模式。这种模式负责从客户端到工厂类的实例化。让我们首先学习如...

2018-08-22 23:22:26 2191

原创 Docker中使用MySQL

原文地址 https://github.com/shellhub/blog/issues/21安装DockerLinux或者Mac用户建议使用一件脚本安装https://github.com/docker/docker-installWindows用户(好久没用这个系统了)https://docs.docker.com/docker-for-windows/ins...

2018-08-22 14:11:19 5536

原创 Room SQLite持久层框架

原文链接前言Android中提供了SQLite数据库进行数据的持久化 ,并提供了对应API访问数据库,而Room框架提供了SQLite数据访问抽象层,为高效的数据库访问层带来便捷APP可以缓存用户数据,当APP离线时便从SQLite读取数据,当重新连线时即可完成和服务器数据的同步谷歌官方强烈推荐使用Room框架操作SQLite数据库Hello World首先在b...

2018-08-03 19:00:04 1025

原创 深入浅出Java Object源码

Java中的ObjectJava中的Object类位于java.lang包中,每一个Java类直接或者间接继承自Object,如果一个类没有继承任何类,那么该类默认直接继承Object,如果一个类继承了某一个类,那么Object间接继承了Object,因此所有Java对象都可以访问Object中定义的方法,因此Object是所有类的顶级父类。Object源码解析toString方法...

2018-07-31 23:11:35 363

原创 设计模式之单例模式

原文链接 Java单例模式是四中创建模式之一,本文我们讲从例子讲解单例模式的方方面面Java单例模式(Singleton)Java限制了类的实例,保证了JVM中只能存在一个某个类的一个实例单实例类必须提供一个访问该实例的全局方法(其实就是public static)单例模式使用在日志(logging),驱动(driver),缓存(caching),线程池(thread pool)...

2018-07-29 15:05:32 132

原创 ArrayList源码解析

原文链接 ArrayList底层使用数组实现,所以随机访问特定位置的元素的速度特别快,时间复杂度为0(1)transient Object[] elementData; // non-private to simplify nested class accessArrayList默认分配大小为10的容量/** * Default initial capacity. */pr...

2018-07-28 20:11:43 86

原创 你真的知道JAVA中抽象类和接口的区别么?

原文链接详解在抽象类中可以写非抽象的方法,从而避免在子类中重复书写他们,这样可以提高代码的复用性,这是抽象类的优势;接口中只能有抽象的方法。public abstract class Person { void eat(){ System.out.println("it is valid"); }}接口中的方法不能有具体实现,以下代码报错...

2018-07-23 21:07:26 247

原创 开始你的shell脚本编程

原文链接 对于我自己来说,学习新框架或技术的最佳方式是同时获得实践经验,在本文中,你将自己通过编写代码来学习shell脚本的基础知识!本文包含语法,shell脚本的基础知识到中级shell编程,通过这篇文章你可以学习shell的相关知识,并且通过shell来实现Unix/Linux之间的接口介绍您可能已经多次遇到过“脚本”这个词,但脚本的的含义是什么意思呢?简单的来说,脚...

2018-07-14 16:48:09 2264

空空如也

空空如也

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

TA关注的人

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