自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 解压缩zip,tar,rar,7z,提取tif,pdf中的图片

3.工厂类,根据传入的文件后缀,选择对应的压缩方法。2.解压缩类实现Decompress接口。4.FileUtil工具类写解压缩方法。

2023-11-14 19:07:57 330

原创 mvn -Dcuts报错

mvn -Dcuts 报错

2023-10-12 17:51:36 64

原创 canvas实现在图片上画框

【代码】canvas实现在图片上画框。

2023-09-07 14:15:55 888

原创 mysql从服务器

构建mysql从库

2022-07-10 17:21:54 326 1

原创 生产者,消费者实现

这种模式满足三点要求:(1)生产者生产数据到缓冲区中,消费者从缓冲区中取数据。(2)缓冲区满时,生产者线程阻塞,进入等待状态。这期间消费者一旦取走数据,队列未满,就会唤醒阻塞的生产者。(3)缓冲区空时,消费者线程阻塞,进入等待状态。这期间生产者一旦往队列中放入数据,就会唤醒阻塞的消费者。阻塞队列public class MyBlockingQueue { private int maxSize; private LinkedList<Integer> queue;

2022-04-09 15:39:27 95

原创 java中的强引用,软引用,弱引用,虚引用

java对象的引用类型其实和jvm设计的内存回收机制有关系,合理的使用引用可以保证对象的垃圾回收,避免OOM异常。定义:强引用,类似Object obj = new Object()这类的引用,只要强引用还存在,垃圾收集器永远不会回收被引用的对象。 软引用:用来描述还有用但并非必须的对象。对应软引用关联着的对象,在系统将要发生内存溢出异常之前,将会把这些对象列进回收范围进行第二次回收。如果这次回收还没有足够的内存才会抛出内存溢出异常 弱引用:用来描述一些非必须对象,被弱引用关联的对象只能生存到下

2022-03-30 10:38:20 94

原创 ThreadLocal

1.ThreadLocal是什么?ThreadLcoal为解决多线程程序的并发问题提供了一种新的思路。ThreadLocal并不是一个Thread,而是Thread的局部变量,在JDK1.50中ThreadLocal已经支持泛型,该类的类名变为ThreadLocal<T>。API方法也进行了相应调整,新版本的API方法分别是void set(T value), T get(), initialValue()。1.1ThreadLocal的作用它通过为每个线程提供一个独立的变量副本解决

2022-03-28 21:21:12 65

原创 cookie和session

1.1cookie机制HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。即用户A购买了一件商品放入购物车内,当再次购买商品时服务器已经无法判断该购买行为是属于用户A的会话还是用户B的会话了。要跟踪该会话,必须引入一种机制。  Cookie就是这样的一种机制。它可以弥补HTTP协议无状态的不足。在Session出现之前,基本上所有的网站都采用Cookie来跟踪会话。1.1.1什么是cookie..

2022-03-26 22:48:01 1221

原创 redis知识点

1.数据类型String,List,Set,hash,sorted set2.redis三种模式1)主从模式reids虽然读写速度都很快,但也会产生读压力特别大的情况。为了分担读压力,redis支持主从复制。·从服务器向主服务器发送同步请求·主服务器收到请求,开始执行bgsave命令生成rdb快照,并在缓冲区中记录此后执行的所有写命令·主服务器bgsave执行完后,向所有从服务器发送快照文件,发送期间会继续记录执行的写命令·从服务器收到快照文件后会丢弃旧数据载入收到的新快

2022-03-20 12:18:06 867

原创 关系型数据库和非关系型数据库

