菜鸟笔记
提升您的技术认知


Docker 教程

Docker 教程Docker 容器部署发展简史Docker 架构Docker 底层技术Docker 网络实现Docker Dockerfile介绍Docker Compose 项目

Leetcode 题解

Leetcode 介绍

Markdown 教程

Markdown 教程Markdown 标题Markdown 字体Markdown 段落Markdown 列表Markdown 引用Markdown 代码引用Markdown 链接Markdown 图片Markdown 表格

Redis 教程

Redis 教程

Wordpress 教程

Wordpress 教程WordPress 安装

HTTP 教程

HTTP 教程HTTP 工作原理HTTP URL介绍HTTP URI和URL的区别HTTP 消息结构HTTP 请求方法HTTP 响应头信息HTTP 状态码HTTP Content-typeHTTP 缓存机制及原理HTTP 各版本区别HTTPS 请求过程HTTPS 原理HTTP 协议超级详解

Linux 教程

Linux 教程Linux 简介Linux 安装Linux 系统启动过程Linux 系统目录结构Linux 文件系统Linux 文件基本属性Linux inode 介绍Linux 文件与目录管理Linux 文件压缩Linux 权限管理Linux 用户管理Linux 系统用户组管理

Shell 教程

Shell 教程

TCP/IP 教程

TCP/IP 教程计算机网络体系结构TCP/IP 基础TCP/IP 报文头部结构TCP 与UDP的区别TCP 三次握手TCP 四次挥手TCP 流量控制TCP 状态转换图详解TCP 保证有序传输TCP 滑动窗口TCP 流量控制讲解TCP 拥塞控制

经典定律

墨菲定律马太效应21天效应垃圾人定律木桶原理从众效应破窗效应奶头乐理论长尾理论幸存者偏差边际效应社会懈怠效应蝴蝶效应多米诺骨牌效应手表定律不值得定律羊群效应费斯汀格法则唐僧团队毛毛虫效应蘑菇管理定律摩尔定律柏林定律半途效应棘轮效应猴子理论黑洞效应金鱼缸效应懒蚂蚁效应猴子管理法则ABC理论成长型思维窄化效应PMA成功法则费曼学习法零和博弈熵增定律

Git 教程

Git 教程Git 安装和配置Git 工作流程Git 工作区、暂存区和版本库Git 创建仓库Git 基本操作Git 分支管理Git 查看提交历史Git 标签管理Git GitHub使用指南Git Github服务器搭建Git 常用命令

Vim 教程

Vim 教程Vim 安装Vi 和 Vim 的区别

SVN 教程

SVN 教程SVN 简介SVN 安装SVN 生命周期SVN 启动模式SVN 创建版本库SVN 检出操作SVN 解决冲突SVN 提交操作SVN 版本回退SVN 查看历史信息SVN分支SVN 标签(tag)TortoiseSVN 使用教程

Leetcode 数组

搜索旋转排序数组

Leetcode 字符串

无重复字符的最长子串

Linux 基础

学会使用命令帮助文件及目录管理文本处理磁盘管理进程管理工具性能监控网络工具用户管理工具系统管理及IPC资源管理

Linux 程序篇

程序构建程序调试性能优化进程间通信进程状态

Linux 参考手册

Linux 命令大全ASCII 码对照表

Linux 命令

Linux cd命令Linux ls命令Linux cp命令Linux du命令Linux df命令Linux kill命令Linux alias命令Linux unalias命令Linux history命令Linux export命令Linux dmesg命令Linux uname命令Linux lsb_release命令Linux ifstat命令Linux iostat命令Linux vmstat命令Linux mpstat命令Linux w命令Linux pmap命令Linux nohup命令Linux command命令Linux echo命令Linux type命令Linux ulimit命令Linux declare命令Linux dos2unix命令Linux iconv命令Linux unix2dos命令Linux curl命令Linux ftp命令Linux scp命令Linux rsync命令Linux pstack命令Linux pstree命令Linux date命令Linux crontab命令Linux ipcs命令Linux find命令Linux grep命令Linux cut命令Linux chown命令Linux sed命令Linux pgrep命令Linux mcopy命令Linux vimdiff命令Linux rgrep命令Linux mv命令Linux rm命令Linux touch命令Linux mkdir命令Linux wget命令Linux egrep命令Linux fgrep命令Linux split命令Linux tree命令Linux zcat命令Linux hexdump命令Linux nano命令Linux install命令Linux nl命令Linux cat命令Linux bzgrep命令Linux tar命令Linux unzip命令Linux zip命令Linux ln命令Linux dirname命令Linux dd命令Linux pwd命令Linux rename命令Linux more命令Linux less命令Linux head命令Linux wc命令Linux uniq命令Linux sort命令Linux lsattr命令Linux csplit命令Linux which命令Linux tail命令Linux chmod命令Linux cmp命令Linux tee命令Linux tcpdump命令Linux ssh命令Linux telnet命令Linux ifconfig命令Linux hostname命令Linux host命令Linux netstat命令

Linux 笔记

