rime中州韵小狼毫 联想词组 滤镜

news2024/9/29 17:32:07

教程目录:rime中州韵小狼毫须鼠管安装配置教程 保姆级教程 100+增强功能配置教程

在 rime中州韵小狼毫 自定义词典 一文中,我们分享了如何在rime中州韵小狼毫须鼠管输入法中定义用户自定义词典;通过自定义词典,我们可以很方便的在输入法中加入个性化的词组。

根据 rime中州韵小狼毫 滤镜与字典的区别 一文所分析,通过自定义词典所定义和管理的个性化词组,会受到输入方案的耦合影响,这导致我们无法方便的直接的分享我们的自定义词典配置;并且对于一些动态词组(例如实时时间,实时日期,电脑信息等),也无法通过配置自定义词典来实现。

本文分享rime中州韵小狼毫须鼠管输入法的一个联想词组滤镜配置。该滤镜可以在候选列表中出现关键词组时,抛出附加的新的词组,例如下图👇中带有💡标记的词组,即为联想词组:
20240111152332

联想词组字典

联想词组字典的目的是提供有联想关系的词组,例如由词组“夫妻”,联想到词组“伉俪”,再如由词组“进步”,联想到词组“进步开始于起步”。

联想词组字典txt的文档,lua滤镜脚本支持多个txt文档分类管理不同的联想词组,且滤镜脚本会自动进行去重处理。

联想词组字典文档内支持以符号#开头的行作为注释行,以提升词组管理的便捷性。

联想词组文档内的文本分为2列,以tab制表符分隔。第1列为关键词组,关键词组可以有多个,以空格分隔。第2列为联想词组,联想词组可以有多个,以空格分隔。联想词组的联想是意向的,即只能由第1更的关键词组联想到第2列的联想词组,但是可以通过使第1列与第2列相等来实现相互联想,例如 “夫妻 伉俪 →夫妻 伉俪”,这样可以使“夫妻”和“伉俪”相互联想。

phraseExt commonPhrase.txt

phraseExt commonPhrase.txt文档用于管理一般性的公共性的联想词组,phraseExt commonPhrase.txt词组定义截取如下👇:

# 支持使用 &nbsp 来定义空格,而正常的空格被用于分词
# 常用链接
知乎	https://www.zhihu.com
百度 度娘	www.baidu.com
淘宝	www.taobao.com
谷歌 谷哥 谷姐	www.google.com
画图 几何 画板	https://webgeo-8gn07v0t78c4ca57-1308819187.tcloudbaseapp.com
# 常用称呼
运气 华盖	运气 华盖
南冠 囚犯	南冠 囚犯
伉俪 夫妻	伉俪 夫妻
丝竹 音乐	丝竹 音乐
烽烟 战争 狼烟	战争 烽烟 狼烟

phraseExt esAppEmoji.txt

phraseExt esAppEmoji.txt文档用于管理一些应用专属的emoji表情,例如我们可以在微信聊天中输入 [微笑],则微信会将其自动转换成 emoji 表情符号 🙂。我们在phraseExt esAppEmoji.txt文档中定义了一系列的此类emoji表情词组。phraseExt esAppEmoji.txt词组定义截取如下👇:

done 完成 搞定	esFs[完成] esDt[Done]
get 了解 知道	esFs[了解] esDt[Get]
no 不行	esFs[No] esFs[叉号] esDt[打叉]
错 错误	esFs[叉号] esDt[打叉]
ok 行 好的 好吧 可以	esFsWxDt[OK]
好 好的	esFs[Yes] esWx[好的]
行	esFs[我看行] esFs[好的]
okr 绩效	esFsDt[OKR]

👆如上,phraseExt esAppEmoji.txt 文档中的联想词组,以AppName作为前缀,不同的App应用,前缀符号映射👇如下:

应用前缀
微信Wx
飞书Fs
钉钉Dt
QQQq

