自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

萌萌虎的博客

萌萌虎的CS学习之路

  • 博客(199)
  • 收藏
  • 关注

原创 YOLOPOSE-2.loss修复及半自动标注自定义数据集(COCO-Annotator)

关键点标注相对目标检测标注工作量大得多。我先尝试了labelme,发现并不好用:每个人的边界框与关键点信息并没有直接的关联;每标一个关键点就要选择一次标签名,效率极低。查阅资料后发现coco-annotator可以直接标注coco格式的标签。可以为类person分别标注边界框和关键点,这就把每个人及其关键点捆绑到了一起。虽然官方说支持半监督标注,但并没有给出demo,也没有明确给出前端需要接收的json格式。最难受的是官方代码是用docker运行的,没办法调试。

2023-03-21 12:44:36 790 4

原创 YOLOPOSE 1.自定义关键点/修改label脚本/训练数据可视化

这里分享一下学习YOLOPOSE自定义关键点以及自己写修改label文件的脚本的过程,记录了一些踩过的坑。最后我分享了自己做的数据集label修改脚本,欢迎有需要的同学使用。本文参考这位博主的方法,并修复了一些问题。

2023-03-13 17:04:51 2702 15

原创 MyBatis-执行流程简介

SimpleExecutor是默认执行器,它的行为是每处理一次会话当中的SQl请求都会通过对应的StatementHandler 构建一个。负责处理 Statement 执行后产生的结果集,生成结果列表,并处理存储过程执行后的输出参数,返回给客户端。执行器在的角色更像是一个管理员,接收SQL请求,然后根据缓存、批处理等逻辑来决定。,处理完二级缓存逻辑之后,把SQL执行相关的逻辑交给实际的Executor处理(交由。: 管理 Statement 对象并向数据库中推送不需要预编译的SQL语句。

2022-10-28 20:12:34 4700

原创 Spring注解-6.声明式事务

如果是,就需要创建代理对象,并且把。实例,这个实例可以看作是一个。Bean实例化前(略)之后,spring会在。,在判断一个bean在。的作⽤之⼀就是⽤来解析。给容器中导入两个组件。

2022-10-25 23:02:17 388

原创 Spring注解-5.AOP

@EnableAspectJAutoProxy注解用来开启 Spring AOP注解的使用。这个的作用就是自动让 ioc 容器中的所有 advisor 来匹配方法,advisor 内部都是有 advice 的,让它们内部的 advice 来执行拦截处理

2022-10-25 17:53:37 303

原创 Spring注解-4.IOC原理与循环依赖

IoC容器是Spring的核⼼模块,是抽象了对象管理、依赖关系管理的框架解决⽅案。Spring 提供了很多 的容器,其中 BeanFactory 是顶层容器(根容器),不能被实例化,它定义了所有 IoC 容器必须遵从的⼀套原则,具体的容器实现可以增加额外的功能,⽐如我们常⽤到的ApplicationContext,其下更具体的实现如 ClassPathXmlApplicationContext 包含了解析 xml 等⼀系列的内容, AnnotationConfigApplicationContext

2022-10-24 19:32:03 526

原创 Spring注解-3.自动装配

Spring利用依赖注入(DI),完成对IOC容器中中各个组件的赋值。

2022-10-22 16:37:52 292

原创 Spring注解-2.生命周期、属性赋值

我们可以自定义初始化和销毁方法;容器在bean进行到当前生命周期的时候来调用我们自定义的初始化和销毁方法。* 多实例:容器不会管理这个bean;容器不会调用销毁方法;* 对象创建完成,并赋值好,调用初始化方法。* bean创建---初始化----销毁的过程。* 多实例:在每次获取的时候创建对象\。* 单实例:在容器启动的时候创建对象。* 单实例:容器关闭的时候。* 容器管理bean的生命周期;)指定初始化/销毁时的操作。2、可以写SpEL;

2022-10-22 15:38:45 188

原创 Spring注解-1.组件注册

