- 博客(39)
- 收藏
- 关注
原创 接口和抽象类的异同及适用场景
接口和抽象类的异同及适用场景PHP不同点语法上的不同,对接口的使用是通过关键字implements,定义是使用关键字interface;对抽象类的使用是通过关键字extends(当然接口也可以通过关键字extends继承),定义是使用关键字abstract class。接口只有常量和方法,抽象类则包含普通类中的一切机构。接口中的方法都必须是public类型的,而抽象类则不...
2022-03-25 11:05:01
410
1
原创 mysql之高性能索引
mysql之高性能索引当db的量达到一定数量级之后,每次进行全表扫描效率就会很低,因此一个常见的方案是建立一些必要的索引作为优化手段,那么问题就来了:那么什么是索引呢? 索引的实现原理是怎样的? 我们通常说的聚集索引,非聚集索引的区别是什么? 如何创建和使用索引呢?I. 索引介绍MySQL官方对索引的定义为:索引是帮助MySQL高效获取数据的数据结构。简而言之,索引是数据结构1. 几种树的结构a. B+树单来说就是一种为磁盘或者其他存储设备而设计的一种平衡二叉树,在B+tre
2020-12-29 16:58:19
169
原创 Chrome 浏览器input输入框值为空时会自动填充记录的账号密码
偶尔遇到的BUG,算是浏览器的一个BUG,但是我们改不了浏览器啊,只能自己代码去处理了,这点感觉chrome有点恶心。网页中的表单,chrome会默认给自动填充的input表单加上input:-webkit-autofill私有属性就会变成:input:-webkit-autofill { background-color: #FAFFBD; background-image: none; color: #000;}1、纯色背景(添加内阴影)in..
2020-10-13 10:36:22
1622
1
原创 MySql创建索引的原则
MySql索引的使用一直是工作中的重点,一个线上项目如果不能合理使用索引,那带来的危害可能是毁灭性的(数据库锁死、当机等)。所以这一块也是面试中的重点,那么,MySql创建索引的原则有哪些呢?一般来说,在mysql中使用索引的原则有以下几点:1、 对于查询频率高的字段创建索引;索引的目的就是提升查询速度,这一点毋庸置疑。所以对于查询频率高的字段要创建索引,如:用户表的手机号。2、 对排序、分组、联合查询频率高的字段创建索引;3、 索引的数目不宜太多每创建一个索引都会占用相应的物.
2020-08-28 11:15:24
540
原创 MySQL数据库联合索引的命中规则
1)MySQL联合索引遵循最左前缀匹配规则,即从联合索引的最左列开始向右匹配,直到遇到匹配终止条件。例如联合索引(col1, col2, col3), where条件为col1=`a` AND col2=`b`可命中该联合索引的(col1,col2)前缀部分, where条件为col2=`b` AND col3=`c`不符合最左前缀匹配,不能命中该联合索引。2)匹配终止条件为范围操作符(如>, <, between, like等)或函数等不能应用索引的情况。例如联合索引(col1, co..
2020-08-21 16:28:50
4963
1
转载 为什么mysql不建议执行超过3表以上的多表关联查询?
面试官:为什么mysql不建议执行超过3表以上的多表关联查询?weixin_343727282019-06-13 21:26:001240收藏2版权概述前段时间在跟其他公司DBA交流时谈到了mysql跟PG之间在多表关联查询上的一些区别,相比之下mysql只有一种表连接类型:嵌套循环连接(nested-loop),不支持排序-合并连接(sort-merge join)与散列连接(hash join),而PG是都支持的,而且mysql是往简单化方向去设计的,如果多个表关联查询(...
2020-07-09 16:55:14
4308
3
原创 消息队列中间件如何保证消息队列的顺序性?
面试题如何保证消息的顺序性?面试官心理分析其实这个也是用 MQ 的时候必问的话题,第一看看你了不了解顺序这个事儿?第二看看你有没有办法保证消息是有顺序的?这是生产系统中常见的问题。面试题剖析我举个例子,我们以前做过一个 mysqlbinlog同步的系统,压力还是非常大的,日同步数据要达到上亿,就是说数据从一个 mysql 库原封不动地同步到另一个 mysql 库里面去(my...
2020-04-13 14:13:24
329
原创 RabbitMQ简介以及应用场景
一. RabbitMQ 简介MQ全称为Message Queue,消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用...
2020-04-13 13:57:08
288
原创 【消息队列】如何处理消息丢失的问题
1)生产者弄丢了数据 生产者将数据发送到rabbitmq的时候,可能因为网络问题导致数据就在半路给搞丢了。1.可以选择用rabbitmq提供的事务功能,在生产者发送数据之前开启rabbitmq事务(channel.txSelect),然后发送消息,如果消息没有成功被rabbitmq接收到,那么生产者会收到异常报错,此时就可以回滚事务(channel.txRollback),然后重试...
2020-04-13 13:52:47
726
原创 MySQL 多行数据合并 GROUP_CONCAT
表结构及数据DROP TABLE IF EXISTS `course`;CREATE TABLE `course` (`name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,`course_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_g...
2020-04-08 13:00:58
161
原创 多人项目时提高代码质量:代码审查
在项目开发中,代码质量是非常重要的一环。高质量的代码对项目完成质量、能否按时完工有重大影响。而一个团队中开发成员的配置往往是金字塔形的。基于开发成本考虑,项目主管或小组长一般由经验丰富的资深高级程序员担任,开发成员则由普通程序员、新员工、实习生组成。各个开发成员水平参差不齐,以及该行业内开发人员的高流动性。这样的条件和环境必然带来代码质量问题。项目主管难于把握项目进度,很容易造成项目延期,即使加班...
2020-01-10 15:21:32
485
转载 接口和抽象类的异同及适用场景
不同点语法上的不同,对接口的使用是通过关键字implements,定义是使用关键字interface;对抽象类的使用是通过关键字extends(当然接口也可以通过关键字extends继承),定义是使用关键字abstract class。接口只有常量和方法,抽象类则包含普通类中的一切机构。接口中的方法都必须是public类型的,而抽象类则不受限制。一个类可以同时实现多个接口,但...
2020-01-10 10:28:39
216
转载 MySQL索引的介绍和使用
MySQL索引1.介绍为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化显然是重中之重。说起加速查询,就不得不提到索引了。什么是索引? 索引在MySQL中也叫做“键”或者"key"(primary key,unique key,还...
2020-01-02 13:58:08
181
转载 如何写一份程序员爱看的需求文档?
05:42上回分享的从需求到最终的解决方案,产品经理该怎么做?得到了许多人的认可,在这里,非常感谢大家的支持,同时也给笔者很大的信心,接下来分享的文章,希望大家能够喜欢,enjoy~产品经理的生涯中,肯定遇到过如下的痛点吧:1.含辛茹苦地写完了需求文档(PRD),开发人员却将文档束之高阁(一万只草泥马在你的后脑勺奔腾而过……);2.开发人员反复来回地确认需求、细节逻...
2019-10-17 09:26:13
382
转载 PHP消息队列实现及应用
目前对消息队列并不了解其原理,本篇文章主要是通过慕课网学习归纳的一些笔记,为后续学习打下基础。众所周知在对网站设计的时候,会遇到给用户“群发短信”,“订单系统有大量的日志”,“秒杀设计”等,服务器没法处理这种瞬间迸发的压力,这种情况要保证系统正常有效的使用,就需要“消息队列”的帮助。本篇主要通过消息队列的思路进行学习。主要了解如下知识: 1、队列是个什么东西,他能干什么? 2、...
2019-10-16 16:59:48
565
转载 PHP解决抢购、秒杀、抢楼、抽奖等阻塞式高并发库存防控超量的思路方法
如今在电商行业里,秒杀抢购活动已经是商家常用促销手段。但是库存数量有限,而同时下单人数超过了库存量,就会导致商品超卖甚至库存变负数的问题。又比如:抢购火车票、论坛抢楼、抽奖乃至爆红微博评论等也会引发阻塞式高并发问题。如果不做任何措施可能在高瞬间造成服务器瘫痪,如何解决这个问题呢?这里提出个人认为比较可行的几个思路方法:方案一:使用消息队列来实现可以基于例如MemcacheQ等这样的消息队列...
2019-10-07 18:01:08
253
原创 PHP的三种HTTP请求方式
stream_context_create1、curl仍然是最好的HTTP库,没有之一。 可以解决任何复杂的应用场景中的HTTP 请求2. 文件流式的HTTP请求比较适合处理简单的HTTP POST/GET请求,但不适用于复杂的HTTP请求3. PECL_HTTP扩展写代码更加简洁,省事, 但成熟度不好,编程接口不统一,文档和实例匮乏。PHP模拟发送HTTP请求:1、fil...
2019-07-30 09:44:57
427
原创 ThinkPHP5.*使用PHPMailer发送邮件的使用及发送失败解决办法
1.安装:composer require phpmailer/phpmailer2.引入:use PHPMailer\PHPMailer\PHPMailer;(composer安装不需要引入)3.调用:$mail = new PHPMailer ();写一个方法调用发送文件接口/** * 系统邮件发送函数 * @param string $tomail 接收邮件者邮箱 *...
2019-04-26 17:21:33
1946
原创 看了百度小程序的demo和微信小程序的demo,哪家的负责小程序的程序员厉害立竿见影
今天有闲时间下载百度小程序demo查看了一下,好奇去和和微信小程序的demo去做的对比,整体看下来,百度抄的还是不算完美,不少的经典主要功能没抄进去,两家公司的负责小程序的程序猿水平高低立竿见影,很明显腾讯获胜,哎,果然抄袭界的扛把子是腾讯,抄袭一哥的位置也不容易被撼动啊...
2019-03-01 17:10:54
920
原创 百度小程序textarea多行文本输入框从隐藏到显示无法获取焦点
百度小程序textarea多行文本输入框从隐藏到显示无法获取焦点,这是百度小程序的一个BUG吧,我的demo是有两个类型的查询来回切换,包年和按天,开发过程中出现的这个问题,找了半天解决方案没找到,忽然想到在点击查询类型切换时改变下面多文本输入框的name值,也算是解决了吧,之前微信小程序好像就没这个BUG,还有就是百度小程序开发工具是真的垃圾,无力吐槽...
2019-03-01 08:54:10
1003
原创 ThinkPHP5获取UEditor编辑器文本内容的问题把html标签显示出来了(html标签没解析)
后台用到百度的UEditor编辑器的时候出现的问题,添加的时候好还是正常的,但是修改文章内容时出现HTML标签没解析的情况,感觉是UEditor的一个小BUG啊,只能百度找答案了<script id="container" name="body" type="text/plain">{$edit_temp.body|html_entity_decode=###}</scr...
2018-07-19 15:50:19
6800
5
原创 phpstudy集成下Apache配置SSL证书实现加密访问
一、申请购买免费型DV SSL证书1.通过VPS提供商网站申请免费型DV SSL证书2.SSL证书审核通过,即可下载到本地保存下来,二、SSL证书phpstudy集成环境下Apache配置步骤1.首先,确保你的Apache编译了SSL模块,这是支持SSL证书必要的条件(如果没有,请编译,【打开phpstudy】》【其他选项菜单】》【PHP扩展】》【php-openssl】前面勾...
2018-07-19 10:55:06
2656
原创 ThinkPHP5用composer安装workman时出现问题
ThinkPHP5用composer安装workman时出现问题报错信息如下 The openssl extension is required for SSL/TLS protection but is not availab le. If you can not enable the openssl extension, you can disable this error , at y...
2018-07-13 15:15:04
1656
原创 https跨域请求http数据
A站:https://www.aaa.comB站:http://www.bbb.com直接用ajax跨域请求返回数据因为不是https协议网站 ( B站没有https证书 ) 返回的数据或资源所以会被A站拦截阻挡,自己想到解决办法写一个API做中转数据,在A站内些一个接口,A站利用ajax去请求接口,再有接口模拟请求B站获取数据到API接口,然后再返回到A站ajax直接上代码A站ajax请求 $....
2018-06-28 18:03:40
29612
2
转载 jquery ajax error函数和及其参数详细说明
使用jquery的ajax方法向服务器发送请求的时候,常常需要使用到error函数进行错误信息的处理,本文详细的说明了ajax中error函数和函数中各个参数的用法。一般error函数返回的参数有三个: function(jqXHR jqXHR, String textStatus, String errorThrown)。常见调用代码如下: $.ajax({ url: '/H...
2018-06-28 17:38:56
402
转载 PHP浏览器和命令行版本不同(Windows/PhpStudy)
Q:使用phpstudy切换PHP版本后重启PHPstudy, 此时phpstudy提示是已选择版本(PHP7.0);通过访问phpinfo()也是该版本;通过命令行php -v 得出的仍是之前版本(PHP5.4);A1:以为是有XAMPP干扰,导致PHPstudy没有修改配置成功,关闭XAMPP,将PHPstudy检测端口后重启====》问题仍存在 A2:重启电脑====》问题仍存在 A3:灵光...
2018-06-27 17:51:55
950
原创 js将table导出excel 之文件改名及格式化
<html><head> <meta charset="utf-8"><script type="text/javascript" language="javascript"> var idTmr; function getExplorer() { var explor
2018-03-28 17:50:54
4105
3
原创 今天开始抛弃百度开始使用谷歌
作为一个初级的码农,百度在没工作之前就在用了,给我的感觉是,搜索的结果前一页千篇一律是广告,不是我想要的结果,虽然可能因为我搜的都是简单的问题,所以找到答案也不是很难,但是都是一些博客转载,原创的很少,今天偶尔看到一篇码农的博客,写的是百度和google的区别,感同身受,可能之前因为懒惰(l懒得翻墙),不去使用google,但是看到这篇博客,内心感同身受,决定今天开始放弃百度,向大牛们学习,开始使
2017-10-27 10:07:27
295
转载 数据库SQL优化大总结之 百万级数据库优化方案
网上关于SQL优化的教程很多,但是比较杂乱。近日有空整理了一下,写出来跟大家分享一下,其中有错误和不足的地方,还请大家纠正补充。这篇文章我花费了大量的时间查找资料、修改、排版,希望大家阅读之后,感觉好的话推荐给更多的人,让更多的人看到、纠正以及补充。 一、百万级数据库优化方案1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 ord
2017-10-26 17:26:04
324
转载 require或include相对路径多层嵌套引发的问题
php中require/include 包含相对路径的解决办法在PHP中require,include一个文件时,大都是用相对路径,是个很头疼的问题。例如:(网站根目录)├文件夹│ ││ └1.php├文件夹│ ││ └2.php└index.php问题:在1.php中通过include
2017-10-17 12:53:00
669
转载 php设计模式总结-工厂模式
使用工厂模式的目的或目标?工厂模式的最大优点在于创建对象上面,就是把创建对象的过程封装起来,这样随时可以产生一个新的对象。减少代码进行复制粘帖,耦合关系重,牵一发动其他部分代码。通俗的说,以前创建一个对象要使用new,现在把这个过程封装起来了。假设不使用工厂模式:那么很多地方调用类a,代码就会这样子创建一个实例:new a(),假设某天需要把a类的名称修改,意味着很多调用的
2017-10-12 17:14:22
200
转载 浅谈数据库用户表结构设计,第三方登录
说起用户表,大概是每个应用/网站立项动工(码农们)考虑的第一件事情。用户表结构的设计,算是整个后台架构的基石。如果基石不稳,待到后面需求跟进了发现不能应付,回过头来反复修改用户表,要大大小小作改动的地方也不少。与其如此,不妨设计用户表之初就考虑可拓展性,争取不需要太多额外代价的情况下一步到位。先前设计idusernamepassword用户名加上密码,解决简单需求,留个
2017-10-12 17:07:19
358
转载 天天写业务代码,如何成为技术大牛?
转载自云栖社区 作者:华仔爱技术摘要: 写在前面 不管是开发、测试、运维,每个技术人员心理多多少少都有一个成为技术大牛的梦,毕竟“梦想总是要有的,万一实现了呢”!正是对技术梦的追求,促使我们不断地努力和提升自己。然而“梦想是美好的,现实却是残酷的”,很多同学在实际工作后就会发现,梦想是成为大牛,但做的事情看起来跟大牛都不沾边,例如,程序员说“天天写业务代码还加
2017-10-11 14:44:05
335
原创 mySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据
相关知识:redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。redis 提供 6种数据淘汰策略:voltile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰volatile-random
2017-10-09 17:40:02
10241
原创 TP5框架URL重写,简化url(隐藏入口文件)
1、httpd.conf配置文件中加载了mod_rewrite.so模块2、AllowOverride None 将None改为 All3、确保URL_MODEL设置为24、把下面的内容保存为.htaccess文件放到入口文件的同级目录下这是我的 apache配置文件httpd.conf 配置#LoadModule reqtimeout_module modules/mod_r
2017-10-09 14:07:34
11113
转载 养成这6个编程好习惯,助你减少90%BUG
养成这6个编程好习惯,助你减少90%BUG2017-07-28 完美无bug的 程序人生作者丨BinarForge翻译丨黑色巧克力最近一直在读一些关于养成习惯的好书。消化这些书之后,我的思绪开始向更远的地方游荡,开始思考现在已有的习惯是哪些。其中有些是适用于日常生活,有些只适用于工作。但毫无疑问,有一些习惯与编程紧密相连,这些习惯正是值得去分享的。
2017-09-29 18:03:19
206
转载 什么是闭包?
闭包介绍基础概念什么是闭包?简单来说,闭包是指可以访问另一个函数作用域变量的函数,一般是定义在外层函数中的内层函数。为什么需要闭包?局部变量无
2017-09-29 17:34:45
248
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人