- 博客(63)
- 资源 (1)
- 收藏
- 关注
原创 mysql为啥使用B+树
MySQL 的 InnoDB 存储引擎采用 B+ 树作为索引结构(而不是 B 树或其他数据结构),主要是基于 B+ 树在数据库场景下的独特优势。以下是 MySQL 采用 B+ 树的具体原因:MySQL 的 InnoDB 存储引擎采用 B+ 树作为索引结构,主要是因为 B+ 树在数据库场景下具有以下优势:
2025-02-20 22:33:41
962
原创 leecode:LRU算法
LRU(Least Recently Used)算法是一种常见的页面置换算法,主要用于缓存淘汰策略。其核心思想是基于时间局部性原理:如果数据最近被访问过,那么将来被访问的概率也会更高。因此,LRU算法会优先淘汰最近最少使用的数据。
2024-08-20 10:41:28
337
原创 线程安全的解决方案(概念版本)
举例说明:比如 张三有100块钱,现在线程A是要花50元,线程二是要存300元,当线程A花50元后,还没有内存值修改,线程二获取到100元+300,将400的值给到张三,此时线程二处理完成,张三有400元,而此时线程A100-50=50,将张三的钱改为了50,最终张三有50块钱,此时数据一致性没有得到保证,出了问题。先获取数据,处理完,在获取一下数据看是否和之前的修改版本号是否一致一致,如果一直再提交。只处理自己的变量,将变量复制一份,只处理自己的,不处理别人的。处理之前先加锁,处理完成后再解锁。
2024-06-16 21:52:33
201
2
原创 35. 搜索插入位置-PHP
其实就是二分查找function searchInsert($nums, $target) { $left = 0; $right = count($nums)-1; while($left <=$right){ $middle = intval(($right + $left )/2); if($target == $nums[$middle]){ ..
2021-10-03 15:59:39
226
原创 力扣26. 删除有序数组中的重复项-PHP
这道题需要注意的是:1.需要返回值为最后有几个不重复的元素,也就是数字2.用快慢指针的时候,不要忘记第一个数字肯定是要写上的。<?phpclass Solution{ /** * @param Integer[] $nums * @return Integer * * */ function removeDuplicates(&$nums) { $count = count($nu
2021-09-30 17:38:20
244
原创 计数排序PHP实现
计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。[1]当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(n*log(n))的时候其效率反而不如基于比较的排序(基于比较的排序的时间复杂度在理论上的下限是O(n*log(n)), 如归并排序,堆排序)<?php/** * 计数排序。 * 时间复杂度为O(n),...
2021-08-10 11:40:21
197
原创 php实现,appleId授权登录app,sign in apple id
一、授权流程图二、简单逻辑介绍1.客户端工作就不介绍了,去苹果那边获取数据。 然后将获取到的identity token传递给后端。这个是最主要的,可以附带一些app所需要的用户信息什么的,例如头像等。2.服务端接受到客户端传递的identity token 然后去苹果要一个公钥,然后解析 苹果的JWT ,identity token。通过验证如果能验证通过就可以继续往下走业务逻辑了。就是新用户注册,旧用户找到用户记录返回给客户端。三、php核心代码以及所需要的类...
2021-04-09 15:45:17
2002
原创 nginx访问日志拿到top100,url
一、将某个时间段的数据先重定向到一个文件grep '2021-03-30T12:' ./archive.dongqiudi.com.access.log >> ~/test.txt二、只要其中的URLcat test.txt | awk -F',' '{print $10}' >>test1.txt三、去掉数字cat test2.txt | tr -d '0-9' >>test3.txt四、去掉参数cat test3.t...
2021-03-30 18:03:17
690
1
原创 js-复制内容到剪贴板
html代码//其中href等之类的 自由切换, 重点是 href 里的内容与要获取的内容对应, onclick 调用js函数, 传递当前对象<td class="text-center" alt="" style="position: relative;"><div class="fa fa-fw fa-copy " style="padding:10px;" href="{{ "aaa:///news/".$archive->id }}" onclick="ge..
2021-01-18 18:10:09
169
原创 js 刷新当前页面,并且打开一个新窗口显示一个页面
<a onclick="saveForm(this)" id = {{$poll->id}} href="#" >处理</a><script type="text/javascript"> function saveForm(obj){ var new_window = window.open(); var thisObj = $(obj); archiv..
2021-01-14 22:40:24
737
原创 PHP函数:sprintf 拼接sql语句
sprintf 在php中是一个函数,最近发现这个函数其实挺好用的,比如在拼接sql语句上简单常用的有%u ,和%s,其中%u 是自然整数 ,包括0,1,2...例如有一条 select * from users where user_id in (1,2,3,6,7);而我们接受到的参数是一个 数组 [1,2,3,6,7];我们可以这样写sql<?php$userIds =[1,2,3,6,7];$sql = sprintf("select * fro...
2021-01-14 21:58:06
611
原创 aws-s3迁移视频服务到阿里云oss记录
一、背景由于多个app的视频服务分别处于不同的 云对象存储空间中,管理很不方便。而且阿里云oss相对稳定,所以决定将s3的视频服务迁移。二、操作规划 1.使用阿里云的oss数据传输工具,将s3的旧数据迁移到阿里云。一共50t数据。 2.对接oss sdk 更改代码逻辑,将原来指向s3的操作,全部改为oss。 3.oss加cdn。 4.oss加https. 三、遇到的问题在建立bucket包的时候,没有看清楚存储类型的区别。有一个访问比较高的桶,选择了归档类
2020-10-29 17:24:11
740
原创 2021考研英语二学习建议
关于英语二的一些建议随着中秋国庆节的过去,我们离考研的日子也只剩下了80多天。也许看这80天,我们感觉很长,其实如果换算成周的话,也就是12周。我们做计划时,如果按照天或者月来算就会觉得还有好久,但是换算成周,我们可能会能够更清晰的做我们的学习工作计划。在12周里,我们有专业课、政治以及英语的学习。在这里,我只说下英语应该分配的时间以及一些可能对我们有用的工具。考研英语分为完形填空、阅读、新题型阅读、英译汉以及大小作文。我想分别说下我的感受,这些感受我觉得适用于英语二目标分数75分以下的,
2020-10-02 15:22:35
650
原创 通俗语言了解CDN
一、引言对于程序员来说,cdn应该不陌生。比如我们用一些比较常见的类库时,各个大厂都会有cdn。例如jquery,bootstrap之类的。这些的却算是cdn的应用,但是我们不应该只是了解cdn到这个地步。接下来再多了解一点吧。二、什么是CDNCDN的全称是Content Delivery Network,即内容分发网络。如果想要了解比较更专业的术语来解释,可以看下百度百科的解释https://baike.baidu.com/item/CDN/420951?fr=aladdin这
2020-09-18 14:59:39
354
原创 php简单对称加密
背景两个项目传输一个id,明文传输不太好。弄一个简单的加密代码<?php function encrypt($string) { // openssl_encrypt 加密不同Mcrypt,对秘钥长度要求,超出16加密结果不变 $method = 'DES-ECB';//加密方法 $passwd = '12344321';//加密密钥 $data = openssl_encrypt($string, $method, $pass.
2020-09-02 10:13:41
416
原创 北京2020-后端程序员面试总结
一、概述7月20号决定从杭州辞职到北京找工作,在这一段时间里,我大概面试了20家左右的公司,其中有线下面试也有线上的视频面试。有百度,新浪微博之类的公司,也有好未来,作业帮这样的公司,以及一些不太出名的公司。最后也拿到了两个offer,也还有一些等待复试的。这次想总结一下面试的简单问题,以及自己的未来学习规划。二、面试的问题1.数据结构数据结构这块,可能由于我是web开发,基本上问的不会特别深,也就限制在基本排序和查找,或者链表的基本操作。时间复杂度,空间复杂度,各种排序的应用场景.
2020-08-08 14:24:16
1173
2
原创 redis底层数据结构-跳跃表(skiplist)
一、什么是跳跃表,如何理解它①生活中的例子,公交车快慢车问题首先说个生活中的例子 ,公交车快慢车问题。快车是站数少,停站少。慢车是逢站必停。当时我第一次见到快慢车的概念还以为是这个车跑的比较快。正常来说,公交车分为快车和慢车。一般而言慢车可以通往目的地的每一站,而快车是只在部分站点停车。而快车又包含了慢车部分的人流量大的目的点。所以对于我们乘客来说,我们如果想赶时间去某个地方,我们会查下地图最优线路,最快线路。一般情况下,我们会做几站快车,然后在换乘慢车到达目的地。②跳跃表与之的联系
2020-07-14 10:38:28
603
1
转载 跳跃表-转载
一、跳表的基本概念1、跳表的定义跳表(SkipList):增加了向前指针的链表叫做。跳表全称叫做跳跃表,简称跳表。跳表是一个随机化的数据结构,实质是一种可以进行二分查找的有序链表。跳表在原有的有序链表上增加了多级索引,通过索引来实现快速查询。跳表不仅能提高搜索性能,同时也可以提高插入和删除操作的性能。跳表是一个随机化的数据结构,可以被看做二叉树的一个变种,它在性能上和红黑树、AVL树不相上下,但是跳表的原理非常简单,目前在Redis和LevelDB中都有用到。2、跳表的详解说明:本文
2020-07-14 09:38:45
339
1
原创 Redis底层数据结构之压缩列表(ziplist)
记录一下读《redis设计与实现》,所学到和所想到的*压缩列表需要重点掌握的①压缩列表是一种为节约内存而开发的顺序性数据结构②压缩列表被用作列表键和哈希键的底层实现。③压缩列表可以包含多个节点,每个节点可以保存一个字节数组或者整数值④添加新节点到压缩列表或者从压缩列表中删除几点,可能会引发连锁更新操作,但这种操作出现几率不高。这种操作最坏的时间复杂度为On^2。一、压缩列表概述压缩列表是列表键和哈希键的底层实现之一。①在一个列表建只包括少量列表项,而且每个列表项要么是小.
2020-07-13 15:11:16
1210
1
原创 简单理解Laravel中的控制反转和依赖注入 (非权威,仅供参考)
首先从概念上来说,依赖注入是控制反转的一种具体实现。而从PHP面向对象的角度来说,控制反转是想解决,A类依赖于B类,而在一般情况下A类想要使用B类的方法,需要先New一个B类。所以对于B类的控制权在于A类手中。但是这样的坏处就是,假如B类又依赖于C类,这样下去,就会很麻烦,因为互相依赖太多。而控制反转就可以 使用一个 另外的类,假如说是IOC类,这个类专门用来生成各种对象,然后将这些生成的对象以参数传递的方式放入所需要的类。而IOC类的具体实现在laravel中使用...
2020-07-08 15:17:25
904
原创 简单理解URL,URN,URI,非权威
这些概念的东西实在是复杂。我说这些也是参考了比较多的资料,包括图解HTTP,以及外国一些网站。大概记录下自己的思路,如果有人看到,也就当个参考,这里写的只是理解,而不是权威。一、什么是URL,URI,URNURL 为 统一资源定位符 Uniform Resource Locator,URI 为 统一资源标识符(Uniform Resource Identifier,URI)URN 为 统一资源名 (URN,Uniform Resource Name)二、怎么理解他们...
2020-07-08 11:16:13
250
原创 2020北京PHP面试总结
某公司纪要一1.写一下单例2.HTTP 长连接短连接,长连接什么时候断开3.redis数据类型4.redis持久化,RDB,AOF,RDB会阻塞吗5.消息幂等性6.最大不重复子串7.十进制转36进制8.mysql , char ,varchar, text9.mysql 数据结构10.PHP 垃圾回收,循环引用怎么解决11.TCP 四次挥手,timewait 怎么使用的12.require,include区别13.self,this,static14.PHP父类怎么访问子类..
2020-07-03 14:36:18
423
原创 给你四个坐标点,判断它们能不能组成一个矩形,如判断([0,0],[0,1],[1,1],[1,0])能组成一个矩形。
我是算的所有点距离,然后判断对角线和边长分别相同。<?php$p1 = [0, 0];$p2 = [0, 2];$p3 = [2, 2];$p4 = [2, 0];$temp = array_diff_assoc($p1,$p2,$p3,$p4);if(!$temp) echo "四个点同一坐标,不能组成矩形";die;//放在数组中$fourP = [$p1, $p2, $p3, $p4];$count = count($fourP);for ($i = 0; $i &l
2020-07-01 17:38:16
1500
原创 PHP设计模式之单例
一、单例描述前两天面试微博让写一个单例出来,我愣是没写出去,作为一个三年的PHP程序员说出去有点丢人,所以下来赶紧学习了一下。首先要明白为什么要单例?所谓单例就是说用无论多少个用户访问,过来只实例一个对象,这样就会节省内存,实现一个对象大家共同调用。其中最为经典的就是数据库对象了,因为我们连接数据库的时候一般是同一个用户名密码的。二、单例基本思想代码实现对于PHP而言,单例就是三私一公,所谓三私一公指的是私有的构造方法,私有的克隆方法 ,私有的静态属性,公共的静态方法。下面看代码.
2020-07-01 15:39:32
202
原创 Redis底层数据结构之链表
一、在redis中列表的使用场景 ①链表key值底层实现之一是链表。当一个列表键包含了数量较多元素,又或者列表中包含元素字符串较长,Redis就会使用链表作为列表key值。 ②发布与订阅、慢查询、监视器等功能也用到了链表。二、链表和链表节点实现先看下listNode结构。typedef struct listNode{ //前节点 struct listNode *prev; //后节点 struct listNode *next; //值 v...
2020-06-29 16:42:38
239
原创 Redis底层数据结构之SDS(simple dynamic string)
最近在找工作,一直问底层实现,接下来记录一下redis的底层实现。今天说下简单动态字符串,也就是SDS。SDS是redis的核心数据。虽然简单,但特别重要。首先redis五种常用数据结构的Key值都是用SDS存储的,而不是简单的一个C语言字符串,下面看一下这个SDS是什么样子的。 1.SDS数据结构struct sdshdr{ //字符串长度 int len; //buf数组中未使用的字节数量 int free;//字节数组,用于保存字符串 char buf[];..
2020-06-29 16:11:37
369
原创 Nginx直接访问redis,lua访问redis
这个需要一个模块,这个模块叫 redis2-nginx-module.下载地址是https://github.com/openresty/redis2-nginx-module/archive/v0.15.tar.gz直接去wget就可以这个需要重新编译nginx,然后把这个模块加上。下面大概说一下编译Nginx和加这个模块可能会遇到的问题。一、安装nginx +redis2-nginx-module首先如果你电脑上有nginx ,那么你要写使用nginx -V查看一下当前的...
2020-06-19 10:46:33
4037
原创 mysql事务的特性以及事务的隔离级别。
今天笔试题有一道题是事务的隔离级别,Mysql默认的使用的哪一种。这道题和同事曾经讨论过很多次,但其实自己一直是一知半解,今天通过看高性能MySQL这本书以及网络上一些资料的查询,以及B上https://www.bilibili.com/video/BV1wb411H7dY?from=search&seid=6442444747702622387这个老师的视频。自认为对事务的隔离级别有了较为深入的了解。现在做一下简单的记录。我相信在面试中这样说,是没有问题的。而在工作中,我们如果用到了一定.
2020-06-02 17:12:17
256
转载 转载-常用API
原文地址:https://www.cnblogs.com/trackingmore/p/7156877.html常用精品API接口汇总下面列举了100多个国内常用API接口,并按照 笔记、出行、词典、电商、地图、电影、即时通讯、开发者网站、快递查询、旅游、社交、视频、天气、团队协作、图片与图像处理、外卖、消息推送、音乐、云、语义识别、语音识别、杂志、综合 进行了如下分类。笔记OneNote- OneNote支持获取,复制,创建,更新,导入与导出笔记,支持为笔记添加多媒体内容,管理权限...
2020-05-13 15:42:19
3724
原创 PHP实现二分查找(递归版本)
首先说下二分查找,需要在数组的数据结构上应用,而且前提是这个数组是有序的。不管是升序还是降序。一般数组的查找都是顺序查找,也就是逐个比对。而二分查找是分治思想的一个代表性应用。大概思想是 拿所想找的数字,去和数组中间的值比较。如果相等,直接返回KEY值,如果大于,拿右边的数组再去进行一分为二。如果小于,拿左边的数组进行对比。知道数组为空。下面看具体代码实现。 function handle() { $arr = array(2, 11, 23, 5, 888, 111, .
2020-05-11 11:24:07
555
原创 PHP实现选择排序
选择排序比较简单的一种排序,就是每次确定一个元素的正确位置, 首先拿出第一个元素来,和其他元素比较,使第一个元素为最小或者最大值。第二次拿出第二个,然后再和其他的比较,换位置。看代码吧 function handle() { $arr = array(2,11,23,5,888,111,22,34,56,134,22); echo...
2020-04-29 13:58:19
275
原创 PHP实现简单插入排序
好多年前用C写过,觉得挺简单的,但是今天用PHP重写了一下,写了两个小时,哈哈,有点丢人。 我是每次有新元素,先占了一个位置。然后如果发现这个位置没动,就插到最左边。下边看代码吧。 public function handle() { $arr = array(2,11,23,5,888,111,22,34,56,134,22); ...
2020-04-29 11:13:07
216
原创 PHP实现冒泡排序
冒泡排序是很经典,也是大家算法入门的第一个小算法吧,我今天再用PHP实现以下。还是先简单介绍下思路。冒泡排序就是说,每次拿出第一个数字来,作为最小值(或者最大),然后从第二个开始和他依次比较,如果比他还小,换下位置嘛。然后第一个数字经过第一次处理,就是最小的值。它的时间复杂度为O(n²)次。就是都按照最差的来, 比如1,2,3,这样,非要排位3,2,1.下面看代码function ...
2020-04-28 15:58:29
261
原创 PHP实现快速排序
最近打算把常用的小算法用PHP实现下先从快速排序开始吧。先说下快速排序的基本思路。就是分治法,每次拿出第一个值来,比它小的往右边,比它小的放左边。然后左边的数组在进行上述的过程,右边的也一样。最后把它们合并到一起。就完成啦。理论上时间复杂度为O(nlogn)。对了,时间复杂度顺便复习一下,指的是主要程序运行的次数,而不是时间哦。 下面放下代码。<?phpnamespace ...
2020-04-28 15:03:41
179
原创 有道英语发音API
调用有道词典的在线发音库: audio后边加上单词即可美音:http://dict.youdao.com/dictvoice?type=0&audio=英音:http://dict.youdao.com/dictvoice?type=1&audio=...
2020-04-20 11:06:19
3969
原创 2020考研大纲词汇TXT版本5500
是我自己整理的, 通过PHP 爬虫,再加上一些程序处理,希望能够帮助到大家。另外我还有一个背单词的软件,欢迎大家访问.http://h5.mmmba.cn链接:https://pan.baidu.com/s/11FThsKjsAdK3DixmGzgHWQ提取码:xhik复制这段内容后打开百度网盘手机App,操作更方便哦...
2020-04-14 17:30:18
10575
8
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人