![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础系列
文章平均质量分 83
骑蜗牛追梦者
这个作者很懒,什么都没留下…
展开
-
java基础系列(八)之自定义序列化
我们都知道java中实现序列化和反序列化,一般只需要实现接口Serializable即可。 一.序列化,反序列化1.定义: 序列化:将数据分解成字节流,以便存储在文件中或在网络上传输。 反序列化:打开字节流并重构对象。对象序列化不仅要将基本数据类型转换成字节表示,有时还要恢复数据。恢复数据要求有恢复数据的对象实例。2.java中序列化特点: 如果某个类能够被序列化,其子类也可以被序列化。声明原创 2017-09-23 16:24:41 · 702 阅读 · 0 评论 -
Java基础(十三)java中Lock的实现原理
1. Lock 的简介及使用 Lock是java 1.5中引入的线程同步工具,它主要用于多线程下共享资源的控制。本质上Lock仅仅是一个接口(位于源码包中的java\util\concurrent\locks中)。常用方法://尝试获取锁,获取成功则返回,否则阻塞当前线程void lock(); //尝试获取锁,线程在成功获取锁之前被中断,则放弃获取锁,抛出异常 void...转载 2018-03-17 22:06:38 · 467 阅读 · 0 评论 -
java基础(十五)AQS锁-Lock,condition
入门AQS锁 - ReentrantLock与ConditionReentrantLockjava.util.concurrent.locks.ReentrantLockReentrantLock是一个默认非公平的,可重入的,互斥(独占)锁。天哪,光这一句话概念就很多! 不过不用怕,我们下面会这些概念挨个进行详细的介绍。由于理解这些概念,是理解jdk1.5加入的juc包中各种并发类与接口的关键所转载 2018-03-22 23:12:11 · 386 阅读 · 0 评论 -
java基础(十四)之整数计算溢出问题(原码,补码)
引言: 之所以写关于原码和补码的原因是在牛客网上做一道关于字符串转数字的问题,其中就涉及到转化过程中数字溢出的问题。所以特地进行了原码和补码的再度深入学习。一.原码数字分正负,如某人欠我钱,则可以用负数来表达。所以在原码中规定了二进制串的最高位用于标识符号位,即0代表正,1代表负。这其实是挺符合我们现实世界人思考方式。为了描述方便,这里我们这针对4位二进制进行分析。 现实世界中1在这4位二进制描原创 2018-03-19 14:57:53 · 1703 阅读 · 0 评论 -
java之socket服务框架
我们知道socket通信是分服务端和客户端两种,如何设计一个好的通信框架呢。本文从实战角度构建一个适合中小型项目开发的socket服务框架。这里需要具有一定的java基础,比如线程知识,socket通信基础。1.服务端设计与实现这里我们将服务器端与客户端通信模型为per-connection per-thread,即一个连接一个线程。不过我们这里进行了部分优化,即建立线程池来管理这些服务线程。1)...原创 2017-03-20 13:47:40 · 9143 阅读 · 3 评论 -
socket同步,异步,阻塞与非阻塞模式
socket阻塞与非阻塞,同步与异步1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步/异步主要针对C端: 同步: 所谓同步,就是在c端发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做完了才能做下一件事。例如普通B/S模式(同步):提交请求转载 2018-03-21 10:46:00 · 1606 阅读 · 0 评论 -
2018阿里电面题
引言: 这次参加阿里大数据岗电面被刷了,发现基础知识还不是不够扎实,很多东西都停留于表面,很少真正关注底层实现。所以导致这次败北,希望下面整理多人的阿里电面题对大家能有帮助。一.操作系统 1.系统栈与用户栈区别 2.进程与线程相关知识,死锁的相关知识 二.网络 1.client与server底层通信全过程(直到网卡) 2.Tcp/IP三次握手与四次挥手,为什么? 3.tcp,ud...原创 2018-03-20 09:35:36 · 405 阅读 · 0 评论 -
java基础(十六)jvm内存区域划分
JVM的内存区域划分,又被称为jvm内存模型,而非java内存模型,这是有区别的。下一篇将说到java内存模型在Java语言当中,内存如何划分? 由于Java程序是交由JVM执行的,所以我们在谈Java内存区域划分的时候事实上是指JVM内存区域划分。在讨论JVM内存区域划分之前,先来看一下Java程序具体执行的过程:转载 2018-04-16 10:11:38 · 182 阅读 · 0 评论 -
java基础(十七)垃圾回收机制
摘要: Java技术体系中所提倡的 自动内存管理 最终可以归结为自动化地解决了两个问题:给对象分配内存 以及 回收分配给对象的内存,而且这两个问题针对的内存区域就是Java内存模型中的堆区,本文将结合垃圾回收策略进一步给出内存分配规则。垃圾回收机制的引入可以有效的防止内存泄露、保证内存的有效使用,也大大解放了Ja...转载 2018-04-16 10:49:35 · 499 阅读 · 0 评论 -
java基础(十九)之深入java虚拟机
以下是我整理的关于学习java虚拟机的博客资料 1 深入Java虚拟机之一:Java内存区域与内存溢出(http://blog.csdn.net/ns_code/article/details/17565503)2.【深入Java虚拟机】之二:Class类文件结构 http://blog.csdn.net/ns_code/article/details/176756093.【深入Jav...原创 2018-04-16 11:36:11 · 274 阅读 · 0 评论 -
java基础(十二)深入分析synchronized的实现原理
记得刚刚开始学习Java的时候,一遇到多线程情况就是synchronized,相对于当时的我们来说synchronized是这么的神奇而又强大,那个时候我们赋予它一个名字“同步”,也成为了我们解决多线程情况的百试不爽的良药。但是,随着我们学习的进行我们知道synchronized是一个重量级...转载 2018-03-17 21:56:55 · 279 阅读 · 0 评论 -
java基础(十一)操作系统中锁机制
前言:前几天阿里电面被问到了关于jvm锁机制的底层原理,说实话当时只是简单的了解基础api,真正内部实现确实不懂。所以在查阅大量资源的情况下,简单记录下我学习这方面的资料。一.操作系统级别的锁机制实现原理 我们知道jvm是属于运行在操作系统上的程序虚拟机。要想真正理解jvm是如何实现锁机制的,底层操作系统的锁机制是必须要了解的。 我们知道在多线程编程中,为了保证数据操作的一致性,操作系统引...原创 2018-03-17 14:58:39 · 1909 阅读 · 0 评论 -
java基础知识集合
1.如何产生随机数,随机数算法 2.对象复制,浅拷贝、深拷贝 3.对象序列排序,调用工具类的方法 4.求2个集合的交集,要求最少的时间复杂度 5.简单抽样原理和方法原创 2017-12-08 15:45:13 · 169 阅读 · 0 评论 -
java基础(一)之StringBuffer,StringBuilder,String区别
引言:关于String,StringBuilder,StringBuffer的问题,在日常开发中似乎并没有引起我们的重视,但是仅仅这个点可能就影响到我们编写的程序的性能,同时这个点也是面试时经常被问到的java基础题。下面我们从理论和实践2个方面来分析和论证3者之间的关系。一.理论String,StringBuffer,StringBuilder比较string原创 2017-03-08 15:05:18 · 303 阅读 · 0 评论 -
java基础(二)之深入剖析volatile关键字
引言: volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下与内存模型相关的概念和知识,然后分析了volatile关键字的实现原理,最后给出了几个使用volatile关键字的场景。以下是本文的目录大纲:一.内存模型的相关概念 二.并发编程中的三个概念 三.J转载 2017-09-14 21:54:02 · 9254 阅读 · 0 评论 -
java基础(四)之java浅析异常处理机制
引言:异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性。我们在处理文件时,需要考虑文件不存在等各种极端异常情况,这样才能更好的保证程序的健壮性。下面我将从以下4个方面对异常进行讲解:1)异常的基本概念与分类2)异常的用法及若干注意事项3)如何自定义异常及处理原则4)异常的其他应用场合(多层循环退出,程序返回标识)一.异常的基原创 2017-03-24 11:34:46 · 649 阅读 · 0 评论 -
java基础(三)之final关键字
一.final 理解 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。二.final用法final可以用来修饰变量,方法,类1.final修饰变量(final最常用的用法)final修饰变量时,表示final指向的变量的地址不再发生变化,而不是final指向的变量的值不能变化。 final修饰的变量分原创 2017-09-12 22:52:39 · 420 阅读 · 0 评论 -
java基础(五)之JAVA编码规范
一.命名规范1 一般概念 1) 尽量使用完整的英文描述符 2) 采用适用于相关领域的术语 3) 采用大小写混合使名字可读 4)见名知意,简短意赅(小于 15 个字母为正常选择) 5) 避免使用下划线(除静态常量等)2 标识符类型说明1)包( Package )的命名 Package 的原创 2017-09-20 23:14:36 · 356 阅读 · 0 评论 -
java基础(六)之java进程与线程最全总结
java进程和线程在面试中几乎是一个必问的基础点。下面我们从以下几个方面来理解进程和线程。 1.并发与并行的概念与区别 2.进程 3.线程的概念以及与进程的区别 4.线程实现方式 5.Thread与Runnable源码分析 一.并发与并行的概念与区别 1.概念 并发的实质是一个物理CPU(也可以多个物理CPU) 在若干道程序之间多路复用,并发性是对有限物理资源强制行使多用户共享以提高原创 2017-09-17 21:38:33 · 403 阅读 · 0 评论 -
java基础(七)之快速理解泛型
引言: 泛型在日常开发中并不常见,但是在很多开发框架中却非常常见,学习泛型最好的方法就是阅读jdk源码,泛型在集合这部分大量应用。一.泛型的出现原因下面从两段段代码中来进行理解泛型出现的原因:import java.util.ArrayList;public class GenericTest {public static void main(String[] args) { Arra原创 2017-09-22 15:58:54 · 367 阅读 · 0 评论 -
java基础(九)之线程同步Synchronized,Lock
引言: 很多大型系统为了处理大并发请求时,为了实现业务与服务解耦,通常会使用消息队列机制来提供相应的服务,这是典型的生产者-消费者模式,这里就涉及并发应用时多线程同步问题,临界资源的访问问题。为了更好的理解和应用多线程,我们需要对线程同步机制有深入的认识。本文将从以下几个方面入手1)线程同步互斥的概念 2)操作系统底层提供的同步互斥机制 3) java同步机制synchronized...原创 2017-10-15 12:58:34 · 361 阅读 · 0 评论 -
java基础(十)之深入剖析ThreadLocal
ThreadLocal在日常开发中使用并不是很频繁,但是在很多开源框架中都能见到这种用法。今天我们就来深入剖析下ThreadLocal原理以及ThreadLocal的应用场景。本文从以下几个方面来剖析ThreadLocal原理。 以下是本文目录大纲: 一.理解ThreadLocal 二.深入剖析ThreadLocal 三.ThreadLocal的应用场景一.对ThreadLoca原创 2017-10-14 22:36:46 · 269 阅读 · 0 评论 -
java基础(十八)之java内存模型
Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的。如果我们要想深入了解Java并发编程,就要先理解好Java内存模型。Java内存模型定义了多线程之间共享变量的可见性以及如何在需要的时候对共享变量进行同步。原始的Java内存模型效率并不是很理想,因此Jav转载 2018-04-16 10:16:11 · 302 阅读 · 0 评论