live555搭建流视频服务播放视频文件
为了方便,使用docker搭建,用的是docker hub上使用人数最多的一个镜像, docker-compose.yml文件内容如下所示: 12345678910version: "3"services: live555: image: vimagick/live555 container_name: live555 restart: always ports: - 554:554 volumes: - ${PWD}/data:/data 视频文件放在当前目录的data文件夹下, 然后使用vlc播放rtsp流地址测试一下, rtsp地址: 1rtsp://ip:554/demo.264
JVM内存分配机制介绍
本文针对的是hotspot虚拟机, jdk版本1.8的虚拟机进行介绍。 程序计数器线程私有,可以看做是当前线程所执行的字节码的行号,用于下一次线程切换的时候虚拟机定位到上一次执行的位置。 虚拟机栈在一个时间点,只会有一个活动的栈帧,通常叫作当前帧,方法所在的类叫作当前类。 如果在该方法中调用了其他方法,对应的新的栈帧会被创建出来,成为新的当前帧,一直到它返回结果或者执行结束。JVM直接对Java栈的操作只有两个,就是对栈帧的压栈和出栈。 总结几点如下: 线程私有,生命周期与线程相同。描述的是方法执行的内存模型。 进入方法时对应入栈,方法结束的时候对应出栈。 该区域存储着局部变量,操作数,方法出口等信息。 方法区 线程共享。用于存储类信息、常量池、静态变量、JIT编译后的代码等数据。具体放在哪里,不同的实现可以放在不同的地方。 一般情况可以理解成class文件在内存中的存放位置。 在1.7和1.8之后的实现逻辑有所不同。 由于该区域大小一般较小,所以不会对该区域进行垃圾回收。所以在1.7之前的版本,有可能会因为字符串常量池过大导致该区域内存溢出(Permgen sp...
jenkins使用流水线打包springboot和vue镜像
使用jenkins的流水线功能,可以很方便的知道各个步骤的执行进度和所用时间,还是比较方便的。 在流水线中可以使用docker进行打包, 这样就可以很方便的使用任何docker镜像,而不需要安装对应的环境。 本文要实现的目的如下: 从git仓库拉取代码,并允许指定分支或tag jenkins编译代码 构建镜像 push镜像到远程仓库(此处是阿里云仓库) 使用前准备本文的jenkins本身也是docker安装的, 为了直接使用宿主机的docker,需要在安装jenkins容器的时候将宿主机的docker映射到jenkins容器中,比如使用docker-compose时其部分配置如下: 12- /var/run/docker.sock:/var/run/docker.sock- /usr/bin/docker:/usr/bin/docker Java镜像构建springboot工程需要有一个springboot工程的仓库,并且在项目的根文件下新建一个Dockerfile文件, 内容如下: 123456FROM openjdk:17RUN echo "Asia/S...
使用prometheus监控clickhouse
较新版本的clickhouse内部已经支持暴露监控数据给prometheus, 所以此处就不用另外部署clickhouse-exporter服务来获取监控数据。 clickhouse配置修改clickhouse的配置文件config.xml, 将prometheus这一项原先的注释放开,使其生效。 官方文档路径:https://clickhouse.com/docs/en/operations/server-configuration-parameters/settings/#server_configuration_parameters-prometheus 12345678<prometheus> <endpoint>/metrics</endpoint> <port>9363</port> <metrics>true</metrics> <events>true</events> <asynchronous_metrics>t...
克服自己
要克服自己的缺陷,打败自己, 这句话说起来容易做起来却是很难。 你会因为惯性去做使自己舒适的事,这样就容易在舒适的道路上越走越远,也就与你自己制定的目标相去甚远。 如此,要怎样克服自己? 我觉的有如下几点需要注意。 首先不要给自己过于遥远的目标,这样你是一定无法完成的,就会产生懈怠心理。 其次,对于目标一定要检验成果,并且记录下来,不要欺骗自己。 共勉之!
微服务架构中关于事务的一些思考
分布式事务 指的是当事务的操作分布在不同的节点上时, 需要保证事务的ACID特性。 其中最重要的一点是要保证在各个节点上的事务要么同时成功,要么同时失败。 分布式事务的解决方案有多种,下面对几种常见的进行一一说明。 2PC2PC, Two-phase Commit 。两阶段提交,通过引入协调者(Coordinator)来协调所有参与者的行为,并最终决定这些参与者是否要真正执行事务。 两个阶段分别如下: 第一阶段:准备阶段。由协调者询问各个参与节点事务是否执行成功,参与节点返回事务执行结果。参与节点收到通知之后,会进行准备操作,例如执行insert(此时并未commit),准备完成之后会告诉协调节点自己已经准备完成。 第二阶段:提交阶段。协调节点在收到所有参与节点都执行成功之后,就会通知所有节点进行提交操作。若任一节点执行失败,协调节点则会通知所有参与节点回滚数据。 主要缺点如下: 阻塞。 需要等待所有参与者确认OK之后才能commit, 其处理的时间取决于处理事务最慢的那个参与节点。所以不适合并发高的场景。 单点故障。 特别是对协调节点的依赖很大,若协调节点发生故障,则整个...
drone和gitea集成以及hexo博客的自动部署
未完待续! 目的是为了实现hexo博客的自动部署, 每次push完之后, 触发drone ci自动进行部署。 选用drone的原因还是因为轻量, 且功能够用,如果用其他的CI工具,比如jenkins,我这小小的VPS部署服务一多,就扛不住了。 本文中drone是和gitea进行集成的, 如果要和其他仓库集成, 参考官方文档即可:https://docs.drone.io/ 部署服务还是通过docker来进行。 准备工作登录gitea, 进入设置->应用, 新建一个给drone用的OAuth2授权 注意, 重定向URI(Redirect URI)是你的drone服务的域名加上login。 生成授权之后, 会得到一个客户端ID和客户端秘钥, 记下来, 后面会用到。 drone搭建本文在部署的时候, 是将drone和gitea进行集成, drone的服务分为两部分: drone-server drone-runner-docker 本人将这两个服务都部署在同一个docker-compose.yml中,同时数据库还是连接的一个单独的mysql容器服务,所以需要先创建数据库,...
记录服务异常重启导致clickhouse启动失败
测试环境中某个clickhouse实例由于意外断电而终止,重新启动报错,报错的关键信息 DB::ParsingException: Cannot parse input: expected ‘columns format version: 1\n’ at end of stream 其中报错的日志如下: 1{} <Error> auto DB::MergeTreeData::loadDataParts(bool)::(anonymous class)::operator()() const: Code: 27. DB::ParsingException: Cannot parse input: expected 'columns format version: 1\n' at end of stream. (CANNOT_PARSE_INPUT_ASSERTION_FAILED), Stack trace (when copying this message, always include the lines below): ...
mysql中undo、redo、binlog日志区别和说明
本文针对的都是MySQL的Innodb引擎。 1. binlog二进制日志。记录数据库的所有写操作。注意此处记录的是逻辑日志。 可用于主从复制、增量备份、监听binglog实现缓存一致性。 1.1 常用命令12345678-- 查看binlog配置信息show variables like '%log_bin%';-- 查看所有的binlog文件show binary logs;-- 查看当前正在使用的binlog文件show master status; 1.2 写入策略通过show binary logs命令可以看到当前数据库使用的哪些binlog文件, 如下图所示: mysql会按照一定的规则,生成对应的日志文件,并按照编号从小到大依次生成。 binlog日志在写入时, 按照其日志记录类型不同, 分为如下三种情况: statement: 记录的是sql原文, 每一条对数据的写操作都会记录在binlog中 优点: 不需要记录每一行的变化, 能够减少binlog日志量,提升性能。 缺点:由于记录的是sql原文,所以还需要记录一些额外的相关信息,...
个人博客工具搭建
背景记录一下本人VPS上搭建的几个专门为个人博客使用的一些工具软件,为了方便, 都是使用docker进行部署,并且为了便于保存,使用docker-compose方式启动,方便后续修改。 因为vps的规格较低,所以在挑选工具时,会尽量偏向于内存占用小的。 下面介绍一下用到的一些工具, 都采用docker自建服务。 公用数据库搭建为了尽量减小资源,专门部署了一个mysql实例(docker方式),各个需要数据库的服务都会建立一个自己的库,然后都连接到这个实例上。 mysql实例的docker-compose.yml文件如下, 在这之前,需要创建一个docker网络,然后将所有需要连接到该数据库的docker服务都连接到该网络上即可,具体连接方法可参考下面的umami或waline中的配置。 此处创建的docker网络名为db-net,创建命令:docker network create db-net mysql的docker-compose.yml文件 123456789101112131415161718192021222324version: "3"netwo...




