自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Docker学习

终于有人把Docker讲清楚了!k8s入门指北从零开始学Docker

2022-05-24 20:08:55 164

原创 write/read,recv/send, recvfrom/sendto,,recvmsg/sendmsg的区别

write/readssize_t write (int fd, const void * buf, size_t count); ssize_t read(int fd, void * buf, size_t count);write()会把参数buf所指的内存写入count个字节到参数放到所指的文件/缓冲区内,即将用户缓冲区当中的内容放入到内核缓冲区(socket缓冲区)当中。当内核缓冲区已满时,write函数会阻塞。read()会把参数fd所指的文件传送count 个字节到buf 指针所指

2021-10-07 14:54:28 692

原创 Docker下五步安装ElasticSearch!

文章目录第一步:第二步:第三步 :第四步:第五步:服务器上的docker当中终于安装好了elasticsearch啦!太不容易了!接下来介绍当中的具体细节步骤,也方便我自己以后复现使用。第一步:docker pull镜像 sudo docker pull elasticsearch:7.6.2我用的版本可能不一定合适,可以去选择更加合适的版本。第二步:宿主机创建挂载文件夹1.创建文件夹 sudo mkdir -p /home/user/file/elasticsearch/config

2021-09-17 09:18:59 269

原创 Ubuntu安装界面显示不全问题

虚拟机安装Ubuntu步骤问题描述:VirtualBox安装Ubuntu时界面显示不全,没有下一步选项。问题解决:我看到网上有许多根据alt+f7拖动解决的问题,并且我自己在台式机上也这样解决过。但对于我的笔记本电脑来说,该方式并没有解决问题。我了解到该问题的产生是因为Ubuntu分辨率的问题,所以可以通过终端修改分辨率来解决。1.ctrl+alt+t打开终端2.输入xrandr并回车,查看支持的分辨率3.选择其中一个较大的分辨率,如:xrandr -s 1024x768_60.00解决

2021-09-13 13:45:47 4667 6

原创 windows远程桌面连接服务器

如何将windows桌面变成类似于mac的样式我前一篇文章已经讲过了,有兴趣的可以去:如何将windows桌面变成类似mac样式文章目录效果展示:基本环境介绍:配置过程1.windows环境配置2.服务器环境配置效果展示:基本环境介绍:服务器的操作系统是Centos,一个白板服务器,安全组配备了一个3306操作系统信息:注意,这里的操作系统是Centos类型,我当时选服务器的时候应该用的是Centos 7.6。安全组信息应该是3389端口就行,记不太清了。配置过程1.wind.

2021-08-08 20:38:14 290

原创 如何将windows桌面变成类似mac样式

文章目录背景效果实现步骤便捷的终端终端的选择快速跳转文件夹power shell颜色更改安装vim更改桌面下载MyDockFinder进行配置背景最近实习快结束了,用惯了公司的mac电脑,然后用自己的电脑就不太适应了,所以想着怎么装个黑苹果,结果发现电脑配置太差,装不了黑苹果(可太惨了)。但实习期间提高了我搞事情的能力,所以最后还是让我勉强搞了一个东西,各位如果有什么更好的方法可以再联系我。效果想要完成上述效果主要分成两步:修改桌面的表现形式让windows具有mac一样方便的终端

2021-08-07 20:04:08 7291 15

原创 在Docker中创建mysql容器并导入示例数据库

首先来说,题主最近想要学习一下数据库的相关内容,因此在docker中下载了mysql 5.7,并准备导入mysql官方示例库employees,中间遇到了一些问题,在此记录并解决。1.在docker中拉取mysql,这一步网上有很多,这里就不用说的很多了。结果如下2.在docker中创建一个mysql容器docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.73.去github上下载employ

2021-08-05 20:22:57 1052

原创 Java垃圾收集器和go当中的区别

