组保留的标签 余下为需要删除的标签
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;
}
?> $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;
}
?>
新手必看 | 深度剖析:32位与64位操作系统的优劣对比编程频道|福州电脑网
新手必看 | 深度剖析:32位与64位操作系统的优劣对比
编程之家80
更新时间:2026-04-03 20:31:02
一、x86 与 x64
1978 年 6 月 8 日,Intel 发布微处理器 “8086”,也同时开创了一个新时代:x86 架构诞生了。
8086 发布时,它的指令集合还并没有 “x86” 的叫法。只不过由于 intel 后续大火的处理器如 286、386、486 等等命名上都是以86 结尾,并且他们都是同样的一套指令集合,所以人们才将这一套指令集合称为 “x86”。
x86 从 1985 年发布的 Intel 80386 处理器开始使用「32 位架构指令集」,称之为 x86_32(此前都是 16 位)。
随着 Intel 不断推出新的 32 位处理器,慢慢地,大家发现 32 位 和 x86 通常指的都是一个东西。所以 32 位也被简称为 x86 ,这也是为什么现在我们看到的 x86,几乎都默认指 32 位。 32 位,指的是 CPU 一次能处理的最大数据是 32 位宽,即 4 个字节。这种 CPU 内部寄存器和寻址总线是 32 位,指令集可以运行 32 位数据指令。
具有这样特性的 CPU 我们叫 32 位 CPU,而针对这样的 CPU 设计的操作系统,人们就称为 32 位操作系统。
32 位支持的内存是 2^32 Byte,也就是最大只支持 4 GB 内存。
实际上这个限制是 windows 系统的限制,intel 32 位 cpu 可以通过 pae 解决内存寻址问题,当年 intel 觉得 64 位没必要,AMD 在英特尔之前发布了 64 位 处理器,并将其命名为「AMD 64」,从此 x86 正式进入了 64 位 的时代。 64 位 不光数字上领先 32 位,在性能和应用场景上也得到了大幅提升。
之后英特尔也跟进推出了与之兼容的处理器,命其为「Intel 64」,两者被统称为 x86_64。 所以,x86 的本意,其实同时包含「32 位和 64 位」 。大多数人,不能接受 x86_32 and x86_64 这种说法,于是 x86_64 被简称成了 x64。
二、什么是 “位”?
在计算机中,数据存储单位最小的单位就是位(bit),这个单位存放着一位二进制数:0 或者 1。
计算机硬件方面:一个字节(B)= 8 位,32 位处理器一次性可以处理 4 个字节的数据量。64 位处理器一次可以处理 8 个字节的数据量。CPU 位数指的是一个时钟周期内,处理器同时寄存和处理的二进制位数。
CPU 的位数 = CPU 当中寄存器的位数= CPU 一次并行处理的数据宽度。 计算机软件方面:操作系统也有位数的区别,但是操作系统的位数是依赖 CPU 的位数的,且操作系统的位数是依赖于指令集的位数的。
三、什么决定 “位”?
处理器(CPU)决定了您的计算机体系结构,是 32 位还是 64 位。
现在大多数计算机处理器都属于这两类中的一种。但是在过去的这些年,64 位一直在取代 32 位,因为 64 位处理器比 32 位处理器的功能强大得多,还可以容纳和处理更多信息。 除了硬件,软件的支持也同样重要。例如 32 位的操作系统在支持 64 位处理器的前提之下,处理器是可以处理 64 位的数据的。但是由于操作系统每次只控制处理器读取 32 位宽度的数据。整体来看,还是只实现了 32 位的功能。
四、如何查看 “位”?
Win10 用户可以直接点击【设置】【系统】【关于】,在设备规格中可以查看到自己的电脑位数。
本文发布于:2026-03-02,感谢您对本站的认可!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:处理器位操作系编程
发布评论