Java
文章平均质量分 90
Java知识
小王~同学
这个作者很懒,什么都没留下…
展开
-
搞懂 “ == ”和 equals 的区别!!!
学了这么久的Java,但是把== 和equals 还是经常搞混,今天就把它俩的区别搞搞清楚!!!== :它的作用是判断两个对象的地址是不是相等。即判断两个对象是不是同一个对象。对于基本数据类型,== 比较的是值对于引用数据类型,== 比较的是内存地址equals():它的作用也是判断两个对象是否相等。但它一般会有两种使用情况:情况1:类没有覆写equals()方法。情况2:类覆写了equals()方法。...原创 2021-07-10 16:57:05 · 297 阅读 · 0 评论 -
【Java】——类和对象1
什么是类和对象Java是基于面向对象的,关注的是对象。类就是一个模板,对于一类对象的总称;对象就是一个个的实体,是类的具体化的实例原创 2020-07-27 08:32:48 · 215 阅读 · 0 评论 -
Java练习:冒泡排序问题
冒泡排序思想:每一趟排序都将最大的数放在最后。i: 排序的趟数j:每一趟的比较次数 public class Test { public static void bubbleSort (int[] array) { for(int i=0;i < array.length-1 ;i++) { for(int j=0;j< array.length-1-i ; j++) { if(array[j] &g原创 2020-07-24 15:48:10 · 238 阅读 · 0 评论 -
Java练习:跳台阶问题
青蛙跳台阶一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。分析:使用递归的思想1级台阶:1种跳法;2级台阶:2种跳法:一种是一次跳2级,一种是每次跳2级;3级台阶:3种跳法:有两种选择:A------>一次跳1级,后面2级台阶可以一次跳1级,也可以一次跳2级;B------->一次跳2级,后面再跳1级。 A、B两种方法,总共有3种跳法。n级台阶:一次跳1级,剩余的n-1级进行递归,f(n-1)种跳法;原创 2020-07-23 17:40:59 · 477 阅读 · 0 评论 -
Java语法1:数据类型与运算符
这里写目录标题变量及类型变量的命名数据类型字节类型(byte)整型浮点型字符型布尔类型字符串类型(引用类型)常量字面常量final关键字修饰的常量类型转换及整型提升理解类型转换整型提升运算符变量及类型在Java中的数据类型可以分为两类:基本数据类型和引用数据类型其中8种基本数据类型为:byte,short,int,long,float,double,char,boolean引用数据类型:数组、类、接口变量的命名硬性指标:一个变量名只能包含数字、字母、下划线变量名不能以数字开头变量名对于大原创 2020-07-19 16:12:01 · 193 阅读 · 0 评论 -
ConcurrentHashMap的实现原理(JDK1.7和JDK1.8)
说到ConcurrentHashMap,首先就要聊聊HashMap了HashMapHashMap的源码解析看这里JDK1.8之前HashMap的底层是数组+链表结合在一起使用。HashMap 通过 key 的hashCode 经过哈希函数处理过后得到 hash 值;然后通过 (n - 1) & hash 判断当前元素存放的位置(n 指的是数组的长度);如果当前位置存在元素的话,就判断该元素与要存入的元素的 hash值以及 key是否相同;如果相同的话,直接覆盖;不相同就通过拉.原创 2021-04-11 12:12:50 · 2006 阅读 · 4 评论 -
多进程和多线程
进程:当一个程序进入内存运行时,即变成一个进程。进程时处于运行过程中的程序。进程是操作系统进行资源分配和调度的一个独立单位。线程:线程是操作系统能够进行运算调度的最小单位,它被包含在进程中,是进程中的实际运作单位。线程也被称为轻量级进程。线程在进程中是独立、并发的执行流。进程和线程的区别:一个进程可以有很多线程,每条线程并行执行不同的任务。 同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间。 同一进程内的线程共享本进程的资源如内存、I/O、cpu等,但是进程之间的资.原创 2021-04-08 18:19:41 · 3281 阅读 · 0 评论 -
Java异常
Java异常是Java提供的一种识别及响应错误的一致性的机制。Java异常体制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并能够提高程序的健壮性。原创 2021-03-27 20:15:24 · 990 阅读 · 3 评论 -
面试必备——HTTP协议
HTTP1.1 默认保持长连接(HTTP persistent connection),数据传输完成了保持 TCP 连接不断开(不发 RST 包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。在 HTTP/1.0 中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次 HTTP 操作,就建立一次连接,任务结束就中断连接。原创 2021-03-25 19:34:50 · 512 阅读 · 0 评论 -
个人博客项目梳理
用户登录,查询文章列表,查询文章详情,新增文章、修改文章、修改文章。使用的主要技术:Servlet:使用了模板方法,结合jakson框架,统一响应数据格式的封装;进行统一个异常处理(使用自定义异常)MySqljackson框架做序列化jquery框架ajax提交DBUtil:数据库连接池通过双重校验多的单例模式完成Filter:完成用户会话的统一管理富文本编辑器实现博客文章的展示,图片上传文章相关的后端接口:都是需要登录状态才能够进行操作 返原创 2021-03-25 11:20:44 · 1973 阅读 · 4 评论 -
Java并发编程——Synchronized 关键字真的懂了吗?
Synchronized底层实现原理原创 2021-03-20 19:52:44 · 264 阅读 · 3 评论 -
生产者消费者模型
线程间通信使用的API:wait():让当前线程进入等待状态,同时,wait()也会让当前线程释放它所持有的锁.notify():唤醒当前对象上等待的线程(唤醒单个线程)notifyAll():唤醒所有的线程这三种方法都是Object类的方法;先对对象加锁,才能调用上面的三个方法(调用这三个方法必须是在synchronized代码块中)线程间通信的过程:消费者一直消费生产者一直生产20个消费者线程,消费者每次消费一个10个生产者线程,生产者每次生产三个最大库存为100pub原创 2021-03-19 17:00:44 · 162 阅读 · 0 评论 -
二叉树
树以及二叉树的总结,二叉树的面试题原创 2021-03-19 16:59:52 · 304 阅读 · 0 评论 -
浅析哈希表——hash函数、hash冲突以及HashMap、HashSet
什么是哈希表?哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。顺序查找时间复杂度为O(N),平衡树中为树的高度,即O( log N),搜索的效率取决于搜索过程中元素的比较次数。理想的搜索.原创 2021-03-14 17:15:57 · 530 阅读 · 0 评论 -
Java多线程(2)——详解Thread类
Thread类线程指的是一系列执行的程序。JVM允许应用同一时刻多个线程并行执行,那如何来管理多个线程呢?——Thread类Thread类用于操作线程,是所有涉及到线程操作(如并发)的基础。Thread类是JVM用来管理线程的一个类,每一个线程都有一个唯一的Thread类与之对应。Thread 类的对象就是用来描述一个线程执行流的,JVM 会将这些 Thread 对象组织起来,用于线程调度,线程管理。常用API静态方法实例方法线程状态状态转移...原创 2021-03-14 08:37:44 · 540 阅读 · 0 评论 -
“先把排序搞懂吧!!!“——排序算法总结
七大排序总结原创 2021-03-10 23:59:21 · 296 阅读 · 1 评论 -
Java多线程(1)——线程的创建
进程与线程线程的创建继承Thread类实现Runnable接口实现Callable接口——了解创建线程——变形进程与线程程序是指令和数据的有序集合,本身没有任何运行的含义,是一个静态的概念,进程是执行程序的一次执行过程,它是一个动态的概念。通常在一个进程中可以包含若干个线程,一个进程中至少有一个线程。区别:进程是系统资源分配的最小单位。 线程是CPU调度和执行的最小单位。 同一个进程的各线程之间共享内存和文件资源,可以不通过内核进行直接通信 线程的创建、切换原创 2021-03-07 23:56:51 · 195 阅读 · 1 评论 -
栈和队列总结:一篇搞懂栈和队列的实现和使用
栈概念栈是一种特殊的线性结构,只允许在固定的一段进行插入和删除操作。进行插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的元素遵循先进后出的原则。操作入栈(压栈):栈的插入操作叫做入栈。入数据在栈顶出栈:栈的删除操作。出数据也在栈顶取栈顶元素:取出栈顶的元素。实现利用顺序表实现,使用尾插和尾删的方式实现 利用链表实现,在头尾都可以实现public class MyStack { //利用顺序表实现 private int[] arra.原创 2021-03-06 10:31:03 · 523 阅读 · 1 评论 -
Socket实现简单的TCP通信
socket编程原创 2021-03-05 17:55:16 · 1262 阅读 · 0 评论 -
ArrayList和LinkedList
ArraylistArrayList是List接口的实现类,ArrayList的实现原理上是顺序表。要实现一个ArrayList,首先要实现一个List接口。ArrayList的常用方法有:boolean add(Integer e);void add(int index, Integer e);Integer remove(int index);boolean remove(Integer e);Integer get(int index);Integer set(int inde原创 2021-03-05 14:56:10 · 372 阅读 · 1 评论 -
Java:List常用方法
Listinterface List<E> extends Collection<E>一个有序集合也成为序列,每一个元素被插入的位置有精确的控制。List是一个接口,ArrayList和LinkedList实现了ListList代表的是“线性表”,ArrayList代表的是“顺序表”,LinkedList代表的是“链表”用户可以通过它们的正数索引(在列表中的位置)访问元素,并在列表中搜索元素。List常用方法:方法签名 功能描述 boole.原创 2021-03-03 19:15:57 · 1399 阅读 · 1 评论 -
Java集合类Collections常用方法总结
Collections类public class Collections extends ObjectCollections类是Java中针对集合类的一个工具类,这个类中只包含操作或返回集合的静态方法。Collections类官方文档对集合进行排序sort 反转集合中元素的顺序reverse 对集合中元素进行随机排序shuffle fill(List list,Object o)方法的使用(含义:用对象o替换集合list中的所有元素) copy min max indexO原创 2021-03-01 18:17:12 · 713 阅读 · 3 评论 -
Arrays类常用方法总结
目录Arrays类常用方法数组转列表asListList asList(T...a)数组进行内部排序sortvoid sort(Object[] array)void sort(T[] array, Comparator comparator)void sort(Object[] array, int fromIndex, int toIndex)void sort(T[] array, int fromIndex, int toIndex, Comparator ...原创 2021-02-26 10:24:02 · 1116 阅读 · 3 评论 -
Java集合框架
集合容器概述集合的特点集合的特点主要有如下两点: 对象封装数据,对象多了也需要存储。集合用于存储对象。 对象的个数确定可以使用数组,对象的个数不确定的可以用集合。因为集合是可变长度的。 集合框架Java集合框架,又称为容器,是定义在java.util 包下的一组接口(interfaces)和其实现类(classes)。其主要表现为将多个元素置于一个单元中,用于对这些元素进行快速、便捷的存储、检索、管理,即俗称的增删查改CRUD。集合框架是为表示和操作集合而规定的一种统原创 2021-02-25 12:57:08 · 301 阅读 · 0 评论 -
Java泛型总结
什么是泛型?集合容器类在设计或声明阶段不能确定这个容器到底实际存的是什么类型的对象,在JDK1.5之前只能把元素类型设计为Object,JDK1.5之后使用泛型来解决。所谓泛型 :就是允许在定义类、接口时通过一个表示类中某个属性的类型或者时某个方法的返回值及参数类型。这个类型将在使用时(如:继承或实现这个接口,用这个类型声明变量、创建对象时)确定(即传入实际的类型参数)。把元素的类型设计成一个参数,这个类型参数就叫做泛型。【相当于标签】泛型的本质是参数化类型,即所操作的数据类型被指定为一原创 2021-02-24 18:05:44 · 246 阅读 · 2 评论 -
快速排序
快速排序一、思路:从待排的数组中选出来一个基准数(key) 遍历整个数组,将比key小的放在左边,比key大的放在右边 分别对左右两个小区间用相同的方式进行处理 直到小区间的size=1或0(小区间有序或没有数据)二、拿一个数组进行快速排序:三、代码实现:大思路:public static void quicksort(long[] array) { //一个内部的快速排序 quicksortInternal(array,...原创 2020-10-26 21:45:39 · 277 阅读 · 0 评论 -
堆、优先级队列
优先级队列二叉树的存储方式堆堆的操作向下调整建堆时间复杂度优先级队列优先级队列的操作实现自己的优先级队列二叉树的存储方式一颗完全二叉树是以数组的形式进行保存的,是将完全二叉树以二叉树层序遍历的方式保存到数组中的。完全二叉树的下标之间有一个固定的公式:已知父结点的下标 parentIndex 左孩子的下标为:2*parentIndex +1 右孩子的下标为:2*parentIndex +2已知某个结点的下标为 childIndex 其父结点的下标为:(childInde原创 2020-10-18 23:04:31 · 195 阅读 · 0 评论