- 博客(32)
- 资源 (3)
- 问答 (1)
- 收藏
- 关注
原创 基于WebRTC实现音视频通话
第一步:发起方(拨打电话者)点击拨打电话时,获取本地媒体流并推流给接收方同时捕获接收方推过来的流,捕获到后把流设置到 dom 上,监听 ICE 候选确保能点对连接,生成 offer,通过 websocket 告知接收方并拉起等待接听界面。3)接听,操作跟拨打流程差不多,需要设置远端 SDP(发起方的 offer),添加 ICE 候选(发起方的 ice,这里需要注意的是只有远端 SDP 初始化完毕状态下才能设置 ice)第二步:接收方收到 offer 后,第一步是拉起来电界面,第二步是选择接听或者挂断。
2025-01-14 16:53:51
683
转载 利用 PHP-Casbin 中的优先级模型来做权限控制
在使用Casbin做权限控制时,有了这些优先级模式的加持,让 Casbin 可以更灵活的应对各种各样的需求。特别是在各种工作流/工单审批时,不同的用户有不同或相同的审批权限,可以做出不同的审批结果,当多人审批意见出现冲突时,那么就可以通过优先级来决定最终审批结果,谁的优先级高按谁的审批结果。
2025-01-14 15:21:02
43
转载 使用 PHP-Casbin 在 SaaS 应用中做多租户权限系统架构设计
假设你正在开发一个面向企业的SaaS云服务平台,多租户权限控制的设计一定是必不可少。多租户实现了多个租户共享相同的资源和组件,租户之间的数据隔离,具有很高的成本效益,具有很大的灵活性和可扩展性。通过PHP-Casbin就可以快速的实现的多租户权限控制模型的设计和开发。
2025-01-14 15:11:06
71
原创 业务日志设计
当一个项目足够大的时候,我们需要将统计系统完全独立出去,那么就无法避免数据采集的问题,我们可以在业务触发处增加log日志来记录当前变化的原始数据,提供统计系统进行采集设计一个统计系统的日志记录机制时,主要需要考虑日志的结构、数据存储方案、查询效率和系统扩展能力。一、日志设计1.日志结构时间戳 : 记录事件发生的时间。业务系统标识: 标识记录来源于哪个业务系统。事件类型: 描述业务中发生的具体事件(例如:创建、更新、删除)。用户标识: 记录哪个用户触发了事件(如果适用)。
2025-01-07 19:07:26
711
原创 Mysql使用pt工具在大表添加索引
在MySQL中,使用语句对大表增加索引可能会耗费较长时间,并且可能影响数据库的正常使用。MySQL工具- 无锁表修改表结构,这里无锁表也不是绝对的,在交互原表与中间表 表名的时候也会有元数据锁,只不过时间很短。
2024-10-26 18:41:15
850
转载 内存耗尽后,Redis会发生什么?
作为一台服务器来说,内存并不是无限的,所以总会存在内存耗尽的情况,那么当 Redis 服务器的内存耗尽后,如果继续执行请求命令,Redis 会如何处理呢?
2024-10-26 18:01:31
66
原创 Redis 击穿、穿透、雪崩产生原因以及解决思路
大家都知道,计算机的瓶颈之一就是IO,为了解决内存与磁盘速度不匹配的问题,产生了缓存,将一些热点数据放在内存中,随用随取,降低连接到数据库的请求链接,避免数据库挂掉。需要注意的是,无论是击穿还是后面谈到的穿透与雪崩,都是在高并发前提下,比如当缓存中某一个热点key失效。
2024-10-26 17:48:44
915
原创 灰度发布方案
Apollo主配置:HUIFU_PAY_BACK=https://waimai.3cfood.com/easypay/v1/pay/huifuBack。Apollo灰度配置:HUIFU_PAY_BACK=https://canary-pro.com/easypay/v1/pay/huifuBack。在灰度namespace中设置灰度模式需要替换的配置(当前只设置了队列名和汇付支付回调地址)则获取灰度配置,并且将灰度配置的数据替换主配置相同KEY(不存在则增加)的数据。5.支付请求涉及到的异步回调。
2023-07-05 10:58:02
349
原创 分布式消息服务设计
RabbitMQ简称MQ是一套实现了高级消息队列协议的开源消息代理软件,简单来说就是一个消息中间件,用来保存消息和传递消息的一个容器.
2023-07-05 10:47:04
291
原创 phpstudy的mysql版本升级至5.7
1.先备份原MYSQL文件(然后删除此目录下的MYSQL文件)2.去官网下载mysql5.7版本https://dev.mysql.com/downloads/mysql/查看历史版本选择对应版本文件下载3.把下载压缩文件放置原mysql文件位置并改名为MySQL4.从备份文件中拷贝my.ini到新的mysql文件中(bin目录里面)打开my.ini文件在最后添加#新加innodb_file_per_table = 1skip-grant-tabl..
2021-12-22 16:39:53
1165
原创 docker容器中安装vim
1.同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,获取到最新的软件包:apt-get update2.输入vim安装命令apt-get install vim
2021-12-22 15:56:55
501
原创 php7不再支持mongo扩展
今天从gitlub上面下载了一个用php写的mongo客户端(web端的,rockmongo项目),发现这个项目必须要用mongo扩展。然后立马去pel扩展中心下载了一个最新的mongo扩展(咳咳,其实17年就废弃了),在php.ini中引入后死活找不到mongo这个扩展(php版本:7.0.30)。然后将php版本切换至5.6版本过后发现就正常了,在这里记录一下,php7已经无法再使用mongo扩展,只能用新扩展mongodb...
2020-12-10 20:21:44
322
原创 php高并发中针对nginx较优的配置
一、这里的优化主要是指对 nginx 的配置优化,一般来说nginx 配置文件中对优化比较有作用的主要有以下几项:1.nginx 进程数,建议按照 cpu 数目来指定,一般跟 cpu 核数相同或为它的倍数。worker_processes 8;2.为每个进程分配 cpu,上例中将 8 个进程分配到 8 个 cpu,当然可以写多个,或者将一个进程分配到多个 cpu。worker_cpu_affinity 00000001 00000010 00000100 00001000 00.
2020-12-01 18:46:53
264
原创 MySQL性能优化系统整理
一、介绍数据库的优化可以从以下四个方面做优化,其效果更投入成相反,即:效果:SQL及索引 > 数据库表结构 > 系统配置 > 硬件SQL及索引 > 数据库表结构 > 系统配置 > 硬件SQL及索引 > 数据库表结构 > 系统配置 > 硬件成本:硬件 > 系统配置 > 数据库表结构 > SQL及索引硬件 > 系统配置 > 数据库表结构 > SQL及索引硬件 > 系统配置 > 数
2020-12-01 12:05:40
427
3
原创 虚拟机安装好CentOS系统后发现ifconfig命令无法使用
如图:1.先检查环境变量:发现/sbin存在,那么应该没有安装ifconfig,接下来需要安装2.检查网络环境是否异常:发现网络无法使用,检查网关是否开启:进入此目录找到ifcfg-ens开头的文件并打开,发现ONBOOT=no,将此值设置为yes保存并退出,然后重启服务再ping一下发现正常了3.通过yum命令安装ifconfig:先通过yum search ifconfig命令搜索安装包再通过yum install net-tools.x86_
2020-11-13 11:01:17
2218
原创 关于Mysql消息表的设计
PS:看了很多人的设计方案,感觉大体上没什么变化;由于消息未读数量是一个频繁获取的值,在不考虑缓存的情况下,可以如下设计主表:用来在后台进行管理附表:用于用户的操作获取行为注意:群发消息不要直接发给所有人,做成用户触发式的更新群发消息,避免大量垃圾消息堆积...
2019-11-06 15:42:53
2581
4
原创 Redis的5种基础数据结构
string(字符串):1.字符串是Redis最简单的数据结构,它的内部表示就是一个字符数组。2.Redis的字符串是动态字符串,是可以修改的字符串,内部结构的实现类似于Java的ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配。3.内部为当前字符串分配的实际空间XXXX一般要高于实际字符串长度XXXX.length。当字符串长度小于1MB时,扩容都是加倍现有的空间。如...
2019-10-16 16:50:45
336
原创 RabbitMq流控
简述:流控机制是用来避免消息的发送速率过快而导致服务器难以支撑的情形。内存和磁盘警告相当于全局的流控,一旦触发会阻塞集群中所有的Connection,而本节的流程是针对单个Connection的.原理:1.Erlang进程之间并不共享内存(binary类型的除外),而是通过消息传递来通信,每个进程都有自己的进程邮箱。2.默认情况下,Erlang并没有对进程邮箱的大小进程限制,...
2019-10-15 15:43:43
527
1
原创 RabbitMq内存以及磁盘警告
内存:1.当内存使用超过配置的阈值或者磁盘剩余空间低于配置的阈值时,RabbitMq都会暂时阻塞(block)客户端的连接(Connection)并停止接收从客户端发来的消息,以此避免服务崩溃。与此同时,客户端与服务端的心跳检测也会失效。2.被阻塞的Connection状态要么是blocking,要么是blocked。前者对应并不试图发消息的Connection,比如消费者关联的Conne...
2019-10-15 15:39:53
913
原创 RabbitMq惰性队列
应用场景:1.需要支持更多的消息存储2.消费者由于各种各样的原因(如消费者下线、宕机或者由于维护而关闭等等)导致长时间不能消费消息而造成堆积时重要概念:1.惰性队列会尽可能地将消息存入磁盘中,消费者消费到对应的消息时才会被加载到内存中2.惰性队列会将接受到的消息直接存入文件系统中,而不管是持久化的或者是非持久化的,这样可以减少了内存的消耗,但是会增加I/O...
2019-10-15 15:39:25
478
原创 RabbitMq存储机制
1.不管是持久化的消息还是非持久化的消息都可以被写入到磁盘。2.持久化的消息在到达队列时就被写入到磁盘,并且如果可以,持久化的消息也会在内存中保存一份备份,这样可以提高一定的性能,当内存吃紧的时候会从内存中清除。3.非持久化的消息一般只保存在内存中,在内存吃紧的时候会被换入到磁盘中,以节省内存空间。4.这两种类型的消息的落盘处理都在RabbitMq的“持久层”中完成。持久层...
2019-10-15 15:38:12
687
原创 RabbitMq交换器和队列
注:生产者和消费者都可以声明一个交换器。如果尝试声明一个已经存在的交换器或者队列,只要声明的参数完全匹配现存的交换器或队列,RabbitMq就可以声明都不做,并成功返回。如果声明的参数不匹配则会抛出异常。exchangeDeclare()exchange:交换器type:交换器的类型,常见的如fanout、direct、topicdurable:设置是否持久化,true表示持...
2019-10-15 15:29:03
286
原创 RabbitMq创建生产者和消费者例子
生产者package com.ly.liyong.rabbitmq;import com.rabbitmq.client.*;import java.io.IOException;import java.util.HashMap;import java.util.Map;import java.util.concurrent.TimeUnit;import java...
2019-10-15 15:27:39
684
原创 rabbitMq信道(channel)
1.与Rabbitmq Broker建立连接,这连接就是一个TCP连接,也就是connection.2.建立TCP连接后,客户端可以创建一个AMQP信道(Channel),每个信道都会被指派一个唯一的ID。信道是建立在Connection之上的虚拟连接,RabbitMq处理的每条AMQP指令都是通过信道完成的。3.Connection可以创建多个Channel实例,但是Channel实例不...
2019-10-15 15:24:11
4022
原创 Linux环境安装RabbitMq
安装步骤:下载安装步骤:rabbitmqctl:详细服务的控制rabbitmq-plugins:启动插件rabbitmq-sever:启动服务查看RabbitMq是否启动成功:其他:当原来的服务没有卸载干净时:执行:ps -ef | grep rabbit杀掉相关进程...
2019-10-15 15:21:42
175
原创 主流消息中间件-ActiveMQ
ActiveMQ:面对超大规模并发会有很多问题,适用于并发不大的业务(性能不是很好)KAFKA:只关心吞吐量,强调高性能(消费性可靠性投递不好)RocketMq:高吞吐量、高性能(其他都好就是商业版收费)维护比较困难,需要特定的团队RabbitMQ:集群架构...
2019-10-15 15:15:51
208
原创 ImageMagick之PHP进行图片合并
最近需要使用ImageMagick将PDF的前几页生成的图片合并成一个图片,看了网上很多人的写法,不是抄的就感觉很乱,然后我自己写了一个,这里分享一下经验
2017-12-13 18:26:58
1917
原创 windows系统 安装MongoDB 32位
1.下载地址:链接: https://pan.baidu.com/s/1eRWm0JS 密码: c63k2.直接进行安装(可选择自定义地址)3.建立data文件例如:D:\MongoDb\data4.C:\Windows\system32下以管理员身份打开5.进入你安装的bin地址输入命令,例如:D:\MongoDB\Server\3.2\bin>mongod -d
2017-12-13 10:41:26
497
原创 阿里云centos7安装IonCube的方法详解教程
摘要:我是在安装禅道专业版的时候由于禅道专业版的核心代码是使用 ioncube加密的,所以需要安装ioncube扩展1.uname -a命令查询使用系统版本是32位的还是62位的2.输入命令进入cd /usr/local3.下载解压扩展包 32: 下载:wget http://down
2017-12-13 10:39:29
3446
原创 windows系统 安装OpenOffice(office文档转成PDF文件)
摘要:最近在做文件管理系统的时候,需要将office文档转成PDF文件,于是想到调用OpenOffice软件的com组件去处理1.首先是下载OpenOffice安装包(官网下载需要翻墙,推荐云墙,购买流量下载还是蛮快的) 云盘:https://pan.baidu.com/s/1i43GzPV2.配置组件服务 A.OpenOffice
2017-12-13 10:35:22
5511
原创 MongoDB之PHP的使用(GridFs)
摘要:最近在做一个文档管理系统,使用MongoDB存储二进制数据,也遇到了很多坑,在这里分享一下PS:用的新版的MongoDB一:第一种方法,直接调Driver的方式:一个简单上传例子:classMongoPHP{ private $_db='publicfiles'; private $manager=null;
2017-12-13 10:33:13
890
OBS-Studio工具-支持w7-w8-w10.zip
2020-07-24
jmeter3.1.zip
2020-07-23
windows7下,php7安装imagick扩展
2017-12-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人