自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 静态代理与动态代理

静态代理静态代理就是我们自己手写代理类; aspectJ静态代理(编译期生成代理类)静态代理可以实现在不修改目标对象代码的前提下,对目标对象的功能进行扩展;静态代理:(目标接口、目标接口实现、代理类)优点:可以实现不对目标对象进行修改的前提下,对目标对象进行功能的扩展和增强,也就是扩展原功能,不污染原代码。缺点:因为代理对象,需要实现与目标对象一样的接口,如果目标接口类繁多,也会导致代理类繁多,另外一旦目标接口增加新方法,则代理类也需要维护;实现方式/** * 目标接口 * */pub

2021-02-17 13:53:58 171

原创 spring-boot自定义start

(我们以redis为例,我们自己制作一个starter)1、首先创建一个项目;2、加入依赖<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.1.0</version></dependency>3、创建一个RedisProperties用于加载Redis

2021-01-10 14:56:38 115

原创 spring-boot全局异常

1.创建一个全局异常处理类@ControllerAdvice 可以用来返回统一的错误json或者是统一错误jsp页面@ExceptionHandler(value = Exception.class)中的异常必须继承Throwable@ResponseBody Object 返回json格式字符串ModelAndView 返回一个视图package com.bjpowernode.springboot.handler;import com.bjpowernode.springboot.co

2021-01-10 13:41:16 89

原创 spring-boot整合多数据源与事务管理

依赖的jar包1、在pom.xml中配置相关jar依赖;<!-- mybatis-spring-boot-starter --><dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version

2021-01-10 13:07:57 112

原创 StampedLock实现读写锁功能的锁对象

它主要解决的是读写线程比例相差太大,例如共有100个线程对这个锁进行加锁,比例为99个读线程,1个线程;那么就会出现写线程总是抢不到锁的情况,这种情况称为:线程“饥饿”为了避免这种情况,提高效率,那么就出现了这个StampedLock注意:2.1、StampedLock不是一个重入锁2.2、StampedLock不支持Condition所有获取锁的方法,都返回一个邮戳(Stamp),Stamp为0表示获取失败,其余都表示成功;所有释放锁的方法,都需要一个邮戳(Stamp),这个St.

2020-11-02 22:43:09 68

原创 ReadWriteLock读写锁的用法

读写锁的用法将锁的类别更加细化的一种解决问题的方式,能更好的提高效率读写锁内部维护了两个锁,一个读锁,一个写锁读锁与读锁不互斥 (可以并行读)读锁与写锁互斥 (不能并行读和写)写锁与写锁互斥 (不能并行写和写)读写锁也可以实现公平锁与非公平锁只是针对相同类型的锁而已,如果是读锁与写锁之间要保证公平性ReentrantReadWriteLock是做不到的。上代码public class ReadWriteLockTest01 { public static voi

2020-11-02 22:22:55 209

原创 Semaphore,CyclicBarrier,CountDownLatch用法

Semaphore及其用法详解Semaphore也是一个线程同步的辅助类,可以维护当前访问自身的线程个数,并提供了同步机制。使用Semaphore可以控制同时访问资源的线程个数,例如,实现一个文件允许的并发访问数。Semaphore的主要方法摘要:void acquire():从此信号量获取一个许可,在提供一个许可前一直将线程阻塞,否则线程被中断。void release():释放一个许可,将其返回给信号量。int availablePermits():返回此信号量中当前可用的

2020-10-27 09:20:02 47

原创 javaWeb代码从网络中下载文件

从网络下载文件以流文件的方式给到浏览器package com.hengqin.life.face.util;import lombok.extern.slf4j.Slf4j;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.ByteArrayOutputStream;import java.io.IOException;impor

2020-10-22 11:31:02 306

原创 java代码从网络下载html处理

从html中过滤image类型的地址工具类okhttp的依赖 <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.4.0</version> </dependency>工具

2020-10-21 16:44:18 283

原创 JSONObject没有parseObject和fromObject方法的区别

com.alibaba.fastjson.JSONObject依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.15</version> </dependency>方法JS

2020-10-15 12:01:32 1575 1

原创 ThreadPoolTaskExecutor实现多线程并处理返回值

使用executor.execute(Runnable task)方法思路:事先定义一个存放结果的集合(必须是线程安全的集合),作为参数传到多线程任务中,每个任务执行后把需要返回的结果放在集合中。这样在执行完成后就可以访问这个集合拿到返回值。但是还有一个问题:怎么保证当我们访问集合时任务都已经执行完成保证不会丢失某一条任务的执行结果呢????必须是线程安全的集合所以这里就要使用java.util.concurrent包下的CountDownLatch类,保证多线程全部执行完毕后再进行后续操作。实现的

2020-10-14 18:20:44 3944 1

原创 Thread类的api笔记

并发与并行的概念并行:当系统有一个以上CPU时,当一个CPU执行一个进程时,另一个CPU可以执行另一个进程,两个进程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行。并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。并行和并发的区别.3.1并行只可能发生在多个CPU的情况下,而并发可能发生在一个CPU运行的情况下。3.2并行是没有对资源的抢占,不存在竞争和等待的,而并发执行的线程需要抢占资源、可能会产生竞争和等待的情况。

2020-10-14 11:25:24 80

空空如也

空空如也

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

TA关注的人

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