(还可以自定义过滤的规则,这里不演示了):容器启动不创建对象。第一次使用(获取)Bean创建对象,并初始化;2)、要获取工厂Bean本身,我们需要给id前面加一个。FactoryBean(工厂Bean)进行判断,满足条件给容器中注册bean。(默认)- 指定id,默认是方法名。: 返回需要导入的组件的全类名数组;1)、默认获取到的是工厂bean调用。:指明这是一个Spring配置类。-同一个session创建一个实例。:快速给容器中导入一个组件。: 手动注册bean到容器中。

2022-10-21 17:21:07 349 1

原创 JUC-9.“锁”事(显式锁与隐式锁/悲观锁与乐观锁/公平锁与非公平锁/可重入锁/读写锁(独占/共享/降级)/邮戳锁/死锁)、锁升级

有关Lock(显式锁)、synchronized(隐式锁)的内容前面章节已介绍...这里不再赘述。 认为自己在使用数据的时候一定有别的线程来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。1.2 乐观锁 乐观锁认为自己在使用数据时不会有别的线程修改数据,所以不会添加锁,只是在更新数据的时候去判断之前有没有别的线程更新了这个数据。 如果这个数据没有被更新,当前线程将自己修改的数据成功写入。如果数据已经被其他线程更新,则根据不同的实现方式执

2022-10-18 16:49:47 434

原创 JUC 8-ThreadLocal、Java对象内存布局与对象头、AbstractQueuedSynchronizer(AQS)

ThreadLocal 并不解决线程间共享数据的问题ThreadLocal 适用于变量在线程间隔离且在方法间共享的场景ThreadLocal 通过隐式的在不同线程内创建独立实例副本避免了实例线程安全的问题每个线程持有一个只属于自己的专属Map并维护了ThreadLocal对象与具体实例的映射,该Map由于只被持有它的线程访问,故不存在线程安全以及锁的问题ThreadLocalMap的Entry对的引用为弱引用,避免了ThreadLocal对象无法被回收的问题。

2022-10-17 21:40:22 339

原创 JUC-7.CAS与原子类

CAS是 compare and swap的缩写,中文翻译成比较并交换,实现并发算法时常用到的一种技术。它是一条CPU并发原语。 它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新值,这个过程是原子的。它包含三个操作数——内存位置、预期原值及更新值。 执行CAS操作的时候,将内存位置的值与预期原值比较: 如果相匹配,那么处理器会自动将该位置值更新为新值, 如果不匹配,处理器不做任何操作,多个线程同时执行CAS操作只有一个会成功。 以

2022-10-17 17:23:37 324

原创 JUC-6. JMM(java内存模型)与Volatile

目录一、JMM1.1 Java内存模型Java Memory Model1.1.1 可见性1.1.2 原子性1.1.3 有序性1.2 多线程对变量的读写过程1.3 多线程先行发生原则之happens-before1.3.1 次序规则1.3.2 锁定规则1.3.3 volatile变量规则1.3.4传递规则1.3.5 线程启动规则(Thread Start Rule)1.3.6 线程中断规则(Thread Interruption Rule)1.3.7 线程终止规则(Thread Termination Ru

2022-10-17 11:30:57 219

原创 JUC-5.细说CompletableFuture

Future如获取异步任务的、的、判断任务、判断任务执行等。接口中定义了需要有返回值的任务需要实现的方法。比如主线程让一个子线程去执行任务,子线程可能比较耗时,启动子线程开始执行任务后,主线程就去做其他事情了,过了一会才去获取子任务的执行结果。例如我们调用get()方法是阻塞的。一旦调用get()方法,不管是否计算完成都会导致阻塞。并且不一定会获取到期望的结果,比如子线程当时还没有完成任务。若采取下面轮询的方式,先判断,再获取返回值,将。

2022-10-16 15:40:48 407

原创 JUC-4.初识Callable&Future/CompletableFuture

CompletableFuture 在 Java 里面被用于。

2022-10-16 14:44:02 121

原创 JUC-3.三大辅助类/阻塞队列/forkjoin

JUC 中提供了三种常用的辅助类,通过这些辅助类可以很好的解决线程数量过 多时 Lock 锁的频繁操作。这三种辅助类为:•: 减少计数•: 循环栅栏•: 信号灯。

2022-10-16 14:39:03 326

原创 JVM-3.类的加载/类加载器/运行期优化

使用场景:1)想加载非 classpath 随意路径中的类文件2)都是通过接口来使用实现,希望解耦时,常用在框架设计3)这些类希望予以隔离,不同应用的同名类都可以加载,不冲突,常见于 tomcat 容器定义方式:1. 继承父类2. 要遵从双亲委派机制,重写findClass方法 注意不是重写 loadClass 方法,否则不会走双亲委派机制3. 读取类文件的字节码4. 调用(return)父类的方法来加载类使用:使用者调用该类加载器的loadClass方法。

