Linux开发工具vim篇

news2024/11/26 0:44:59

在这里插入图片描述

文章目录

  • 👇0. 前言
  • 👉1.yum软件包管理器
    • 👏1.1 yum三板斧
      • 👌查看
      • 👌安装
      • 👌卸载
    • 👏1.2 拓展yum源
  • 👍2. vim编辑器
    • 🤏2.1 vim基本概念
    • 🤏2.2 vim基本操作
    • 🤏2.3 命令模式快捷操作
    • 🤏2.4 多文件操作
    • 🤏2.5 vim配置

👇0. 前言

我们在不管在电脑上还是手机上,按照我们的需求都会安装一些软件,例如在Windows上下载软件,我们可以选择去这个软件的官网进行下载,或者在我们本机的软件商店去下载。

在这里插入图片描述

这些软件都是人家写好的,我们需要使用,直接搜索安装就好了。但是为什么这些软件是公开免费呢?

比如说我们国内的xx音乐、网x云两大巨头音乐播放器软件,都是免费下载安装的,这么大的平台,不盈利就难以维持这个软件,所以就有冲会员、接广告等等方式来盈利。

当然了,也有一些是直接付费安装的,比如现在的很多游戏,都是需要购买才给提供安装(破解版另说)。

image-20230529111749976

免费的安装,可以收纳大量的用户,用户使用习惯了就会产生依赖,一旦拥有了庞大的用户群体,那么用户不希望这个软件倒闭、公司也不希望这个软件倒闭,那么就会有一些的措施,来维护这个软件,以至于整个生态。

还有一个疑问就是,为什么软件商店为什么可以直接安装呢?软件商店怎么知道这个软件在哪儿?

以华为为例,很多软件写好之后,会将自己的软件交给华为上线,所谓的上线,就是将这些软件托管到华为自己的服务器上面。然后我们应用商店收到我们下载需求的时候,就会向服务器发送安装请求,服务器会验证用户的请求,并检查用户是否有权限安装该软件,以及软件是否可用。如果验证通过,服务器会将软件安装包发送给客户端。接到安装包之后,软件商店就可按照我们的需求安装到指定位置。

image-20230529125745010

对于Linux也是如此,大量的使用者,这个系统开源,技术人员提供便捷的软件,各界提供支持,形成了强大的Linux生态。

👉1.yum软件包管理器

在Linux中安装软件,大概可分为三种方式:

  1. 源代码安装

    下载软件的源代码,手动编译安装。编译安装软件可能需要满足一些依赖关系,我们得先安装一些开发工具和库文件。

    那么这种方式就不是很友好,兼容性并不高。

  2. RPM安装
    RPM是Red Hat公司开发的一种包管理系统,用于安装、管理和卸载软件包的格式和工具。

    但是RPM安装需要依赖系统中的其他软件包,就类似捆绑安装。

  3. yum安装

    yum 是基于 RPM 包管理系统的包管理器,用于管理和安装软件包。

    yum安装自动解决了软件包的依赖关系,自行匹配所需的版本,所以yum安装比较常用。

这里的yum可以理解为我们Windows或者手机里面的软件商店。

👏1.1 yum三板斧

👌查看

rzsz指令用于接收Windows文件和向Windows传文件,使用需要安装lrzsz软件包。

我们可通过指令yum list查看全部的软件包,由于软件包非常多,我们可采用grep指令来筛选我们要寻找的软件包

yum list | grep lrzsz

image-20230529131648753

👌安装

当我们找到这个软件之后,我们就可以使用指令

yum install lrzsz.x86_64

进行安装(需要root用户权限)

image-20230529132334251

安装完毕之后,我们就可以使用该指令,向电脑输出文件或者接收文件

image-20230529135801689

👌卸载

如果想要卸载改软件,我们可采用指令

yum remove lrzsz.x86_64

进行卸载

在这里插入图片描述

Tips:

这里可能会有疑问,我们怎么知道哪些软件是我们需要的呢?

这个是需要我们在今后的使用中,慢慢摸索,用的多了,自然就知道需要哪些软件了。

就好比我们刚买来的电脑,我们就知道我们需要和别人通讯,就下载一个微信;需要听音乐,就下载QQ音乐/网易云。

这些都是我们慢慢习惯的,我们可能从小就接触了互联网,然后慢慢熟悉,一买来就安装这些软件,是因为我们已经熟悉了。

