读者依据本身索要接纳适合版本及阳台下载,L

2019-07-14 作者:小鱼儿玄机30码姐妹   |   浏览(179)

Ubuntu16.04上安装SU(Seismic Unix)的基本步骤,ubuntu16.04seismic

Seismic Unix(SU)是科罗拉多矿业学院的波场研究中心(CWP)开发的一款源地震数据处理软件,当前很多学者在Linux下用SU做地震数据的处理与编程。我本人是研究FWI的,也在Linux下面用SU做编程来进行地震勘探的科研。分享一下在Linux下面安装SU的一点经验。

操作系统:64位的Ubuntu16.04.3;机器:工作站(DELL)

SU41R3:下载地址:

基本安装步骤:

(1)预装 8个软件包 个软件包 。
在依次 终端中输入如下命令:
sudo apt-get install build-essential
sudo apt-get install libx11-dev
sudo apt-get install libxt-dev
sudo apt-get install freeglut3

sudo apt-get install freeglut3-dev 

sudo apt-get install libxmu-dev

sudo apt-get install libxi-dev
sudo apt-get install gfortran
(2)准备工作 准备工作 。
①添加 环境变量,即 将以下两句添加进入 .bashrc文件
export CWPROOT=/home/yourname/su
export PATH=$PATH:/home/yourname/su/bin
注意 ,这里的 /home/yourname/su为你下载并解压 su所在的目录 。添加保存退出后 ,然执行命令: source .bashrc。

②本人安装的 SU版本是 cwp_su_all_41R3。将 下载的源文件拷贝到 /home/yourname/su,解压后 ,解压后 会出现了一个新 的文件夹“ src”。
进入 该文件夹 ,找到 Makefile.config 这个文件, 对其做如下修改 :

 a.将 XDRFLAG = 句激活(即去掉 #小鱼儿玄机30码姐妹,)。 

b.将 XDRFLAG = -DSUXDR -D_BSD_SOURCE 句屏蔽 

c.将 OPTF = -static -fno-automatic -fno-second-underscore 句屏蔽。 

d.将 FC=g77, FC=f77,FC=gfortran 屏蔽掉,激活 屏蔽掉,激活 FC=ifort

(3)安装
在终端中 依次 执行 以下 命令 :
make install
make xtinstall
make finstall
make mglinstall
安装完后 当前 目录下 会出现 bin,include,lib等文件夹 。

(4)测试。 测试。
安装 完毕, 执行 suplane|suxwigb &,出现下图的效果表示安装成功。

以上仅是个人的一点点小经验,希望对大家有帮助。

查看评论

Unix)的基本步骤,ubuntu16.04seismic Seismic Unix(SU)是科罗拉多矿业学院的波场研究中心(CWP)开发的一款源地震数据...

OpenCV3.2.0 VS2017开发环境配置,opencv3.2.0vs2017

全栈必备Linux 基础,必备linux基础


Linux 几乎无处不在,不论是服务器构建,还是客户端开发,操作系统的基础技能对全栈来说都是必备的。

jvm系列(九):如何优化Java GC「译」,jvm

本文由CrowHawk翻译,地址:如何优化Java GC「译」,是Java GC调优的经典佳作。

Sangmin Lee发表在Cubrid上的”Become a Java GC Expert”系列文章的第三篇《How to Tune Java Garbage Collection》,本文的作者是韩国人,写在JDK 1.8发布之前,虽然有些地方有些许过时,但整体内容还是非常有价值的。译者此前也看到有人翻译了本文,发现其中有许多错漏生硬和语焉不详之处,因此决定自己翻译一份,供大家分享。

本文是“成为Java GC专家”系列文章的第三篇,在系列的第一篇文章《理解Java GC》中,我们了解到了不同GC算法的执行过程、GC的工作原理、新生代和老年代的概念、JDK 7中你需要了解的5种GC类型以及每一种GC对性能的影响。

在系列的第二篇文章《如何监控Java GC》中笔者已经解释了JVM进行实时GC的原理、监控GC的方法以及可以使这一过程更加迅速高效的工具。

