Java
Java技术学习总结
小王没有BUG
对Java以及网络编程感兴趣,专注技术学习与分享,也欢迎加我微信交流(微信号voidCC7929)
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java实现Socket网络聊天室
最近在学Socket编程,为了巩固知识,简单实现了一个网络聊天室;目前只实现了个群聊功能,有时间继续更新和完善,下面附上代码截图,代码上都有详细的注释,如果有看不懂的地方,欢迎留言或私信我。 一、源代码地址:https://github.com/aa792978017/ChatRoom 二、本地多客户端调试效果图:(为了方便本地调试区分不同客户端,这里把用户名都设置为了“路人xxx...原创 2019-12-09 20:41:50 · 4418 阅读 · 4 评论 -
JVM调优-----虚拟机内存模型及常用调整参数
Java虚拟机内存模型:程序计数器、虚拟机栈、本地方法栈、Java堆、元空间(方法区),如图:程序计数器1.线程私有,用于记录下一条运行的指令(如:当线程CPU时间用完,要用计数器记录运行到哪了,重新获取CPU后可以从该条命令开始)2.当前线程在执行Java方法的时候,计数器记录正在执行的Java字节码地址,如果是Native方法,则计数器为空Java虚拟机栈1.线程私有空间,他...原创 2019-04-07 12:02:38 · 354 阅读 · 0 评论 -
JVM调优-----垃圾收集
摘要: 自动垃圾回收处理时Java语言的一大特点,了解垃圾收集处理,有助于合理给我们的Java程序选择合适的JVM参数,让我们的程序更快,更稳定的运行。 垃圾回收,本质来说就是释放系统内存资源。当我们的程序使用完内存资源以后,要及时把曾经占用过内存释放掉,以保证程序在运行的过程中有足够的内存资源使用。如果分配完内存资源后,却没有释放完全内存,就会引起内存泄漏。Java里面的垃圾回收...原创 2019-04-07 16:22:06 · 235 阅读 · 0 评论 -
日志总结
日志,即记录系统的工作。原因有三个: 1、记录操作轨迹:可以知道系统都做了些什么事情。 2、监控系统运行状况:可以结合系统性能分析工具,查看不同时间里,系统的运行情况,结合日志,进行调优 3、回溯系统故障:系统出错的可以通过日志,看看出错的时候执行了什么操作,处于什么状态推荐的系统日志命名格式: appName_logType_logName.log。应用名_...原创 2019-04-16 15:59:34 · 568 阅读 · 0 评论 -
Java单元测试知识总结(基于JUnit)
在日常开发中离不开进行代码的测试,因此很有必要学会如何进行规范的单元测试单元测试的好处:1、提升软件质量2、促进代码优化3、提升研发效率4、增加重构自信单元测试基本原则:(AIR原则,必须用断言式来检测,符合BCDE原则)1、Automatic(自动化)2、Independent(独立性)3、Repeatable(可重复)4、Border,边界值测试,包含循...原创 2019-04-15 18:21:44 · 1468 阅读 · 0 评论 -
Java枚举类型解析
枚举 枚举是一种特殊的数据,它的取值有限,是可以枚举出来的,比如一周有七天,性别有男女等,虽然定义类也能实现,但是枚举更简洁、安全和方便。这里先定义最简单一个尺码枚举类来演示://这个尺码枚举类里面的每个枚举元素代表尺码的:小小码,小码,中码,大码,加大码public enum Size { XSMALL, SMALL, MEDIUM, LAR...原创 2019-04-21 16:05:12 · 530 阅读 · 1 评论 -
Java常用命令:
1、javac xxx.java 编译java文件,里面不能带有包名,有的话需要指定加载目录2、javap -c xxx 获取对class文件反编译后的字节码文件3、jps 查看正在运行的java程序 命令格式: jps [ option ] [ hostid ] 如: jps -m 2207 输出2207java程序启动时的main函数输入参数选项 ...原创 2019-04-21 16:09:40 · 464 阅读 · 0 评论 -
Java内部类的本质:
本质:1、内部类与包含它的外部类有比较紧密的关系,而与其他类关系不大,定义在类的内部,可以实现对外部的完全隐藏,可以有更好的封装性,代码实现上也更简洁。2、内部类只是一个Java编译器的概念,对于Java虚拟机而言,它不知道有内部类存在,Java编译器在编译的时候,每个内部类最后都会编译为一个独立的类(外部类$内部类名.class)3、内部类可以方便地访问外部类的私有变量,可以声明为p...原创 2019-04-21 16:43:13 · 740 阅读 · 0 评论 -
Java注解
元注解:@Document :标记注解,注解信息包含到说明文档中@Target:标识注解的目标:该注解用于方法、类、变量,可以有多个,类型为ElementType TYPE:表示类、接口、枚举声明 FIELD:字段,包括枚举变量 METHOD:方法 PARAMETER:方法中的参数...原创 2019-04-22 01:04:35 · 150 阅读 · 0 评论 -
Java-IO简要总结
Java的IO体系中包括BIO、NIO和AIO,也是面试中场问的问题,这里用脑图做个简单总结,后续把原理分析跟进一下 文章最后会贴上我做的xmind思维导图文件连接,感兴趣的可以下载。 博主持续分享各种学习记录,大家可以多关注,也希望能与大家一起讨论交流,欢迎留言。百度网盘链接链接:https://pan.baidu.com/s/1TlXX_NA_FCJ59m53CLU...原创 2019-07-02 11:39:30 · 269 阅读 · 0 评论 -
Java程序性能提高篇-----2
摘要: 继续分析Java程序优化的一些小技巧,关于其他的Java程序优化技巧,可以点这里看我的上一篇博客字符串优化处理 概述:Java的String类底层使用一个finalchar[] + 偏移量 + count长度变量,来实现的。它有三个特点:不变性,针对常量池的优化,类的final定义不变性是指:当String对象被创建出来以后,它就是不可变的了,好处是当它需要被多个线程...原创 2019-04-01 13:00:37 · 230 阅读 · 0 评论 -
Java性能调优理论
程序的性能衡量维度: 1.执行速度:程序反映是否迅速,响应时间是否合理 2.内存分配:内存是否合理,是否过多地消耗内存或者内存泄漏 3.启动时间:程序从运行到可以正常业务处理需要花费多长时间 4.负载承受能力:当系统压力上升的时候,系统的执行速度、响应时间的上升曲线是否平缓。性能参考指标: 1.执行时间:一段代码从开始到运行结束,所用的时间,这也是我们最直观,最好...原创 2019-04-01 10:50:30 · 170 阅读 · 0 评论 -
Java反射
摘要: Java反射技术是Java中非常灵活的一种动态技术,它在目前主流的Java开源框架中被广泛的使用,如Spring、Mybatis等,框架内部通过使用反射技术来灵活的实现动态代理等,解决了类与类之间的耦合性,实现解耦,实现开闭原则。学会Java的反射技术,有助于我们更好的理解这些框架的底层原理,也能帮助我们更全面的理解Java语言。如有错误,还请大家指出。欢迎留言一起学习,一起...原创 2019-03-21 12:02:25 · 165 阅读 · 0 评论 -
Java类加载机制
摘要: 了解Java的类加载机制才能让我们知道Java程序是如何运行的,学习和理解Java虚拟机的运行原理是一个Java程序员必修内功,在这里分享以下我对Java类加载机制的理解,如有错误,还请大家指出。欢迎留言一起学习,一起探讨这是我的GitHub地址,里面的项目可以供大家参考学习:https://github.com/aa792978017 Java程序是怎么运行的?运行过程...原创 2019-03-21 15:46:05 · 182 阅读 · 0 评论 -
Java程序性能提高篇-----1
摘要: 作为一名程序员,不仅要会写代码,更要会写高效的代码;在提高代码运行速度上。这里给大家介绍一些提高Java代码性能的小技巧。这里的一些优化技巧可能执行一次无法让你察觉它的优势,当你对其运行个上万次,就能发现性能是有极大的改善的。慎用异常Java开发中,经常使用try-catch捕获异常,但是try-catch对系统性能而言是非常糟糕的。可能一次try-catch让你无法察觉,但...原创 2019-03-25 21:10:27 · 358 阅读 · 0 评论 -
Java内存模型
以下是我对Java的内存模型的总结:话不多说,先上图(百度来的):由于画图水平有限,从网上扒来一个Java内存模型。据图上可以看到,在多个线程工作的时候Java程序的内存分布。那么,问题来了:为什么上面有三个内存,本地内存是啥?主内存是啥?它们有什么区别吗 共享变量和共享变量副本是一样的吗? 这不同内存里面的共享变量是一样的吗?在解决这些问题之前,我们要先了解一下Java内存...原创 2019-03-26 16:21:05 · 118 阅读 · 0 评论 -
Synchronzied关键字解析
摘要 在Java程序涉及多线程的同步问题的时候,往往需要给线程同步安全的功能加锁,可能是需要同步一个方法,也可能只是一段代码。synchronzied关键字介绍: 其中synchronized关键字就是Java内部实现的一个锁机制,通过给需要添加锁机制的方法或代码块加上synchronzied关键字,这样就能保证同一时间内只允许一个线程执行这段代码。 synchronize...原创 2019-03-27 08:12:18 · 374 阅读 · 0 评论 -
volatile关键字解析
关于解决共享变量的可见性的手段,除了使用笨重的锁以外,Java还提供了一种弱形式的同步--------volatile关键字。volatile作用: 确保对一个变量的修改对其他线程马上可见。当我们使用这个关键字修饰一个变量的时候,线程在写入变量的时候不会把这个变量的值缓存在寄存器或者其他地方,会直接把值写回主内存中(什么是主内存看这里)。其他线程在读取这个变量的值也是一样,每次都是直接从...原创 2019-03-27 08:43:27 · 177 阅读 · 0 评论 -
锁, Java的锁总结
概述:1.乐观锁与悲观锁 乐观锁和悲观锁是数据库中引入的名词。 悲观锁是值对数据被外界的修改是持一种悲观的态度的,总是认为数据很容易就被其他线程修改了,因此在数据处理前都会先对数据加锁,加一个排他锁,处理完后再释放锁。供其他线程抢占。 乐观锁是相对悲观锁而言的,它总是认为数据不会被外界修改,不容易发生冲突和不需要抢占锁,因此访问数据前不需要给数据加锁,而是在进行数据提交的时候...原创 2019-03-27 10:32:30 · 248 阅读 · 0 评论
分享