2022-10-07 16:43:23 390

原创 JVM-2.垃圾回收

1.确定调优的目标-内存?响应速度?吞吐量?响应速度调优的重点是在短的时间内快速响应高吞吐量应用更关心的是如何尽可能快地完成整个任务,不考虑快速响应用户请求2.新生代GC在该区域的执行频率高于其他区域。-如果新生代的大小太小,则会执行多次GC;如果太大,则只执行full GC(老年代装不下),这可能需要很长时间才能完成。Oracle建议将新生代的大小保持在总堆大小的25%~50%。-使幸存区大到能保留【当前活跃对象+需要晋升对象】-晋升阈值。

2022-10-06 20:33:52 525 1

原创 JVM-1.内存结构

线程一在执行某条指令之后CPU要转去执行线程二,那么线程一的PC将会把下一条将要执行的指令的地址保存起来,等到CPU把使用权重新交给线程一时,其PC再根据地址将下一条指令取出来,继续向下执行。5.2 将这个字符串对象尝试放入串池,如果有则并不会放入,如果没有会。5.1 将这个字符串对象尝试放入串池,如果有则并不会放入,如果。如果方法内局部变量没有逃离方法的作用范围,它是线程安全的。分配的越大,支持同时运行的。, 放入串池, 会把串池中的对象返回(1.6),都有可能产生内存溢出(加载的类太多了)。

2022-10-05 20:41:11 116

原创 设计模式-4.行为型模式(模板方法模式/策略模式/命令模式/职责链模式/状态模式/观察者模式/中介者模式/迭代器模式/访问者模式/备忘录模式/解释器模式)

定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下。

2022-10-04 20:19:38 436

原创 设计模式-3.结构型模式(代理模式/适配器模式/装饰者模式/桥接模式/外观模式/组合模式/享元模式)

由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。Java中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理代理类在编译期就生成,而动态代理代理类则是在Java运行时动态生成。动态代理又有JDK代理和CGLib代理两种。

2022-10-03 18:52:43 1023

原创 设计模式-2.创建者模式(单例模式/工厂模式/原型模式/建造者模式)

创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。

2022-09-30 09:40:23 292

原创 设计模式-1.概述/UML类图/软件设计原则

设计模式是一套被反复使用、多数人知晓 的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题, 以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路优点:1.正确使用设计模式具有以下优点。2.可以提高程序员的思维能力、编程能力和设计能力3. 使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从而缩短软件的开发周 期。使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。分类:创建型模式-用于描述“怎样创建对象。

2022-09-28 18:03:23 301

原创 JUC-2. 初识可重入锁/读写锁

现实中有这样一种场景:对共享资源有读和写的操作,且写操作没有读操作那 么频繁。(因为获取写锁的时候,如果发现当前的读锁被占用,就马上获取失败,不管读锁是不是被当前线程持有)。(获取读锁时如果发现写 锁被占用,只有写锁没有被当前线程占用的情况才会获取失败)。针对这种场景,JAVA 的并发包提供了读写锁。,当它同时获取了写锁和读锁后,还可以先释放。其他线程对该资源进行读和写的操作了。一个资源没有任何问题,所以应该。但是如果一个线程想去。, 它表示两个锁,一个是。, 或者==有写请求,但。

