<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[shellhub的博客]]></title><description><![CDATA[专注IT]]></description><link>https://blog.youkuaiyun.com/ishellhub</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ishellhub]]></copyright><item><title><![CDATA[Java Socket 编程详解（干货)]]></title><link>https://blog.youkuaiyun.com/ishellhub/article/details/108658988</link><guid>https://blog.youkuaiyun.com/ishellhub/article/details/108658988</guid><author>ishellhub</author><pubDate>Fri, 18 Sep 2020 09:42:01 +0800</pubDate><description><![CDATA[订阅 TheTutorials/Java 学习更多 Java 相关的知识

Socket 编程
本章节我们使用 Socket 实现一个简单的智能对话系统，包括客户端 (Client), 服务器端 (Server)

服务器端 (Server)


构造函数
我们必须必须在服务器端创建一个 ServerSocket，便于客户端的链接
ServerSocket serverSocket = new ServerSocket(8888);



开始监听
创建完成 ServerSocket 后服务器端并未开始监.]]></description><category></category></item><item><title><![CDATA[Java 数据结构之栈]]></title><link>https://blog.youkuaiyun.com/ishellhub/article/details/108590712</link><guid>https://blog.youkuaiyun.com/ishellhub/article/details/108590712</guid><author>ishellhub</author><pubDate>Mon, 14 Sep 2020 23:47:49 +0800</pubDate><description><![CDATA[订阅 TheTutorials/Java 学习更多 Java 相关的知识

Java 集合栈
什么是栈

堆栈（英语：stack）又称为栈或堆叠，是计算机科学中的一种抽象资料类型，只允许在有序的线性资料集合的一端（称为堆栈顶端，英语：top）进行加入数据（英语：push）和移除数据（英语：pop）的运算。因而按照后进先出（LIFO, Last In First Out）的原理运作。


Java 集合类 Stack


Stack 类的声明
public
class Stack&lt;E&gt; exte.]]></description><category></category></item><item><title><![CDATA[如何在 Docker 中使用 Redis]]></title><link>https://blog.youkuaiyun.com/ishellhub/article/details/108576356</link><guid>https://blog.youkuaiyun.com/ishellhub/article/details/108576356</guid><author>ishellhub</author><pubDate>Mon, 14 Sep 2020 11:36:50 +0800</pubDate><description><![CDATA[订阅 TheTutorials/Docker 学习更多 Docker 相关的知识

如何在 Docker 中使用 Redis
Redis 是一种速度异常快的内存数据库系统，被广泛应用于各种系统中，使用 C 语言开发，本章节学习如何在 Docker 中部署 Redis
启动 Docker


Linux 中启动 Docker
sudo systemctl status docker # 查看 Docker 状态
systemctl restart docker # 重启 Docker



Mac OS X.]]></description><category></category></item><item><title><![CDATA[Java 实现多线程的几种方式-超详细（干货)]]></title><link>https://blog.youkuaiyun.com/ishellhub/article/details/108570293</link><guid>https://blog.youkuaiyun.com/ishellhub/article/details/108570293</guid><author>ishellhub</author><pubDate>Sun, 13 Sep 2020 23:31:10 +0800</pubDate><description><![CDATA[订阅 TheTutorials/Java 学习更多 Java 相关的知识

Java 多线程
Java 本身提供了对多线程的支持，多线程允许并发的执行程序的多个部分，最大成程度的利用 CPU，一个进程是由多个线程所组成，因此线程可以看作轻量级进程。
Java 实现多线程


