自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 spring 使用junit5报错TestEngine with ID ‘junit-vintage‘ failed to discover tests” with Spring

网上都是排除junit4的,试过了没有效果。提供一种比较特殊的情况:目录建错了,com是对的,java.com是错的。反正我这里也不需要排除:可能spring boot 2.5.11已经改掉了这个问题,不需要排除了,出现这个错误可以考查一下目录分级的问题。...

2022-03-30 17:02:37 1828

原创 Java虚拟机笔记 五、类加载机制

什么是类加载?把描述类的数据从Class文件加载到内存, 并对数据进行校验、 转换解析和初始化, 最终形成可以被虚拟机直接使用的Java类型, 这个过程被称作虚拟机的类加载机制。.class是从.java编译而来,理解了class文件结构之后,就需要知道这些数据是如何加载到虚拟机里的。与那些在编译时需要进行连接的语言不同, 在Java语言里面, 类型的加载、 连接和初始化过程都是在程序运行期间完成的, 这种策略让Java语言进行提前编译会面临额外的困难, 也会让类加载时稍微增加一些性能开销,但是

2021-11-23 16:47:26 1579

原创 Ubuntu使用apt/apt-get安装软件、执行apt --fix出现E: Sub-process /usr/bin/dpkg returned an error code (1)

快被这个问题搞自闭了,幸好最后终于找到解决方法:ubuntu 20.04 缺少导致libpng12-0 导致apt无法更新我的情况是apt安装任何软件都会报错Unmet dependencies,提示一堆依赖缺失,然后根据提示使用apt --fix-broken install修复又出现E: Sub-process /usr/bin/dpkg returned an error code (1),看细节提示libgpac4 : Depends: libpng12-0缺失libpng12.so.0什么的。

2021-11-16 18:13:48 1892

原创 Java虚拟机笔记 四、类的结构(class文件的结构)

类文件结构class文件由相应编译器编译而来,用以虚拟机中执行:Java技术能够一直保持着非常良好的向后兼容性, Class文件结构的稳定功不可没 .时至今日, Java发展经历了十余个大版本、 无数小更新, 1997年发布的《Java虚拟机规范》中定义的Class文件格式的各项细节几乎没有出现任何改变。尽管不同版本的《Java虚拟机规范》 对Class文件格式进行了几次更新, 但基本上只是在原有结构基础上新增内容、 扩充功能, 并未对已定义的内容做出修改。...

2021-11-12 17:29:04 301

原创 Java虚拟机笔记 三、垃圾回收机制

1. 概述在内存结构中的堆,用于对象的存放。而垃圾回收机制主要的作用就是对堆的内存进行管理。垃圾收集(Garbage Collection, 简称GC)需要完成的三件事情:哪些内存需要回收?什么时候回收?如何回收?1.1 为什么要去了解垃圾收集和内存分配?当需要排查各种内存溢出、 内存泄漏问题时, 当垃圾收集成为系统达到更高并发量的瓶颈时, 我们就必须对这些“自动化”的技术实施必要的监控和调节。1.2 为什么垃圾回收机制主要服务于堆?程序计数器、 虚拟机栈、 本地方法栈3个区域随线程而

2021-11-11 11:53:45 429

原创 Java虚拟机笔记 二、对象的创建与结构

以下图文均来自周志明《深入理解Java虚拟机 第3版》目录一个对象的创建new关键字是怎么执行的1. 类加载2. 分配内存内存的分配方式:对象内存的线程安全问题:3. 初始化4. 虚拟机的其他操作5.用户的初始化对象的内存布局对象头实例数据对齐填充创建对象之后是如何访问这个对象的句柄直接指针一个对象的创建new关键字是怎么执行的1. 类加载当Java虚拟机遇到一条字节码new指令时, 首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用, 并且检查这个符号引用代表的类是否已被加载、

2021-11-10 17:06:38 720

原创 Java虚拟机笔记 一、内存的划分