2022-09-28 10:36:47 240

原创 JUC-1.基本概念/Lock与synchronized/线程间通信/集合的线程安全/线程池/LockSupport与线程中断

JUC 就是工具包的简称。这是一个处理线程的工具包,JDK 1.5 开始出现的。:指在系统中正在运行的一个应用程序;程序一旦运行就是进程;进程— —资源分配的最小单位。:系统分配的基本单元,或者说进程之内独立执行的一个 单元执行流。线程——。:同一时刻多个线程在访问同一个资源,多个线程对一个点。例子:春运抢票 ...:多项工作一起执行,互不干扰,之后再汇总。例子:泡方便面,电水壶烧水,一边撕调料倒入桶中:平时用到的普通线程,自定义线程守护线程。

2022-09-27 09:58:19 295

原创 Docker高级-4.可视化工具Portainer/容器监控之CAdvisor+InfluxDB+Granfana

Portainer 是一款轻量级的应用,它提供了。,默认帐户密码为(admin/admin)。4.配置面板panel。管理Docker环境。直接编排这三个镜像,

2022-09-03 21:41:38 548

原创 Docker高级-3.Docker网络与Docker-compose容器编排

使用指定,默认使用docker01 Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。2 docker run 的时候,没有指定network的话默认使用的网络模式就是bridge,使用的就是。

2022-09-03 21:19:44 1291

原创 Docker高级-2.DockerFile与微服务打包案例

ENTRYPOINT可以和CMD一起用,一般是变参才会使用 CMD ,这里的 CMD 等于是在给 ENTRYPOINT传参。当指定了ENTRYPOINT后,CMD的含义就发生了变化,不再是直接运行其命令而是将CMD的内容作为。

2022-09-03 20:04:56 509

原创 Docker高级-1.复杂安装示例(mysql主从复制、redis集群)

1.新建主服务器实例33072. 进入/volumes/mysql-master/conf目录下新建my.cnf3.设置完后重启4.进入mysql-master容器5. master容器实例内创建。

2022-09-02 21:22:01 206

原创 Docker基础-4.常规安装示例(mysql、redis)

因为该配置和docker run中-d参数冲突,会导致容器一直启动失败。必须注释掉 # bind 127.0.0.1。我们必须新建一个conf文件,修改MySQL的。(可选) requirepass 123。(可选) appendonly yes。类似于mysql,我们。为UTF-8,否则中文会乱码。

2022-09-02 17:16:06 161

原创 Docker基础-3.本地镜像发布与容器数据卷

卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过提供一些用于持续存储或共享数据的特性。Docker容器产生的数据,如果不备份,那么当容器实例删除后,容器内的数据自然也就没有了。卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。一句话来说,有点类似我们Redis里面的rdb和aof文件,将docker容器内的数据保存进宿主机的磁盘中。

2022-09-02 16:08:56 243

原创 Docker基础-2.常用命令与Docker镜像

