环境配置之终端WezTerm

news2024/10/3 8:29:32

前言

其实是在复习的过程中发现终端非常别扭,了解了一些大佬的使用方式后,尝试使用一个多平台的终端应用。

环境配置

之前在MAC上使用过的终端包括ZenTermLiteItem2,这次使用一个跨平台的终端WezTerm

缺点就是自定义的地方太多了,需要一定的学习成本。

顺便记录一下对ZSH的插件配置。

Tabby

为啥不用Tabby?因为他传输过来的大文件连MD5都变了啊!我就带着宠物出门遛个弯,回来物种都变了!这合理吗?这不合理,所以才跟他说拜拜了。

WezTerm-Mac

介绍一下,我之所以选择这个跨平台应用就是因为他是我了解到的第二款跨平台终端应用。没错,理由就是这么简单。

需要说明一点,他没有快捷键提示,没有具体的功能选项按钮。

一切都要看英文文档来自定义和学习使用方式。

下载

下载源地址都是从github官网下载的,如果没有梯子,是有下载失败的可能。

除非你的梯子非常好用,可以选择命令行来下载。否则,还是建议用加速下载工具(例如:http://toolwa.com/github/),用下载压缩包的方式,可以直接得到可运行的APP程序。

brew install --verbose --debug --cask  wez/wezterm/wezterm

下载地址:https://github.com/wez/wezterm/releases

image-20221117002306858

为了能够在命令行中运行wezterm命令,还需要修改.zshrc文件,赋予别名。

alias wezterm="/Users/keen/Applications/WezTerm.app/Contents/MacOS/wezterm"

配置

先双击打开这个应用,再用命令创建文件夹。

mkdir -p  ~/.config/wezterm/

由于软件本身的高度可配置性,所以DIY程度非常大。为了达到让小伙伴开箱即食的目的,可以直接下载我附在文末的配置文件。

继续说基础配置,下载文件wezterm.lua,并且将之放到新生成的文件夹里,再用命令行赋予可执行权限。

chmod u+x ~/.config/wezterm/wezterm.lua

~/.config/wezterm/wezterm.lua主配置文件内容如下。

local wezterm = require 'wezterm'

local launch_menu = {}
local default_prog = {}
local set_environment_variables = {}

-- Using shell
if wezterm.target_triple == 'x86_64-pc-windows-msvc' then
    term = '' -- Set to empty so FZF works on windows
    table.insert(launch_menu, {
        label = 'PowerShell-NewWindow',
        args = {"C:\\Windows\\System32\\WindowsPowerShell\\v7.3\\7\\pwsh.exe"}
    })
    default_prog = {"C:\\Windows\\System32\\WindowsPowerShell\\v7.3\\7\\pwsh.exe"}
    require("key-bind-windows")
elseif wezterm.target_triple == 'x86_64-apple-darwin' then
    table.insert(launch_menu, {
        label = 'Zsh-NewWindow',
        args = {'/bin/zsh', '-l'}
    })
    default_prog = {'/bin/zsh', '-l'}
    require("key-bind-mac")
elseif wezterm.target_triple == 'aarch64-apple-darwin' then
    table.insert(launch_menu, {
        label = 'zsh',
        args = {'/opt/homebrew/bin/zsh', '-l'}
    })
    default_prog = {'/opt/homebrew/bin/zsh', '-l'}
end

-- Title

function basename(s)
    return string.gsub(s, '(.*[/\\])(.*)', '%2')
end

wezterm.on('format-tab-title', function(tab, tabs, panes, config, hover, max_width)
    local pane = tab.active_pane

    local index = ""
    if #tabs > 1 then
        index = string.format("%d: ", tab.tab_index + 1)
    end

    local process = basename(pane.foreground_process_name)

    return {{
        Text = ' ' .. index .. process .. ' '
    }}
end)

-- Initial startup
wezterm.on('gui-startup', function(cmd)
    local tab, pane, window = wezterm.mux.spawn_window(cmd or {})
    window:gui_window():maximize()
end)

local config = {
    check_for_updates = false,
    switch_to_last_active_tab_when_closing_tab = false,
    enable_scroll_bar = true,

    -- Window
    native_macos_fullscreen_mode = true,
    adjust_window_size_when_changing_font_size = true,
    window_background_opacity = 0.95, -- 如果设置为1.0会明显卡顿
    window_padding = {
        left = 5,
        right = 5,
        top = 5,
        bottom = 5
    },
    window_background_image_hsb = {
        brightness = 0.8,
        hue = 1.0,
        saturation = 1.0
    },
    window_close_confirmation = "NeverPrompt",

    -- Font
    font = wezterm.font_with_fallback({"JetBrains Mono"}),
    -- font_size = 22,

    -- Tab bar
    enable_tab_bar = true,
    hide_tab_bar_if_only_one_tab = false,
    show_tab_index_in_tab_bar = false,
    tab_max_width = 25,
    scrollback_lines = 99999,
    -- tab_bar_at_bottom = true,
    -- use_fancy_tab_bar = false,

    -- Keys
    disable_default_key_bindings = false,
    -- Allow using ^ with single key press.
    use_dead_keys = false,
    keys = keyBind(),

    -- 主题
    color_scheme = 'Builtin Solarized Light',
    colors = {
        -- 被选中的内容的背景色
        selection_bg = '#D0AB52'
    },

    inactive_pane_hsb = {
        hue = 1.0,
        saturation = 1.0,
        brightness = 1.0
    },

    mouse_bindings = { -- Paste on right-click
    {
        event = {
            Down = {
                streak = 1,
                button = 'Right'
            }
        },
        mods = 'NONE',
        action = wezterm.action {
            PasteFrom = 'Clipboard'
        }
    }, -- Change the default click behavior so that it only selects
    -- text and doesn't open hyperlinks
    {
        event = {
            Up = {
                streak = 1,
                button = 'Left'
            }
        },
        mods = 'NONE',
        action = wezterm.action {
            CompleteSelection = 'PrimarySelection'
        }
    }, -- CTRL-Click open hyperlinks
    {
        event = {
            Up = {
                streak = 1,
                button = 'Left'
            }
        },
        mods = 'CMD',
        action = 'OpenLinkAtMouseCursor'
    }},

    default_prog = default_prog,
    set_environment_variables = set_environment_variables,
    launch_menu = launch_menu
}
if wezterm.target_triple == 'x86_64-pc-windows-msvc' then
    config.font_size = 18
elseif wezterm.target_triple == 'x86_64-apple-darwin' then
    config.font_size = 20
end
return config

键盘绑定/Users/keen/.config/wezterm/key-bind-mac.lua内容如下。

local wezterm = require 'wezterm';
function keyBind()
    keys = { -- 清屏
    {
        key = 'k',
        mods = 'CMD',
        action = wezterm.action.Multiple {wezterm.action.ClearScrollback 'ScrollbackAndViewport',
                                          wezterm.action.SendKey {
            key = 'L',
            mods = 'CTRL'
        }}
    }, { -- 控制左右移动面板
        key = 'LeftArrow',
        mods = 'ALT',
        action = wezterm.action {
            ActivateTabRelative = -1
        }
    }, {
        key = 'RightArrow',
        mods = 'ALT',
        action = wezterm.action {
            ActivateTabRelative = 1
        }
    }, { -- 搜索
        key = 'f',
        mods = 'CMD',
        action = wezterm.action.Search {
            CaseInSensitiveString = '' -- 大小写不敏感
            -- CaseSensitiveString = ''-- 大小写敏感
        }
    }, { -- 关闭当前窗口
        key = 'w',
        mods = 'CMD',
        action = wezterm.action.CloseCurrentTab {
            confirm = true
        }
    }, { -- 展示启动器
        key = 'l',
        mods = 'CMD',
        action = wezterm.action.ShowLauncher
    }, { -- 新建窗口
        key = 'n',
        mods = 'CMD',
        action = wezterm.action.SpawnCommandInNewTab {
            label = 'Zsh-NewWindow',
            args = {'/bin/zsh', '-l'}
        }
    }, { -- 快速移动到行首行尾
        key = 'LeftArrow',
        mods = 'CMD',
        action = wezterm.action.SendKey {
            key = 'Home',
            mods = 'NONE'
        }
    }, {
        key = 'RightArrow',
        mods = 'CMD',
        action = wezterm.action.SendKey {
            key = 'End',
            mods = 'NONE'
        }
    }
}
    return keys
end

保存快捷键

echo $(wezterm show-keys) >> /Users/keen/Downloads/temp.md

Hyper

Hyper 是我找到的第三款跨平台的终端软件,通过强大的插件系统提供了非常丰富的自定义选项。

然后被伙伴说这个东西不好,是基于Electron做的。具体问他为啥不好又说不出来。

我只能给个大白眼,倒是也干脆放弃了这个应用。

下载

一开始我还以为自己的brew配置有问题呢,仔细扒拉了一下hyper.rb安装文件,没错就是只能从github下载!

brew search Hyper

brew install --verbose --debug --cask  hyper

Oh-my-zsh插件管理

在终端中执行以下命令,注意他是从github直接下载的!

sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

下载完成后,他会自动地覆盖~/.zshrc文件!

不过别担心,他会将以前的内容保存到.zshrc.pre-oh-my-zsh

我先附上我现在所使用的配置。

# 引入oh-my-zsh
export ZSH="$HOME/.oh-my-zsh"
# 更多zsh主题可以查看 https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
# 我这里置为空是为了使用starship主题
ZSH_THEME=""
# 插件,标准插件目录为 $ZSH/plugins/
# 用户自定义目录为 $ZSH_CUSTOM/plugins/
plugins=(
    zsh-autosuggestions
    zsh-syntax-highlighting
)
# 标记环境
export ARCHFLAGS="-arch x86_64"
# 运行zsh
source $ZSH/oh-my-zsh.sh

# 引入终端别名
alias wezterm="/Users/keen/Applications/WezTerm.app/Contents/MacOS/wezterm"
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"

# 设置brew换源
export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.ustc.edu.cn/brew.git"
export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.ustc.edu.cn/homebrew-core.git"
export HOMEBREW_CASK_GIT_REMOTE="https://mirrors.ustc.edu.cn/homebrew-cask.git"
export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.ustc.edu.cn/homebrew-bottles/"
export HOMEBREW_NO_AUTO_UPDATE=1
export HOMEBREW_CASK_OPTS="--appdir=~/Applications/"

# 启用starship主题
eval "$(starship init zsh)"

插件

zsh-autosuggestions

功能是补全提示,全网都在推荐的插件。在github仓库首页有演示视频,很容易理解。

需要单独下载,可以使用brew自动下载或者git手动下载。

我建议可以用工具github的仓库地址下载到本地,然后让zsh管理生效。

git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

image-20221118140008969

如果你直接把文件复制到自定义目录,再在plugins字段里加上了插件名称,兴冲冲地重新加载了配置文件.zshrc,就会看到这样的警告。其实是还缺少一个操作,提示已经告诉我们两个解决办法了。

去掉相关文件夹的写权限

使用命令去掉相关文件夹的groupothers分组的写权限。

我个人是比较建议这个样子的,既保留了安全检查功能又关掉了警告,成功加载自定义插件。

chmod 755 /Users/keen/.oh-my-zsh/custom/plugins/zsh-autosuggestions

设置变量ZSH_DISABLE_COMPFIX

# ~/.zshrc
ZSH_DISABLE_COMPFIX = true

最后重新加载了配置文件.zshrc就可以了!

zsh-syntax-highlighting

功能是高亮内容,也是一个全网都在推荐的插件。

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

不要忘了最后去掉相关权限。

chmod 755 ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins//zsh-syntax-highlighting

Starship主题

一开始,我还以为我找到了第四个跨平台终端,但是其实是个Shell通用的主题,效果还不错哦。

brew search starship

brew install --verbose --debug starship

~/.zshrc 的最后,添加以下内容即可开始使用。

顺便说一句,默认设置非常酷!

# ~/.zshrc
eval "$(starship init zsh)"

但是如果真的很想要再DIY一个自己的主题,那么继续配置也是很方便的。配置文件如下。

MKDIR -p ~/.config && touch ~/.config/starship.toml

配置内容如下。

# Inserts a blank line between shell prompts
add_newline = true

# Customizing the prompt
format = """
$username\
$hostname\
$shlvl\
$singularity\
$kubernetes\
$directory\
$vcsh\
$git_branch\
$git_commit\
$git_state\
$git_metrics\
$git_status\
$hg_branch\
$docker_context\
$package\
$cmake\
$cobol\
$dart\
$deno\
$dotnet\
$elixir\
$elm\
$erlang\
$golang\
$helm\
$java\
$julia\
$kotlin\
$lua\
$nim\
$nodejs\
$ocaml\
$perl\
$php\
$pulumi\
$purescript\
$python\
$rlang\
$red\
$ruby\
$rust\
$scala\
$swift\
$terraform\
$vlang\
$vagrant\
$zig\
$nix_shell\
$conda\
$memory_usage\
$aws\
$gcloud\
$openstack\
$azure\
$env_var\
$crystal\
$custom\
$sudo\
$cmd_duration\
$line_break\
$jobs\
$battery\
$time\
$status\
$shell\
[$character](bold green)"""

# Configure if and how the time is shown
[time]
disabled = false
time_format = "%T"
format = "🕙[$time ](bold blue)"

[sudo]
disabled = false
style = "bold green"
symbol = "💪"
format = "[<SUDO>$symbol]($style)"

有关每个选项的详细信息在官方文档中进行了详细说明。

测速

运行如下命令。

for i in $(seq 1 5); do /usr/bin/time /bin/zsh -i -c exit; done

image-20221118132104208

如果觉得非常卡顿了的话,就可以参考文末的速度优化文章。

WezTerm-Win

下载

我是先调试好了Mac系统的,然后才来重新配置Win系统。

首先下载WezTerm,将压缩包下载下来后重新解压到指定文件路径。

下载地址:https://github.com/wez/wezterm/releases

第二步,下载PowerShell,要求版本高于5.1,也就是说不能用自带的版本,必须要重新下载。

下载地址:https://github.com/PowerShell/PowerShell/releases/download/v7.3.0/PowerShell-7.3.0-win-x64.msi

第三步,下载主题starship

下载地址:https://github.com/starship/starship/releases/download/v1.11.0/starship-i686-pc-windows-msvc.msi

WezTerm配置

注意,当系统不一致的时候,打开的shell工具也是不一样的。

C:\Users\Administrator\.config\wezterm\wezterm.lua主配置文件内容如下。

-- Using shell
if wezterm.target_triple == 'x86_64-pc-windows-msvc' then
    term = '' -- Set to empty so FZF works on windows
    table.insert(launch_menu, {
        label = 'PowerShell-NewWindow',
        args = { "C:\\Windows\\System32\\WindowsPowerShell\\v7.3\\7\\pwsh.exe" }
    })
    default_prog = { "C:\\Windows\\System32\\WindowsPowerShell\\v7.3\\7\\pwsh.exe" }
    require("key-bind-windows")
elseif wezterm.target_triple == 'x86_64-apple-darwin' then
    table.insert(launch_menu, {
        label = 'Zsh-NewWindow',
        args = { '/bin/zsh', '-l' }
    })
    default_prog = { '/bin/zsh', '-l' }
    require("key-bind-mac")
elseif wezterm.target_triple == 'aarch64-apple-darwin' then
    table.insert(launch_menu, {
        label = 'zsh',
        args = {'/opt/homebrew/bin/zsh', '-l'}
    })
    default_prog = {'/opt/homebrew/bin/zsh', '-l'}
end

C:\Users\Administrator\.config\wezterm\key-bind-windows.lua配置文件内容如下。

local wezterm = require 'wezterm';
function keyBind()
    keys = {
        { -- 清屏
            key = 'k',
            mods = 'ALT',
            action = wezterm.action.Multiple {
                wezterm.action.ClearScrollback 'ScrollbackAndViewport',
                wezterm.action.SendKey { key = 'L', mods = 'CTRL' },
            },
        },
        { -- 复制和结束任务
            key = 'c',
            mods = 'CTRL',
            action = wezterm.action_callback(function(window, pane)
                local has_selection = window:get_selection_text_for_pane(pane) ~= ''
                if has_selection then
                    window:perform_action(
                        act.CopyTo 'ClipboardAndPrimarySelection',
                        pane
                    )

                    window:perform_action(act.ClearSelection, pane)
                else
                    window:perform_action(
                        act.SendKey { key = 'c', mods = 'CTRL' },
                        pane
                    )
                end
            end),
        },
        { -- 关闭当前窗口
            key = 'w',
            mods = 'CTRL',
            action = wezterm.action.CloseCurrentTab { confirm = true },
        },
        { -- 控制左右移动面板
            key = 'LeftArrow',
            mods = 'ALT',
            action = wezterm.action {
                ActivateTabRelative = -1
            }
        }, {
            key = 'RightArrow',
            mods = 'ALT',
            action = wezterm.action {
                ActivateTabRelative = 1
            }
        }, { -- 展示启动器
            key = 'l',
            mods = 'ALT',
            action = wezterm.action.ShowLauncher
        }, { -- 新建窗口
            key = 'n',
            mods = 'ALT',
            action = wezterm.action.SpawnCommandInNewTab {
                label = 'PowerShell-NewWindow',
                args = { 'C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe', '-NoLogo' }
            },
        },
    }
    return keys
end

保存快捷键

使用命令将快捷键保存到文件.

echo $(wezterm show-keys) >> C:\\Users\\Administrator\\Desktop\\1.xls

PowerShell 配置

然后安装以下模块。

Install-Module posh-git -Scope CurrentUser # posh-git
Install-Module oh-my-posh -Scope CurrentUser -RequiredVersion 2.0.496 # oh-my-posh

编辑文件 $Profile,这个文件类似于 ~/.zshrc,会在 PowerShell 启动的时候自动执行,因此我们在这个文件中加载我们所需的模块,设置相关主题。

Windows 上运行命令打开配置文件。

notepad.exe $Profile

在里面添加以下内容。

Import-Module posh-git # 引入 posh-git
Import-Module oh-my-posh # 引入 oh-my-posh

Invoke-Expression (&starship init powershell) # 引入Starship

#Set-Theme Paradox # 设置主题为 Paradox

Set-PSReadLineOption -PredictionSource History # 设置预测文本来源为历史记录
 
Set-PSReadlineKeyHandler -Key Tab -Function Complete # 设置 Tab 键补全
Set-PSReadLineKeyHandler -Key "Ctrl+d" -Function MenuComplete # 设置 Ctrl+d 为菜单补全和 Intellisense
Set-PSReadLineKeyHandler -Key "Ctrl+z" -Function Undo # 设置 Ctrl+z 为撤销
Set-PSReadLineKeyHandler -Key UpArrow -ScriptBlock {
[Microsoft.PowerShell.PSConsoleReadLine]::HistorySearchBackward()
[Microsoft.PowerShell.PSConsoleReadLine]::EndOfLine()
}
Set-PSReadLineKeyHandler -Key DownArrow -ScriptBlock {
[Microsoft.PowerShell.PSConsoleReadLine]::HistorySearchForward()
[Microsoft.PowerShell.PSConsoleReadLine]::EndOfLine()
}

设置好后保存,重启 PowerShell 加载配置。

starship配置

可以参考上文,不再赘述。

可能有用的经验

在安装的过程中,也遇到了这样的报错。

Install-Module:
Unable to resolve package source 'https://www.powershellgallery.com/api/v2'

网上大佬的解决方案是这样的。

第一步,先去看看DNS解析。

Invoke-WebRequest 'https://www.powershellgallery.com/api/v2' -Verbose

如果在这里就报错了,那么就可以根据报错信息进行解决。比如说我这里就是

Invoke-WebRequest : The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. At line:1 char:1

解决方法是强制让系统使用TLS1.2

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::tls12

如果查找模块名称正确,那么就证明可行了。

Get-Module -Name oh-my-posh -Listavailable

再有可能遇到的情况便是,在安装模块时,可能会提示无法访问PSGallery,此时运行命令。

Get-PSRepository

命令执行后获得InstallationPolicyuntrusted

img

img

有可能是因为.net4中没有启用额外的加密协议,才会导致访问PSGallery失败。此时需要向.net4的注册表添加安全协议生效的项目。

Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord

Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NetFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Value '1' -Type DWord

最后执行命令使其信任即可。

Set-PSRepository -Name PSGallery -InstallationPolicy trusted

备份

以前觉得,有自己的文章就可以了。后来一次又一次地配置,实在是觉得麻烦,于是将自己做好的配置整理出来保存到网上作为备份。

forever_share

感谢

感谢现在的好奇,为了能成为更好的自己。

逐步搭建现代大一统终端

github官网

wezterm官网

配置文件wezterm.lua

打造高颜值终端——Hyper

hyper官网

冷启动速度优化

配置优化starship

给 PowerShell 带来 zsh 的体验

Unable to resolve package source

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

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

相关文章

JUC并发编程第七篇,volatile凭什么可以保证可见性和有序性?我们该如何正确使用它?

JUC并发编程第七篇&#xff0c;volatile凭什么可以保证可见性和有序性&#xff1f;我们该如何正确使用它&#xff1f;一、volatile的作用是什么&#xff1f;二、什么是内存屏障&#xff1f;三、四大内存屏障指令源码解析&#xff01;四、volatile如何通过内存屏障保证可见性和有…

Spring MVC数据绑定和表单标签的应用(附带实例)

为了让读者进一步学习数据绑定和表单标签&#xff0c;本节给出了一个应用范例 springMVCDemo04。该应用中实现了 User 类属性和 JSP 页面中表单参数的绑定&#xff0c;同时在 JSP 页面中分别展示了 input、textarea、checkbox、checkboxs、select 等标签。 应用的相关配置 在…

解析csv文件,读取百万级数据

最近在处理下载支付宝账单的需求&#xff0c;支付宝都有代码示例&#xff0c;功能完成还是比较简单的&#xff0c;唯一的问题就在于下载后的文件数据读取。账单文件可大可小&#xff0c;要保证其可用以及性能就不能简单粗暴的完成开发就行。 文件下载是是csv格式&#xff0c;此…

干货|成为优秀软件测试工程师的六大必备能力

“软件吞噬世界”、“软件定义一切”。随着软件行业的迅速发展&#xff0c;保障软件质量的关键环节——软件测试也变得越来越重要。而执行测试工作的测试工程师&#xff0c;便是软件质量的把关者。 测试工程师早在2005年就被劳动和社会保障部门列入第四批新职业中。经过短短几…

文件批量从gbk转成utf8的工具

工具名&#xff1a;GB/BIG5/UTF-8 文件编码批量转换程序 下载地址&#xff1a; https://www.wenjiangs.com/wp-content/uploads/2018/05/GB2UTF8.zip 程序功能&#xff1a;将 GB、BIG5、UTF-8 文件相互转换&#xff0c;方便的批量处理能力&#xff0c;主要用于网站文件编码方式…

单商户商城系统功能拆解41—应用中心—用户储值

单商户商城系统&#xff0c;也称为B2C自营电商模式单店商城系统。可以快速帮助个人、机构和企业搭建自己的私域交易线上商城。 单商户商城系统完美契合私域流量变现闭环交易使用。通常拥有丰富的营销玩法&#xff0c;例如拼团&#xff0c;秒杀&#xff0c;砍价&#xff0c;包邮…

R语言进行相关矩阵分析及其网络可视化

数据准备 # 选择感兴趣的列 mydata <- mtcars %>% select(mpg, disp, hp, drat, wt, qsec) # 添加一些缺失值 mydata$hp[3] <- NA # 检查数据 head(mydata, 3) ## mpg disp hp drat wt qsec ## Mazda RX4 21.0 160 110 3.90 2.62 16.5 ## Ma…

基于WiFi小车控制板的单片机小系统原理图

小系统&#xff0c;指的是的用少的元件组成的单片机可以工作的系统。一般在设计小系统的时候分为这四种必要的电路&#xff0c;分别是1、电源供电电路;2、单片机复位电路;3、时钟振荡电路;4、程序的下载接口电路。这次基于我们研发的WiFi小车51核心控制板的小系统原理图来讲一下…

uni-app实现支付及项目打包上传

本文主要介绍uni-app项目中如何实现支付功能&#xff08;支付宝支付、微信支付&#xff09;&#xff0c;及项目如何打包上传。 一、实现支付 前置工作&#xff0c;项目要实现支付功能&#xff0c;首先要在根目录manifest.json文件内App模块配置中进行设置。 其中&#xff0c;a…

机构运动学分析

背景介绍 空间机构具有结构紧凑、运动灵活等特点&#xff0c;在航空航天、精密仪器以及工业设备等领域具有广泛的应用。调研发现&#xff0c;机械臂一般采用伺服电机作为动力源&#xff0c;通过空间连杆驱动末端执行器&#xff0c;大大的减轻了工人的劳动强度。本节中主要是针对…

iconfont小图标从下载到引入到vue项目中的详细教程

地址&#xff1a;iconfont-阿里巴巴矢量图标库 iconfont小图标下载&#xff1a; &#xff08;1&#xff09;查找图标 在搜索框直接文字搜索或者看下面的小图标库&#xff0c;找想要的&#xff0c;每个小图标库都有一个名字&#xff0c;比如&#xff1a;“阿里云官网”&#x…

Vue2中$set的使用

一、什么场景下使用$set set为解决Vue2中双向数据绑定失效而生&#xff0c;只需要关注什么时候双向数据绑定会失效就可以了。 例如&#xff1a; 1.利用数组中某个项的索引直接修改该项的时候 arr[indexOfItem] newValue 2.直接修改数组的长度的时候 arr.length newLength …

gRPC学习笔记(一)

文章目录gRPC初学思维导图异步多函数多类的调用grpc初学总结&#xff1a;杂项gRPC初学思维导图 异步多函数多类的调用 一个类里有多个方法时&#xff0c; 两种方法&#xff1a; 定义不同的类&#xff08;推荐&#xff0c;只管自己的实现&#xff0c;换了请求类型&#xff0c;…

在linux系统上看全世界新闻 -- Clinews的使用详解

一. Clinews介绍 Clinews 和 InstantNews 类似&#xff0c;都是 Linux 命令行下的新闻客户端&#xff0c;安装及配置 Clinews 后就可以在 Linux 命令行下阅读新闻及头条新闻了&#xff0c; 当然还有博客新闻&#xff0c;不需要安装 GUI 应用或移动应用&#xff0c;轻松在 Linu…

值得收藏的30道Python练手题(附详解)

今天给大家分享30道Python练习题&#xff0c;建议大家先独立思考一下解题思路&#xff0c;再查看答案。 1.已知一个字符串为 “hello_world_yoyo”&#xff0c;如何得到一个队列 [“hello”,”world”,”yoyo”] &#xff1f; 使用 split 函数&#xff0c;分割字符串&#xf…

2022年最热门的短网址整理,让你不再选择恐惧

转眼一年又过去了&#xff0c;最近发现网络上有各种各样的短网址平台&#xff0c;让人眼花缭乱&#xff0c;都声称免费并且功能强大&#xff0c;但是据我的了解&#xff0c;很多免费的短网址都是有使用上的限制的&#xff0c;比如生成条数、访问次数、有广告等等、还有各种各样…

校招|拿到腾讯、阿里、字节等10家互联网测试开发岗的offer

前言 首先自我介绍一下&#xff0c;本人北京地区985本硕&#xff0c;工科非计算机专业&#xff0c;课程、毕设课题和编程以及测开都一点关系也没有。但是&#xff0c;通过自己的准备和实习积累的经验&#xff0c;在秋招的时候收获了10家互联网公司的测试开发岗和北京地区一些国…

数字图像处理(入门篇)四 像素关系

目录 1 像素关系 2 像素的领域 &#xff08;1&#xff09;4-邻域 &#xff08;2&#xff09;对角邻域 &#xff08;3&#xff09;8-领域 3 像素的邻接和连接 &#xff08;1&#xff09;4-连接 &#xff08;2&#xff09;8-连接 4 像素的连通 5 连通域 6 像素之间的距…

HMM隐马尔可夫模型

1.概率图模型&#xff1a;HMM&#xff08;隐马&#xff09;,MEMM&#xff08;最大熵&#xff09;,CRF&#xff08;条件随机场&#xff09;概率&#xff1a;既然是一个图那么就是一个有圈有边的结构&#xff0c;圈代表随机向量&#xff0c;随机变量之间有边&#xff0c;边上有概…