自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 问答 (1)
  • 收藏
  • 关注

原创 图解UML-类图

图解UML-类图

2022-02-23 15:06:58 1323

原创 为什么要用DDD(领域驱动设计)?

什么是DDDDDD全称领域驱动设计,是一种设计思想,可以用来指导微服务的落地。从名字上就可以看出来,领域是核心,至关重要,所有的设计必然是基于领域。为什么要用DDD?相信绝大多数从事java开发的人员,基本上接触的都是三层架构,其中视图层是比较薄的,而数据访问层主要是基于Mybatis或者JPA框架,业务逻辑和对数据的操作都是放到逻辑层。在实际开发中,三层架构很容易导致逻辑层越来越臃肿,或者开发人员将一部分业务逻辑通过数据访问层来进行实现,导致代码越来越臃肿和难以理解。而且三层架构中技术和业务

2021-12-30 17:27:46 2555

原创 浅谈SQL优化

如果你在面试中被面试官问到你是如何进行Sql优化时,你的回答是不能用星号,不能用 or !=之类的,毫无新意可言,面试官心里会想你顶多是一个初级工程师或者背面试题的,就算面试成功了,相信也不会给你开太高的薪资,下面给大家讲下日常中不一样的Sql优化。mysql不要在数据重复高的字段建立索引,比如性别、年龄、是否删除等字段,因为数据重复高会导致mysql放弃索引而进行权标扫描,得不偿失。在删除数据时,条件尽量使索引,否则表中数据过多,在没有索引的情况下,会进行全表扫描并锁表,在一段时间内,该表无

2021-07-15 17:34:37 374

原创 JVM垃圾回收机制

1.概述

2021-03-15 13:46:29 569 5

原创 浅谈java中的各种锁

概述顾名思义,锁就是将一种资源锁住,防止其他线程同步修改。锁机制是保证获取数据有序性的重要手段,为此java提供了大量的锁。无论是在面试或学习中,会遇到各种锁,如对象锁与类锁、轻量级与重量级锁、悲观锁与乐观锁等等。1.对象锁与类锁相信大家对synchronized关键字并不陌生,synchronized在jdk1.6之前是一个重量级锁,而1.6以后做了了很大的优化,synchronized分为了四种锁状态,分别是无锁、偏向锁、轻量级锁、重量级锁,极大提高了synchronized的性能。对象锁与类锁

2021-02-01 10:44:05 403

原创 搭建Spring Cloud Alibaba Nacos Demo(配置中心+注册中心)

背景因为eureka停止更新,而nacos既可以作为注册中心又可以作为配置中心,公司准备将用nacos替代eureka和config。虽然以前学习过nacos,但只是简单了解而且时间久远,有些遗忘,写一个demo复习下,后面迁移可以用到。介绍Nacos是阿里巴巴的开源项目,支持服务发现和服务健康监测、动态配置服务等,相当于Eureka+Spring Cloud Config。Eureka支持支持AP模式,而Nacos支持AP和CP模式两种模式。官方文档及下载地址官方文档github下载nacos

2021-01-14 14:55:46 2826 3

原创 代理模式与Spring AOP动态代理源码