在第三篇文章中,笔者将基于实际生产环境中的案例,介绍几个GC优化的最佳参数设置。在此我们假设你已经理解了本系列前两篇文章的内容,因此为了更深入的理解本文所讲内容,我建议你在阅读本篇文章之前先仔细阅读这两篇文章。

第一部分:OpenCV3.2.0的下载

OpenCV官方下载地址:

本人选择opencv3.2.0基于Windows平台。读者根据自己需要选择合适版本及平台下载。

下载完成后,双击进行解压

解压即是安装OpenCV库的过程,读者自己选择好安装路径
【建议】在英文路径下,不用有中文和空格

系统的选择

Linux发行版本可以大体分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者以著名的Redhat(RHEL)为代表,后者以Debian为代表。

Redhat,应该称为Redhat系列,包括RHEL、Fedora、CentOS(RHEL的社区克隆版本,免费)。Ubuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian加强而来,一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的Linux桌面系统。Ubuntu社区认为实用性和创新性高于一切。

如果你需要一个比较稳定的服务器系统而已,那么最好的选择就是CentOS了,安装完成后,经过简单的配置就能提供非常稳定的服务了。但是对云环境而言,unbantu也许不错,hadoop最早就是在ubantu上开发的。

GC优化是必要的吗?

或者更准确地说,GC优化对Java基础服务来说是必要的吗?答案是否定的,事实上GC优化对Java基础服务来说在有些场合是可以省去的,但前提是这些正在运行的Java系统,必须包含以下参数或行为:

  • 内存大小已经通过-Xms-Xmx参数指定过
  • 运行在server模式下(使用-server参数)
  • 系统中没有残留超时日志之类的错误日志

换句话说,如果你在运行时没有手动设置内存大小并且打印出了过多的超时日志,那你就需要对系统进行GC优化。

不过你需要时刻谨记一句话:GC tuning is the last task to be done.

现在来想一想GC优化的最根本原因,垃圾收集器的工作就是清除Java创建的对象,垃圾收集器需要清理的对象数量以及要执行的GC数量均取决于已创建的对象数量。因此,为了使你的系统在GC上表现良好,首先需要减少创建对象的数量。

俗话说“冰冻三尺非一日之寒”,我们在编码时要首先要把下面这些小细节做好,否则一些琐碎的不良代码累积起来将让GC的工作变得繁重而难于管理:

  • 使用StringBuilderStringBuffer来代替String
  • 尽量少输出日志

尽管如此,仍然会有我们束手无策的情况。XML和JSON解析过程往往占用了最多的内存,即使我们已经尽可能地少用String、少输出日志,仍然会有大量的临时内存(大约10-100MB)被用来解析XML或JSON文件,但我们又很难弃用XML和JSON。在此,你只需要知道这一过程会占据大量内存即可。

如果在经过几次重复的优化后应用程序的内存用量情况有所改善,那么久可以启动GC优化了。

笔者总结了GC优化的两个目的:

  1. 将进入老年代的对象数量降到最低
  2. 减少Full GC的执行时间

第二部分:配置Path系统环境变量

此电脑-右键“属性”-高级系统设置

找到Path进行编辑
把之前解压(安装)好的OpenCV路径下的bin路径添加到Path系统环境变量中。

【建议】重启电脑

体系结构

了解体系结构,可以有一个较好的方向感。Linux 有kernel和user两种模式,内核、shell和文件系统一起形成了基本的操作系统结构,Linux 内核由如下几部分组成:内存管理、进程管理、设备驱动程序、文件系统和网络管理等。

=

将进入老年代的对象数量降到最低

除了可以在JDK 7及更高版本中使用的G1收集器以外,其他分代GC都是由Oracle JVM提供的。关于分代GC,就是对象在Eden区被创建,随后被转移到Survivor区,在此之后剩余的对象会被转入老年代。也有一些对象由于占用内存过大,在Eden区被创建后会直接被传入老年代。老年代GC相对来说会比新生代GC更耗时,因此,减少进入老年代的对象数量可以显著降低Full GC的频率。你可能会以为减少进入老年代的对象数量意味着把它们留在新生代,事实正好相反,新生代内存的大小是可以调节的。

