($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;
}
?>
手把手教你使用hdtune:全面掌握硬盘健康检测技巧-软件玩家 - 软件改变生活!
初识hdtune:它到底是什么?
记得第一次听说hdtune的时候,我正对着电脑里慢如蜗牛的硬盘发愁。朋友拍了拍我的肩膀,说:“试试这个吧,老牌工具了。”我半信半疑地下载下来,才发现它就像个硬盘的老中医,能把脉问诊,看出不少毛病。hdtune其实是一款硬盘实用程序,专门用来检测硬盘的健康状态、性能表现,还能扫描错误。对于咱们普通用户来说,它是个免费又轻量的小工具,不需要安装,解压就能用,特别适合那些对电脑硬件一知半解但又想自己动手维护的朋友。
下载与安装:第一步别走错
下载hdtune可得留个心眼,毕竟网上乱七八糟的版本太多了。我当年就差点中招,下了一个带捆绑软件的。后来学乖了,总是去官网或者靠谱的下载站找。它的安装过程简单到让人惊讶——几乎就是解压然后双击运行。我习惯把它放在D盘的一个文件夹里,这样重装系统也不会丢。第一次打开时,界面那种复古的风格让我愣了一下,但很快我就发现,功能都摆在那儿,一目了然。
主界面一览:功能都在这里了
打开hdtune,主窗口上方是一排标签页,分别是“基准”、“信息”、“健康”、“错误扫描”、“文件夹占用”和“温度”。中间的大片区域用来显示数据和图表。右边则列出了检测到的硬盘列表,你可以下拉选择要检查的哪个驱动器。我刚用的时候,被那些数字和曲线搞得有点晕,但多看几次就明白了。界面虽然不算华丽,但实用性强,每个按钮点下去都有反馈,这让我觉得挺踏实。
健康检测:看看你的硬盘还硬朗吗
健康检测是我最常用的功能,每次帮朋友看电脑,我都会先点开这里。标签页里列出了一堆属性,比如“重新分配扇区计数”、“启动/停止计数”、“通电时间”等等。每个属性后面都有数据和状态,通常用绿色、黄色或红色图标表示。我第一次看到自己硬盘的通电时间超过一万小时时,心里咯噔一下,但状态还是绿色,这才松了口气。这些数据就像体检报告,能提前预警硬盘的潜在问题,比如坏道或者老化。我有个习惯,每个月都查一次,就好像给硬盘做例行检查。
性能测试:跑个分试试速度
性能测试特别有意思,它能给你硬盘的读写速度画个曲线图。点开“基准”标签,然后按“开始”按钮,软件就会开始测试。看着那条曲线上下波动,我的心也跟着起伏。测试结果会显示平均速度、最大最小速度和访问时间。我记得第一次测试我的旧硬盘,平均读取速度才50MB/s,而新买的固态硬盘轻松跑到300MB/s以上,那种对比带来的冲击让我立马决定升级。不过要注意,测试期间最好别运行其他程序,不然数据不准,我吃过这个亏。
错误扫描:揪出隐藏的坏道
错误扫描是个需要耐心的活儿,尤其是对大容量硬盘。这个功能会逐个扇区检查硬盘,找出坏道或者读写有问题的区域。扫描模式有“快速扫描”和“完整扫描”两种,我一般先用快速扫描大致看看,如果没发现问题,再找时间做完整扫描。扫描过程中,绿色的方块表示好扇区,红色的表示坏扇区。有一次,我在一块老硬盘上发现了几个红点,赶紧把重要数据备份出来,没过多久那硬盘就彻底罢工了。所以,定期扫描真的能救你的数据一命。
文件夹占用:谁偷了你的空间?
硬盘空间莫名其妙不够用?这个功能帮了我大忙。点开“文件夹占用”,选择驱动器,它就会分析每个文件夹的大小,用树状图展示出来。我第一次用的时候,发现系统盘里有个临时文件夹占了足足20GB,清理之后瞬间轻松。它还能按大小排序,让你一眼看出哪个文件夹最占地方。对于我这种喜欢乱丢文件的人来说,这功能简直是救星。我现在每隔几周就扫一次,保持硬盘整洁。
温度监控:别让硬盘发烧了
硬盘温度太高会影响寿命,hdtune的温度监控功能虽然简单,但很实用。在“温度”标签页里,它会显示当前硬盘的温度,还有历史曲线。我的笔记本电脑硬盘在夏天经常飙到50度以上,后来我加了个散热底座,温度才降下来。监控温度能让你及时采取措施,比如改善机箱通风或者清理灰尘。我把它最小化到系统托盘,随时瞟一眼,心里有底。
高级功能:那些你可能不知道的用法
除了基本功能,hdtune还有一些高级设置。比如在“信息”标签页,它能显示硬盘的详细规格,比如固件版本、序列号、支持的特性等。这些信息在购买二手硬盘或者排查兼容性问题时很有用。另外,软件支持AAM(自动噪音管理)调整,可以控制硬盘的噪音和性能平衡。我曾在夜深人静时调整过,确实能让硬盘安静一些。不过这些功能需要小心使用,改错了可能影响稳定性。
使用心得:我的个人经验分享
用了hdtune这么多年,我攒下不少经验。首先,别等到电脑出问题了才想起来检测,定期检查才是王道。其次,看懂数据比盲目测试更重要,我花时间研究过每个健康属性的含义,这让我能更准确地判断硬盘状态。还有,测试结果受很多因素影响,比如系统负载、硬盘碎片程度,所以要多测几次取平均值。最后,hdtune虽好,但它不是万能的,重要数据一定要备份,再健康的硬盘也有突然挂掉的风险。这些经验都是我从教训中学来的,希望你能少走弯路。
常见问题:你可能会遇到的坑
新手用hdtune,常会碰到一些疑惑。比如为什么测试速度忽高忽低?这可能是后台程序干扰,或者硬盘本身有波动。为什么健康状态显示黄色警告?不一定马上坏,但得密切关注。还有,软件不支持某些新型号的固态硬盘?这时可能需要更新版本或者用其他工具辅助。我当初也纠结过这些问题,后来在论坛里泡久了,才慢慢搞懂。遇到问题别慌,多查查资料,或者问问有经验的人。
结尾絮语:工具只是工具
hdtune就像一把螺丝刀,帮你拧紧硬盘的螺丝,但最终还得靠你自己维护。我享受那种自己动手、搞清楚电脑状况的感觉,这让我对机器有了更深的理解。每次打开hdtune,看到那些跳动的数字,我仿佛能听到硬盘的呼吸声。当然,它界面有点老土,功能也不算最新潮,但稳定可靠,这就够了。希望你能用它守护好你的数据,毕竟那些照片、文档和回忆,都是无价的。好了,就说这么多,快去试试吧,说不定会有惊喜。
本文标签:
硬盘
更多相关文章
当电脑不再认识你的移动硬盘:一次数据危机的情感与技术应对
那个崩溃的下午:硬盘无声无息 记得那是一个周末的下午,阳光透过窗帘洒在书桌上,我正准备整理多年积攒的照片和文档。移动硬盘轻轻插入USB接口,等待中却听到电脑发出“噔”的一声提示音,右下角弹出“USB设备无法识别”的窗口。我的心跳漏了一
固态硬盘4K对齐:揭秘性能飞跃的关键,告别卡顿从这里开始
那次让我抓狂的电脑卡顿 记得上周六晚上,我正急着赶一份报告,电脑却像老牛拉车一样慢。点击一个文件,光标转圈圈;保存文档,进度条磨蹭半天。我差点把鼠标摔了!作为一个自诩的电脑爱好者,这简直是一种羞辱。后来,在朋友提醒下,我检查了固态硬盘的
当你的硬盘亮起红灯,跟着这份教程快速恢复数据吧!
笔记本硬盘数据恢复不同于台式电脑的硬盘,笔记本硬盘是专为像笔记本电脑这样的移动设备而设计的,具有小体积,低功耗,防震等特点。一般笔记本硬盘都是2.5英寸的,更小巧的做到了1.8英寸。这些特点使得它的应用相当广泛,但是缺点也暴露的
省钱攻略:不花大价钱也能提升电脑性能的升级路线
较新的电脑,建议的升级顺序是内存>硬盘>CPU(主板)>显卡。 较旧的电脑,建议的升级顺序是CPU(主板)>内存>硬盘>显卡。CPU(主板):性价比低 较新的电脑,比如英特
发表评论