MariaDB Galera Cluster 多 master 集群的工具
“雪梨萱”通过精心收集,向本站投稿了7篇MariaDB Galera Cluster 多 master 集群的工具,今天小编在这给大家整理后的MariaDB Galera Cluster 多 master 集群的工具,我们一起来阅读吧!
篇1:MariaDB Galera Cluster 多 master 集群的工具
MariaDB Galera Cluster 是一个用于同步 MariaDB 数据库的多 master 集群的工具,在数据方面完全兼容 MariaDB 和 MySQL。
特性:
同步复制 Synchronous replication
Active-active multi-master 拓扑逻辑
可对集群中任一节点进行数据读写
自动成员控制,故障节点自动从集群中移除
自动节点加入
真正并行的复制,基于行级
直接客户端连接,原生的 MySQL 接口
项目主页:www.open-open.com/lib/view/home/1346982115022
篇2:Hadoop集群监控工具:HTools
HTools是一款专业的Hadoop管 理工具,不管您是非专业IT人士,还是多年经验的技术人员,本工具都会为您提供优质的管理服务和轻松的操作过程, 释放无谓的工作压力,提高Hadoop的管理水平,我们以最权威的专家为您量身定做的Hadoop管理工具,本系统提供优秀的用户体验,让您能够轻松的管 理Hadoop集群环境。
友善的向导式操作流程
图形报表、日志分析供您明了查看各节点使用情况
智能诊断,修复故障并发出短信、邮件故障告警
图形化UI、拖拖拽拽即可管理管理HDFS数据
傻瓜式操作优化Hadoop,方便快捷
免客户端部署,无需安装HTools客户端
版本控制灵活,不绑定Hadoop的JDK版本
一键智能搜索当前网段可部署节点
支持多个Hadoop集群同时监管
支持同时管理多个Hadoop集群和节点
支持7 × 24小时多集群实时监控
支持节点热插拔,服务不间断的情况下随时对节点进行扩展和调整
支持系统配置文件的推送和同步
项目主页:www.open-open.com/lib/view/home/1387940215953
篇3:多master/develop分支如何使用gitflow版本控制
在使用 gitflow 做版本控制系统,发现gitflow的时候只能指定一个master/develop,如果要多分支使用要如何操作呢?那么来看看我是如何给gitflow加料的,
公司都是git作为版本控制,公司一些项目组在用gitflow,但是我们组没有强制, 但是我上月出了一次事故,总结就是分支管理问题,所以开始强迫自己使用gitflow, 以前的项目是一个master和一个develop,自己checkout一个分支,然后merge(不理解的可以看看a-successful-git-branching-model).
问题出现了: 项目有几个主分支和开发分支,比如master_sina, master_qq. master_buzz ,而gitflow的时候只能指定一个master/develop, 这样你start一个feature/hotfix之前就要去.git/config里面修改 [gitflow “branch”]项的相关主分支和开发分支,so不方便。看了下源码,给gitflow加点料
添加功能
当你打开了feature/hotfix分支,但是你不想要它了(当然你可以直接git branch -D xx),使用git flow hotfix/feature delete ,自动帮你删除这个分支,以便你新建其他分支(git flow只容许你一次存在一个hotfix/feature分支)
你想使用gitflow删除其它存在分支嘛?不需要 git branch -D ,你还可以git flow hotfix/feature delete XX
比如我在init的时候指定了master为master_sina, 而当我想创建master_qq的hotfix,我只需要在start的是否给它取名字是’qq_‘开头的即可,要是有其它的需要你可以直接在源码里面添加对应的内容
例子 git-flow-hotfix 我主要标记我修改的部分
代码如下复制代码init {require_git_repo
require_gitflow_initialized
gitflow_load_settings
VERSION_PREFIX=$(eval “echo `git config --get gitflow.prefix.versiontag`”)
PREFIX=$(git config --get gitflow.prefix.hotfix)
}
# 增加help的选项说明
usage() {
echo “usage: git flow hotfix [list] [-v]”
echo “ git flow hotfix start [-F]
echo “ git flow hotfix finish [-Fsumpk]
echo “ git flow hotfix publish
echo “ git flow hotfix delete [branch]”
echo “ git flow hotfix track
}
cmd_default() {
cmd_list “$@”
}
cmd_list() {
DEFINE_boolean verbose false ‘verbose (more) output‘ v
parse_args “$@”
local hotfix_branches
local current_branch
local short_names
hotfix_branches=$(echo “$(git_local_branches)” | grep “^$PREFIX”)
if [ -z “$hotfix_branches” ]; then
warn “No hotfix branches exist.”
warn “”
warn “You can start a new hotfix branch:”
warn “”
warn “ git flow hotfix start
warn “”
exit 0
fi
current_branch=$(git branch --no-color | grep ‘^* ‘ | grep -v ‘no branch‘ | sed ‘s/^* //g‘)
short_names=$(echo “$hotfix_branches” | sed “s ^$PREFIX g”)
# determine column width first
local width=0
local branch
for branch in $short_names; do
local len=${#branch}
width=$(max $width $len)
done
width=$(($width+3))
local branch
for branch in $short_names; do
local fullname=$PREFIX$branch
local base=$(git merge-base “$fullname” “$MASTER_BRANCH”)
local master_sha=$(git rev-parse “$MASTER_BRANCH”)
local branch_sha=$(git rev-parse “$fullname”)
if [ “$fullname” = “$current_branch” ]; then
printf “* ”
else
printf “ ”
fi
if flag verbose; then
printf “%-${width}s” “$branch”
if [ “$branch_sha” = “$master_sha” ]; then
printf “(no commits yet)”
else
local tagname=$(git name-rev --tags --no-undefined --name-only “$base”)
local nicename
if [ “$tagname” != “” ]; then
nicename=$tagname
else
nicename=$(git rev-parse --short “$base”)
fi
printf “(based on $nicename)”
fi
else
printf “%s” “$branch”
fi
echo
done
}
cmd_help() {
usage
exit 0
}
parse_args() {
# parse options
FLAGS “$@” || exit $?
eval set -- “${FLAGS_ARGV}”
# read arguments into global variables
VERSION=$1
BRANCH=$PREFIX$VERSION
# 这里就是我多master/develop的技巧,我这里会判断要新建的分支的前缀,
# 要 _开头就会基于master_qq和develop_qq创建分支。所以你可以根据你的需要在这里加一些方法
test `expr match “$@” “qq_”` -ne 0 && MASTER_BRANCH=“$MASTER_BRANCH”_qq &&
DEVELOP_BRANCH=“$DEVELOP_BRANCH”_qq
}
require_version_arg() {
if [ “$VERSION” = “” ]; then
warn “Missing argument
usage
exit 1
fi
}
require_base_is_on_master() {
if ! git branch --no-color --contains “$BASE” 2>/dev/null
| sed ‘s/[* ] //g‘
| grep -q “^$MASTER_BRANCH$”; then
die “fatal: Given base ‘$BASE‘ is not a valid commit on ‘$MASTER_BRANCH‘.”
fi
}
require_no_existing_hotfix_branches() {
local hotfix_branches=$(echo “$(git_local_branches)” | grep “^$PREFIX”)
local first_branch=$(echo ${hotfix_branches} | head -n1)
first_branch=${first_branch#$PREFIX}
[ -z “$hotfix_branches” ] ||
die “There is an existing hotfix branch ($first_branch). Finish that one first.”
}
# 添加delete 参数,函数需要cmd_开头
cmd_delete() {
if [ “$1” = “” ]; then
# 当不指定参数自动去找存在的未关闭的gitflow分支
local hotfix_branches=$(echo “$(git_local_branches)” | grep “^$PREFIX”)
test “$hotfix_branches” = “” && die “There has not existing hotfix branch can delete” && exit 1
else
# 指定参数先判断参数是不是的数量格式
test $# != 1 && die “There only need one parameter indicates the branch to be deleted” && exit 1
hotfix_branches=“$1”
fi
# 当要删除的分支就是当前分支,先checkout到develop分支
test “$hotfix_branches” = “$(git_current_branch)” && echo ‘First checkout develp branch‘; git_do checkout “$DEVELOP_BRANCH”
git branch -D ${hotfix_branches} >/dev/null 2>&1&& echo ‘Delete Successed‘|| die “Did not find branch: [$hotfix_branches]”
}
cmd_start() {
DEFINE_boolean fetch false “fetch from $ORIGIN before performing finish” F
parse_args “$@”
BASE=${2:-$MASTER_BRANCH}
require_version_arg
require_base_is_on_master
require_no_existing_hotfix_branches
# sanity checks
require_clean_working_tree
require_branch_absent “$BRANCH”
require_tag_absent “$VERSION_PREFIX$VERSION”
if flag fetch; then
git_do fetch -q “$ORIGIN” “$MASTER_BRANCH”
fi
if has “$ORIGIN/$MASTER_BRANCH” $(git_remote_branches); then
require_branches_equal “$MASTER_BRANCH” “$ORIGIN/$MASTER_BRANCH”
fi
# create branch
git_do checkout -b “$BRANCH” “$BASE”
echo
echo “Summary of actions:”
echo “- A new branch ‘$BRANCH‘ was created, based on ‘$BASE‘”
echo “- You are now on branch ‘$BRANCH‘”
echo
echo “Follow-up actions:”
echo “- Bump the version number now!”
echo “- Start committing your hot fixes”
echo “- When done, run:”
echo
echo “ git flow hotfix finish ‘$VERSION‘”
echo
}
cmd_publish() {
parse_args “$@”
require_version_arg
# sanity checks
require_clean_working_tree
require_branch “$BRANCH”
git_do fetch -q “$ORIGIN”
require_branch_absent “$ORIGIN/$BRANCH”
# create remote branch
git_do push “$ORIGIN” “$BRANCH:refs/heads/$BRANCH”
git_do fetch -q “$ORIGIN”
# configure remote tracking
git config “branch.$BRANCH.remote” “$ORIGIN”
git config “branch.$BRANCH.merge” “refs/heads/$BRANCH”
git_do checkout “$BRANCH”
echo
echo “Summary of actions:”
echo “- A new remote branch ‘$BRANCH‘ was created”
echo “- The local branch ‘$BRANCH‘ was configured to track the remote branch”
echo “- You are now on branch ‘$BRANCH‘”
echo
}
cmd_track() {
parse_args “$@”
require_version_arg
# sanity checks
require_clean_working_tree
require_branch_absent “$BRANCH”
git_do fetch -q “$ORIGIN”
require_branch “$ORIGIN/$BRANCH”
# create tracking branch
git_do checkout -b “$BRANCH” “$ORIGIN/$BRANCH”
echo
echo “Summary of actions:”
echo “- A new remote tracking branch ‘$BRANCH‘ was created”
echo “- You are now on branch ‘$BRANCH‘”
echo
}
cmd_finish() {
DEFINE_boolean fetch false “fetch from $ORIGIN before performing finish” F
DEFINE_boolean sign false “sign the release tag cryptographically” s
DEFINE_string signingkey “” “use the given GPG-key for the digital signature (implies -s)” u
DEFINE_string message “” “use the given tag message” m
DEFINE_string messagefile “” “use the contents of the given file as tag message” f
DEFINE_boolean push false “push to $ORIGIN after performing finish” p
DEFINE_boolean keep false “keep branch after performing finish” k
DEFINE_boolean notag false “don‘t tag this release” n
parse_args “$@”
require_version_arg
# handle flags that imply other flags
if [ “$FLAGS_signingkey” != “” ]; then
FLAGS_sign=$FLAGS_TRUE
fi
# sanity checks
require_branch “$BRANCH”
require_clean_working_tree
if flag fetch; then
git_do fetch -q “$ORIGIN” “$MASTER_BRANCH” ||
die “Could not fetch $MASTER_BRANCH from $ORIGIN.”
git_do fetch -q “$ORIGIN” “$DEVELOP_BRANCH” ||
die “Could not fetch $DEVELOP_BRANCH from $ORIGIN.”
fi
if has “$ORIGIN/$MASTER_BRANCH” $(git_remote_branches); then
require_branches_equal “$MASTER_BRANCH” “$ORIGIN/$MASTER_BRANCH”
fi
if has “$ORIGIN/$DEVELOP_BRANCH” $(git_remote_branches); then
require_branches_equal “$DEVELOP_BRANCH” “$ORIGIN/$DEVELOP_BRANCH”
fi
# try to merge into master
# in case a previous attempt to finish this release branch has failed,
# but the merge into master was successful, we skip it now
if ! git_is_branch_merged_into “$BRANCH” “$MASTER_BRANCH”; then
git_do checkout “$MASTER_BRANCH” ||
die “Could not check out $MASTER_BRANCH.”
git_do merge --no-ff “$BRANCH” ||
die “There were merge conflicts.”
# TODO: What do we do now?
fi
if noflag notag; then
# try to tag the release
# in case a previous attempt to finish this release branch has failed,
# but the tag was set successful, we skip it now
local tagname=$VERSION_PREFIX$VERSION
if ! git_tag_exists “$tagname”; then
local pts=“-a”
flag sign && pts=“$opts -s”
[ “$FLAGS_signingkey” != “” ] && pts=“$opts -u ‘$FLAGS_signingkey‘”
[ “$FLAGS_message” != “” ] && pts=“$opts -m ‘$FLAGS_message‘”
[ “$FLAGS_messagefile” != “” ] && pts=“$opts -F ‘$FLAGS_messagefile‘”
eval git_do tag $opts “$VERSION_PREFIX$VERSION” “$BRANCH” ||
die “Tagging failed. Please run finish again to retry.”
fi
fi
# try to merge into develop
# in case a previous attempt to finish this release branch has failed,
# but the merge into develop was successful, we skip it now
if ! git_is_branch_merged_into “$BRANCH” “$DEVELOP_BRANCH”; then
git_do checkout “$DEVELOP_BRANCH” ||
die “Could not check out $DEVELOP_BRANCH.”
# TODO: Actually, accounting for ‘git describe‘ pays, so we should
# ideally git merge --no-ff $tagname here, instead!
git_do merge --no-ff “$BRANCH” ||
die “There were merge conflicts.”
# TODO: What do we do now?
fi
# delete branch
if noflag keep; then
# 这个问题很奇怪,在完成分支删除它也会存在当前分支是
# 要删除的分支删除报错的问题,所以先切换走
test “$BRANCH” = “$(git_current_branch)” && git_do checkout “$DEVELOP_BRANCH”
git_do branch -d “$BRANCH”
fi
if flag push; then
git_do push “$ORIGIN” “$DEVELOP_BRANCH” ||
die “Could not push to $DEVELOP_BRANCH from $ORIGIN.”
git_do push “$ORIGIN” “$MASTER_BRANCH” ||
die “Could not push to $MASTER_BRANCH from $ORIGIN.”
if noflag notag; then
git_do push --tags “$ORIGIN” ||
die “Could not push tags to $ORIGIN.”
fi
fi
echo
echo “Summary of actions:”
echo “- Latest objects have been fetched from ‘$ORIGIN‘”
echo “- Hotfix branch has been merged into ‘$MASTER_BRANCH‘”
if noflag notag; then
echo “- The hotfix was tagged ‘$VERSION_PREFIX$VERSION‘”
fi
echo “- Hotfix branch has been back-merged into ‘$DEVELOP_BRANCH‘”
if flag keep; then
echo “- Hotfix branch ‘$BRANCH‘ is still available”
else
echo “- Hotfix branch ‘$BRANCH‘ has been deleted”
fi
if flag push; then
echo “- ‘$DEVELOP_BRANCH‘, ‘$MASTER_BRANCH‘ and tags have been pushed to ‘$ORIGIN‘”
fi
echo
}
篇4:网站日志处理工具Awstats:处理多Apache日志
在linux环境下,开源工具Awstats是一个非常受欢迎的网站日志处理工具,在linux环境安装和配置Awstats比较容易成功,但要同时处理多个Apache日志(比如web集群的环境),还是有许多工作需要做的。
平台环境
1、服务器3个,2个运行Apache的web 服务器,一个专门处理日志的Awstats服务器。
2、运行平台:全部为redhat AS 4。
设计思路
日志处理服务器每天定期从2个Apache服务器获取日志文件,对取得的压缩文件解压,接着把2个单独的日志文件合并成一个,再用Awstats处理生成报告。下面我们就按照这个思路来进行具体的部署。
一、Apache日志的生成和处理
1、Apache日志生成:
通过修改Apache的配置文件 httpd.conf来达到这个目的,下面是某个Apache服务器的配置文件关于日志记录的修改部分:
SetEnvIf Request_URI \.gif image-request
SetEnvIf Request_URI \.jpg image-request
SetEnvIf Request_URI \.png image-request
SetEnvIf Request_URI \.js image-request
SetEnvIf Request_URI \.css image-request
SetEnvIf Request_URI \.swf image-request
ErrorLog /var/log/web/sery.com-error_log
CustomLog “|/opt/Apache2/bin/rotatelogs /var/log/web/sery.com-access%Y%m%d.log.%H 28800 480” combined env=!image-request
在这里简单说明一下上面各个项目的意义。SetEnvIf Request_URI设置判断环境变量“image-request”,“CustomLog ”|/opt/Apache2/bin/rotatelogs /var/log/web/sery.com-access%Y%m%d.log.%H 28800 480“ combined env=!image-request
”表示不记图片请求所产生的日志,并且使用Apache的日志轮转工具rotatelogs对日志进行分割,以年月日及小时方式命名文件,这样用脚本处理日志时就非常方便了。这个CustomLog有点特别,不要把命令前面的“|”等符号写丢了。通过运行Apache服务,将在目录/var/log/web/生成日志文件sery.com-access1120.log.00.
由于使用了日志轮转功能,从上图可以看见2个日志文件。
2、日志备份和压缩:
进入日志所在的目录,把同一天不同时间段的日志合并成一个文件,压缩后移动到另外的一个位置/var/log/weblog-backup。为什么要把它放在另外的位置并且压缩呢?主要的原因是为了在传输时节省时间。当然我们不可能每天手动来执行这个操作,自然而言,用shell脚本来干这个事情了。下面给出脚本的内容:
#!/bin/sh
lastlogdate=`date “+%Y%m%d” -d yesterday`
touch /var/log/web/sery.com-access$lastlogdate.log
for i in /var/log/web/sery.com-access$lastlogdate.log.*;
do cat $i >>/var/log/web/sery.com-access$lastlogdate.log
rm -f $i
done
touch /var/log/web/sery.com-access$lastlogdate.log
gzip /var/log/web/sery.com-access$lastlogdate.log
if ;
then
mv /var/log/web/sery.com-access$lastlogdate.log.gz /var/log/weblog-backup/
fi
rm -rf `find /var/log/weblog-backup/ -atime 7`
把这个脚本命名为merge_log.sh,放在目录/usr/local/bin下面,并赋予执行权限,
然后在自动任务里加入这个任务,让它每天自动执行一次。运行crontab -e 把下面的行加入其中:
5 0 * * * /usr/local/bin/merge_log.sh
为检查脚本的正确性,至少手动执行一遍脚本merge_log.sh,看是否在目录/var/log/weblog_backup生成压缩文件。如果如愿生成类似 sery.com-access20071119.log.gz这样的文件,表明脚本正确地按照我们的意图工作了。
3、允许Awstats取得Apache的日志文件:
部署ftp服务,创建一个ftp用户,然后把这个ftp的用户目录定位到“/var/log/weblog-backup”,即第2步生成压缩文件的目录。使用下列的命令产生ftp用户和指定目录:
# useradd -d /var/log/weblog-backup -s /sbin/nologin sery
# passwd sery
# chmod 755 -R /var/log/weblog-backup
由于vsftpd配置非常容易,这里就不再多说。启用ftp服务,用刚才创建的用户测试一下,看是否可以看见“/var/log/weblog_back”里的文件。
到这一步,我们需要在Apache服务器上进行的操作就结束了。多个Apache服务器,只需要重复上面的操作即可。当然,为了适应你自己的环境,请自行修改相关的目录和文件。
二、获取日志文件
是Awstats服务器从Apache服务器取得日志文件,在本案中,我将从2个Apache服务器取得日志文件。取日志也是每天自动进行一次。有一点必须注意,那就是必须要等“第二步”操作正常结束后再进行取日志;回过头去看“第二步”的“/usr/local/bin/merge_log.sh”执行时间在00:05分,考虑执行程序的开销,估计1小时左右可以完成这个操作,所以在凌晨2点去取文件是合时的。下面给出取日志的脚本:
#!/bin/bash
wget --active-ftp -m --directory-prefix=/root/logs/web1/ --tries=3\ --output-file=/root/script/weblog-get.log\ ftp://sery:heufgewUQc@www1.sery.com/sery*.gz
wget --active-ftp -m --directory-prefix=/root/logs/web2/ --tries=3\
--output-file=/root/script/weblog-get.log \
ftp://sery: heufgewUQc@www2.sery.com/sery*.gz
脚本成功运行后,将把第一个Apache服务器的日志文件放在“/root/logs/web1”目录,第2个Apache服务器的日志文件放在“/root/logs/web2”目录,并且把操作日志记录到文件“/root/script/weblog-get.log”,以方便检查脚本执行的状况。把这个脚本放在目录/usr/local/bin下,命名为weblog-get.sh,赋予执行权限,然后手动运行脚本/usr/local/bin/weblog-get.sh,看是否取得了远程Apache服务器的2个压缩日志文件。正确无误后,把它加在crontab 里。
crontab -e
00 02 * * * /usr/local/bin/weblog-get.sh
每天凌晨2点,Awstats所在的服务器就会主动从2个远程的Apache服务器取来日志文件。
篇5:世上最强的3D制作工具(多图)
在今年四月份,德国开发团队.theprodukkt发布了首个功能完整但大小却只有96KB的人物射击游戏.kkrieger之后声名雀起,现在,.theprodukkt再度重拳出击,推出了基于上述游戏的全新技术:可以创作最终文件大小只有64 KB的3D展示和模型的综合工具Werkkzeug1。
和.kkrieger相比,Werkkzeug1的功能极为强大,它是开发人员创建非交互式动画的“重要工个”。其主要特性为:可以快速而又强大的创邮所见即所得的2D创作引擎、纹理和网状生成器、图象后加工、JPG导入、粒子系统、简单的Spline编辑器和安排动画动作的时间轴。另个,它还带有一个在编辑器中实时生成及回放动画性能的播放器软件。
不过有兴趣使用Werkkzeug1的用户,必须作好牺牲一定时间的准备。照目前看来,使用Werkkzeug1创建一个简单的演示,视乎内容的丰富程度而定一般都需要数个小时的工作。而创建细节复杂的动画甚至可能会花费用户几个月的时间。
感兴趣的朋友可以点击这里下载大小为629 KB的Werkkzeug1 V.1200版;点击这里下载大小只有96 KB的.kkrieger游戏第一章测试版。
点击阅读更多学院相关文章>>
分享到 下面的多张截图为您展示这个强大的3D制作工具的性能,请大家欣赏。
一、werkkzeug1的操作:
1、在简单的操作子中撰写纹理、网状、场景和整个演示!
2、导入JPG的软图象 xsi和光波场景:
点击阅读更多学院相关文章>>
分享到3、动态化场景并组成演示:
4、制作效果:
点击阅读更多学院相关文章>>
分享到二、.kkrieger游戏界面:
点击阅读更多学院相关文章>>
分享到
点击阅读更多学院相关文章>>
分享到 上一页 12345 6
点击阅读更多学院相关文章>>
分享到
篇6:英特尔发布新版软件工具开启多内核平台潜能
6月14日,加利福尼亚,圣塔克莱拉讯??英特尔公司今天发布了英特尔编译器的最新版本9.0,该最新版本的编译器可帮助软件开发人员在多内核平台上构建线程化应用程序从而获得最优性能,支持C和Fortran编程语言的英特尔编译器9.0版还有助于改善Linux和Windows应用程序的安全保护。
软件开发人员可以使用这些编译器将编程语言(如C)转换为处理器可识别的语言。英特尔的编译器旨在帮助软件开发人员改进其运行在各种平台上应用程序的性能,从手持设备到台式机、笔记本、服务器和超级计算机。
“随着多内核平台需求的增长,软件供应商面临绝佳机遇:在架构实现重大转变之际,增强其产品的性能,为其添加新功能,并进行革新。”英特尔公司软件产品部门总经理BillSavage说,“作为全球技术领先的编译器之一,英特尔编译器9.0版可帮助C和Fortran开发人员加速开发其面向多内核及线程化环境的应用程序。”
英特尔编译器可帮助开发人员开发多线程应用程序,从而更充分地利用Intel的多内核和超线程(Hyper-Threading)技术。英特尔编译器9.0版包括自动并行选项,可自动在应用程序中寻找机会创建多个执行线程,它还全面支持OpenMP*2.5,并为未来的扩展提供额外支持,
penMP是一项行业标准,它可简化多线程应用软件的创建和管理。英特尔编译器9.0版是英特尔软件开发产品套件的最新产品。该套件可为多内核处理器生成最优化的二进制代码,使多内核应用程序更加高效,并扩大公司对多内核开发的支持。
该编译器的创新特性使软件开发人员甚至能够调试由这些新版编译器生成的最优化代码,这一改进可使应用程序部署的最后一步更容易。一般而言,使用优化程序会使调试变得困难甚至无法进行。
此外,通过减少缓冲区溢出缺陷,这些工具还能够为Linux环境提供应用程序级的安全支持选项,这可以与Windows环境的安全特性相媲美。这些安全选项是对C和C应用程序安全性的重大改进,而同时只对编译的应用程序产生很小的开销。
英特尔C编译器9.0版现已上市,Windows或Linux版本RMB3990起,英特尔Fortran编译器9.0版也已上市,Windows或Linux版本RMB4990起。
要了解更多产品信息,请访问www.intel.com/software/products
篇7:如何让传统装配工具适应多品种、中小批量的当代生产模式
如何让传统装配工具适应多品种、中小批量的当代生产模式
扭矩扳手用于机械装配已有较长历史,对控制螺纹付连接的质量、特别是批量生产下的装配作业发挥了很大的作用.不可否认,由于各种气动扳手,尤其足高精度电动拧紧枪的不断发展和扩大应用,这一二十年来,扭矩扳手的覆盖面已有所减小.但鲜明的技术特点如结构紧凑、简单耐用,灵活机动、价格较低等,决定了它们在制造业特别是汽车行业中的存在价值.考察不久前才投入批量生产的一些商用车、乘用车生产厂,无论是在整车的'总装线还足在动力总成的装配线上,定值式扭矩扳手依旧占了装配拧紧工具中的很大比例,包括在一些比较重要的连接部位.
作 者:朱正德 作者单位: 刊 名:重型汽车 英文刊名:HEAVY TRUCK 年,卷(期):2009 “”(2) 分类号:U46 关键词:【MariaDB Galera Cluster 多 master 集群的工具】相关文章:
3.采集工具大比拼
4.课件制作工具
6.金融衍生工具
7.工具管理概述
9.工具主义的造句
10.幼儿园课件制作工具






文档为doc格式