![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
知识积累
文章平均质量分 80
原飞木
Java开发工程师
展开
-
TCP协议中的三次握手和四次挥手(图解)
建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:先来看看如何建立连接的。 【更新于2017.01.04 】该部分内容配图有误,请大家见谅,正确的配图如下,错误配图也不删了,大家可以比较下,对比理解效果更好。这么久才来更新,抱歉!! 错误配图如下:首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为...转载 2017-11-03 20:35:23 · 931 阅读 · 0 评论 -
Java之浮点类型
浮点类型(float和double)是我们非常熟悉的类型,在程序中也会经常使用,如用来表示增长率,物品重量等方面。不过在使用浮点类型时,还是要留意一些问题的。毕竟浮点类型仅是数学中小数的一种模拟,不能将其与数学中的小数运算等同视之。浮点类型只是近似的存储例如0.1+0.2得到的结果并不是0.3:public class Main { public static ...原创 2018-07-11 12:19:12 · 988 阅读 · 0 评论 -
Java之volatile关键字
volatile 关键字:当多个线程进行操作共享数据时,可以保证内存中的数据可见。 相较于 synchronized 是一种较为轻量级的同步策略。缺点:1. volatile 不具备“互斥性”2. volatile 不能保证变量的“原子性”内存可见性是指当某个线程正在使用对象状态而另一个线程在同时修改该状态,需要确保当一个线程修改了对象状态后,其他线程能够看到发生的状态变化。...原创 2018-08-02 10:44:35 · 2073 阅读 · 3 评论 -
synchronized静态方法与非静态方法
一个对象里面如果有多个synchronized方法,某一个时刻内,只要一个线程去调用其中的一个synchronized方法了,其它的线程都只能等待,换句话说,某一个时刻内,只能有唯一一个线程去访问这些synchronized。我们需要先弄清楚synchronized 在类方法上使用的两个关键点。1.非静态方法的锁默认为 this,也就是我们所说的对象锁, 静态方法的锁为 对应的 ...原创 2018-08-05 14:27:13 · 2842 阅读 · 0 评论 -
Java之NIO
Java NIO是从Java 1.4版本开始引入的一个新的IO API,与传统IO 的主要区别IO NIO 面向流(Stream Oriented 面向缓冲区(Buffer Oriente 阻塞IO(Blocking IO 非阻塞IO(Non Blocking I 无 选择器(Selector Java NIO系统的核心在于:通道(Channel)和缓冲...原创 2018-09-15 19:37:33 · 918 阅读 · 0 评论 -
Java之反射
Java的反射机制,常用的4个类,Class、Field、Constractor、Method。Class是一个比较特殊的类,可以说任何一个类都是Class的实例对象。后面的Field、Constractor、Method三个类都是在java.lang.reflect包下。在Java中万事万物皆对象。1.Class类的使用例如有一个类public class Foo...原创 2018-09-20 13:34:25 · 907 阅读 · 0 评论 -
Java设计模式—代理模式
代理就是真实对象的代表。代理模式的应用场景:1.远程代理,也就是为一一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。例如当某一个产品在当地做大后,那么就可以去其他地方发展,每个地方可以雇佣一个代理来帮忙打理。2.虚拟代理,是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。这样就可以达到性能的最优化,比如说你打开一个很大的H...原创 2018-10-12 13:51:46 · 885 阅读 · 0 评论 -
Java常用集合的总结,集合中的(交集,并集,差集,补集,对称差集)
集合中的(交集,并集,差集,补集,对称差集)老是会弄混了常用的集合类有一下几种:List结构的集合类:ArrayList类,LinkedList类,Vector类,Stack类Map结构的集合类:HashMap类,Hashtable类Set结构的集合类:HashSet类,TreeSet类Queue结构的集合:Queue接口如果要求线程安全,使用Vector,Ha...原创 2017-11-16 22:41:06 · 2308 阅读 · 0 评论 -
Java基础之线程
1.线程的生命周期2.线程的调度方式通过分时和抢占来完成的同优先级线程组成先进先出队列(先到先服务),使用时间片策略对高优先级,使用优先调度的抢占式策略3.线程的创建方式(1)继承Thread类(2)实现Runnable接口区别:继承Thread: 线程代码存放Thread子类run方法中 实现Runnable:线程代码存在接...原创 2018-05-07 20:57:47 · 1143 阅读 · 0 评论 -
Callable,Lock,Condition,ReadWriteLock
Callable接口Java5.0在java.util.concurrent提供了一个新的创建执行线程的方式:Callable接口Callable接口类似于Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的。但是Runnable不会返回结果,并且无法抛出经过检查的异常。Callable需要依赖FutureTask,FutureTask也可以用作闭锁。imp...原创 2018-11-08 11:55:52 · 907 阅读 · 0 评论 -
Oracle学习笔记(一)
创建用户并授权在sys账号或者system下登录,执行:create user lq IDENTIFIED by 123456;grant resource to lq;alter user lq account unlock;grant create session to lq; grant create table to lq; grant create table...转载 2019-01-10 09:18:13 · 985 阅读 · 1 评论 -
Java对象的创建过程:类的初始化与实例化
摘要: 在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的。在实例化一个对象时,JVM首先会检查相关类型是否已经加载并初始化,如果没有,则JVM立即进行加载并调用类构造器完成类的初始化。在类初始化过程中或初始化完毕后,根据具体情况才会去对类进行实例化。本文试图对JVM执行类初始化和实例化的过程做一个详细深入地介绍,以便从Java虚拟机的角度清晰解剖一个Ja...转载 2018-06-10 21:51:39 · 1102 阅读 · 0 评论 -
spring之事物管理
什么是事务?事务指的是逻辑上的一组操作,这组操作要么全部成功,要么全部失败。事务的特性(四大特性):原子性、一致性、隔离性、持久性原子性:指事务是一个不可分割的工作单位事务中的操作要么都发生,要么都不发生。一致性:指事务前后数据的完整性必须保持一致。这两个的区别:表A中有库存100,表B中库存100。A库中向B库转移,A库减少50,B库添加30。这种情况原子性是符合的,一致...原创 2018-06-01 20:08:02 · 1079 阅读 · 0 评论 -
Java之IO流
Java输入/输出流体系中常用的流分类(表内容来自java疯狂讲义)输入流:把数据(文件、键盘输入、其他输入设备)读到你的程序中输出流:程序中的数据输出到外设或文件中注:下表中带下划线的是抽象类,不能创建对象。粗体部分是节点流,其他就是常用的处理流。流分类 使用分类 字节输入流 字节输出流 字符输入流 字符输出流 抽象基类 Inpu...转载 2018-05-27 15:49:57 · 976 阅读 · 0 评论 -
JRE和JDK的区别
1. 定义JRE(Java Runtime Enviroment)是Java的运行环境。面向Java程序的使用者,而不是开发者。如果你仅下载并安装了JRE,那么你的系统只能运行Java程序。JRE是运行Java程序所必须环境的集合,包含JVM标准实现及 Java核心类库。它包括Java虚拟机、Java平台核心类和支持文件。它不包含开发工具(编译器、调试器等)。JDK(...转载 2018-03-21 22:26:46 · 523 阅读 · 0 评论 -
Java回调机制
以前不理解什么叫回调,天天听人家说加一个回调方法啥的,心里想我草,什么叫回调方法啊?然后自己就在网上找啊找啊找,找了很多也不是很明白,现在知道了,所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法,这样子说你是不是有点晕晕的,其实我刚开始也是这样不理解,看了人家说比较经典的回调方式:Class A实现接口CallBack callback——...转载 2018-03-26 16:12:02 · 842 阅读 · 0 评论 -
Java关键字以及修饰属性
1. java中的修饰属性(public,private,protect,default)public:java中访问限制最宽的修饰符。被其修饰的类,属性以及方法不仅可以跨类访问,而且可以跨包(package)访问private:权限限制最窄的修饰符。被其修饰的类,属性以及方法只能被该类的对象访问,子类不能访问,更不能跨包访问protect:介于public和private之间。被其修...转载 2018-04-03 21:12:08 · 1893 阅读 · 0 评论 -
Java中的static关键字
一.static关键字的用途 在《Java编程思想》P86页有这样一段话: “static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。” 这段话虽然只是说明了static方法的特殊之处,但是可以看出static关键字的基本作用...转载 2018-04-06 16:59:29 · 833 阅读 · 0 评论 -
jdbc与mybatis的比较
1:性能jdbc:数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能。mybatis:在SqlMapConfig.xml中配置数据连接池,使用数据库连接池管理数据库连接。2:系统维护jdbc:将sql语句硬编码到java代码中,如果sql语句修改,需要重新编译java代码,不利于系统维护。mybatis:将sql语句配置在xml配...原创 2018-04-07 10:29:37 · 3061 阅读 · 0 评论 -
Java多态
多态:就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编译时并不确定,而是在程序运行期多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编译时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改...原创 2018-04-12 19:15:37 · 1024 阅读 · 0 评论 -
多线程之争用条件
什么是争用条件?当多个线程同时访问同一数据(内存区域)时,每个线程都尝试操作改数据,从而导致数据被破坏(corrupted),这种现象称为争用条件。下面用一个案例来说明。案例:100个人之间进行相互转账,每个人都有一张银行卡,卡里1000元。在转账的时候都由银行的系统来操作。银行系统:package com.smxy.people;/** * * @Descript...原创 2018-04-23 14:34:49 · 2069 阅读 · 0 评论 -
Java之实现Serializable接口的类,transient关键字
我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会自动序列化。 序列化是编程的一种解决问题的方式。JAVA序列化就是将对象按照某种协议格式(某种约定方式)放入一个buffer中,其目的是便于网...原创 2018-05-12 15:14:34 · 2761 阅读 · 0 评论 -
==和equals()方法的区别
==号和equals()方法都是比较是否相等的方法,那它们有什么区别和联系呢?首先,==号在比较基本数据类型时比较的是值,而用==号比较两个对象时比较的是两个对象的地址值:int x = 10;int y = 10;String str1 = new String("abc");String str2 = new String("abc");System.out.println(...转载 2018-05-13 11:42:24 · 976 阅读 · 0 评论 -
Java设计模式—单例模式
单例模式单例模式有以下特点:1)单例类只能有一个实例。2)单例类必须自己创建自己的唯一实例。3)单例类必须给所有其他对象提供这一实例。4)单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。懒汉式单例模式(线程安全)该模式的特点是类加载时没有生成单例,只有当第一次调用 getlnstance 方法时才去创建这个单例。代码如下:import jav...原创 2018-05-14 20:31:29 · 1096 阅读 · 0 评论 -
Java并发之CountDownLatch
CountDownLatchCountDownLatch是java多线程包concurrent里的一个常见工具类,通过使用它可以借助线程能力极大提升处理响应速度,且实现方式非常优雅。CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0时,它表示所有的线程已经完成了任务,然后在闭锁上等待的线程就可以...原创 2019-07-16 22:40:12 · 913 阅读 · 0 评论