工作中最常用的Linux命令,排查问题必备Linux 简史用了这么多年Linux,你清楚这些概念吗?详细Linux 权限介绍Linux 命令行简介在Linux中建立Swaplinux重启定时任务crontab命令Linux系统指令 top 之 %si 占用高,分析实例mlock实现原理及应用Linux 下三种高效的文件处理技巧Linux proc/status 内存状态说明Linux TIME_WAIT过多的问题如何解决TIMEWAIT过多问题Linux 查看进程占用内存Linux 下 C++ so热更新vmrss vmsizefree命令中cached和buffers的区别截取命令cut命令、awk命令、sed命令几种清空Linux文件的方法定时任务Crontab详细用法Linux grep正则表达式awk 删掉文件中重复的行查看Linux系统版本awk 字符串连接操作(字符串转数字,数字转字符串)Linux下设置和查看环境变量linux中的stdin是什么意思?Linux下tar.gz文件解压缩命令如何让linux的history命令显示时间记录Linux中修改文件编码linux中的&&和&,|和||详解运维人员常用的Linux命令Linux中修改文件或文件夹权限的chmod777计算CPU利用率Linux查看系统版本、内核版本、机器位数Centos7 查看系统版本详细讲解systemctl命令详解几种常见的RAIDCentOS7 Could not retrieve mirrorlist 问题原因mmap和madvise的使用释放大块内存时的阻塞问题多读场景下的本地缓存透明大页(huge pages) ---Transparent HugePages进程地址空间几种内存泄露检测工具的比较进程空间elf文件格式总结RCU(Read Copy Update)Linux内核中的radix treeLinux僵尸进程处置解析Linux信号集操作函数什么是时序竞态?如何使用nload实时监控网络带宽简述Linux的内存寻址方式Linux下高效切换目录的方法在 Linux 上调整命令历史Linux命令su、sudo、sudo su、sudo -i使用和区别Linux端口转发的几种常用方法Linux之线程互斥锁5种检查可用内存的方法什么是僵尸进程以及如何处理#!/usr/bin/env python与#!/usr/bin/python的区别Linux程序后台运行实践为你介绍4个超实用的Linux监控工具ping: icmp open socket: Operation not permitted的解决办法Linux查看物理CPU个数、核数、逻辑CPU个数Linux 线程控制实例Linux下如何查看系统启动时间和运行时间shell实现SSH自动登陆用crontab定期执行脚本sz与rz命令-bash: unzip: command not found未找到命令的解决方法-bash: lsb_release: 未找到命令的解决方法-bash: sz: command not found未找到命令的解决方法如何查看Linux系统位数?32位或64位?Linux 查看进程之PS命令Linux命令之du命令Linux 软链接的创建、删除和更新Linux shell 计算两个文件的并集、交集、差集Linux上安装rz和sz命令Linux 命令之split(将一个大文件根据行数平均分成若干个小文件)Linux:ps命令详细使用查看进程运行时间ssh登录时在参数中加入密码的解决方案修改Linux系统时间EDT改为CSTssh命令-使用密钥文件进行登陆ssh-agent 与 ssh 的区别linux 下的使用 ln 创建 软链接 和 硬链接linux内核 rename 命令批量修改名称一次进程hang住问题分析。。。GDB调试命令小结Linux多线程同步方式linux性能监控工具linux查看硬件常用命令ELF文件格式Linux平台的C开发及运行环境bss段(未初始化数据)是否占用空间的问题Linux内核地址空间分布tomcat connectionTimeout 问题执行shell脚本报错 cannot execute binary filelinux下的su,su -,以及cd,cd - ,cd ~总结

MySQL 笔记

探索MySQL的各种锁(表锁,行锁,悲观锁,乐观锁,间隙锁,死锁)MYSQL数据库操作基本入门MySQL的索引是什么?怎么优化?mysql的密码管理、mysql初始密码查找、密码修改、mysql登录mysql5.7修改root默认密码MySql获取最新插入数据的id(id为自增)数据库索引原理数据库中的乐观锁与悲观锁MySQL的B+Tree索引实战:上亿数据如何秒查一次性讲清楚mysql事务和锁mysql存储引擎InnoDB详解,从底层看清InnoDB数据结构从数据结构层面解析mysql索引原理mysql三大日志-binlog、redo log和undo logmysql进阶知识点,启动项、系统变量、字符集介绍!乐观锁vs悲观锁来自大厂面试官的MySQL灵魂十连问MyISAM与InnoDB 的区别(9个不同点)Mysql数据库中的各种锁

C++ 笔记