镜像用户/镜像名:镜像版本号 从tar包中的内容创建一个新的文件系统再导入为镜像。查看镜像/容器/数据卷所占的空间。(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是。docker的镜像实际上由一层一层的文件系统组成,这种层级的。: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。在容器中打开新的终端,并且可以启动新的进程用。直接进入容器启动命令的终端,不会启动新的进程用。

2022-09-02 10:15:31 584

原创 Docker基础-1.简介与安装

Docker是基于Go语言实现的云开源项目。Docker的主要目标是“”,也就是通过对的封装、分发、部署、运行等生命周期的,使用户的APP(可以是一个WEB应用或应用等等)及其能够做到“一次镜像,处处运行”。Docker 将应用打成镜像,通过镜像成为在Docker容器上面的实例,而 Docker容器在任何操作系统上都是,这就实现了。只需要好,换到别的机子上就可以好,大大简化了操作。软件容器容器虚拟化技术。......

2022-08-31 21:25:07 113

原创 Nginx入门-安装/反向代理/负载均衡/防盗链/URLRewrite/动静分离/高可用

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了服务。因它的稳定性、丰富的功能集、简单的配置文件和低系统资源消耗而闻名。

2022-08-31 17:15:19 866

原创 SpringCloudAlibaba-3.分布式事务(Seata)

Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。Seata 中有三大模块,分别是TM、RM 和 TC。其中TM和RM是作为 Seata 的客户端与业务系统集成在一起,TC作为 Seata 的服务端独立部署。分布式事务处理过程的一ID+三组件模型:全局唯一的事务ID:事务协调器,维护全局事务的运行状态,负责协调并驱动全局事务的提交或回滚;:控制全局事务的边界,负责开启一个全局事务,并最终发起全局提交。...

2022-08-27 20:48:48 450

原创 SpringCloudAlibaba-2.熔断、降级与限流(Sentinel)

上面方式的问题:1 系统默认的,没有体现我们自己的业务要求。2 依照现有条件,我们自定义的处理方法又和业务代码耦合在一块,不直观。3 每个业务方法都添加一个兜底的,那代码膨胀加剧。4 全局统一的处理方法没有体现。1.自定义限流处理类- CustomerBlockHandler{return new CommonResult(2020,"自定义的限流处理信息......CustomerBlockHandler");}}2.修改Controller{...

2022-08-27 14:46:55 1066

原创 SpringCloudAlibaba-1.服务注册和配置中心(Nacos)

Nacos是一个更易于构建的动态服务发现、配置管理和服务管理平台。就是注册中心+配置中心的组合。()其实Nacos支持AP/CP两种模式,可以!何时选择使用何种模式?一般来说,如果不需要存储服务级别的信息且服务实例是通过nacos-client注册,并能够保持心跳上报,那么就可以选择AP模式。当前主流的服务如 Spring cloud 和 Dubbo 服务,都适用于AP模式,AP模式为了服务的可能性而减弱了一致性,因此AP模式下只支持注册临时实例。......

2022-08-26 08:07:41 278

原创 SpringCloud-8.分布式请求链路跟踪(Sleuth(zipkin))

在微服务框架中,一个客户端发起的请求在后端系统中会经过不同的的调用来协同产生最后的请求结果,每一个前段请求都会形成一条复杂的分布式服务调用链路,链路中的任何一环出现或都会引起整个请求最后的失败。

2022-08-24 11:04:11 174

原创 SpringCloud-7.消息驱动(Spring Cloud Stream)

Spring Cloud Stream 是一个构建消息驱动微服务的框架。应用程序通过inputs或outputs来与 Spring Cloud Stream中binder对象。通过我们配置来进行binding(绑定) ,而 Spring Cloud Stream 的binder对象负责与。所以,我们只需要搞清楚如何与 Spring Cloud Stream 交互就可以方便使用的方式。Spring Cloud Stream 为一些供应商的消息中间件产品提供了个性化的自动化配置实现。

2022-08-24 10:24:17 230

原创 SpringCloud-6.服务总线(SpringCloud Bus)

什么是总线?在微服务架构的系统中,通常会使用轻量级的消息代理来构建一个共用的消息主题,并让系统中所有微服务实例都连接上来。由于该主题中产生的消息会被所有实例监听和消费,所以称它为消息总线。在总线上的各个实例,都可以方便地广播一些需要让其他连接在该主题上的实例都知道的消息。Spring Cloud Bus是用来将分布式系统的节点与轻量级消息系统链接起来的框架,它整合了Java的事件处理机制和消息中间件的功能,能管理和传播分布式系统间。

2022-08-23 16:26:28 328

空空如也

空空如也

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

TA关注的人

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