第三部分:VS2017中配置OpenCV

Visual Studio2017官方下载地址:

选择社区版就行,安装过程很简单,一直下一步就行。

1.创建工程
快捷键:ctrl shift n

具体不会用Visual Studio创建工程的请自行百度

2.创建.cpp文件
快捷键:ctrl shift a

本人是在Debug x64下配置

3.打开属性管理器:视图=》其他窗口=》属性管理器

Debug x64右键“属性”

4.添加包含目录
vc 目录=》包含目录=》选择编辑

添加。 点图中箭头指的图标,把以下路径添加
(P.S.即之前解压(安装)好的OpenCV路径下)

5.添加库目录
VC 目录=》库目录
(P.S.即之前解压(安装)好的OpenCV路径下)

6.添加附加依赖项
链接器=》输入=》附加依赖项
手动敲入 opencv_world320d.lib
【注意】
1、320对应OpenCV3.2.0。其他版本请去网上找对应自己的版本进行编写添加。
2、后缀d代表Debug模式,如果是Release模式去掉d。依个人情况选择Debug模式或者Release模式。

到此,opencv3.2.0与vs2017开发环境已配置成功。

Linux内核

了解linux内核,可以充分利用资源,在系统调优时有目标感。

Linux 将内存划分为容易处理的“内存页”,提供了对 4KB 缓冲区的抽象,例如 slab 分配器。进程实际是某特定应用程序的一个运行实体,进程调度控制进程对CPU的访问。Linux 中常见的进程间通讯机制有信号、管道、共享内存、信号量和套接字等。 内核通过 SCI 提供了一个API来创建一个新进程(fork、exec 或 POSⅨ),停止进程(kill、exit),并在它们之间进行通信和同步(signal 或者 POSⅨ 机制)。

Linux 操作系统将独立的文件系统组合成了一个层次化的树形结构,并且由一个单独的实体代表这一文件系统。由于 Linux 支持许多不同的文件系统,并且将它们组织成了一个统一的虚拟文件系统.设备驱动程序提供一组操作系统可理解的抽象接口完成和操作系统之间的交互,而与硬件相关的具体操作细节由设备驱动程序完成。Linux内核的网络部分由BSD套接字、网络协议层和网络设备驱动程序组成。 网络设备驱动程序负责与硬件设备通讯,每一种可能的硬件设备都有相应的设备驱动程序。

=

降低Full GC的时间

Full GC的执行时间比Minor GC要长很多,因此,如果在Full GC上花费过多的时间(超过1s),将可能出现超时错误。

  • 如果通过减小老年代内存来减少Full GC时间,可能会引起OutOfMemoryError或者导致Full GC的频率升高。
  • 另外,如果通过增加老年代内存来降低Full GC的频率,Full GC的时间可能因此增加。

因此,你需要把老年代的大小设置成一个“合适”的值

第四部分:测试效果

在项目里简单编写如下代码,若可以显示出图像,则配置成功。

linux 文件系统

Linux系统能支持多种目前流行的文件系统,推荐用EXT4。

Linux下面的文件类型主要有:

1) 普通文件,分为纯文本和二进制。

2) 目录文件,存储文件的地方。

3) 链接文件,指向同一个文件或目录的的文件。

4) 设备文件,分为块设备和字符设备。

5)管道文件,提供进程间通信

6)套接字文件,与网络通信有关

Linux使用标准的目录结构,安装程序就已经为用户创建了文件系统和完整而固定的目录组成形式,并指定了每个目录的作用和其中的文件类型。

目录名 简要说明

/bin

二进制可执行命令

/dev

设备特殊文件

/etc

系统管理和配置文件

/etc/rc.d

启动的配置文件和脚本

/home

用户主目录的基点,比如用户abc的主目录就是/home/user,可以用~abc表示

/lib

标准程序设计库

/sbin

系统管理命令,这里存放的是系统管理员使用的管理程序

/tmp

公用的临时文件存储点

/root

系统管理员的主目录

/mnt

系统提供这个目录是让用户临时挂载其他的文件系统。

/lost found

这个目录平时是空的,系统非正常关机而留下“无家可归”的文件