💣注意:
特别的,AppEmoji的联想,需要配置应用开关才可以使用,关于应用开关的配置,请参考 rime中州韵小狼毫 weasel.custom.yaml 配置 之 输入环境识别 一文。

phraseExt esUnicode.txt

Unicode字符集中,存在着丰富的 emoji符号,如果不善于利用,则实在可惜。phraseExt esUnicode.txt文档专门用来管理与 Unicode 表情符号有关的联想词组,phraseExt esUnicode.txt联想词组定义截取如下👇:

垃圾 垃圾桶	🚮
开水	🚰
轮椅 残疾 无障碍	♿
厕所	🚻 🚾
厕所 男人 男厕	🚹
厕所 女人 女厕	🚺

善于使用 Unicode 表情符号,会使你成为一个高情商的人。

phraseExt personal.txt

顾名思义,phraseExt personal.txt文档是用来管理一些个人和,私有的联想词组的,例如你的电话号码,例如你的邮寄地址,再如你的爱情口头禅。phraseExt personal.txt联想词组定义示例如下👇:

# 支持使用 &nbsp 来定义空格,而正常的空间被用于分词
# 这个字典用于管理 个人/私人 信息,以便在共享/分享rime配置时,可以方便的将个人信息进行隔离
# 常用联系方式
电话 手机	123456789AB 123456789AC
快递 地址	湖南省长春市快乐区开心社区2栋305室
# 常用办公信息
工号	000000
邮箱	san.zhang@aibaba.com
快递 地址	浙江省杭州市阿里马马集团2号快递收发室
# 其它常用信息
博客	https://www.myblogs.com

如果你与它人分享你的rime输入法的配置方案,phraseExt personal.txt 的存在将使得你可以快速的将个人/私人信息与配置方案进行隔离。

phraseExt_Module.lua

phraseExt_Module.lua 是一个lua脚本文档,phraseExt_Module.lua脚本文档的使用是将以上👆所管理的联想词组加载到lua程序中,并提供合适的检索方法接口,以便rime引擎可以使用联想词功能。phraseExt_Module.lua脚本内容如下👇:

-- myPhrase.lua
-- Copyright (C) 2023 yaoyuan.dou <douyaoyuan@126.com>
local M={}
local dict={}
local dictPhraseList={}
local dbgFlg = false

--引入系统变更处理模块
local ok, sysInfoRes = pcall(require, 'sysInfo')
local currentDir = sysInfoRes.currentDir

--设置 dbg 开关
local function setDbg(flg)
	dbgFlg = flg
	sysInfoRes.setDbg(flg)
	
	print('myPhrase dbgFlg is '..tostring(dbgFlg))
end

--将这附串拆散成 table
local function stringSplit(str,sp,sp1)
	sp=(type(sp)=="string") and sp or " "
	if 0==#sp then
		sp="([%z\1-\127\194-\244][\128-\191]*)"
	elseif 1==#sp then
		sp="[^"..(sp=="%" and "%%" or sp).."]*"
	else
		sp1=sp1 or "^"
		str=str:gsub(sp,sp1)
		sp="[^"..sp1.."]*"
	end
	
	local tab={}
	for v in str:gmatch(sp) do
		if ''~=v then
			table.insert(tab,v)
		end
	end
	return tab
end

--将文档处理成行数组
local function files_to_lines(...)
	if dbgFlg then
		print("--->files_to_lines called here")
	end
	local tab=setmetatable({},{__index=table})
	local index=1
	for i,filename in next,{...} do
		local fn = io.open(filename)
		if fn then
			for line in fn:lines() do
				if not line or #line > 0 then
					tab:insert(line)
				end
			end
			fn:close()
		end
	end
	
	if dbgFlg then
		print("--->files_to_lines completed here")
	end
	return tab
end

