- 博客(35)
- 收藏
- 关注
原创 简记 nvidia-smi
背景项目使用的GPU 服务器最近显存总是宕机,根据日志分析大概率是显存不足导致。所以查了下怎么看显存。nvidia-smi 简记nvidia-sim 简称NVSMI,提供监控GPU使用情况和更改GPU状态的功能,是N卡驱动附带的,只要装好驱动,就会有这个命令。如果驱动有问题,这个指令就无法使用或者使用的时候展示的数据异常。nvidia-smi 常用命令nvidia-smi 查看显存部分参数解释(加粗的是重点)GPU:本机中的GPU编号(有多块显卡的时候,从0开始编号)图上GPU的编号是:0
2022-03-28 21:22:10
908
原创 core dump 简记
最近项目在运行的过程中经常突然崩溃,看提示显存不足,后来在后台添加显存监控发现一切正常,看错误日志提示开启 core dump。。无赖百度一波,记录一下。core dump这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止,并且在满足一定条件下(这里为什么说需要满足一定的条件呢?下面会分析)会产生一个叫做core的文件。core文件会包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息还有各种函数调用堆栈信息等,我们可以理解为是程序工作当前状态存储生成第一个文件,许多
2022-03-28 09:18:00
217
原创 线程池的配置策略
通常情况下,这是一个复杂的活。所以从别人那里百度了几个过来,我只知道第一个根据任务性质设置要想合理的配置线程池,就必须首先分析任务特性,可以从以下几个角度来进行分析:1)任务的性质:CPU密集型任务,IO密集型任务和混合型任务。2)任务的优先级:高,中和低。3)任务的执行时间:长,中和短。4)任务的依赖性:是否依赖其他系统资源,如数据库连接。任务性质不同的任务可以用不同规模的线程池分开处理。CPU密集型任务配置尽可能小的线程,如配置CPU数+1个线程的线程池。IO密集型任务则由于线程并不是一直
2022-03-05 22:01:36
568
原创 Dockerfile:CMD 和 ENTRYPOINT 区别
Dockerfile 中 CMD 和 ENTRYPOINT 都可以执行命令,有什么区别呢?CMD:指定容器启动的时候需要执行的命令,只有最后一个生效,可被替代ENTRYPOINT:指定容器启动的时候需要执行的命令,可追加测试 CMD 命令# 编写 dockerfile 文件[root@45768e0d0196]# vim dockerfile-cmd-testFROM centos CMD ["ls","-a"]# 构建镜像[root@45768e0d0196]# docker bui
2022-01-03 21:40:31
434
原创 数据卷容器:volume-from
当我们在使用docker容器的时候,会产生一系列的数据文件,这些数据文件希望在别的容器中也可以使用,该怎么做呢案例:1、启动父容器2、启动子容器,“继承”父容器3、在docke01 中创建文件夹d在 docker02 中查看,发现文件也可发现# docker01[root@3caa375ebfd9 dataVolumeContainer2]# lsdc01.txt dc02.txt dc03.txt4、...
2022-01-03 21:14:02
351
原创 docker 具名和匿名挂载
上次做项目容器使用了挂载技术,当别人问我是具名挂载还是匿名挂载的时候,答不出来,只好找机会补习补习……# 匿名挂载-v 容器内路径(不指定主机目录)eg:docker run -d -P --name jdk01 -v /etc/jdk/ jdk测试:启动镜像: -v 后的/etc/jdk/ 是容器路的路径docker run -d -P --name jdk01 -v /etc/jdk/ jdk查看所有卷docker volume ls从图片中可以看出,vlume name 至于容器
2022-01-03 18:07:45
975
原创 使用Dockerfile制作镜像
接上篇:上篇说道 Dockerfile 内容详解;这里说下怎么是用Dockerfile 创建镜像从网上找了个Dockerfile 文件,内容如下FROM openjdk:8-jre-alpineMAINTAINER xxx <xxx@qq.com> RUN echo "http://mirrors.aliyun.com/alpine/v3.6/main" > /etc/apk/repositories \ && echo "http://mirrors.a
2021-12-04 22:30:54
714
原创 Dockerfile文件详解
Dockerfile文件详解目录什么是Dockerfile 文件文件内容说明FROMMAINTAINERRUNADDCMDENTRYPOINTLABELENVWORKDIR目录什么是Dockerfile 文件Dockerfile是一个包含用于组合映像的命令的文本文档。Docker通过读取Dockerfile中的指令自动生成镜像。Docker 从上到下的顺序运行Dockerfile 中的指令。可以在Docker文件中使用RUN,CMD,FROM,EXPOSE,ENV等指令。文件内容说明FROM指
2021-12-04 22:19:31
475
原创 【Python】os.system 执行 ffmpeg 命令不起作用,但终端中可用
os.system 执行 ffmpeg 命令不起作用,但终端中可用踩坑落坑爬坑猜想踩坑本人Java 开发,最近开发音频转码项目,同事提供了一个 Python 工具脚本。执行脚本可使音频转成对应的格式。这是踩坑的开始。落坑拿到脚本工具后,我担心不能正常使用,特意在终端上执行了下,发现一切正常,音频转码也正常的。之后正常开发,通过程序去调用脚本,发现无论如何都无法转码出音频。重新在终端上执行也是没有问题(终端环境就是项目部署的服务器),下面是脚本工具部分代码def get_sr(audio_path,
2021-11-30 09:21:04
3361
3
原创 Redis 数据结构与对象 - 链表
链表简介链表 的定义Redis 的链表特性常用的API简介链表,一种常用的数据结构;提供了高效的节点重排能力以及顺序性的节点访问方式,并且可以通过增删节点来灵活的调整链表长度链表 的定义adlist.h/listNode:listNode 的结构typedef struct listNode{ // 前置节点 struct listNode * prev; // 后置节点 struct listNode * next; // 前置节点 void * value;}listNode;
2021-08-01 18:15:50
78
转载 Docker和K8S 图文简介
2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫“dotCloud”的公司。这家公司主要提供基于PaaS的云计算技术服务。具体来说,是和LXC有关的容器技术。后来,dotCloud公司将自己的容器技术进行了简化和标准化,并命名为——Docker。Docker技术诞生之后,并没有引起行业的关注。而dotCloud公司,作为一家小型创业企业,在激烈的竞争之下,也步履维艰。正当他们快要坚持不下去的时候,脑子里蹦出了“开源”的想法。什么是“开源”?开源,就是开放源代码。也就是将原来内部保密
2021-07-26 15:58:46
202
原创 LinkedList源码解析
距离上一次看源码很久了,有时间翻看了下,顺便做个记录LinkedList是List接口的另一种实现,它的底层是基于双向链表实现的,因此它具有插入删除快而查找修改慢的特点,此外,通过对双向链表的操作还可以实现队列和栈的功能。Node这个内部类只有三个成员变量和一个构造器,item表示结点的值,next为下一个结点的引用,prev为上一个结点的引用,通过构造器传入这三个值。//结点内部类private static class Node<E> { E item; /
2021-05-31 16:41:57
70
原创 Spring AOP -动态代理
Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入,这里跳过,而对于AOP来说,就是java的动态代理机制。动态代理分为两大类:基于接口 – JDK动态代理(主要讲解)基于类 – cglibjava 字节码实现 – javasist在Jdk 的动态代理机制中,有两个重要的类或接口,一个是 InvocationHandler(Interface)、另一个则是 Proxy(Class)。首先先看看官方描述:InvocationHandlerInvocationH
2021-05-31 16:31:47
67
转载 Semaphore源码分析
Semaphore(信号量)是JUC包中比较常用到的一个类,它是AQS共享模式的一个应用,可以允许多个线程同时对共享资源进行操作,并且可以有效的控制并发数,利用它可以很好的实现流量控制。Semaphore提供了一个许可证的概念,可以把这个许可证看作公共汽车车票,只有成功获取车票的人才能够上车,并且车票是有一定数量的,不可能毫无限制的发下去,这样就会导致公交车超载。所以当车票发完的时候(公交车以满载...
2021-05-05 17:33:48
97
转载 CyclicBarrier 源码分析
我们经常会遇到这样的情景,在进行某个活动前需要等待人全部都齐了才开始。例如吃饭时要等全家人都上座了才动筷子,旅游时要等全部人都到齐了才出发,比赛时要等运动员都上场后才开始。在JUC包中为我们提供了一个同步工具类能够很好的模拟这类场景,它就是CyclicBarrier类。利用CyclicBarrier类可以实现一组线程相互等待,当所有线程都到达某个屏障点后再进行后续的操作。下图演示了这一过程。在C...
2021-05-05 17:33:35
95
转载 ReentrantLock源码分析
在Java5.0之前,协调对共享对象的访问可以使用的机制只有synchronized和volatile。我们知道synchronized关键字实现了内置锁,而volatile关键字保证了多线程的内存可见性。在大多数情况下,这些机制都能很好地完成工作,但却无法实现一些更高级的功能,例如,无法中断一个正在等待获取锁的线程,无法实现限定时间的获取锁机制,无法实现非阻塞结构的加锁规则等。而这些更灵活的加锁...
2021-05-05 17:33:18
68
原创 设计模式-观察者
目录简介结构图简单示例使用场景优缺点优点缺点对比 发布订阅 模式简介观察者模式是一种对象行为模式。它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在观察者模式中,主体是通知的发布者,它发出通知时并不需要知道谁是它的观察者,可以有任意数目的观察者接收通知并自行处理。结构图Subject:抽象被观察者,被观察角色把所有观察者对象保存在一个集合里,每个被观察者都可以有任意数量的观察者,抽象被观察者提供一个接口,可以增加和删除观察者对象。
2021-03-31 22:37:02
167
原创 单表优化及总结
SQL优化 - 单表索引分类创建索引查询、删除索引SQL 问题分析分析SQL 执行计划:MySQL 查询优化器干扰索引分类单值索引:单列;一张表可以有多个索引唯一索引:被标记的列数据不能重复复合索引:多个列构成的索引主键索引:特殊的唯一索引,不能为null;创建索引方式一:create 索引类型 索引名 on 表(字段)单值:create index index_age on user(age);唯一:create unique index index_name on user(n
2021-03-31 21:17:19
95
原创 设计模式-策略
策略模式背景问题简介简单演示适用性优缺点结合 Spring 在项目中的使用背景在项目开发中实现某一个功能有多种可能性,根据条件的不同选择不同的方式来完成该功能。最常见的就是所有代码写在一个类中,该类中提供多个方法去实现不同条件下的功能或者干脆就是全部写在一个方法中,通过 if … else 或者 case 等条件来判断进行选择。不管怎么样,都不是太美观,代码臃肿可读性太差,后期如果需要新增一种可能性则可能大动原来的代码,维护起来较为困难。问题如何在保持代码可读性的基础上后期维护也比较方便呢?可以将
2021-03-30 20:55:05
182
原创 MySQL 优化:FIND_IN_SET 使用
文章目录背景简述简单使用和 in 的区别和 like 的区别背景最近在优化项目遇到一个场景:数据库表中某个字段存储是多个字符串连接的;如 合同1(contract1) 对应多个联系人:linker1,linker2,这样 合同A 的Id 对应订单的存储就是 order1,order2;我们需要查询 linker2 和 多少个合同有关;怎么办呢?使用 find_in_set 函数简述MySQL手册中find_in_set函数的语法:FIND_IN_SET(str,strlist)str 要查
2020-11-03 09:35:42
4696
原创 MySQL 之SQL 优化 - 索引
SQL优化 - 索引没想好索引分类创建索引查询、删除索引SQL 问题分析分析SQL 执行计划:MySQL 查询优化器干扰如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入没想好索引分类单值索引:单列;一张表可以有多个索引唯一索引:被标记的列数据不能重复复合索引:多个列构成的索引主键索引:特殊
2020-10-11 21:33:34
225
原创 AQS简介(2) - 方法
文章目录enq 结点入队addWaiter 添加结点unparkSuccessor 唤醒后继结点setHeadAndPropagate 设置头结点和后继结点状态cancelAcquire 取消尝试shouldParkAfterFailedAcquireselfInterrupt 自我中断parkAndCheckInterruptacquireQueueddoAcquireInterruptibly 中断的方式获取锁doAcquireNanos 超时获取锁doAcquireShared 不中断共享锁relea
2020-07-26 22:38:12
296
原创 AQS 简介(1) - 基本元素
文章目录成员变量核心内部类AQS,全称:AbstractQueuedSynchronizer; 提供了一个实现阻塞锁和一系列依赖的FIFO等待队列的同步器框架。AQS 同时提供了互斥模式(exclusive)和共享模式(shared)两种。1、Exclusive:独占,只有一个线程能执行,如ReentrantLock2、Share:共享,多个线程并发执行,如Semaphore、CountDownLatch,CyclicBarrier成员变量//同步队列的头结点private transien
2020-07-26 22:37:13
154
原创 Springboot 启动加载器
Springboot 启动加载器启动加载器简介代码实践方式一:实现 CommandLineRunner,重写 run 方法方式二:实现 ApplicationRunner,重写 run 方法运行结果源码解析执行顺序启动加载器的对比启动加载器简介简单来讲:就是springboot 容器启动之后做些什么初始化工作。代码实践方式一:实现 CommandLineRunner,重写 run 方法@Componentpublic class FirstCommandLineRunner implements
2020-06-28 10:05:43
275
原创 springboot 源码解析(3) - refresh() 方法
文章目录refresh()方法prepareRefresh()obtainFreshBeanFactory()prepareBeanFactory(beanFactory)refresh()方法基于 springboot 的 2.2.1.RELEASE 版本springboot 在启动后,会调用 run 方法创建容器,在完成一系列初始化器,监听器的加载后,开始设置上下文,完成对配置类的加载解析:refresh() 方法调用了父类 AbstractApplicationContext 的refresh(
2020-06-03 11:57:37
483
原创 springboot 源码解析(2) - 监听器
文章目录Springboot 监听器 成员系统监听器 ApplicationListener系统广播器 ApplicationEventMulticaster系统事件监听器注册触发机制(重点)Springboot 监听器 成员系统监听器 ApplicationListenerJDK 监听器声明接口 EventListener/** * A tagging interface that all event listener interfaces must extend. * jdk 的接口;用于
2020-05-27 09:15:13
351
原创 插篇:SpringBoot 中的设计模式 - 监听器模式
文章目录简介代码示例事件监听器广播器测试最近在看 springboot 的源码;在关于 事件处理模块,发现了除了使用工厂模式外还是用了监听器模式。之前没有弄过,于是拜访度娘学习了下。简介监听器模式有三个要素 —— 广播器、事件、监听器广播器:用于事件注册和广播事件:触发的操作监听器:监听器模式的核心,定义事件发生后的动作代码示例事件//定义一个天气事件抽象类;抽象类、接口随便个人喜欢public abstract class WeatherEvent { public abs
2020-05-25 20:47:28
492
原创 springboot 源码解析(1) - 系统初始化器
文章目录功能作用使用方式方式一:添加 spring.factories 配置文件配置文件代码运行结果源码解析方式二:手动添加初始化器方式代码运行结果源码解析方式三:利用 ApplicationContextInitializer 接口的实现类 DelegatingApplicationContextInitializer代码运行结果源码解析最近在看springboot 源码;在网上找到一些视频,对着视频老师的源码整理下资料。功能作用springboot 容器在运行的某个阶段会去回调这些接口方法,完成
2020-05-19 17:43:44
227
原创 @Valid 注解 在项目中的使用经验
简介注解 @Valid 的主要作用是用于数据效验,可以在定义的实体中的属性上,添加不同的注解来完成不同的校验规则,而在接口类中的接收数据参数中添加 @valid 注解,这时实体将会开启一个校验的功能。背景前段时间项目开发的时候,前端传递的参数过多且都要校验,于是出现了 @PostMapping("/user") public String addUserInfo(@RequestBody User user) { if (user.getName() == null |
2020-05-09 17:16:50
674
转载 Redis分布式锁
前言分布式锁一般有三种实现方式:数据库乐观锁;基于Redis的分布式锁;基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正确地实现Redis分布式锁。可靠性首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足...
2020-03-29 23:28:39
56
转载 零拷贝原理和java实现
转载链接:https://www.jianshu.com/p/497e7640b57c什么是零拷贝WIKI中对其有如下定义:"Zero-copy" describes computer operations in which the CPU does not perform the task of copying data from one memory area to another....
2020-02-12 15:57:48
452
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人