引言权限系统模块对于互联网产品是一个非常重要的功能,可以控制不同的角色合理的访问不同的资源从而达到安全访问的作用此外本次课程有视频讲解: http://www.imooc.com/learn/799 ,对应演示系统:http://rbac.54php.cn 权限控制模型ACLRBAC 基于角色的访问控制从上图我们可以看出,ACL是用户和权限直接关系的,RBAC则是通过角色间接关联用户和权限的。所以角色是RBAC系统的一个重要属性Why RBAC为什么我们选择RBAC模型,原因如下方便用户分组方便权限分配和回收扩展方便,可以满足大部分业务需求RBAC框架图中有5个角标数字,对应的就是RBAC模型重要的5个属性RBAC关系图序号关键属性描述1用户 张三、李四、王五2角色销售经理、销售、前台3用户角色关系张三 是  销售经理 、李四 王五 是 销售4权限添加客户、编辑客户、删除客户,查看客户5角色权限关系销售 拥有 查看客户的 权限、销售经理可
缘由在前面写过一个文章 人生苦短,我用Python  给大家简单介绍了一下Python 能做什么。然后广告了下当时的新课程 Python Flask构建微信小程序订餐系统 。该课程上线之后有些同学反馈没有详细讲解Flask的基础知识 和 课程改造的框架为什么这么来的。基于该原因,重新录制了一门新课程:Python Flask 从入门到精通 。希望大家可以喜欢演示地址:http://movie.54php.cn 大纲课程简介本次课程相对来说比较基础,但是麻雀虽小,五脏俱全。重点是从头到尾的给大家梳理讲解整个Flask 框架的完整知识,并通过演变的方式给大家讲解如何打造构造层次分明的高可用MVC框架。主要是告诉大家为什么?而不是就这样用,让大家明白原理。课程是在双系统下面给大家讲解的,大家可以根据自己喜欢的操作系统进行学习:Windows 和 Linux CentOS7。而Python 我们选择的是3.7版本学习路径【收费
多变的2019        时间是一个伟大的发明,未来总会成为过去,对时间逝去的感慨,同时也对未来充满了希望。被度量的2019年过的真快,这一年可以分几个词来聊聊:焦虑、抉择、重新出发、感恩焦虑        相信大家今年都在经历的各种变动和被变动:动荡的一年。其实在2018年底通过身边的一些事情和消息,感觉到危机很大。对于一个家庭大部分(70%左右)收入靠定时工资的,需要支撑各种开销来讲。无论是正在进行时、还是未来的 变动和 被变动,对于我们这种普通家庭都是折腾不起的。当对未来的恐惧不知道如何解决的时候就会非常焦虑。抉择        所谓穷则思变,既然看到未来的一些路,总不能坐以待毙等死。所以在2018年底就在各种找各路朋友和长者咨询。从2018
起因今天登陆服务器想查看一个端口的占用情况,发现好多TIME_WAIT的情况,吓我一跳。如下是TCP 建立连接的示意图缘由time_wait的作用TIME_WAIT状态存在的理由: 1)可靠地实现TCP全双工连接的终止    在进行关闭连接四次挥手协议时,最后的ACK是由主动关闭端发出的,如果这个最终的ACK丢失,服务器将重发最终的FIN, 因此客户端必须维护状态信息允许它重发最终的ACK。如果不维持这个状态信息,那么客户端将响应RST分节,服务器将此分节解释成一个错误(在java中会抛出connection reset的SocketException)。 因而,要实现TCP全双工连接的正常终止,必须处理终止序列四个分节中任何一个分节的丢失情况,主动关闭的客户端必须维持状态信息进入TIME_WAIT状态。   2)允许老的重复分节在网络中消逝  TCP分节可能由于路由器异常而“迷途”,在迷途期间,TCP发送端可能因确认超时而重发
缘由最近我们公司的慢SQL特别多,特别是某个固定的表,每天基本都有好几千的慢查询,但是这个表有特别大,不能随意加索引,索引我们就需要一个工具来协助我们进行改DDL的时候,不影响业务,那就是 PT工具效果图如下是慢SQL数量折线图 明显可以看到大幅度下降了使用场景在线数据库的维护中,总会涉及到研发修改表结构的情况,修改一些小表影响很小,而修改大表时,往往影响业务的正常运转,如表数据量超过500W,1000W,甚至过亿时在线修改大表的可能影响在线修改大表的表结构执行时间往往不可预估,一般时间较长由于修改表结构是表级锁,因此在修改表结构时,影响表写入操作如果长时间的修改表结构,中途修改失败,由于修改表结构是一个事务,因此失败后会还原表结构,在这个过程中表都是锁着不可写入修改大表结构容易导致数据库CPU、IO等性能消耗,使MySQL服务器性能降低在线修改大表结构容易导致主从延时,从而影响业务读取pt-online-schema-change介绍pt-online-schema-change是pe
缘由由于我个人有个小博客,然后还录制了一些课程,所有就建立了对应的微信群,但是微信群的二维码是变化的,总不能经常换了。所以就想搞一个微信机器人,自动加 微信,自动拉群。废话不多说,先上图效果展示大家可以试试效果,效果相当棒需求其他人可以通过二维码加我好友 自动通过好友通过之后 主动发送一些邀请入群链接和介绍信回复 邀请 、加群 可以发送邀请入群链接所有聊天数据都要存储起来 并且可以通过Web展示根据用户输入信息 回复相关内容技术选型Python3Flask:轻量级的MVC 框架itchat :实现微信API相关接口MySQL:存储相关微信内容图灵机器人:调用API实现主动场景回复架构本人没有使用flask 默认的MVC方式,使用了我自己实现过后的:结构分层明了的MVC框架 。结构如下每一个文件夹都有自己明确的作用├── application.py ├── common │   ├── libs │  &nb
  有时候我们把Yii2 版本进行升级之后 会报一些莫名其妙的错误,这次就遇到如下错误信息an Error occurred while handling another error: exception  'yii\web\HeadersAlreadySentException' with message 'Headers already sent in /xxxx/xxxx/xxx.php on line 90.' in /xxxx/xxxx/vendor/yiisoft/yii2/web/Response.php:366 Stack trace: #0 /xxxx/xxxx/vendor/yiisoft/yii2/web/Response.ph