内存区域划分Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。 这些区域有各自的用途, 以及创建和销毁的时间, 有的区域随着虚拟机进程的启动而一直存在, 有些区域则是依赖用户线程的启动和结束而建立和销毁。【线程私有】程序计数器:一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。在Java虚拟机的概念模型里, 字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令, 它是程序控制流的指示器, 分支、 循环、 跳转、 异常

2021-11-10 16:37:04 1002

原创 从静态代理到动态代理,理解动态代理原理

前提已经明白静态代理,也就是普通的代理模式,是建立一个代理类,与目标类实现同一个接口,并且有一个变量存放目标类,在相同方法中调用目标实例的相应方法,并且在前后加上增强代码。静态代理的问题就是:1. 每个目标类都需要手动构建一个代理类,工作量大;2. 增强逻辑(比如日志)可以提出来加以复用。所以动态代理要解决的就是,在给定一个目标类的情况下,直接创建一个代理实例(不需要创建代理类),代理实例里面是统一的一个增强逻辑。动态代理的实现要直接根据目标类给出一个代理实例,主要有两种思路:使用目标类的信息

2021-11-09 11:18:33 162

原创 启动jar包时报错no main manifest attribute

未找到主线程入口,时pom文件没配置好,出现这个问题的原因是先前的项目我都是用了 <parent>标签直接继承某个springboot版本模板,包括插件配置。点进任意父依赖模板,可以看到插件配置: <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</art

2021-10-11 14:59:20 387

原创 构建spring boot2.5.5启动报错druid和fastjson版本问题

报错:java.lang.ClassNotFoundException: org.springframework.boot.bind.RelaxedPropertyResolver很奇怪地依赖了spring-boot-autoconfigure 1.5.12版本,如果没加druid-spring-boot-starter1.2.8(此时最高版本,依赖也说明支持2.5.5的)是正常2.5.5的。解决方法,剔除druid-spring-boot-starter的spring-boot-autoconfig

2021-10-09 17:49:18 697

原创 ZLMediaKit 推/拉流

环境:服务器Ubuntu20.04,已经集成AKStream。终端使用windows 命令行,已经安装ffmpeg和ffplay进行体验。运行MediaServer之后会生成config.ini,配合配置使用http 点播config.iniport默认为80可以不用改,我这里改成了8888;rootPath是http服务的根目录地址,默认是./www,需要自行创建目录点播服务需要修改这个配置appName就是应用名。filePath是视频存放地址。这样的配置最终访问http的url组成

2021-09-18 15:29:54 5622

原创 ZLMediaKit推流拉流 遇到的坑 Cannot read RTMP handshake response or Could not write header for output file #

rtmp推流时报错:Cannot read RTMP handshake response或者rtsp推流时报错:Could not write header for output file #0 (incorrect codec parameters ?): Invalid data found when processing input Error initializing output stream 0:0 --都是同一个原因,在官方wiki中例子是ffmpeg -re -i "/path/t

2021-09-18 15:06:41 11536 9

原创 centOS7 FTP服务搭建 vsftpd

yum -y install vsftpd 安装工具安装完成后,/etc/vsftpd/目录下有三个文件: ftpusers --指定那些用户不能访问ftp服务器。 user_list--指示的默认账户在默认情况下也不能访问ftp vsftpd.conf --配置文件安装完成后,默认的文件路径:匿名登录: /var/ftp/pub用户登录:/home/{用户名}/ --实际上就是该用户的用户目录拒绝匿名访问: vim /etc/vsftpd/vsftpd.conf 将anon.

2021-09-02 17:57:32 84

原创 Redis学习 (一)数据结构基本使用

单线程和多路 I/O 复用模型redis是单线程:对于命令的处理是单线程的,也就是说,多个命令到来,会排成队列,逐条处理。单线程省去了很多上下文切换线程的时间,并且排除了并发操作的锁操作,所以号称速度快,redis的瓶颈一般不是cpu而是网络和内存。多路 I/O 复用模型:“多路”指的是多个网络连接,“复用”指的是复用同一个线程。多路复用主要有三种技术:select,poll,epoll。redis采用的epoll是目前最新最好的多路复用技术。数据结构redis是内存型数据库,存储的全都是key-v