local function dictload(...) -- filename)
	if dbgFlg then
		print("-->dictload called here")
	end
	
	local lines=files_to_lines(...)
	local thisDict={}
	
	for i,line in next ,lines do
		if not line:match("^%s*#") then  -- 第一字 # 为注释行
			local keys,val = string.match(line,"(.+)\t(%C+)")
			if nil ~= keys then
				--尝试对关键字进行空格分割
				local keyList = stringSplit(keys,' ')
				local key=''
				for idx=1,#keyList do
					key = keyList[idx]
					if nil ~= thisDict[key] then
						--如果该key已经存在,追加在后面,注意加一个空格
						thisDict[key] = thisDict[key]..' '..val
					else
						thisDict[key] = val
					end
				end
			end
		end
	end
	
	if dbgFlg then
		print("-->dictload completed here")
	end
	return thisDict
end

--===========================test========================
local function test(printPrefix)
	if nil == printPrefix then
		printPrefix = ' '
	end
	
	if dbgFlg then
		print('myPhrase test starting...')
	end
	sysInfoRes.test(printPrefix..' ')
	
	for k,v in pairs(dict) do
		if dbgFlg then
			print(printPrefix..k..'\t'..v)
		end
	end
end

--获取字典中的phraseList
local function getPhraseList(k)
	if nil == k then
		return {}
	elseif '' == k then
		return {}
	end
	
	--尝试获取 dictPhraseList 中 k 的列表
	local phraseList = dictPhraseList[k]
	if nil == phraseList then
		--phraseList 获取失败,尝试获取 dict 中 k 的字符串
		local thisPhrase = dict[k]
		if nil == thisPhrase then
			--这个 k 在dict中不存在
			phraseList={}
		elseif thisPhrase == '' then
			--这个 k 在dict中是空的
			phraseList={}
		else
			--将获取的 thisPhrase 序列化到 dictPhraseList 中
			dictPhraseList[k]=stringSplit(thisPhrase,' ')
			
			--再次从 dictPhraseList 中获取 k 的序列
			phraseList = dictPhraseList[k]
		end
	end
	
	return phraseList
end

function M.init(...)
	local files={...}
	--文件名不支持中文,其中 # 开始的行为注释行
	table.insert(files,"phraseExt commonPhrase.txt")
	table.insert(files,"phraseExt esAppEmoji.txt")
	table.insert(files,"phraseExt esUnicode.txt")
	table.insert(files,"phraseExt personal.txt")
	
	for i,v in next, files do
		files[i] = currentDir().."/".. v
	end
	dict= dictload(table.unpack(files))
	
	--抛出功能函数
	M.getPhraseList = getPhraseList
	M.setDbg = setDbg
	M.test = test
end

M.init()

return M

👆以上脚本中,我们在M.init() 方法中看到了联想词组字典的加载方法:table.insert(files,"phraseExt personal.txt"),你如果有其它的联想词组字典,你也可以很方便的加载它们。

phraseExt_Module.lua 脚本提供了一个名为getPhraseList方法,该方法可以根据指定的关键词组,从联想词组字典对象dict中检索并返回对应的联想词组。

phraseExt_Filter.lua

phraseExt_Filter.lua脚本实现了匹配rime引擎的Filter滤镜,phraseExt_Filter.lua脚本定义并返回了phraseExt_Filter滤镜方法,phraseExt_Filter.lua脚本内容如下👇:

-- myPhrase_Filter.lua
-- Copyright (C) 2023 yaoyuan.dou <douyaoyuan@126.com>
local dbgFlg = false

local ok, res = pcall(require, 'phraseExt_Module')
local getPhraseList = res.getPhraseList

--最长的comment长度限制
local maxLenOfComment = 250

--设置 dbg 开关
local function setDbg(dbgFlg)
	res.setDbg(dbgFlg)
end