C++ std::unique_lock与std::lock_guard区别boost多线程之mutex与lockboost mutex lock 使用Boost并发编程之shared_mutexC++智能指针详解boost库中thread多线程--细说lock_guardC++抛异常时如何获取堆栈调用信息C++的异常处理和堆栈信息c++ noncopyable禁止拷贝类c++ map拷贝赋值到另一个mapc++ vector的迭代器倒序遍历代码实现std::stringstream头文件及清空处理jsoncpp使用方法堆和栈的区别unordered_set使用介绍c++ sring类 浅拷贝&深拷贝&Copy On WriteC++ explicit关键字C++操作符的优先级 及其记忆方法C++ 类占用空间大小C++11中std::numeric_limits的使用C/C++ ? 问号运算符C++ 模板类声明头文件和实现文件分离,如何编译?c++ 指针和数组及动态内存管理C++四种强制类型转换介绍C/C++进程内存布局C++抛异常时如何获取异常时的堆栈调用信息Linux系统中的异常堆栈跟踪实现std::pair作为unordered_map的key代码中++i 与 i++的区别为什么(i++)不能做左值,而(++i)可以This指针大揭秘高并发内存池的实现C++内功修炼----面向对象的多态C++内功修炼----基础知识的零碎整理C++内功修炼----面向对象之封装C++内功修炼----预处理 volatileC++内功修炼----表达式C++内功修炼----函数C++内功修炼----面向对象概述C++内功修炼----面向对象之继承程序的内存结构new delete完全解析神兵利器shared_ptr unique_ptr weak_ptrC++动态内存管理一篇文章搞懂STL中的顺序容器之Vector一篇文章彻底搞懂红黑树一文搞懂C++标准IO库一篇文章搞懂STL中的迭代器Iterator一篇文章彻底搞懂哈希表细说 C++ Traits ClassesC++神奇的TraitsC++内功修炼----变量一篇文章搞懂STL中的空间配置器allocator一篇文章搞懂STL中的顺序容器之listSTL中的顺序容器之dequeC++内功修炼----类型C++ STL中的vector的内存分配与释放C++中的static关键字大揭秘老生常谈,正确使用memsetC++ 死锁情况protobuf repeated的用法protobuf和thrift对比C++ 捕获异常时的栈信息用C++写一个单例模式C/C++ 引用作为函数的返回值守护进程C++中的new、operator new与placement new详细解说 STL 排序(Sort)extern关键字C++ 左值 右值c++中的左值与右值一种高效的 vector 四则运算处理方法C++ unordered_map的使用C++ 单例模式总结与剖析C++11线程中的几种锁C++多线程编程实例C++中的异常安全性C++ 11的移动语义protobuf repeated类型的使用malloc和new的区别?经典面试题之new和malloc的区别c/c++ new与malloc的区别及使用时注意的问题多态的概念函数的形参和实参函数的递归指针是什么?c++ map.find使用方法std::vector中的陷阱C++ map用法总结通过代码如何获取环境变量C++面试题之哪些函数不能声明为虚函数C++结构体初始化与赋值C++类成员的初始化C++中的内联函数inlineC++函数指针C++中的函数指针总结c/c++在windows下获取时间和计算时间差的方法C++指针探讨 (一)数据指针C++成员函数指针C++函数对象

Wordpress 笔记

WordPress 百度快速收录 API 提交代码及教程wordpress各种获取路径和URL地址的函数总结WordPress文章别名设置英文、拼音和文章IDwordpress后台新文章增加文章别名设置wordpress文章中随机段落中插入广告wordpress标题自动生成英文拼音别名WordPress文章自动添加description信息WordPress手动修改文章排列顺序WordPress刷新Object-Cache缓存WordPress只允许登录用户使用搜索Wordpress常用函数wordpress纯代码生成网站地图sitemap.xmlWordPress获取当前分类的顶级分类IDwordpress 获取当前页面分类的IDWordPress自动对外链添加"nofollow"标签nofollow、noopener和noreferrer标签区别WordPress在指定页面添加js/css代码wordpress在特定页面加载css和js实例WordPress百度云cdn加速教程方法WordPress后台更新出现正在执行例行维护,请一分钟后回来的办法!Wordpress 网站的复制和迁移重置Wordpress 的管理员密码移除wordpress版本信息 删除无用信息WordPress调用指定分类随机文章wordpress限制非登录用户浏览分类文章WordPress如何获取全部文章总浏览数量如何给发表一定时间内文章添加特殊样式WordPress调用CSS最常用的方法有哪些wordpress调用指定分类文章如何实现wordpress首页列出所有分类及分类下的文章wordpress调用指定tag的文章WordPress刷新Object-Cache缓存wordpress备份插件All-in-One WP Migration 解除上传限制!WordPress 需要访问您网页服务器的权限。 请输入您的 FTP 登录XXXX

Docker 安装

Docker 版本简介CentOS 安装 DockerMacOS 安装 DockerUbuntu 安装 DockerRed Hat 安装 DockerDebian 安装 DockerGentoo 安装 DockerRackspace Cloud 安装 DockerAmazon EC2 安装 DockerIBM SoftLayer 安装 DockerFrugalWare 安装 DockerFedora 安装 DockeropenSUSE 安装 DockerCRUX Linux 安装 DockerWindows 安装 DockerBinaries 安装 Docker

Docker 使用

Docker 运行 hello Word

Docker 实例

Docker 安装 MongoDBDocker 安装 ReidsDocker 安装 PostgreSQLDocker 安装 RiakDocker 安装 SSHDocker 安装 CouchDBDocker 安装 Apt-Cacher-ng