👏1.2 拓展yum源

我们在手机上下载一些软件的时候,有些软件官方的应用市场里面并没有,那就需要我们自己去该软件的官网去下载。

在Linux中,有自己的官方yum源,这里面的软件可以通过yum直接安装。对于官方没有的,那我们就得下载拓展yum源。

image-20230529142146018

我们可以使用指令

yum install epel-release

安装我们的拓展源,安装完毕之后,我们就可以下一些稀奇古怪的软件了

image-20230529142950563

👍2. vim编辑器

🤏2.1 vim基本概念

我们对于Linux指令有一些了解后,要准备往老本行去走了,那就是写代码。

在这里我们先介绍的是vim编辑器,我们Windows环境下,写代码通常都是用的集成开发环境(编写、调试、部署软件),而vim只是一款写代码的工具。

vim是一个多模式的编辑器,分为12种模式,对于初学者首先要了解这三个模式:

  • 命令模式

    Vim的默认模式,用于导航、编辑和执行各种命令

  • 插入模式

    输入和编辑文本

  • 底行模式

    用于执行各种命令,如保存文件,退出编辑器等

🤏2.2 vim基本操作

我们输入指令vim test.c,进入编辑器

在这里插入图片描述

进去之后就是命令(默认)模式,如果要写代码我们按键盘的i键,即可进入编辑模式

image-20230529192146424

编辑完毕之后,要将其保存退出,但我们不能直接从编辑模式进入底行模式,还是要先回退到默认模式,键盘右上角Esc,退出编辑模式

image-20230529192349840

回到默认模式之后,我们需要保存退出,shift + ;=:,进入底行模式,然后输入wq,就是保存并退出了。

w:保存当前文件

q!:强制退出

wq:保存并退出

set nu:显示行号

set nonu:去掉行号

image-20230529192839217

通过这三个操作,我们就能完整的编辑并保持我们的代码了。

在这里插入图片描述

🤏2.3 命令模式快捷操作

在Windows中,有许多的快捷键,当我们不想点击鼠标,就可以用快捷键进行操作,而在命令模式,没有配置的情况下,是无法进行鼠标操作的,使用只能先使用快捷键。

  • gg:定义到光标最开始行,常用于编辑大型文件。

    shift + g(G):定位到光标最末尾行。

    n + shift + g(nG):定位到指定行,先按要去的行号,再按shift+g

    gg - >G -> 2G

    GIF 2023-5-29 19-57-16

  • yy:复制光标行

    p:粘贴到光标下一行

    nyy:复制n行

    np:粘贴n行到光标所下一行

    u:撤销

    ctrl + r:取消撤销

    yy -> p -> 2yy -> 5p -> u
    在这里插入图片描述

  • dd:剪切、行删除

    dd -> gg -> p -> dd

    2

  • shift + $:定位到当前光标行的末尾

    shift + ^:定位到当前光标行的开头

    w:向后跳过当前单词

    b:向前跳过当前单纯

    k j h l:上下左右移动

    这个上下左右移动,按照我们的习惯,要么是方向键,要么是W S A D,这里是因为vim问世的时候,并没有出现上下左右键的键盘。

    image-20230529203408816

  • shift + ~:大小写转换

  • (n)r:对光标及之后的字符批量化转换

  • shift + R替换模式,对内容进行整体替换

    shift + R

    4

  • (n)x:对光标之后的字符进行删除

🤏2.4 多文件操作

在C语言中,我们经常会涉及多文件操作,当然vim编辑器也是支持多文件操作的。

image-20230529205412805

  1. 默认模式切换到底行模式
  2. vs [查看的文件]
  3. ctrl + w + w:切换窗口

具体演示:多文件生成 -> 切换窗口 -> 复制文件内容 -> 保存退出

11

🤏2.5 vim配置

虽然了解了一些vim的快捷操作,但和Windows环境下相比,还是相差甚远,没有代码补全、代码对齐等功能。

这是因为vim没有配置,相当于是一个裸vim,没有装备加成,我们可以通过让它穿上一些装备,让它变得强大。

vim的配置原理很简单,就是在我们当前用户的家目录下,增添一个vim的配置文件.vimrc

image-20230529212144352

然后我们将配置项写入.vimrc文件即可。

