# java-core-learning-example
**Repository Path**: laiticho/java-core-learning-example
## Basic Information
- **Project Name**: java-core-learning-example
- **Description**: Java 核心系列教程,关于Java核心技术学习积累的例子,是初学者及核心技术巩固的最佳实践
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: http://www.bysocket.com
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 57
- **Created**: 2019-05-07
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
### 感谢赞助的ta们
**Java 核心系列教程**,关于Java核心技术学习积累的例子,是初学者及核心技术巩固的最佳实践。
包括基础语法,OOP,字符串,集合,IO,反射,线程,网络等。
未完成模块:阿里Java手册、java8,注解,fork/join,加解密等。欢迎fork,欢迎交流。
### 一、支持泥瓦匠(了解泥瓦匠:[《泥瓦匠想做一个与众不同的技术"匠"  》](http://t.cn/EazOqCY) http://t.cn/EazOqCY)
1. 拿起微信,关注公众号:「泥瓦匠BYSocket 」。添加我微信:bysocket01,加入纯技术交流群,成长技术
2. 给教程的开源代码仓库点个 **Star** 吧
	- [GitHub(java-core-learning-example)](https://github.com/JeffLi1993/java-core-learning-example)
	- [Gitee(java-core-learning-example)](https://gitee.com/jeff1993/java-core-learning-example)
3. 帮忙分享该系列文章链接给更多的朋友
> 如果您对 Java 基础核心类教程不感冒或者想要通过综合案例学习Spring,那么给您推荐这个我觉得目前内容与价格最良心的视频课程:[“玩转Spring全家桶”](https://time.geekbang.org/course/intro/156?code=zqaEuXYpWbKaPeBaJc8GVoYCUHvoGhTlQQ7QZYoWWdI%3D&utm_term=zeusDUJ0V&utm_source=website&utm_medium=bysocket "“玩转Spring全家桶”")
### 二、系列文章目录
『 阿里 Java 开发手册篇 』
- [《阿里 Java 手册系列教程:为啥强制子类、父类变量名不同?》](https://www.bysocket.com/archives/2253/%E9%98%BF%E9%87%8C-java-%E6%89%8B%E5%86%8C%E7%B3%BB%E5%88%97%E6%95%99%E7%A8%8B%EF%BC%9A%E4%B8%BA%E5%95%A5%E5%BC%BA%E5%88%B6%E5%AD%90%E7%B1%BB%E3%80%81%E7%88%B6%E7%B1%BB%E5%8F%98%E9%87%8F%E5%90%8D)
- [《阿里 Java 开发手册有感》](https://www.bysocket.com/archives/2210)
『 Java 进阶篇 』
- 连载中...
『 Java 集合篇 』
- [《Java 容器 & 泛型:一、认识容器》](http://www.bysocket.com/?p=162) 
- [《Java 容器 & 泛型:二、ArrayList 、LinkedList和Vector比较》](http://www.bysocket.com/?p=169) 
- [《Java 容器 & 泛型:三、HashSet,TreeSet 和 LinkedHashSet比较》](http://www.bysocket.com/?p=195) 
- [《Java 容器 & 泛型:四、Colletions.sort 和 Arrays.sort 的算法》](http://www.bysocket.com/?p=219) 
- [《Java 容器 & 泛型:五、HashMap 和 TreeMap的自白》](http://www.bysocket.com/?p=273) 
- [《Java 容器 & 泛型:六、容器讲到为什么要使用泛型》](http://www.bysocket.com/?p=278) 
『 Java IO 篇 』
- [《Java I/O : Bit Operation 位运算》](https://www.bysocket.com/?p=336) 
- [《图解 Java IO : 一、File源码》](https://www.bysocket.com/?p=420) 
- [《图解 Java IO : 二、FilenameFilter源码》](https://www.bysocket.com/?p=449) 
- [《Java IO 之 InputStream源码》](https://www.bysocket.com/?p=585) 
- [《Java IO 之 OutputStream源码》](https://www.bysocket.com/?p=592) 
- [《Java IO 之 FileInputStream & FileOutputStream源码分析》](https://www.bysocket.com/?p=611) 
- [《Java IO 总结图》](https://www.bysocket.com/?p=626) 
### 三、最后推荐
- [我的博客](http://www.bysocket.com "我的博客"):分享学习可落地的技术博文
- [我的GitHub](https://github.com/JeffLi1993 "我的GitHub"):Follow 下呗
- [我的Gitee](https://gitee.com/jeff1993 "我的Gitee"):Follow 下呗
- [Spring问答社区](http://www.spring4all.com/ "Spring问答社区"):如果您有什么问题,可以去这里发帖
### 四、我的公号
关注微信公众号,领取 Java 精选干货学习资料
 #### 项目结构
- src 目录
#### 项目结构
- src 目录
Java核心技术学习代码兼测试案例
- test目录(测试包名与src目录保持一致)
对应学习代码包的详细测试案例
包目录:
	├── org.rpc		// 基于Java动态代理&Socket的简单RPC实现
	=================华丽的分割线=================
	├── org.javacore.base		// Java基础必备
	├── org.javacore.collection	// Java集合
	├── org.javacore.collection.list	// Java集合List
	├── org.javacore.collection.map	// Java集合Map
	├── org.javacore.collection.queue	// Java集合Queue
	├── org.javacore.collection.set	// Java集合Set
	├── org.javacore.collection.util	// Java集合工具类
	├── org.javacore.initAndCleanup	// Java初始化及清理
	├── org.javacore.io			// Java IO
	├── org.javacore.io.byteoper		// Java IO 字节操作
	├── org.javacore.io.zip			// Java IO ZIP压缩解压
	├── org.javacore.nio			// Java NIO
	├── org.javacore.reflection	// Java 反射
	├── org.javacore.rtti			// Java RTTI
	├── org.javacore.thread		// Java 线程
    =================实战JAVA 8=================
    ├── org.javacore.lambda		// lambda表达式
    ├── org.javacore.stream		// Stream API 集合的流式操作
	│
	拼命更新!顶!d=====( ̄▽ ̄*)b
详细目录:
	├── README.md						// 项目唯一详细文档
	├── org.javacore.base			// Java基础必备
	├── 	CopyT.java						// 深拷贝与浅拷贝
	├── org.javacore.base.inter		// Java接口
	├── 	ApplyClass.java					// 不使用接口的接口案例
	├── 	ApplyInter.java					// 使用接口的接口案例
	├── org.javacore.collection		// Java集合
	├── 	PerBtwnAllCollectionsT.java		// 各集合添加方法性能对比
	├── org.javacore.collection.list		// Java集合List
	├── 	ArrayListT.java					// ArrayList的使用
	├── 	PerBtwnArlAndLklT.java			// ArrayList与LinkedList性能的对比
	├── org.javacore.collection.map		// Java集合Map
	├── 	HashMapObjT.java				// HashMap操作对象的决定因子:hashCode与equals
	├── 	HaspMapT.java					// HashMap的Add方法
	├── 	TreeMapT.java					// TreeMap的使用
	├── org.javacore.collection.queue		// Java集合Queue
	├── 	PriorityQueueT.java				// PriorityQueue的使用
	├── org.javacore.collection.set		// Java集合Set
	├── 	HashSetObjT.java				// HashSet操作对象的决定因子:hashCode与equals
	├── 	HashSetsCopyT.java				// HashSet及其子类的转换使用
	├── 	HashSetT.java					// HashSet的Add方法
	├── 	SetContainT.java				// Set的Contains方法
	├── 	TreeSetT.java					// TreeSet操作实现Comparable接口的对象
	├── org.javacore.collection.util		// Java集合工具类
	├── 	CollectionsT.java				// Collections的使用
	├── 	IterAndListIterT.java			// Iterator与ListIterator的区别
	├── 	PerBtwnEmptyMapAndHashMapT.java	// Collections.EMPTY_MAP 与 new HashMap 性能对比
	├── org.javacore.initAndCleanup	// Java初始化及清理
	├── 	SimpleConstructor.java			// 简单构造器的展示
	├── 	SimpleConstructor2.java			// 带参数简单构造器的展示
	├── 	VoidConstructor.java			// 默认构造函数和方法的区别
	├── org.javacore.io				// Java IO
	├── 	BufferedInputFileT.java			// 缓冲输入文件
	├── 	CopyFileT.java					// 文件复制
	├── 	Directory.java					// 目录实用工具
	├── 	DirListT.java					// 列出目录并排序
	├── 	FileIOStreamT.java				// FileInputStream&FileOutputStream使用案例
	├── 	FileMethodsT.java				// File方法详细使用
	├── 	FilenameFilterT.java			// 类名过滤器的使用
	├── 	FileT.java						// File类的使用
	├── 	FormatteMemoryInput.java		// 格式化内存输入
	├── 	JavaFileListT.java				// FilenameFilter文件过滤器的使用
	├── 	MemoryInputT.java				// 内存中输入
	├── 	PipeStreamT.java				// 管道输入输出流的的使用
	├── 	RandomAccessFileT.java			// RandomAccessFile的使用
	├── 	StoringAndRecoveringData.java	// DataOutputStream和DataInputStream的使用案例
	├── 	SystemStreamT.java				// System.out, System.err中IO的使用
	├── 	UsingRandomAccessFile.java		// RandomAccessFile的使用案例
	├── org.javacore.io.byteoper		// Java IO 字节操作
	├── 	IntegerConvertT.java			// Integer与byte数组转换
	├── 	IntegerOperT.java				// Integer类的进制转换
	├── 	LongConvertT.java				// Long与byte数组转换
	├── 	StringConvertT.java				// String转换成byte数组
	├── org.javacore.io.zip				// Java IO ZIP压缩解压
	├── 	GZIPcompress.java				// GZIP简单使用
	├── 	ZipCompress.java				// 利用Zip进行多文件保存
	├── org.javacore.nio				// Java NIO
	├── 	AvailableCharSets.java		 	// 可用的CharSet打印
	├── 	BufferToText.java				// ByteBuffer与char之间转换的案例
	├── 	ChannelCopy.java				// FileChannel的文件复制案例
	├── 	Endians.java					// ByteBuffer中字节存储次序
	├── 	FileChannelT.java				// FileChannel读写文件案例
	├── 	FileChannelTransferTo.java		// FileChannel的transferTo/transferFrom案例
	├── 	FileLocking.java				// 文件加锁
	├── 	GetChannel.java					// 从流中获取FileChannel的案例
	├── 	GetData.java					// ByteBuffer操作类型数据的案例
	├── 	IntBufferDemo.java				// 通过IntBuffer操作ByteBuffer的int型数据
	├── 	LargeMappedFiles.java			// 内存映射文件的使用
	├── 	MappedIO.java					// MappedByteBuffer与Old IO的性能比
	├── 	UsingBuffers.java				// 利用buffer实现交换相邻字符
	├── 	ViewBuffers.java				// 不同视图下的缓冲区
	├── org.javacore.reflection		// Java 反射
	├── 	ArrayCopy.java					// 反射扩容对象数组
	├── 	EmployeeClass.java				// 反射在继承中的案例
	├── 	ObjectAnalyzer.java				// 反射对象分析工具
	├── 	ReflectionTest.java				// 反射对象构造函数、方法及字段
	├── 	User.java						// 反射构造器使用的bean
	├── 	UserConstructorReflect.java		// 利用反射通过构造器创建一个实例
	├── org.javacore.rtti				// Java RTTI
	├── 	ClassInitialization.java		// Class初始化案例
	├── 	ShowMethods.java				// 获取Class方法案例
	├── org.javacore.thread			// Java 线程
	├── 	BasicThreads.java				// 线程简单使用
	├── 	CachedThreadPool.java			// 线程池CachedThreadPool的简单使用
	├── 	CallableDemo.java				// Callable接口的使用 --- 实现带返回值的任务
 	├── 	DaemonFromFactory.java			// 后台线程工厂类的使用
 	├── 	DaemonThreadFactory.java		// 线程工厂类
 	├── 	DaemonsDontRunFinally.java		// 后台线程遇到Finally
	├── 	FixedThreadPool.java			// 线程池FixedThreadPool的简单使用
	├── 	LiftOff.java					// Runnable接口的实现类LiftOff
	├── 	MoreBasicThreads.java			// 线程简单使用-启动多个线程
	├── 	MyRunnable.java					// Runnable接口的简单使用
	├── 	MyThread.java					// Thread的简单使用
	├── 	SimpleDaemons.java				// Daemon后台线程的简单使用
   	├── 	SimplePriorities.java			// 线程优先级的使用
	├── 	SingleThreadExecutor.java		// SingleThreadExecutor的使用
	├── 	SleepingTask.java			    // 休眠线程sleep的使用
	拼命更新!顶!d=====( ̄▽ ̄*)b
 
#### 学习方法
根据包目录,进行一块一块学习。然后针对某类,请看下相对应的test包或者src下直接测试案例,进行学习。