Xen安全架構sHype/ACM策略配置圖文教程


實驗要求

1.?????熟悉Xen虛擬化平臺部署;

2.?????Xen sHype/ACM安全架構中的Simple TE和Chinese Wall策略及事實上現機制的分析與驗證。


第1章? ?????????Xen環境部署


1.1? ?????????版本號選擇


因為Ubuntu使用廣泛。軟件包易于下載。我們選擇Ubuntu系統進行Xen部署。

可選擇的LTS系統例如以下[1]:

1)Ubuntu 10.04系統採用的是Linux 2.6.32內核,因為Linux 3.0下面內核不支持Xen[2],須要又一次編譯內核。較為費時費力,內核編譯后支持Xen 4.0;

2)Ubuntu 12.04系統採用Linux 3.2+內核,支持Xen 4.1;Xen從4.1開始將xm工具集列為deprecated[3]。而進行ACM/sHype策略方面的配置利用xm工具實現較為方便;

3)Ubuntu 12.04系統採用Linux 3.2+內核。支持Xen 4.2。從Xen 4.2開始,不再支持ACM安全模塊。因此不合適。

4)Ubuntu 14.04系統採用Linux 3.13+內核,支持Xen 4.4;

5)Ubuntu 15.04系統採用Linux 3.19.3內核,支持Xen 4.5,Xen從4.5開始取消xm工具集(xend),用xl工具集進行取代[3]。


綜合以上幾點原因,Xen環境採用Ubuntu 12.04 x64部署較為合適,Xen版本號選擇4.1,可是本文選擇的是Ubuntu 14.04 x64 + Xen 4.1的組合,事實證明也是能夠成功安裝的。

依據文章[4]中的建議,應該選擇64-bit的Ubuntu安裝較為合理。

因此我們的安裝鏡像最后確定為ubuntu-14.04-desktop-amd64.iso。

因為Xen的dom0系統支持的顯卡有限。不支持VMware Workstation虛擬機中的默認顯卡,在安裝Xen后重新啟動會導致系統黑屏,無法使用。因此此實驗不能選擇VMware虛擬機,僅僅能選擇物理機上安裝Ubuntu進行實驗。

利用[5]中的教程進行Ubuntu 14.04 LTS x64的U盤安裝盤的制作。再利用該安裝盤進行安裝就可以。假設是與Windows雙系統,則須要用EasyBCD恢復引導菜單,通過引導菜單進入Ubuntu系統。


1.2? ?????????Xen源代碼下載及安裝依賴包


因為Xen公布的二進制安裝包默認不含有XSM功能,開啟XSM功能必須改變編譯選項并進行又一次編譯。

因此本文須要從Xen源代碼進行安裝。

從2013年2月開始,Xen源代碼採用git進行管理。其git庫地址為:

git://xenbits.xen.org/xen.git


源代碼下載採用的命令是:

git clone git://xenbits.xen.org/xen.git
cd xen
git checkout stable-4.1


編譯須要用到git,須要提前安裝好:

apt-get install git

接著安裝依賴包:

apt-get install bcc bin86 gawk bridge-utils iproutelibcurl3 libcurl4-openssl-dev bzip2 module-init-tools transfig tgif texinfotexlive-latex-base texlive-latex-recommended texlive-fonts-extratexlive-fonts-recommended pciutils-dev mercurial build-essential make gcclibc6-dev zlib1g-dev python python-dev python-twisted libncurses5libncurses5-dev patch libvncserver-dev libsdl-dev libjpeg62-dev iasl libbz2-deve2fslibs-dev git-core uuid-dev ocaml libx11-dev bison flex binutils xorg-devudev gettext libgcrypt11-dev libssl-dev pciutils libglib2.0-dev  gcc-multilib fakeroot pkg-config libpci-devcrash crash kexec-tools makedumpfile

1.3? ?????????Xen源代碼編譯