Git 笔记

git 覆盖本地某个文件,放弃当前修改分享git的一些高级技巧Git使用常见问题解决方法汇总git master分支代码合并到自己的分支git merge 命令的应用场景Git文件的四种状态Git入门教程git从master分支拉取新分支git 放弃本地修改Git系列:初步认识和使用GitGit系列:如何创建和初始化仓库,添加更新修改Git系列:版本回退Git系列:管理、撤销以及删除Git系列:如何使用远程仓库Git系列:分支管理Git系列:如何重命名仓库,并同步远程仓库Git系列:进一步讲讲Git的分支管理Git常用指令合集如何写好 Git commit messagesgit 简洁提交——合并多个commit使用git log比较不同分支的差异Git、GitHub、GitLab的区别Linux -bash: git: 未找到命令的解决方法Git根据tag创建分支git tag的用法git修改文件权限方式git忽略掉文件权限检查git合并分支上指定的commitgit commit后,如何撤销commitgit commit之后,想撤销commitgit tag 标签完全用法git 如何获取指定 tag 代码Git pull 强制拉取线上代码覆盖本地用Gitlab 在linux 上搭建自己的 git 服务器git 查看远程分支、本地分支、删除本地分支git删除远程分支理解git常用命令原理Git回滚代码到某个commitgit回退到指定版本git stash详解虚拟机与Docker有何不同git merge和rebase的区别git merge 与 git rebase的区别git撤销add操作git 撤销add 和 撤销改动git 合并某个提交commit到指定的分支上Git合并特定commits 到另一个分支git 回退到某个commitGit Reset 三种模式git diff 只显示文件名

TCP/IP 笔记

TCP 为什么要三次握手TCP 为什么要四次挥手tcp/ip常见面试题TCP面试相关TCP/IP的四元组 五元组 七元组TCP 如何保证数据的有序传输面试高频考点:TCP的三次握手中,为什么要进行第三次?数据链路层网络层(IP协议)TCP TIME_WAIT详解linux 大量的TIME_WAIT解决办法TCP状态转换图UDP TCP 消息边界TCP之深入浅出send和recvTCP性能优化之避免慢启动TCP性能优化之避免大量握手为什么需要四次挥手四次挥手中TIME_WAIT,CLOSE_WAIT,FIN_WAIT_1,FIN_WAIT_2状态浅析TCP socket如何判断连接断开检查非正常断开的tcp连接判断非阻塞SOCKET是否已经断开的几种方法如何判断一个SOCKET连接是否已经断开UDP和TCP协议区别?TCP和UDP编程区别close_wait状态的产生原因及解法端口状态 LISTENING、ESTABLISHED、TIME_WAIT及CLOSE_WAIT详解,以及三次握手,滑动窗口TCP协议的连接建立过程和释放过程简单介绍

Python 笔记

Python获取当前时间和当前日期Python合并两个字典成一个新字典python类的实例化python 当前时间减一天ImportError: No module named requestsSyntaxError: Non-ASCII character '\xe9'Python注释

MySQL 教程

MySQL 教程MySQL 安装MySQL 管理MySQL 架构

工具使用

Navicat 是什么?Navicat 的安装如何使用客户端navicat连接mysql数据库?SecureCRT 配色方案SecureCRT 保持会话Xshell入门教程Graphviz程序员轻松绘图神器chrome浏览页面常用快捷键Chrome插件开发进阶Sublime 格式化代码 设置快捷键以及插件使用本地服务器环境phpstudy安装Mac licecap--GIF 屏幕录制工具VSCode打开多个项目文件夹的解决方法VSCode中的git使用篇在 vscode 中使用 Git :拉取、提交、克隆VScode如何打开命令行提高生产力的VSCode快捷键

Redis 笔记

redis性能问题分析和优化Redis数据过期策略Redis高频面试题亿级数据过滤算法神器-布隆过滤器面试时说 Redis 是单线程的,被喷惨了!15张图解Redis为什么这么快redis做消息队列Redis常见对象类型的底层数据结构Redis 单线程 为何却需要事务处理并发问题Redis的并发竞争问题redis分布式锁深度剖析REDIS缓存穿透,缓存击穿,缓存雪崩详解缓存穿透,缓存击穿,缓存雪崩解决方案分析布隆过滤器的方式解决缓存穿透问题Redis数据结构之HperLogLogRedis集群方案redis集群批量删除模糊key shell脚本mac下设置redis开机启动方法步骤从应用到底层 36张图带你进入Redis世界单线程的Redis为什么能支持10w+的QPS?使用Redis,你必须知道的21个注意要点Redis 面试题全面总结Redis基础、高级特性与性能调优Redis使用规范Redis 内存满了怎么办?

排序算法

经典排序算法插入排序选择排序冒泡排序快速排序希尔排序

Vim 笔记

vim中数据粘贴取消自动缩进vim对行进行排序vi 常用的命令vim输入中文乱码和打开中文文件乱码的问题vim 按单词移动vi中如何跳转到指定行数VIM跳转到开头、结尾、指定行linux系统vim编辑器的使用 页面跳转VIM中的特殊字符