我们都知道CSS盒模型分为IE盒模型和W3C标准盒模型,它们的计算方式和一个CSS属性有关box-sizing。box-sizing属性值content-box | border-box 默认值:content-boxcontent-box当我们对元素设置content-box.demo1 {   box-sizing: content-box;   width: 200px;   height: 200px;   padding: 20px;   margin: 10px;   border: 5px solid #333; } 复制代码在浏览器具体表现为border-box当我们设置成border-
缘由个人在后台获取了一个新浪图片,最近新浪图片无法展示了,看了下http请求返回状态是403。说明被限制住了。原理一般这种限制都是 通过判断 referer 或者请求来源IP 是不是信任的。解决方案方案一增加如下代码在head头部,但是就会导致所有的请求不会有referer ,这对于我们正常完整进行溯源不太友好方案二可以使用反向代理解决下,通过代理服务器 中转下就可以了。个人推荐第二种方式。但是这样会占用服务器的流量效果不要眨眼。哈哈。采集了一些图片
  家里有一条电脑作为存储,安装了redis 服务,但是后面发现redis服务经常有问题,想卸载无法卸载sudo apt remove redis-server Use 'sudo apt autoremove' to remove them. The following packages will be REMOVED:   redis-server 0 upgraded, 0 newly installed, 1 to remove and 202 not upgraded. After this operation, 919 kB disk sp
使用模态框,一般都会自动带上一个属性,tabindex="-1",因为这个属性的存在,导致select2的搜索框无法输入,去掉这个属性即可解决 html中的tabIndex属性可以设置键盘中的TAB键在控件中的移动顺序,即焦点的顺序。   把控件的tabIndex属性设成1到32767的一个值,就可以把这个控件加入到TAB键的序列中。
仿知网https://www.cn-ki.net/仿知网是一个完全可以代替知网的精品网站;是一个非常强大的论文搜索网站。首先这个网站的论文检索结果和知网的搜索结果基本一样,而且这个网站每个账号前期免费提供论文下载,当你的下载次数没了,你完全可以用其它邮箱再注册其它账号使用;当然,如果你不想再注册账号,这个网站提供一块钱随意下载论文一天,也是非常值得尝试。总体而已,如果需要下载论文,这个网站是一个非常好的选择。全球电视直播http://bddn.cn/zb.htm全国电视直播是一个功能非常强大的电视直播网站,真的是十分良心;电脑推荐使用 edge 浏览器打开或者使用其它浏览器打开,然后右键复制视频地址,potplayer 打开链接也可以播放;注意:电脑直接用浏览器打开可能播放不了,手机可以正常播放。它支持几百个电视直播的网站,几乎拥有一般电视直播网站拥有的所有频道,它还支持港澳台卫视,国外电视等等。它还有的特点就是电视直播播放速度和加载速度非常之快,画质也是十分高清;最后,网站界面简洁,没
  问题一 :somaxconn redis启动警告问题:WARNING: The TCP backlog setting of 511 cannot be  enforced because /proc/sys/net/core/somaxconn is set  to the lower value of 128. 这句话的翻译大概就是:对一个高负载的环境来说tcp设置128这个值,太小了。  这是我的理解,绝对的还需到官网理解。然后我们可以手动设置,或者设置永久值临时解决方案echo 512 > /proc/sys/net/core/somaxconn长期解决方案sudo vim /etc/sysctl.conf #ne
  问题最近使用flask jsonify 进行序列号的过程发现 如果是decimal类型 就会出错,错误如下typeerror object of type 'decimal' is not json serializable jsonify解决方案根据 https://github.com/pallets/flask/issues/835 的解决方案如下pip install simplejson
  一台nginx服务器开了目录浏览功能。方便下载文件。使用时发现,目录内的文件,创建时间比实际时间少8小时。查看官方文档:http://nginx.org/en/docs/http/ngx_http_autoindex_module.html  ,找到这个:autoindex_localtime,作用:是否用本地时间显示时间。默认:否,使用UTC时间。设置 autoindex_localtime on 问题解决。
客服系统开源啦相信最近大家在浏览 浪子博客的时候 ,发现右下角有个浮层。这就是最近做的客服系统。先上图我们看看效果功能特性截图版本是多商户版本,功能相对较多,并且为了支付高并发引入了Redis。该应用在生产对外提供服务。主要功能如下提供商家和客服后台游客聊天,每天游客编号固定,游客UUID有效期为永久提供来路、浏览器、操作系统、设备、访问量统计留言功能商家后台添加客服、留言查询、对话查询定制化设置商户配置(自动弹出、浮层名称、商户名称)支持PC + 手机端 + 微信小程序 + 微信公众号支持IE8技术选项Yii2 GatewayWorker (基于WorkerMan)Mysql Redis为什么使用GatewayWorker?由于GatewayWorker是基于 WorkerMan,并且使用php实现的。主要是为了方便出问题比较好查询。而Swoole 使用C写的,效率肯定会比较高。但是由于本人C不行,怕出了问题无法解决。Redis用来干什么的?用来异步操作的,例如异步
        最近是不是感觉到QQ群,微信群编程浪子都不怎么活跃了?那是因为翻过大山越过海洋出去浪去了。废话少说,先搞点图片视频我们炫一炫 :)。由于公众号限制图片和视频只能少部分,大家可以在最后阅读原文查看美图和视频                这次我们出去了10来天,去了泰国的三个地方。可能有些同学说泰国也算翻过大山越过海洋呀,哈哈。原谅本人没离开过亚洲 :)                不同的年龄段可能出去看到和观察的事物不太一样,这里本人说一下我这次出去的一些感受和想法。不接受反驳