1)在Xen 4.0以后,XSM有ACM和FLASK兩個模塊,默認都不開啟,須要選擇當中一個。然后進行編譯,其Config.mk文件內容例如以下:

XSM_ENABLE ?= n
FLASK_ENABLE ?= n
ACM_SECURITY ?= n


2)從Xen 4.2開始,FLASK成為默認的XSM模塊,當啟用XSM時默認啟用FLASK,而ACM默認不啟動。其Config.mk文件內容例如以下:

XSM_ENABLE ?= n
FLASK_ENABLE ?

= $(XSM_ENABLE)

?

因為本文採用的版本號是Xen4.1,因此須要依照下面命令改動Config.mk:

XSM_ENABLE ?= y
FLASK_ENABLE ?= n
ACM_SECURITY ?

= y

?

然后執行例如以下命令進行編譯:

make dist或make xen tools stubdom
make install-xen
make install-toolsPYTHON_PREFIX_ARG="--install-layout=deb"
make install stubdom

1.4? ?????????改動/etc/modules


改動/etc/modules文件,加入下面行:

xen-evtchn
xen-gntdev
xen-netback
xen-blkback
xenfs
blktap

1.5? ?????????加入Lib搜索路徑


改動/etc/ld.so.conf.d/libc.conf文件,加入例如以下幾行:

/usr/local/lib(已有)
/lib64
/usr/lib
/usr/lib64

執行ldconfig命令使改動生效。


1.6? ?????????改動grub啟動項


步驟一:改動/etc/default/grub文件,將GRUB_TIMEOUT=10改動為GRUB_TIMEOUT=-1,將GRUB_HIDDEN_TIMEOUT=0改動為GRUB_HIDDEN_TIMEOUT=10。

步驟二:運行update-grub。

對于Ubuntu 14.04在/boot/grub/grub.cfg中能自己主動生成’Ubuntu, with Xen hypervisor’啟動項。不須要像在Ubuntu 12.04中一樣自己手動再配置。

重新啟動系統。


1.7? ?????????測試Xen環境


首先啟動xend:

//首先啟動xencommons
service xencommons start
//啟動xend之前關閉網卡啟動xend之后重新啟動網卡(假設不這樣做會提示出錯。原因暫不詳)
ifconfig eth0 down
service xend start
ifconfig eth0 up

接著執行xm list命令。結果例如以下:


?

Name            ID   Mem      VCPUs         State      Time(s)
Domain-0     0     15610    8                   r-----       1305.5

改動/etc/xen/xend-config.sxp文件,去掉xend-unix-server no的凝視,并改為xend-unix-server yes,去掉xend-unix-path/var/lib/xend/xend-socket的凝視。


1.8? ?????????創建虛擬機


首先。須要制作虛擬機的磁盤文件,輸入下面命令創建10GB的磁盤文件

dd if=/dev/zero of=vm1disk bs=1k seek=10000kcount=0
mkfs -t ext3 vm1disk
(當須要回復確認時,回答y)
mount -o loop vm1disk /mnt
cp -ax /{root,dev,var,etc,usr,bin,sbin,lib} /mnt
mkdir /mnt/{proc,sys,home,tmp}


然后對/mnt/etc/fstab,/mnt/etc/hostname進行自己定義的改動,這里省略不做改動。

umount /mnt


此時,虛擬機磁盤文件vm1disk就已創建完成,用類似的方式創建vm2disk。

接著,編輯虛擬機配置文件/root/domain1.xm,其內容例如以下所看到的:

kernel= "/boot/vmlinuz-3.13.0-24-generic.efi.signed"
memory = 512
name = "domain1"
dhcp = "dhcp"
disk = ['tap:aio:/root/vm1disk,sda1,w']
root = "/dev/sda1 ro xencons=tty"


最后,執行命令:

xm createdomain1.xm


正常情況下,虛擬機domain1應該已經啟動。

通過xm console domain1命令能夠打開虛擬機domain1的終端命令行,例如以下圖所看到的。



接著類似地創建domain2.xm。再執行xm create domain2.xm啟動domain2虛擬機。


