
Java
文章平均质量分 59
屎山搬运工
这个作者很懒,什么都没留下…
展开
-
WEB开发的分页逻辑(具有排序功能)
在WEB开发过程中,分页逻辑是很常见的,因此在一个项目中开发一个功能齐全的泛型分页工具类,会使项目中所有分页逻辑都更加高效。普遍的分页逻辑是将当前页和页面的数据条数作为入参,返回对应的部分数据。原创 2022-08-21 18:11:18 · 471 阅读 · 0 评论 -
java线程池的创建
newCachedThreadPoolpublic static ExecutorService newCachedThreadPool() { return new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue<原创 2021-04-01 15:53:46 · 164 阅读 · 2 评论 -
spring mvc报错:No more pattern data allowed after {*...} or ** pattern element
具体报错:***************************APPLICATION FAILED TO START***************************Description:Invalid mapping pattern detected: /**/*.css^No more pattern data allowed after {*...} or ** pattern elementAction:Fix this pattern in your applic原创 2021-02-23 11:46:34 · 11713 阅读 · 2 评论 -
Java面试 每日一题:死锁
产生死锁的原因1. 竞争资源系统中的资源可以分为两类:可剥夺资源:是指某进程在获得这类资源后,该资源可以再被其他进程或系统剥夺,CPU和主存均属于可剥夺性资源;不可剥夺资源:当系统把这类资源分配给某进程后,再不能强行收回,只能在进程用完后自行释放,如磁带机、打印机等。产生死锁中的竞争资源之一指的是竞争不可剥夺资源(例如:系统中只有一台打印机,可供进程P1使用,假定P1已占用了打印机,若P2继续要求打印机打印将阻塞)产生死锁中的竞争资源另外一种资源指的是竞争临时资源(临时资源包括硬件中断、原创 2021-02-01 23:16:35 · 421 阅读 · 0 评论 -
Java面试 每日一题:进程、线程、协程
进程进程是资源分配(CPU时间片、内存等资源)的基本单位。进程控制块 (Process Control Block, PCB) 描述进程的基本信息和运行状态,所谓的创建进程和撤销进程,都是指对 PCB 的操作。线程有时被称为轻量级进程(Lightweight Process,LWP)线程是独立调度(CPU调度)的基本单位。一个进程中可以有多个线程,它们共享进程资源。QQ 和浏览器是两个进程,浏览器进程里面有很多线程,例如 HTTP 请求线程、事件响应线程、渲染线程等等,线程的并发执行使得在浏览原创 2021-01-30 21:39:10 · 486 阅读 · 0 评论 -
Java面试 每日一题:生产者消费者模型实现
生产者消费者问题是研究多线程程序时绕不开的经典问题之一。问题描述:使用一个缓冲区来保存物品,只有缓冲区没有满,生产者才可以放入物品;只有缓冲区不为空,消费者才可以拿走物品。因为缓冲区属于临界资源,因此需要使用一个互斥量 mutex 来控制对缓冲区的互斥访问。为了同步生产者和消费者的行为,需要记录缓冲区中物品的数量。数量可以使用信号量来进行统计,这里需要使用两个信号量:empty 记录空缓冲区的数量,full 记录满缓冲区的数量。其中,empty 信号量是在生产者进程中使用,当 empty 不为 0 时原创 2021-01-28 22:25:21 · 470 阅读 · 1 评论 -
Java面试 每日一题:final关键字
1. 数据声明数据为常量,可以是编译时常量,也可以是在运行时被初始化后不能被改变的常量。对于基本类型,final 使数值不变;对于引用类型,final 使引用不变,也就不能引用其它对象,但是被引用的对象本身是可以修改的。final int x = 1;// x = 2; // cannot assign value to final variable 'x'final A y = new A();y.a = 1;2. 方法声明方法不能被子类重写。private 方法隐式地被指定为原创 2021-01-27 21:18:54 · 233 阅读 · 0 评论 -
Java面试 每日一题:wait()和sleep()的区别
sleep()方法是线程类(Thread)的静态方法,让调用线程进入睡眠状态,让出执行机会给其他线程,等到休眠时间结束后,线程进入就绪状态和其他线程一起竞争cpu的执行时间。因为sleep() 是static静态的方法,他不能改变对象的机锁,当一个synchronized块中调用了sleep() 方法,线程虽然进入休眠,但是对象的机锁没有被释放,其他线程依然无法访问这个对象,导致进程进入TIMED-WATING状态。wait()wait()是Object类的方法,当一个线程执行到wait方法时,它就原创 2021-01-26 21:54:39 · 213 阅读 · 0 评论 -
springboot集成hikari连接池报错:( Driver does not support get/set network timeout for connections.)
报错大致是这样的:HikariPool-1 - Driver does not support get/set network timeout for connections. (Method com/mysql/jdbc/JDBC4Connection.getNetworkTimeout()I is abstract)如图:问题:驱动不支持设置jdbc 1.4 的这个超时原因:用的mysql驱动版本的问题用mysql5.1.6版本会出现上述错误<dependency>原创 2021-01-25 21:30:06 · 15023 阅读 · 0 评论 -
Cannot load driver class: com.mysql.cj.jdbc.Driver
如果你的mysql版本在6之上,仍然报这个错,那么这篇文章对你没有用,不要在这浪费时间啦!但是如果你的mysql在6之下,那么直接上解决办法:将“.cj”去掉即可。因为:com.mysql.jdbc.Driver是mysql-connector-java 5中的,而com.mysql.cj.jdbc.Driver是mysql-connector-java 6中的。...原创 2021-01-24 22:50:34 · 833 阅读 · 0 评论 -
Java面试 每日一题:hashCode、equals、==
==它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象。(基本数据类型 "= =’'比较的是值,引用数据类型==比较的是内存地址)基本类型有:byte(1字节):Byteshort(2字节):Shortint(4字节):Integerlong(8字节):Longfloat(4字节):Floatdouble(8字节):Doublechar(2字节):Characterboolean(未知):BooleanInteger a=new Integer(5);原创 2021-01-23 23:03:16 · 153 阅读 · 0 评论 -
Java面试 每日一题:HashMap
HashMap的数据插入(put)和获取(get)put方法根据Key计算出hashcode。根据计算出的hashcode定位出所在桶。如果桶为空,则说明当前位置没有数据存入,则新增一个Entry对象写入当前位置。如果桶不空,则遍历桶下面的链表,比较(equals)Key值是否相等,如果相等则进行覆盖,并返回原来的值;如果链表没有相等的Key,则新增节点插入链表。get方法根据key计算出hashcode,然后定位到具体的桶;遍历桶下面的链表,直到Key相等的时候就返回值;如果桶为空原创 2021-01-22 22:21:11 · 191 阅读 · 0 评论 -
Java面试 每日一题:接口和抽象类的区别
接口的方法默认是 public,所有方法在接口中不能有实现(Java 8 开始接口方法可以有默认实现),抽象类可以有非抽象的方法接口中的实例变量默认是 final 类型的,而抽象类中则不一定一个类可以实现多个接口,但最多只能实现一个抽象类一个类实现接口的话要实现接口的所有方法,而抽象类不一定接口不能用 new 实例化,但可以声明,但是必须引用一个实现该接口的对象 从设计层面来说,抽象是对类的抽象,是一种模板设计,接口是行为的抽象,是一种行为的规范。...原创 2021-01-21 20:38:58 · 124 阅读 · 0 评论 -
Java面试 每日一题:论悲观锁和乐观锁
何谓悲观锁与乐观锁乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁( 共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Ja原创 2021-01-20 19:51:36 · 302 阅读 · 0 评论 -
Java面试 每日一题:一次HTTPS请求的完整过程
接上回书说道:一次HTTP请求的完整过程HTTPSHTTPS是一种应用层协议,本质上来说它是HTTP协议的一种变种。HTTPS比HTTP协议安全,因为HTTP是明文传输,而HTTPS是加密传输,加密过程中使用了三种加密手段,分别是证书,对称加密和非对称加密。HTTPS相比于HTTP多了一层SSL/TSL,其构造如下:HTTPS综合使用了非对称加密的高安全性和对称加密的快速性。HTTPS协议就是基于SSL的HTTP协议HTTPS使⽤用与HTTP不不同的端⼝口(HTTPS80 , HTTPSS443原创 2021-01-19 19:58:04 · 779 阅读 · 0 评论 -
java面试 每日一题:一次HTTP请求的完整过程
例子:访问www.baidu.com的完整过程地址解析通过DNS解析服务器(www.baidu.com)域名从而获得主机的IP地址① Chrome浏览器 会首先搜索浏览器自身的DNS缓存(缓存时间比较短,大概只有1分钟,且只能容纳1000条缓存),看自身的缓存中是否有www.linux178.com 对应的条目,而且没有过期,如果有且没有过期则解析到此结束。注:我们怎么查看Chrome自身的缓存?可以使用 chrome://net-internals/#dns 来进行查看② 如果浏览器自身的缓存里原创 2021-01-18 23:02:49 · 349 阅读 · 1 评论 -
String, StringBuffer and StringBuilder的区别
1. 可变性String 不可变StringBuffer 和 StringBuilder 可变2. 线程安全String 不可变,因此是线程安全的StringBuilder 不是线程安全的StringBuffer 是线程安全的,内部使用 synchronized 进行同步String Pool字符串常量池(String Pool)保存着所有字符串字面量(literal strings),这些字面量在编译时期就确定。不仅如此,还可以使用 String 的 intern() 方法在运行过程将字符串添加到 Str原创 2020-12-07 22:13:21 · 126 阅读 · 0 评论 -
包装器类型的equals和==的区别
Integer a=new Integer(5);Integer b=new Integer(5);int c=5;int d=5;System.out.println(c==d); //trueSystem.out.println(a==b); //false== 比较的是两个对象的地址。它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象:基本数据类型==比较的是值引用数据类型==比较的是内存地址基本类型有:byte(1字节):Byteshor原创 2020-12-06 10:56:22 · 332 阅读 · 0 评论 -
线程创建的四个方式
Thread:继承Thread类实现多线程run()为线程类的核心方法,相当于主线程的main方法,是每个线程的入口a.一个线程调用 两次start()方法将会抛出线程状态异常,也就是的start()只可以被调用一次b.native生明的方法只有方法名,没有方法体。是本地方法,不是抽象方法,而是调用c语言方法 registerNative()方法包含了所有与线程相关的操作系统方法c. run()方法是由jvm创建完本地操作系统级线程后回调的方法,不可以手动调用(否则就是普通方法)publ原创 2020-12-06 09:22:11 · 127 阅读 · 0 评论 -
二进制的位运算操作(LeetCode的java实现)
直接上题:LeetCode190题:颠倒二进制位题目描述:颠倒给定的 32 位无符号整数的二进制位。示例 1:输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596, 因此返回 964176192,其二进制表示形式为 00111001011110000010100101000原创 2020-07-07 20:29:09 · 547 阅读 · 0 评论 -
java中锁的分类总结
Java 锁分类Java 中的锁有很多,可以按照不同的功能、种类进行分类,下面是我对 Java 中一些常用锁的分类,包括一些基本的概述从线程是否需要对资源加锁可以分为 悲观锁 和 乐观锁从资源已被锁定,线程是否阻塞可以分为 自旋锁从多个线程并发访问资源,也就是 Synchronized 可以分为 无锁、偏向锁、 轻量级锁 和 重量级锁从锁的公平性进行区分,可以分为公平锁 和 非公平锁从根据锁是...转载 2019-12-19 15:03:47 · 1089 阅读 · 0 评论 -
Map.getOrDefault()方法
在JDK8之后,对map新增了getOrDefault()方法格式:Map.getOrDefault(key,默认值);Map中会存储一一对应的key和value。如果 在Map中存在key,则返回key所对应的的value。如果 在Map中不存在key,则返回默认值。public class Demo { public static void main(String[] ar...原创 2019-11-06 20:11:00 · 2007 阅读 · 0 评论 -
Java中常见的几种字符串操作
Java对字符串的操作与其他的编程语言有很大的区别。在面试笔试的算法编程题中,也经常会遇到字符串的处理,这里总结了几种常见的字符串操作。(总结的不全,会实时更新)操作一:字符串->字符数组这种操作适用于给定了字符串,但实现过程需要对字符串的某些字符进行修改。s = "abc";char[] str = s.toCharArray();操作二:字符串->访问某字符这种操作和...原创 2019-10-26 14:11:54 · 381 阅读 · 0 评论 -
Java学习之接口2(interface)
接口中的方法实现上一篇中简单介绍了接口的概念以及定义格式。Java学习之接口1(interface)接下来,将介绍各种方法的实现过程。根据上一篇的介绍:类与接口的关系为实现关系,即类实现接口,该类可以称为接口的实现类,也可以称为接口的子类。实现的动作类似于继承抽象父类的方法,格式相仿,只是关键字不同,实现使用 implements 关键字。格式如下:class 类名 implement...原创 2019-10-14 08:58:39 · 737 阅读 · 0 评论 -
Java学习之接口(interface)
接口的概念接口,从字面上来理解,是一种公共的规范标准。在Java中,同样地,接口就是多个类的公共的规范标准。从性质上讲,接口是一种数据类型,但是是一种引用数据类型,是一种装载方法的集合。它装载方法的形式类似于类,只是类中封装的是成员变量、成员方法以及构造方法。而接口中主要封装的是:(1)常量 (2)抽象方法 (3)静态方法 (4)默认方法 (5)私有方法。总结:引用数据类型包括:数...原创 2019-10-11 16:13:22 · 234 阅读 · 0 评论 -
Java学习之抽象(abstract)
为什么要用抽象类在之前几篇中讲解了继承的相关知识。而在继承过程中,子类已经继承了父类的成员方法,但是子类又想访问自己的同名成员方法,所以引入了重写(override)的概念。如果一个父类中的成员方法,被它的子类们重写,子类各自的实现都不尽相同。那么父类的成员方法实现的方法体就没有实际意义了,而只有声明还有意义。我们就可以把没有方法主体的方法称为抽象方法。而包含抽象方法的类就是抽象类。总而...原创 2019-10-07 14:42:28 · 197 阅读 · 0 评论 -
Java学习之面向对象三大特征(继承性 3)
super的用法在上一篇中介绍了继承关系中子类的方法重写的实现过程(Java学习之面向对象三大特征(继承性 2))在方法重写过程中,子类可以实现属于自己的、与父类同名的方法,而覆盖了从父类那里继承来的方法。但是,如果子类覆盖重写了父类的方法后,子类对象又想访问父类的方法了,怎么办?这个问题就是本篇的重点——super的用法。1. 在子类的成员方法中,super可以访问父类的成员变量。下...原创 2019-10-05 21:19:27 · 150 阅读 · 0 评论 -
Java学习之面向对象三大特征(继承性 2)
父类与子类中的成员方法重名问题上一篇(Java学习之面向对象三大特征(继承性 1))中详细讲解了父类与子类的继承关系和简单的调用方法,并总结出了父类与子类有重名的成员变量的访问方法。Java学习之面向对象三大特征(继承性 1)在本节中,将详细讲解成员变量重名的问题。根据上一篇的讲解,若创建的是子类对象,用子类对象来调用方法,因为子类继承父类的所有内容(包括成员方法和成员变量),所以运行的结果...原创 2019-10-05 12:19:59 · 137 阅读 · 0 评论 -
Java学习之面向对象三大特征(继承性 1)
面向对象的三大特征:封装性、继承性、多态性继承性是多态的前提下,没有继承就没有多态。继承性主要的作用(可以解决的问题):可以提取出多个类中的共同的特性,从而减少代码量,提高开发效率。例如:老师类和学生类中,都有学习、吃饭、睡觉等行为,所以可以将这些共有的特性提取出来,而这些行为都是人所必需的的,所以可以将这些行为放入一个“人”的类中,让老师和学生都来继承人类的这些行为。...原创 2019-10-02 11:05:21 · 133 阅读 · 0 评论