- 博客(36)
- 资源 (1)
- 收藏
- 关注
原创 MySQL的limit优化,可别让面试官问住了!
MySQL的limit优化limit的介绍limit遇到的效率问题limit的优化limit的介绍limit关键字是MySQL进行分页的关键字使用的用法为:select * from tablename limit 0,20;limit遇到的效率问题limit是通过从表的第一行开始遍历到指定位置的方法来实现寻找分页数据的,这样在数据量小的时候是非常有效的,但是碰到数据量非常大的情况时,会遇到效率不佳的问题比如:select * from tablename limit 10
2020-09-08 19:52:28
652
原创 多版本并发控制MVCC的详细介绍
多版本并发控制MVCCMVCC是用来干什么的?MVCC的具体实现MVCC是用来干什么的?在Mysql的Innodb存储引擎中,多版本并发控制MVCC是为了解决在可重复读(Repeatable Read)隔离级别下的幻读问题而出现的。MVCC的具体实现 MVCC有乐观和悲观两种实现方式,下面我以Innodb中的版本为例讲述他的具体实现 首先,MVCC会在每张表后添加隐藏的两列,分别用来记录 修改时的系统版本号 以及 删除时的系统版本号 (系统版本号与事务有关,每开启一个新事务,系统版
2020-09-08 19:10:11
271
原创 TCP的三次握手
TCP协议TCP的数据包格式TCP的三次握手TCP的数据包格式TCP数据包的报文头有6位控制位,包括SYN和ACK用来握手使用TCP的三次握手主要流程如下:客户端接收到连接信息,向服务端发送SYN为1且数据为seq=x的报文,状态由关闭转为同步已发送服务端接收到客户端发来的报文后,状态由监听状态变为同步已接收,并向客户端发送SYN与ACK均为1,数据为seq=y且ack=x+1的报文客户端接收到服务端发来的信息以后,知道了客户端是可以传送到服务端的,于是将状态变为连接已建立,
2020-09-03 18:25:49
230
原创 OSI的7层网络模型
OSI的7层网络模型应用层表示层会话层传输层网络层数据链路层物理层应用层应用层主要协议有HTTP、FTP等表示层表示层主要是将下层传来的数据进行转换,提交给应用层会话层会话层主要管理建立连接和会话管理传输层传输层定义了传输数据的协议和端口号,主要的协议有TCP、UDP等网络层网络层主要是对IP地址进行封装和解析数据链路层数据链路层主要是对Mac地址进行封装和解析物理层定义物理设备标准,传输比特流...
2020-09-03 18:25:08
160
原创 HTTP协议详解、与HTTPS协议的区别是什么?
HTTP协议HTTP协议简单介绍HTTP的8种请求方法GET与POST的区别HTTPS——保证安全的协议单向非对称加密HTTP协议简单介绍HTTP是应用层的协议HTTP的8种请求方法请求方法含义GET请求指定的页面信息,并返回主体,可在请求头中放数据HEAD与GET类似,但只获取返回头,不返回主体信息POST向指定资源发送数据请求,数据存放在请求体中PUT向指定资源上传最新数据,用于上传DELETE请求删除指定页面
2020-09-03 18:24:27
261
原创 Redis基本数据结构及操作
Redis基本数据结构及操作redis中共有五种数据结构,下面来一一展示如何操作他们字符串(String)列表(List)集合(Set)散列(Hash)有序集合(ZSet)数据结构结构中存储的值可以进行的操作string可以是字符串、整数、浮点数对整个字符串或部分字符串进行操作字符串(String)string存储的可以是字符串、整数、浮点数.是键值对结构有如下命令:命令操作get key获取给定键的值,如果是空返回(nil
2020-08-24 13:42:50
208
原创 java垃圾回收算法介绍,垃圾收集器详解
java垃圾回收算法介绍,垃圾收集器详解什么是垃圾?哪些是垃圾?(对象存活判定方法)垃圾收集算法分代收集理论跨代引用与解决办法(记忆集)标记-清除(Mark-Sweep)算法标记-复制(Mark-Copy)算法标记-整理(Mark-Compact)算法HotSpot的算法实现细节根节点枚举安全点安全区域记忆集与卡表写屏障并发的可达性分析垃圾收集器新生代垃圾收集器Serial 收集器ParNew 收集器Parallel Scavenge 收集器
2020-08-23 02:51:36
535
原创 Git常用命令,终于知道reset怎么用了!
Git常用命令目录Git命令含义init将本地工程初始化为本地仓库,纳入版本控制clone从远端克隆仓库add将工作区修改保存到暂存区status查看暂存区(green)和工作区(red)的修改commit将修改提交到本地仓库push将本地当前分支的提交推送到远端仓库log查看提交的日志reset将提交回退到某一次提交时的状态普通命令含义rm -rf [file]|[dir]删除文件或文件夹
2020-07-28 21:19:23
1599
原创 在本地初始化的项目怎么上传到GitHub
在本地初始化的项目怎么上传到GitHub//远端增加origingit remote add origin "刚刚创建的代码仓库网址,如github的仓库地址"//推送一次代码git add xxxgit commit -m sssgit push -u origin master把本地仓库push一次到远程仓库即可完成上传第一次推送必须要指定远端的分支,以后可以不加-u为第一次推送时要加的,以后可以不加...
2020-07-28 19:42:18
118
原创 终于搞懂了java8的内存结构,再也不纠结方法区和常量池了!
java8内存结构介绍 java虚拟机在jdk8改变了许多,网络上各种解释都有,在查阅了官方文档以及一下大佬的解释以后,我来粗浅的介绍一下我理解的java8的内存结构。目录内存结构图总结虚拟机内存与本地内存的区别java运行时数据区域程序计数器(Program Counter Register)虚拟机栈(JVM Stacks)本地方法栈(Native Method Stacks)Java堆(Java Heap)方法区(Method Area)直接内存常见问题什么是Nati
2020-07-15 01:40:48
6982
20
原创 Git基本概念理解
Git基本概念理解 Git对于程序员来说想必都不陌生,作为目前最广泛使用的版本管理工具,如果不会使用,往往会让人觉得你这个程序员不专业,今天我们来了解一下git的相关概念。 在初始化(git init)或者克隆(git clone)一个仓库之后,在我们的本地文件夹里,我们会发现除了文件以外,还有一个.git文件,这个文件便是我们的版本库,这个仓库关于版本管理的所有文件都存放在这里,也就是说,如果执行rm -rf .git将这个文件删掉的话,就把这个Git仓库给删除了。 由上,我们可以知道,一个Git仓
2020-07-11 18:13:24
1069
原创 git配置文件解析,配置命令详解
git配置文件解析,配置命令详解Git有三个等级的系统文件,Git默认不会创建这些配置文件,只有你编辑他们的时候,他们才会被创建,平常我们使用命令行来修改就可以了,他们分别存放于不同的位置。目录配置文件介绍配置命令详解编辑配置文件编辑单个配置查看某个配置重置某个配置配置文件介绍system系统级别,一般存放系统设置,作用范围最大一般存放于[Git安装目录]\mingw64\etc\gitconfig,但是Git不会自动生成这个文件只有通过命令编辑文件后,该文件才会生成,
2020-07-11 18:12:48
785
原创 二进制在计算机中的表示,以及java进制转换的方法
java进制转换十进制转换为其他进制public class Main { public static void main(String[] args) throws Exception { //转换为二进制 System.out.println(Integer.toBinaryString(2333)); //转换为16进制 System.out.println(Integer.toHexString(2333));
2020-07-08 01:03:02
293
原创 java输入输出的方法
java输入输出目录一、控制台输入输出二、文件读写一、控制台输入输出 java控制台的输入输出主要依赖于scanner类,使用Scanner scanner=new Scanner(System.in)获取了控制台输入的字段,其中system.in就表示这个对象读取的是控制台。 public static void main(String[] args) { Scanner scanner=new Scanner(System.in); while (sc
2020-07-05 19:42:52
4444
1
原创 java生成随机数的三种方法,终于会了!
java生成随机数java生成随机数最常用的有3种方法,3种方法如下Math.random()Math.random()可以生成[0,1)范围的随机数java.util.Random构造方法Random r=new Random()不带随机种子,每次执行都产生不一样的结果Random r=new Random(5)带有随机种子,随机种子相同时执行相同的次数,生成的随机数是一样的public class Main { public static void main(St
2020-07-03 00:37:37
7281
原创 Linux常用命令有哪些,怎么用?
目录一、系统设置二、编辑相关三、网络相关四、yum命令系统设置去掉虚拟机报警声方法1:rmmod pcspkr方法2:vim /etc/inputrc 把这一行的注释去掉重启即可set bell-style none设置共享文件夹设置windows共享文件夹安装vmtoolslinux 命令vmware-hgfsclient #查看共享文件夹名称mkdir /sharefiles #创建linux共享目录/usr/bin/vmhgfs-fus
2020-06-28 01:29:19
174
原创 IDEA导出java工程jar文件,报“invalid or corrupt jarfile”看这篇!
IDEA导出java工程jar文件我们想要让我们的程序可以更方便的在其他机器上去执行,就要将程序打包,本文介绍idea怎么导出java工程的jar文件。打开file->progect structure配置artifacts选择artifacts添加要导出的项目选择type为jar选择jar包,配置manifast file 和main classoutput directory是工程导出的目录配置完后关闭导出jar包主界面选择build->build
2020-06-27 20:39:23
3647
原创 Docker client.timeout解决办法
Docker client.timeout解决办法在从docker仓库下载镜像时,如果报这个错误,一般是由于国内网络环境造成的,我们配置成阿里的网址就好了,这里介绍一下centos下如何使用阿里的镜像仓库打开daemon.jsoncd /etc/docker/vi daemon.json在daemon.json中配置如下,这样就会从这个地址下载镜像了{ "registry-mirrors": [ "https://khec465u.mirror.aliyuncs.com"
2020-06-26 19:08:53
2697
原创 windows下配置git密钥以及在GitHub使用
windows下配置公钥以及在GitHub使用1.git配置公钥私钥 git在使用过程中,如果没有配置秘钥,那么每次提交代码的时候都需要验证密码,非常麻烦,所以,我们需要配置秘钥,并把公钥放到要推送的远端仓库中。步骤如下:配置用户名以及邮箱配置的用户名以及邮箱便是以后你提交代码时的身份$ git config --globa user.name "yourname"$ git config --globa user.email "youremail@xxxxx.com"查看配置
2020-06-25 16:24:31
4387
原创 MySQL常用字符串函数整理
MySQL常用字符串函数整理 在使用MySQL的时候,经常会碰到处理字符串的情况,我总结了常用的字符串函数,或有不全,请包涵,供大家参考,最好收藏。 注:在MySQL中,字符串的起始位置为1,即'abc'这个字符串中,'b'的位置为2总结函数意义CONCAT(str1,str2,...)将多个字符串连接起来,如果其中有一个值为空,那么返回的值便为空CONCAT_WS(separator,str1,str2,...)将多个字符串连接起来,中间用separator隔开,如
2020-06-03 21:25:31
142
原创 最详细Java教程
最详细java教程 立志于让初学者也能快速上手java,现开一个专栏,详细总结java的各方面知识点。Java的基本程序设计结构Java的基本数据类型Java线程讲解Java线程初探创建线程时继承thread与实现runnable的区别实现线程同步实现线程死锁...
2020-06-02 20:48:39
820
1
原创 java的8大基本数据类型,表示范围是多少?
java的基本数据类型 在Java中,共有8种基本数据类型,其中有4种整形,2种浮点型,1种char类型,1种表示真值的boolean型。整型整型用于表示小数点后没有值得类型,共有四种,主要是表示范围的差别:类型所占空间取值范围int32位/4字节[-231,231-1]即[-2147483648,2147483647],大概表示正负20亿的范围short16位/2字节[-215,215-1]即[-32768,32767]即正负3万左右long64位/
2020-06-02 20:41:46
3749
原创 最全Markdown教程
最全Markdown教程Markdown语法编辑器选择以及图床配置用VSCode+PicGo+AliyunOss搭建Markdown图床VSCode+PicGo+Github搭建Markdown图床
2020-05-29 20:42:05
1450
原创 VSCode+PicGo+Github搭建Markdown图床
VSCode+PicGo+Github搭建Markdown图床 vscode是一个扩展性极强的编辑器,插件非常丰富,在下载了Markdown All in One插件之后作为Markdown编辑器非常好用。既可以预览,对语法的支持也非常好,唯一的一点缺点就是不能上传图片,以至于每次写博客的时候都要切到网站上粘图片再拷贝连接回来,非常麻烦。picgo介绍 好在,vscode上有一个picgo插件,可以让我们用快捷键即可上传图片到默认的免费服务器,具体的使用方法是,安装完成后:windows下ct
2020-05-29 20:38:22
2833
1
原创 VSCode+PicGo+AliyunOss搭建Markdown图床
VSCode+PicGo+AliyunOss搭建Markdown图床 vscode是一个扩展性极强的编辑器,插件非常丰富,在下载了Markdown All in One插件之后作为Markdown编辑器非常好用。既可以预览,对语法的支持也非常好,唯一的一点缺点就是不能上传图片,以至于每次写博客的时候都要切到网站上粘图片再拷贝连接回来,非常麻烦。picgo介绍 好在,vscode上有一个picgo插件,可以让我们用快捷键即可上传图片到默认的免费服务器,具体的使用方法是,安装完成后:windows
2020-05-29 19:57:22
1118
1
原创 MySQL性能调优,explain关键字怎么用?MySQL执行计划详细介绍
MySQL执行计划 作为一个后端程序员,工作中免不了和数据库打交道,以MySQL数据库为例,同样的需求,有的人写的查询语句几秒就执行完了,而有的人写的SQL要执行几分钟甚至无法执行,那么怎么去调优我的SQL呢?MySQL提供了性能调优工具即EXPLAIN执行计划。什么是explain?MySQL提供的查询SQL语句执行效率的工具,通过返回信息供人们进行性能调优,书写格式如下:EXPLAINSELECT * FROM TABLE [LEFT JOIN TABLE ...] WHERE [COLO
2020-05-26 21:24:59
288
1
原创 MySQL的时间类型有哪些?有哪些时间函数?如何使用?
MySQL时间类型 mysql有多种时间类型,他们之间的区别是什么?使用时又需要注意什么呢?1.MySQL的5种时间类型如下表所示:类型大小格式0值意义DATE4 bytesYYYY-MM-DD0000-00-00TIMESTAMP4 bytesYYYY-MM-DD HH:MM:SS0000-00-00 00:00:00DATETIME8 bytesYYYY-MM-DD HH:MM:SS0000-00-00 00:00:00TIME3 b
2020-05-14 21:23:39
901
原创 都可以创建线程,Java中继承thread与实现runnable有什么区别?
Java的Thread类的两种实现方式的区别 在之前的文章中,我介绍过要创建thread对象可以通过继承Thread和实现Runnable接口两种方式来实现,但是这两种方式是由本质的区别的,具体的区别我们一起来看一下。1.通过继承Thread实现代码如下: //Bank类 public class Bank { private int money = 0; public void addMoney(int m) { money
2020-05-13 21:30:12
414
原创 线程是什么?Java线程如何创建?
Java线程详解 Java的多线程一直是初学者的难点,本文记录一下我自己踩坑的得到的一些心得体会。1.什么是线程?和进程有什么区别? 在现代操作系统中,通常会运行多个应用程序,这一个个的应用程序,在计算机眼里,就是一个个的进程,每个进程都会占有一部分内存空间和CPU执行时间。进程就是一段CPU的执行流程,这段流程中可以运行多个线程,即一个进程可包括多个线程。2.Java的线程实例化 Java中的线程指的是通过Thread()类及其子类实例化来运行的线程。可以通过2种方式来实例化线程。a.通过
2020-05-13 21:28:44
246
原创 Java怎么实现线程同步?
Java线程同步 在之前的文章《Java的Thread类的两种实现方式的区别》中,我们发现,通过实现Runnable接口创建的线程可能会出现被共享的资源,被多个线程同时操作,并导致数据不准确的现象,那我们怎么去保护我们的敏感数据的,必须让共享的数据在一个特定的操作时间内只能由一个线程来进行操作,这,便是线程同步的概念。 首先来看一下不同步时的代码: //Bank public class Bank { private int money = 0; pub
2020-05-13 21:27:26
652
原创 线程死锁是怎么出现的?用Java实现线程死锁
Java线程死锁 在上一篇《java线程同步》中,我们思考了一个问题,那就是当多个线程在都在等待其他线程释放共享资源时,所有的线程都就不能继续下去了,这在java运行过程中是一种很严重的问题,俗称java死锁。下面是2个线程的死锁代码: //同步类 public class DeadLock { private String str1 ="1"; private String str2="2"; public void method1()
2020-05-13 21:25:57
156
原创 Markdown怎么写?怎么实现跳转?Markdown从入门到精通
Markdown语法 大家在网络上写文章如果喜欢跨平台转载,那么用Markdown格式来写是一个非常好的选择,本文是对Markdown常用的格式的介绍。1.标题'#'是标题,一共6级,可以和其他样式混用# 一级标题## 二级标题### 三级标题#### 四级标题##### 五级标题###### 六级标题效果:一级标题二级标题三级标题四级标题五级标题六级标题2.文字样式**文字加粗***文字倾斜****加粗&倾斜***~~加删除线~~效果:
2020-05-13 21:24:11
1822
原创 MySQL关键字书写顺序和执行顺序的区别?在哪些关键字里才可以用到别名?
MySql关键字的顺序 mysql关键字有执行顺序与书写顺序,现总结如下:1.执行顺序FROMWHERESELECTGROUP BYHAVINGORDER BY注:group by/having/order by 可以使用select的别名(select avg as a)2.书写顺序SELECTFROMJOINONWHEREGROUP BYHAVINGORDER BYUNION特别注意:HAVING一定要放在GROUP BY后面示例:sql:SE
2020-05-13 21:16:04
311
原创 什么是驼峰命名法?
什么是驼峰命名法? 在一个大型软件工程中,往往有几十乃至上千名程序员,大家在一起团结协作,共同完成任务,在写代码的时候,通常需要定义一些类名、方法名、变量名,为了让所有人都看得懂,就要有一个大家都共同遵守的命名规范,到现在为止,应用最广泛的应该就是驼峰命名法了。 那么,什么是驼峰命名法呢? 驼峰命名法是指多个单词组合在一起标识一个特定的含义时,第一个单词全部小写,第二个以及之后的单词首字母大写其余小写的命名规则,其中分为小驼峰法与大驼峰法。我们以Java为例,讲一下大小驼峰的使用方式。1. 小驼峰法
2020-05-13 21:13:19
5874
原创 redis是单线程的为什么速度这么快?
redis理解1.什么是redis? redis是基于内存的也可以持久化的日志型、key-value数据库,是单线程的。基于内存可持久化key-value数据库单线程2.redis为什么是单线程的?由于redis是基于内存进行读写的,所以他的io瓶颈并不在磁盘上 ,内存的速度非常快。redis是key-value型数据库,相比于关系型数据库效率更高,时间复杂度为O(1)。redis的使用场景为连接非常多但每个连接开销很少,而CPU切换线程的开销很大,所以单线程更合适。redis
2020-05-13 16:28:00
203
1
原创 如何在GitHub上搜索开源项目?
如何在GitHub上搜索开源项目? 作为一个程序员,在学习完基础知识后,想要提升自己的话,找比较好的开源项目练手是非常好的途径,GitHub作为世界上最大的开源项目管理平台,拥有丰富的开源资源,那么,怎么才能在上找到我们需要的项目呢? 我们需要善用GitHub的搜索功能。比如我想在GitHub上搜索有关springboot的内容,我们一般会这么做:但是只是这样搜索的话,结果是非常多的:有十多万的项目,那我们到底要怎么从这十多万的项目中找出我们需要的呢?我们可以在搜索时添加更多的限定内容,以缩
2020-05-13 16:23:04
432
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人