--过滤器
local function phraseExt_Filter(input, env)
	--获取选项增强开关状态
	local on = env.engine.context:get_option("phraseExt")
	--获取应用程序标记状态[由于飞书暂不支持文本转表情的输入,帮使用 and false 将其关闭]
	local feishuFlg = env.engine.context:get_option("feishuFlg") and false
	local wechatFlg = env.engine.context:get_option("wechatFlg")
	local qqFlg = env.engine.context:get_option("qqFlg")
	local dingdingFlg = env.engine.context:get_option("dingdingFlg")
	local minttyFlg = env.engine.context:get_option("minttyFlg")
	local cmdFlg = env.engine.context:get_option("cmdFlg")
	local pycharmFlg = env.engine.context:get_option("pycharmFlg")
	local vscodeFlg = env.engine.context:get_option("vscodeFlg")
	local matchedTxt = ''
	local esType = ''
	local esTxt = ''
	
	local cands={}
	local thisTxt
	
	for cand in input:iter() do
		--提交默认选项
		if nil == cands[cand.text] then
			yield(cand)
			cands[cand.text]=true
		end
		if on then
			local candTxt = cand.text:gsub("%s","") or ""
			
			if candTxt ~= "" then
				--获取增强选项
				local phraseList = getPhraseList(candTxt)
				if #phraseList > 0 then
					local idx
					for idx=1,#phraseList do
						thisTxt=phraseList[idx]
						
						if nil == cands[thisTxt] then
							cands[thisTxt]=true
							
							esType,esTxt = string.match(thisTxt,"^es(.+)(%[.+%])$")
							if nil ~= esType then
								esType = string.lower(esType)

								--这是一个表情选项
								if feishuFlg and nil ~= string.find(esType,'fs') then
									--这是一个 feishu 表情,且当前在 feishu 中输入
									if nil ~= esTxt then
										yield(Candidate("word", cand.start, cand._end, esTxt, '😃'))
									end
								elseif wechatFlg and nil ~= string.find(esType,'wx') then
									--这是一个 wechat 表情,且当前在 wechat 中输入
									if nil ~= esTxt then
										yield(Candidate("word", cand.start, cand._end, esTxt, '😃'))
									end
								elseif qqFlg and nil ~= string.find(esType,'qq') then
									--这是一个 QQ 表情,且当前在 QQ 中输入
									if nil ~= esTxt then
										yield(Candidate("word", cand.start, cand._end, esTxt, '😃'))
									end
								elseif dingdingFlg and nil ~= string.find(esType,'dt') then
									--这是一个 dingtalk 表情,且当前在 钉钉 中输入
									if nil ~= esTxt then
										yield(Candidate("word", cand.start, cand._end, esTxt, '😃'))
									end
								end
							else
								--这不是一个表情选项
								if string.lower(string.sub(thisTxt, 1, 4)) == 'git-' then
									-- 这是一个以 git 开头的选项,这被认为是一个 git 命令
									if minttyFlg or cmdFlg then
										-- 修剪选项
										thisTxt = string.sub(thisTxt, 5)

										-- git 命令选项只在 cmd 窗口或者是 mitty 窗口才允许输出,以避免造成干扰
										yield(Candidate("word", cand.start, cand._end, thisTxt:gsub("&nbsp"," "), '💡'))
									end
								elseif string.lower(string.sub(thisTxt, 1, 3)) == 'py-' then
									-- 这是一个以 py- 开头的选项,这被认为是一个 python 关键字
									if pycharmFlg or vscodeFlg then
										-- 修剪选项
										thisTxt = string.sub(thisTxt, 4)
										-- python 关键字选项只在 pycharm 或者 vscode 中才允许输出, 以避免造成干扰
										yield(Candidate("word", cand.start, cand._end, thisTxt:gsub("&nbsp"," "), '💡'))
									end
								else
									yield(Candidate("word", cand.start, cand._end, thisTxt:gsub("&nbsp"," "), '💡'))
								end
							end
						end
					end
				end
			end
		end
	end
end

return phraseExt_Filter