1.9? ?????????測試ACM/sHype環境


改動/etc/xen/xend-config.sxp。添加(xsm_module_name acm)。否則,ACM策略類型將被覺得不支持(未指定使用的xsm類型),出錯標識為執行xm getpolicy命令,提示Supported security subsystems :????? None。改動源碼中的xend-config.sxp似乎沒有效果,僅僅能改動編譯后的文件。

執行xensec_toolgetpolicy命令,結果例如以下,則說明ACM/sHype環境至此就搭建完畢了。


在Windows上安裝Python 2.7 x64和wxPython 3.0 x64 for Python 2.7,當中wxPython的下載頁面例如以下:http://www.wxpython.org/download.php#msw

相同在Ubuntu上安裝wxPython:

apt-get install python-wxgtk2.8 python-wxtools


執行下面命令,假設能出現下圖所看到的界面,說明策略配置工具安裝完成。

python /usr/sbin/xensec_ezpolicy



第2章? ?????????ACM策略配置

在xensec_ezpolicy里,點擊New Orgbutton。新增加三個組織:A-Bank、B-Bank和AutoCorp,而且在A-Bank下創建兩個部門:SecurityUnderwriting和MarketAnalysis。然后選中__UNLABELED__、A-Bank和B-Bank三項,點擊Create run-time exclusion rulefrom selectionbutton,將其增加到一個沖突集中,接著用類似方法將__UNLABELED__、A-Bank.MarketAnalysis和A-Bank.SecurityUnderwriting三項增加到一個沖突集中。終于結果例如以下圖所看到的:


?

選擇菜單里的File ->Save as Xen ACM Security Policy …將策略文件保存到路徑:/etc/xen/acm-security/policies/mytest-security_policy.xml

該文件終于內容例如以下所看到的:


<?xml version="1.0" encoding="UTF-8"?