Shell 笔记

shell 字符串操作(长度,查找,替换)详解grep中的正则表达式如何使用awk处理文本内容教你认识AWK 用户自定义函数sed命令删除文件的指定行合并和排序 Linux 上的文件grep的正则表达式应用print0 && xargsshell命令从字符串中提取数字linux grep多条件匹配数据linux grep匹配指定位数数字linux系统删除开头几个字符或者结尾几个字符linux 中大小写转换linux 系统 awk命令提取奇数行、偶数行及整数倍行linux 系统sed命令如何提取奇数行、偶数行及整倍数行grep显示匹配行的上下几行

LVS 教程

LVS 简介为什么需要LVSLVS 体系架构LVS 工作原理LVS 负载均衡模式LVS 负载均衡算法

Markdown 笔记

markdown 表格内换行Markdown常用语法(缩进、换行、字体大小等)MacDown如何显示删除线

Docker 参考手册

Docker 命令大全Docker 基础命令

Docker 命令大全

Docker create 命令Docker run 命令Docker start/stop/restart 命令Docker kill 命令Docker rm 命令Docker pause/unpause 命令Docker exec 命令Docker ps 命令Docker inspect 命令Docker top 命令Docker attach 命令Docker events 命令Docker logs 命令Docker wait 命令Docker export 命令Docker port 命令Docker commit 命令Docker cp 命令Docker diff 命令Docker login/logout 命令Docker pull 命令Docker push 命令Docker search 命令Docker images 命令Docker rmi 命令Docker tag 命令Docker history 命令Docker build 命令Docker save 命令Docker load 命令Docker import 命令Docker info 命令Docker version 命令

Docker 笔记

Docker 清理命令你必须知道的DockerfileDocker介绍Docker安装Docker中Image、Container与Volume的迁移Docker镜像Docker容器Docker仓库Docker创建Nginx容器Docker创建Selenium容器Docker创建DockerFile文件Docker commit创建镜像Docker Registry镜像管理Docker save and load镜像保存Docker四种网络模式Docker的数据管理(volume/bind mount/tmpfs)Docker的daemon.json的作用修改Docker容器启动配置参数Docker配置DNSDocker监控容器资源的占用情况Docker容器CPU、memory资源限制Docker Swarm集群部署Docker Swarm常用命令Docker使用pipework配置本地网络Docker使用Portainer搭建可视化界面Docker MachineDocker Compose编排容器Docker 清理占用的磁盘空间Docker 知识点

剑指offer

《剑指Offer》刷题目笔记

剑指Offer 数组

《剑指Offer》二维数组中的查找《剑指Offer》旋转数组的最小数字

剑指Offer 字符串

《剑指Offer》替换空格

剑指Offer 链表

《剑指Offer》从尾到头打印链表《剑指Offer》链表中倒数第k个结点《剑指Offer》反转链表

剑指Offer 树

《剑指Offer》重建二叉树《剑指Offer》树的子结构

面试题

实现一个LRU Cache 算法LRU Cache C++三种解法java实现LRU算法及编码实现LRU策略缓存LRU算法常见缓存算法和LRU的c++实现设计循环双端队列(deque)LRU 缓存结构 (c++ 哈希双链表实现)LRU缓存机制删除单链表中的指定节点Linux 内核经典面试题拼多多社招面经:Redis是重点,讲一讲redis的内存模型线程、进程、协程的区别C++经典面试题面试官:我们只想要这样的C++工程师Linux C/C++ 学习路线链表操作汇总C++11的智能指针面试题浏览器中输入url后发生的事情常用的限流算法HTTP协议和HTTPS协议面试题网络编程面试题目总结c++后台面试题目如何实现LRU算法?如何寻找无序数组中的第K大元素?布隆过滤器 - 如何在100个亿URL中快速判断某URL是否存在?如何实现大整数相加?C++面试题及基本知识点总结C++给定出栈序列判定是否合法消息队列面试题要点redis缓存击穿,失效以及热点key解决方案网页在浏览器上的渲染过程

网络编程笔记

《unix网络编程》五种I/O模型《unix网络编程》select、shutdown函数《unix网络编程》套接字选项《unix网络编程》守护进程和inetd超级服务器《UNIX网络编程》epoll 的accept , read, writeLinux 套接字编程中的 5 个隐患《unix网络编程》tcp服务器的几种常见状况分析《unix网络编程》epoll函数《unix网络编程》wait/waitpid处理僵死进程(SIGCHLD信号)《unix网络编程》socket是什么《UNIX网络编程》epoll的ET/LT模式注意点IO复用与并发编程Reactor和Proactor模型基于TCP的客户端、服务器端socket编程网络编程调试水平触发和边缘触发五种IO模型brpc长连接问题I/O多路复用之 selectI/O多路复用之 pollI/O多路复用之 epollselect,poll,epoll之间的优点和缺点总结大端模式和小端模式的区别大端模式和小端模式详解大端模式和小端模式netperf大小端的介绍判断机器的大小端Linux epoll模型正向代理与反向代理DNS的工作原理常用计算机网络端口号brpc编译运行Connection reset by peer的解决办法TCP粘包问题分析和解决Thrift之服务模型和序列化机制Epoll原理解析