继承 Thread
public static void main(String[] args) {

    /* 创建线程 */
    MyThread firstThread = new MyThread("firstThre.]]></description><category></category></item><item><title><![CDATA[为什么变量名命名不能以数字开头(干货)]]></title><link>https://blog.youkuaiyun.com/ishellhub/article/details/108562319</link><guid>https://blog.youkuaiyun.com/ishellhub/article/details/108562319</guid><author>ishellhub</author><pubDate>Sun, 13 Sep 2020 14:39:06 +0800</pubDate><description><![CDATA[为什么变量名不能够以数字开头
订阅原文学习更多 Java 知识

https://github.com/TheTutorials/Java

基本所有编程语言都有一个规定，变量名命名不能够以数字开头。如下面的标示符是非法的标识符。
17 1age 3_numbers

我们可以先假设变量名能够以数字开头，观察下面的例子,例子中的 17, 42, 1111 即是数字也是变量名，则编译器会产生矛盾。
int 17 = 497;
int 42 = 6 * 9;
String 1111 = "Totally tex]]></description><category></category></item><item><title><![CDATA[Java 中使用下划线分隔超大数字(干货)]]></title><link>https://blog.youkuaiyun.com/ishellhub/article/details/108562289</link><guid>https://blog.youkuaiyun.com/ishellhub/article/details/108562289</guid><author>ishellhub</author><pubDate>Sun, 13 Sep 2020 14:37:16 +0800</pubDate><description><![CDATA[Java 中下划线分隔数字
订阅原文学习更多 Java 知识

https://github.com/TheTutorials/Java

Java 7 以后，数字文字中数字之间的任意位置都可以出现任何数量的下划线字符（_）,通过下划线(_)你可以把数字按组进行分开。从而可以可以提高代码的可读性。
下面的例子介绍如何使用 _ 作为数字之间的分隔符
long creditCardNumber = 1234_5678_9012_3456L;
long socialSecurityNumber = 999_99_]]></description><category></category></item><item><title><![CDATA[Java 中关键词 final，看这篇文章就够了 (干货)]]></title><link>https://blog.youkuaiyun.com/ishellhub/article/details/108562264</link><guid>https://blog.youkuaiyun.com/ishellhub/article/details/108562264</guid><author>ishellhub</author><pubDate>Sun, 13 Sep 2020 14:35:00 +0800</pubDate><description><![CDATA[Final 关键词
订阅原文学习更多 Java 知识

https://github.com/TheTutorials/Java

Java 中的关键词 final 可以理解为最终,不可变的意思。下面介绍 final 的使用场景。


修饰普通变量

当一个变量使用 final 声明时。它的值不能被二次修改

final double PI = 3.1415927;
/* cannot assign a value to final variable PI */
PI = 3.1415928;


如果 f]]></description><category></category></item><item><title><![CDATA[Java 超级详细的 String 类讲解 (干活)]]></title><link>https://blog.youkuaiyun.com/ishellhub/article/details/108562223</link><guid>https://blog.youkuaiyun.com/ishellhub/article/details/108562223</guid><author>ishellhub</author><pubDate>Sun, 13 Sep 2020 14:32:15 +0800</pubDate><description><![CDATA[深入理解 String 类
订阅原文学习更多 Java 知识

https://github.com/TheTutorials/Java

Java 中的 String 表示一个字符序列(字符串)。这是一个不可变的对象，一旦创建不能修改。
可以通过查看源码观察 String 的 类声明
public final class String
    implements java.io.Serializable, Comparable&lt;String&gt;, CharSequence,
         ]]></description><category></category></item><item><title><![CDATA[Java 中如何使用断言(干货)]]></title><link>https://blog.youkuaiyun.com/ishellhub/article/details/108562205</link><guid>https://blog.youkuaiyun.com/ishellhub/article/details/108562205</guid><author>ishellhub</author><pubDate>Sun, 13 Sep 2020 14:28:06 +0800</pubDate><description><![CDATA[断言 Assertion

关注原文地址: https://github.com/TheTutorials/Java/blob/master/basics/assertion.md

Wikipedia: https://zh.wikipedia.org/zh-cn/%E6%96%B7%E8%A8%80_(%E7%A8%8B%E5%BC%8F)

在程序设计中，断言（assertion）是一种放在程序中的一阶逻辑（如一个结果为真或是假的逻辑判断式），目的是为了标示与验证程序开发者预期的结果－当程序运行到断言]]></description><category></category></item><item><title><![CDATA[最大公约数和最小公倍数问题]]></title><link>https://blog.youkuaiyun.com/ishellhub/article/details/99683814</link><guid>https://blog.youkuaiyun.com/ishellhub/article/details/99683814</guid><author>ishellhub</author><pubDate>Fri, 16 Aug 2019 18:54:16 +0800</pubDate><description><![CDATA[原文地址