文章目录CMS:写屏障+增量更新G1:写屏障+SATBZGC:读屏障go:混合屏障三种方法的特点:垃圾回收算法主要分为三种:标记-清除,标记-复制和标记-整理。其中,Java语言是基于分代的,在新生代主要使用了标记-复制,在新生代中分为eden,s0区和s1区。其中,绝大多数对象都是直接在eden区进行分配,然后s0区和s1区空闲的区域进行复制工作。而老年代主要使用标记-整理算法,将标记后的对象统一移动到内存区域的前部分,然后对后面的区域进行清理。而go当中主要使用了标记-清除算法,其主要原理是对对

2021-06-06 23:09:58 306 3

原创 go 垃圾回收源码分析

关于go的gc机制,我在公司的wiki中写了,有时间会贴出来的。大体而言,go的垃圾回收是基于标记清除算法,其实现了三色标记以及内存屏障技术来实现并发的标记清除。其主要阶段包括:1.标记前的准备工作,包括清理上一次gc留下来的一些object,这是stw的2.标记阶段,即对对象进行标记,这是借助于mspan中的sweepgen来确定该对象是否需要gc3.标记结束,重新扫描部分根对象,STW4.按标记结果进行清扫关于标记清除后是否会进行整理,我个人理解是会的,因为在mheap中包含了所有的msa

2021-06-06 22:01:25 396

原创 go当中的内存管理

