
Java
文章平均质量分 94
此生辽阔
这个作者很懒,什么都没留下…
展开
-
黑马IO模式讲解(AIO&BIO&NIO)
课程地址:IO模式讲解(AIO&BIO&NIO)推荐博客:从前慢-BIO、NIO、AIO在Java的软件设计开发中,通信架构是不可避免的,我们在进行不同系统或者不同进程之间的数据交互,或者在高并发下的通信场景下都需要用到网络通信相关的技术,对于一些经验丰富的程序员来说,Java早期的网络通信架构存在一些缺陷,其中最令人恼火的是基于性能低下的同步阻塞式的I/0通信(BIO),随着互联网开发下通信性能的高要求,Java在2002年开始支持了非阻塞式的I/O通信技术(NIO)。大多数读者在学习原创 2021-10-31 22:20:02 · 651 阅读 · 0 评论 -
韩顺平老师-java集合介绍
了解什么情况下用什么集合前面我们保存多个数据使用的是数组,那么数组有不足的地方1)长度开始时必须指定,而且一旦指定,不能更改2)保存的必须为同一类型的元素3)使用数组进行增加或者删除元素的示意代码-比较麻烦数组管理对象比较麻烦,灵活性不够集合:多种数据放到一起的数据结构/数据类型集合的好处1)可以动态保存任意多个对象,使用比较方便2)提供了一系列方便的操作对象的方法:add、remove、set,get等3)使用集合添加,删除新元素的示意代码-简洁了集合框架体系Collection.原创 2021-07-28 19:45:07 · 9175 阅读 · 2 评论 -
韩顺平老师-IO流
视频地址:【韩顺平讲Java】Java IO流专题 -io流 io机制 字符流 字节流 节点流 处理流 等课程资料:课程资料:链接:https://pan.baidu.com/s/1GKg1SZicHhDXCQRNiSOhEA提取码:x10f文章目录文件基础知识创建文件获取文件信息目录操作IO流原理和分类FileInputStreamFileOutputStream文件拷贝文件字符流说明文件基础知识文件,对我们并不陌生,文件是保存数据的地方,比如大家经常使用的word文档,txt文件,excel原创 2021-07-27 22:44:16 · 3296 阅读 · 3 评论 -
java的四种访问修饰符详解
首先我们建立一个包testpackage1建立一个类 person,并设置一些不同访问权限的属性和方法属性/方法访问权限idpublicageprivategetId()protectedgetAge()publicsetId()defaultpackage testpackage1;/** * Created by 此生辽阔 on 2021/7/22 21:19 */public class person { public原创 2021-07-22 22:48:34 · 1100 阅读 · 9 评论 -
为什么重写了equals()还要重写hashcode()?
我所了解的应用场景是当我们写了一个类,如果要使用这个类的对象作为hashmap或者hashset的key值的话,那么我们需要重写这个类的equals方法和hashcode方法,阅读本文需要一些hashmap的源码分析能力自定义类先来自定义一个类userimport java.util.HashSet;/** * Created by 此生辽阔 on 2021/7/20 22:27 */public class testRewriteHashCode { public static v原创 2021-07-21 20:53:28 · 2007 阅读 · 1 评论 -
狂神说-注解
什么是注解注解与反射是所有框架的底层注解不仅能给程序员看还能给计算机看注解;Annotation注释:CommentAnnotation是从JDK5.0开始引入的新技术.Annotation的作用:不是程序本身,可以对程序作出解释.(这一点和注释(comment)没什么区别)可以被其他程序(比如:编译器等)读取.Annotation的格式:注解是以"@注释名"在代码中存在的,还可以添加一些参数值﹐例如:@SuppressWarnings(value=“unchecked”).Annota原创 2021-07-06 12:34:21 · 327 阅读 · 0 评论 -
【韩顺平讲Java】Java反射专题(二)
动态和静态加载反射机制是java实现动态语言的关键,也就是通过反射实现类动态加载。1.静态加载:编译时加载相关的类,如果没有则报错,依赖性太强2.动态加载:运行时加载需要的类,如果运行时不用该类,则不报错,降低了依赖性类加载时机1.当创建对象时(new)2.当子类被加载时,父类也加载(是静态加载,因为有继承关系)3.调用类中的静态成员时(是静态加载)4.通过反射(动态加载)静态加载:编译的时候就会加载这个类(检查类是否正确、依赖关系、父类是否ok等等),比如下面这段代码用户可能输入1,原创 2021-07-05 17:47:28 · 1279 阅读 · 0 评论 -
【韩顺平讲Java】Java反射专题(一)
反射是框架的底层基石,对阅读框架底层源码有帮助先提出一个需求:1.根据配置文件 re.properties指定信息,创建对象并调用方法classfullpath=com.hspedu.Catmethod=hi●老韩思考:使用现有技术,你能做的吗?2.这样的需求在学习框架时特别多,即通过外部文件配置,在不修改源码情况下,来控制程序,也符合设计模式的ocp原则(开闭原则,即不修改源码,来扩展功能)3.快速入门com.hspedu.reflection.questionReflectionQue原创 2021-07-04 19:40:35 · 1499 阅读 · 2 评论 -
Java基础面试题4:Java异常体系
异常是什么?异常就是在程序执行期间发生的打断指令正常执行流程的一个不期望出现的事件。在Java中,所有的错误和异常都继承自Throwable类。当一个方法内发生错误时,方法会创建一个对象,并把它传递给运行时系统。这个对象就被就做异常对象。异常对象包含着错误的详细信息,包括错误的类型和该错误发生时系统的状态。创建一个异常对象并把它传递给运行时系统就叫做抛出了一个异常(throwing an exception)。异常的处理当我们的应用创建出一个异常对象时,我们有两种方法来处理。要么我们在方法内处原创 2021-04-07 10:29:39 · 394 阅读 · 0 评论 -
狂神说:网络编程
课程链接【狂神说Java】网络编程实战讲解推荐阅读网络编程—狂神说java学习笔记狂神说Java:网络编程原创 2021-04-05 21:58:58 · 721 阅读 · 2 评论 -
源码解读-java中String类的substring方法
首先,定义一个字符串,调用substring方法String s="dsajhfkjhfsa";String s1=s.substring(0,2);Ctrl +鼠标左键进入substring首先映入眼帘的是注释 /** * Returns a string that is a substring of this string. The * substring begins at the specified {@code beginIndex} and * exte原创 2021-03-26 20:13:49 · 2284 阅读 · 0 评论 -
java抽象类、接口、内部类专项
1原创 2021-03-08 15:09:16 · 415 阅读 · 0 评论 -
Java基础面试题7:重载和重写的区别
面试你就这样答重载发生在一个类里面,方法名相同,参数列表不同(参数类型,个数、顺序不同),方法的返回值和修饰符可以不同,发生在编译时(就像下图,两个方法只有返回类型不一样,在编译时就会报错)重写发生在父类与子类之间,方法名相同,参数列表相同,返回值的范围小于等于父类,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类,如果父类方法访问修饰符为private则子类不能重写该方法(因为都无法继承这个方法)重载重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回原创 2021-03-07 21:44:24 · 3470 阅读 · 1 评论 -
HashMap底层原理、hashMap与hashTable的区别、ConcurrentHashMap
声明:这是我参考多篇文章,并加入思考整理而成的文章,大都是借鉴大佬的文章,文中的图也都不是我画的,但由于参考的文章较多,整理也比较辛苦,故标为原创,文末已给出参考文章HashMap的底层实现原理HashTable用绿色表示是因为现在不常用了,但面试也可能会考TreeMap是基于树的实现HashMap,HashTable,ConcurrentHashMap是基于hash表的实现HashTable和HashMap在代码实现上,基本上是一样的,和Vector与Arraylist的区别大体上差不多,一个原创 2021-03-07 19:09:29 · 658 阅读 · 2 评论 -
堆和栈的区别、Java中成员变量、局部变量、全局变量、静态变量存在位置及初始化
参考文献堆和栈的区别堆和栈的概念和区别什么是堆栈,堆和栈到底是不是一个概念剑指Offer——简述堆和栈的区别Java中成员变量、局部变量、全局变量、静态变量存在位置及初始化因为线程是共享进程的资源的,所以栈是私有的,堆是公有的。(1)程序内存布局场景下,堆与栈表示两种内存管理方式;(2)数据结构场景下,堆与栈表示两种常用的数据结构。Java中堆和栈有什么不同?为什么把这个问题归类在多线程和并发面试题里?因为栈是一块和线程紧密相关的内存区域。每个线程都有自己的栈内存,用于存储本地变量,方法原创 2021-03-07 15:41:31 · 3134 阅读 · 0 评论 -
java多线程专项(进程和线程的区别)
实现多线程的方法:1.继承Thread类2.实现Runnable接口3.实现Callable接口实现多线程的方法:1.继承Thread类2.实现Runnable接口3.实现Callable接口,然后使用 FutureTask包装,因为Callable接口没有实现Runnable接口不能做为Thread的target,而FutureTask是在Java程序中可以取消的异步运算,有可以开始,取消运算,查询运算是否结束,获得查询结果的功能,特别注意的是,如果查询结果时,运算还没完成则会阻塞线程。4原创 2021-03-07 12:05:42 · 665 阅读 · 0 评论 -
怎么计算把数组转成完全二叉树之后,二叉树有几层
首先解释一下完全二叉树的概念如果该二叉树的所有叶子节点都在最后一层,并且结点总数= 2^n -1 , n 为层数,则我们称为满二叉树。如果该二叉树的所有叶子节点都在最后一层或者倒数第二层,而且最后一层的叶子节点在左边连续,倒数第二层的叶子节点在右边连续,我们称为完全二叉树。完全二叉树处理最后一层,其余层都是满的,如果有n层,那么前n-1层的元素个数总数为2的(n-1)次方减1于是可以用下面的函数计算把数组转成完全二叉树之后,二叉树有几层 void heapsortfunc(int arr[])原创 2020-12-29 20:00:58 · 993 阅读 · 0 评论 -
牛客刷题笔记--(java基础401-478)--完结撒花
401 下面这条语句一共创建了多少个对象:String s=“welcome”+“to”+360; A1234String test=“javaandpython”;String str1=“java”;String str2=“and”;String str3=“python”;System. out. println(test==“java”+“and”+“python”):System. out. println(test ==str1 + str2 + str3);对于原创 2020-12-27 12:59:55 · 4120 阅读 · 0 评论 -
java object默认的9个基本方法
java object默认的基本方法中没有copy(),含有如下方法:getClass(), hashCode(), equals(), clone(), toString(), notify(), notifyAll(), wait(), finalize()getClass()返回此 Object 的运行时类hashCode()本质 上是 返回该对象的哈希码值equals()equals(Object obj) 指示某个其他对象是否与此对象“相等”toStrin原创 2020-12-25 13:24:49 · 1062 阅读 · 0 评论 -
Java中基础类型以及对应包装类的初始化值
当变量作为作为类成员使用时,java才确保给定其初始值,防止程序运行时错误基本数据类型的包装类都属于引用类型 所以包装类的初始化值都为nullpublic class baozhuangClass { Integer a; Byte b; Short c; Long d; Float e; Double f; Boolean g; Character h; @Override public String toString(原创 2020-12-25 09:39:09 · 933 阅读 · 0 评论 -
HashMap、HashTable、CurrentHashMap
转载于牛客大佬 https://www.nowcoder.com/profile/598309941HashTable和HashMap的区别详解先说HashMap和HashTable的区别最开始的时候 只有HashMap和HashTable,他们最重要的区别就是HashMap不是线程安全的,而HashTable是线程安全的;他们的具体区别如下:①:他们的继承是不同的,HashMap继承的是 AbstractMap,而HashTable继承的是Dictionary 类;②:他们存储的键值对有些区原创 2020-12-23 15:19:33 · 318 阅读 · 0 评论 -
Java基础面试题6:String、StringBuffer、StringBuilder的区别及应用场景
转载于牛客大佬https://www.nowcoder.com/profile/6316247** String与StringBuffer的区别。AB**String是不可变的对象,StringBuffer是可以再编辑的字符串是常量,StringBuffer是变量String是可变的对象,StringBuffer是不可以再编辑的以上说法都不正确java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题原创 2020-12-23 15:08:23 · 376 阅读 · 0 评论 -
牛客刷题笔记--(java基础301-400)
301 不考虑反射机制,一个子类显式调用父类的构造器必须用super关键字。( √ )子类显示调用父类中的构造方法必须使用super关键字;如果子类没有显示调用父类中的构造方法,则系统默认会调用父类中的无参构造方法;若此时父类中没有定义无参构造方法则会报错。java中的super关键词super用于代表子类的直接父类的特征super可以访问:父类的成员变量,成员方法,构造方法使用super关键词的情况:在子类中,存在与父类相同的属性和方法,由于访问子类中属性和方法的优先级高于父类,可以通过su原创 2020-12-21 12:42:31 · 1627 阅读 · 0 评论 -
牛客刷题笔记--(java基础201-300)
201 哪个类可用于处理 Unicode? (A)InputStreamReaderBufferedReaderWriterPipedInputStreamInputStreamReader可以指定字符编码格式A、 InputStreanReader的构造函数:InputStreamReader(InputStream in)创建一个使用默认字符集的 InputStreamReader。InputStreamReader(InputStream in, Charset cs)创建原创 2020-12-15 09:31:14 · 1045 阅读 · 0 评论 -
牛客刷题笔记--(java基础151-200)
151 以下哪种JAVA的变量表达式使得变量a和变量b具有相同的内存引用地址( AB )String a = "hello"; String b = "hello";Integer a; Integer b = a;int a = 1; Integer b = new Integer(1);int a = 1; Integer b = 1;内存引用地址,是指栈中存放的地址,来指向堆中的某个位置。int 是基本类型,数据直接存放在栈中,不存在内存引用地址的说法A对 指向常量池里的"h原创 2020-12-02 16:58:15 · 2833 阅读 · 0 评论 -
牛客刷题笔记--(java基础101-150)
101 ArrayList和LinkList的描述,下面说法错误的是?(D)LinkedeList和ArrayList都实现了List接口ArrayList是可改变大小的数组,而LinkedList是双向链接串列LinkedList不支持高效的随机元素访问在LinkedList的中间插入或删除一个元素意味着这个列表中剩余的元素都会被移动;而在ArrayList的中间插入或删除一个元素的开销是固定的解释:ArrayList是基于数组的,所以,具备随机访问特点,但LinkedList就不一样了,虽然原创 2020-11-30 12:16:42 · 2385 阅读 · 0 评论 -
java修饰符专项
分类Java语言提供了很多修饰符,大概分为两类:访问权限修饰符非访问权限修饰符访问权限修饰符public:共有访问。对所有的类都可见。protected:保护型访问。对同一个包可见,对不同的包的子类可见。default:默认访问权限。只对同一个包可见,注意对不同的包的子类不可见。private:私有访问。只对同一个类可见,其余都不见。 非访问权限修饰符static 修饰符,用来创建类方法和类变量。final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承原创 2020-11-29 09:55:10 · 217 阅读 · 0 评论 -
牛客刷题笔记--(java基础51-100)
51 以下代码返回值是什么?public boolean returnTest(){ try { return true; } catch (Exception e) { } finally { return false; }}答案:false解释: ==一旦在finally块中使用了return或throw语句,将会导致try块,catch块中的return,throw语句失效 ==原创 2020-11-28 17:21:55 · 4383 阅读 · 0 评论 -
java与C++ 的i=i++的不同以及定义类的不同
在java中,count = count++ 原理是 temp = count; count = count+1 ; count = temp; 因此count始终是0 这仅限于java 与c++是不一样的结论,java的count = count++ 不会改变count的值,C++的count = count++ 会改变count的值,java的count = count+1 会改变count的值,C++的count = count+1 会改变count的值//java count = cou原创 2020-11-28 14:10:21 · 256 阅读 · 0 评论 -
牛客刷题笔记--(java基础1-50)
1 关于对象成员占用内存的说法哪个正确?( )同一个类的对象共用同一段内存同一个类的对象使用不同的内存段,但静态成员共享相同的内存空间对象的方法不占用内存以上都不对当你创建一个新的实例对象时,它会得到一块新的内存空间。但是类中的静态成员变量是所有对象共有的,也就是在一片属于类的存储空间中,被所有对象共有。每一个对象在堆中都有各自的内存区域,静态变量是所有对象共有的。静态成员属于类成员,在方法区分配内存,而不是堆。静态变量属于类本身,成员变量属于类的某个实例2 在类Tester中定义方法如下,原创 2020-11-27 10:59:05 · 3973 阅读 · 0 评论 -
布隆过滤器
设计一个简单的布隆过滤器(Bloom Filter)输入描述:初始化 n个字符串【空格隔开】添加到过滤器中,输入需要判断是否存在在过滤器中的字符串a输出描述:存在输出true 否则输出false实例初始字符串abc输入需要判断的字符串atruedfalse代码import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Sc原创 2020-09-26 20:42:53 · 174 阅读 · 0 评论 -
ArrayList 和 LinkedList 的区别第二弹
java集合源码分析(推荐给看源码很吃力的朋友们): https://www.cnblogs.com/skywang12345/p/3323085.html#topArrayList,LinkedList,Vector这三个类都实现了java.util.List接口,但它们有各自不同的特性,主要如下:一、同步性ArrayList,LinkedList是不同步的,而Vector是同步的。【这里的不同步指的是。当使用线程和web的时候,对这个集合对象进行操作,那么不同的线程,和不同的web客户端所获取的这转载 2020-09-26 11:06:39 · 205 阅读 · 0 评论 -
ArrayList 和 LinkedList 的区别
声明:文章转载自微信公众号 “沉默王二”ArrayList 是基于数组实现的LinkedList 是基于双向链表实现的“ArrayList 在新增和删除元素时,因为涉及到数组复制,所以效率比 LinkedList 低,而在遍历的时候,ArrayList 的效率要高于 LinkedList。ArrayList 是如何实现的ArrayList 实现了 List 接口,继承了 AbstractList 抽象类,底层是基于数组实现的,并且实现了动态扩容。public class ArrayList&l转载 2020-09-26 10:17:57 · 893 阅读 · 0 评论 -
写java程序遇到的问题
java将一个数组存到txt文件中,然后读取java中获取二维数组的行数和列数原创 2020-08-03 21:46:34 · 221 阅读 · 0 评论 -
idea通过Maven创建web项目并配置servlet和tomcat
创建项目如果创建出来的工程没有src目录,在这里加上 -DarchetypeCatalog=internal 之后重新创建工程(moule)显然,按照 maven archetype 原型创建的 maven web 工程缺少 maven 项目的完整结构:src-main-java / resources,src-test-java/resources,所以需要我们手动添加文件目录。创建缺省文件夹把文件夹标识为源码文件夹File -> Project Structure, 选择M原创 2020-07-24 18:47:19 · 3378 阅读 · 0 评论 -
lombok包不存在、jar包的下载方法
使用lombok的@Data和@RequiredArgsConstructor注解时报错,提示lombok包不存在试了加依赖和在IDEA插件里面下载安装都不行,于是自己在工程下建了一个lib包,然后下载了一个lombok-1.16.10的jar包导入工程不报错了。jar包下载方法一般选择下载量最高的...原创 2020-07-04 16:43:54 · 1562 阅读 · 0 评论 -
Spring注解的一些知识点
如果 Web 应用程序采用了经典的三层分层结构的话,最好在持久层、业务层和控制层分别采用 @Repository、@Service 和 @Controller 对分层中的类进行注释,而用 @Component 对那些比较中立的类进行注释。在一个稍大的项目中,通常会有上百个组件,如果这些组件采用xml的bean定义来配置,显然会增加配置文件的体积,查找以及维护起来也不太方便。 Spring2.5为我们引入了组件自动扫描机制,他可以在类路径底下寻找标注了@Component,@Service,@Control原创 2020-06-28 12:11:54 · 124 阅读 · 0 评论 -
新建Spring工程,使用JdbcTemplate实现对数据库的查询批量添加修改删除(二)
首先请参阅我的关于JdbcTemplate操作数据库的第一篇文章新建Spring工程,用Spring的JdbcTemplate实现对数据库的增删改(小白都能看懂的手把手教程)①查询数据库表中的记录条数(即一个表目前有多少条数据)PersonService.java//查询表中的记录条数 public void count(){ personDao.count(); }PersonDaoImpl.java @Override public void co原创 2020-06-28 11:28:50 · 433 阅读 · 0 评论 -
Java操作mysql常用命令
添加: String sql = "insert into t_book values(?,?,?)";删除: String sql="delete from t_book where user_id=? ";修改: String sql="update t_book set username=?,userstatus=?where user_id=?";返回表中的记录条数: String sql="select count(*) from t_book";查询返回一行:String sql="s原创 2020-06-27 18:39:09 · 434 阅读 · 0 评论 -
新建Spring工程,用Spring的JdbcTemplate实现对数据库的增删改(小白都能看懂的手把手教程)
一、新建一个java工程(IDEA)File->new->Project->Java原创 2020-06-27 13:35:29 · 633 阅读 · 3 评论