https://github.com/shellhub/blog/issues/47


求解最大公约数和最小公倍数

什么是最公约数

最大公因数，也称最大公约数、最大公因子，指两个或多个整数共有约数中最大的一个

什么是最大公倍数

两个或多个整数公有的倍数叫做它们的公倍数

暴力破解法
#include&lt;stdio.h&gt;

void swap(int *pa, int...]]></description><category></category></item><item><title><![CDATA[C语言switch史上最详细的讲解]]></title><link>https://blog.youkuaiyun.com/ishellhub/article/details/86285957</link><guid>https://blog.youkuaiyun.com/ishellhub/article/details/86285957</guid><author>ishellhub</author><pubDate>Fri, 11 Jan 2019 08:53:00 +0800</pubDate><description><![CDATA[原文链接

https://github.com/shellhub/blog/issues/41

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

   cas...]]></description><category></category></item><item><title><![CDATA[《C语言结构体史上最详细的讲解》]]></title><link>https://blog.youkuaiyun.com/ishellhub/article/details/85061856</link><guid>https://blog.youkuaiyun.com/ishellhub/article/details/85061856</guid><author>ishellhub</author><pubDate>Tue, 18 Dec 2018 11:07:03 +0800</pubDate><description><![CDATA[原文链接

https://github.com/shellhub/blog/issues/40

struct结构体数据类型
前言
我们知道，在C语言中有一些基本的数据类型，如

char
int
float
long
double
string(c99)

等等数据类型，他们可以表示一些事物的基本属性，但是当我们想表达一个事物的全部或部分属性时，这时候再用单一的基本数据类型明显就无法满足需求了...]]></description><category></category></item><item><title><![CDATA[Android网易云历史搜索和热门标签]]></title><link>https://blog.youkuaiyun.com/ishellhub/article/details/84968581</link><guid>https://blog.youkuaiyun.com/ishellhub/article/details/84968581</guid><author>ishellhub</author><pubDate>Wed, 12 Dec 2018 11:11:07 +0800</pubDate><description><![CDATA[Android网易云历史搜索和热门标签
原文地址

最近开发了一个网易云音乐播放器,有这么一个需求，需要展示搜索建议，历史搜索记录
项目地址: https://github.com/shellhub/NetEaseMusic


从效果图可以看到，标签如果太长无法容纳会自动换行，虽然我们可以自己实现自定义View,但是人生苦短没必要重复造轮子,这里推荐谷歌推出的库flexbox-layout
添加...]]></description><category></category></item><item><title><![CDATA[网易云音乐Android开源项目]]></title><link>https://blog.youkuaiyun.com/ishellhub/article/details/84879296</link><guid>https://blog.youkuaiyun.com/ishellhub/article/details/84879296</guid><author>ishellhub</author><pubDate>Fri, 07 Dec 2018 16:54:45 +0800</pubDate><description><![CDATA[NetEase Music 网易云音乐
这是一个防网易云音乐Android APP，主要使用MVP(Model View Presenter)架构进行开发,网络请求主要采用 RxAndroid + Retrofit

欢迎star https://github.com/shellhub/NetEaseMusic

APP截图




NeteaseMusic
网易云音乐APP










...]]></description><category></category></item><item><title><![CDATA[Android Studio / IntelliJ IDEA 中使用lombok]]></title><link>https://blog.youkuaiyun.com/ishellhub/article/details/83211182</link><guid>https://blog.youkuaiyun.com/ishellhub/article/details/83211182</guid><author>ishellhub</author><pubDate>Sat, 20 Oct 2018 10:22:04 +0800</pubDate><description><![CDATA[原文连接

https://github.com/shellhub/blog/issues/30

