($width) AND $width .= 'px';
$style = " style=\"width: $width\"";
}
$value = $value ? $value : date('H:i');
$s = "";
return $s;
}
// form_date('start', '2018-07-05') 为空则当前日期
function form_date($name, $value = 0, $width = FALSE)
{
$style = '';
if (FALSE !== $width) {
is_numeric($width) AND $width .= 'px';
$style = " style=\"width: $width\"";
}
$value = $value ? $value : date('Y-m-d');
$s = "";
return $s;
}
/**用法
*
* echo form_radio_yes_no('radio1', 0);
* echo form_checkbox('aaa', array('无', '有'), 0);
*
* echo form_radio_yes_no('aaa', 0);
* echo form_radio('aaa', array('无', '有'), 0);
* echo form_radio('aaa', array('a'=>'aaa', 'b'=>'bbb', 'c'=>'ccc', ), 'b');
*
* echo form_select('aaa', array('a'=>'aaa', 'b'=>'bbb', 'c'=>'ccc', ), 'a');
*/
?>组保留的标签 余下为需要删除的标签
unset($oldtag[$key]);
}
}
}
if (!empty($oldtag)) {
$tagids = array();
foreach ($oldtag as $tagid => $tagname) {
$tagids[] = $tagid;
}
well_oldtag_delete($tagids, $tid);
}
$r = well_tag_process($tid, $fid, $create_tag, $tagarr);
return $r;
}
// 删除标签和绑定的主题
function well_oldtag_delete($tagids, $tid)
{
$pagesize = count($tagids);
$arrlist = well_tag_find_by_tagids($tagids, 1, $pagesize);
$delete_tagids = array(); // 删除
$tagids = array();
$n = 0;
foreach ($arrlist as $val) {
++$n;
if (1 == $val['count']) {
// 只有一个主题
$delete_tagids[] = $val['tagid'];
} else {
$tagids[] = $val['tagid'];
}
}
!empty($delete_tagids) and well_tag_delete($delete_tagids);
$arlist = well_tag_thread_find_by_tid($tid, 1, $n);
if ($arlist) {
$ids = array();
foreach ($arlist as $val) $ids[] = $val['id'];
well_tag_thread_delete($ids);
}
!empty($tagids) and well_tag_update($tagids, array('count-' => 1));
}
// 标签数据处理 $arr=新提交的数组 $tagarr=保留的旧标签
function well_tag_process($tid, $fid, $new_tags = array(), $tagarr = array())
{
if (empty($tid)) return '';
// 新标签处理入库
if ($new_tags) {
$threadarr = array();
$tagids = array();
$i = 0;
$size = 5;
$n = count($tagarr);
$n = $n > $size ? $size : $size - $n;
foreach ($new_tags as $name) {
++$i;
$name = trim($name);
$name = stripslashes($name);
$name = strip_tags($name);
$name = str_replace(array(' ', '#', "@", "$", "%", "^", '&', '·', '<', '>', ';', '`', '~', '!', '¥', '……', ';', '?', '?', '-', '—', '_', '=', '+', '.', '{', '}', '|', ':', ':', '、', '/', '。', '[', ']', '【', '】', '‘', ' ', ' ', ' ', ' ', ' '), '', $name);
$name = htmlspecialchars($name, ENT_QUOTES);
if ($name && $i <= $n) {
// 查询标签
$read = well_tag_read_name($name);
if ($read) {
// 存在 count+1
$tagids[] = $read['tagid'];
} else {
// 入库
$arr = array('name' => $name, 'count' => 1);
$tagid = well_tag_create($arr);
FALSE === $tagid and message(-1, lang('create_failed'));
$read = array('tagid' => $tagid, 'name' => $name);
}
$tag_thread = array('tagid' => $read['tagid'], 'tid' => $tid);
$threadarr[] = $tag_thread;
$tagarr[$read['tagid']] = $read['name'];
}
}
!empty($threadarr) and tag_thread_big_insert($threadarr);
!empty($tagids) and well_tag_update($tagids, array('count+' => 1));
}
$json = empty($tagarr) ? '' : xn_json_encode($tagarr);
return $json;
}
?>return $r;
}
/**
* @param int $page 页数
* @param int $pagesize 每页显示数量
* @return mixed
*/
function link_find($page = 1, $pagesize = 100)
{
$arr = link__find($cond = array(), array('rank' => -1), $page, $pagesize);
return $arr;
}
/**
* @param $id
* @return bool 返回FALSE失败 TRUE成功
*/
function link_delete($id)
{
if (empty($id)) return FALSE;
$r = link__delete(array('id' => $id));
link_delete_cache();
return $r;
}
//--------------------------kv + cache--------------------------
/**
* @return mixed 返回全部友情链接
*/
function link_get($page = 1, $pagesize = 100)
{
$g_link = website_get('friends_link');
if (empty($g_link)) {
$g_link = link_find($page, $pagesize);
$g_link AND website_set('friends_link', $g_link);
}
return $g_link;
}
// delete kv and cache
function link_delete_cache()
{
website_set('friends_link', '');
return TRUE;
}
?> $v = implode(",", $v);
$temp[] = $v;
}
// 去掉重复的字符串,也就是重复的一维数组
$temp = array_unique($temp);
// 再将拆开的数组重新组装
$output = array();
foreach ($temp as $k => $v) {
if ($stkeep) $k = $starr[$k];
if ($ndformat) {
$temparr = explode(",", $v);
foreach ($temparr as $ndkey => $ndval) $output[$k][$ndarr[$ndkey]] = $ndval;
} else $output[$k] = explode(",", $v);
}
return $output;
}
// 合并二维数组 如重复 值以第一个数组值为准
function array2_merge($array1, $array2, $key = '')
{
if (empty($array1) || empty($array2)) return NULL;
$arr = array();
foreach ($array1 as $k => $v) {
isset($v[$key]) ? $arr[$v[$key]] = array_merge($v, $array2[$k]) : $arr[] = array_merge($v, $array2[$k]);
}
return $arr;
}
/*
* 对二维数组排序 两个数组必须有一个相同的键值
* $array1 需要排序数组
* $array2 按照该数组key排序
* */
function array2_sort_key($array1, $array2, $key = '')
{
if (empty($array1) || empty($array2)) return NULL;
$arr = array();
foreach ($array2 as $k => $v) {
if (isset($v[$key]) && $v[$key] == $array1[$v[$key]][$key]) {
$arr[$v[$key]] = $array1[$v[$key]];
} else {
$arr[] = $v;
}
}
return $arr;
}
?>
windows安装虚拟机(VMware)-软件玩家 - 软件改变生活!
一、下载虚拟机软件
由于我们选择的是在一个操作系统上运行另外一个操作系统,要搭建虚拟机,肯定需要一个能提供虚拟机的软件,VMware就是一个常用的虚拟机的软件。
1、下载VMware
VM的安装步骤请自行上网搜索。
下载网址:https://www.vmware/cn/products/workstation-pro/workstation-pro-evaluation.html
2、创建主节点
1)理由
搭建集群需要多个节点(机子),通常都是一主多从的方式。
主节点就是主要的节点,对应的,从节点就是仅次于主节点的节点。
通常节点的命令方式有以下两种:
1)主节点 叫 master ,从节点叫slave1,slave2,slave3……
2)主节点 叫 node1,从节点叫node2,node3,node4……
我个人推荐采用node的命令方式。
2)创建步骤
打开Vmware,最开始页面,点击创建新的虚拟机
连续点击两个下一步,进入如下界面,选择图示选项,然后下一步
确定虚拟机名字,安装路径,点击下一步
分配磁盘大小,具体多大根据需求和电脑硬盘大小决定,这里是40G
点击自定义硬件
将虚拟机的内存设置大一点,这里设置为4G,然后点击关闭
点击完成
在新生成的界面处,点击红框处
使用本地下载好的iso映像文件,点击确定
补充:
iso映像文件下载地址:http://mirrors.aliyun/centos/7/isos/x86_64/
推荐下载CentOS-7-x86_64-DVD-2009.iso
点击编辑虚拟机设置,设置处理器内核数,根据实际电脑承受能力来决定,点击确定退出。
3、开启主节点
点击开启node1虚拟机,点击第一个安装,等待进入新的界面
选择第一个安装(通过方向键可上下选择)
进入系统语言设置界面,可以选 中文或英文
配置软件选择
按以下操作来选择,确定后回到上一个画面
点击配置安装位置,点击安装位置,选择我要配置分区
点击完成,进入手动分区,点击“+”号
这里我们添加四个分区,每个分区分配多少空间,按需分配,只要总和不大于先前设置的40G即可。
第一个分区,/boot 5G
第二个分区,/ 20G
第三个分区, /home 10G
第四个分区 swap 5G
最终效果为:
然后给每个挂载点选择合适的文件系统,swap选swap,其它三个分区都选ext4
完成并接受更改
点击开始安装,顺便建立root用户和其它用户,我的密码统一采用123
安装成功后,会弹出一个图形界面,显示一系列选择,按个人喜欢去选,最终得到这样的一个界面
这是linux的默认的图形界面,我们常用的是字符界面(黑屏),我们将默认打开的界面设置为字符界面,步骤如下:
1)右键桌面,打开终端,输入以下语句然后回车,设置登录模式为命令模式;
systemctl set-default multi-user.target
2)输入reboot,重启检验;
重启后的效果:
补充:
1. ctrl+alt可以将鼠标脱离出虚拟机;
2. 两种页面切换命令:
1)临时切换
init 3 #图形进入字符
init 5 #字符进入图形
2)永久切换
systemctl set-default multi-user.target #默认打开字符
systemctl set-default graphical.target #默认打开图形
到这里,主节点已经创建好了。
3、创建从节点
从节点我们通常采用克隆主节点的方式,克隆的次数根据需求所定,通常次节点不少于2个,我们以搭建2个从节点为例。
1)软件克隆
先关闭虚拟机,右键node1,点击管理,选择克隆
选择创建完整克隆
选择node2安装路径,建议与node1的路径在同一目录下
重复以上操作,创建出node3
二、其它问题
关闭vm后,发现无法打开刚新建好的虚拟机,原因可能是:
- 没有关闭防火墙;
- 软件运行权限不够,用管理员身份去运行VMware即可。
本文标签:
虚拟机WindowsVMware
发表评论