自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 每日编程(44)

题目:最长回文子串题目描述:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”分析:这算是我比较不喜欢做的题目之一了,以前也做过种种类似的题目,今天这个题目的关键次就是,最长,回文,子串,最长的实现就是每次...

2019-04-27 20:04:48 323 1

原创 每日编程(43)---二叉树

题目:二叉树的层次遍历 II题目描述:给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其自底向上的层次遍历为:[[15,7],[9,20],[3]]分析:二叉树层析遍历,借助队列,每次要将当前队列遍历...

2019-04-15 09:26:57 465

原创 彻底弄懂mysql(二)--连接方式

对数据库的连接是一个很耗时的过程,tcp的连接也分为长连接和短连接,这都是为了满足不同的需求而产生的,mysql也不止一种连接方式,接下来我们介绍一下短连接短连接应该比较好理解,就是只要客户端与服务端进行任何数据传输的话就会建立一次连接,数据传输完毕之后就释放这个连接,下一次再请求就再建立连接,所以有可能一个session就与数据库建立了十几次甚至更多的连接,这种情况下如果数据访问量非常大时,...

2019-04-13 16:54:35 2143

原创 彻底弄懂mysql(一)--mysql的通信协议

我准备从mysql的实现出发,将mysql好好理解一下,从他的逻辑结构一层一层出发,感受一下,所以再学第一层之前,要先对mysql整体的逻辑结构有一个初步认识mysql逻辑架构整体来说,MySql的逻辑架构分成三个部分,这个之前我以为提到过1)客户端:主要是建立连接的过程,交互的过程2)核心服务3)存储引擎这个可能比较抽象,我们结合MySql的查询过程,结合着进行学习MySql查询...

2019-04-12 20:25:31 20616

原创 HTTP知识总结

本博客主要是因为个人想做一个学习总结,所以可能设计的东西比较多。HTTP(超文本传输协议)在tcp/ip协议之上,应用层协议,端口为80,有两种报文格式,请求报文,响应报文请求报文和响应报文请求报文主要是有四部分构成的1)请求行:请求方法+url+版本2)请求头:保存一些与请求有关的信息3)空行:分隔作用4)请求数据:具体的数据实际上可以分为两大类:请求信息头部,请求信息体...

2019-04-09 11:01:24 217

原创 计算机网络基础--杂项总结

网络层IP数据包IP数据报格式:版本:有(IPV4)和(IPV6)两个版本首部长度:IP报文首部的长度总长度:首部+数据的长度生存时间:TTL,防止IP环路,以路由器跳数为单位,当 TTL 为 0 时就丢弃数据报。协议:下层使用的协议,例如 ICMP、TCP、UDP 等;源地址,目的地址:源IP,目的IPIp地址编址方式三个历史阶段:1:分类2:子网划分3:无分类分类...

2019-04-08 18:23:31 442

原创 每日编程(42)