找到一个无需插件就能配的不错的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BwDpehDP-1685377302888)(https://gitee.com/PYH_2001/typora-test/raw/master/202305300006392.gif)]

来源:vim配置无插件

全部的配置信息如下:

" All system-wide defaults are set in $VIMRUNTIME/debian.vim and sourced by
" the call to :runtime you can find below.  If you wish to change any of those
" settings, you should do it in this file (/etc/vim/vimrc), since debian.vim
" will be overwritten everytime an upgrade of the vim packages is performed.
" It is recommended to make changes after sourcing debian.vim since it alters
" the value of the 'compatible' option.

" This line should not be removed as it ensures that various options are
" properly set to work with the Vim-related packages available in Debian.
runtime! debian.vim

" Vim will load $VIMRUNTIME/defaults.vim if the user does not have a vimrc.
" This happens after /etc/vim/vimrc(.local) are loaded, so it will override
" any settings in these files.
" If you don't want that to happen, uncomment the below line to prevent
" defaults.vim from being loaded.
" let g:skip_defaults_vim = 1

" Uncomment the next line to make Vim more Vi-compatible
" NOTE: debian.vim sets 'nocompatible'.  Setting 'compatible' changes numerous
" options, so any other options should be set AFTER setting 'compatible'.
"set compatible

" Vim5 and later versions support syntax highlighting. Uncommenting the next
" line enables syntax highlighting by default.
if has("syntax")
  syntax on
endif

" If using a dark background within the editing area and syntax highlighting
" turn on this option as well
"set background=dark

" Uncomment the following to have Vim jump to the last position when
" reopening a file
"if has("autocmd")
"  au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
"endif

" Uncomment the following to have Vim load indentation rules and plugins
" according to the detected filetype.
if has("autocmd")
  filetype plugin indent on
endif

" The following are commented out as they cause vim to behave a lot
" differently from regular Vi. They are highly recommended though.
"set showcmd        " Show (partial) command in status line.
"set showmatch      " Show matching brackets.
"set ignorecase     " Do case insensitive matching
"set smartcase      " Do smart case matching
"set incsearch      " Incremental search
"set autowrite      " Automatically save before commands like :next and :make
"set hidden     " Hide buffers when they are abandoned
"set mouse=a        " Enable mouse usage (all modes)

" Source a global configuration file if available
if filereadable("/etc/vim/vimrc.local")
  source /etc/vim/vimrc.local
endif
let mapleader=" "           " 设置leader键为空格键
set nocompatible            " 不以兼容模式运行
set encoding=utf-8          " utf-8编码
set helplang=cn             " 中文帮助文档
set number              " 显示行号
set wrap                " 自动换行
set showcmd             " 显示输入信息
set cursorline              " 显示光标所在行
set wildmenu                " 显示补全提示
set hlsearch                " 高亮搜索结果
"set foldenable                 " 允许折叠 
"set foldmethod=manual          " 手动折叠  
"打开vim运行nohlsearch,取消高亮
exec "nohlsearch"       
set ts=4                " 设置tab键长度为四个空格
set expandtab           " 设置tab键替换为四个空格键
" 将文件中的tab键替换成空格
map <LEADER>    :retab!<CR>
set incsearch               " 一边输入一边高亮  
set ignorecase              " 忽略大小写
set smartcase               " 智能大小写 
set laststatus=2            " 设置状态栏在倒数第2行

" 设置状态栏格式
"set statusline=%<%F%=%y%m%r%h%w%{&ff}\[%{&fenc}]0x%02B@%040h#%n\(%3l/%3L,%3c\|%3v\)%3p%%
set statusline=%1*\%<%.50F\             "显示文件名和文件路径 
set statusline+=%=%2*\%y%m%r%h%w\ %*        "显示文件类型及文件状态
set statusline+=%3*\%{&ff}\[%{&fenc}]\ %*   "显示文件编码类型
set statusline+=%4*\ row:%l/%L,col:%c\ %*   "显示光标所在行和列
set statusline+=%5*\%3p%%\%*            "显示光标前文本所占总文本的比例
hi User1 cterm=none ctermfg=25 ctermbg=0 
hi User2 cterm=none ctermfg=208 ctermbg=0
hi User3 cterm=none ctermfg=169 ctermbg=0
hi User4 cterm=none ctermfg=100 ctermbg=0
hi User5 cterm=none ctermfg=green ctermbg=0

set mouse=a             " 启用鼠标
set backspace=indent,eol,start      " 退格键可以退到上一行
set scrolloff=5             " 光标行上下移动范围各缩小5行
"set ruler
"set transparency=11
" 设置背景透明
hi Normal ctermfg=252 ctermbg=none
"寻找下一搜索结果,并将其置于屏幕中心
noremap = nzz               
"寻找上一搜索结果,并将其置于屏幕中心
noremap - Nzz
"取消高亮
noremap <LEADER><CR> :nohlsearch<CR>
map s <nop>
"保存
map S :w<CR>
"退出
map Q :q<CR>
"右分屏,聚焦右窗口
map sl :set splitright<CR>:vsplit<CR>
"左分屏,聚焦左窗口
map sh :set nosplitright<CR>:vsplit<CR>
"上分屏,聚焦上窗口
map sk :set nosplitbelow<CR>:split<CR>
"下分屏,聚焦下窗口
map sj :set splitbelow<CR>:split<CR>
"光标移至右窗口
map <LEADER>l <C-w>l
"光标移至上窗口
map <LEADER>k <C-w>k
"光标移至下窗口
map <LEADER>j <C-w>j
"光标移至左窗口
map <LEADER>h <C-w>h
"窗口上移
map <up> :res +5<CR>
"窗口下移
map <down> :res -5<CR>
"窗口左移
map <left> :vertical resize-5<CR>
"窗口右移
map <right> :vertical resize+5<CR>
"新建标签页
map <C-n> :tabe<CR>
"前一标签页
map t- :-tabnext<CR>
"后一标签页
map t= :+tabnext<CR>
"重新加载vim配置文件
map rc :source $MYVIMRC<CR>
"寻找两个相等的单词
map <LEADER>fd /\(\<\w\+\>\)\_s*\1
"替换占空符<++>
map <LEADER><LEADER> <ESC>/<++><CR>:nohlsearch<CR>c4l
"全选
map <C-a> ggVG
"打开我的vimrc
map <LEADER>rc :e ~/.vimrc<CR>
"复制到系统剪切板
map +y "+y
"从系统剪切板粘贴
map +p "+p

set list
set listchars=tab:>-,trail:-
"自动匹配括号
:inoremap ( ()<ESC>i
:inoremap ) <c-r>=ClosePair(')')<CR> 
:inoremap { {}<ESC>i
:inoremap } <c-r>=ClosePair('}')<CR>
:inoremap [ []<ESC>i
:inoremap ] <c-r>=ClosePair(']')<CR>
:inoremap < <><ESC>i
:inoremap > <c-r>=ClosePair('>')<CR>
function! ClosePair(char)
    if getline('.')[col('.') - 1] == a:char
        return "\<Right>"
    else
        return a:char
    endif
endfunction

" let &t_SI = "\<Esc>]50;CursorShape=1\x7" 
" let &t_SR = "\<Esc>]50;CursorShape=2\x7" 
" let &t_EI = "\<Esc>]50;CursorShape=0\x7" 
"打开文件,光标回到上次编辑的位置
au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
"创建文件头
autocmd BufNewFile *.py,*.tex exec ":call SetTitle()"