/proc

虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。

/var

某些大文件的溢出区,比方说各种服务的日志文件

/usr

最庞大的目录,要用到的应用程序和文件几乎都在这个目录。其中包含:
/usr/X11R6 存放X window的目录
/usr/bin 众多的应用程序
/usr/sbin 超级用户的一些管理程序
/usr/doc linux文档
/usr/include linux下开发和编译应用程序所需要的头文件
/usr/lib 常用的动态链接库和软件包的配置文件
/usr/man 帮助文档
/usr/src 源代码,linux内核的源代码就放在/usr/src/linux里
/usr/local/bin 本地增加的命令
/usr/local/lib 本地增加的库

shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,是一个命令解释器。shell 有很多类型,这里推荐BASH。BASH是GNU的Bourne Again Shell,是GNU操作系统上默认的shell,大部分linux的发行套件使用的都是这种shell。Linux Shell 及命令

Linux 的命令很多,下面给出了一个简单的分类。

在shell 中组织linux 的命令来完成一系列的任务,就是shell 编程了。Shell,Perl和Python 是Linux 上最常用的脚本语言,我还是推荐使用Python。

=

影响GC性能的参数

正如我在系列的第一篇文章《理解Java GC》末尾提到的,不要幻想着“如果有人用他设置的GC参数获取了不错的性能,我们为什么不复制他的参数设置呢?”,因为对于不用的Web服务,它们创建的对象大小和生命周期都不相同。

举一个简单的例子,如果一个任务的执行条件是A,B,C,D和E,另一个完全相同的任务执行条件只有A和B,那么哪一个任务执行速度更快呢?作为常识来讲,答案很明显是后者。

Java GC参数的设置也是这个道理,设置好几个参数并不会提升GC执行的速度,反而会使它变得更慢。GC优化的基本原则是将不同的GC参数应用到两个及以上的服务器上然后比较它们的性能,然后将那些被证明可以提高性能或减少GC执行时间的参数应用于最终的工作服务器上。

下面这张表展示了与内存大小相关且会影响GC性能的GC参数

表1:GC优化需要考虑的JVM参数

类型 参数 描述
堆内存大小 -Xms 启动JVM时堆内存的大小
-Xmx 堆内存最大限制
新生代空间大小 -XX:NewRatio 新生代和老年代的内存比
-XX:NewSize 新生代内存大小
-XX:SurvivorRatio Eden区和Survivor区的内存比

笔者在进行GC优化时最常用的参数是-Xms,-Xmx-XX:NewRatio-Xms-Xmx参数通常是必须的,所以NewRatio的值将对GC性能产生重要的影响。

有些人可能会问如何设置永久代内存大小,你可以用-XX:PermSize-XX:MaxPermSize参数来进行设置,但是要记住,只有当出现OutOfMemoryError错误时你才需要去设置永久代内存。

还有一个会影响GC性能的因素是垃圾收集器的类型,下表展示了关于GC类型的可选参数(基于JDK 6.0):

表2:GC类型可选参数

GC类型 参数 备注
Serial GC -XX: UseSerialGC
Parallel GC -XX: UseParallelGC-XX:ParallelGCThreads=value
Parallel Compacting GC -XX: UseParallelOldGC
CMS GC -XX: UseConcMarkSweepGC-XX: UseParNewGC-XX: CMSParallelRemarkEnabled-XX:CMSInitiatingOccupancyFraction=value-XX: UseCMSInitiatingOccupancyOnly
G1 -XX: UnlockExperimentalVMOptions-XX: UseG1GC 在JDK 6中这两个参数必须配合使用

除了G1收集器外,可以通过设置上表中每种类型第一行的参数来切换GC类型,最常见的非侵入式GC就是Serial GC,它针对客户端系统进行了特别的优化。

会影响GC性能的参数还有很多,但是上述的参数会带来最显著的效果,请切记,设置太多的参数并不一定会提升GC的性能。

本文由小鱼儿玄机30码发布于小鱼儿玄机30码姐妹,转载请注明出处:读者依据本身索要接纳适合版本及阳台下载,L

关键词: 小鱼儿玄机30码