![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA面向对象
秋风清,秋月明。落日夕阳一片红
这个作者很懒,什么都没留下…
展开
-
Dubbo 支持哪些协议,每种协议的应用场景,优缺点?
Dubbo 支持哪些协议,每种协议的应用场景,优缺点?dubbo: 单一长连接和 NIO 异步通讯,适合大并发小数据量的服务调用,以及消费者远大于提供者。传输协议 TCP,异步,Hessian 序列化;rmi: 采用 JDK 标准的 rmi 协议实现,传输参数和返回参数对象需要实现Serializable 接口,使用 java 标准序列化机制,使用阻塞式短连接,传输数据包大小混合,消费者和提供者个数差不多,可传文件,传输协议 TCP。多个短连接,TCP 协议传输,同步传输,适用常规的远程服务原创 2021-11-16 15:09:06 · 396 阅读 · 0 评论 -
讲讲面向对象三大特性
封装。封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。 继承。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。 多态性。它是指在父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为,这使得同一个属性或方法原创 2021-08-29 17:10:33 · 72 阅读 · 0 评论 -
面向对象和面向过程的区别?
面向过程: 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。 缺点:没有面向对象易维护、易复用、易扩展。 面向对象: 优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护。 缺点:性能比面向过程低。 ...原创 2021-08-29 17:09:46 · 40 阅读 · 0 评论 -
switch 是否能作用在 byte 上,是否能作用在 long 上,是否能作用在 String 上?
Java5以前switch(expr)中,expr只能是byte、short、char、int。从Java 5开始,Java中引入了枚举类型,expr也可以是enum类型。从Java 7开始,expr还可以是字符串(String),但是长整型(long)在目前所有的版本中都是不可以的。访问修饰符public、private、protected、以及不写(默认)时的区别?Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java支持4种不同的...原创 2021-08-28 22:53:32 · 96 阅读 · 0 评论 -
Java有哪些数据类型?
Java语言的数据类型分为两种:基本数据类型和引用数据类型。1.基本数据类型包括boolean(布尔型)、float(单精度浮点型)、char(字符型)、byte(字节型)、short(短整型)、int(整型)、long(长整型)和double(双精度浮点型)共8种,如下表所示。基本类型 位数 字节 默认值 int 32 4 0 short 16 2 0 long 64 8 0L byte ...原创 2021-08-28 22:52:12 · 277 阅读 · 0 评论 -
Oracle JDK 和 OpenJDK 的区别是什么?
可能在看这个问题之前很多人和我一样并没有接触和使用过OpenJDK。下面通过我通过我收集到一些资料对你解答这个被很多人忽视的问题。Oracle JDK 版本将每三年发布一次,而 OpenJDK 版本每三个月发布一次; OpenJDK 是一个参考模型并且是完全开源的,而 Oracle JDK 是OpenJDK 的一个实现,并不是完全开源的; Oracle JDK 比 OpenJDK 更稳定。OpenJDK 和 Oracle JDK 的代码几乎相同,但 Oracle JDK 有更多的类和一些错误修复..原创 2021-08-28 22:51:12 · 705 阅读 · 0 评论 -
采用字节码的好处是什么?
Java语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。所以Java程序运行时比较高效,而且,由于字节码并不专对一种特定的机器,因此,Java程序无须重新编译便可在多种不同的计算机上运行。...原创 2021-08-28 22:49:25 · 76 阅读 · 0 评论 -
什么是字节码?
Java之所以可以“一次编译,到处运行”,一是因为JVM针对各种操作系统、平台都进行了定制,二是因为无论在什么平台,都可以编译生成固定格式的字节码(.class文件)供JVM使用。因此,也可以看出字节码对于Java生态的重要性。之所以被称之为字节码,是因为字节码文件由十六进制值组成,而JVM以两个十六进制值为一组,即以字节为单位进行读取。在Java中一般是用javac命令编译源代码为字节码文件,一个.java文件从编译到运行的示例如图所示。...原创 2021-08-28 22:48:47 · 588 阅读 · 0 评论 -
JVM、JRE和JDK的关系是什么?
JDK是(Java Development Kit)的缩写,它是功能齐全的Java SDK。它拥有JRE所拥有的一切,还有编译器(javac)和工具(如javadoc和jdb)。它能够创建和编译程序。JRE是Java Runtime Environment缩写,它是运行已编译Java程序所需的所有内容的集合,包括Java虚拟机(JVM),Java类库,java命令和其他的一些基础构件。但是,它不能用于创建新程序。JDK包含JRE,JRE包含JVM。...原创 2021-08-28 22:47:59 · 161 阅读 · 0 评论 -
Java和C++有什么关系,它们有什么区别?
都是面向对象的语言,都支持封装、继承和多态; C++ 支持指针,而 Java 没有指针的概念; C++ 支持多继承,而 Java 不支持多重继承,但允许一个类实现多个接口; Java 是完全面向对象的语言,并且还取消了 C/C++ 中的结构和联合,使编译程序更加简洁; Java 自动进行无用内存回收操作,不再需要程序员进行手动删除,而 C++ 中必须由程序释放内存资源,这就增加了程序员的负担。 Java 不支持操作符重载,操作符重载则被认为是 C++ 的突出特征; Java 允许预处理,但不支持原创 2021-08-28 22:46:01 · 1221 阅读 · 0 评论 -
Java语言有哪些特点?
Java语言有哪些特点? 面向对象(封装,继承,多态); 平台无关性,平台无关性的具体表现在于,Java 是“一次编写,到处运行(Write Once,Run any Where)”的语言,因此采用 Java 语言编写的程序具有很好的可移植性,而保证这一点的正是 Java 的虚拟机机制。在引入虚拟机之后,Java 语言在不同的平台上运行不需要重新编译。 可靠性、安全性; 支持多线程。C++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而原创 2021-08-28 22:44:40 · 58 阅读 · 0 评论 -
说一下HashSet的实现原理?
说一下HashSet的实现原理?HashSet是基于HashMap 实现的,HashSet 底层使用HashMap来保存所有元素,因此HashSet的实现比较简单, 相关HashSet 的操作, 基本上都是直接调用底层HashMap的相关方法来完成, HashSet不允许重复的值。...原创 2020-12-03 15:51:05 · 1727 阅读 · 0 评论 -
存储过程的作用
存储过程的作用:1.存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快。2.可保证数据的安全性和完整性。通过存储过程可以使没有权限的用户在控制之下间按地存取数据库,从而保证数据的安全。通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。3.可以降低网络的通信量。存储过程主要是在服务器上运行,减少对客户机的压力。4 :存储过程可以接受参数、输出参数、返回单个或多个结果集以及返回值。可以向程序返回错误原因。5 :存储过程可以包含程序流、逻辑以及对数据库的查询。同时可以实体封装和原创 2021-05-12 15:11:17 · 4623 阅读 · 0 评论 -
解释数据库中事务的作用
解释数据库中事务的作用:事务是一系列的数据库操作,是数据库应用的基本逻辑单位。事务性质:1.原子性。即不可分割性,事务要么全部被执行,要么就全部不被执行。2.一致性或可串性。事务的执行使得数据库从一种正确状态转换成另一种正确状态3.隔离性。在事务正确提交之前,不允许把该事务对数写的任何改变提供给任何其他事务4.持久性。事务正确提交后,其结果将永久保存在数据中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存。...原创 2021-05-12 15:05:31 · 2177 阅读 · 0 评论 -
集合类都有哪些?主要方法?
集合类都有哪些?主要方法?最常用的集合类是List 和Map. List 的具体实现包括ArrayList 和Vector ,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。List 适用于按数值索弓访问元素的情形。Map提供了一个更通用的元素存储方法。 Map集合类用于存储元素对(称作"键"和"值") , 其中每个键映射到一个值。对于set ,大概的方法是add,remove, contains ;对于map ,大概的方法就是put,remove , con原创 2021-03-07 21:36:43 · 1153 阅读 · 0 评论 -
ArrayList,Vector, LinkedList的存储性能和特性
ArrayList,Vector, LinkedList的存储性能和特性ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全) ,通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插原创 2021-03-07 21:31:19 · 246 阅读 · 0 评论 -
List, Set, Map是否继承自Collection 接口?
List, Set, Map是否继承自Collection 接口?List, Set, Map是否继承自Collection 接口?List, Set是,Map不是原创 2021-03-07 21:25:27 · 211 阅读 · 0 评论 -
List和Map的区别
List和Map的区别List和Map的区别一个是存储单列数据的集合,另一个是存储键和值这样的双列数据的集合,List 中存储的数据是有顺序,并且允许重复; Map中存储的数据是没有顺序的, 其键是不能重复的,它的值是可以有重复的。...原创 2021-03-07 21:23:58 · 149 阅读 · 0 评论 -
HashMap和HashTable的区别
HashMap和HashTable的区别HashMap和HashTable的区别(条理上还需要整理,也是先说相同点,再说不同点),HashMap是HashTable的轻量级实现(非线程安全的实现) ,他们都完成了Map接口,主要区别在于HashMap允许空( null )键值( key ),由于非线程安全,在只有一个线程访问的情况下,效率要高于Hashtable,HashMap允许将null作为一个entry的key或者value ,而Hashtable不允许。HashMap把Hashtable的co原创 2021-03-07 21:18:54 · 137 阅读 · 0 评论 -
ArrayList和Vector 的区别是什么?
ArrayList和Vector 的区别是什么?●线程安全:Vector使用了Synchronized 来实现线程同步, 是线程安全的,而ArrayList 是非线程安全的。●性能: ArrayList在性能方面要优于Vector。●扩容:ArrayList和Vector都会根据实际的需要动态的调整容量,只不过在Vector扩容每次会增加1倍,而ArrayList只会增加50%。...原创 2020-12-03 16:00:42 · 575 阅读 · 0 评论 -
ArrayList和Linkedlist的区别是什么?
ArrayList和Linkedlist的区别是什么?●数据结构实现:Araylist是动态数组的数据结构实现而Linkedist是双向链表的数据结构实现。●随机访问效率: ArrayList比LinkedList 在随机访问的时候效率要高,因为Linkedlist 是线性的数据存储方式,所以需要移动指针从前往后依次查找。●增加和删除效率:在非首尾的增加和删除操作,LinkedList 要比ArrayLlist效率要高,因为ArrayList 增删操作要影响数组内的其他数据的下标。综合来说原创 2020-12-03 15:54:53 · 208 阅读 · 0 评论 -
问题123 : TCP/IP协议的理解
问题123 : TCP/IP协议的理解TCP/IP ( Transmission Control Protocol/InternetProtocol的简写),中文译名 为传输控制协议/因特网互联协议,又叫网络通讯协议。这个协议是Internet最基本的协议,也是Internet的基础。简单地说,它的名字是由网络层的IP协议和传输层的TCP协议组成的。但是确切地说,TCP/IP协议是一-组包括 TCP协议和IP协议,UDP ( UserDatagram Protocol )协议. ICMP (I原创 2020-09-03 13:39:15 · 165 阅读 · 0 评论 -
问题119 :什么情况下需要序列化?如 何实现java序列化(串行化) ?
问题119 :什么情况下需要序列化?如何实现java序列化(串行化) ?当你想把的内存中的对象状态保存到一个文件中或者数据库中时候;当你想用套接字在网络_上传送对象的时候;当你想通过RMI传输对象的时候;序列化注意事项:1、如果子类实现Serializable接口而父类未实现时,父类不会被序列化,但此时父类必须有个无参构造方法,否则InvalidClassException异常。2.静态变量不会被序列化,那是类的"菜”,不是对象的。串行化保存的是对象的状态,即非静态的属性,即实例变量。不能保存类变量原创 2020-09-02 19:03:42 · 227 阅读 · 0 评论 -
问题117:Java如何实现无阻塞方式的scoket编程?
问题117 : Java如何实现无阻塞方式的Socket编程?NIO有效解决了多线程服务器存在的线程开销问题。在NIO中使用多线程主要目的不是为了应对每个客户端请求而分配独立的服务线程,而是通过多线程充分利用多个CPU的处理能力和处理中的等待时间,达到提高服务能力的目的。...原创 2020-09-02 20:07:18 · 183 阅读 · 0 评论 -
问题118 :什么是java的序列化(串行化)?
问题118 :什么是java的序列化(串行化)?简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法) ,并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存object states ,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。...原创 2020-09-02 17:58:15 · 114 阅读 · 0 评论 -
问题116 :网络编程时的同步、异步、阻塞、非阻塞?
问题116 :网络编程时的同步、异步、阻塞、非阻塞?同步:函数调用在没得到结果之前,没有调用结果,不返回任何结果。异步:函数调用在没得到结果之前,没有调用结果,返回状态信息。阻塞:函数调用在没得到结果之前,当前线程挂起。得到结果后才返回。非阻塞:函数调用在没得到结果之前,当前线程不会挂起,立即返回结果。...原创 2020-09-02 17:55:28 · 99 阅读 · 0 评论 -
问题114 : Java中invokeAndWait和invokeLater 有 什么区别?
问题114 : Java中invokeAndWait和invokeLater 有什么区别?这两个方法是Swing API提供给Java开发者用来从当前线程而不是事件派发线程更新GUI组件用的。InvokeAndWait( )同步更新GUI组件,比如一个进度条,一旦进度更新了 ,进度条也要做出相应改变。如果进度被多个线程跟踪,那么就调用ivokeAndWa方法请求事件派发线程对组件进行相应更新。而invokeLater( )方法是异步调用更新组件的。...原创 2020-09-02 17:46:37 · 373 阅读 · 0 评论 -
问题113 :如何在Java中创建Immutable对象?
问题113 :如何在Java中创建Immutable对象?这个问题看起来和多线程没什么关系,但不变性有助于简化已经很复杂的并发程序。Immutable对象可以在没有同步的情况下共享,降低了对该对象进行并发访问时的同步化开销。可是Java没有@Immutable这个注解符,要创建不可变类,要实现下面几个步骤:通过构造方法初始化所有成员、对变量不要提供setter方法、将所有的成员声明为私有的,这样就不允许直接访问这些成员、在getter方法中,不要直接返回对象本身,而是克隆对象,并返回对象的拷贝。.原创 2020-09-02 17:41:50 · 200 阅读 · 0 评论 -
问题110 : volatile变量和atomic变量有什么不同?
这是个有趣的问题。首先, volatile变量和atomic变量看起来很像,但功能却不- -样。Volatile 变量可以确保先行关系,即写操作会发生在后续的读操作之前,但它并不能保证原子性。例如用volatile修饰count变量那么count++操作就不是原子性的。而AtomicInteger类提供的atomic方法可以让这种操作具有原子性如getAndIncrement( )方法会原子性的进行增量操作把当前值加- ,其它数据类型和引用变量也可以进行相似操作。...原创 2020-09-02 17:28:53 · 743 阅读 · 0 评论 -
Reids的特点有哪些?
Reids的特点Redis本质上是一个Key-Value类型的内存数据库,很像memcached整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作, Redis的性能非常出色,每秒可以处理超过10万次读写操作是已知性能最快的Key-Value DB。Redis的出色之处不仅仅是性能, Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB ,不像memcached只能保存1MB的数据,因此Redis可以用来实现很多有用原创 2020-07-08 17:40:01 · 135 阅读 · 0 评论 -
用Java socket编程,读服务器几个字符,再写入本地显示
用JAVA SOCKET编程,读服务器几个字符,再写入本地显示。客户端向服务器端发送连接请求后,就被动地等待服务器的响应。典型的TCP客户端要经过下面三步操作:1.创建一一个Socket实例:构造函数向指定的远程主机和端口建立一个TCP连接;2、通过套接字的I/O流与服务端通信;3、使用Socket类的close方法关闭连接。服务端的工作是建立一个通信终端,并被动地等待客户端的连接。典型的TCP服务端执行如下两步操作:1.创建一个ServerSocket实例并指定本地端口, 用来监听客户端在该端原创 2020-07-08 17:34:51 · 305 阅读 · 0 评论 -
网络编程时的同步、异步、阻塞、非阻塞?
网络编程时的同步、异步、阻塞、非阻塞?同步:函数调用在没得到结果之前,没有调用结果,不返回任何结果。异步:函数调用在没得到结果之前,没有调用结果,返回状态信息。阻塞:函数调用在没得到结果之前,当前线程挂起。得到结果后才返回。非阻塞:函数调用在没得到结果之前,当前线程不会挂起,立即返回结果。...原创 2020-07-08 17:27:40 · 190 阅读 · 0 评论 -
多线程同步的实现方法究竟有哪些
多线程同步的实现方法有哪些当使用多线程访问同一一个资源时非常容易出现线程安全的问题(例如,当多个线程同时对一个数据进行修改是,会导致某些线程对数据的修改丢失)因此,需要蚕蛹同步机制来解决这种问题,java主要提供了3中实现同步机制的方法:( 1 ) synchronize关键字在java语言中,每个对象都有一个对象锁与之相关联,该锁表明对象在任何时候只允许被一个线程所拥有,当一 个线程调用对象的一段synchronize代码时需要先获取这个锁,然后去执行相应的代码,执行结束后,释放锁.1) Sync原创 2020-07-07 17:42:16 · 177 阅读 · 0 评论 -
run( )方法与start( )方法有什么区别
run( )方法与start( )方法有什么区别通常,系统通过调用线程类的sart( )方法来启动一个线程,此时该线程处于就绪状态,而非运行状态,也就是意味着这个线程可以被JVM来调度执行。在调度过程中,JVM通过调用线程类的run ( )方法来完成实际的操作,当run( )方法结束后,此线程就会终止。如果直接调用线程类的run( ) 方法,这会被当做一个普通的函数调用,程序中仍然只有主线程这一个线程,因此也就无法达到多线程的目的。由此可知,只有通过调用线程类的start( )方法才能真正达到多线程的原创 2020-07-07 16:58:27 · 201 阅读 · 0 评论 -
同步和异步到底有什么区别
同步和异步有什么区别在多线程的环境中,经常会碰到数据的共享问题,即当多个线程需要访问同一个资源时 ,它们需要以下某种顺序来确保该资源在某一-时刻只能被一个线程使用,否则,程序的运行结果将会是不可预料的,在这种情况下就必须对数据进行同步,例如多个线程同时对同一数据进行写操作,即当线程A需要使用某个资源时如果这个资源正在被线程B使用,同步机制就会让线程A一直等待下去, 直到线程B结束对该资源的使用后,线程A才能使用这个资源,由此可见,同步机制能够保证资源的安全。要想实现同步操作,必须或得每一个线程的对象锁。原创 2020-07-07 16:45:26 · 244 阅读 · 0 评论 -
简单讲一下自己对TCP/IP协议的理解
TCP/IP协议的理解TCP/IP(Transmission Control Protocol/Internet Protocol的简写)。中文译名为传输控制协议/因特网互联协议;又叫网络通讯协议;这个协议是Internet的基础。简单的说,它的名字是由网络层的IP协议和传输层的TCP协议组成的。但是确切的说,TCP/IP协议是包含TCP协议和IP协议,UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol) 协议和其原创 2020-07-03 17:31:52 · 1602 阅读 · 0 评论 -
TCP/IP在连接时有几次握手?释放时有几次握手?
TCP/IP在连接时有几次握手?释放时有几次握手?TCP三次握手连接的建立过程:建立连接采用的3次握手协议,具体是指:第一次握手是客户端到服务器;服务器接收客户端的请求之后,向客户端端口发送一个消息,相当于说我都准备好了,你连接上我了,这是第二次握手;第三次握手就是客户端向服务器发送的,就是对第二次握手消息的确认,之后,客户端和服务器就开始通讯了。断开连接的四次挥手,具体如下:断开连接的一端发送关闭请求是第一次挥手,另外一端接收到断开连接的请求之后需要对关闭进行确认,发送一个消息这是第二次挥原创 2020-07-03 17:25:07 · 1447 阅读 · 2 评论 -
说说sleep()方法与wait()方法有什么区别?
sleep()方法与wait()方法有什么区别?sleep()是使线程暂时停止执行一段时间的方法,wait()方法也是一种使线程暂停执行的方法,例如,当线程交互时,如果线程对一个同步对象X发出一个()调用请求,那么,该线程会暂停执行,被调用对象进入等待状态,知道被唤醒或等待时间超时。具体而言,sleep()方法与wait()方法的区别主要表现在一下几个方面:(1)原理不同,sleep()方法是Thread类的静态方法,是线程用来控制自身流程的,它会使此线程暂停执行一段时间,而把执行机会让给其他线程,等原创 2020-07-01 14:26:56 · 1001 阅读 · 0 评论 -
今天讲讲数据库的设计范式有哪些?
1.第一范式:第一范式(normal Formate ,1NF)的目标是确保每列的原子性,如果每列(或者每个属性值)都是不可再分的最小数据单元(也是最小的原子单位),则满足第一范式,例如:客人住宿信息表(姓名,客人编号,客房号,客房描述,客房类型,客房状态,床位数,入住人数,价格等)。其中,“地址”列还可以细分为 国家、省、市、区等,甚至更多程序把“姓名”列也才分为“姓”和“名”等。如果业务需求中不需要拆分“地址”列,则该表已经符合第一范式,如果需要将“地址”列拆分,则符合第一范式的表如下:客人住宿信原创 2020-07-01 14:17:01 · 299 阅读 · 0 评论 -
垃圾回收的有点和优势
垃圾回收的有点和优势Java语言中一个显著的特点就是引入了垃圾回收机制,使C++程序员最头痛的内存管理的问题迎刃而解,它使得JAVA程序员在编写的时候不在考虑内存管理。由于有个垃圾回收机制,Java中的对象不在有“”作用域”的概念,只有对象的引用才有““作用域”。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或长时间没有使用的对象都进行清除和回收,程序员不能实时的调用垃圾回收器对某个对象进行垃圾回收,回收机制原创 2020-06-30 15:22:12 · 244 阅读 · 0 评论