TypechoJoeTheme

MetMan's Blog

网站页面
搜索到 80 篇与 的结果 ———只是一个默认分类
2024-08-10

TMOUT引起服务器断开连接解决方法

TMOUT引起服务器断开连接解决方法
服务器管理员为了系统安全性和减少开销,一般会设置一定时间内shell没有活动自动断开连接。但如果设置时间过短,查查资料/休息下,再回终端工作发现已经退出登录是挺烦恼的。那么如何绕过这个限制保持SSH会话长时间在线?TMOUT变量首先我们要确认管理员如何实现该功能的。原先我以为自动断开连接是通过SSH配置实现的,后来发现是通过shell的TMOUT环境变量实现的。管理员会在系统配置文件/etc/profile中设置TMOUT值,并将其设为只读变量。export TMOUT=1200 # 保持在线1200秒,不活动退出 readonly TMOUT普通用户没有权限unset这个只读变量,这样用户就不能关闭这个自动退出功能了。$ unset TMOUT -bash: unset: TMOUT: cannot unset: readonly variable解决方法方法一一种解决思路是保持shell繁忙,可以在~/.bashrc加上一段代码:# ~/.bashrc alias bs="while sleep 1000; do printf '\33[0n'; done&...
2024年08月10日
38 阅读
0 评论
2024-08-10

C面向对象

C面向对象
五星上将麦克阿瑟曾说过:“不是C不能OOP,而是C++更有性价比”。面向对象编程是一种编程思想,不和具体的语言工具绑定,但有些语言在语法层面支持使得面向对象编程实现更容易,比如C++,Python。我们常说C语言是一门面向过程的语言,但实际上也可以通过C结构体、函数指针来模拟实现面向对象编程。本文实例来自《嵌入式C语言自我修养》(王利涛编著)。类的模拟C语言中没有class关键字,但可以用结构体模拟一个类(C++中类定义也可以用struct),结构体成员类似C++类中属性,成员函数使用结构体中内嵌函数指针来模拟。// animal.c struct animal { int age; int weight; void (*fp)(void); //函数指针模拟成员函数 };类似于C++的类定义// animal.cpp class Animal { public: int age; int weight; void speak(void); //类方法 };如果需要模拟类的多个方法,一个结构体中需...
2024年08月10日
34 阅读
0 评论
2024-08-10

当Zotero遇见了GPT

当Zotero遇见了GPT
Zotero-gpt是一款Zotero插件,利用GPT对文献内容(包括摘要、PDF全文或选择文本)进行提问回答,提高文献阅读效率。安装与设置插件地址: https://github.com/MuiseDestiny/zotero-gpt 从官网下载.xpi格式插件,然后拖动到Zotero软件中即可安装。设置:进入“编辑->首选项->高级->编辑器”中搜索gpt进行设置,主要设置OpenAI API KEY,如果是中转key的话,还需要修改接口地址。使用通过快捷键ctrl+/调出zotero-gpt窗口,ESC退出插件使用。zotero-gpt通过comand tag实现具体功能。插件窗口中彩色小框表示Command tag,代表着一个个插件功能,可以自行设置。鼠标左键长按tag会显示tag内容。比如AskPDF这个tag,定义的内容如下图所示。其中触发词表示在提问框中提问时包含这些词语时,直接使用Enter键会触发对应的tag功能。AskPDF触发词包含本文、这篇文章、论文,你可以自定义其它词语。示例:如果提问的内容不包含触发词,也可以鼠标点击对应的tag手动执...
2024年08月10日
40 阅读
0 评论
2024-07-31

替代RM命令的防误删工具TRASH-D

替代RM命令的防误删工具TRASH-D
前言最近好不容易写了几千行代码,突然担心起会不会发生源代码文件误删掉这件事来^-^虽然使用了GIT进行管理,但没有上传到版本服务器,总感觉不保险,因此研究代替RM命令的工具,将文件“删除”放入到所谓的回收站,而不是彻底的删除,即使误删了也能轻松恢复。在网上找到几款软件,发现trash-cli和trash-d两款软件能够满足需求。但trash-cli对于HPC多分区存储环境不太友好,最终选择了trash-d这款工具。安装项目地址:https://github.com/rushsteve1/trash-d 官方在GITHUB中提供了rpm/deb等安装包。本人使用的机器平台是centos,没有管理员权限,只能安装在个人目录下,从rpm包中抽取可执行文件方式安装。$ rpm2cpio trash-d-19-x86_64.rpm | cpio -idmv $ mv usr trash-d $ vi ~/.bashrc export PATH=/path/to/trash-d/bin:$PATH export MANPATH=/path/to/trash-d/share/man:$MA...
2024年07月31日
87 阅读
0 评论
2024-07-31