1.数据结构:关系型数据库有固定的表结构,可以通过DDL去修改表的结构,不是很容易进行扩展;非关系数据库的数据格式比较灵活,比如K-V键值对,基于图形的等,易于扩展2.可扩展性关系型数据库横向扩展难,不好对数据进行分片,而一些非关系型数据库原生就支持数据的水平扩展3.数据一致性 关系型数据库是基于ACID模型,非关系型数据库是基于CAP模型,从非关系型数据库中读到的数据有可能还是处于一个中间态的数据。非关系型数据库更多的偏向于OLAP(在线分析处理,对事务的要求不高...

2022-03-20 10:15:06 1138

原创 javaParser使用

首先要导入依赖<dependency> <groupId>com.github.javaparser</groupId> <artifactId>javaparser-symbol-solver-core</artifactId> <version>3.24.0</version></dependency>1.获取Test.java中的方法名public class Te

2022-03-13 20:56:31 225501 3

原创 ConcurrentHashMap简介

ConcurrentHashMap与HsahMap,HashTable一样,也是一个基于散列的Map,是一个高性能且线程安全的Map容器。HashTable是在每个方法上加上同步锁使得每次只能有一个线程访问容器,而ConcurrentHashMap使用了一种粒度更细的加锁机制“分段锁”,实现了更大程度的共享,在这种机制下,多个读取线程可以并发地访问容器,读取线程和写入线程也可以并发的访问容器,并且支持一定数量的写入线程并发的访问容器。ConcurrentHashMap内部...

2022-03-11 21:09:24 755

原创 AQS同步队列

重入锁ReentrantLock的实现底层是使用AbstractQueuedSynchronizer实现的,AbstractQueuedSynchronizer是一个抽象同步类,简称AQS。AQS提供了一套通用的机制来管理同步状态,阻塞/唤醒线程,管理等待队列等。AQS是一个FIFO双向队列,内部通过节点head和tail记录队首和队尾的元素,队列元素的类型为Node。Node中的thread变量用来存放进入AQS队列里面的线程;prev记录当前节点的前驱节点,next记录当前节点的后继节点;SHA

2022-03-10 18:53:56 341

原创 ReentrantLock

ReentrantLock提供了两个构造器:其中一个构造器可以指定锁的类型,即公平锁和非公平锁,默认构造器默认使用非公平锁。公平锁:多个线程按照申请锁的顺序,按照先来后到的原则获得锁非公平锁:多个线程获取锁的顺序并不是按照申请锁的顺序,允许“插队”,有可能出现后申请的线程比先申请的线程优先获得锁的情况ReentrantLock和synchronized一样都是独占排他锁,所有的线程都是同步互斥的访问同步代码块。同时只能有一个线程获取锁,其他线程只能等待锁被释放后才能有机会获...

2022-03-10 16:34:07 57

原创 AQS基本原理

什么是AQS?#AQS即AbstractQueuedSynchronizer,是一个用于构建锁和同步器的框架。它能降低构建锁和同步器的工作量,还可以避免处理多个位置上发生的竞争问题。在基于AQS构建的同步器中,只可能在一个时刻发生阻塞,从而降低上下文切换的开销,并提高吞吐量。AQS支持独占锁(exclusive)和共享锁(share)两种模式。独占锁:只能被一个线程获取到(Reentrantlock) 共享锁:可以被多个线程同时获取(CountDownLatch,ReadWriteLock).

2022-03-10 12:38:57 615

原创 volatile原理

volatile关键字主要⽤于解决变量在多个线程之间的可⻅性当写一个volatile变量时,JMM会把线程对应的本地内存中的共享变量值刷新到主内存 当读一个volatile变量时,JMM会把线程对应的本地内存置为无效,再从主内存中读取该共享变量编译过程java代码编译后会变成java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在cpu上执行,所以java的并发机制依赖于JVM的实现和CPU指令实现原理java代码 1

2022-03-10 12:17:31 240

转载 常见的页面响应代码表示什么意思

原文连接:400,405,404 ,500是什么错_怎么写,解决问题的博客-CSDN博客_500是什么错误400 错误请求 — 请求中有语法问题,或不能满足请求。404 找不到 — 服务器找不到给定的资源;文件不存在(前端开发中是前端传的参数有问题,为前端解决)405 前端开发中是前端的get ,post请求方式错误,为前端解决。500 内部错误 — 服务器不能完成请求 或者出问题了(前端开发中是服务请求不到,接口问题,为后端解决)504 前端开发中为跨域问题,一般要后端解决2xx 成功.

2022-03-10 08:50:12 76

原创 get和post的区别

举个大家可能听过的例子:TCP就像汽车,我们用TCP来运输数据,它很可靠,从来不会发生丢件少件的现象。但是如果路上跑的全是看起来一模一样的汽车,那这个世界看起来是一团混乱,送急件的汽车可能被前面满载货物的汽车拦堵在路上,整个交通系统一定会瘫痪。为了避免这种情况发生,交通规则HTTP诞生了。HTTP给汽车运输设定了好几个服务类别,有GET, POST, PUT, DELETE等等,HTTP规定,当执行GET请求的时候,要给汽车贴上GET的标签(设置method为GET),而且要求把传送的数据放在车顶上(u

2022-03-09 15:12:43 66

原创 jvm的一些问题

介绍一下java运行时数据区域,并说一下每个部分都存哪些内容?java的运行时区主要包含堆、方法区、虚拟机栈、程序计数器和本地方法栈。其中堆和方法区是所有线程共有的。而且虚拟机栈、程序计数器和本地方法栈是线程私有的。堆:存放对象实例 方法区:用来存储已经被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据 虚拟机栈:(生命周期与线程相同)java中每个方法执行的时候,java虚拟机都会同步创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。 程序计数器:保

2022-03-09 14:36:46 76

原创 synchronized

synchronized加在成员方法上,锁住this对象,锁的是调用这个方法的对象,即对象锁synchronized加在静态方法上,锁住类对象,类锁

2022-03-09 14:31:03 48

原创 mysql explain

possible_keys:可用的索引key:用到的索引1.唯一和主键索引的区别,唯一与主与聚簇,非聚簇的关系?唯一索引是在表上一个或多个字段组合建立的索引,这个字段的值组合起来在表中不可以重复。一张表可以建立多个唯一索引,但一般只建立一个。主键是一种特殊的唯一索引,区别在于,唯一索引列允许null值,而主键列不允许null值。一张表最多建立一个主键,也可以不建立主键。聚簇索引的叶子节点就是数据节点,而非聚簇索引的叶子节点仍然是索引节点,只不过有指向对应数据块的指针。聚簇索引..

2022-03-09 14:30:03 453

原创 qDox获取方法体代码

TestClass(获取该类中的方法体)public class TestClass { public static void main(String[] args) { sout(); } public static void sout(){ System.out.println("aaaa"); } public static void print(){ System.out.println("bbbb"

2022-03-09 14:19:44 379

原创 线程wait notify练习

包子实体类public class BaoZi { String pi; String xian; boolean flag=false;}包子铺public class BaoZiPu extends Thread{ private BaoZi bz; public BaoZiPu(BaoZi bz){ this.bz=bz; } @Override public void run(){

2022-03-09 14:12:45 49

原创 用线程池模拟加载进度

public static void main(String[] args) throws InterruptedException { ExecutorService executorService = Executors.newFixedThreadPool(10); CountDownLatch countDownLatch = new CountDownLatch(10); Random random = new Random(); .

2022-03-09 14:08:39 78

原创 tcp demo

服务端public class demo_TCP_Server { public static void main(String[] args) throws IOException { ServerSocket server = new ServerSocket(8888); Socket socket = server.accept(); InputStream input= socket.getInputStream();

2022-03-09 14:07:19 61

原创 java基础实现斗地主发牌

public static void main(String[] args) { //存储54张牌 ArrayList<String> poker =new ArrayList<>(); //定义两个数组,一个存储牌的花色,一个存储牌的序号 String[] colors = {"红桃","黑桃","梅花","方片"}; String[] numbers ={"2","A","K","Q","J",".

2022-03-09 14:00:14 150

原创 cookie和session的区别

1.cookieWeb应用程序是使用HTTP协议传输数据的。HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。即用户A购买了一件商品放入购物车内,当再次购买商品时服务器已经无法判断该购买行为是属于用户A的会话还是用户B的会话了。由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认

2022-03-09 13:55:09 32

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除