日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
深入了解GP庫在Linux系統(tǒng)中的應用(gp庫linux)

GP庫(GNU Scientific Library)是一款針對數(shù)學、科學和工程等領(lǐng)域的數(shù)值計算庫,其提供了豐富的數(shù)值計算工具函數(shù)和數(shù)據(jù)結(jié)構(gòu),能夠充分滿足各種數(shù)值計算需求,例如矩陣、多項式、與微積分相關(guān)的函數(shù)等等。本文將,包括GP庫的概述、安裝和使用方法等方面。

創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務,包含不限于成都網(wǎng)站設計、成都網(wǎng)站建設、外貿(mào)網(wǎng)站建設、靖州網(wǎng)絡推廣、微信小程序開發(fā)、靖州網(wǎng)絡營銷、靖州企業(yè)策劃、靖州品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)公司為所有大學生創(chuàng)業(yè)者提供靖州建站搭建服務,24小時服務熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com

一、GP庫概述

GP庫是由GNU發(fā)起的一個項目,目的是提供一個全面的、高性能的數(shù)值計算庫,其被開發(fā)為C編程語言庫。GP庫不僅提供了各種常用數(shù)學函數(shù),包括求解多項式、矩陣、微積分等數(shù)學計算,也提供了其他工程數(shù)學領(lǐng)域的函數(shù),例如各類統(tǒng)計函數(shù)。同時,GP庫還通過提供豐富的工具函數(shù)和數(shù)據(jù)結(jié)構(gòu)來幫助用戶更輕松地完成復雜運算。

GP庫被廣泛應用于科學、工程、金融和醫(yī)學等領(lǐng)域,例如科學計算、圖像處理、信號處理、監(jiān)控系統(tǒng)、環(huán)境研究等等。GP庫的開發(fā)涉及到了許多領(lǐng)域,并且在各種不同的平臺和操作系統(tǒng)上運行。

二、GP庫安裝

GP庫的安裝可以通過源代碼下載的方式進行,以下是具體的安裝流程。

1.下載源代碼

