avatar
文章
185
标签
42
分类
24

首页
时间轴
分类
标签
资源
码农小山
搜索
首页
时间轴
分类
标签
资源
PHP基础(十一):文件管理
发表于2022-05-15|编程PHP
文件管理有哪些文件操作? 文件读操作 读取文件前,通常需要先判断文件是否存在(使用file_exists()函数)、文件能否读取(使用is_readable()函数),读取文件的方法有: fgets(fp[, length=1024]): 会在到达指定长度($len-1)、碰到换行符、读到文件末尾 (EOF)时,停止运行,返回读取的字符串 fread(fp, length):会在到达指定长度或文件末尾(EOF)时,停止运行,返回读取的字符串 file_get_contents(path, include_path, context, start, max_length): 把整个文件读入一个字符串中 文件写操作 写入文件前,通常需要先判断文件是否存在(使用file_exists()函数)、文件能否写入(使用is_writable()函数),写入文件的方法有: fwrite(fp, string, [, length]): 会在到达指定长度、读到文件末尾(EOF)时,停止运行,返回写入的字节数 file_put_contents($filename, $data [, $mode ...
PHP基础(十):数组
发表于2022-05-14|编程PHP
数组在PHP中,数组实际上是一个有序映射。映射是一种把values关联到keys的类型。数组的目的是把一系列数据组织成一个可以方便操作的集合整体,数组的最小单元实体是键和值。 如何进行数组的定义与声明? 数组的声明 a. 通过array函数声明数组 b. 直接为数组赋值声明 数组类型 索引数组、关联数组 数组遍历 a. 使用for语句循环遍历 b. 使用foreach语句遍历数组 c. 联合使用list()、each()和while()循环遍历 数组的增删改查操作 a. 直接追加 b. 入栈操作追加 c. unset()函数删除数组成员或数组 合并数组 array_merge() 判断数组是否为空 a. 使用count() b. 使用empty() c. 使用循环 d. 使用implode() 什么是多维数组?多维数组指的是数组中的元素还是数组 数组函数有哪些? 函数原型 函数作用 说明 in_array($needle, $haystack [, $strict]) 在数组中搜索一个特定值,若找到,返回true;否则,返回false 对于空值与0或1时 ...
PHP基础(九):函数
发表于2022-05-13|编程PHP
函数函数分为系统函数和用户自定义函数。PHP中所有的函数和类具有全局作用域,可以在内部定义外部调用,反之亦然。PHP不支持重载,也不可能取消定义或重定义已声明的函数。 值传递和引用传递的区别是什么?PHP函数参数传递的方式有两种:值传递和引用传递,标量类型默认为值传递,对象默认为引用传递。如需引用传递可以显式在变量前加上& 什么是默认参数?什么是函数返回值?若一个函数需要返回多个值,可以通过以下两种方式实现: 返回数组 引用 如何进行函数调用?
算法-PHP
发表于2022-05-12|计算机基础数据结构与算法
1.查找算法1.1 顺序查找时间复杂度:O(N) 代码: 123456789101112131415// 顺序查找function orderSearch(array $arr, int $needle){ /*for ($i = 0, $count = count($arr); $i < $count; $i++) { if ($arr[$i] == $needle) { return true; } }*/ foreach ($arr as $v) { if ($v == $needle) { return true; } } return false;} 1.2 二分查找时间复杂度:O(logN) 代码: 12345678910111213141516171819202122232425262728293031// 二分查找-非递归版本funct ...
PHP基础(八):正则表达式
发表于2022-05-12|编程PHP
正则表达式正则表达式的作用主要如下: 实现对一个字符串的切割,切割后返回一个数组,如split() 实现对一个字符串中符合的内容批量替换,若替换为空,则达到了过滤的作用,如preg_replace() 判断一个字符串中是否含有符合的子字符串,如preg_match()/preg_match_all()
MySQL 锁
发表于2022-05-11|后端MySQL
1. 全局锁和表锁什么场景会用到?MySQL 中,锁就是协调多个用户或者客户端并发访问某一资源的机制,保证数据并发访问时的一致性、有效性。 可以分为:全局锁、表锁和行锁。 1.1 全局锁全局锁会关闭所有打开的锁,并使用全局读锁锁定所有表。 命令: FLUSH TABLES WITH READ LOCK; 简称:FTWRL UNLOCK TABLES; 当 session1 执行 FTWRL 后,本线程 session1 和其它线程 session2 都可以查询,本线程和其它线程都不能更新。 原因是:当执行 FTWRL 后,所有的表都变成只读状态,数据更新或者字段更新将会被阻塞。 全局锁通常使用的场景: 全局锁一般用在整个库(包含非事务引擎表)做备份(mysqldump 或者 xtrabackup)时。也就是说,在整个备份过程中,整个库都是只读的,其实这样风险挺大的。如果是在主库备份,会导致业务不能修改数据;而如果是在从库备份,就会导致主从延迟。好在 mysqldump 包含一个参数 --single-transaction,可以在一个事务中创建一致性快照,然后进行所有表的备份。因此增加 ...
贪心算法
发表于2022-05-11|计算机基础数据结构与算法
面试实战 Assign Cookies(#455) 程序具体实现: 见代码。
PHP基础(七):字符串
发表于2022-05-11|编程PHP
字符串处理函数有哪些? 函数类别 函数原型 函数作用 查找字符位置 strpos($str, $sch [, $offset=0]) 查找sch在str中从offset开始首次出现的位置,offset默认为0,标识从头开始查找;若无,返回false stripos($str, $sch [, $offset=0]) 与strpos功能类似,不同的是stripos不区分大小写 strrpos($str, $sch [, $offset=0]) 查找sch在str中的最后一次出现的位置 提取字符串 substr($str, $start [, $len]) 从str中start位置开始提取[len长度的字符串] strstr($str1, $str2) 从str1搜索str2并从它开始截取到字符串结束;若无,返回false stristr($str1, $str2) 功能同strstr,只是不区分大小写 strchr($str, $sch [, $before_search]) 查找sch在str中第一次出现的位置,并返回从该位置到字符串结尾的所 ...
PHP源码
发表于2022-05-10|源码PHP7源码
1. PHP7的新特性1.太空船操作符 <=>太空船操作符用于比较两个表达式 例如,当$a 小于、等于或大于$b 时它分别返回-1、0 或 1 2. 类型声明 3. NULL 合并操作符 4. 常量数组 5. NameSpace 批量导入 6. Throwable 接口 7. Closure::call() 8. intdiv 函数 9. list 的方括号写法 10.抽象语法树(AST) 2. 基本变量和内存管理1.小而巧的 zval定义: 12345678910111213141516171819202122232425262728293031323334353637383940414243typedef union _zend_value { zend_long lval; /* long value */ double dval; /* double value */ zend_refcounted *counted; zend_string *str; zend_array ...
Linux命令
发表于2022-05-10|后端Linux
1.压力测试相关1.1 参数说明-n:执行的请求个数,默认执行一个请求 -c:一次产生的请求个数,即并发个数 -p:模拟post请求,文件格式为name=xiaoshan&age=30,配合-T使用 -T:post数据使用的Content-Type头信息,如-T 'application/x-www-form-urlencoded' 1.2 模拟GET请求 直接在URL后面带参数即可 1ab -c 10 -n 10 [http://www.test.api.com/?gid=2](http://www.test.api.com/?gid=2) 1.3 模拟POST请求 在当前目录下创建一个post.txt 编辑文件post.txt,写入name=xiaoshan&age=30,相当于传递name,age等参数 1ab -c 10 -n 100 -p post.txt -T 'application/x-www-form-urlencoded' 'http://test.api.com/ttk/auth/info/&#x ...
MySQL 事务
发表于2022-05-10|后端MySQL
1.数据库突然断电会丢数据吗?1.1 什么是事务?根据《高性能 MySQL》第 3 版 1.3 事务一节中定义: 事务就是一组原子性的 SQL 查询,或者说一个独立的工作单元。如果数据库引擎能够成功地对数据库应用该组查询的全部语句,那么就执行该组查询。如果其中有任何一条语句因为崩溃或其他原因无法执行,那么所有的语句都不会执行。也就是说,事务内的语句,要么全部执行成功,要么全部执行失败。 一个良好的事务处理系统,必须具备 ACID 特性: atomicity(原子性) :要么全部执行,要么全部都不执行。原子性是由undo log来保证的,因为undo log记录着数据修改前的信息。 consistency(一致性):在事务开始和完成时,数据都必须保持一致状态。一致性是事务的目的,一致性由应用程序来保证。 isolation(隔离性):事务处理过程中的中间状态对外部是不可见的。隔离性由数据库提供隔离级别供我们选择,分别有read uncommitted, read committed, repeatable read, serializable。 durability(持久性):事务完成 ...
RabbitMQ
发表于2022-05-10|后端消息队列
简介RabbitMQ是一个高可用的消息中间件,有以下作用: 异步消息传递 支持多种开发语言 可插拔的身份验证、授权 RabbitMQ-Manager可用于管理和监视 使用RabbitMQ作为生产者和消费者时,基本上有2种使用场景: 一个/多个生产者,多个共享消费者 一个/多个生产者,多个独立消费者 共享的消费者可以同时消费一个队列的数据,增加吞吐量;独立的消费者不共享队列,每个消费者都有自己的队列,可以定义规则从exchange中pull数据到自己的queue中。 概念queue 数据队列,数据可以推送到queue,也可以从queue中消费 exchange 交换机,将数据推送到交换机中,队列可以绑定交换机,交换机的类型不同,所支持的绑定规则也不同。 fanout:没有规则,所有exchange中的数据 direct:精确匹配,只绑定routingKey指定值的数据 topic:更加灵活的规则,routingKey必须是一个由 . 分隔开的词语,* 用来表示一个单词,# 用来表示任意数量(0个或多个)单词 常用操作封装 多个共享消费者多个共享消 ...
消息队列
发表于2022-05-10|后端消息队列
定义来看看维基百科怎么说的,顺带学学英语这波不亏: In computer science, message queues and mailboxes are software-engineering components typically used for inter-process communication (IPC), or for inter-thread communication within the same process. They use a queue for messaging – the passing of control or of content. Group communication systems provide similar kinds of functionality. 翻译一下:在计算机科学领域,消息队列和邮箱都是软件工程组件,通常用于进程间或同一进程内的线程通信。它们通过队列来传递消息、传递控制信息或内容,群组通信系统提供类似的功能。简单的概括下上面的定义:消息队列就是一个使用队列来通信的组件。我们日常所说的消息队列指的是消息中间 ...
数据库和缓存一致性总结
发表于2022-05-10|后端缓存
1.常见处理方式对于缓存(例如Redis)和数据库的操作,主要有以下两种处理方式: 1.1 先更新数据库,再删除缓存更新数据库成功,如果删除缓存失败或者还没有来得及删除,那么,其他线程从缓存中读取到的就是旧值,会发生不一致。 解决方案 1.消息队列 这是网上很多文章里都有写过的方案。但是这个方案的缺陷会更明显一点。先更新数据库,成功后往消息队列发消息,消费到消息后再删除缓存,借助消息队列的重试机制来实现,达到最终一致性的效果。 这个解决方案其实问题更多,如下: 引入消息中间件之后,问题更复杂了,怎么保证消息不丢失更麻烦 就算更新数据库和删除缓存都没有发生问题,消息的延迟也会带来短暂的不一致性,不过这个延迟相对来说还是可以接受的 2.进阶版消息队列 为了解决缓存一致性的问题单独引入一个消息队列,太复杂了。其实,一般大公司本身都会有监听binlog消息的消息队列存在,主要是为了做一些核对的工作。这样,我们可以借助监听binlog的消息队列来做删除缓存的操作。这样做的好处是,不用你自己引入,侵入到你的业务代码中,中间件帮你做了解耦,同时,中间件的这个东西本身就保证了高可用。当然,这样 ...
缓存
发表于2022-05-10|后端缓存
1.缓存分类归纳 缓存分层 缓存分级 内容 内容简介 用户层 DNS DNS系统本地缓存 客户端操作系统DNS缓存 LocalDNS缓存 本地DNS提供商的缓存 DNS缓存服务器 专用的DNS缓存服务器 浏览器DNS缓存 FF默认60s, H5新特性: DNS Prefetching 应用程序DNS缓存 Java(JVM)、PHP语言本身的DNS缓存 浏览器 浏览器缓存 H5新特性: Link Prefetching 基于最后修改时间的HTTP缓存协商: Last-Modified 基于过期时间的HTTP缓存协商: Expires、Cache-Control 基于打标签的HTTP缓存协商: Etag Web层 CDN 代理缓存 基于squid、varnish、nginx、ATS等,一般有多级 Web服务器 Web服务器缓存 Apache(mod_cache)、nginx(FastCGI缓存、proxy cache) 应用层 应用服务 Local Cache 应用本地缓存, PHP(Yac、Xca ...
1234…13
avatar
Shershon
你可以不优秀,但内心一定要强大!
文章
185
标签
42
分类
24
Follow Me
公告
最新文章
Java进阶(一):HashMap2023-12-23
Java进阶(一):ArrayList2023-12-19
秒杀场景常用解决方案2023-07-07
Go底层探索(三):切片2023-03-10
Go底层探索(二):字符串2023-03-08
分类
  • 专题8
    • web安全2
    • 其他4
    • 秒杀1
    • 高并发1
  • 后端15
    • Linux1
    • MySQL7
标签
Charles Gin框架 Gin集成 Git Go基础 Go实战 Go实操 Go工具 Go底层探索 Go扩展包 Go标准包 Go进阶 Java进阶 Linux MySQL Nginx PHP-web和框架 PHP7源码 PHP基础 PHP扩展 PHP进阶 RESTful RPC RabbitMQ Redis Yii2集成 web安全 加密/解密 操作系统 数据库和缓存一致性 数据结构 框架开发 正则表达式 消息队列 秒杀 算法 缓存 编码/解码 计算机网络 认证
归档
  • 十二月 20232
  • 七月 20231
  • 三月 20233
  • 二月 20231
  • 十月 20221
  • 九月 20229
  • 八月 20224
  • 五月 202269
网站资讯
文章数目 :
185
本站访客数 :
本站总访问量 :
最后更新时间 :
©2022 - 2024 By Shershon
框架 Hexo|主题 Butterfly
鄂ICP备2022015295号-1
搜索