前言
lombok可以通过一个注解自动实现Getter Setter等方法.平时我们可以通过Eclipse或者IntelliJ IDEA快捷键生成Getter Setter方法,当我们需要加入一个新的属性或者修改某属性的变量名或者数据类型时，都需要手动修改Getter Setter方法，这样极为麻烦...]]></description><category></category></item><item><title><![CDATA[Android设置界面开发]]></title><link>https://blog.youkuaiyun.com/ishellhub/article/details/83108716</link><guid>https://blog.youkuaiyun.com/ishellhub/article/details/83108716</guid><author>ishellhub</author><pubDate>Wed, 17 Oct 2018 14:02:06 +0800</pubDate><description><![CDATA[原文连接

https://github.com/shellhub/blog/issues/29

我们在项目中经常需要用到设置(Setting)，在安卓中主要使用android.preference.PreferenceFragment 和 android.support.v7.preference.PreferenceFragmentCompat，在Android API 28中Prefere...]]></description><category></category></item><item><title><![CDATA[最强Linux shell工具Oh My Zsh 指南]]></title><link>https://blog.youkuaiyun.com/ishellhub/article/details/82381734</link><guid>https://blog.youkuaiyun.com/ishellhub/article/details/82381734</guid><author>ishellhub</author><pubDate>Tue, 04 Sep 2018 12:43:22 +0800</pubDate><description><![CDATA[原文更新地址


  https://github.com/shellhub/blog/issues/25


Oh-My-Zsh！提高你CLI(Command-line interface 
)的神奇工具 - Ubuntu教程



我是命令行界面的忠实粉丝……我不喜欢使用我的电脑鼠标！这促使我寻找出色的工具来增强我在CLI上的用户体验，一次偶然的机会机会在YouTube上观看了国外YouTub...]]></description><category></category></item><item><title><![CDATA[设计模式: Java中的工厂设计模式]]></title><link>https://blog.youkuaiyun.com/ishellhub/article/details/81952869</link><guid>https://blog.youkuaiyun.com/ishellhub/article/details/81952869</guid><author>ishellhub</author><pubDate>Wed, 22 Aug 2018 23:22:26 +0800</pubDate><description><![CDATA[原文链接


  https://github.com/shellhub/blog/issues/22




前言

工厂设计模式(Factory Design Pattern)属于创建模式之一，工厂设计模式在JDK,Spring,Stuts被广泛使用 


当一个类或者接口有多个子类，并且基于输入返回特定的子类，此时会使用工厂设计模式。这种模式负责从客户端到工厂类的实例化。

让我们首先学习如...]]></description><category></category></item><item><title><![CDATA[Docker中使用MySQL]]></title><link>https://blog.youkuaiyun.com/ishellhub/article/details/81943169</link><guid>https://blog.youkuaiyun.com/ishellhub/article/details/81943169</guid><author>ishellhub</author><pubDate>Wed, 22 Aug 2018 14:11:19 +0800</pubDate><description><![CDATA[原文地址


  https://github.com/shellhub/blog/issues/21




安装Docker

Linux或者Mac用户建议使用一件脚本安装

https://github.com/docker/docker-install

Windows用户(好久没用这个系统了)

https://docs.docker.com/docker-for-windows/ins...]]></description><category></category></item><item><title><![CDATA[Room SQLite持久层框架]]></title><link>https://blog.youkuaiyun.com/ishellhub/article/details/81392909</link><guid>https://blog.youkuaiyun.com/ishellhub/article/details/81392909</guid><author>ishellhub</author><pubDate>Fri, 03 Aug 2018 19:00:04 +0800</pubDate><description><![CDATA[原文链接



前言

Android中提供了SQLite数据库进行数据的持久化 ，并提供了对应API访问数据库，而Room框架提供了SQLite数据访问抽象层，为高效的数据库访问层带来便捷

APP可以缓存用户数据，当APP离线时便从SQLite读取数据，当重新连线时即可完成和服务器数据的同步

谷歌官方强烈推荐使用Room框架操作SQLite数据库





Hello World

首先在b...]]></description><category></category></item></channel></rss>