func! SetTitle() 
    if &filetype == 'python'
        call setline(1,"#!/usr/bin/env python3")
        call append(line("."),"# -*- coding:UTF-8 -*-")
        call append(line(".")+1,"##########################################################################")
        call append(line(".")+2, "# File Name: ".expand("%"))
        call append(line(".")+3, "# Author: stubborn vegeta")
        call append(line(".")+4, "# Created Time: ".strftime("%c"))
        call append(line(".")+5, "##########################################################################")
    endif
    if &filetype == 'plaintex'
        call setline(1,"% -*- coding:UTF-8 -*-")
        call append(line("."),"%#########################################################################")
        call append(line(".")+1, "% File Name: ".expand("%"))
        call append(line(".")+2, "% Author: stubborn vegeta")
        call append(line(".")+3, "% Created Time: ".strftime("%c"))
        call append(line(".")+4, "%#########################################################################")
    endif
    "autocmd BufNewFile * normal G 
    normal G 
endfunc
" 设置注释快捷键 
map <LEADER>r :call Note()<CR>
func! Note()
    if &filetype == 'python'
        normal 0i# 
    endif
    if &filetype == 'vim'
        normal 0i" 
    endif
    if &filetype == 'plaintex'
        normal 0i% 
    endif
endfunc
" 设置取消注释  
map <LEADER>t 0df j
"编译运行
map <F5> :call RunPython()<CR>
func! RunPython()
    exec "W"
    if &filetype == 'python'
       " exec "!time python3.6 %"
    "exec ":set splitbelow<CR>:split<CR>"
    exec "!time python3.6 %"

    endif
    if &filetype == 'dot'
    exec "!dot % -T png -o %.png"
    exec "!feh %.png"
    endif