前言最近有好几位同学直接微信赞助说快点更新文章。这个要和大家说声抱歉,的确很久没有写文章了。我们也不找借口,我会尽力保证多写文章。今天我们的主题来讲解 如何给自己的网站 加上HTTPSHTTPS是什么?相对于http,你会发现https 多了一个 S,没错这个S 表示的就是  Secure 安全的意思。为什么要加入这个? 主要是由于HTTP是明文传输的,如果被不法相关人截取了可以直接看到。并且在如今互联网下面 很多人都非常在乎隐私,所以HTTPS已经是趋势化的要求了。HTTPS证书如何获得?我们所知道的这个东西是要收费的,目前很多云服务商打着第一年免费的噱头和主机一起做活动(第二年就会收费的)。今天我们要来说的是如何免费获取HTTPS证书。 免费的安全?其实https证书基本上都是安全的,因为现在的加密算法基本已经很难破解。这里面主要关注点应该在于 浏览器是否可以显示 绿标(或者安全锁)而这个安全锁的显示 是浏览器内置了很多 信誉比较好的 SSL证书机构,这些机构颁发
缘由最近帮朋友看一个直播网站的源码,发现这份直播源码借助 阿里云 、腾讯云这些大公司提供的SDK 可以非常方便的搭建一个直播网站。下面我们来给大家讲解下如何借助 腾讯云 我们搭建一个简易的 直播示例云直播架构主要分三部分1:直播端 通过设备 直接通过 直播服务提供方 的推流 地址 进行直播视频,这些直播流视频 会推送到  直播服务提供方  直播服务器云存储2:直播服务提供方  会将 云存储的 视频流 转发到 CDN 节点3:观众 就通过 各种终端 看直播(此时就会根据不同游客 会 访问不同的节点 )生成推送流URL根据 腾讯云直播官方  https://cloud.tencent.com/product/lvb 介绍,所有用户都可以领取20G 的流量,够我们测试了。 准备工作1:官方注册账号 领取20G流量 官方地址: https://cloud.tencent.com/product/lvb2:需
需求我们都知道在Mac电脑下面有一个非常好的抓包工具:Charles。但是这个只能抓代理的数据包。但是有时候想要调试本地网卡的数据库 Charles 就没办法了。就想到了在windows下面的一个Fiddler。搜索了下相关文章发现 还真可以在Mac下面安装Fiddler。Mono安装首先,Mac下需要使用.Net编译后的程序,需要用到跨平台的方案Mono(现阶段微软已推出跨平台的方案.Net Core,不过暂时只支持控制台程序)。安装程序可以从http://www.mono-project.com/download/#download-mac地址下载。我下载的5.16.0版本。 安装完后,在Terminal里执行以下命令(5.16.0是你的版本号)/Library/Frameworks/Mono.framework/Versions/5.16.0/bin/mozroots --import --sync接下来如果想要运行Fiddler,还需要把Mono加入
何为 内网 转 外网从名称 我们就可以 猜到大概的意思。内网指的是我们的家庭网络(特指亚洲地区了),主要是我们亚洲地区公网IP不够每个家庭分配,所以就有了大的局域网内网。外|公网指的 可以直接被访问的网络为什么需要 为什么会 有 “内网转外网的工具“的需求?个人觉得原因有如下在我国的国情下面,基本都是内网IP,不像美国,个人家庭都是公网IP了购买公网IP就相当于要购买服务器,代价有点高本地化调试:例如微信开发基于以上的情况,就有各位大大们发明的各种方法实现 将本地内网网络 转化 为 公网的方法作用目前比较常用的作用有以下几点微信本地调试远程演示:可以随时将本地的程序 给 别人看工具介绍NO.1 Ngrokngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放。我个人常用的是这个,用于微信开发调试,但是嘛最近不是那个二货搞了个带颜色的网站,导致提供免费服务的被微信封了,有时候哇,
需求背景在上一个章节我们讲究了私有云的部署,但是会有一个问题,我如果在外面,如何访问家里电脑上部署的私有云服务?其实这个问题在扩大化说 就是 如何可以在家庭网络以外 可以访问到 家庭网络:公网 访问 内网。内网转外网顾名思义:就是想办法把自己的内网机器 可以直接 让外网可以访问。由于我们互联网技术不是我们国家发明的,在加入互联网之后我们分配到的公网IP也不多,不像美国人口少IP还多,基本每家都有公网IP(好羡慕)。在我们国家需要公网IP必须要购买服务器或者家里安装电信网络。而我家的情况安装了电信公司提供的网络服务有一个 不固定的公网IP。我们的文章我主要解释我家里的网络情况。后面会介绍几种非网络服务商提供的公网IP的方式。电信网络公网IP如上图,通过ip138可以查询到,我的出口IP是上图。切记非电信供应商截图的IP不一定是通过你家,可能是通过多种路由设备转入到你家,这种就不行的。可以看到电信猫的管理界面IP和 ip138查询的一样,就说明我家的IP是公网IP如上图,我家里的网络是 电信
  背景最近做智能家居,需要用到一些应答词 需要自己录制。但是在mac下面通过 QuickTime 录制的是 m4a格式。但是应答词需要 wav格式。所以就需要转化了解决方法# sox 不行, ffmpeg 很麻烦,用 avconv 很简单。安装 如果没有就安装 # apt-get install libav-tools  avconv -i xx.m4a  xx.wav