可以在GP庫官方網(wǎng)站(http://www.gnu.org/software/gsl/)上下載最新的穩(wěn)定版本。下載完成后,將壓縮包解壓到本地目錄。

2.編譯和安裝

進入本地目錄后,執(zhí)行以下命令:

./configure

make

sudo make install

其中“./configure”命令用于配置安裝環(huán)境;“make”命令用于編譯源代碼;“sudo make install”命令用于將編譯后的文件安裝到相關(guān)目錄。

三、GP庫使用方法

GP庫提供了豐富的函數(shù)庫,并且使用相對簡單。以下將通過實例來介紹GP庫的一些基本用法。

1.求解三角函數(shù)值

GP庫提供了許多與三角函數(shù)有關(guān)的函數(shù),例如sin(x)、cos(x)、tan(x),這些函數(shù)可以通過以下代碼進行調(diào)用:

#include

#include

int mn (void)

{

double x = M_PI/2.0;

printf (“sin(%g) = %g\n”, x, gsl_sf_sin (x));

printf (“cos(%g) = %g\n”, x, gsl_sf_cos (x));

printf (“tan(%g) = %g\n”, x, gsl_sf_tan (x));

return 0;

}

其中,需要包含頭文件“”,并在代碼中調(diào)用所需的函數(shù)。

2.矩陣計算

GP庫還提供了支持矩陣計算的函數(shù),例如矩陣加、減、乘、轉(zhuǎn)置等。以下是一個矩陣加法的示例代碼:

#include

#include

int mn (void)

{

float a_data[4] = {1.0, 2.0, 3.0, 4.0};

float b_data[4] = {5.0, 6.0, 7.0, 8.0};

gsl_matrix_view a = gsl_matrix_view_array (a_data, 2, 2);

gsl_matrix_view b = gsl_matrix_view_array (b_data, 2, 2);

gsl_matrix *c = gsl_matrix_alloc (2, 2);

gsl_matrix_add (&a.matrix, &b.matrix);

printf (“[ %g, %g\n”, gsl_matrix_get (c, 0, 0), gsl_matrix_get (c, 0, 1));

printf (” %g, %g ]\n”, gsl_matrix_get (c, 1, 0), gsl_matrix_get (c, 1, 1));

gsl_matrix_free (c);

return 0;

}

以上代碼定義了兩個2×2的矩陣,通過使用函數(shù)gsl_matrix_add()實現(xiàn)了矩陣的加法,然后通過gsl_matrix_get()函數(shù)輸出結(jié)果。

3.微積分

GP庫還提供了各種與微積分相關(guān)的函數(shù),例如求解極值、微分和積分等。以下是一個求解函數(shù)導數(shù)的示例代碼:

#include

#include

double func (double x, void *params)

{

return 3.0*x*x + 2.0*x + 1.0;

}

int mn (void)

{

gsl_function F;

F.function = &func;

F.params = 0;

gsl_function_deriv_forward (&F, 1.0, 1e-6, &result, &err);

printf (“f'(x) = %g\n”, result);

return 0;

}

以上代碼通過調(diào)用函數(shù)gsl_function_deriv_forward()來計算函數(shù)f(x)在x=1處的導數(shù)值,并通過printf()函數(shù)輸出結(jié)果。

四、結(jié)論

成都網(wǎng)站建設公司-創(chuàng)新互聯(lián),建站經(jīng)驗豐富以策略為先導10多年以來專注數(shù)字化網(wǎng)站建設,提供企業(yè)網(wǎng)站建設,高端網(wǎng)站設計,響應式網(wǎng)站制作,設計師量身打造品牌風格,熱線:028-86922220

Linux操作系統(tǒng)文件訪問權(quán)限詳解

rwx 421

一直以root登陸使用linux的人來說很少有權(quán)限被拒這種概念,但某些時候又深受權(quán)限拒絕困擾。

  知道為什么很多程序中需要使用getuid(),setuid()?為什么以普通權(quán)限登陸的用戶不能進入/root,為什么在/目錄下執(zhí)行l(wèi)s -l后可以顯示root的信息,但ls /root -al卻是權(quán)限不夠?為什么有些文件夾可以繼續(xù)創(chuàng)建文件,但就是不能ls?等等,相信看了此文就能明白。

  主要是學習筆記,不足之處請指正。

  CentOS 5.4 $ uname -a Linux xxx 2.6.18-164.el5xen #1 P Thu Sep 3 04:47:32 EDT 2023 i686 i686 i386 GNU/Linux

  一、口令文件1,格式存儲文件/etc/passwd,格式如下:root:x:0:0:root:/root:/bin/bash aaa:x:501:501:bj, bj,,:/home/aaa:/bin/bash用戶名:加密密碼:用戶ID:組ID:注釋:工作目錄:shell:

  默認情況是之一行的格式;注釋字段可以自行修改,用逗號隔開,如第二行格式,這主要是給finger命令使用時可解析。

  可以vi /etc/passwd修改,但為了保證其格式的正確性,請用vipw命令編譯此文件。

  sh-3.2# finger aaa Login: aaa Name: bj Directory: /home/aaa Shell: /bin/bash Office: bj,Home Phone:Never logged in. No mail. No Plan.

  2,編程實例

  /*getpwnam_pwuid.c*/ #include #include #include

  int main(void)

  { //struct passwd *pwd = getpwnam(“aaa”);struct passwd *pwd = getpwuid(501);if(pwd == NULL)

  { printf(“err.\n”);return 1;}

  printf(“name:%s\n”, pwd->pw_name);printf(“passwd:%s\n”, pwd->pw_passwd);printf(“description:%s\n”悄歷, pwd->pw_gecos);printf(“uid:%d\n”, pwd->pw_uid);printf(“gid:%d\n”, pwd->pw_gid);printf(“dir:%s\n”, pwd->pw_dir);printf(“shell:%s\n”, pwd->pw_shell);

  return 0;}

  sh-3.2# gcc getpwnam_pwuid.c -o app sh-3.2# ./app name:aaa passwd:x description:bj, bj,,uid:501 gid:501 dir:啟仔搜/home/aaa shell:/bin/bash

  二、組文件1,格式存儲文戚沒件/etc/group,格式如下root:x:0:root bin:x:1:root,bin,daemon aaa:x:501:組名:加密密碼:組ID:指向的各用戶名

  2,改變文件uid和gid.

  sh-3.2# pwd /root/study sh-3.2# ls -al -rw-r——r—— 1 root root:23 test.c

  chgrp 改變所屬組ID,當然只有root權(quán)限才可以修改。

  sh-3.2# chgrp aaa test.c sh-3.2# ls -al -rw-r——r—— 1 root aaa:23 test.c

這個aaa就是新組名,其在/etc/group中,可以通過adduser aaa自行添加sh-3.2# cat /etc/group root:x:0:root bin:x:1:root,bin,daemon daemon:x:2:root,bin,daemon.

  gdm:x:42:sabayon:x:86:plmtest:x:500:aaa:x:501:

  chown 改變用戶ID或組ID sh-3.2# chown aaa:aaa test.c sh-3.2# ls -al -rw-r——r—— 1 aaa aaa:23 test.c

  3,編程實例

  /*getgrnam.c*/ #include #include

  int main(int argc, char *argv)

  { if(argv == NULL)

  { printf(“input error.\n”);return 1;}

  struct group *gp = getgrnam(argv);if(gp == NULL)

  { printf(“err.\n”);return 1;}

  printf(“name:%s\n”, gp->gr_name);printf(“psswd:%s\n”, gp->gr_passwd);printf(“gid:%d\n”, gp->gr_gid);

  int i;for(i = 0; gp->gr_mem != NULL; i++)

  { printf(“group name:%s\n”, gp->gr_mem);}

  return 0;}

  sh-3.2# gcc getgrnam.c -o app sh-3.2# ./app bin name:bin psswd:x gid:1 group name:root group name:bin group name:daemon 4,文件權(quán)限不細講了sh-3.2# ls -al總計drwxr-x—— 13 root root:01 . drwxr-xr-x 32 root root:15 ……

  -rw-r——r—— 1 root root25 22:33 3.3..tgz -rw—— 1 root root:16 .bash_history -rw-r——r—— 1 root root .bash_logout -rw-r——r—— 1 root root6 .bash_profile -rw-r——r—— 1 root root6 .bashrc drwxrwxrwxusers:16 cflow-1.3 -rw-r——r—— 1 root root20:13 cflow.tar.gz -rw-r——r—— 1 root root6 .cshrc -rwxr-xr-x 1 root root:48 delete_M.sh -rw-r——r—— 1 root root:25 .dir_colors

  主要是最左邊一列:drwxr-x——10個字符,最左邊是文件類型,-默認為普通文件;d:目錄文件;l符號鏈接……

  后面9個,3個一組共三組,分別表示所屬用戶uid的權(quán)限;所屬組或者附屬組gid的權(quán)限;其它權(quán)限。

  三個字符分別是讀、寫、執(zhí)行權(quán)限讀4,寫2, 執(zhí)行1

  所以chmod 777 test.c,提升到讀、寫、執(zhí)行權(quán)限。

  5,組權(quán)限操作實例此節(jié)演示相同組的成員之間共享資源,即不同uid但相同gid的用戶共享同一組的資源。

  為了方便起見,我同時開了兩個終端。

  ”sh-3.2#”以root權(quán)限登陸的shell /bin/sh “”以testa用戶登陸的shell

  注:下文提到的“用戶”是指/etc/passwd里定義的通過終端登陸的用戶(此文即以下增加的三個賬號名)。

  sh-3.2# useradd testa sh-3.2# useradd testb sh-3.2# useradd testc

  sh-3.2# tail -f /etc/passwd -n 4 sabayon:x:86:86:Sabayon user:/home/sabayon:/in/nologin testa:x:500:500::/home/testa:/bin/bash testb:x:501:501::/home/testb:/bin/bash testc:x:502:502::/home/testc:/bin/bash

  再開一個終端登陸testa,之前那個終端保持。

  sh-3.2# su testa $ id uid=500(testa) gid=500(testa) groups=500(testa)

  $ ls -al總計 28 drwxr-xr-x 5 root root:52 . drwxr-xr-x 32 root root:15 ……

  drwx—— 3 testa testa:56 testa drwx—— 3 testb testb:48 testb drwx—— 3 testc testc:52 testc

  $ cd testb bash: cd: testb: 權(quán)限不夠

  通過root修改testb目錄權(quán)限為770,即當前uid或者gid相同的用戶均有讀寫執(zhí)行權(quán)限。

  sh-3.2# cd /home/ sh-3.2# chmod 770 testb

  $ ls -al總計 28 drwxr-xr-x 5 root root:52 . drwxr-xr-x 32 root root:15 ……

  drwx—— 3 testa testa:56 testa drwxrwx—— 3 testb testb:48 testb (here modify)

  drwx—— 3 testc testc:52 testc

  $ cd testb bash: cd: testb: 權(quán)限不夠$ id uid=500(testa) gid=500(testa) groups=500(testa)

  此時雖然開放了testb的所屬組權(quán)限,但用戶testa的gid=500(testa) groups=500(testa),它還不屬于testb組。

  下面修改testa的gid為testb(或者增加其附屬組groups值為testb)

  sh-3.2# usermod -G testb testa (增加用戶testa的附屬組testb)

  sh-3.2# id testa uid=500(testa) gid=500(testa) groups=500(testa),501(testb)

  此時testa終端需要重新登下,使剛才更改生效$ exit exit # su testa $ id uid=500(testa) gid=500(testa) groups=500(testa),501(testb)

  $ cd /home/ $ ls -al總計 28 drwxr-xr-x 5 root root:52 . drwxr-xr-x 32 root root:15 ……

  drwx—— 3 testa testa:56 testa drwxrwx—— 3 testb testb:48 testb drwx—— 3 testc testc:52 testc $ cd testb $ pwd /home/testb

  以上是增加了用戶testa的附屬組testb,使其對于屬于testb組的資源有了訪問權(quán)限。

  下面再使用newgrp切換用戶testa的gid.

  $ id uid=500(testa) gid=500(testa) groups=500(testa),501(testb)

  $ newgrp testb $ id uid=500(testa) gid=501(testb) groups=500(testa),501(testb)

  此時testa用戶的gid已改為501(testb)。

  組之前的關(guān)系在文件/etc/group sh-3.2# tail -f /etc/group -n 4 sabayon:x:86:testa:x:500:testb:x:501:testa (最后一列:組內(nèi)用戶列表。即組testb里包含testa,testa屬于testb組,大概就這意思吧……)

  testc:x:502:

  雖然知道控制組關(guān)系的文件,但不能直接修改些文件,否則執(zhí)行newgrp時會出現(xiàn)”抱歉”錯誤提示。

  當然root用戶權(quán)限是無限制的,它訪問文件時不需要進行權(quán)限檢查。

  三、相關(guān)系統(tǒng)調(diào)用getuid();getgid();int setuid(uid_t uid);int setgid(gid_t gid);

  只有超級用戶或者需要設置的uid和當前用戶的uid一致才可以設置,否則返回-1,置errno = EPERM, errno可以通過strerror()翻譯。

  其它:$ su testa $ sudo touch aa

  testa is not in the sudoers file. This incident will be reported.

  以root權(quán)限vim /etc/sudoers增加testa ALL=(ALL) ALL

  參考:APUE2E,1.8, 4.4, 8.11

linux下文件權(quán)限分為四段:drwxrwxrwx

d表示這絕含是一個目錄,是一段,有時之一段也可能是l(l表示軟連接)也可能沒有,就用“-”表示

第二段是所屬限,r:4(讀?。粀:2(寫入);x:1(執(zhí)行),rwx表示所屬主用于并槐笑所有權(quán)明鋒限,第三段和第四段也是一個意思,但第三段表示的是所屬組,第四段表示的是其他人,懂了么?

關(guān)于gp庫 linux的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

成都創(chuàng)新互聯(lián)科技公司主營:網(wǎng)站設計、網(wǎng)站建設、小程序制作、成都軟件開發(fā)、網(wǎng)頁設計、微信開發(fā)、成都小程序開發(fā)、網(wǎng)站制作、網(wǎng)站開發(fā)等業(yè)務,是專業(yè)的成都做小程序公司、成都網(wǎng)站建設公司、成都做網(wǎng)站的公司。創(chuàng)新互聯(lián)公司集小程序制作創(chuàng)意,網(wǎng)站制作策劃,畫冊、網(wǎng)頁、VI設計,網(wǎng)站、軟件、微信、小程序開發(fā)于一體。


網(wǎng)站欄目:深入了解GP庫在Linux系統(tǒng)中的應用(gp庫linux)
網(wǎng)站地址:http://m.5511xx.com/article/cdgjjod.html