自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (1)
  • 收藏
  • 关注

原创 mysql主从复制&读写分离

当存在用户并发时,不仅应用层有压力,数据库也会有压力,这时候需要用到mysql 的主从复制功能,主从复制可以用到mysql集群部署和读写分离。如下图,我们可以用一台服务器作为主服务器,进行增删改操作,多台服务站作为从服务器,由于查询远远大于修改的量,所以主服务器的数量可以少于从服务器。接下来进行配置。预先准备两台实验机器,为了方便,本次使用docker容器dockerrun-it --name mysql57 -eMYSQL_ROOT_PASSWORD=123456 -p 3306:33...

2022-02-14 17:52:12 596

原创 thinkphp3.2插入mysql部分字段不生效

最近维护维护一个旧项目,用的是thinkphp3.2,要增加录入的信息,于是就在数据库上增加了字段,让人纳闷的是代码上加了相应的字段,数据库还是储存默认值。打印出执行的sql,语句中居然没有字段的信息!!!这一切的一切都因为框架的字段缓存,关闭了就行,具体关闭方法,db配置中设置:"DB_FIELDS_CACHE" => false...

2021-10-13 15:31:20 320

原创 redis的高级应用(原子性、expired、mq)

我们在项目中经常会用到nosql来储存访问率高的数据,大多数就是用redis,凭借着比mysql高得多的qps支持数,这样做确实能提高处理速度。那么,redis就只能用来做数据存储查询吗?当然不是!redis还有很多功能等待使用。 一、原子性: 面对高并发抢购的场景,单用mysql记录来判断库存很容易发生超卖的情况。这时候我们可以利用redis decr原子性做锁,实现防止超卖。1)使用decr方式:<?php $redis = ...

2021-07-19 17:39:05 482

原创 页面控制输入授权码方能访问

