- 博客(64)
- 收藏
- 关注
原创 音视频实时通话解决方案
WebRTC (Web Real-Time Communications) 是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。WebRTC 包含的这些标准使用户在无需安装任何插件或者第三方的软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。WebRTC 浏览器与终端兼容性WebRTC 在所有现代浏览器中都可用。
2023-08-17 20:45:29
1662
原创 分布式websocket解决方案
1、客户端先连接客户端,第一次订阅redis主题,并且将自己加入到map容器中。2、当服务端收到消息时,通过redisTemplate发送到主题上,此时所有订阅者都会收到消息,此时就解决了分布式环境下websocket通讯问题。
2023-08-14 22:49:08
973
原创 xtrabackup定时备份
该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。在我们已经准备好xtabackup工具后,我们想实现定时备份,每天全量同步一次,每小时增量备份一次,同时只保留最近14天的备份,可参考以下脚本,如果有其他需求,可在此基础上进行修改。以上脚本是同步脚本,要实现定时任务可以采用linux的crontab。自此,定时任务就生效了。下面增加两个定时任务。
2023-03-14 22:46:35
624
原创 五 NIO vs BIO
1. stream vs channelstream 不会自动缓冲数据,channel 会利用系统提供的发送缓冲区、接收缓冲区(更为底层)stream 仅支持阻塞 API,channel 同时支持阻塞、非阻塞 API,网络 channel 可配合 selector 实现多路复用二者均为全双工,即读写可以同时进行2. IO 模型同步阻塞、同步非阻塞、同步多路复用、异步阻塞(没有此情况)、异步非阻塞同步:线程自己去获取结果(一个线程)异步:线程自己不去获取结果,而是由其它线程送结果(至少两个
2021-08-03 15:43:11
361
3
翻译 四 NIO-网络编程
1. 非阻塞 vs 阻塞阻塞阻塞模式下,相关方法都会导致线程暂停ServerSocketChannel.accept 会在没有连接建立时让线程暂停SocketChannel.read 会在没有数据可读时让线程暂停阻塞的表现其实就是线程暂停了,暂停期间不会占用 cpu,但线程相当于闲置单线程下,阻塞方法之间相互影响,几乎不能正常工作,需要多线程支持但多线程下,有新的问题,体现在以下方面32 位 jvm 一个线程 320k,64 位 jvm 一个线程 1024k,如果连接数过多,必然导
2021-08-02 23:40:10
121
原创 三 NIO-文件编程
3.1 FileChannel⚠️ FileChannel 工作模式FileChannel 只能工作在阻塞模式下获取不能直接打开 FileChannel,必须通过 FileInputStream、FileOutputStream 或者 RandomAccessFile 来获取 FileChannel,它们都有 getChannel 方法通过 FileInputStream 获取的 channel 只能读通过 FileOutputStream 获取的 channel 只能写通过 Rando
2021-07-15 15:23:30
179
原创 二 NIO-ByteBuffer
1.使用案例有一普通文本文件 data.txt,内容为1234567890abcd使用 FileChannel 来读取文件内容@Slf4jpublic class ChannelDemo1 { public static void main(String[] args) { try (RandomAccessFile file = new RandomAccessFile("helloword/data.txt", "rw")) { FileCha
2021-07-15 11:11:02
171
原创 一 NIO 基础-三大组件(Channel、Buffer、Selector)
三大组件1.1 Channel & Bufferchannel 有一点类似于 stream,它就是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前的 stream 要么是输入,要么是输出,channel 比 stream 更为底层。常见的 Channel 有FileChannelDatagramChannelSocketChannelServerSocketChannelbuffer 则用来缓冲读写
2021-07-15 10:21:17
192
原创 性能优化之MYSQL
1、 认识Mysql1.1架构图1.2 Detail1.3 引擎介绍2、性能2.1影响性能的因素2.1.1人为因素-需求count(*) 论坛 实时、准时性、有误差2.1.2程序员因素代码不够好,轮询(使用Group by代替)2.1.3 Cache使用Redis缓存2.1.4对可扩展性过度追求2.1.5表范式2.1.6 应用场景2.1.6.1 OLTP (on-line transaction processing)联机事务处理2.1.6.2 OLAP(On-L
2021-07-01 12:45:34
92
原创 kafka如何实现消费者动态的消费分区
如果消费者动态的增加和删除、以及分区数动态处理kafka会重新进行rebalance当分区数发生变化消费者数量发生变化3种分配策略Range范围策略RoundRobin先计算哈希再轮询Stricky实现过程1、第一阶段JoinGroup,所有消费者先请求kafka集群中最小的broke节点,broke节点决定出consumer中的leader2、第二阶段Synchronizing group state(同步阶段),消费者根据自己决定的分区策略发送给brok
2021-04-07 21:20:34
574
原创 kafka单机版与集群安装与使用
1、下载安装包进入Apache官网下载.2、解压并运行将压缩包上传到linux服务器上,并解压tar -zxvf kafka_2.12-2.7.0.tgz3、修改配置文件进入bin目录下,修改server.proprties此配置是负责告诉zk请求心跳的地址此配置是连接zk4、启动kafka服务启动之前要启动zk,以后台进程启动命令sh kafka-server-start.sh -daemon ../config/server.properties 5、topic消息队列使
2021-04-05 21:46:54
129
原创 引入第三方jar中spring管理的bean
https://blog.csdn.net/bestxianfeng163/article/details/84527895一般作为jar包被引入其他项目,说明是公共模块代码,不需要单独部署。此时应该将该项目的pom.xml中如下内容去掉:
2020-09-28 15:05:47
1525
原创 windows环境下安装多个tomcat
1、配置CATALINA_HOME添加环境变量:CATALINA_HOME1、CATALINA_HOME2、CATALINA_HOME22、修改bin目录下的文件只需要修改这四个即可。3、配置服务名修改service.bat只需要改这两处即可。4、注册服务进入bin目录的cmd窗口输入:service install...
2020-09-02 23:05:12
143
原创 安装cifs-utils解决linux挂载windows共享文件夹
1、安装mount.cifs软件包yum install cifs-utils -y如果是离线环境,请参考我的另一篇文章https://blog.csdn.net/qq_37119960/article/details/1083313732、开始挂载 mount.cifs //192.168.1.110/share /usr/local/winshare -o user=administrator,pass=123456参数说明#pass=123456为Windows里administrat
2020-08-31 22:59:27
12155
原创 下载离线的rpm安装包,解决yum离线环境下的安装
一、让yum命令下载RPM包,而不安装。yum是一个优秀的软件获取与系统更新的工具,主要应用于redhat系列的发行版本上。但是这样一个优秀的工具却没有原生提供只下载不安装的功能,而这样的功能在pacman与aptitude下都有。今天在CentOS的邮件列表上看到有人在讨论这个问题,了解到了这个问题要解决起来非常方便。yum有一个plugin叫做yum-downloadonly,它就可以为用户实现只下载软件包的功能。我们可以使用以下命令安装这个插件:yum install yum-download
2020-08-31 22:55:35
3687
原创 使用Dockerfile创建tomcat
1、首先准备好tomcat与jdk解压到与Dockerfile同级的目录下, 构建文件命名必须为Dockerfile, 为什么同级, 因为build的时候会默认把当前的目录缓存进容器中。2、编写DockerfileFROM tomcat#创建目录RUN mkdir -p /docker_home/local#把当前目录下的jdk文件夹添加到镜像ADD apache-tomcat-8.5.29 /docker_home/local/tomcat8ADD jdk1.8.0_191 /docker
2020-08-29 16:36:14
714
原创 docker run常用命令
docker run :创建一个新的容器并运行一个命令语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]1.OPTIONS说明-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用-i:以交互模式运行容器,通常与 -t 同时使用-d:后台运行容器,并返回容器ID--name:为容器指定一个名称-p:端口映射,格式为:主机(宿主)端口:容器端口-v: 挂载宿主机文件夹,格式为: 宿主机文件夹:容器文件夹--link: 添加链接到另一个容器
2020-08-26 23:48:00
594
原创 docker常用命令
//通过镜像产生一个容器docker run -p port1:port2 containerName:tag//启动一个已有的容器docker start containerID/containerName//停止一个容器docker stop containerID/containerName//重启一个容器docker restart containerID/containerName//与一个已经启动的容器进行交互式操作docker exec -i -t containnerID/
2020-08-26 23:42:21
94
原创 Docker镜像下载慢解决办法
1、进入docker在本机的配置目录: 命令:cd /etc/docker 找到daemon.json文件,如果没有就新建一个:{"registry-mirrors":["https://almtd3fa.mirror.aliyuncs.com"] }补充以上内容并保存2、重启dockersystemctl restart docker之后下载镜像速度飞起。...
2020-08-26 23:16:53
151
原创 redis安装和自启
上传安装包并解压解压命令tar -zxvf redis-5.0.5安装进入redis-5.0.5目录执行安装命令先建好安装目录/usr/local/redis-5.0.5makemake PREFIX=/usr/local/redis-5.0.5 install在将redis.conf拷贝到/usr/local/redis-5.0.5进入/usr/local/redis-5.0.5 ,启动redis./bin/redis-server redis.conf设置自启建立启动脚本
2020-07-26 23:38:16
64
原创 nginx离线安装并设置开机自启
1、环境准备在线情况gcc 安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:yum install gcc-c++ PCRE PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。yum install -y pcre pcre-devel注:pcre-devel是
2020-07-07 17:25:05
554
1
原创 安装多个tomcat
1、解压2、修改三个端口3、设置成开机自启每次开机都要启动tomcat,网上看了好多都是用shell脚本来实现tomcat开机自启动,后来看到一种方法,直接修改系统文件来实现,已经实践过,方法有效。1.修改脚本文件rc.local:vim /etc/rc.d/rc.local这个脚本是使用者自定的开机启动程序,可以在里面添加想在系统启动之后执行的脚本或者脚本执行命令2.添加如下内容:export JAVA_HOME=/usr/local/jdk1.8.0_191/usr/local/apac
2020-07-06 23:45:19
194
原创 安装JDK
1、删除自带的jdk查找jdk命令rpm -qa | grep java删除自带jdkrpm -e --nodeps +包名2、准备安装包并解压解压命令tar -zxvf 压缩包名称3、配置环境变量vim /etc/profile在末尾添加#添加jdk变量export JAVA_HOME=/usr/local/jdk1.8.0_191export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexpo
2020-07-06 22:59:10
230
原创 docker上传镜像(离线环境)
1、将所需要的安装包上传到宿主机上2、上传到docker镜像中文件转镜像的命令docker load < /root/image.tar 或者 docker load -i /root/image.tar尽量使用第二个命令,因为docker load 的时候, < 误写成 >, 会出现这个错误,并且原 tar 包会被修改,修改后就不可用了。执行命令后发现报错:open /var/lib/docker/tmp/docker-import-914762721/apache-to
2020-06-14 22:46:15
487
原创 docker安装(无网络环境下)
下载docker安装包docker官网参考地址:https://docs.docker.com/install/linux/docker-ce/binaries/#install-static-binaries下载静态二进制存档。转到 https://download.docker.com/linux/static/stable/ (或更改stable为nightly或test),选择您的硬件平台,然后下载.tgz与您要安装的Docker Engine-Community版本有关的文件。正式进入安装
2020-06-14 22:01:46
433
原创 minor tomcat
http请求头信息1、封装请求和响应信息封装请求对象:通过输入流,对HTTP协议进行解析,拿到了HTTP请求头的方法和URL。package com.yan.tomcat.request;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;publi...
2020-06-14 14:50:15
70
原创 HashMap(JDK1.8)
1、HashMap存储的数据结构数组+单向链表的储存方式加载因子:0.75,当数组储存的数据量超过75%时进行扩容。数组初始化大小为16,16*0.75=12,使用到12的时候进行扩容(双倍扩容16–>32),扩容必须为2的n次幂,因为计算hash值的时候进行&运算时,要保证011111来进行。单向链表转成红黑树,当链表中的数据大于8时转,当红黑树的节点少于6时变成单向链表。...
2020-01-08 11:23:30
115
原创 搭建mysql主从复制
1、准备两台机器两台linux虚拟机,安装好mysql数据库。主从复制原理:从机通过读取主机的binlog日志写入自身的中继日志来实现同步。ps:不建议安装好一台mysql后,复制到另一台,会出现mysql的server-uuid=06905c59-2d3b-11ea-8f21-000c29942721一致导致主从复制失败。vim data/auto.cnf2、主机配置my.cnf配置...
2020-01-03 10:33:18
97
原创 InputStream读取完整数据
InputStream读取流有三个方法,分别为read(),read(byte[] b),read(byte[] b, int off, int len)。其中read()方法是一次读取一个字节,效率是非常低的。所以最好是使用后面两个方法。关于InputStream类的available()方法。要一次读取多个字节时,经常用到InputStream.available()方法,这个方法可以在...
2020-01-02 14:06:54
6658
原创 mysql基于binlog日志恢复数据
恢复思路首先mysql数据库必须开启binlog日志功能,且有做全备和增量备份,如每周一次全备,每天一次增量备份。先根据全量备份,将数据库中的数据恢复到临近的某一时间点,再找出该时间点到发生事故时段的所有增量备份的binlog文件。1、开启binlog日志功能参考一下mysql配置port=3306default-time_zone='+8:00'sql_mode=NO_ENGINE...
2019-12-31 17:19:00
176
原创 springcloud gateway网关
1、路由配置1.1 搭建环境创建工程导入坐标 <!-- springcloudgateway的内部是通过netty + webflux实现 webflux实现和springmvc存在冲突 --> <dependencies> <dependency> <groupId>org.springframewor...
2019-12-24 22:05:32
141
原创 Zuul网关
1、介绍2、搭建zuul网关服务器2.1 引入依赖 <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactI...
2019-12-22 21:05:58
89
原创 Hystrix之服务熔断与服务降级
高并发处理的两种方式线程池隔离信号量隔离1、对RestTemplete的支持(略)2、对Feign的支持2.1 引入依赖feign中已经继承Hystrix。2.2 在Feign中开启Hystrix在调用方的微服务的application.properties中开启。#开启Hystrix的支持feign.hystrix.enabled=true2.3 自定义一个接口实现...
2019-12-20 16:23:30
395
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人