算法笔记

八大排序算法及其优化哈希的应用(位图,布隆过滤器)对一致性hash原理的理解布隆过滤器BitMap算法详解数组中只出现一次的数蚂蚱跳跃问题寻找丑数二叉搜索树异质链表二分查找有序数组最短路径算法-----Dijkstra迪杰斯特拉算法一个漂亮的打印二叉树的程序C++求n个数的中位数详解二分查找算法双指针技巧浅谈动态规划浅谈递归算法几种常见的位运算算法的时间复杂度和空间复杂度链表的题型和解题思路递归之二分查找递归之快速排序递归之求数组最大值结构体对齐(字节对齐)规则及大小计算C++插入排序递归【C++】数组中的第k个最小元素【C++】“反转链表”相关的题目C++将十进制数转换为十六进制数动态规划题解递归算法时间复杂度分析排序算法汇总C++矩阵转置找出字符串中的最长回文子串 - 马拉车算法Sunday 字符串匹配算法(C++实现)布隆过滤器(Bloom Filter)的原理和实现一致性哈希算法原理无序数组中找第k大的数寻找多数元素蓄水池抽样算法 (Reservoir Sampling Algorithm)第k大数字-快排,大根堆实现前缀树C++二叉树遍历-递归迭代整理面试题37. 序列化二叉树

WordPress 主题制作

WordPress主题制作教程:基础准备WordPress主题制作教程:主题文件解析WordPress主题制作教程:HTML静态模板制作WordPress主题制作教程:主题安装

操作系统笔记

进程,线程,协程与并行,并发进程线程协程的区别死锁进程,线程,多线程i++的线程安全性同步和异步孤儿进程和僵尸进程/proc进程信息linux中的分段和分页互斥量 mutex线程进程间通信进程创建进程优先级进程的基础知识进程与线程的区别(面试题)线程的控制(创建,终止,等待,分离)可重入 VS 线程安全死锁的概念一级缓存和二级缓存的理解一句话解说内存屏障 Memory barrierbrk(), sbrk() 用法详解malloc/free函数的简单实现一文讲透 “进程、线程、协程”Linux进程状态线程池的陷阱linux内核学习之进程和线程进程与线程的区别和联系内存寻址linux IO子系统和文件系统读写流程Page cache和buffer cache的区别与联系漫谈linux文件IO多线程和多进程的区别内存泄漏字节、字、位、比特的概念和关系如何避免死锁ANSI是什么编码?CPU寻址范围(寻址空间)CPU 使用率低高负载的原因创建多少个线程合适操作系统下spinlock锁解析、模拟及损耗分析线程堆栈堆和栈的内存分配堆和栈的概念和区别堆和栈的区别,申请方式,程序的内存分配什么是 POD 数据类型Linux内存分配小结--malloc、brk、mmap系统调用与内存管理(sbrk、brk、mmap、munmap)进程描述和控制CPU执行程序的原理编译的基本概念Linux虚拟地址空间布局一个程序从源代码到可执行程序的过程程序的运行机制——CPU、内存、指令的那些事分页内存管理——虚拟地址到物理地址的转换深刻理解Linux进程间通信fork之后父子进程的内存关系fork之后,子进程继承了父进程哪些内容关于协程及其锁的一些认识对协程的一点理解std::thread join和detach区别CAS和ABA问题CAS算法锁和无锁无锁队列的实现Lock-Free 编程锁开销优化以及CAS

Linux 工具参考篇

gdb 调试利器ldd 查看程序依赖库lsof 一切皆文件ps 进程查看器pstack 跟踪进程栈strace 跟踪进程中的系统调用ipcs 查询进程间通信状态top linux下的任务管理器free 查询可用内存vmstat 监视内存使用情况iostat 监视I/O子系统sar 找出系统瓶颈的利器readelf elf文件格式分析objdump 二进制文件分析nm 目标文件格式分析size 查看程序内存映像大小wget 文件下载scp 跨机远程拷贝crontab 定时任务gprof Linux性能评测工具nmon Linux性能评测工具valgrind工具内存泄露检测

C 笔记

C语言 unlink函数strncpy,strncat,strncmp函数的介绍C语言知识整理(1):简介C语言知识整理(2):volatile与registerC语言知识整理(3):内存管理(详细版)理解递归程序设计Sizeof与Strlen的区别与联系5分钟搞定内存字节对齐c语言getline()函数实现数组初始化方式C语言的数组初始化C语言strncasecmp()函数:比较字符串的前n个字符C语言 memset函数及其用法strcasecmp函数和strncasecmp函数源码struct stat结构体的详解和用法typedef和define的详解简单Linux C线程池C语言中关键字volatile的含义C语言处理字符串函数总结C语言fgets读取整个文本文件的内容c语言-逐行读取txt文件的内容C语言运算符优先级gcc编译过程C语言字节对齐问题详解C语言预处理命令详解系统调用——open、write、read和closeftok()函数解析sprintf()函数的用法总结rand()函数怎么用C语言求水仙花数C语言冒泡排序将一个数组按照从小到大进行排序如何测试一个机器是大端还是小端循环语句中break 与 continue的区别写一个函数判断闰年C语言计算n的阶乘 C语言