介绍代理模式就是通过代理类控制目标对象,外界通过代理类提供的接口完成对目标对象的访问。通过代理类,可以在不影响目标对象的前提下,扩展一些功能,如权限校验等。代理模式主要分为两大类:静态代理和动态代理((JDK 代理、Cglib 代理)代理模式是23种设计模式中的一种,属于设计模式中的结构型模式。组成抽象角色:通过接口或抽象类声明真实角色实现的业务方法。代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。真实角色:实现抽象角色,定义真实角

2020-12-06 20:43:35 1838 8

原创 mybatis先修改再查询,查询到是修改前的数据(事务)

背景昨天在做项目中,有一个业务是需要先修改状态,再查询成功状态的条目,在测试中发现,一共十条数据,其中三条修改为成功状态,但是再次查询,发现三条数据为初始状态,说明没有查询到修改后的数据。排查这种问题一般和事务的隔离机制有关,mysql默认事务隔离级别是读已提交,事务隔离机制是作用在两个或多个事务上的,单个事务肯定是不存在隔离机制的,首先排查代码有没有开启新的事务结果排查中发现,其中一个方法,是复制过来的,将@Transactional注解一块复制过来的,导致修改操作开启了一个新的事务,查询操作和

2020-11-24 11:12:37 7208 6

原创 oracle基本操作语句大全

前言给大哥们整理一份比较全面的oracle基本操作语句,方便工作中直接拿来用,不足之处,欢迎大家斧正,谢谢。1. 数据库表1.1创建表create table 表名(\-- 字段);1.2 修改表1.2.1 表名alter table 原表名 RENAME TO 新表名;1.2.2 字段1.2.2.1 增加字段: alter table 表名 add 字段名 类型;1.2.2.2 修改字段alter table 表名 rename column 原字段名 to 新字段

2020-11-17 18:16:21 8987

原创 LinkedBlockingQueue讲解及源码解析

1.概述自java5后,jdk增加了concurrent包,concurrent中的BlockingQueue,也就是堵塞队列,BlockingQueue只是一个接口,jdk为其提供了丰富的实现类,适用于不同的场景,这篇讲的是LinkedBlockingQueue。2.简介LinkedBlockingQueue继承了AbstractQueue类和实现了BlockingQueue接口,是一个基于内部链表的有界队列,如果初始化不设置大小,默认设置大小为Integer.MAX_VALUE(无界队列)。锁是基

2020-11-10 13:41:06 3430 9

原创 面试官:你手写过堵塞队列吗?

面试官:你好,你先做个自我介绍吧某人:面试官你好,我叫真俊巴面试官微微一笑:看你简历,你精通多线程?那你手写过堵塞队列吗?某人心里出现一万个问号,堵塞队列是啥玩意?平时基本都是crud,顶多用多线程跑数据...

2020-11-02 09:37:33 8962 21

原创 ArrayBlockingQueue讲解及源码解析

概述自java5后,jdk增加了concurrent包,concurrent中的BlockingQueue,也就是堵塞队列,BlockingQueue只是一个接口,jdk为其提供了丰富的实现类,适用于不同的场景,这篇讲的是ArrayBlockingQueue。ArrayBlockingQueue简介ArrayBlockingQueue继承了AbstractQueue类和实现了BlockingQueue接口,是一个基于数组的有界队列,锁是基于ReentrantLock实现,只有一个锁对象,这就导致入队/

2020-10-29 17:18:30 1333 6

原创 ThreadLocalMap详解及源码解读

概述ThreadLocalMap是ThreadLocal的内部类,是一个key-value数据形式结构,也是ThreadLocal的核心。ThreadLocalMap中数据是存储在Entry类型数组的table中的,Entry继承了WeakReference(弱引用),注意key是弱引用,vlaue不是。源码解读1.成员变量 /** * 初始容量 */ private static final int INITIAL_CAPACITY = 16; /** * ThreadLoc

2020-10-26 11:21:30 5214 7

原创 ThreadLocal使用及原理详解

简介ThreadLocal是JDK提供的,提供线程本地变量,主要用来解决多线程环境下的数据线程不安全问题,不需要使用synchronized或Lock,避免了额外开销。例子public static void main(String[] args) { ThreadLocal threadLocal = new ThreadLocal(); for(int i=0;i<3;i++){ new Thread(()->{

2020-10-22 17:13:47 2292 7

原创 设计模式模版方法

概述模版方法就是定义一个算法的骨架,将骨架中的特定步骤延迟到子类中。模板方法模式使得子类可以不改变算法的结构即可重新定义(重写)该算法的某些特定步骤。优缺点优点解决了代码的重复问题提高了代码的可扩展性规定了代码的执行流程缺点每增加一个实现,必须增加一个子类例子中国的伟大在于五千年的历史,诞生了属于自己的医学体系,时至今日,人们看病可以选择中医和西医,两者的去医院看病的大概流程是一致的,但是诊断方法并不同,通过代码形式展现出来。挂号→诊断→缴费→取药抽象模版/** * @a

2020-10-21 14:29:26 447 1

原创 java守护线程及其应用

java线程分为两种 :用户线程(User Thread)和守护线程(Daemon Thread)。平时我们常用的就是用户线程,而守护线程很少用到,只有在一些特定场景中用到。守护线程一般是用来为其他线程服务的,比如JVM的垃圾回收,就是一个守护线程,为其他线程回收垃圾对象等。守护线程的特点:生命周期依赖于其他线程,当最后一个用户线程结束后,守护线程就会强制结束,以前喜欢看玄幻小说,是不是很像小说中的主仆协议,主人死了,宠物也要死代码 System.out.println("主线程运行开始");

2020-10-19 14:14:32 645

原创 事务介绍及Mysql、jdbc、Spring实现事务

1.什么是事务事务是程序的一组操作,要么全部执行成功,要么失败后,所有的操作回到执行前的状态。事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end t

2020-09-05 20:52:31 983

原创 Idea tomcat debug按钮灰色无法运行

打开Project Structure2.选中src,点击按钮关闭界面,重启idea即可

2020-09-01 19:25:02 4183 2

原创 java设计模式之原型模式

1. 介绍用原型实例(对象)指定创建对象的种类,并通过拷贝这些原型(对象)创建新的对象。2. 概述原型模式是23种设计模式中的一种,属于设计模式中的创建型模式。对象的创建需要消耗一定的资源,对象越大越复杂,消耗的资源会成正比,而通过原型模式,可以避免这些消耗,创建的对象越多,原型模式的优势越大原型模式的本质就是复制,所有的类都会继承Object 类,Object 类有一个clone()方法,通过这个方法可以实现对象的复制,但是Object 类的clone ()无法直接使用,必须实现Cl

2020-08-13 20:35:50 470

原创 java设计模式之建造者模式

1. 介绍将一个复杂对象的表示与构建分离,使相同的构建过程可以创建不同的表示。2. 概述建造者模式是23种设计模式中的一种,属于设计模式中的创建型模式。建造者模式(Builder Pattern)又称生成器模式,生成器模式可以一步步的构建复杂对象,调用者只需要指定复杂对象的类型和内容就可以创建指定复杂对象,无需关心具体创建过程。建造者模式需要增加新的复杂对象时,只需要增加具体建造者即可,实现了解藕,符合开闭原则。建造者模式和工厂方法模式很类似,但是工厂方法模式主要是对产品族的创建,比如有个小米

2020-08-13 18:01:00 444

原创 JVM基础详解

JVM概述JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。作者根据冯·诺依曼结构设计的,Java虚拟机本质上就是一个程序,当它在命令行上启动的时候,就开始执行保存在某字节码文件中的指令。Java语言的可移植性正是建立在Java虚拟机的基础上。任何平台只要装有针对于该平台的Java虚拟机,字节码文件(.class)就可以在该平台上运行。这就是“一次编译,多次运行”,因为

2020-08-04 18:03:07 286 1

原创 java对象强、软、弱、虚四种引用

介绍java垃圾回收机制通过两种方法来判断对象是否回收,分别是引用计数法和可达性分析算法java在jdk1.2之前,只存在一种引用,当对象只有被引用时才会存在,当没有引用时,引用计数为0,对象就会被垃圾回收判断为失效,进行回收java在jdk1.2开始,对象的引用分为4种,分别是强引用>软引用>弱引用>虚引用,程序员可以通过不同的引用控制对象的生命周期,方便垃圾回收,使程序更加灵活的控制对象生命周期java在jdk1.2开始,在java.lang.ref提供了一个抽象类Refer

2020-06-11 17:08:19 471

原创 java设计模式之工厂模式讲解

概述工厂方法模式是23种设计模式中最常用的一种,属于设计模式中的创建型模式。工厂方法模式是java面向接口编程的一种体现,我们在创建对象时不会对客户端暴露创建逻辑,而是通过使用一个抽象接口来创建对象单例模式主要应用场景如数据库连接池、线程池、应用配置、spring bean,对了,还有你哦????...

2020-05-31 19:57:22 502

原创 java设计模式之单例模式详解(六种)

java单例模式(六种)概述单例模式是23种设计模式中最常用的一种,属于设计模式中的创建型模式。单例模式主要作用是让类在应用生命周期中只存在一个实例,避免类的重复创建,降低创建实例的资源消耗,提高性能单例模式主要应用场景如数据库连接池、线程池、应用配置、spring bean,对了,还有你哦????饿汉式  顾名思义,饿汉式就跟你饿了一样,肯定想的是立马吃饭。而在代码里所表达的是立即创建...

2020-05-05 16:54:51 508 1

原创 videojs在win7 ie播放m3u8问题

去年在做视频的时候,将视频切片成了m3u8问题,发现在win7 ie播放m3u8视频时,无法播放的情况,不清楚win7和win10的ie有何区别,但是这确确实实困扰了很久,发现土豆网在win ie下也无法正常播放切片视频,所以最后的解决方法是检测到是win7 ie时,播放mp4视频,或者你们采用flash应该也可以...

2020-03-15 16:02:20 2008

原创 视频倍速调整(ffmpeg)

众所周知,视频是由一组图片和一段音频组成,视频如果调整倍速,就可以通过调整图片来达到画面倍速的调整,当然,调整图片的同时也要对音频进行调整,否则画面和声音对不上,岂不是贻笑大方了。视频倍速两倍速ffmpeg -i test.mp4 -filter:v "setpts = 0.5 * PTS" test-0.5.mp4视频速度调整取决于setpts视频滤波器的数值,支持的范围是0.25...

2019-10-20 13:22:21 10155 7

原创 视频分辨率转码(ffmpeg)

接触视频业务时,视频分辨率是不得不面对的一个重要问题,目前无论是各大视频网站或者小型网站、系统都拥有视频分辨率这个最为基础的功能,用户可以根据自己网络情况播放不同分辨率的视频,除了一些根据用户网络情况播放不同分辨率视频的网站(这就涉及到流媒体了),基本都是采用用户自己设置分辨率,这就需要根据当前系统采用的几种分辨率转码出对应的视频,当用户切换分辨率时,路径直接指向对应视频即可,视频解码依然还是采用...

2019-10-20 12:13:28 2867

原创 截取视频帧图(ffmpeg)

众所周知,视频就是由一组连续的图片和音频组成,很多需求是将视频的第一帧图片作为视频封面,最近做的项目是每隔十秒截取一张图片,依旧是采用ffmpeg,不得不说ffmpeg这个工具真的很强大,唯一的缺点就是太耗费cpu了吧,废话不多说了,上代码。截取视频图片隔十秒抽取一张图片ffmpeg -i test.mp4 -q:v 2 -vf "select=between(n\,0\,24000)*...

2019-10-18 09:36:07 1533

原创 mp4切片m3u8(ffmpeg)

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序,其稳定性受到从事视频方面工作者的喜爱。 最近在做一个视频方面的项目,就用到了ffmpeg,真的很好用,昨天通过ffmpeg将mp4视频转换m3u8格式,将视频均匀分割,在播放时可以很快的进行加载完成并进行播放,比传统的mp4格式加载更快,更能将浏览器的压力降低,因为加载一段十几兆的视频比加载几百兆视频更...

2019-10-17 15:11:40 2062 2

原创 spring boot 集成 activity工作流踩坑

最近因为项目需要集成activity工作流,老大把这个光荣而艰巨的任务交给了俺,俺从前也没接触过工作流,就知道个activity是个工作流,其余啥都不知道,咳咳,废话不多说了,开始踩坑了。第一步:当然是先引入包了,现在已经有6.0.0了,但是保险起见,还是不要用最新的了, <activiti.version>5.22.0</activiti.version> ...

2019-07-02 10:05:34 1235 2

原创 spring boot 集成jpa踩坑 (一)

平时上班996,趁着端午节放假时间,搞搞spring boot集成jpa,搭建完环境后,写了个findOne(Integer id)方法,在junit测试中,报错了,而且错误很坑java.lang.IllegalStateException: Failed to load ApplicationContextat org.springframework.test.context.cache.D...

2019-06-09 12:31:31 923

空空如也

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

TA关注的人

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