2021-07-26 17:53:11 138

原创 git基本操作学习

分支是从根节点到任意一个节点的路径,这个任意节点并不一定是叶子节点,每个节点的箭头指向它的父节点,父节点就是它未提交前的状态,从这个角度来说merge也是一种commit分支的合并merge把 bugFix 合并到 master 里,首先要处于master分支上,然后合并指令git merge bugFix再把 master 分支合并到 bugFix:git checkout bugFix;git merge masterrebase初始状态是这样,目的是把bugFix的工作直接移动到m

2021-07-19 18:29:44 231

原创 Vue学习 (一)跟着官方文档入门

初看vue官方文档的时候,在起步之后就没大看下去了。对于一般教程而言,建立好环境之后给一个hello world的例子入门,然后一点一点扩展开。但是vue的官方文档显然没有这样做,而是从DOM元素的控制直接控制在学习vue之前,一般是通过document对象控制html元素,这是原生js,像jQuery简化了这个操作,但是不管怎样都是一回事:使用某个选择器通过id、class来从DOM树中选择想要操作的元素,再进行页面上的更改。间接控制而vue的做法是,将页面元素和变量绑定在一起,页面就会

2021-06-08 15:13:11 368

原创 MinIO文件服务器 --单机搭建&&基本使用

MinIO官方文档很齐全且有中文,不过有一些文档链接报404,看目录去找自己需要的内容MinIO官方文档 : http://docs.minio.org.cn/docs/单机简单使用MinIO应该装两个服务,一个是server,一个是client,官方文档是分开说的,造成开始没弄清楚。安装哪种安装方式官方文档都写得很详细,这里采用docker的方式安装:server拉取: docker pull minio/minio创建: docker run -p 9000:9000 --n

2021-06-02 18:16:24 999

原创 SpringSecurity学习三 SpringSecurity 结合jwt

相关依赖<!-- jwt依赖 --> <dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>3.16.0</version> </dependency><!-- 基本依赖 --> <dependency&g

2021-06-01 17:24:31 386

原创 docker 启动失败Job for docker.service failed because the...

启动docker时systemctl start docker或systemctl start docker.service都报错Job for docker.service failed because the control process exited with error解决办法:systemctl stop firewalld关闭防火墙仅提供一种可能的办法,个人就是因为防火墙问题。搜网上博文全是瞎抄的,还一本正经地让人重装docker,多少有点nt。...

2021-06-01 11:30:21 407

原创 SpringSecurity学习二 SpringSecurity部署数据库

basic基本的SpringSecurity部署,从数据库读取用户。持久层框架是mybatis-plus项目源码gitte地址: https://gitee.com/xiang_Gitee/spring-security-learn(子工程basic)必要依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-sta

2021-05-21 18:57:26 217

原创 SpringSecurity学习一 快速开始

simple简单的SpringSecurity部署,仅从内存里配置用户数据。项目源码gitte地址: https://gitee.com/xiang_Gitee/spring-security-learn(子工程simple)推荐博文:手把手带你入门 Spring Security!Spring Security 入门原理及实战干货|一个案例学会Spring Security 中使用 JWT必要依赖 <dependency> <groupId>org.sp

2021-05-21 18:49:11 229

原创 centos7下yum出现:已加载插件:fastestmirror Loading mirror speeds from cached hostfile 没有已启用的源。

出现这个问题是因为用mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup备份了一下源,莫名其妙就出错了。用yum repolist all查看源列表:显示全部禁用啥办法也不好使,只能更新国内镜像源,但是没有wget,可以用curl:命令:curl -o /etc/yum.repos.d/CentOS-Base.repo 镜像源下载地址如http://mirrors.163.com/.help.

2021-04-08 10:19:30 21443 2

原创 activiti 7 生成流程图图片

