因为近期涉及到预报系统部署和后处理开发的任务,为了和预报模式更好的兼容,一些数据处理工作就交给Fortran来做了。把Fortran和C的NetCDF库API部分内容做了一个整理。...NetCDF库提供了两种语言的函数API,一种是C,另一种是Fortran,其中又分为F77和F90两种方式的接口。...通过函数开头的字符可以区分函数接口,C语言的函数接口以nc_开头,F77函数接口以nf_开头,F90函数接口以nf90_开头。...错误处理函数 无论是C,F77还是F90的API,如果函数成功执行,都会返回0,否则返回对应错误的代码,然后可使用nc_strerror/nf_strerror等函数将错误代码转换为字符串信息。...nc文件函数•nf_create:F77创建新nc文件函数•nf90_create:F90创建新nc文件函数 定义维度变量 使用如下函数定义维度: •nc_def_dim•nf_def_dim•nf90
忽略二进制文件(比如pdf,image,coredumps)和备份文件(比如foo~,*.swp) 在搜索结果中打印行号,有助于找到目标代码 能搜索特定文件类型(比如Perl,C++,Makefile...),该文件类型可以有多种文件后缀 高亮搜索结果 支持Perl的高级正则表达式,比grep所使用GNU正则表达式更有表现力。...ack的速度只要表现在它的内置的文件类型过滤器。在搜索过程中,ack维持着认可的文件类型的列表,同时跳过未知或不必要的文件类型。它同样避免检查多余的元数据目录。.../etc 除了temp目录,在所有目录搜索use单词 > ack use --ignore-dir=temp 只搜索包含'main'单词的Python文件,然后通过文件名把搜索结果整合在一起,打印每个文件对应的搜索结果...xml/ --[no]yaml .yaml .yml 获取包含CFLAG关键字的Makefile的文件名 > ack --make CFLAG ack查找my.cnf文件 >
忽略二进制文件(比如pdf,image,coredumps)和备份文件(比如foo~,*.swp) 在搜索结果中打印行号,有助于找到目标代码 能搜索特定文件类型(比如Perl,C++,Makefile)...,该文件类型可以有多种文件后缀 高亮搜索结果 支持Perl的高级正则表达式,比grep所使用GNU正则表达式更有表现力。...ack的速度只要表现在它的内置的文件类型过滤器。在搜索过程中,ack维持着认可的文件类型的列表,同时跳过未知或不必要的文件类型。它同样避免检查多余的元数据目录。.../etc 除了temp目录,在所有目录搜索use单词 > ack use --ignore-dir=temp 只搜索包含'main'单词的Python文件,然后通过文件名把搜索结果整合在一起,打印每个文件对应的搜索结果...xml/ --[no]yaml .yaml .yml 获取包含CFLAG关键字的Makefile的文件名 > ack --make CFLAG ack查找my.cnf文件 > ack
,比如.svn,.git,CSV等目录 忽略二进制文件(比如pdf,image,coredumps)和备份文件(比如foo~,*.swp) 在搜索结果中打印行号,有助于找到目标代码 能搜索特定文件类型(...比如Perl,C++,Makefile),该文件类型可以有多种文件后缀 高亮搜索结果 支持Perl的高级正则表达式,比grep所使用GNU正则表达式更有表现力。...ack的速度只要表现在它的内置的文件类型过滤器。在搜索过程中,ack维持着认可的文件类型的列表,同时跳过未知或不必要的文件类型。它同样避免检查多余的元数据目录。.../etc 除了temp目录,在所有目录搜索use单词 > ack use --ignore-dir=temp 只搜索包含'main'单词的Python文件,然后通过文件名把搜索结果整合在一起,打印每个文件对应的搜索结果...xml/ --[no]yaml .yaml .yml 获取包含CFLAG关键字的Makefile的文件名 > ack --make CFLAG ack查找my.cnf文件 > ack
ctags 正是用来应对此种需求的 ctags 可以在源码的基础上生成一份索引文件(标记体系),然后提供给其它编辑器使用,以简单快速地定位这些被索引的对象和条目 ctags 目前可以支持多种语言,可以参考...PHP Python REXX Ruby Scheme Sh SLang SML SQL Tcl Tex Vera Verilog VHDL Vim YACC [root@h102 ~]# ---- 文件后缀与语言的映射...*.f90 *.f95 *.F *.FOR *.FTN *.F77 *.F90 *.F95 HTML *.htm *.html Java *.java JavaScript *.js...YACC *.y [root@h102 ~]# Tip: 不过这个映射可以使用 --langmap 进行修改 如果不使用 −−language−force 进行语言指定,ctags 会根据默认的映射来解析带后缀的源文件...,如果此源文件后缀没有包含在映射列表里,就会读取文件的第一行,包含 #!
当无子目录名时,列出当前目录 中的文件名和子目录名。 选项:-a列出所有文件,包括以点开头的隐含文件。...功能:显示比较两文件不同处的信息 选项:-l 给出两文件不同的字节数 -s 不显示两文件的不同处,给出比较结果 注释: 例如:% cmp file1 file2 3.19比较文件共同处...选项:-c 建立一个新的档案文件 -x 从档案文件中读取文件 -v 显示处理文件的信息 -f 指定档案文件名,缺省时为磁带机即/dev/rmt/0 -t 列出存档文件的信息 注释:...binary 以二进制方式进行传输 get/mget 从远程机取一个或多个文件 put/mput 向远程机送一个或多个文件 prompt 打开或关闭多个文件传送时的交互提示 close...-O3 三级优化 注释:FORTRAN77编译器参考手册可用命令man f77查看 例如:% f77 -c test.f 8.4 FORTRAN90程序编译 命令:f90 格式
一、什么是组合模式 组合模式是一种结构型设计模式,它允许你将对象组合成树状结构,并以递归方式处理这些对象。组合模式使得客户端可以以统一的方式处理单个对象和组合对象。...希望客户端以统一的方式处理单个对象和组合对象。 需要对对象实施一组操作,无论是叶节点还是容器节点。 一个典型的组合模式的例子是文件系统。...输出结果将会是: 容器节点执行操作: 叶节点 Leaf 1 执行操作 叶节点 Leaf 2 执行操作 这个示例演示了使用组合模式来处理组件的部分-整体结构,以及如何以统一的方式处理单个对象和组合对象。...表示对象的部分-整体层次结构:当需要表示对象的层次结构,并且希望以统一的方式处理单个对象和组合对象时,可以使用组合模式。...例如,文件系统中的文件夹可以包含其他文件夹和文件,而文件夹和文件都可以被视为节点。 需要对对象实施一组操作:当需要对一个组合对象和其中的子对象实施一组操作时,可以使用组合模式。
mklink 的选项有很多种,但你可能在其他文章中难以找到对这些不同选项的不同效果和使用限制的准确和统一描述。本文将介绍 Windows 系统中所有的链接方式,它们的优缺点、使用条件和坑。...开始就有了 NTFS 重解析点(Reparse Point),更早的 Windows 95 就有了快捷方式(Shortcut),再往前到 Windows 3.5 还有硬链接(Hard Link),他们都能实现给你不同的路径访问同一个文件或文件夹的功能...快捷方式的本质是一个 lnk 后缀的文件,这个文件里面指向了如何打开目标文件或文件夹的一些参数,于是当在文件资源管理器中打开快捷方式时,就直接打开了目标文件或文件夹(当然,启动一个程序可能是大多数用法)...,可让不同的路径对应同一个文件的数据。...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。
Palace是一款开源的大规模计算电磁学软件包,由亚马逊云端业务实验室(AWS Lab)支持。功能丰富,同时能够在不同的高性能硬件上运行,软件上支持OpenMP, MPI和GPU并行计算。...Palace提供了CMake的Superbuild编译方式,会自动下载全部的所需依赖库并完全编译。在Linux下可以顺利编译。...以F77程序为主,无需依赖PETSc,可以独立编译。GSLIB:用于高阶谱单元的插值计算,可选。其中,SuperLU_DIST,STRUMPACK,MUMPS三个可选的直接线代求解器至少要有一个。...建立项目文件建立两个项目,分别是静态库项目libpalace,和可执行文件项目palace。libpalace包含所有的头文件和源文件。...项目设置添加外部头文件和预处理宏命令的方式,与libpalace几乎一样,这里不在赘述。
君子生非异也,善假于物也 -- 荀子 从 Anaconda 官文网站 https://www.anaconda.com/download 下载操作系统对就的安装文件,选择 Python 3.7...Anaconda 默认安装了许多有用的数据科学工具和 Python 库。可以直接测试 sklearn。...Windows 下载地址: https://www.anaconda.com/download/#windows 下载后缀为 exe 格式的文件,下载完成后双击开始安装,一直按 Next 即可。 ?...Cython: 0.29.2 pandas: 0.23.4 macOS 下载地址: https://www.anaconda.com/download/#macos 下载后缀为 pkg 格式的文件...Cython: 0.29.2 pandas: 0.23.4 Linux 下载地址:https://www.anaconda.com/download/#linux 下载后缀为 sh 格式的文件
1.peacockv插件scode不同的窗口样式和颜色 插件搜索: 使用快捷键 Ctrl+Shift+P 可以快速调出 Command Palette,输入 "Peacock:" 我们选择 "Peacock...: Change to a Favorite Color",选择自己喜欢的颜色 1.1 启动窗口自动设置颜色: 设置----插件扩展--peacock----"peacock.surpriseMeOnStartup...效果: 2.设置打开多个窗口 打开:settings.json 进行设置 添加 “workbench.editor.showTabs”:true,之后重启vscode即可 或者 3. md文件打开方式和预览以及插入目录...3.1md文件打开方式 安装下面两个插件: 预览: 效果: 3.2 创建目录 插件下载: Auto Markdown TOC 将光标放在文档中要插入目录列表的位置; 按快捷键 ctrl +...+ p ,或 鼠标右键菜单,调出命令面板; 在命令面板中,搜索并选择:Markdown TOC: Insert/Update ,将会在光标位置插入目录,并在每个标题下面增加锚点,便于目录链接到每个标题的行内跳转
这个机制就是:不论是单一语言模块之间的 链接还是不同语言之间的混合链接,本质目的都是要链接器能找到定义于其他模块中的符号,如果全部找到,则链接成功,生成可执行的二进制文件。...gcc还会因为不同的后缀名采用不同的编译器进行编译具体参见man 或者info,因为他是compiler collection嘛) 不好意思,绕了一大圈。...前面说了gcc是compiler collection,它会根据文件后缀来判断是什么语言写成的,从而调用相应的编译器来编译。.f的文件它自然会用g77或者f77之类的来编译。...( objdum的功能比nm更强大) 有很多东西很基础我还罗嗦了很久,让大家见笑了:) 还有一件事,那就是我这里链接采用了gcc -l的方式,更基本的是ld的方式,只要你知道链接哪些库,链接的顺序如何即可...此例中事实上实际的编译器是f77,我机器上没有f90。
在原始布局中,文件在 src 文件夹下生成。我们不喜欢这种方法,在我们的示例 CMake 移植中将采取不同的做法:这些文件将在构建目录中生成。...在src/configure.ac中,我们可以检查需要执行哪些平台检查以设置相应的预处理器定义。...实现多步骤测试 在src/testdir/Makefile中的目标表明 Vim 代码以多步骤测试运行:首先,vim可执行文件处理一个脚本并生成一个输出文件,然后在第二步中,输出文件与参考文件进行比较,如果这些文件没有差异...临时文件随后在第三步中被删除。这可能无法以可移植的方式适应单个add_test命令,因为add_test只能执行一个命令。...在 Fortran 项目中,注意后缀大小写:需要预处理的 Fortran 源文件应具有大写的.F90后缀。不需要预处理的源文件应具有小写的.f90后缀。
我们可以通过下面的配置方式,尝试性体验下,至少linux/macOS下console和static library程序还是可以跑的。...msvc的头文件依赖通常需要解析/showIncludes的输出内容,提取里面的includes文件列表来处理依赖编译问题,但是呢,cl.exe对这个的输出做的很不好,includes信息和编译输出是混在一起的...对构建工具处理依赖解析非常不友好,尤其是多语言环境下,如何判断是includes,需要通过前置的Note: including file:字符串来判断提取,但中文下,又是注意: 包含文件:, 如果换成日语环境...而新版本中,xmake通过新增内置的core.base.json模块处理json解析,很方便地对新的头文件依赖数据进行解析和支持,优先使用此模式(如果cl是新版本支持的话,老版本cl还是使用/showIncludes...Xcode插件生成支持 目前,我们还没有时间去自己实现xcode工程的生成,但不代表不支持,因为xmake支持生成cmakelists.txt文件,而cmake是支持xcode工程文件生成的,在官方还没有实现之前
相比商业软件来说,开源的这一点上就让人很羡慕,商业软件我们总是使用各种工具和底层原理去反推,探测,但是离代码还是有一定的距离。当然商业有商业的好,开源有开源的乐,不能一概而论。...安装的详细步骤我们等下细说,目前网站上看到的绝大多数源码安装都是这种方式。 Use a MySQL development tree,这种方式是通过开发源码树的方式来编译部署。...CPP C/C++预处理器。默认是"$(CC) -E"。 FC Fortran编译器。默认是"f77"。 PC Pascal语言编译器。默认是"pc"。 YACC Yacc文法分析器。...:36 Windows.cmake 我们开始安装,值得一提的是,我是打算同服务器上安装多个版本,所以就在/usr下指定了不同的安装目录,数据目录。...值得一提的是,如果因为空间问题异常退出,还是最好删除CMakeCache.txt文件,重新cmake一遍,然后make,make install 创建数据库 这个阶段的工作就很常规了,我们简化一下,
Sass 是采用的Ruby语言编写的一款css预处理语言,它诞生于2007年,是最早成熟css预处理语言。最初它是为了配合haml而设计的,因此有着和haml一样的缩进式风格。...Sass 和 SCSS 其实是同一种东西,我们平时都称之为 Sass,两者之间不同之处有以下两点: 文件扩展名不同,Sass 是以“.sass”后缀为扩展名,而 SCSS 是以“.scss”后缀为扩展名...语法书写方式不同,Sass 是以严格的缩进式语法规则来书写,不带大括号({})和分号(;),而 SCSS 的语法书写和我们的 CSS 语法书写方式非常类似。...; 另一种就是我们这里使用的scss文件,这种和我们平时写的css文件格式差不多,使用大括号和分号。...产生的效果就是给box2这个类一条1像素宽、实心且颜色值为#F90的边框。 在声明变量时,变量值也可以引用其他变量。当你通过粒度区分,为不同的值取不同名字时,这相当有用。
,却在数组这种适用于科学计算(矩阵线性代数)上花了不少设计,导致 F77 array(*) 与 F90 array(:) 这两种风格不同,前者与 C 兼容,实际上是地址引用(指针),后者则是 Fortran...和target,function语句写起来都很长,效率挺低的,字符串能力弱是刻在基因里的。...当然了,Fortran 与 C 函数可以通过指针(地址)传递数组,Fortran 与 Fortran 函数传递的方式,肯定也包括以上三种,以及新范式(:)的传递方式。...从 Fortran 读取 C 本地数组的方式 1: !...从 Fortran 读取 C 本地数组的方式 2: ! 地址:2205703485936 !
、操作系统和编译器之间移植,但有时源代码并不完全可移植;例如,当使用依赖于供应商的扩展时,我们可能会发现有必要根据平台以略有不同的方式配置和/或构建代码。...但是请注意,CMAKE__COMPILER_ID并不保证为所有编译器或语言定义。 对于应该被预处理的 Fortran 代码,使用.F90后缀,对于不应该被预处理的代码,使用.f90后缀。...非常建议以避免明确硬编码限制的方式编程,但您可能处于需要容纳硬编码限制的代码配置与 CMake 的情况,在本菜谱中,我们希望讨论检测宿主处理器架构的选项。...它将仅使用 CMake,完全摆脱预处理器,代价是每个情况都有一个不同的源文件,然后使用target_sources CMake 命令将其设置为可执行目标arch-dependent的源文件: add_executable...不同供应商在不同架构和并行环境下打包其库的方式存在很大差异。FindBLAS.cmake和FindLAPACK.cmake很可能无法在所有可能的情况下定位现有的库。
在 C++ 的跨平台开发中,处理不同操作系统和编译器之间的细微差异是非常重要的。以下是一些处理差异的技巧: 使用条件编译:使用预处理指令,根据不同的操作系统和编译器来编写不同的代码。...:尽可能使用标准库和跨平台框架来处理不同平台之间的差异,这些库和框架已经处理了很多跨平台问题。...避免使用非标准特性:尽量避免使用不同操作系统和编译器之间的非标准特性,以避免出现不可预测的结果。 分离平台特定代码:将平台特定的代码分离到独立的文件或模块中,这样可以更容易维护和管理。...使用工具和库来简化跨平台开发:使用像 CMake、Boost 和 Qt 等跨平台工具和库,可以帮助处理平台差异并简化开发流程。...总而言之,处理不同操作系统和编译器之间的细微差异需要深入了解每个平台的特性,并采取适当的措施来确保程序在不同平台上的稳定性和高效性。
1.1 变量声明 和 使用 sass变量的声明和css属性的声明很像: // 定义变量名 值是属性值 下面写样式的时候可以直接用变量名替代 $highlight-color: #F90; $nav-color...sass在输出css时会帮你把这些嵌套规则处理好,避免你的重复书写。...2.1 父选择器的标识符&; 最常见的一种情况是当你为链接之类的元素写:hover这种伪类时,你并不希望以后代选择器的方式连接。...需要注意的是,变量(如上面的$radius)可以在mixin内部使用,也可以在调用mixin时传递。此外,mixin还支持默认参数和可变参数,能够更加灵活地应对不同情况。...不会出现在编译之后的文件里面 更多关于sass 的学习可以到中文官方文档里面进行学习 Sass世界上最成熟、稳定和强大的CSS扩展语言 | Sass中文网
领取专属 10元无门槛券
手把手带您无忧上云