需求背景工作多年之后发现有太多的电子资料到处存放。个人电脑是Mac,硬盘都不大,放不了太多东西。并且有时候想随时随地存放一些东西。所有就有了大家一个私有存储的需求个人休息在家经常喜欢看电影电视剧,所有就有个想法,上班空隙可以下载自己喜欢看的资源,然后晚上或者休息日可以直接在电视上看,这样就想到了通过DLNA服务来和私有云结合起来效果图私人存储PC手机端DLNA智能电视硬件准备上图是我家的私人机房,是不是很牛逼。哈哈。我们整个系统都搭建在Mini PC(如果只是个人测试可以随便搞个虚拟机就行了)上,非常小。适合放在家里。本人在京东购买的,有需要的可以私聊具体信息。硬件信息如下操作系统:Ubuntu 18.04硬件配置:8G内存 + 1T机械硬盘 + 4个CPU环境:nginx + fpm私人云:NextCloudnextcloud简介nextcloud 是一个php开发的软件,官网地址:https://nextcloud.com/  。官网提供app方便移动上传。同时PC端提供了
最近将树莓派操作系统重新安装了,然后发现了一些问题。这里分享出来给大家问题一:连接外置显示器黑屏解决方法:将SD卡 插入电脑,在电脑中找到SD卡 修改其中的config.txt文件#强制使用HDMI输出 hdmi_force_hotplug=1 #HDMI信号增强 config_hdmi_boost=4 #HDMI输出适配于计算机显示器 hdmi_group=2 #HDMI输出的分辨率及刷新频率 hdmi_mode=9问题二:启动之后显示屏无法占满解决方法如下截图问题三:默认SSH没有开启解决方法:将SD卡 插入电脑,在电脑中找到SD卡 ,在SD卡根目录 创建一个名为ssh的文件,然后把sd卡插回系统开机启动问题四:WIFI配置解决方法:将SD卡 插入电脑,在电脑中找到SD卡 ,在SD卡根目 创建一个 名为 wpa_supplicant.conf 的。wpa_supplicant.conf文件内容如下country=CN ctrl_interface=DIR=/var/run/
缘由为什么要做AIROBOT?其实自从我知道智能家居这个领域之后,就一直想打造一个自己的智能家居控制平台,算是我的一个梦。最开始的项目还是在安居客当时工作的时候做的,项目地址:https://github.com/apanly/autohome 需求是什么就像我们在公司开发产品一样,要先知道自己想实现什么需求,才能动工。其实本人最开始的想法就是能够控制家里的家电,例如电视,空调。现在目前变的越来越多,也发现需要掌握和学习的东西也越来越多了。技术选型操作系统:Ubuntu 18.04硬件配置:8G内存 + 1T机械硬盘 + 4个CPU。在JD沟通的一个minipc,为什么不用树莓派直接做,主要还是功能和需求越来越多,树莓派已经无法满足需求了框架:Python + Mysql + Flask项目地址:https://github.com/apanly/pi3Robot Show Time机器人微信通知生日到了前几天就会发微信通知提醒啦总述根据上面的截图,后面会一个一个给大
在上一篇文章中系统已经烧写到SD卡中了,接下来我们来启动,启动系统。为了方便操作,需要一个HDMI的显示器,USB鼠标和键盘。启动直接将SD卡放入树莓派,通电就启动了。不需要特殊配置就启动了配置网络我家里的网络都是wifi,所以我就直接连接到wifi上了,如下图,配置完成之后IP是192.168.0.106开启远程SSH#在终端中操作 $ sudo raspi-config如上图选择 Interfacing Options 选择上图 选择 SSH,根据提示操作完成就开启了SSH。 然后就可以通过其他机器远程连接了。接下来我就在Mac笔记操作了#ssh的用户是 pi,密码是raspberry $ ssh pi@192.168.0.106系统优化安装Vimsudo apt-get install vim开启root账号登录$ sudo vim /etc/ssh/s
  有时候 Mac 从睡眠状态恢复之后没有声音,这是 Mac OS X 系统的一个 Bug。这是因为 Mac OS X 的核心音频守护进程「coreaudiod」出了问题,虽然简单的重启电脑就能解决,但是如果此时开启了很多程序后者有其他情况不想重启电脑的话,可以按照下面的方法解决此问题。操作步骤:1、在 Mac 中打开活动监视器(在 Finder 的「应用程序」中搜索「活动监视器」可以找到)。2、在「活动监视器」窗口右上角的搜索框里输入「audio」,此时可以搜索到「coreaudiod」进程。3、选中「coreaudiod」进程,点击「活动监视器」窗口左上角的「退出进程」按钮,在弹出的对话框中点击「退出」。4、「coreaudiod」进程退出后会自动重启,这时声音就恢复了