> <!-- Auto-generated by ezPolicy --> <SecurityPolicyDefinition xmlns="http://www.ibm.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ibm.com ../../security_policy.xsd "> <PolicyHeader> <PolicyName>mytest</PolicyName> <Date>Tue Jun 09 14:41:58 2015</Date> <Version>1.0</Version> </PolicyHeader> <SimpleTypeEnforcement> <SimpleTypeEnforcementTypes> <Type>SystemManagement</Type> <Type>__UNLABELED__</Type> <Type>A-Bank</Type> <Type>A-Bank.SecurityUnderwriting</Type> <Type>A-Bank.MarketAnalysis</Type> <Type>B-Bank</Type> <Type>AutoCorp</Type> </SimpleTypeEnforcementTypes> </SimpleTypeEnforcement> <ChineseWall priority="PrimaryPolicyComponent"> <ChineseWallTypes> <Type>SystemManagement</Type> <Type>__UNLABELED__</Type> <Type>A-Bank</Type> <Type>A-Bank.SecurityUnderwriting</Type> <Type>A-Bank.MarketAnalysis</Type> <Type>B-Bank</Type> <Type>AutoCorp</Type> </ChineseWallTypes> <ConflictSets> <Conflict name="RER"> <Type>__UNLABELED__</Type> <Type>A-Bank</Type> <Type>B-Bank</Type> </Conflict> <Conflict name="RER"> <Type>__UNLABELED__</Type> <Type>A-Bank.MarketAnalysis</Type> <Type>A-Bank.SecurityUnderwriting</Type> </Conflict> </ConflictSets> </ChineseWall> <SecurityLabelTemplate> <SubjectLabels bootstrap="SystemManagement"> <VirtualMachineLabel> <Name>SystemManagement</Name> <SimpleTypeEnforcementTypes> <Type>SystemManagement</Type> <Type>__UNLABELED__</Type> <Type>A-Bank</Type> <Type>A-Bank.SecurityUnderwriting</Type> <Type>A-Bank.MarketAnalysis</Type> <Type>B-Bank</Type> <Type>AutoCorp</Type> </SimpleTypeEnforcementTypes> <ChineseWallTypes> <Type>SystemManagement</Type> </ChineseWallTypes> </VirtualMachineLabel> <VirtualMachineLabel> <Name>__UNLABELED__</Name> <SimpleTypeEnforcementTypes> <Type>__UNLABELED__</Type> </SimpleTypeEnforcementTypes> <ChineseWallTypes> <Type>__UNLABELED__</Type> </ChineseWallTypes> </VirtualMachineLabel> <VirtualMachineLabel> <Name>A-Bank</Name> <SimpleTypeEnforcementTypes> <Type>A-Bank</Type> </SimpleTypeEnforcementTypes> <ChineseWallTypes> <Type>A-Bank</Type> </ChineseWallTypes> </VirtualMachineLabel> <VirtualMachineLabel> <Name>A-Bank.SecurityUnderwriting</Name> <SimpleTypeEnforcementTypes> <Type>A-Bank.SecurityUnderwriting</Type> </SimpleTypeEnforcementTypes> <ChineseWallTypes> <Type>A-Bank</Type> <Type>A-Bank.SecurityUnderwriting</Type> </ChineseWallTypes> </VirtualMachineLabel> <VirtualMachineLabel> <Name>A-Bank.MarketAnalysis</Name> <SimpleTypeEnforcementTypes> <Type>A-Bank.MarketAnalysis</Type> </SimpleTypeEnforcementTypes> <ChineseWallTypes> <Type>A-Bank</Type> <Type>A-Bank.MarketAnalysis</Type> </ChineseWallTypes> </VirtualMachineLabel> <VirtualMachineLabel> <Name>B-Bank</Name> <SimpleTypeEnforcementTypes> <Type>B-Bank</Type> </SimpleTypeEnforcementTypes> <ChineseWallTypes> <Type>B-Bank</Type> </ChineseWallTypes> </VirtualMachineLabel> <VirtualMachineLabel> <Name>AutoCorp</Name> <SimpleTypeEnforcementTypes> <Type>AutoCorp</Type> </SimpleTypeEnforcementTypes> <ChineseWallTypes> <Type>AutoCorp</Type> </ChineseWallTypes> </VirtualMachineLabel> </SubjectLabels> <ObjectLabels> <ResourceLabel> <Name>SystemManagement</Name> <SimpleTypeEnforcementTypes> <Type>SystemManagement</Type> </SimpleTypeEnforcementTypes> </ResourceLabel> <ResourceLabel> <Name>__UNLABELED__</Name> <SimpleTypeEnforcementTypes> <Type>__UNLABELED__</Type> </SimpleTypeEnforcementTypes> </ResourceLabel> <ResourceLabel> <Name>A-Bank</Name> <SimpleTypeEnforcementTypes> <Type>A-Bank</Type> </SimpleTypeEnforcementTypes> </ResourceLabel> <ResourceLabel> <Name>A-Bank.SecurityUnderwriting</Name> <SimpleTypeEnforcementTypes> <Type>A-Bank.SecurityUnderwriting</Type> </SimpleTypeEnforcementTypes> </ResourceLabel> <ResourceLabel> <Name>A-Bank.MarketAnalysis</Name> <SimpleTypeEnforcementTypes> <Type>A-Bank.MarketAnalysis</Type> </SimpleTypeEnforcementTypes> </ResourceLabel> <ResourceLabel> <Name>B-Bank</Name> <SimpleTypeEnforcementTypes> <Type>B-Bank</Type> </SimpleTypeEnforcementTypes> </ResourceLabel> <ResourceLabel> <Name>AutoCorp</Name> <SimpleTypeEnforcementTypes> <Type>AutoCorp</Type> </SimpleTypeEnforcementTypes> </ResourceLabel> </ObjectLabels> </SecurityLabelTemplate> </SecurityPolicyDefinition>


下一步。關閉全部虛擬機,在命令行里運行下面命令,使剛才編輯的策略生效。