endfunc

"colorscheme molokai
set t_Co=256            "开启256色支持
"set background=dark

Tips:

一个用户一个vim配置文件,不会影响其他用户

不建议给root用户配置

那么本次的Linux工具分享1就到这里结束啦,如果感觉有帮助的话,希望支持支持,我们下期再见,如果还有下期的话。
(PS:🤏这个符号,欧巴应该看不见吧,可不敢冒犯,哈哈哈哈)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/587558.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电路仿真软件LTspice 使用教程

一、LTspice 特点 1、免费 2、电源快速仿真 3、涵盖大量ADI产品模型 二、获取方式 LTspice信息中心 | 亚德诺半导体 如下图所示&#xff0c;根据操作系统&#xff0c;下载对应的安装包安装即可。 软件打开界面如图&#xff1a; 三、运行演示电路 一、官网下载 LTspice演…

一文读懂kubernetes部署:网关部署

部署网关 如您需要创建SSL(HTTPS)站点请先参考SSL证书的创建创建好secret 修改Ingress配置域名 首先我们要先根据域名情况更改ingress配置情况&#xff1a; 非SSL站点 vi/opt/kubernetes/gateway/ingress.yaml SSL站点 创建secret kubectl-nns-javashopcreatesecrettlsxxx-se…

Caffeine本地缓存

1、Caffine简介 简单说&#xff0c;Caffine 是一款高性能的本地缓存组件 由下面三幅图可见&#xff1a;不管在并发读、并发写还是并发读写的场景下&#xff0c;Caffeine 的性能都大幅领先于其他本地开源缓存组件 2、常见的缓存淘汰算法 2.1、FIFO 它是优先淘汰掉最先缓存的数据…

SQL优化的方法

&#xff08;1&#xff09;建立物化视图或尽可能减少多表查询。 &#xff08;2&#xff09;以不相干子查询替代相干子查询。 &#xff08;3&#xff09;只检索需要的列。 &#xff08;4&#xff09;用带in的条件子句等价替换or子句。 &#xff08;5&#xff09;经常提交com…

如何科学地利用MTTR优化软件交付流程?

谷歌提出的衡量 DevOps 质量的 DORA 指标让 MTTR&#xff08;平均恢复时间&#xff09; 名声大振。在本文中&#xff0c;你将了解到 MTTR 的作用、为什么它对行业研究很有用、你可能被它误导的原因以及如何避免 MTTR 产生的弊端。 MTTR 究竟是在测量什么&#xff1f; MTTR …

【服务器】springboot服务端接口公网远程调试 - 实现HTTP服务监听

文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址…

chatgpt赋能python:Python中如何删除:最全面的教程

Python中如何删除&#xff1a;最全面的教程 在Python编程中&#xff0c;许多情况下需要对数据进行操作&#xff0c;其中一种最基本的操作之一是删除。本文章将是一个关于Python中如何删除的最全面的教程。我们将会介绍Python中删除的概念、各种删除方法、删除前后的注意事项以…

同元自主可控半实物仿真从方案到实践

千寻万觅待花开 在日益激烈的市场竞争环境下&#xff0c;新产品的开发和面世遇到更高的要求和挑战&#xff0c;市场对其可靠性和稳定性的要求也日益提高。完全基于软件仿真的开发过程只实现了系统结构及原理、算法的验证&#xff0c;最终样机硬件系统并未进行仿真测试或者进行仿…

一寸照片的尺寸是多少?证件照尺寸如何修改?

一寸证件照是我们日常生活中非常常用的证件照。无论是办理身份证、驾驶证、护照还是其他证件&#xff0c;都需要提供一寸证件照。一寸证件照是指照片尺寸为2.5cm3.5cm的照片&#xff0c;通常要求符合一定的标准。但是大家在需要使用一寸证件照时&#xff0c;发现自己的证件照尺…