GDB 教程

GDB 是什么GDB 安装GDB Windows安装

GDB 笔记

用GDB调试程序(一)用GDB调试程序(二)用GDB调试程序(三)用GDB调试程序(四)用GDB调试程序(五)用GDB调试程序(六)用GDB调试程序(七)GDB调试技巧-打印vector的元素值

技术架构

阿里巴巴Sentinel关于自适应限流魅族 C++ 微服务框架技术技术架构如何做?服务器技术和架构架构师必备的20个英文缩写自适应限流神器 netflix-concurrency-limits系统架构的演变系统架构演化历程深入浅出一致性Hash原理,及问题解决一个亿级消息量的IM系统,堪称精彩

Linux性能优化实战

Linux性能分析概要CPU性能-平均负载loadCPU性能-CPU上下文切换(一)CPU性能-CPU上下文切换(二)CPU的使用率性能优化实战案例分析进程状态查看iowait分析中断概念查看系统资源性能指标和工具性能优化方法论

面试经验

腾讯社招面试经历用友面试经历杯具的应届生面试经历字节跳动面试,第三面挂了大厂面经我的支付宝3面+美团4面+腾讯4面,巧获Offer腾讯PCG部门 后端开发腾讯TEG一面记录面试一家小公司,被问了 1 个小时并发编程python获取每颗cpu使用率

程序员

如何不靠运气致富程序员修炼必读清单(一)程序员修炼必读清单 ( 二)程序员修炼必读清单(三)程序员修炼必读清单(四 )程序员应该熟悉的几门编程语言

分布式笔记

CAP理论CAP 定理的含义

VSCode 教程

VSCode 教程VSCode 安装VSCode 安装插件

VSCode 笔记

VSCode好用的插件Visual Studio Code(VS code)介绍VSCode详细安装教程VSCode怎么快速查看函数定义

多线程笔记

自旋锁Spin lockC++ thread用法总结

菜鸟教程

rapidjson 构造数组将函数实现放在头文件中RapidJSON解析和生成Json绝对路径和相对路径gcc 优化选项 -O1 -O2 -O3 -Os 优先级Python求一个整数位数的方法python中判断数字位数的几种方法python计算分位数查看hive的版本如何查看hadoop的版本elasticsearch查看所有indexsublime 列模式 列编辑shell遍历目录下所有文件http-parser解析http报文详解supervisor守护工具配置lnmp为已有站点手动更新ssl证书记录java 最长回文、最长回文子串ssh免密码登录为Linux内核开启BBR加速frp服务开机自启x86架构下,页面大小为什么是4K?如何限制对象只能建立在堆上或者栈上进程间通信的方式SyntaxError: Non-ASCII character '\xe5'TCP 连接半关闭问题ucontext 协程库代码分析python中yield的用法详解为PHP7.0安装redis扩展ucontext 简单协程库ImportError: No module named cv2的完美解决方法HashMap扩容全过程关于HashMap常见面试考点(底层原理+扩容机制)DOS批处理中的字符串处理详解(字符串截取)Linux下如何查找.sh后缀的文件core文件出现“is not a core dump: File format not recognized”的原因和解决方法(看/proc/pid/limits)记一次docker问题定位(perf,iostat等性能分析)Protocol Buffers 2.5.0 安装python 使用thrift序列化与反序列化对象PHP的base64_decode乱码linux中后台运行 java -jarLinux常用命令--文件搜索Linux常用命令--文件基础操作与文件权限变更Linux常用命令--软件包管理之(RPM包管理)Linux常用命令--文件编辑与查看Linux常用命令--文件压缩与挂载Linux常用命令--系统管理Linux常用命令--系统管理之(用户管理、用户组管理)Linux常用命令--系统管理之(进程管理、定时任务、系统监控)Linux常用命令--软件包管理之(服务管理)Linux常用命令--软件包管理之(yum与源码包安装)Linux初窥:Linux下SSH免密码登录配置如何查看CentOS7的版本信息Linux环境变量文件介绍Linux下Tomcat的安装与配置CentOS解决-bash: vim: command not found10 个提高效率的 Linux 命令别名shell比较浮点数和整数crontab 30秒执行一次Python中字典合并的四种方法shell查看CPU 硬盘 内存使用率Python 四大主流 Web 编程框架python:web后台框架简单实现如何使用 BRPC Dummy Serverlist、vector使用erase()时需要注意的地方——迭代器失效容器删除元素后迭代器失效_STL源码剖析——vector容器STL的erase()陷阱-迭代器失效总结.bashrc中定义实用的别名和函数

HTTP 权威指南笔记