xm resetpolicy
xm setpolicy ACM mytest

以下,給domain1和domain2分別設置A-Bank和B-Bank的標簽:

xm addlabel A-Bank dom domain1.xm
xm addlabel B-Bank dom domain2.xm

接著,給虛擬磁盤文件設置A-Bank和B-Bank的標簽:

xm addlabel A-Bank res tap:aio:/root/vm1disk
xm addlabel B-Bank res tap:aio:/root/vm2disk

設置結果如圖所看到的。

這樣才干保證虛擬機domain1能訪問磁盤文件vm1disk,虛擬機domain1能訪問磁盤文件vm1disk,虛擬機才會創建成功,從而驗證了STE策略。



然后創建domain1虛擬機,保持domain1開啟的同一時候,再啟動domain2虛擬機:

xm create domain2.xm
xm create domain2.xm


這時我們會發現domain2虛擬機創建失敗。例如以下圖所看到的,提示Error: Domain inconflict set with running domain?




這是因為在ChineseWall策略里,虛擬機domain1的標簽為A-Bank,虛擬機domain2的標簽為B-Bank,而A-Bank和B-Bank在同一個利益沖突類(Run-time Exclustion Rules)中,因此無法同一時候在同一個主機中執行。


第3章? ?????????遇到的錯誤與解決方式


1. 編譯tools時失敗,提示check_python_devel函數檢查失敗。是個bug

解決方式:改動/xen/tools/check/check_python_devel文件。去掉里面的驗證

?

2. 編譯tools時失敗。提示undefinedreference to symbol 'timer_settime@@GLIBC_2.3.3

解決方式:依照http://stackoverflow.com/questions/18286738/undefined-reference-to-symbol-timer-settimeglibc-2-3-3里的說明。將/xen/tools/ioemu-remote/Makefile.target里的LIBS+=-lm改動為LIBS+=-lz -lrt –lm


3. 編譯tools時失敗,提示xg_main.c:181:52:error: 'ulong' undeclared (first use in this

function)

解決方式:參照http://lists.xen.org/archives/html/xen-devel/2012-12/msg00429.html

改動/xen/tools/debugger/gdbsx/xg/xg_main.c。在文件開頭增加#include <sys/types.h>


4. 編譯tools時失敗,提示ocamlfind:command not found

解決方式:apt-getinstall ocaml-findlib


5. 編譯tools時失敗,提示Error:Unbound module Xenbus

解決方式:改動/xen/tools/ocaml/xenstored/connection.ml里的Line:118,把那三行凝視掉。加入let is_backend_mmap con =false


6. Ubuntu怎樣進行視頻錄制

解決方式:利用kazam進行視頻錄制。用法例如以下:

apt-get install kazam
apt-get install pulseaudio
pulseaudio //打開pulseaudioserver
kazam //執行視頻錄制軟件

第4章? ?????????參考資料


[1] List of Ubuntu releases. http://en.wikipedia.org/wiki/List_of_Ubuntu_releases#Table_of_versions

[2] Ubuntu12.04安裝Xen4. http://www.cppblog.com/LIULIANG/archive/2012/09/21/191481.html

[3] XEND. http://wiki.xen.org/wiki/XEND

[4] Ubuntu 10.04 (with grub2)安裝 Xen 4.0.1. http://www.codesky.net/article/201107/174124.html

[5] 怎么用u盤安裝ubuntu. http://jingyan.baidu.com/article/a3761b2b66fe141577f9aa51.html

?

?

轉載于:https://www.cnblogs.com/mengfanrong/p/5345813.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/373319.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/373319.shtml
英文地址,請注明出處:http://en.pswp.cn/news/373319.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python 辨異 —— __init__ 與 __new__

__init__ 更多的作用是初始化屬性&#xff0c;__new__ 進行的是創建對象&#xff0c;顯然 __new__ 要早于 __init__ 發生。 考慮一個繼承自 tuple 的類&#xff0c;顯然在 __init__ 無法對其成員進行修改&#xff1b; class Edge(tuple):def __new__(cls, e1, e2):return tuple…

