自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

转载 Linux命令大全

查看软件xxx安装内容dpkg -L xxx查找软件库中的软件apt-cache search 正则表达式查找软件库中的软件aptitude search 软件包查找文件属于哪个包dpkg -S filename查找文件属于哪个包apt-file search filename查询软件xxx依赖哪些包apt-cache depends xxx查询软件

2015-06-03 18:00:50 216

原创 php如何实现反转链表(代码实例)

头插法创建一个链表

2022-08-15 21:18:48 275 1

原创 Go语言总结

go defer执行顺序:先进后出。Go的异常处理机制——panic和recover的使用和原理go语言随笔记录——哪些情况可以出现panic错误一、数组越界二、空指针三、类型断言失败(接口转换异常)四、通道为空,通道已关闭五、死锁,所有线程睡眠(致命错误)六、给空map赋值七、并发的map写八、递归死循环,堆栈溢出golang 之select 的高级用法select有3个特色分别是:nil的通道永远阻塞如何跳出for -select 循环sele

2022-03-30 17:55:12 167

原创 go使用协程并发并等待全部协程结束的方法

第一种,基于原生带缓存的channelpackagemainimport"fmt"funcmain() {done := make(chanint, 10)fori := 0; i < cap(done); i++ {gofunc(j int) {fmt.Println("你好,世界"+ fmt.Sprintf("%v", j))done <- 1}(i)...

2022-03-29 17:58:11 2138

原创 二叉树的高度获取方法(递归)

<?phpfunction getTreeDepth($node){ if($node === null){ return 0; } $left = getTreeDepth($node->left); $right = getTreeDepth($node->right); return $left>$right ? $left+1 : $right+1;}

2021-09-06 18:18:05 84

原创 数据结构复习提纲(必考知识点整理)

第一章 数据结构概述基本概念与术语1.数据:数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并被计算机程序所处理的符号的总称。2.数据元素:数据元素是数据的基本单位,是数据这个集合中的个体,也称之为元素,结点,顶点记录。(补充:一个数据元素可由若干个数据项组成。数据项是数据的不可分割的最小单位。)3.数据对象:数据对象是具有相同性质的数据元素的集合,是数据的一个子集。(有时候也叫做属性。)4.数据结构:数据结构是相互之间存在一种或多种特定关系的数..

2021-09-06 17:34:51 2758

原创 [PHP]算法- 二叉树的深度的PHP实现

二叉树的深度:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。思路:1.非递归层序遍历2.使用辅助队列,根结点先入队列3. 循环判断队列是否为空,如果不为空就继续循环队列里面的每个结点4. 循环队列时,当前当前结点出队列,把该结点的左右孩子入队列<?phpclass TreeNode{ var $val; var $left = NULL; var $right = NULL; .

2021-09-06 17:26:33 145

原创 php实现先序、中序、后序遍历二叉树

<?phpclass Node{ public $value; public $left; public $right;}//先序遍历 根节点 ---> 左子树 ---> 右子树function preorder($root){ $stack=array(); array_push($stack,$root); while(!empty($stack)){ $center_node=array_pop($stack).

2021-09-06 17:19:42 125

原创 LeetCode32. 最长有效括号

给你一个只包含 '('和 ')'的字符串,找出最长有效(格式正确且连续)括号子串的长度。示例 1:输入:s = "(()"输出:2解释:最长有效括号子串是 "()"示例 2:输入:s = ")()())"输出:4解释:最长有效括号子串是 "()()"示例 3:输入:s = ""输出:0提示:0 <= s.length <= 3 * 104s[i] 为 '(' 或 ')'class Solution { /** * @p...

2021-08-24 18:10:42 62

原创 LeetCode20. 有效的括号

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例 2:输入: "()[]{}"输出: true示例 3:输入: "(]"输出: false示例 4:输入: "([)]"输出: false示例 5:输入: "{[]}"输出: true/** .

2021-08-24 17:40:15 49

原创 LeetCode19. Remove Nth Node From End of List

描述给定一个链表和一个随机数(随机数在可操作范围内),从链表的后面开始,移除倒数第n个节点,返回新的链表。解法一:分析:删除倒数第n个节点,也就是删除链表第Length-n+1个节点,所以第一步先求出链表的长度,第二步就是开始正式找删除节点了,通过指针的移动,先确认Lenght-n的位置,这个位置的下一个位置就是待删除的节点,我们只需要把这个位置的next指针指向他的->next->next即可。/** * Definition for a singly-link

2021-08-24 14:58:14 94

原创 IO多路复用的三种机制Select,Poll,Epoll

I/O多路复用(multiplexing)的本质是通过一种机制(系统内核缓冲I/O数据),让单个进程可以监视多个文件描述符,一旦某个描述符就绪(一般是读就绪或写就绪),能够通知程序进行相应的读写操作select、poll 和 epoll 都是 Linux API 提供的 IO 复用方式。相信大家都了解了Unix五种IO模型,不了解的可以 => 查看这里[1] blocking IO - 阻塞IO[2] nonblocking IO - 非阻塞IO[3] IO multiplexin.

2021-07-18 16:41:08 92

原创 redis使用注意事项

实际业务场景复杂,数据量、访问量巨大,提前规避缓存使用中的坑提前熟悉Cache经典问题,提前构建防御措施:避免大量key同时失效避免不存在key访问的穿透减少大key、热key的缓存失效,对热key进行分流让访问尽量命中缓存,同时保持数据的一致性应结合业务模型,提前规划Cache系统的SLA如OPS、响应分布、平均耗时等,并实施监控及时对遇到部分节点异常,不影响服务的稳定性遇到突发流量、极端事件,通过分池分层等策略,流量分流,避免缓存过载或雪崩各场景下,面对高并发、海量访问、突发事件、流

2021-07-18 16:20:10 78

原创 LeetCode137--只出现一次的数字 II

每题目的要求是在线性的时间内完成,并且不使用额外的空间空间,我们先来看第一版用的php中的函数解。先统计出每个值出现的次数,然后再找出值为1次的那个键即可,简单粗暴/** * @param Integer[] $nums * @return Integer */ function singleNumber($nums) { return array_search(1,array_count_values($nums)); }看

2021-04-26 11:48:11 71

原创 LeetCode147--对链表进行插入排序

题目分析其实就是把当前链表中的结点一个个取出,然后插入到新的链表当中,插入的时候把当前结点的值和新链表头结点进行比较,如果比头结点还小那就直接成为新的头,否则通过next指针直到找到对应的位置即可。​/** * Definition for a singly-linked list. * class ListNode { * public $val = 0; * public $next = null; * function __construct($val.

2021-04-26 11:39:36 76

原创 LeetCode148--排序链表

题目分析时间复杂度限制下,符合要求的常规排序算法可以用快速,归并.....来完成,这里使用的是归并排序,归并排序最重要的的就是合并操作了,而且他合并的是两个有序集,对于当前的链表来说,只有当链表只有一个结点的时候,此链表才是有序链表。不断的拆分链表,这是递,当拆分的两个链表都只剩下一个结点时,merge,然后回到上一层继续合并,这是归。所以每一次回来合并的都是有序链表。/** * Definition for a singly-linked list. * class ListNode {

2021-04-26 11:20:24 66

原创 Leetcode146--LRU Cache

题目分析对于LRU缓存淘汰算法,这里是基于链表实现的。对于get操作,如果不存在缓存中,直接返回-1,如果存在的话,当前我们又是在get他,那么我们就需要把当前的缓存节点转移到存储的最前方,也就是链表的头部。说明它最近刚被调用过。如果是put操作,首先我们需要判断当前缓存的空间是否满了,如果满了,说明我需要给新来的腾出位置,那么腾出来的位置当然就是最近最少使用的元素。所以这里就分为两步,第一步是判断当前键是否已在缓存中存在或者缓存是否已满,如果是键存在,那么需要删除缓存中对应的键值,如果是缓存位置已满,

2021-04-25 18:18:54 57

原创 LeetCode76--最小覆盖子串

给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。注意:如果 s 中存在这样的子串,我们保证它是唯一的答案。示例 1:输入:s = "ADOBECODEBANC", t = "ABC"输出:"BANC"示例 2:输入:s = "a", t = "a"输出:"a"提示:1 <= s.length, t.length <= 105s 和 t 由英文字母组成进阶:你能设计一个在

2021-04-16 14:17:00 82

原创 API接口签名验证

系统从外部获取数据时,通常采用API接口调用的方式来实现。请求方和�接口提供方之间的通信过程,有这几个问题需要考虑:1、请求参数是否被篡改;2、请求来源是否合法;3、请求是否具有唯一性。今天跟大家探讨一下主流的通信安全解决方案。参数签名方式这种方式是主流。它要求调用方按照约定好的算法生成签名字符串,作为请求的一部分,接口提供方验算签名即可知是否合法。步骤通常如下:①接口提供方给出appid和appsecret②调用方根据appid和appsecret以及请求参数,按照一定

2021-04-16 14:14:01 878 1

原创 php正则之模式修饰符

2021-04-15 14:43:41 56

原创 php正则之模式修饰符

下面列出了当前可用的 PCRE 修饰符。括号中提到的名字是 PCRE 内部这些修饰符的名称。 模式修饰符中的空格,换行符会被忽略,其他字符会导致错误。i(PCRE_CASELESS)如果设置了这个修饰符,模式中的字母会进行大小写不敏感匹配。m(PCRE_MULTILINE)默认情况下,PCRE 认为目标字符串是由单行字符组成的(然而实际上它可能会包含多行), "行首"元字符 (^) 仅匹配字符串的开始位置, 而"行末"元字符 ($) 仅匹配字符串末尾, 或者最后的换行符(除非设置了D...

2021-04-15 14:25:27 84

原创 php常用函数

一、 数学函数1.abs(): 求绝对值2.ceil(): 进一法取整3.floor(): 舍去法取整4.fmod(): 浮点数取余5.pow(): 返回数的 n 次方6.round(): 浮点数四舍五入7.sqrt(): 求平方根8.max(): 求最大值9.min(): 求最小值10.mt_rand(): 更好的随机数11.rand(): 随机数12.pi(): 获取圆周率值二、 去空格或或其他字符:13.trim(): 删除字符串两端的空格或其他预定义字符14.rtrim.

2021-04-15 14:19:29 58

原创 awk的内置函数

数值函数int(x):取整数部份,朝0的方向做舍去。sqrt(x):正的平方根。exp(x):以e为底的指数函数。log(x):自然对数。sin(x)、cos(x):正弦、余弦。atan2(y,x):求y/x 的arctan值,单位是弧度。rand():得到一个随机数(平均分布在0和1之间)srand(x):设定产生随机数的seed 为x字符串函数index(str,substr):返回子串substr在字符串str中第一次出现的位置,若找不到,则返回值为0。length(str):

2021-04-15 11:21:03 398

原创 LeetCode70--爬楼梯

假设你正在爬楼梯。需要 n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶解法一:class Solution { /** ...

2021-04-08 17:34:54 51

原创 LeetCode189--旋转数组

给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。你可以使用空间复杂度为O(1) 的原地算法解决这个问题吗?示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向右旋转 2 步: [6,7,1,2,3,4,5]向右旋转 3 步: [5,6,7,1,2,3,4]示例...

2021-04-08 16:28:19 47

原创 LeetCode234--回文链表

请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用O(n) 时间复杂度和 O(1) 空间复杂度解决此题?解法一:/** * Definition for a singly-linked list. * class ListNode { * public $val = 0; * public $next = null; * fu.

2021-04-08 16:12:07 61

原创 LeetCode217--存在重复元素

给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true解决方法class Solution { /** * @param Integer[] $nums * @r..

2021-04-08 14:33:39 43

原创 LeetCode204——计数质数

统计所有小于非负整数n的质数的数量。示例 1:输入:n = 10输出:4解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2:输入:n = 0输出:0示例 3:输入:n = 1输出:0思路一:挨个判断[2, n - 1]范围内的数是否是素数时间复杂度是O(n ^ 1.5)。空间复杂度是O(1)。class Solution { /** * @param Integer $n * @return Inte..

2021-04-01 16:08:19 64

原创 LeetCode206-反转链表

反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?迭代法:<?php//迭代法function reverseList($head){ if($head === null){ return false; } $cur = $head; $

2021-03-31 10:59:44 61

原创 shell字符串转数组

方法一#!/bin/bashstring="php,java,python,shell,c++,c" #将,替换为空格 array=(${string//,/ }) for var in ${array[@]}do echo $vardone 方法二#!/bin/bashstring="php,java,python,shell,c++,c" array=(`echo $string | tr ',' ' '` ) for var in ${array[

2021-02-05 16:22:03 628

原创 LeetCode--两数相加

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9,9,9,9], l2

2021-01-15 18:45:53 57

原创 LeetCode--无重复字符的最长子串

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = "abcabcbb"输出: 3解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: s = "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: s = "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3。 请注意,你的答案必须是 子串 的长度,"pwke" 是一...

2021-01-15 18:41:00 49

原创 MySQL索引的那些事儿

索引是mysql数据库中比较重要的知识点,相信很多人都有一定的了解,在这里我做一下总结,建立一下mysql索引知识体系。一,索引概念和索引模型Q1: 你能说说什么是索引吗?A: 索引是一种能够帮助我们快速检索数据库中的数据的数据结构。Q2: 索引具体采用哪种数据结构呢?A: mysql默认的存储引擎是InnoDB;InnoDB存储引擎,默认的是B+树。拓展:B+Tree索引和Hash索引区别?哈希索引适合等值查询,但是无法进行范围查询;哈希索引没办法利用索引完成排序 ;哈希

2020-12-23 18:28:00 123

原创 LeetCode--买卖股票的最佳时机 II

给定一个数组,它的第i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例 1:输入: [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。 随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 ..

2020-05-27 17:33:21 106

原创 PHP八大设计模式

设计模式单例模式解决的是如何在整个项目中创建唯一对象实例的问题,工厂模式解决的是如何不通过new建立实例对象的方法。单例模式$_instance必须声明为静态的私有变量构造函数和析构函数必须声明为私有,防止外部程序new 类从而失去单例模式的意义getInstance()方法必须设置为公有的,必须调用此方法 以返回实例的一个引用::操作符只能访问静态变量和静态函数new对象都会消耗内存使用场景:最常用的地方是数据库连接。使用单例模式生成一个对象后, 该对象可以被其它众多对

2020-05-25 21:41:07 217

原创 LeetCode--加一

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321...

2020-03-29 09:50:03 121

原创 LeetCode--合并两个有序数组

给你两个有序整数数组nums1和nums2,请你将nums2合并到nums1中,使num1成为一个有序数组。说明:初始化nums1和nums2的元素数量分别为m和n。 你可以假设nums1有足够的空间(空间大小大于或等于m + n)来保存nums2中的元素。示例:输入:nums1 = [1,2,3,0,0,0], m = ...

2020-03-28 09:43:47 110

原创 LeetCode--验证回文串

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为有效的回文串。示例 1:输入: "A man, a plan, a canal: Panama"输出: true示例 2:输入: "race a car"输出: falseclass Solution { /** * @param...

2020-03-28 09:28:24 96

原创 LeetCode--颜色分类

给定一个包含红色、白色和蓝色,一共n个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方案是使用计数排序的两趟扫描...

2020-03-27 22:07:16 110

原创 LeetCode--两数之和 II - 输入有序数组(使用双指针技巧)

给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值index1 和 index2,其中 index1必须小于index2。说明:返回的下标值(index1 和 index2)不是从零开始的。 你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15],...

2020-03-27 15:01:58 128 1

空空如也

空空如也

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

TA关注的人

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