HTTP 简介HTTP URL与资源HTTP 报文HTTP 连接管理HTTP 持久连接HTTP 关闭连接HTTP web服务器的简单实现HTTP 代理HTTP 代理tipsHTTP 代理路径与安全验证HTTP 缓存是怎么工作的?HTTP 缓存的新鲜度判断HTTP 缓存tips

分布式系统

高可用负载均衡负载均衡解决方案熔断方案限流补偿无状态详解高内聚低耦合详解全方位解读缓存先写DB还是缓存

JAVA设计模式

如何学习设计模式JAVA设计模式总结JAVA设计模式--简单工厂模式JAVA设计模式--工厂方法模式JAVA设计模式--抽象工厂模式JAVA设计模式--单例模式JAVA设计模式--原型模式JAVA设计模式--建造者模式JAVA设计模式--装饰模式JAVA设计模式--策略模式JAVA设计模式--观察者模式JAVA设计模式--代理模式(静态)JAVA设计模式--代理模式(动态)(一)JAVA设计模式--代理模式(动态)(二)JAVA设计模式--适配器模式JAVA设计模式--享元模式JAVA设计模式--访问者模式JAVA设计模式--桥接模式JAVA设计模式--职责链模式JAVA设计模式--备忘录模式JAVA设计模式--组合模式JAVA设计模式--状态模式JAVA设计模式--模板方法模式JAVA设计模式--迭代器模式JAVA设计模式--命令模式JAVA设计模式--中介者模式JAVA设计模式--外观模式JAVA设计模式--解释器模式

Mysql8 和mysql 5.7 的区别

阅读 : 22

1. NoSql存储

Mysql从5.7 版本提供了NoSQL的存储功能,在8.0中这部分得到一些修改,不过这个在实际中用的极少

2.隐藏索引

隐藏索引的特性对于性能调试非常有用,在8.0 中,索引可以被隐藏和显示,当一个索引隐藏时,他不会被查询优化器所使用

也就是说可以隐藏一个索引,然后观察对数据库的影响.如果性能下降,就说明这个索引是有效的,于是将其”恢复显示”即可;如果数据库性能看不出变化,说明这个索引是多于的,可以删掉了

隐藏一个索引的语法

ALTER TABLE t ALTER INDEX i INVISIBLE;

恢复显示该索引的语法是:

	ALTER TABLE t ALTER INDEX i VISIBLE;

当一个索引被隐藏时,我们可以从show index命令的输出汇总看出,该索引visible属性值为No

**注意:**当索引被隐藏时,他的内容仍然是和正常索引一样实时更新的,这个特性本身是专门为了优化调试而使用的,如果你长期隐藏一个索引,那还不如干掉,因为索引的存在会影响数据的插入\更新和删除功能

3.设置持久化

MySQL 的设置可以在运行时通过 SET GLOBAL 命令来更改,但是这种更改只会临时生效,到下次启动时数据库又会从配置文件中读取。
MySQL 8 新增了 SET PERSIST 命令,例如:
SET PERSIST max_connections = 500;
MySQL 会将该命令的配置保存到数据目录下的 mysqld-auto.cnf 文件中,下次启动时会读取该文件,用其中的配置来覆盖缺省的配置文件。

4.UTF-8 编码

从 MySQL 8 开始,数据库的缺省编码将改为 utf8mb4,这个编码包含了所有 emoji 字符。多少年来我们使用 MySQL 都要在编码方面小心翼翼,生怕忘了将缺省的 latin 改掉而出现乱码问题。从此以后就不用担心了。

5.通用表表达式(Common Table Expressions)

复杂的查询会使用嵌入式表,例如:

SELECT t1.*, t2.* FROM
	 (SELECT col1 FROM table1) t1,
	 (SELECT col2 FROM table2) t2;

而有了 CTE,我们可以这样写:

	WITH
	 t1 AS (SELECT col1 FROM table1),
	 t2 AS (SELECT col2 FROM table2)
	SELECT t1.*, t2.* 
	FROM t1, t2;

这样看上去层次和区域都更加分明,改起来也更清晰的知道要改哪一部分。
这个特性在很多报表场景是很有用的,也是mysql优化的一个很重要特性。
1.235窗口函数(Window Functions)
MySQL 被吐槽最多的特性之一就是缺少 rank() 函数,当需要在查询当中实现排名时,必须手写 @ 变量。但是从 8.0 开始,MySQL 新增了一个叫窗口函数的概念,它可以用来实现若干新的查询方式。
窗口函数有点像是 SUM()、COUNT() 那样的集合函数,但它并不会将多行查询结果合并为一行,而是将结果放回多行当中。也就是说,窗口函数是不需要 GROUP BY 的。
假设我们有一张 “班级学生人数” 表:

如果要对班级人数从小到大进行排名,可以这样利用窗口函数:

说明:在这里创建了名为 w 的 window,规定它对 stu_count 字段进行排序,然后在 select 子句中对 w 执行 rank() 方法,将结果输出为 rank 字段。
这个特性也是Oracle11g有的一个新特性,在优化也是起着很重要的作用。