👆以下脚本代码中,我们可以看到一组开关状态获取代码,如下👇:
20240111162804
这些开关变量,使得一些特定的词组(例如App表情)只会在对应的应用程序环境下才会出现。例如只有在微信中进行录入时,才会出现微信专有的emoji词组,而在txt环境下录入时,则不会出现微信专属的emoji词组,这大大提升了输入法的录入体验。

💣注意:
以上👆所述文档 phraseExt commonPhrase.txtphraseExt esAppEmoji.txtphraseExt esUnicode.txtphraseExt personal.txtphraseExt_Filter.luaphraseExt_Module.lua6个文档,应该位于 用户文件夹下的 lua 文件夹内,如下👇:
20240111163444

rime.lua

rime.lua脚本的内容如下👇:

help_translator = require("help")
inputShow_translator = require("inputShow")
inputShow_Filter = require("inputShow_Filter")
Upper_Filter = require("Upper_Filter")
dic_4w_Filter = require("dic_4w_Filter")
phraseReplace_Filter = require("phraseReplace_Filter")
pinyinAdding_Filter = require("pinyinAdding_Filter")
dateTime_Filter = require("dateTime_filter")
dynamicPhrase_Filter = require("dynamicPhrase_Filter")
phraseExt_Filter = require("phraseExt_Filter")

👆述脚本,在最后一行中,我们加载了phraseExt_Filter滤镜。

wubi_pinyin.custom.yaml

以上, 我们完成了 phraseExt_Filter 滤镜的所有的功能定义,我们现在需要做的就是在我们的输入方案中配置使用该 phraseExt_Filter 滤镜。此处以五笔・拼音输入方案为例,展示如何配置使用 phraseExt_Filter 滤镜。

五笔・拼音 输入方案的方案文档 wubi_pinyin.schema.yaml 的补丁文档 wubi_pinyin.custom.yaml中,我们增加如下的Filters配置:

# encoding:utf-8
patch:
  switches/+: #增加以下开关
    - name: phraseExt				# 候选词扩展开关
      reset: 1
      states: [Off, phraseExt]
  engine/filters:									# 设置以下filter
    - simplifier
    - lua_filter@phraseExt_Filter					# 自定义短语滤镜,针对响应的关键字,添加新的选项进来

注意,以上👆配置并不是wubi_pinyin.custom.yaml的全部配置,此处仅展示了与phraseExt_Filter有关的部分。

文档获取

👆以上所述配置文档,你可以在 rime中州韵小狼毫须鼠管输入法 联想词组滤镜配置包.zip 下载取用。

如果你可以访问gitHub,你也可以在 dyyRime 中找到完全版本的配置包。

小结

文章分享了一种在rime中州韵小狼毫须鼠管输入法中配置联想词组滤镜的方法。通过分别在phraseExt commonPhrase.txtphraseExt esAppEmoji.txtphraseExt esUnicode.txtphraseExt personal.txt四个文档中分类整理定义了不同的联想词组,然后在phraseExt_Filter.luaphraseExt_Module.lua两个脚本文档中实现了phraseExt_Filter 滤镜功能。最后以五笔・拼音输入方案为例,展示了如何在 五笔・拼音 输入方案中配置使用 phraseExt_Filter 滤镜的方法,最实现了预期的功能效果。

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

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

相关文章

LeetCode:82. 删除排序链表中的重复元素 II(C++、Java)

目录 82. 删除排序链表中的重复元素 II 题目描述&#xff1a; 实现代码与解析&#xff1a; 链表遍历&#xff1a; 实现代码与解析&#xff1a; 82. 删除排序链表中的重复元素 II 题目描述&#xff1a; 给定一个已排序的链表的头 head &#xff0c; 删除原始链表中所有重复…

【我与Java的成长记】之继承详解(二)

系列文章目录 能看懂文字就能明白系列 C语言笔记传送门 Java笔记传送门 &#x1f31f; 个人主页&#xff1a;古德猫宁- &#x1f308; 信念如阳光&#xff0c;照亮前行的每一步 文章目录 系列文章目录&#x1f308; *信念如阳光&#xff0c;照亮前行的每一步* 前言一、super关…