话不多说,直接上代码,在html header中加入 <script language="JavaScript"> var password=""; password=prompt('请输入密码 (本网站需输入密码才可进入):',''); if (password != 'mima') { alert("密码不正确,无法进入本站!!"); window.opener=null; window.

2021-07-15 15:01:31 243

原创 golang的GOPATH、GOBIN环境变量介绍

使用软件版本:>go versiongo version go1.15.2 darwin/amd64一、环境变量使用命令go env可以查看所有与go相关的环境变量。默认读取.bash_profile的设置,使用vi查看文件:>vi ~/.bash_profile我们使用终端run或者build时都会优先使用配置文件中的GOPATH,当然你也可以用export修改,但是这类修改只针对于当前终端,新开一个终端还是会使用默认配置。这种设定对于同时调试多个项目还是挺好的,不用

2021-07-14 16:02:03 2529

原创 ELK日志系统部署和使用初体验

ELK分别是Elasticsearch、Logstash、Kibana三个开源框架缩写。参考文档:https://www.cnblogs.com/yycc/p/7422628.htmlhttps://blog.csdn.net/qq_22211217/article/details/80764568https://www.cnblogs.com/zhaijunming5/p/6639553.html架构:filebeat --> redis -->logstash -

2021-07-09 17:30:11 164

原创 consul使用watches机制,healthcheck不通过时发送预警

参考文档:https://www.consul.io/docs/dynamic-app-config/watches#checkswatches是一个被动触发的动作,预定义有多个类型:Key – 监视指定K/V键值对Keyprefix – Watch a prefix in the KV storeServices – 监视服务列表nodes – 监控节点列表service – 监视服务实例checks- 监视健康检查的值event – 监视用户事件我这里有个..

2021-04-08 16:07:50 897

原创 利用缓冲区,php实时输出数据

我们平常使用的php通常都是php-fpm,作为api或者页面加载。一般的web框架都是在程序运行完毕之后再输出内容,但是有些情况需要实时输出,比如过长的执行过程需要实时监控进度等。这时候我们想到了缓冲区<?phpheader("Content-type:text/html;charset=utf-8");#设置执行时间不限时set_time_limit(0);#清除并关闭缓冲,输出到浏览器之前使用这个函数。ob_end_clean();#控制隐式缓冲泻出,默认off,打

2021-04-07 09:27:52 493

原创 php提取字符串中占位符对应的值

功能描述:已有一个带占位符的消息模块和对应的消息实例,需要提取实例中的变量值,由于字符串可能包含中文、英文、数字等,所以关于字符串的操作采用mb类的函数。//消息模板$str = '尊敬的客户,您兑换的#code61#商品已在#code2#消费成功,感谢您的使用。';//消息实例$str2 = '尊敬的客户,您兑换的优惠券商品已在有家门店消费成功,感谢您的使用。';//已知占位符为#,匹配出模板中的变量preg_match_all('/#.{5,7}#/', $str, $resul

2021-03-04 11:19:46 428 1

原创 GOLANG:beego搭建运行初体验(一)

文档:https://beego.me/docs/quickstart/new.mdgo version:go1.16 linux/amd64beego version:v1.12.3docker环境搭建:go version go1.16 linux/amd64docker run -it -v /Users/gowork/:/go/src/-p 8000:8080 golang:latest安装beego和bee工具由于默认下载的为国外源,众所周知的原因,安装过...

2021-02-25 10:44:40 2891 5

原创 推荐一款在绘图工具processon

免费在线作图、实时协作支持流程图、思维导图、原型图、UML、网络拓扑图、组织结构图等https://www.processon.com/;jsessionid=E241D35B85EB73FB34FF87406BA95207.jvm1

2021-02-05 17:21:53 98

原创 mysql浮点型float、double、decimal长度解释

mysql中浮点型相关的数据类型float、double、decimal等,建立是有两个参数,如FLOAT(Length, Decimals).Length:整个字段的长度,包括整数部分和小数部分。Decimals:小数部分的长度。例如设置FLOAT(4,1),即小数占有1位,整数占用3位,整个字段最大界限是999.9。几个数据类型的使用选择 FLOAT(Length, Decimals) 具有浮动小数点的较小的数 DOUBLE(Lengt

2021-01-20 11:18:39 3721

原创 mysql8使用日志--auto_increment自增值

最近做项目用到mysql8,有个业务场景是创建完资料后跳到资料详情。按常理直接返回个insert id了事。问题就此发生了,每次输出的自增值居然是一样的。然后就进行手动调试SELECT AUTO_INCREMENT FROM information_schema.`TABLES` WHERE Table_Schema='dbname' AND table_name = 'tablename';发现查询出来的AUTO_INCREMENT确实是一样的,这就很奇怪了,于是去翻了下mysql的资料。在

2021-01-18 17:01:51 883 1

原创 workerman分布式部署

文档:http://doc2.workerman.net/326146目标:项目需要研发im聊天功能,若用户量逐渐增大,单服务器的部署方式恐怕无法满足,因此,考虑使用多服务器分布式部署共同支撑大量人群同时在线。首先我们需要先了解运行原理,官方文档的解释是:1、Register、Gateway、BusinessWorker进程启动2、Gateway、BusinessWorker进程启动后向Register服务进程发起长连接注册自己3、Register服务收到Gateway的注.

2020-12-03 17:30:37 1759

原创 mysql json函数使用场景分析

官方文档:https://dev.mysql.com/doc/refman/5.7/en/json-function-reference.html软件版本:mysql5.7 从5.7开始,mysql提供了一些查询、操作的json函数,这些函数不仅仅可作用于json类型的字段,而且能支持text类型,只要保证是json字符串。只是如果text字段中含有不是json格式的字符串,mysql就直接报错,直接异常反馈是项目中接受不了的,另一方面,缺乏json内多级的查询功能,所以json...

2020-12-01 14:52:45 701

原创 使用navicat实现mysqldiff对比功能,并输出执行sql

使用工具:navicat 15.0.18mysql 5.7使用目的:当我们进行项目的迭代开发时,代码的版本控制、数据库的更新都是比较关键的问题。为了保证更新的功能所涉及的sql全部都能在上生产时一次执行,比较土的方法是开发改一条记录一条,但是迭代功能比较多或者多人合作开发时这种方法出差率就会很高了。所以很多人会使用mysqldiff对比功能,原生的mysqldiff 表结构对比是以数据表为单位,新增和删除的操作要另外输出,步骤比较复杂,在这个自动化运维的时代,操作当然是越傻瓜越好。因..

2020-11-09 11:00:14 1115

原创 监控redis之key expired过期事件

软件版本redis: 4.0.10php:7.1redis缓存拥有TTL特性,这个到时间删除缓存数据的特性可以运用到诸多场景,比如:客户下单后半小时不支付自动取消订单,订单完成后几天自动好评,挂机任务完成后发送通知等等。比较普通的方法是创建提个crontab定时检查,但是这个方法时效性会有误差,而且每次任务执行都要查询数据,无形中增加了许多无用数据库压力。所以,我们可以选择更好的方法,利用redis的订阅/发布的模式,事件发生时存入redis并设置时间,到点时监控expired事件即可。.

2020-10-28 15:57:14 3285 2

原创 利用ontimeupdate记录video播放进度

软件版本:php 7.1mysql 8.0.2Chrome实现思路:分两个触发点记录播放进度,一是利用video的 ontimeupdate属性每隔一分钟记录一次,而是关闭页面记录一次。当然如果视频播放只有一个端,完全可以做页面的localstorage缓存,没必要上送到服务端。如果有网页和、微信或者app几个播放端,想要不同端公用统一个播放进度,就有必要与服务端交互了。下面的代码是上送服务端的。html代码 <html> <head> <met

2020-10-19 15:10:46 2163

原创 mysql8 新特性案例解释

官方文档:https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.htmlMySQL从5.7一跃直接到8.0,这其中的缘由,咱就不关心那么多了,有兴趣的朋友自行百度,本次的版本更新,在功能上主要有以下6点:  账户与安全   优化器索引   通用表表达式   窗口函数   InnoDB 增强   JSON 增强一、账户与安全1.用户的创建与授权  在MySQL5.7的版本:  &gt..

2020-10-12 16:41:33 293

原创 Navicat编辑并导出ER图

软件版本:1.5.0.18第一步:右键需要操作的数据库,选择reverse database to model第二步:生成的model之后就能看到每个表的ER图,然后可以添加注释,调试顺序,添加外键的各种操作。系统默认只显示表的字段名和类型,如果你想显示表的comment和字段的comment,勾选右边的选择栏。第三步:编辑完之后就可以导出了,软件支持PDF、PNG、SVG。点击file->export to最后:文件可以作为附件插入数据库文档,或者项目技术介绍..

2020-08-10 18:15:06 3946 2

原创 codeIgniter 4升级使用

官方文档链接:http://codeigniter.org.cn/user_guide/ 下载链接:https://github.com/CodeIgniter4/framework/releases/tag/v4.0.4 初看CI4的文件目录结构给我一种TP的感觉,一个公共的对外目录public包含入口文件、writeable上传文件等,application包含mvc所有逻辑文件,支持多模块化,增加restfulAPI多种操作验证,这些都是比较好的改动。 ...

2020-08-10 17:46:20 421

转载 mysql 创建function获取中文字符首字母

DROP FUNCTION IF EXISTS `GET_FIRST_PINYIN_CHAR`;DELIMITER ;;CREATE FUNCTION `GET_FIRST_PINYIN_CHAR`(PARAM VARCHAR(255)) RETURNS VARCHAR(2) CHARSET utf8 DETERMINISTICBEGIN DECLARE V_RETURN VARCHAR(255); DECLARE V_FIRST_CHAR VARCHAR(2); .

2020-07-17 14:36:02 197

原创 收集mysql查询语句及其分析优化

软件版本: PHP71 MYSQL5.7 CI3.0 本文以ci框架内核为例子展开叙述。众所周知,慢查询优化一直是难题,而慢查询导致的页面加载过慢十分影响用户体验,索引是解决这类问题的最简单粗暴的方法。 有人会通过广泛的添加索引提高查询效率,但是要知道建立的索引不一定合理,查询也不一定能命中。还有,索引是占用内存的,过多后者过大的索引会影响到表写入的速度,一个需要多步复杂处理的业务处理万一出现了超时而且保证不了数据的原子性那就非...

2020-07-01 15:18:54 150

原创 php结合nginx实现文件进行自定义鉴权后下载/播放

  在进行WEB开发时, 必然会遇到文件下载、视频播放等场景, 当操作的文件较小时, 我们可以在后端代码进行完鉴权后加载文件,通过数据流的方式返回,其实也不推荐,因为body 有默认大小限制,还要改大limit,速度也慢, 但是当文件较大时, 再使用接口中返回数据流的方式就显得极其不合适了. 此时, 就需要通过 nginx 读取文件资源向用户进行返回.  但是, 如果当用户进行文件请求时, 我们需要对用户进行身份认证(如视频VIP会员, 文档保密需求, 图片防盗用等等), 这时我们就需要对 nginx

2020-06-29 12:13:25 914

原创 mysql优化-索引选择及查询条件优化

随着项目的运行,数据量的累加,系统就会变得越来越慢,优化成为必然。主流的优化方式有开源、节流,开源为调整服务器配置,节流为提升系统的运行效率。其中mysql的查询占有较高的时间复杂度,以下会介绍mysql的优化方法。 优化原则: 1、面向相应时间 指在一定的工作负载下尽可能的降低相应时间 2、定位时间用在什么地方并进行优化 优化思路: 优化方式:一、数据类型优化 #to be continue...

2020-05-25 14:31:47 623

provinceGeoJson.zip

包含各省的geoJson,可用于绘制地图

2021-01-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除