题目:卡牌分组题目描述:用户通过次数 148用户尝试次数 181通过次数 152提交次数 611题目难度 Easy给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:每组都有 X 张牌。组内所有的牌上都写着相同的整数。仅当你可选的 X >= 2 时返回 true。示例 1:输入:[1,2,3,4,4,3...

2019-04-02 08:26:23 213

原创 每日编程(41)

分隔链表题目描述:给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。你应当保留两个分区中每个节点的初始相对位置。然后指针后移寻找下一个位置示例:输入: head = 1->4->3->2->5->2, x = 3输出: 1->2->2->4->3->5分析:这是一道操作链...

2019-04-01 08:31:56 152

原创 彻底弄懂--进程与线程的关系

我们先大致说一下背景,如果没有并发的概念,即一台服务器提供服务,一次只能为一个客户端服务,如果再有人想要请求,就得死等前面的人,那岂不是报废了,所以并发必须的有,实现并发的方式有很多种,多进程,多线程,IO多路复用。进程和线程的概念进程,是并发执行的程序在执行过程中,分配和管理资源的基本单位,是一个动态的概念,是竞争计算机系统资源的基本单位,每一个进程都有自己的地址空间,即进程空间(虚空间)进...

2019-03-31 18:54:53 671

原创 go语言--strings包常用函数

这篇主要介绍一下strings包中常用的一些函数,没有什么个人观点,主要作为个人总结记录子串判断是否存在某个字串或字符//若子串subxtr在s中,返回truefunc Contains(s,substr string) bool//chars中任何一个Unicode代码点在s中,返回truefunc ContainsAny(s,chars string) bool//Unicode...

2019-03-31 13:04:44 454

原创 new()和make()的区别--go语言

有的时候容易将new()和make()弄混,他们都是在为变量分配内存空间时用到的,但是他们其实有很大的不同,我们结合例子说明一下new()new()是go语言的内建函数,他的声明如下func new(Type) *Type解析一下就是,内建函数 new 用来分配内存,它的第一个参数是一个类型,不是一个值,它的返回值是一个指向新分配类型零值的指针什么时候会用到呢,我们看一下下面的例子p...

2019-03-31 09:06:32 338

原创 每日编程(40)

题目:767. 重构字符串题目描述:给定一个字符串S,检查是否能重新排布其中的字母,使得两相邻的字符不同。若可行,输出任意可行的结果。若不可行,返回空字符串。示例 1:输入: S = “aab”输出: “aba”示例 2:输入: S = “aaab”输出: “”注意:S 只包含小写字母并且长度在[1, 500]区间内。分析:首先通过一个字典对字符串中的所有进行一个整合,然后...

2019-03-30 21:26:40 207

原创 每日编程(39)

题目:转置矩阵题目描述:给定一个矩阵 A, 返回 A 的转置矩阵。矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。示例 1:输入:[[1,2,3],[4,5,6],[7,8,9]]输出:[[1,4,7],[2,5,8],[3,6,9]]示例 2:输入:[[1,2,3],[4,5,6]]输出:[[1,4],[2,5],[3,6]]分析:这个题很明显直接反过来遍历就好...

2019-03-28 09:28:04 168

原创 二叉树树的前,中,后序遍历非递归--go语言实现

递归遍历二叉树非常简单,只要交换调用顺序即可,那么非递归呢,我这里都是借用栈的思想实现的前序遍历实现:第一次访问的时候就记录到结果数组中,然后进栈,依次访问其左孩子,知道左孩子为空弹出栈顶,访问其右孩子,循环这个过程,直到栈为空,root也为空代码:func (root *TreeNode) preorder() []int{ //非递归前序遍历 res:=[]int{} ...

2019-03-27 08:54:53 1917 2

原创 彻底搞懂Redis--主从|哨兵|集群模式篇

主从模式主从模式,有主有从,就是通过一台Master服务器,和多台slave服务器构成的一种集群模式,我们主要介绍的是在这种模式下,他们的工作原理,是如何保持状态一致的。主从模式中实现状态一致的技术就是复制(replication)Redisde 复制功能主要分为同步(sync)和命令传播两个部分同步:是将slave更新至master所处的状态的操作命令传播:是在Master进行写操作后...

2019-03-26 16:54:32 1755

原创 彻底弄懂Redis--持久化篇

Redis缓存之所以快就是因为我们是从内存中进行读取,内存的速度要比文件的速度快得多,但是如果只是存在于内存的话,那么数据是无法被保留下来的,就像memcahe,数据只是在会话中才能用,一旦关闭连接过着出现什么问题,数据就会不见,设想一下如果购物车用memcache做缓存,那后果不堪设想,所以这就是Redis比memcache有优势的一部分,即Redis支持持久化。Redis持久化Redis提...

2019-03-26 13:38:05 213

原创 彻底弄懂Redis--set篇

Redis中有两种集合,一种是无序集合,一种是有序集合,他们之间的相同点就是不重复,不同点就是是否有序,我们分别介绍一下。set因为set只要保证加入的元素不重复就好,所以他的底层实现也比较简单,就是一个value为空的哈希表,key就是用来储存加入的元素值的,我们今天重点介绍的就是Sort Set(有序集合)Sort Set有序集合是set的升级版,在set的基础上进行了排序,所以他必定...

2019-03-26 09:45:43 902

原创 每日编程(38)

题目:使数组唯一的最小增量题目描述:给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1。返回使 A 中的每个值都是唯一的最少操作次数。示例 1:输入:[1,2,2]输出:1解释:经过一次 move 操作,数组将变为 [1, 2, 3]。示例 2:输入:[3,2,1,2,1,7]输出:6解释:经过 6 次 move 操作,数组将变为 [3, 4, 1,...

2019-03-26 07:44:33 165

原创 彻底搞懂Redis--字典篇

字典字典又称符号表,关联数组或者映射,是一种用于保存键值对的抽象数据结构。字典中的每个键都是独一无二的,程序可以在字典中根据键值查找与之关联的值,或者通过键来更新值,删除等。字典的实现Redis的字典使用哈希表作为底层实现,一个哈希表里面有多个哈希节点,而每个哈希表节点就保存了字典中的一个键值对,套彻底搞懂,就要深入底层。哈希表Redis字典所使用的哈希表由 dict.h/dictht...

2019-03-25 17:31:02 5357 5

原创 每日编程(37)--leetcode129周赛

题目:将数组分成和相等的三个部分题目描述:1020. 将数组分成和相等的三个部分 显示英文描述用户通过次数 321用户尝试次数 401通过次数 324提交次数 883题目难度 Easy给定一个整数数组 A,只有我们可以将其划分为三个和相等的非空部分时才返回 true,否则返回 false。形式上,如果我们可以找出索引 i+1 < j 且满足 (A[0] + A[1] + ...

2019-03-24 18:15:46 252

原创 Redis--数据结构详解

先来介绍一下redis,redis是一款内存高速缓存数据库,非关系型数据库,非关系型怎么理解呢,像mysql,oracle这都是关系型数据库,数据之间是存在某种关系的,而非关系型数据库存储的就是非结构化的海量数据,无法体现数据的关系。redis的数据结构redis不同于memcache的一点就是redis支持丰富的数据结构,而memcache只有string,下面我i们详细介绍一下,redis...

2019-03-24 15:15:10 229

原创 每日编程(36)

题目:836. 矩形重叠题目描述:矩形以列表 [x1, y1, x2, y2] 的形式表示,其中 (x1, y1) 为左下角的坐标,(x2, y2) 是右上角的坐标。如果相交的面积为正,则称两矩形重叠。需要明确的是,只在角或边接触的两个矩形不构成重叠。给出两个矩形,判断它们是否重叠并返回结果。示例 1:输入:rec1 = [0,0,2,2], rec2 = [1,1,3,3]输出:tr...

2019-03-22 21:00:54 188

转载 搞懂http的缓存机制及其原理

对于web性能的优化,缓存是一个非常重要的手段,对于web开发人员来说怎么能不知道http的缓存呢,以前我只知道缓存的存在,什么时候会用缓存,但是到底怎么实现的没深入研究过,随着对http的不断深入理解,今天就来探讨一下先介绍一下HTTP的报文吧,有助于下面的理解HTTP报文相信大家都不陌生,客户端和服务端的通信就依靠他来传输数据,分为请求报文和响应报文http报文主要分为两部分:请求首部...

2019-03-22 17:24:02 217

原创 链表的逆序

链表的逆序就是剑指offer中从尾到头打印链表不难想出就是利用栈的使用,从链表的头部开始依次将元素放入栈中,然后遍历结束后,将栈中的元素全部出栈,即为逆序,让我们看看代码实现因为go中不提供栈,所有我下面用切片代替,建议大家练习时,可以用栈实现func PrintList(node *ListNode){ res:=[]int{} if node==nil{ return } f...

2019-03-21 11:17:30 264

原创 go语言实现--归并排序

归并排序归并排序实际上是对分治法的一个利用,将一个大的数组分成小的处理,再合并,我在实现过程中,有两个点是比较容易出错的,希望大家看了以后等注意起来,不要出错先看代码:func MergeSort(arr []int ,first,end int){ if first<end{ mid:=(end+first)/2 ...

2019-03-21 11:03:20 660

原创 go---AVL(二叉平衡树的实现)

今天看了二叉平衡树,以前也接触过但是没实现过,今天就把他实现了一下,先简单介绍一下。首先我们要明白AVL树本质上还是二叉搜索树,只是做了平衡优化,首先插入的时候,此时树是平衡的,所以我们要判断插入之后是否平衡,不平衡的话就通过旋转弄平衡,注意是先插入,再平衡,不平衡的情况有四种对左儿子的左子树进行插入,左左旋转对左儿子的右子树进行插入,左右旋转对右儿子的右子树进行插入,右右旋转对右儿子的...

2019-03-20 19:57:32 221

原创 go--双链表的实现(增删改查)改进版

之前就写过双链表的实现,但是今天看的时候发现了一个问题,就是在查询元素的时候并没有好好利用双链表的特性,所以今天又重新编辑了一下,大家看看区别代码:package mainimport "fmt"type Node struct { data int pre *Node Next *Node}type DoubleList struct { Head *Node leng...

2019-03-20 10:50:37 198

原创 每日编程(35)--leetcode

题目:可被K整除的字数组题目描述:给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。示例:输入:A = [4,5,0,-2,-3,1], K = 5输出:7解释:有 7 个子数组满足其元素之和可被 K = 5 整除:[4, 5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3],...

2019-03-19 10:56:08 463

原创 php实现三种基本的设计模式--单例,工厂,注册

单例模式:确保创建的是唯一的实例核心思想就是不能通过在类外new新建一个实例,通过instance,来创建实例,在创建时先判断是否存在,如果存在则返回当前实例,不存在即返回一个新建的实例,我们看一下php的实现代码:<?phpclass test{ private static $instance; private function __construct() ...

2019-03-18 18:26:12 216

原创 每日编程(34)--leetcode128周竞赛

没错我又参加了第128场竞赛,这次也是三道题,最后一题总是超时,暴力不能解决问题了题目:十进制整数的补码题目描述:每个非负整数 N 都有其二进制表示。例如, 5 可以被表示为二进制 “101”,11 可以用二进制 “1011” 表示,依此类推。注意,除 N = 0 外,任何二进制表示中都不含前导零。二进制的补码表示是将每个 1 改为 0 且每个 0 变为 1。例如,二进制数 “101” 的...

2019-03-17 13:18:30 831 10

原创 每日编程(33)

题目:最长湍流子数组题目描述:978. 最长湍流子数组 显示英文描述用户通过次数 196用户尝试次数 229通过次数 200提交次数 567题目难度 Medium当 A 的子数组 A[i], A[i+1], …, A[j] 满足下列条件时,我们称其为湍流子数组:若 i &lt;= k &lt; j,当 k 为奇数时, A[k] &gt; A[k+1],且当 k 为偶数时,A[k...

2019-03-16 20:30:23 169

原创 每日编程(32)--剑指offer

题目:从尾到头打印链表题目描述:输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。分析:很经典的一道题,方法也有很多,借助一个切片储存链表的值再更改的切片的顺序;递归遍历链表,直到最后一个链表返回输出代码:func printLinlist(node *ListNode)[]int{ arr:=[]int{} if node==nil{ return arr }...

2019-03-15 21:11:48 149

原创 go---用两个栈实现队列

相信大家对这个题目都不陌生,中心思想就是,队列中包含两个栈,一个栈作为储存入队操作的,另一个栈作为储存出栈操作的,但是,在goland中,是没有栈这种数据结构的,那又有什么关系,goland还有万能的切片啊,所以我们先用切片实现栈,再用栈实现队列代码:package mainimport "fmt"//栈的结构type stack struct{ nums []int}队列的结构...

2019-03-15 09:22:44 527

原创 每日编程--(31)

题目:分配房间题目描述:有n个房间,现在i号房间里的人需要被重新分配,分配的规则是这样的:先让i号房间里的人全都出来,接下来按照 i+1, i+2, i+3, … 的顺序依此往这些房间里放一个人,n号房间的的下一个房间是1号房间,直到所有的人都被重新分配。现在告诉你分配完后每个房间的人数以及最后一个人被分配的房间号x,你需要求出分配前每个房间的人数。数据保证一定有解,若有多解输出任意一个解。...

2019-03-14 20:34:05 406

原创 php模拟表单提交的三种方法

没有前台数据时,怎么模拟post提交表单呢,大概有这么三种方法,file_get_contents,curl,socket,我们分别说明一下。先交代一下背景,首先模拟的是一个留言提交,数据库只有三个字段id是自定增长的所以我们是需要模拟提交title和cintent,后台处理就是向插入一条记录,index.php&lt;?phprequire_once "connect.php";$...

2019-03-14 17:57:07 5037

原创 每日编程--(三十)

题目:验证栈序列题目描述:给定 pushed 和 popped 两个序列,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true;否则,返回 false 。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push(1), push(2), pus...

2019-03-12 20:16:13 165

原创 InnoDB的加锁情况

我们以一个sql为例讨论加锁过程sql:“delete from t1 where id=10”;对他进行分析在不明白数据库中索引情况和事务隔离级别的时候,是无法作出判断的id是主键,隔离级别 RC(read commited)这种情况下,id就是聚簇索引,只需要通过索引找到id=10的记录,给他加X锁(排他锁)id是唯一索引,+RCid不是主键索引了,先按照辅助索引找到id=10...

2019-03-12 17:20:48 223

原创 mysql--表分区,分表技术

表分区,分表mysql中表分区与分表是两个不同的概念,不能混为一谈分表:指的是通过一定的规则,将一张表分解成多张不同的表。表分区:是指按照一定的规则,将数据库中的一张表分解成多个更小的,容易管理的部分分表与表分区的区别从逻辑上看,分区只有一张表,而分表有多张表表分区分区一般是两种 横向分区和纵向分区横向分区:什么是横向分区呢?就是横着来分区了,举例来说明一下,假如有100W条数据,...

2019-03-12 12:16:11 253

原创 InnoDB的索引,锁,事务

索引InnoDB索引就是分为聚簇索引和非聚簇索引,所有的非聚簇索引就是辅助索引。它们之间的最大区别就是,聚集索引中存放着一条行记录的全部信息,而辅助索引中只包含索引列和一个用于查找对应行记录的『书签』。下面面我们详细解释一下聚簇索引InnoDB 存储引擎中的表都是使用索引组织的,也就是按照键的顺序存放;聚集索引就是按照表中主键的顺序构建一颗 B+ 树,并在叶节点中存放表中的行记录数据聚集...

2019-03-12 10:26:41 280

原创 mysql和InnoDB

数据库的定义其实从使用数据库开始,一直就对数据库有一个比较模糊的定义,只是觉得数据库是很多数据的一个集合,今天我们来明确一下,首先明确两个定义:数据库:物理操作文件系统或其他形式文件类型的集合;实 例:MySQL 数据库由后台线程以及一个共享内存区组成;数据库和实例在 MySQL 中,实例和数据库往往都是一一对应的(也有可能是多对一),而我们也无法直接操作数据库,而是要通过数据库实例...

2019-03-12 09:17:12 273

空空如也

空空如也

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

TA关注的人

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