参考https://blog.csdn.net/sessionsong/article/details/104681140但版本和我用的不一样,这边的用的是7.1.0.M6,应该生成svg格式的图片。补充一下这个版本的做法除了必要的依赖之外还需要:<dependency> <groupId>org.activiti</groupId> <artifactId>activiti-image-generat

2021-03-26 17:35:59 3128 2

原创 Java反射入门

1. 反射反射这个名词似乎很难理解,但是实际上就是通过另一种方式去操作对象而已,一般操作对象就是直接用,比如A a = new A();通过引用a来操作相应的那个对象就行。但是如果一个方法的参数是Object o,假设o和a都指向同一个对象,但是o是Object类型的引用,是没办法调用到A的特有方法和属性的,想通过这个引用o来操作真正的对象,就要用到属性。但是从o这个引用本身是没办法的,但是虽然o是那个对象的引用,但是那个对象在内存的真正类型是A,所以我们通过o去内存中获取A对象的相关信息(有哪些字段,

2021-03-23 12:10:14 59

原创 CentOS 7下安装mysql 5.7 or 8.0并配置一条龙

由于MySQL被甲骨文收购之后存在闭源风险,mysql之父Michael Widenius主导了mysql分支MariaDB的开发以取代mysql。所以在允许的情况下尽量用MariaDB或者PostgreSQL。MariaDB和MySQL是很接近的,所以转换成本不会太高,不过似乎PostgreSQL才是下一个主流DB,尽管相对来说和MySQL差距大一点。管它什么开源精神开源洁癖呢,就是要用MySQL。在CentOS 7下yum直接搜MySQL是搜不到的,官方库已经移除了根据官方教程进行安装:.

2021-01-18 18:18:42 153

原创 ffmpeg在centos7下编译安装无ffplay的问题解决

在网上查了许多资料,最后解决了,可以肯定这边主要问题就是缺少SDL2,没有SDL2编译不出来ffplayffmpeg版本:4.3.1,是截至2021.1.7在官网下载的最新稳定版本然后SDL2在这个网址下载: http://libsdl.org/release/ ,也是最新版本2.0.14下载页面:注意SDL2-devel系列不行,这是用于开发,没法编译的安装的;后缀名则是正常的.tar.gz下载下来之后cd 到ffmpeg的解压目录,执行:make uninstall &&am

2021-01-07 11:31:55 699

原创 音视频开发--基础知识

主要参考来源: 雷霄骅的csdn博客音视频基础知识1.视频播放器原理视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:解协议,解封装,解码视音频,视音频同步。如果播放本地文件则不需要解协议,为以下几个步骤:解封装,解码视音频,视音频同步。他们的过程如图所示。解协议:将流媒体协议的数据,解析为标准的相应的封装格式数据。视音频在网络上传播的时候,常常采用各种流媒体协议,例如HTTP,RTMP,或是MMS等等。这些协议在传输视音频数据的同时,也会传输一些信令数据。这些信令数据包括对播放的控制(

2021-01-04 17:15:15 496

原创 UDP基础简单学习

UDP基础简单记录简介UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议。UDP不提供复杂的控制机制,只是利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上的一种机制.UDP只在P数据报服务之上增加了很少功能,即复用分用和差错检测功能。即使是出现网络拥堵的情况下,UDP也无法进行流量控制等避免网络拥塞的行为。此外,传输途中即使出现丢包,UDP也不负责重发。甚至当出现包的到达顺序乱掉时也没有纠正的功能。如

2020-12-31 11:52:19 283

原创 TCP基础全面学习

目录TCP基础--详细笔记TCP简介tcp连接流程tcp首部结构三次握手四次挥手重传机制超时重传快速重传窗口控制滑动窗口控制例:流量控制利用窗口控制提高速度附1.四种定时器2. TCP 快速重传那些事TCP基础–详细笔记TCP/IP协议簇:以tcp和ip为代表的通信时所必须用到的协议群的统称。具体来说,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于 TCP/IP 协议。TCP简介TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP

2020-12-30 22:45:33 387

空空如也

空空如也

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

TA关注的人

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