基于微信小程序制作一个记账小工具

你不理财,财不理你,制作一个记账小程序对自己的收入/支出明细进行管理,守护好自己的钱袋子。 一、小程序1.1 项目创建1.2 首页1.3 收支报表页1.4 记账提交页1.5 记账列表页

Transformer升级之路:一种全局长度外推的新思路

©PaperWeekly 原创 作者 | 苏剑林 单位 | 追一科技 研究方向 | NLP、神经网络 说到 Transformer 无法处理超长序列的原因&#xff0c;大家的第一反应通常都是 Self Attention 的二次复杂度。但事实上&#xff0c;即便忽略算力限制&#xff0c;常规的 Transformer 也无法处…

NetApp ONTAP Select 混合云存储解决方案

NetApp ONTAP Select 集敏捷性与经验证的数据管理功能于一体。 为什么选择 ONTAP Select 来实施混合云&#xff1f; -强大而敏捷的存储 既具备 ONTAP 软件的强大功能&#xff0c;也能够灵活地部署在远程办公室/后台位置以及数据中心外部的专用边缘环境中的商用硬件上。ONTAP …

python---逻辑运算符

and 并且 一假则假 or 或者 一真则真 not 逻辑取反 下面举例介绍上面代码的运行情况 运行结果如下: EG: 针对上述情况可以简化代码成如下: 短路操作 左侧为false右侧不在求值

如何使用 Megatron-LM 训练语言模型

在 PyTorch 中训练大语言模型不仅仅是写一个训练循环这么简单。我们通常需要将模型分布在多个设备上&#xff0c;并使用许多优化技术以实现稳定高效的训练。Hugging Face &#x1f917; Accelerate 的创建是为了支持跨 GPU 和 TPU 的分布式训练&#xff0c;并使其能够非常容易的…

WPS 借助 ML Kit 无缝翻译 43 种语言,每年净省 6,500 万美元

△ 动画说明: 在笔记本电脑屏幕中&#xff0c;汉字 "文" 将变为字母 "A"&#xff0c;代表文本的横线将逐一出现&#xff0c;就像有人在输入内容一样。 WPS 是一款办公套件软件&#xff0c;可让用户轻松查看和编辑其所有文档、演示文稿、电子表格等。作为一…

JetBrains的Go语言集成开发环境GoLand 2023版本在Win10系统的下载与安装配置教程

目录 前言一、GoLand 安装二、使用配置总结 前言 GoLand是一款专为Go语言开发人员设计的集成开发环境&#xff08;IDE&#xff09;。它提供了丰富的功能和工具&#xff0c;可以帮助开发人员更高效地编写、调试和部署Go应用程序。 GoLand的主要特点&#xff1a; ——代码编辑…

Learning C++ No.25【开散列封装unordered_set和unordered_map】

引言&#xff1a; 北京时间&#xff1a;2023/5/29/7:05&#xff0c;上星期更文一篇&#xff0c;且该篇博客在周三就写完了&#xff0c;所以充分体现&#xff0c;咱这个星期摆烂充分&#xff0c;哈哈哈&#xff01;现在的内心情感没有以前那么从容了&#xff0c;这次摆的时间是…

MySQL高级篇复盘笔记(二)【日志、主从复制、分库分表、读写分离】

❤ 作者主页&#xff1a;欢迎来到我的技术博客&#x1f60e; ❀ 个人介绍&#xff1a;大家好&#xff0c;本人热衷于Java后端开发&#xff0c;欢迎来交流学习哦&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 如果文章对您有帮助&#xff0c;记得关注、点赞、收藏、…

【Redis25】Redis进阶:分布式锁实现

Redis进阶&#xff1a;分布式锁实现 锁这个概念&#xff0c;不知道大家掌握的怎么样。我是先通过 Java &#xff0c;知道在编程语言中是如何使用锁的。一般 Java 的例子会是操作一个相同的文件&#xff0c;但其实我们知道&#xff0c;不管是文件&#xff0c;还是数据库中的一条…

Dapper存取Blob类型数据

&#x1f32e; Dapper存取Blob类型数据 前言&#xff1a; blob类型是数据库用于保存二进制文件的一种类型&#xff0c;可以将文件存储到数据库的表中。&#xff08;使用到的情况比较少&#xff0c;毕竟文件可以直接在服务器上保存并且访问为什么要放到数据库里。但如果你服务器…