随笔分类 - Java基础
摘要:计算机是如何存储字符的? 大学都学过计算机相关的基础知识,计算机只能计算二进制数据,因为二进制表示起来最方便。计算机电子元器件表示两个状态很简单,比如高压和低压,对应的就是1和0。如果设计出10种状态,那么计算机的设计会相当复杂。 计算机想存储我们现实世界的字符,也就是我们常用的汉子或者字母
阅读全文
摘要:作用 反射的定义:在运行状态中,能获取任意一个类的所有方法和属性;能调用一个对象的所有方法和属性。这种动态获取类信息和动态调用对象方法和属性的功能就是Java的反射机制。 注意定义中的措辞,是所有的方法和属性,即使是私有的也能调用。所以功能是非常强大的。但在我们日常开发中很少会用到反射机制,因为正是
阅读全文
摘要:前言:都说Netty是Java程序员必须要掌握的一项技能,带着不止要知其然还要知其所以然的目的,在慕课上找了一个学习Netty源码的教程,看了几章后着实有点懵逼。虽然用过Netty,并且在自己的个人网站上实现了聊天室的功能。但是使用的还是Netty很少一部分功能,很多组件都没涉及,很多API也似懂非
阅读全文
摘要:第一章:手动搭建I/O网络通信框架1:Socket和ServerSocket入门实战,实现单聊 第二章:手动搭建I/O网络通信框架2:BIO编程模型实现群聊 第三章:手动搭建I/O网络通信框架3:NIO编程模型,升级改造聊天室 上一章讲到的NIO编程模型比较主流,非常著名的Netty就是基于NIO编
阅读全文
摘要:第一章:手动搭建I/O网络通信框架1:Socket和ServerSocket入门实战,实现单聊 第二章:手动搭建I/O网络通信框架2:BIO编程模型实现群聊 第四章:手动搭建I/O网络通信框架4:AIO编程模型,聊天室终极改造 在第二章中用BIO编程模型,简单的实现了一个聊天室。但是其最大的问题在解
阅读全文
摘要:第一章:手动搭建I/O网络通信框架1:Socket和ServerSocket入门实战,实现单聊 第三章:手动搭建I/O网络通信框架3:NIO编程模型,升级改造聊天室 第四章:手动搭建I/O网络通信框架4:AIO编程模型,聊天室终极改造 在第一章中运用Socket和ServerSocket简单的实现了
阅读全文
摘要:资料:慕课网 第二章:手动搭建I/O网络通信框架2:BIO编程模型实现群聊 第三章:手动搭建I/O网络通信框架3:NIO编程模型,升级改造聊天室 第四章:手动搭建I/O网络通信框架4:AIO编程模型,聊天室终极改造 这个基础项目会作为BIO、NIO、AIO的一个前提,后面会有数篇博客会基于这个小项目
阅读全文
摘要:参考资料:慕课网:Java高效编程收费实战课程、博客园、CSDN、菜鸟教程以及其他文档。 篇幅受限,不太想针对每个点都写篇博客,有的地方可能写的不是很详细,一笔带过了。如果你觉得那个点在项目中用得上可以另行搜索一些相关的更详细的博客或文档。 1.Lambda和函数式编程 函数式编程即可以把函数当作变
阅读全文
摘要:在实际功能中,会存在一些线程交互的情况。比如:一个线程执行某个操作,当操作的对象到达某种状态时,会等待其他线程来执行。 下面代码的功能是,一个线程对一个数字执行减少方法,当减到1时,等待增加线程操作。 最后输出结果是:数字会不停减少,只到1就会增加。但是由于增加线程比减少线程慢,所以最后会一直在1、
阅读全文
摘要:我们先看个错误示例。代码功能:声明一个数字并赋值10000.然后让1w个线程去减少1,1w个线程去增加1。理论上说,加一万减一万,最后数字的结果并不会改变。 代码: 最后输出的结果是9999。这个结果不固定,有多有少。 造成这种错误的原因是: 假设增加线程获取到数字是10000,进行了加一操作,结果
阅读全文
摘要:首先弄清线程是什么。比如我们打开的一个应用,XX.exe,这就是一个进程,进程可以在电脑的任务管理器里面看见。但是在这个进程的内部,需要同时做一些事情,比如QQ的传文件或者微信的聊天,这些单独的任务就是一个线程,如果同时进行就需要多线程来实现。 1.创建多线程——继承线程类 继承Thread类,然后
阅读全文
摘要:在实际功能当中,经常会碰到同时对一组数据进行增加和减少,最常见的就是交易功能。 事务内执行的语句,要么都成功,要么都失败,如果有一句没执行成功,整个事务都不会提交的。 这句话就是关闭自动提交。 一直到 这两句话内的sql语句就是一个事务。如果我们故意制造个错误,比如故意写错sql语句的某个关键字,编
阅读全文
摘要:枚举的定义 枚举关键字enum 枚举类是一种特殊类,它和普通类一样可以使用构造器、定义成员变量和方法,也可以实现多个接口,但不能继承类。 枚举的使用 枚举的使用场景 当变量只能从一堆固定的值中取出一个时,那么就应该使用枚举。 如:日期,学习,职业等等
阅读全文
摘要:刚开始看多态的文字定义时,总是不明白说的啥意思,看了一些示例代码后,总算知道了,其实也就是“多态”的字面意思。 如下: 上面创建了三个类,其中两个类为子类。
阅读全文
摘要:对象与类的一些概念,在面向对象语言当中大同小异,在此不多做详述。 在实际的编写代码当中,有一些技巧能让我们设计出来类更具有OOP的专业水准。 参考自《Java核心技术 卷一》 1.一定要保证数据私有 也就是说不要破坏封装性。有时候可能会需要到访问的方法或者更新的方法,但是不要嫌麻烦,最好还是保持实例
阅读全文
摘要:数组的声明 一般有两种形式的声明: 这两种声明都没错,但是大多数都使用第一种声明,因为变量名是独立的,不带任何符号。 声明一个数组,并没有将a真正的初始化为一个数组。 下面,语句就是声明了一个可以存储100个整数的数组。可以根据你的实际需求,更换int类型为你需要的数据类型。 其中,数字数组的初始化
阅读全文
摘要:数值类型之间的转换 数值类型之间的转换,在小数值往大数值转换时,不会发生精度的损失。在小数值往大数值转换时有可能发生精度的损失。 比如byte最大值也只有127,如果一个大于127的int类型数据往byte转换肯定是不行的,但是往long类型转换就完全没问题了。 在我们进行一些两种不同数值类型之间的
阅读全文
摘要:Java中,一共有8种基本数据类型: 4种整数型:int,short,long,byte。 2种浮点型:float,double。 1种字符类型:char。 1种表示真值的类型:boolean。 【String并不是一种基本数据类型。了解C语言的同学应该知道,字符串实际上是一个char数组】 对于这
阅读全文
摘要:注:其实真正学习一门新语言的第一步并不是安装开发工具,我是C#转JAVA,有一点编程经验了,所以可以直接跳过前面几步,直接上IDE. 1.下载IntelliJ IDEA 【官网】 http://www.jetbrains.com/idea/ 这里推荐一个免费的关于IntelliJ IDEA的教学视频
阅读全文