Fortran面向对象 二

Fortran面向对象 二
面向对象编程核心概念包括封装、继承及多态。下面介绍Fortran的类继承及多态语法。Fortran类继承Fortran中类继承使用扩展(extends)关键字定义继承哪个父类。type mytype integer :: value end type mytype ! extend from mytype type, extends(mytype) :: mynewtype real :: extra end type mynewtype新的类mynewtype除了继承mytype中成员value,还定义了新成员extra。module mytypes implicit none type mytype integer :: value contains ! => 过程别名 procedure,public :: write => write_mytype end type mytype type, extends(mytype) :: mynewtype real :: extra end ty...
2024年07月31日
34 阅读
0 评论
2024-07-31

Fortran面向对象

Fortran面向对象
从Fortran 2003开始标准加强了面向对象(OOP)语法支持,通过使用模块(module)及复用派生类型关键字(type)定义Fortran的类。Fortran主要参照C++ OOP模型进行设计,两者对比如下表所示。 C++Fortran成员在类中定义在'type'中定义方法在类中定义在'type'中声明interface;在module中实现构造函数default或explicit没有对象本身this第一个参数对象方法引用点操作符'.’%操作符Fortran类组织方式在模块文件定义类(module ...type ...contains ... end type ...contains ... end module)type...contains...end type定义类(包括数据成员及类方法声明)实际方法定义在模块contains部分实现类方法的第一个参数是对象本身module A type B ! data members integer :: c contains procedure :: d end type cont...
2024年07月31日
36 阅读
0 评论
2024-07-31

Wgrib2提取小区域数据

Wgrib2提取小区域数据
对于GRIB2数据处理,常见的一个需求是提取全场区域内一个子区域数据。wgrib2提供了几种处理方法。GRIB2数据提取方法wgrib2主要通过两种方法限制提取范围,一是根据格点索引范围;二是通过经纬度范围进行指定。-ijbox根据格点索引范围截取数据区域。-ijbox out X..Z,A grid values in bounding box X=i1:i2[:di] Y=j1:j2[:dj] Z=file A=[bin|text|spread]该选项需要四个参数,第一个是X方向索引范围:起始i1,结束i2,可选步长间隔di;第二个是Y方向范围,用法类似;第三个是写出文件名;第四个参数指定生成文件格式,支持bin/text/spread。-lola根据经纬度范围截取数据区域。-lola out X..Z,A lon-lat grid values X=lon0:nlon:dlon Y=lat0:nlat:dlat Z=file A=[bin|text|spread|grib]该选项需要四个参数,第一个是经度范围:起始经度lon0,...
2024年07月31日
41 阅读
0 评论
2024-07-31

Fortran BLOCK结构

Fortran BLOCK结构
Fortran 2008标准提出了BLOCK语法结构,其作用是创建一个独立的命名空间,在里面可以定义一个可以包含声明的可执行代码块。BLOCK语法如下:[block_name:] BLOCK ! declartion ! executable statements END BLOCK [block_name]其中block_name可选,对block结构起一个名字可以让代码更加清晰。BLOCK结构中声明对象包括变量、type定义、外部过程等,这些声明的对象作用域(生命周期)只限于该BLCOK结构,不会影响到BLOCK外的变量,这意味着你可以在BLOCK内声明一个与外部相同的变量名,在BLOCK内声明的变量如与外部变量名相同,外部变量会暂时被”抑制“。program main implicit none integer :: x = 10 block integer :: x x = 4 print*, "Inside a block, x=",x end block print*, "Out...
2024年07月31日
33 阅读
0 评论

互动读者

标签云

最新回复

暂无回复

登录
X
用户名
密码