java彈出虛擬鍵盤_JS實現電腦虛擬鍵盤的操作

本文實例為大家分享了JS實現電腦虛擬鍵盤的具體代碼&#xff0c;供大家參考&#xff0c;具體內容如下需求&#xff1a;1.當輸入框光標聚焦時&#xff0c;電腦虛擬鍵盤彈出2.在輸入框輸入內容時&#xff0c;鍵盤跟著變化具體實現代碼如下&#xff1a;Html部分&#xff1a;電腦鍵…

Apache Mahout:入門

最近&#xff0c;我有一個有趣的問題要解決&#xff1a;如何使用自動化對不同來源的文本進行分類&#xff1f; 前一段時間&#xff0c;我讀到一個有關該項目以及許多其他文本分析工作的項目– Apache Mahout 。 盡管它不是一個非常成熟的版本&#xff08;當前版本為0.4 &#x…

Javascript中最常用的55個經典技巧(轉)

1. οncοntextmenu"window.event.returnValuefalse" 將徹底屏蔽鼠標右鍵 <table border οncοntextmenureturn(false)><td>no</table> 可用于Table 2. <body onselectstart"return false"> 取消選取、防止復制 3. οnpaste"…

向數組添加元素 java_java如何向數組里添加元素

向數組里添加一個元素怎么添加&#xff0c;這兒總結有三種方法&#xff1a;1、一般數組是不能添加元素的&#xff0c;因為他們在初始化時就已定好長度了&#xff0c;不能改變長度。但有個可以改變大小的數組為ArrayList&#xff0c;即可以定義一個ArrayList數組&#xff0c;然后…

JBoss Drools –入門

這篇文章是關于我如何掌握JBoss Drools的 。 其背后的原因是&#xff1a;SAP收購了我公司當前的規則引擎&#xff0c;而Drools是我們將尋找的另一種選擇&#xff0c;只要有人掌握了概念驗證的技能即可。 盡管似乎有大量的文檔&#xff0c;但是我總是會通過示例來發現它是有幫助…

android使用bintray發布aar到jcenter

前言 這兩天心血來潮突然想把自己的android library的aar放到jcenter里面&#xff0c;這樣一來自己便可以在任何時間任何地點通過internet得到自己的library的引用了&#xff0c;況且現在android studio已經默認使用jcenter的repositories作為依賴來源&#xff0c;以前的mavenc…

Java不是文明語言嗎?

幾周前&#xff0c;我有機會學習iOS編程。 我的老板認為我更像是“計算機科學家”&#xff0c;而不是開發人員&#xff0c;這意味著我可以將自己的知識應用于開發一兩個iPad應用程序–我要做的就是學習Objective-C&#xff0c; iOS SDK&#xff1a;到底有多難&#xff1f; 盡管…

PHP 進程詳解

PHP 進程詳解PHP 進程詳解 如下內容從《操作系統精髓與設計原理》中總結提煉得出&#xff0c;刪除了大部分對于理解進程有干擾的文字&#xff0c;對進程知識結構進行的梳理。幾乎所有內容為按照書本上摘抄下來的&#xff0c;我目前還總結提煉不出像作者這么深刻的見解。那么就先…

35. Search Insert Position

public class Solution {public int searchInsert(int[] nums, int target) {int lennums.length;int i0;for(;i<len;i){if(nums[i]>target)break;}return i;} } 轉載于:https://www.cnblogs.com/aguai1992/p/5351442.html

MySQL 后from多個表_MYSQL回顧(多表查詢相關)

前言簡單的數據我們可以直接從一個表中獲取&#xff0c;但在真實的項目中查詢符合條件的數據通常需要牽扯到多張表&#xff0c;這就不得不使用多表查詢。多表查詢分為多表連接查詢、符合條件鏈接查詢、子查詢。多表連接查詢包括內連接、外連接、全連接。符合條件連接查詢本質上…