文章目录1.mspan源码2.mcahe源码3.mcentral源码4.mheap源码5.具体分配源码1.微对象和小对象2.大对象1.mspan源码type mspan struct { //mspan是一个双向链表结构,所以包含next指针和prev指针,分别指向后继节点和前驱节点 next *mspan prev *mspan // 好像是用来debug的,具体不是很清楚 list *mSpanList // mspan主要是用来管理heap当中的内存,其实质为hea

2021-06-05 23:46:11 424 2

原创 K 个一组翻转链表

K 个一组翻转链表给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。进阶:你可以设计一个只使用常数额外空间的算法来解决此问题吗?你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。class Solution { public ListNode reverseKGroup(ListNode head, int k) { ListNode .

2021-05-04 20:07:39 59

转载 Redis的分布式锁详解

Redis的分布式锁详解 一、什么是分布式锁: 1、什么是分布式锁: 分布式锁,即分布式系统中的锁。在单体应用中我们通过锁解决的是控制共享资源访问的问题,而分布式锁,就是解决了分布式系统中控制共享资源访问的问题。与单体应用不同的是,分布式系统中竞争共享资源的最小粒度从线程升级成了进程。 2、分布式锁应该具备哪些条件: 在分布式系统环境下,一个方法在同一时间只能被一个机器的一个线程执行高可用的获取锁.

2021-05-03 13:55:10 370

转载 Redis集群原理详解

Redis集群原理详解 一、Redis集群介绍: 1、为什么需要Redis集群? 在讲Redis集群架构之前,我们先简单讲下Redis单实例的架构,从最开始的一主N从,到读写分离,再到Sentinel哨兵机制,单实例的Redis缓存足以应对大多数的使用场景,也能实现主从故障迁移。 但是,在某些场景下,单实例存Redis缓存会存在的几个问题: (1)写并发: Redis单实例读写分离可以解决读操作的.

2021-05-03 13:52:02 129

转载 Redis哨兵机制原理详解

Redis哨兵机制原理详解 一、什么是哨兵模式: 1、哨兵模式的架构: 2、什么是哨兵模式: 在主从模式下(主从模式就是把上图的所有哨兵去掉),master节点负责写请求,然后异步同步给slave节点,从节点负责处理读请求。如果master宕机了,需要手动将从节点晋升为主节点,并且还要切换客户端的连接数据源。这就无法达到高可用,而通过哨兵模式就可以解决这一问题。 哨兵模式是Redis的高可用方式,哨.

2021-05-03 13:50:42 922

转载 Redis主从复制原理

Redis主从复制原理 一、什么是Redis主从复制 1、主从复制的架构: Redis Replication是一种 master-slave 模式的复制机制,这种机制使得 slave 节点可以成为与 master 节点完全相同的副本,可以采用一主多从或者级联结构。架构如下: 主从复制的配置要点: (1)配从库不配主,从库配置:slaveof 主库IP 主库端口 (2)查看redis的配.

2021-05-03 13:49:45 80

转载 Redis的持久化机制

Redis的持久化机制 Redis是一个基于内存的数据库,所有的数据都存放在内存中,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的持久化机制。 Redis的持久化机制有两种,第一种是RDB快照,第二种是AOF日志。RDB快照是一次全量备份,AOF是连续的增量备份。快照是内存数据的二进制序列化形式,在存储上非常紧凑,而 AOF 日志记.

2021-05-03 13:48:46 83

转载 Redis的事务机制

Redis的事务机制 一、Redis事务的相关命令: 1、MULTI: 用于标记事务块的开启。MULTI执行之后,Redis会将后续的命令逐个放到一个缓存队列中,当EXEC命令被调用时,所有队列中的命令才会被原子化执行。 2、EXEC: 在一个事务中执行所有先前放入队列的命令,然后恢复正常的连接状态。当使用WATCH命令时,只有当受监控的键没有被修改时,EXEC命令才会执行事务中的命令。 3、DISC.

2021-05-03 13:47:45 102

转载 Redis的缓存雪崩、缓存击穿、缓存穿透与缓存预热、缓存降级

Redis的缓存雪崩、缓存击穿、缓存穿透与缓存预热、缓存降级 一、缓存雪崩: 1、什么是缓存雪崩: 如果缓在某一个时刻出现大规模的key失效,那么就会导致大量的请求打在了数据库上面,导致数据库压力巨大,如果在高并发的情况下,可能瞬间就会导致数据库宕机。这时候如果运维马上又重启数据库,马上又会有新的流量把数据库打死。这就是缓存雪崩。 2、问题分析: 造成缓存雪崩的关键在于同一时间的大规模的key失效,为什.

2021-05-03 13:46:24 99 1

转载 Redis的数据过期清除策略 与 内存淘汰策略

Redis的数据过期清除策略 与 内存淘汰策略 在使用Redis时,我们一般会为Redis的缓存空间设置一个大小,不会让数据无限制地放入Redis缓存中。可以使用下面命令来设定缓存的大小,比如设置为4GB: CONFIG SET maxmemory 4gb 既然 Redis 设置了缓存的容量大小,那缓存被写满就是不可避免的。当缓存被写满时,我们需要考虑下面两个问题:决定淘汰哪些数据,如何处理那些被.

2021-05-03 13:44:49 164

转载 Redis的五种数据结构的底层实现原理

原文: Redis的五种数据结构的底层实现原理 一、Redis的两层数据结构简介 redis的性能高的原因之一是它每种数据结构都是经过专门设计的,并都有一种或多种数据结构来支持,依赖这些灵活的数据结构,来提升读取和写入的性能。如果要了解redis的数据结构,可以从两个不同的层面来讨论它: (1)第一个层面,是从使用者的角度,这一层面也是Redis暴露给外部的调用接口,比如: stringlisthashs.

2021-05-03 13:40:52 335

转载 Redis为什么这么快?Redis是单线程还是多线程?

原文:Redis为什么这么快?Redis是单线程还是多线程? 一、Redis有多快? Redis是基于内存运行的高性能 K-V 数据库,官方提供的测试报告是单机可以支持约10w/s的QPS   二、Redis为什么这么快? (1)完全基于内存,数据存在内存中,绝大部分请求是纯粹的内存操作,非常快速,跟传统的磁盘文件数据存储相比,避免了通过磁盘IO读取到内存这部分的开销。 (2)数据结构简.

2021-05-03 13:37:43 247

原创 SQL语句的执行流程

大体来讲,MySQL 可以分为 Server 层和存储引擎层两部分(当然,首先还得经过客户端)多个存储引擎共用一个server层 因此所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等建表时如果不指定存储引擎则默认使用的是InnoDB存储引擎(MySQL5.5.5版本以前默认使用的是MyISAM引擎 TODO:二者区别后续讲解)连接器一条SQL语句从客户端传过来首先会创建一个连接,用username和password认证身份连接完成后如果没有其他操作便处于空闲状态 默认8h自动断开

2021-05-02 10:08:03 225

原创 Linux常用命令

文章目录1.操作环境2.Linux常用命令1.操作环境本文的命令是在VirtualBox环境下使用Vagrant搭建的Linux环境。2.Linux常用命令1.ls查看当前目录下的内容2.cd进入某一路径3.pwd查看当前路径4.clear清空当前界面5.mkdrr创建文件夹6.rmdir删除文件夹7.ps查看当前进程8.touch创建一个文件9.vi通过vi filename,可进入文档内部进行编辑。进入后,按 i 进入到插入模式。输入完成后,

2021-05-01 12:56:48 66

转载 Synchronized锁升级原理

文章目录1.Synchronized锁2.对象头3.Synchronized锁流程原文1.Synchronized锁首先,synchronized的基本原理是基于对象头当中的监视器,因此它也叫做监视器锁。将synchronized进行反编译后,会发现有一个moniter_enter命令和一个moniter_exit命令,前者是将对象头当中的计数器加1,后者是将对象头当中的计数器减1,当然,这是广义上的解释,接下来进行详细解释。2.对象头一个对象的对象头当中包含三个部分,mark_word,指

2021-04-30 14:04:17 434

原创 顺时针打印矩阵

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.import java.util.ArrayList;public class Solution { public ArrayList<Integer> printMatrix(int [][] matrix) {

2021-04-19 09:55:22 44

原创 斐波那契数列问题

文章目录1.矩形覆盖2.跳台阶3.跳台阶扩展1.矩形覆盖我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?public class Solution { public int rectCover(int target) { int[] dp=new int[target+1]; if(target<=2) return target; dp[1

2021-04-19 09:16:13 46

原创 层次遍历二叉树

从上往下打印出二叉树的每个节点,同层节点从左至右打印。public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> res=new ArrayList<>(); if(root==null) return res; ArrayList<

2021-04-19 09:06:15 55

原创 反转链表

输入一个链表,反转链表后,输出新链表的表头。public class Solution { public ListNode ReverseList(ListNode head) { ListNode pHead=head; if(head==null) return null; ListNode second=pHead.next; ListNode three=null; pHead.next

2021-04-19 08:12:46 47

原创 两个链表的第一个公共结点

输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)public class Solution { public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) { ListNode p1=pHead1; ListNode p2=pHead2; while(p1!=p2){

2021-04-19 08:11:30 40

转载 MySQL的MVCC及实现原理

【MySQL笔记】正确的理解MySQL的MVCC及实现原理这是原文链接,推荐大家去看原文MVCC多版本并发控制如果觉得对你有帮助,能否点个赞或关个注,以示鼓励笔者呢?!博客目录 | 先点这里 !首先声明,MySQL的测试环境是5.7 前提概要 什么是MVCC什么是当前读和快照读?当前读,快照读和MVCC的关系 MVCC实现原理 隐式字段undo日志Read View(读视图)整体流程 MVCC相关问题 RR是如何在RC级的基础上解决不可重复读的?RC,RR级别下的InnoD.

2021-04-08 08:36:37 107

转载 Stack源码解析

Stack是基于Vector类来实现的,Vector和ArrayList类似,但是是线程安全的,所以我认为不是很需要看Vector,看一下ArrayList就行。Stack比较特别的是它的search方法使用的是lastIndexOf方法。有pop,push,peek,search方法。/* * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONF

2021-04-06 12:28:29 82

转载 HashSet源码解析

HashSet底层源码都是基于HashMap实现的,需要的话直接看HashMap的源码就可以。为了保证hashset里面的数据唯一性,这里将hashset存放的元素作为了hashmap里面唯一的key变量,value部分用一个PRESENT对象来存储,也就是源码里面的这一句内容:private static final Object PRESENT = new Object();/* * Copyright (c) 1997, 2013, Oracle and/or its affiliates.

2021-04-06 12:08:21 71

原创 leetcode回溯算法总结

17. 电话号码的字母组合46. 全排列47. 全排列 II39. 组合总和40. 组合总和 II491. 递增子序列回溯算法入门级详解 + 练习(持续更新)文章目录17. 电话号码的字母组合46. 全排列47. 全排列 II39. 组合总和17. 电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。class Solution { public.

2021-04-05 16:14:36 278

原创 分治法

108. 将有序数组转换为二叉搜索树104. 二叉树的最大深度105. 从前序与中序遍历序列构造二叉树108. 将有序数组转换为二叉搜索树给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。class Solution { private TreeNode buildTree(int[] nums,int left,int right){

2021-04-05 12:15:27 56

原创 440. 字典序的第K小数字

440. 字典序的第K小数字给定整数 n 和 k,找到 1 到 n 中字典序第 k 小的数字。注意:1 ≤ k ≤ n ≤ 109。输入:n: 13 k: 2输出:10解释:字典序的排列是 [1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9],所以第二小的数字是 10。...

2021-04-05 11:11:41 67

原创 合并链表

21. 合并两个有序链表23. 合并K个升序链表文章目录21. 合并两个有序链表23. 合并K个升序链表21. 合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode t1=l1,t2=l2; ListNode head=new Li.

2021-04-04 20:33:41 121

原创 2. 两数相加

2. 两数相加给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { ListNode t1=l1,t2=l2; ListNode head

2021-04-04 15:18:06 50

原创 两数之和

leetcode 1 号算法题:两数之和leetcode 167 号算法题:两数之和Ⅱ - 输入有序数组leetcode 170 号算法题:两数之和Ⅲ - 数据结构设计leetcode 653 号算法题:两数之和Ⅳ - 输入 BSTleetcode 15 号算法题:三数之和leetcode 18 号算法题:四数之和培养算法思维【逐渐优化,一直到最优】提升编程内功 - 两数之和文章目录leetcode 1 号算法题:两数之和leetcode 167 号算法题:两数之和Ⅱ - 输入有序数组le.

2021-04-04 14:54:35 100

转载 Java和C++的区别

Java和C++的区别文章目录1.Java和C++的区别:1.Java和C++的区别:Java源码会先经过一次编译,成为中间码,中间码再被解释器解释成机器码。对于Java而言,中间码就是字节码(.class),而解释器在JVM中内置了。C++源码一次编译,直接在编译的过程中链接了,形成了机器码。C++比Java执行速度快,但是Java可以利用JVM跨平台。Java是纯面向对象的语言,所有代码(包括函数、变量)都必须在类中定义。而C++中还有面向过程的东西,比如是全局变量和全局函数。C++.

2021-04-04 10:59:45 99

转载 Java线程池

Java线程池七个参数详解JAVA线程池有几种类型?文章目录1.Java线程池参数介绍1.corePoolSize 线程池核心线程大小2.maximumPoolSize 线程池最大线程数量3.keepAliveTime 空闲线程存活时间4.unit 空闲线程存活时间单位5.workQueue 工作队列6.threadFactory 线程工厂7.handler 拒绝策略2.线程池类型1、newCachedThreadPool2、newFixedThreadPool3、newSingleThreadEx.

2021-04-04 10:58:27 57

空空如也

空空如也

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

TA关注的人

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