VBA之Excel应用第五节:录制宏时,使用绝对引用和相对引用

《VBA之Excel应用》&#xff08;版权10178983&#xff09;是非常经典的&#xff0c;是我推出的第七套教程&#xff0c;定位于初级&#xff0c;目前是第一版修订。这套教程从简单的录制宏开始讲解&#xff0c;一直到窗体的搭建&#xff0c;内容丰富&#xff0c;实例众多。大家可…

乡镇景区外卖需求的上涨,现在下场做外卖平台服务晚不晚?

如今&#xff0c;在田间地头点外卖已经变成了现实。随着外卖市场的发展&#xff0c;外卖消费的多样化场景逐渐显现&#xff0c;不仅在田间可以订餐外卖&#xff0c;出门旅行的任何地方都可以点上一份热腾腾的外卖送到面前。特别是从去年开始旅游经济恢复之后&#xff0c;外卖也…

分类预测 | Matlab实现ZOA-CNN-MATT-SVM斑马优化卷积神经网络多头注意力机制结合支持向量机的数据分类预测【24年新算法】

分类预测 | Matlab实现ZOA-CNN-MATT-SVM斑马优化卷积神经网络多头注意力机制结合支持向量机的数据分类预测【24年新算法】 目录 分类预测 | Matlab实现ZOA-CNN-MATT-SVM斑马优化卷积神经网络多头注意力机制结合支持向量机的数据分类预测【24年新算法】分类效果基本描述程序设计…

构建镜像:探索容器化应用部署的核心技术

目录 引言&#xff1a;前提准备&#xff1a;构建镜像&#xff1a;基本结构准备工作镜像运行镜像优化 总结 引言&#xff1a; 容器化应用部署已经成为当今软件开发和运维中的热门话题。构建镜像是容器化部署的关键步骤之一&#xff0c;它能够帮助开发人员和运维团队快速、高效地…

Flink-容错机制

Flink中的容错机制 流式数据连续不断地到来&#xff0c;无休无止&#xff1b;所以流处理程序也是持续运行的&#xff0c;并没有一个明确的结束退出时间。机器运行程序&#xff0c;996 起来当然比人要容易得多&#xff0c;不过希望“永远运行”也是不切实际的。因为各种硬件软件…

排序——归并排序

文章目录 基本思想递归版本思路代码实现 非递归版思路代码实现 结果演示 基本思想 归并排序&#xff08;MERGE-SORT&#xff09;是建立在归并操作上的一种有效的排序算法,该算法是采用分治法&#xff08;Divide andConquer&#xff09;的一个非常典型的应用。将已有序的子序列…

基于深度学习的时间序列算法总结

1.概述 深度学习方法是一种利用神经网络模型进行高级模式识别和自动特征提取的机器学习方法&#xff0c;近年来在时序预测领域取得了很好的成果。常用的深度学习模型包括循环神经网络&#xff08;RNN&#xff09;、长短时记忆网络&#xff08;LSTM&#xff09;、门控循环单元&a…

数据库知识汇总之MySQL

目录 MySQL数据库特点MySQL下载MySQL配置文件初始化MySQL配置安装MySQL服务 启动MySQL服务登录数据库修改数据库登录密码MySQL错误代码1130 MySQL数据库特点 MySQL是一个开源关系型数据库管理系统(RDBMS)&#xff0c;由Oracle公司维护和开发。它使用SQL语言进行数据库管理和操…

mfc140.dll丢失了要怎么解决?多种解决mfc140.dll方法对比

mfc140.dll丢失了怎么办&#xff1f;mfc140.dll丢失的多个解决方法今天就来给大家详细的说说&#xff0c;因为平时实在是太多人咨询这个问题了&#xff0c;都说自己电脑的mfc140.dll找不到了&#xff0c;一些程序没办法运行&#xff0c;所以还是给大家分析一下mfc140.dll。 一.…