玩! 框架+ Google Guice

在我目前正在工作的項目中&#xff0c;我們開始使用Google Guice。 對于那些不知道的人&#xff0c; Google Guice是一個依賴項注入框架。 依賴項注入背后的基本思想是提供一個它依賴的類&#xff0c;而不是使依賴類負責實例化它所依賴的對象。 Play具有用于整合Guice的模塊&am…

java都要caps標點_第 1 章 管理 Java CAPS 用戶

第 1 章 管理 Java CAPS 用戶在此處列出的主題提供了有關如何管理 Sun JavaTM Composite Application Platform Suite (Java CAPS) 中的用戶的信息。如果您有任何問題&#xff0c;請參見 http://goldstar.stc.com/ 中的 Java CAPS Web 站點。管理系統信息庫用戶此類別包含以下用…

基于OpenCV 的美顏相機推送直播流

程序流程&#xff1a; 1.圖像采集 先從opencv&#xff08;2.4.10版本&#xff09;采集回來攝像頭的圖像&#xff0c;是一幀一幀的 每一幀圖像是一個矩陣&#xff0c;opencv中的mat 數據結構。 2.人臉的美化 人臉美化&#xff0c;我們用的皮膚檢測&#xff0c;皮膚在顏色空間是特…

Linux驅動開發常用頭文件

頭文件目錄中總共有32個.h頭文件。其中主目錄下有13個&#xff0c;asm子目錄中有4個&#xff0c;linux子目錄中有10個&#xff0c;sys子目錄中有5個。這些頭文件各自的功能如下&#xff1a; 1、主目錄 <a.out.h>&#xff1a;a.out頭文件&#xff0c;定義了a.out執行文件格…

Spring線程池服務

線程池對于執行同步和異步過程非常重要。 本文介紹如何使用Spring開發和監視線程池服務。 創建線程池已通過兩種替代方法進行了說明。 二手技術 &#xff1a; JDK 1.6.0_21 Spring3.0.5 Maven的3.0.2 步驟1&#xff1a;建立已完成的專案 創建一個Maven項目&#xff0c;如下…

我的世界java村民繁殖_我的世界:Java19w08a更新,村民加強守衛,小狐貍背叛

雖然這句話很繞口&#xff0c;其實意思很簡單&#xff0c;那就是之前的隱身藥水沒有什么用&#xff0c;該被打還是被打。因為這個可是害慘了流浪商人&#xff0c;不過這次好了&#xff0c;流浪商人在喝了隱身藥水之后就能安全度過晚上了。NO.3 皮革馬鎧馬鎧是屬于馬的盔甲&…

歐萊雅眉筆banner個人設計

眉筆名稱&#xff1a;眉筆大師三頭塑形眉筆 &#xff0c;之所以沒用吧這個商品名稱放大&#xff0c;是我覺得它是一個名稱&#xff0c;而我把自己想的廣告詞“出彩只需一筆” 放大不僅能凸顯出這只筆的強大&#xff0c;還表示了一種有了我這支眉筆你會更出彩更漂亮&#xff0c…

使用帶有注釋和JQuery的Spring MVC 3的Ajax

與Ajax一起工作對我來說一直很有趣&#xff01; 是不是 &#xff1f; 我將使您輕松將Ajax與Spring MVC 3和JQuery結合使用。 這篇文章將向您說明如何在工業編碼的現實生活中使用Ajax。 和往常一樣&#xff0c;我們將在Spring MVC 3框架中以Ajax的實際示例為例&#xff0c;并將其…

ThinkPHP 3 的輸出

一、ThinkPHP 3 的輸出 &#xff08;重點&#xff09;a、通過 echo 等PHP原生的輸出方式在頁面中輸出b、通過display方法輸出想分配變量可以使用assign方法c、修改左右定界符休要修改配置文件中的配置項TMPL_L_DELIM><{, //修改左定界符TMPL_R_DELIM>}>, //修…