首页
书签
论坛
网盘
邮件
壁纸
影视
在线音乐
更多
直播
统计
个人微博
云笔记
云存储
图片视频
友链
留言
关于
Search
1
文档内容搜索哪家强? 15款文件搜索软件横向评测
13 阅读
2
常见系统部署(1)
11 阅读
3
makfile 知识汇总
8 阅读
4
欢迎使用 Typecho
5 阅读
5
打造Ventoy多功能多系统启动U盘
5 阅读
默认分类
数字电路
芯片后端
模拟电路
芯片验证
原型验证
算法与架构
DFX与量产
windows设置
Linux设置
MacOS设置
移动OS设置
软件方案
登录
Search
标签搜索
python
PyQT
systemverilog
Alist
Docker
cadence
sv
webdav
vscode
cpp
upf
ESL
TLM
浏览器
virtuoso
tsmc8rf
TSMC
CXL
PCIE
Yosys
bennyhe
累计撰写
46
篇文章
累计收到
8
条评论
首页
栏目
默认分类
数字电路
芯片后端
模拟电路
芯片验证
原型验证
算法与架构
DFX与量产
windows设置
Linux设置
MacOS设置
移动OS设置
软件方案
页面
书签
论坛
网盘
邮件
壁纸
影视
在线音乐
直播
统计
个人微博
云笔记
云存储
图片视频
友链
留言
关于
搜索到
15
篇与
的结果
2025-06-12
makfile 知识汇总
怎么实现数组的效果比如有多个文件的编译问题vlogan -sysc -sc_model adder -sc_portmap the.map adder.vvlogan -sysc -sc_model multiplier -sc_portmap the.map multiplier.v每增加一下文件都需要增加一个增加的编译,该怎么实现呢?如果model 名字和文件名字就是.v 关系 可以使用foreachnames := a b c d files := $(foreach n,$(names),$(n).v) all:$(names) %: %.v echo "$@ $<" vlogan -sysc -sc_model $@ -sc_portmap the.map $< 输入make all 就行了这里的%: %.v , 实际上表示任意的命令 比如make xxx, % 就表示xxx, 依赖%.v 就是表示xxx.v 存在, $@就表示这个对像xxx,$< 表示第一个依赖,就是xxx.vforeach 函数foreach函数和别的函数非常的不一样。因为这个函数是用来做循环用的,Makefile中的foreach函数几乎是仿照于Unix标准Shell(/bin/sh)中的for语句,或是C-Shell(/bin/csh)中的foreach语句而构建的。它的语法是:$(foreach ,,)这个函数的意思是,把参数 中的单词逐一取出放到参数 所指定的变量中,然后再执行 所包含的表达式。每一次 会返回一个字符串,循环过程中, 的所返回的每个字符串会以空格分隔,最后当整个循环结束时, 所返回的每个字符串所组成的整个字符串(以空格分隔)将会是foreach函数的返回值。所以, 最好是一个变量名, 可以是一个表达式,而 中一般会使用 这个参数来依次枚举 中的单词。举个例子:names := a b c dfiles := $(foreach n,$(names),$(n).o)上面的例子中, $(name) 中的单词会被挨个取出,并存到变量 n 中, $(n).o 每次根据 $(n) 计算出一个值,这些值以空格分隔,最后作为foreach函数的返回,所以, $(files)的值是 a.o b.o c.o d.o 。注意,foreach中的 参数是一个临时的局部变量,foreach函数执行完后,参数 的变量将不在作用,其作用域只在foreach函数当中。常用的内置变量$@:表示目标文件。$^:表示所有的依赖文件。$<:表示第一个依赖文件。main: main.o utils.o$(CC) -o $@ $^ 在这里,$@ 表示目标文件 main,$^ 表示所有的依赖文件 main.o 和 utils.o。wildcard 用法SRCS := $(wildcard *.c)在这个例子中,$(wildcard *.c) 将匹配当前目录下所有以 .c 结尾的文件,并将符合条件的文件名列表赋值给变量 SRCS。FILES := $(wildcard src/*.c include/*.h)这个示例中,$(wildcard src/.c include/.h) 将匹配 src 目录下的所有 .c 文件和 include 目录下的所有 .h 文件,并将结果合并为一个文件列表赋值给变量 FILES。总之,$(wildcard pattern) 函数非常有用,可以帮助 Makefile 在构建过程中获取符合特定模式的文件列表,使得构建过程更加灵活和自动化。
2025年06月12日
8 阅读
0 评论
0 点赞
2025-06-12
Tmux 配置:打造最适合自己的终端复用工具
如果说有什么工具可以用相见恨晚 来形容的话,tmux 算一个。tmux 是一款优秀的终端复用工具,使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再“浪费”多余的终端来连接这台远程主机;功能提供了强劲的、易于使用的命令行界面。可横向和纵向分割窗口。窗格可以自由移动和调整大小,或直接利用四个预设布局之一。支持 UTF-8 编码及 256 色终端。可在多个缓冲区进行复制和粘贴。可通过交互式菜单来选择窗口、会话及客户端。支持跨窗口搜索。支持自动及手动锁定窗口。可以自由配置绑定快捷键。tmux 重要概念使用 tmux 的时候千万不要去背指令,所有的指令都可以在 .tmux.conf 配置文件中绑定自己顺手的快捷键,也可以配置开启鼠标。这个是我的配置文件:https://github.com/zuorn/tmux.conf在tmux逻辑中,需要分清楚Server > Session > Window > Pane这个大小和层级顺序是极其重要的,直接关系到工作效率:Server:是整个tmux的后台服务。有时候更改配置不生效,就要使用tmux kill-server来重启tmux。Session:是tmux的所有会话。我之前就错把这个session当成窗口用,造成了很多不便里。一般只要保存一个session就足够了。Window:相当于一个工作区,包含很多分屏,可以针对每种任务分一个Window。如下载一个Window,编程一个window。Pane:是在Window里面的小分屏。最常用也最好用了解了这个逻辑后,整个tmux的使用和配置也就清晰了。(ps:下面这种方便好看的Status bar状态栏,显示的是windows,而不是sessions)安装在 Mac OS 中,通过 brew 安装brew install tmuxubuntu版本下直接apt-get安装sudo apt-get install tmuxcentos7版本下直接yum安装yum install -y tmuxcentos6版本需要编译安装yum install libevent libevent-devel ncurses-devel tar -zvxf tmux-2.3.tar.gz # (提前下载:wget https://github.com/tmux/tmux/releases/download/2.3/tmux-2.3.tar.gz)cd tmux-2.3 ./configure make && make installtmux 常用命令#启动新session:$ tmux [new -s 会话名 -n 窗口名] #恢复session:$ tmux at [-t 会话名] #列出所有sessions:$ tmux ls #关闭session:$ tmux kill-session -t 会话名 #关闭整个tmux服务器:$ tmux kill-servertmux 常用内部命令所谓内部命令,就是进入tmux后,并按下前缀键后的命令,一般前缀键为Ctrl+b. 虽然ctrl和b离得很远但是不建议改前缀键,因为别的键也不见得方便好记不冲突。还是记忆默认的比较可靠。系统指令:前缀 指令 描述Ctrl+b ? 显示快捷键帮助文档Ctrl+b d 断开当前会话Ctrl+b D 选择要断开的会话Ctrl+b Ctrl+z 挂起当前会话Ctrl+b r 强制重载当前会话Ctrl+b s 显示会话列表用于选择并切换Ctrl+b : 进入命令行模式,此时可直接输入ls等命令Ctrl+b [ 进入复制模式,按q退出Ctrl+b ] 粘贴复制模式中复制的文本Ctrl+b ~ 列出提示信息缓存窗口(window)指令:前缀 指令 描述Ctrl+b c 新建窗口Ctrl+b & 关闭当前窗口Ctrl+b 0~9 切换到指定窗口Ctrl+b p 切换到上一窗口Ctrl+b n 切换到下一窗口Ctrl+b w 打开窗口列表,用于且切换窗口Ctrl+b , 重命名当前窗口Ctrl+b . 修改当前窗口编号(适用于窗口重新排序)Ctrl+b f 快速定位到窗口(输入关键字匹配窗口名称)面板(pane)指令:前缀 指令 描述Ctrl+b " 当前面板上下一分为二,下侧新建面板Ctrl+b % 当前面板左右一分为二,右侧新建面板Ctrl+b x 关闭当前面板(关闭前需输入y or n确认)Ctrl+b z 最大化当前面板,再重复一次按键后恢复正常(v1.8版本新增)Ctrl+b ! 将当前面板移动到新的窗口打开(原窗口中存在两个及以上面板有效)Ctrl+b ; 切换到最后一次使用的面板Ctrl+b q 显示面板编号,在编号消失前输入对应的数字可切换到相应的面板Ctrl+b { 向前置换当前面板Ctrl+b } 向后置换当前面板Ctrl+b Ctrl+o 顺时针旋转当前窗口中的所有面板Ctrl+b 方向键 移动光标切换面板Ctrl+b o 选择下一面板Ctrl+b 空格键 在自带的面板布局中循环切换Ctrl+b Alt+方向键 以5个单元格为单位调整当前面板边缘Ctrl+b Ctrl+方向键 以1个单元格为单位调整当前面板边缘(Mac下Ctrl+b t 显示时钟我的配置文件c$ git clone git@github.com:zuorn/tmux-config.git$ cp tmux-config/.tmux.conf ~/.tmux.conf重启 tmux restart tmux 或者 在 tmux 窗口中,先按下 Ctrl+b 指令前缀,然后按下系统指令:,进入到命令模式后输入 source-file ~/.tmux.conf,回车后生效。配置项修改指令前缀可根据自己的喜好来设置,如若要启用,取消注释即可。#set -g prefix C-f ##unbind C-f # C-b 即 Ctrl+b 键,unbind 意味着解除绑定#bind C-f send-prefix # 绑定 Ctrl+f 为新的指令前缀 # 从tmux v1.6版起,支持设置第二个指令前缀#set-option -g prefix2 ` # 设置一个不常用的`键作为指令前缀,按键更快些添加加载配置文件快捷指令bind r source-file ~/.tmux.conf \; display-message "Config reloaded.."支持鼠标选取文本调整面板大小选中并切换面板老版本:setw -g mode-mouse on 支持鼠标选取文本等#setw -g mouse-resize-pane on # 支持鼠标拖动调整面板的大小(通过拖动面板间的分割线)#setw -g mouse-select-pane on # 支持鼠标选中并切换面板#setw -g mouse-select-window on # 支持鼠标选中并切换窗口(通过点击状态栏窗口名称)v2.1及以上的版本set-option -g mouse on面板更改新增面板键#o垂直新增面板o水平新增面板unbind '"'bind - splitw -v -c '#{pane_current_path}' # 垂直方向新增面板,默认进入当前目录unbind %bind = splitw -h -c '#{pane_current_path}' # 水平方向新增面板,默认进入当前目录面板调整大小绑定Ctrl+hjkl键为面板上下左右调整边缘的快捷指令bind -r ^k resizep -U 10 # 绑定Ctrl+k为往↑调整面板边缘10个单元格bind -r ^j resizep -D 10 # 绑定Ctrl+j为往↓调整面板边缘10个单元格bind -r ^h resizep -L 10 # 绑定Ctrl+h为往←调整面板边缘10个单元格bind -r ^l resizep -R 10 # 绑定Ctrl+l为往→调整面板边缘10个单元格复制模式复制模式更改为 vi 风格#setw -g mode-keys vi # 开启vi风格后,支持vi的C-d、C-u、hjkl等快捷键复制模式向 vi 靠拢#v 开始选择文本y 复制选中文本p 粘贴文本bind -t vi-copy v begin-selection # 绑定v键为开始选择文本bind -t vi-copy y copy-selection # 绑定y键为复制选中文本bind p pasteb # 绑定p键为粘贴文本(p键默认用于进入上一个窗口,不建议覆盖)优化设置窗口面板起始序号#set -g base-index 1 # 设置窗口的起始下标为1set -g pane-base-index 1 # 设置面板的起始下标为1自定义状态栏set -g status-utf8 on # 状态栏支持utf8set -g status-interval 1 # 状态栏刷新时间set -g status-justify left # 状态栏列表左对齐setw -g monitor-activity on # 非当前窗口有内容更新时在状态栏通知set -wg window-status-format " #I #W " # 状态栏窗口名称格式set -wg window-status-current-format " #I:#W#F " # 状态栏当前窗口名称格式(#I:序号,#w:窗口名称,#F:间隔符)set -wg window-status-separator "" # 状态栏窗口名称之间的间隔tmux 常见问题tmux不管怎么改配置文件,都不产生变化#这个主要是由于tmux的后台缓存机制造成的。我就犯了个大错误:甚至删了tmux、重装tmux、重启电脑,都没达成。tmux会有一个叫tmux-server的东西。只要把它kill,重启tmux就OK了:tmux kill-server -a
2025年06月12日
5 阅读
0 评论
0 点赞
2025-06-12
svn 知识汇总
SVN错误:local unversioned, incoming file add upon updateSVN版本冲突本地修改svnresolvesvnrevert关键词由CSDN通过智能技术生成一.问题现象svn stD C xxx.svlocal unversioned, incoming file add upon updateSummary of conflicts:Tree conflicts:1svn报错!!!二.问题原因当对本地文件xxx.sv进行修改后,没有ci提交至版本库。随后svn up更新时显示conflict,按提示选择postpone。然后删除了xxx.sv。再次svn up更新不了该文件,svn st报错。三.解决方法3.1 svn resolve --accept working xxx.svResolve conflicted state of ‘xxx.sv’3.2 svn revert xxx.svReverted ‘xxx.sv’3.3 svn stU xxx.sv四.svn 命令4.1 svn resolve移除文件的冲突状态。删除目录下的三个临时文件,将用户指定的文件版本作为冲突解决后的最后版本。–accept=working 告诉subversion把文件的当前内容作为冲突解决后的状态,。4.2 svn revert将文件回退至上一版本,舍弃当前所做的所有修改。原文链接:https://blog.csdn.net/weixin_45270982/article/details/111239293
2025年06月12日
5 阅读
0 评论
0 点赞
2025-06-11
系统备份和恢复
windows11 使用创建系统映像工具制作镜像备份时可以保存到多种位置,但是这种方式的系统备份不能还原到另一台电脑中使用。步骤1. 打开控制面板,然后选择“备份和还原Windows7”,很扯吧,尽管是win11系统 ,但里面还是保留着windows7的遗迹。好了,废话不说,下一步点击左上角的“创建系统映像”。步骤2. 选择存储Win11系统镜像备份的位置,然后点击“下一页”步骤3. 如图,程序会自动选择C盘以及和系统有关的引导分区,点击“下一页”。Win11系统映像恢复教程 1. 首先,按键盘上的【 Win + X 】组合键,或右键点击任务栏上的【Windows开始徽标】,在打开的菜单项中,选择【设置】。提示将重新启动设备,所以请保存工作,点击【立即重启】。选择一个选项下,点击【疑难解答(重置你的电脑或查看高级选项)】。 注意:此界面也可以通过强制开关机三次进入高级选项下,点击【查看更多恢复选项】。macos macOS系统中,备份和恢复是一个非常重要的过程,可以帮助你在系统崩溃、数据丢失或硬件故障时保护重要数据。以下是有关macOS系统备份和恢复的详细指南,包括使用Time Machine和iCloud的方法,以及恢复系统和文件的步骤。macOS系统备份方法使用Time Machine备份:Time Machine是macOS自带的备份工具,可以自动备份你的文件、应用程序和系统设置。首先,你需要一个外接硬盘或网络存储设备作为备份目标。然后,在“系统偏好设置”中找到并点击“Time Machine”,选择你的备份磁盘,并开启自动备份。如果你的这台 Mac 之前没有做过时间机器备份,就点「选择磁盘」。然后在显示的可用备份磁盘里选你要用来备份的移动硬盘或者 NAS 磁盘。选择移动硬盘可能会要求先「抹掉」这个硬盘(或分区),选择「抹掉」。注意抹掉会删除这个分区里的所有数据。如果移动硬盘分了两个区,没有被选择的另一个分区数据不受影响。macOS系统恢复方法使用Time Machine恢复:如果需要恢复整个系统,可以重启MacBook,进入恢复模式,选择“实用工具” > “Time Machine”,然后选择你的备份磁盘,按照提示恢复你的数据。intel处理器Mac进入恢复模式把mac电脑完全关机,然后开机,在电脑开机时候马上按着Command+R 不放,等出现苹果标志3秒之后,松开按键等待进入Recovery 模式(如下图所示)M1/M2处理器Mac进入恢复模式将Mac关机,按住开机电源键不要松开,等出现选项后,再松开电源键,然后点击选项即可进入Recovery 模式(如下图所示)。uos 点击任务栏控制中心图标,打开控制中心,选择系统信息 > 备份/还原,选择备份选项卡。在您确定要重启吗的确认界面,点击重启选项,设备立即重启并进入备份进度界面,直至显示备份成功提示,点击立即重启,即可登录系统。备份完成后,可在外接存储介质中看到按生成日期命名的文件夹下,有生成的备份文件系统还原(或恢复出厂设置)UOS 提供从控制中心还原、从 GRUB 还原两种系统还原(或恢复出厂设置)的操作方式。(一)从控制中心还原点击任务栏控制中心图标,打开控制中心,选择系统信息 > 备份/还原,选择还原选项卡。选择恢复出厂设置或自定义恢复,单击开始还原并,在提示对话框中确认。恢复出厂设置:将设备恢复到出厂的默认状态,清除保存的参数设置。保留个人数据时:系统还原后会保留设备数据盘中的个人文件数据。设备重启后进入系统还原界面,还原进度至 100% 后,会显示还原成功提示,点击立即重启,即完成系统还原。(二)从 GRUB 进行还原在设备开机时(华为擎云L420、华为擎云L540、华为擎云W585x需要开机中按f10进入),选择 Uniontech OS Backup & Restore,进入GRUB界面。进入系统还原主界面,选择恢复出厂设置或自定义恢复,单击开始还原。恢复出厂设置:将设备恢复到出厂的默认状态,清除保存的参数设置。勾选保留个人数据时,系统还原后会保留设备数据盘中的个人文件数据。自定义恢复:选择外部存储介质中的备份文件(生成过程请参考前面备份到外部存储介质的操作),可将设备恢复到前期备份系统状态。
2025年06月11日
5 阅读
0 评论
0 点赞
2025-06-11
如何在 Ubuntu 22.04 23.04 上安装 Roundcube邮件服务器
Roundcube 是一个基于 Web 的免费开源多语言 IMAP 电子邮件客户端,用 PHP 编写。它提供了您期望从电子邮件客户端获得的全部功能,包括 MIME 支持、地址簿、文件夹操作、邮件搜索和拼写检查。本教程将向您展示如何使用 Nginx Web 服务器和 MySQL 数据库服务器在 Ubuntu 22.04 上安装 Roundcube webmail。步骤 1:更新操作系统在 Ubuntu 22.04 上继续安装和配置 Roundcube webmail 之前,请使用以下命令将系统包更新并升级到最新版本:第 2 步:安装 Nginx Web 服务器在本教程中,我们将使用 Nginx。如果您更喜欢 Apache 或其他 Web 服务器,则可以使用它来代替 Nginx。您可以apt 通过执行以下命令通过包管理器安装 Nginx。apt install nginx您可以通过输入以下命令启动 Nginx 服务并将其配置为在启动时运行:systemctl start nginxsystemctl enable nginxNginx 使用 命令验证服务的状态 systemctl status :systemctl status nginx输出:● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) Docs: man:nginx(8)Main PID: 5317 (nginx) Tasks: 2 (limit: 2196) Memory: 2.6M CPU: 31ms CGroup: /system.slice/nginx.service ├─5317 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;" └─5318 "nginx: worker process第 3 步:为 Roundcube 安装 PHP和所需的 PHP 扩展运行以下命令以安装所需的 PHP 扩展。1.6 版本完全支持 PHP8.1。apt install php php-fpm php-gd php-common php-json php-imagick php-imap php-xml php-mbstring php-curl php-zip php-bz2 php-intl php-ldap验证是否安装了 PHP。php -vOutput:PHP 8.1.2-1ubuntu2.9 (cli) (built: Oct 19 2022 14:58:09) (NTS)Copyright (c) The PHP GroupZend Engine v4.1.2, Copyright (c) Zend Technologieswith Zend OPcache v8.1.2-1ubuntu2.9, Copyright (c), by Zend Technologies第四步:安装MySQL并创建数据库您可以使用以下命令安装 MySQL 服务器:apt install mysql-server启动数据库服务器守护进程,并使用以下命令使其在下次启动时自动启动:systemctl start mysqlsystemctl enable mysqlMySQL 使用 命令验证服务的状态 systemctl status :systemctl status mysql输出:● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running)Main PID: 1083 (mysqld) Status: "Server is operational" Tasks: 41 (limit: 2797) Memory: 434.0M CPU: 1min 57.932s CGroup: /system.slice/mysql.service └─1083 /usr/sbin/mysqld默认情况下,MySQL 未加固。您可以使用mysql_secure_installation 脚本保护 MySQL。mysql_secure_installation像这样配置它:Set root password? [Y/n] YRemove anonymous users? [Y/n] YDisallow root login remotely? [Y/n] YRemove test database and access to it? [Y/n] YReload privilege tables now? [Y/n] Y现在运行下面的命令登录到 MySQL shell。mysql -u root -p登录到数据库服务器后,您需要为 Roundcube 安装创建一个数据库:mysql> CREATE DATABASE roundcubemail;mysql> CREATE USER 'roundcube'@'localhost' IDENTIFIED BY 'Strong-Password';mysql> GRANT ALL PRIVILEGES ON roundcubemail . * TO 'roundcube'@'localhost';mysql> FLUSH PRIVILEGES;mysql> exit;第 5 步:下载 RoundcubeRoundcube 在默认的 Ubuntu 仓库中可用。但是,存储库通常不提供最新版本。可以通过从 Roundcube下载页面下载源代码来安装 Roundcube 的最新稳定版本。使用带有 wget 的地址, 在服务器上下载Roundcube tarball :wget https://github.com/roundcube/roundcubemail/releases/download/1.6.0/roundcubemail-1.6.0-complete.tar.gz创建一个roundcube目录:mkdir /var/www/roundcube/之后,您需要解压缩 Roundcube 存档:tar -xvzf roundcubemail-1.6.0-complete.tar.gz -C /var/www/roundcube/ --strip-components 1让 Nginx 成为该文件夹的所有者roundcube 并授予它足够的权限。chown -R www-data:www-data /var/www/roundcubechmod 755 -R /var/www/roundcube现在启动包含在下载文件中的示例数据库。mysql -u roundcube -p roundcube < /var/www/roundcube/SQL/mysql.initial.sql第 6 步:为 Roundcube 配置 Nginx然后,创建一个虚拟主机配置文件来托管 Roundcube:nano /etc/nginx/conf.d/roundcube.confNginx 忽略 Roundcube 的 Apache.htaccess文件,所以我们告诉 Nginx 忽略一些敏感目录:server { listen 80; server_name webmail.your-domain.com; root /var/www/roundcube; index index.php index.html index.htm; error_log /var/log/nginx/roundcube.error; access_log /var/log/nginx/roundcube.access; location ~ ^/(README.md|INSTALL|LICENSE|CHANGELOG|UPGRADING)$ { deny all; } location ~ ^/(config|temp|logs)/ { deny all; } location ~ /\. { deny all; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.1-fpm.sock; }}请记住替换 your-domain.com 为您的服务器的域名。保存并退出配置文件。检查 Nginx 语法:nginx -tnginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful要实施更改,请重新启动 Nginx 网络服务器:systemctl restart nginx第 7 步:Roundcube 设置和配置现在打开您的网络浏览器并转到http://webmail.your-domain.com/installer,您将看到以下屏幕:如果安装了所有必需的模块和扩展,请按 NEXT并转到 下一步。在下一页上,导航到数据库设置设置并输入您在上面创建的数据库名称、用户和密码。在 SMTP 设置下,选中“使用当前 IMAP 用户名和密码进行 SMTP 身份验证”复选框:
2025年06月11日
1 阅读
0 评论
0 点赞
1
2
3