droupout(Pytorch中的代码实现)

图片来源&#xff1a; 【Pytorch】torch.nn.Dropout()的两种用法&#xff1a;防止过拟合 & 数据增强-CSDN博客 注意&#xff1a; droupout可以进行数据增强或者防止数据过拟合。 droupout在全连接层之后&#xff0c;使得部分神经元失活&#xff0c;但是为什么能保持数据…

使用官方构建工具来创建一个vue3的项目

当你使用 Vite 构建项目时&#xff0c;可能会发现在命令行界面无法选择是否包含 TypeScript 等其他基础配置。此外&#xff0c;使用 vue create 命令创建项目时&#xff0c;默认会使用 vue-cli&#xff0c;但项目启动等过程可能较慢。在这种情况下&#xff0c;你可以参考以下步…

如何使用Java采集汽车之家车辆配置参数信息

目录 一、引言 二、采集工具选择 三、采集流程设计 1、确定采集目标 2、确定采集URL 3、发送HTTP请求 4、解析HTML页面 5、CSS选择器或jQuery选择器。 6、异常处理和日志记录 四、代码实现示例 五、结果与分析 六、结论 随着互联网的普及和信息技术的不断发展&…

VS代码生成工具ReSharper v2023.3正式发布——支持C# 12

实质上&#xff0c;ReSharper特征可用于C#&#xff0c;VB.net&#xff0c;XML&#xff0c;Asp.net&#xff0c;XAML&#xff0c;和构建脚本。 使用ReSharper&#xff0c;你可以进行深度代码分析&#xff0c;智能代码协助&#xff0c;实时错误代码高亮显示&#xff0c;解决方案范…

Redis基础系列-哨兵模式

Redis基础系列-哨兵模式 文章目录 Redis基础系列-哨兵模式1. 引言2. 什么是哨兵模式&#xff1f;3. 哨兵模式的配置4. 哨兵模式的启动和验证4.1 主master宕机&#xff0c;看会出现什么问题4.2 重启6379主机 5. 哨兵模式的工作原理和选举原理5.1. SDown主观下线&#xff08;Subj…

Linux 下GEO Server发布图层后,中文乱码解决方案

发布的图层&#xff0c;显示中文乱码&#xff0c;都是框框&#xff1a;如“口口” 第一步先查看Linux字符集 如下命令所示&#xff1a; 1.查看当前系统语言 echo $LANG2.查看安装的语言包 locale如果上面的命令执行后显示的是en_US.UTF-8&#xff0c;则说明当前语言系统及安…

【STM32】STM32学习笔记-MPU6050简介(32)

00. 目录 文章目录 00. 目录01. MPU6050简介02. MPU6050参数03. MPU6050硬件电路04. MPU6050框图05. MPU6050常用寄存器06. 附录 01. MPU6050简介 •MPU6050是一个6轴姿态传感器&#xff0c;可以测量芯片自身X、Y、Z轴的加速度、角速度参数&#xff0c;通过数据融合&#xff0…

2024年甘肃省职业院校技能大赛信息安全管理与评估 样题一 模块二

竞赛需要完成三个阶段的任务&#xff0c;分别完成三个模块&#xff0c;总分共计 1000分。三个模块内容和分值分别是&#xff1a; 1.第一阶段&#xff1a;模块一 网络平台搭建与设备安全防护&#xff08;180 分钟&#xff0c;300 分&#xff09;。 2.第二阶段&#xff1a;模块二…

《动手学深度学习》学习笔记 第8章 循环神经网络

本系列为《动手学深度学习》学习笔记 书籍链接&#xff1a;动手学深度学习 笔记是从第四章开始&#xff0c;前面三章为基础知识&#xff0c;有需要的可以自己去看看 关于本系列笔记&#xff1a; 书里为了让读者更好的理解&#xff0c;有大篇幅的描述性的文字&#xff0c;内容很…