当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化:单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量:字段1、尽量使用TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNED2、VARCHAR的长度只分配真正需要的空间3、使用枚举或整数代替字符串类型4、尽量使用TIMESTAMP而非DATETIME,5、单表不要有太多字段,建议在20以内6、避免使用NULL字段,很难查询优化且占用额外索引空间7、用整型来存IP索引1、索引并不是越多越好,要根据查询有针对性的创建,考虑在WHERE和ORDER BY命令上涉及的列建立索引,可根据EXPLAIN来查看是否用了索引还是全表扫描2、应尽量避免在WH
Docker是什么Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低从这个解释我们不知道大家有没有想到一个优点类似的东西,没错就是 Vagrant :  vagrant打造跨平台可移动的开发环境    ,那么这两个东西有什么区别咧?Docker 与 Vagrant的区别从字面意思上来讲,这两个东西都可以实现虚拟化。Vagrant 是基于Virtualbox等虚拟机软件的实现的(Vagrant 本身并不提供虚拟技术,只是调用Virtualbox等提供的接口,进行虚拟机的管理),而Docker是基于LXC轻量级容器虚拟技术。一般我们用Vagrant来部署开发环境,Do
  • 微信公众号 微信小程序
  • 微信机器人
  • 群1:1046090432
  • 群2:585567981