MobaXterm

最近喜欢轻功了常常飞檐走壁的 但是要玩轻功得有好鞋子呀!一双破鞋再快的脚也跑不快。
plink这双鞋子只能算一般不是很快不过我最近找到一个不错的鞋子呵呵。那就是MobaXterm
MobaXterm是一个封装在一个单一的EXE文件的UNIX命令(其实就是一个用cygwin配置好的openssh),具有如下特点:
免费X服务器完全配置(在Xorg)
基于选项卡的终端与抗锯齿字体和宏支持
轻松显示出口从任何远程主机
在OpenSSH X11转发能力
没有安装程序,现在你可以开始从一个USB记忆棒
轻巧便携的应用程序,打包在一个单独的可执行文件
下载MobaXterm
官方网站: http://mobaxterm.mobatek.net
下载地址: http://mobaxterm.mobatek.net/MobaXterm_v3.2.zip
下载后解压,里面有两个文件,只要MobaXterm.exe文件就可以了,然后双击运行MobaXterm.exe文件。
配置MobaXterm
方法一、无需任何设置,像在Linux下一样直接命令行
跟我学轻功,强大、高速SSH连接器MobaXterm使用 - 卡饭论坛 - 1.jpg
打开 MobaXterm可以看到一个类似CMD的窗口只需要在后面直接输入命令即可
命令:ssh -qTfnNg -D 7070 cfdda00_test@173.192.165.136 -p 22
                              本地socks端口 用户名 服务器地址         服务器端口
跟我学轻功,强大、高速SSH连接器MobaXterm使用 - 卡饭论坛 - 2.jpg
之后回车
跟我学轻功,强大、高速SSH连接器MobaXterm使用 - 卡饭论坛 - 3.jpg
一会要求输入密码好啦那就输入呗。
跟我学轻功,强大、高速SSH连接器MobaXterm使用 - 卡饭论坛 - 4.jpg
一会提示是否保存密码,如果用户是长期使用的可以保存。
跟我学轻功,强大、高速SSH连接器MobaXterm使用 - 卡饭论坛 - 5.jpg
一会返回输入状态这时高速SSH就连接上了。
方法二、配置MobaXterm书签
MobaXterm还提供了书签功能,我们可以配置好使用时只需一点就可以了。
点bookmarks,下的manage my bookmarks

跟我学轻功,强大、高速SSH连接器MobaXterm使用 - 卡饭论坛 - 6.jpg
打开书签配置窗口点create
跟我学轻功,强大、高速SSH连接器MobaXterm使用 - 卡饭论坛 - 7.jpg

Bookmark name是书签名可以随便起,Bookmark type不用管 Remete hostname是服务器地址 Port是服务器端口
User name是用户名 Extra options是附件参数“-qTfnNg -D 7070”不用改 7070是本地socks端口
跟我学轻功,强大、高速SSH连接器MobaXterm使用 - 卡饭论坛 - 8.jpg
之后点OK,使用时只需点书签表情选配置名即可。
跟我学轻功,强大、高速SSH连接器MobaXterm使用 - 卡饭论坛 - 9.jpg
之后提示输入密码
跟我学轻功,强大、高速SSH连接器MobaXterm使用 - 卡饭论坛 - 10.jpg
提示是否保存密码。
跟我学轻功,强大、高速SSH连接器MobaXterm使用 - 卡饭论坛 - 11.jpg
到这里时就连接完成了
跟我学轻功,强大、高速SSH连接器MobaXterm使用 - 卡饭论坛 - 12.jpg
其实配置会保存在MobaXterm下的MobaXterm.ini里只需修改MobaXterm.ini文件就可以修改书签配置。
跟我学轻功,强大、高速SSH连接器MobaXterm使用 - 卡饭论坛 - 13.jpg
到这里这双高速鞋子就介绍完了,希望大家早日练成草上飞的轻功。
神马?没有SSH账号? 看这里撒 http://bbs.kafan.cn/thread-1044581-1-1.html
### 解决LVGL框架中Image控件重复显示或定义问题 在处理LVGL框架中的图像控件时,如果遇到重复显示或定义的问题,通常是因为多个地方加载了相同的图片资源或是多次初始化同一个图像对象。为了有效解决问题并优化代码结构,建议采取以下措施: #### 1. 图像缓存机制 通过实现简单的内存管理策略来避免不必要的重新加载操作。可以在应用程序启动初期一次性读取所需的所有位图文件,并将其存储在一个全局变量列表里供后续调用。 ```c static lv_img_dsc_t *img_cache[LAST_IMAGE_ID]; // 定义一个静态数组保存已加载过的图片描述符指针 // 加载函数,在实际项目中应加入错误处理逻辑 lv_img_dsc_t* load_image_from_file(const char *filename){ uint32_t size; void *data = read_binary_file(filename, &size); if (!find_in_cache(img_cache, filename)){ add_to_cache(img_cache, data, size, filename); } return get_cached_entry(img_cache, filename)->dsc_ptr; } ``` 此方法有助于减少磁盘IO次数,提高响应速度的同时也降低了功耗[^1]。 #### 2. 使用唯一标识符 确保每次创建新的`lv_img`实例之前都检查是否存在相同ID的对象正在被使用。可以通过维护一张映射表记录已经存在的图像及其对应的句柄,从而防止同一张图片在同一界面内多次实例化。 ```c typedef struct { const char *name; lv_obj_t *handle; } img_map_item; static img_map_item image_handles[MAX_IMAGES]; bool is_duplicate(const char *image_name){ for(int i=0;i<MAX_IMAGES;++i){ if(image_handles[i].name && strcmp(image_handles[i].name,image_name)==0){ return true; } } return false; } void register_handle(const char *image_name, lv_obj_t *obj){ int idx=-1; for(int i=0;(idx==-1)&&i<MAX_IMAGES;++i){ if(!image_handles[i].name){idx=i;} } if(idx>=0){ image_handles[idx]=(img_map_item){.name=image_name,.handle=obj}; }else{ printf("Warning: Maximum number of images reached.\n"); } } ``` 上述代码片段展示了如何利用哈希表或其他数据结构追踪当前活动的图像对象,进而阻止重复创建同名项[^2]。 #### 3. 清理不再使用的资源 定期清理那些长时间未更新或者超出可见范围之外的图形组件是非常重要的。这不仅能够释放宝贵的RAM空间,还可以简化DOM树结构以便更高效地渲染其他重要元素。 ```c void cleanup_unused_images(lv_task_param_t param){ static time_t last_cleanup_time = 0; time_t now = time(NULL); if(difftime(now,last_cleanup_time)>CLEANUP_INTERVAL_SECONDS){ last_cleanup_time = now; for(int i=0;i<MAX_IMAGES;++i){ if(is_hidden_or_outside_viewport(image_handles[i].handle)){ destroy_and_remove_from_list(&image_handles[i]); } } } } ``` 这段伪代码说明了一个定时器回调函数的工作原理,该函数会周期性地遍历所有注册过的图像节点,并移除符合条件的目标[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值