($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中设置Ubuntu的EFI分区和Boot引导,一文精通!-软件玩家 - 软件改变生活!
一、前期准备
(1)Ubuntu不同版本iso文件下载:
(2)U盘刻录软件:
导入iso文件即可,其他设置基本是默认(特殊情况还没遇到过)
(3)磁盘分出空间
“此电脑” -> “管理” ->“磁盘管理”
分出自己所需的磁盘空间,(懒得弄SSD盘的启动文件,直接在HDD上分出500G的空间)
二、系统原理
(1)电脑的启动方式
首先是电脑的启动方式:
启动方式
是指如何主板上的固件在开机自检后如何找到引导程序,有
Legacy模式
(BIOS + MBR)和
UEFI模式
(UEFI _+ GPT)。
(2)动态硬盘的问题
电脑的固态盘之前被我转换成了动态磁盘,在动态磁盘下硬盘无法分成多个分区,因此需要下载“分区助手”的“动态磁盘转换器”将动态磁盘重新改回basic基本盘。
但这里有个坑,就是通过这种方法转换来的磁盘很大可能是MBR的格式,这样会在Ubuntu系统分区的时候带来问题【在(6)中叙述】。
(3)分区不可用的问题
在分完“/分区”以后,出现磁盘分区不可用的情况,无法为/home分区分配空间。是因为磁盘被转化为了MBR格式。
MBR格式
:它在一个硬盘上只能有四个主分区,而装 Win7 的话,一下就会用掉两个(C盘和一个隐藏分区)。剩下两个主分区,其中一 需要作为扩展分区,因为只有在扩展分区中才能继续划分分区。还剩一个可以给 Ubuntu 的启动分区用(比如单独分出 /boot 或直接挂载 /),剩下的就都得丢到扩展分区里。
建议
:
(1)如果磁盘没有用过或者里面文件都备份过,那么直接转成GPT格式(因为转换过程会丢失原磁盘中文件)
(2)如果磁盘中文件不易删除,那么你的windows中就不要分两个硬盘了(最多分到D盘)。或者Ubuntu 系统中不分“/home”分区了。
三、磁盘空间分配
(1)双系统(Ubuntu空间500G以上)方案
|
挂载点(目录)
|
建议大小
|
格式
|
分区类型
|
描述
|
|
EFI引导分区
|
512M
|
ext4
|
逻辑分区
|
放在空间起始位置
|
|
/swap
|
16G(物理内存两倍)
|
swap交换空间
|
逻辑分区
|
相当于虚拟内存,内存<=8G的时候,大小等于虚拟内存两倍;
内存>=16G的时候,大小等于虚拟内存。
|
|
/tmp
|
5G~10G(
可选
)
|
ext4
|
逻辑分区
|
放置系统临时文件,系统重启后不会保存,若可分配空间小,可以分配。
|
|
/usr
|
25G(
可选
)
|
ext4
|
逻辑分区
|
可不分,系统文件全放在/下
|
|
/
|
50G~100G(1/4 * 剩余可分配空间)
|
ext4
|
主分区
|
用于安装系统和软件,相当于windows的C盘,
(1)来存储系统文件,如果不分/tmp,/etc,/bin,usr等分区的话,它们就都会挂到这个分区来。
(2)
如果单独分/usr挂载点的话,就分15G;如果不单独分/usr的话,就分50G。
|
|
/home
|
3/4 * 剩余可分配空间
|
ext4
|
逻辑分区
|
相当于windows的其他盘,剩下的全分给它,逻辑分区
|
|
/boot
|
1G
|
ext4
|
逻辑分区
|
存放linux内核,用来引导系统的;
如果是Legacy启动就要设置引导;UEFI就不用设置这个(UEFI要设置EFI分区)
|
启动设备选择efi分区
找到对应efi分区的的对应设备分区编号,比如下图所示的/dev/sdb2,下拉“Device for boot loader installations"列表,找到对应设备分区编号,然后点击“Install Now”。
windows下查看的ubuntu对应分区图(网图)
:
(2)单机(固态256+机械1t)纯ubuntu20.04分配方案
|
挂载点(目录)
|
盘
|
建议大小
|
格式
|
分区类型
|
描述
|
|
/boot
|
固态
|
2G
|
ext4
|
主分区
|
(1)这台电脑好像是legacy+MBR,挂载点找不到EFI分区,因此选择了/boot分区。
(2)放在主分区好像有好处
|
|
/swap
|
固态
|
16G(物理内存两倍)
|
swap交换空间
|
逻辑分区
|
如上
|
|
/
|
固态
|
150G
|
ext4
|
主分区
|
如上
|
|
/usr
|
机械
|
200G
|
ext4
|
逻辑分区
|
存放用户程序,一般在/usr/bin中存放发行版提供的程序,用户自行安装的程序默认安装到/usr/local/bin中
|
/home
| |
500G
|
ext4
|
逻辑分区
|
相当于windows的其他盘,剩下的全分给它,逻辑分区
|
安装启动器的位置放在了dev/nvme0n1。
(3)虚拟机方案
二、UEFI分区和BOOT分区的区别
如果是UEFI+GPT分区表模式,那么给ubuntu分区的时候不用设置/boot分区,设置efi系统分区;如果是legacy+MBR分区表那么就要设置/boot分区。
20.04 需要EFI分区
boot
,启动分区。很多地方建议设置100M到200M,但是有这种说法提倡不要划分boot分区:
boot分区随着linux内核的发展,从原来的几百M逐渐扩大为1g以上,因此原来几百M的分配空间不再满足需求,现在基本要1g左右的空间。
参考:
最后分区结果
/boot
├── efi
│ ├── EFI
│ │ ├── Boot
│ │ ├── fedora
│ │ ├── Microsoft
│ │ └── ubuntu
│ └── System
└── grub
├── fonts
├── locale
└── x86_64-efi
参考:
本文标签:
格式逻辑分区分区
更多相关文章
CR2转JPG?这里有个简单易行的方法
如何将cr2格式图片转换成JPG格式呢?JPG格式是广泛使用的图片格式,几乎所有的电脑、智能手机、平板电脑和其他设备都支持JPG格式。相比之下,CR2格式只能在部分相机品牌和软件中查看和编辑。将CR2格式图片转换成JPG格式可以使图片
Adobe Flash Player出错?一招教你快速修复
当在虚拟机里面键盘无法使用时,可能是360限制了,打开360安全卫士——安全防护中心——键盘记录防护选择关闭; 怎么判断网络故障节点出现的具体位置? cmd打开的界面就是MSDOS界面。 1、 检测
CR2变JPG,电脑里的摄影作品华丽变身指南!
如何将cr2格式图片转换成JPG格式呢?JPG格式是广泛使用的图片格式,几乎所有的电脑、智能手机、平板电脑和其他设备都支持JPG格式。相比之下,CR2格式只能在部分相机品牌和软件中查看和编辑。将CR2格式图片转换成JPG格式可以使图片
揭秘!佳能相机拍出双ISO照片的快速转换方法
简介:佳能插件双ISO文件转换工具是一款专为处理由特定插件拍摄产生的双ISO格式照片设计的软件。双ISO技术允许在一张照片中同时捕捉高光与阴影细节,扩展动态范围。此工具能将这些照片转换为标准的RAW或JPEG格式,便于后期处理。转换过
电脑小白也能学会的CR2到JPG转换指南:简单几步实现照片分享
如何将cr2格式图片转换成JPG格式呢?JPG格式是广泛使用的图片格式,几乎所有的电脑、智能手机、平板电脑和其他设备都支持JPG格式。相比之下,CR2格式只能在部分相机品牌和软件中查看和编辑。将CR2格式图片转换成JPG格式可以使图片
从新手到大师:PHP中的ISO8601,时间处理不再难
在日常开发中,日期格式的处理是一个常见的问题。ISO日期格式是一种统一的日期格式,在不同语言、不同平台间具有通用性。因此,PHP工程师在日常开发中应该掌握使用ISO日期格式的方法。 一、ISO日期格式简介 ISO日期格
从 ISO8601 到现实世界:日期格式解析指南(display.rs版)
文件概述 这个 display.rs文件为 ISO 8601 库中的核心类型实现了 Displaytrait,提供了符合标准的人类可读格式输出功能。 核心格式化实现
鬼影大法:一步到位备份你的系统盘C!
推荐用U盘制作启动工具 大白菜or老毛桃 备份:以老毛桃为例,进入PE,点击左下角开始,可见ghost功能选项 运行Ghost后,单击“OK”。 选择“Local”→“Partition”→“
Windows环境下的Ubuntu系统安装秘籍:创建自由分区篇
联想Win10安装Ubuntu双系统教程 分区 swap 分4G-8G,剩下的都分给根目录 启动u盘制作参考: 一、分区---分出来一个磁盘,用于安装Ubuntu( 1
新电脑?不用愁!五分钟内完成磁盘分区
咱们新买来的电脑,在存储上一般都会面临两个小问题。 一、如何在不破坏系统的情况下进行分区 二、加装硬盘后如何设置才可以用 今天小A来带大家好好聊一聊。PART. 1 在不破坏
小白也能学会的电脑硬盘分区指南,让你的设备效率翻倍!
刚装完电脑后,发现我的电脑里面只有c:盘,没有其他的任何盘符,这时需要对电脑进行分区操作 1,右击我的电脑,点击管理,找到磁盘管理的选项 2,在右边磁盘0的位置,右击,选择新建磁盘分区命令,在点击新建磁盘向导
Linux与Windows并肩作战后退一步:卸载双系统攻略
Window+Linux双系统优雅的卸载Linux系统 那些最好的程序员不是为了得到更高的薪水或者得到公众的仰慕而编程,他们只是觉得这是一件有趣的事情!
清除Flash中心 - 一步到位移除所有痕迹
1 删除EFI到不用的EFI分区partition输入 SET ID=ebd0a0a2-b9e5-4433-87c0-68b6b72699c7 再进入创建磁盘删除2 双系统删除
告别Win10,单享麒麟双系统配置的实操解析
原文链接:Hello,大家好啊!今天给大家带来一篇关于在双系统环境下删除Windows操作系统并只保留麒麟系统的文章。在双系统环境中,如果你决定完全转向麒麟系统,删除Windows系统可以腾出磁盘空间并简化启动管理。本文将
硬盘上遇到坏点?试试这些方法来避开关不工作的部分!
一、故障现象将硬盘拿回家后,笔者将自己电脑上的硬盘拔出,然后接上这块40GB硬盘,开机后主板BIOS和开机自检都可以找到硬盘,但进入DOS模式后,使用Fdisk或Format命令都无法找到硬盘。将原机硬盘与40GB硬盘同时
机械硬盘坏面不慌,轻松实现完美读取教程!
一、故障现象将硬盘拿回家后,笔者将自己电脑上的硬盘拔出,然后接上这块40GB硬盘,开机后主板BIOS和开机自检都可以找到硬盘,但进入DOS模式后,使用Fdisk或Format命令都无法找到硬盘。将原机硬盘与40GB硬盘同时
修复硬盘坏道:实战技巧与后期维护指南
笔者最近找到一块很早的40GB硬盘,是两年前更换下来的,并且坏了无法使用。但是这块“坏”了的硬盘几经周折之后,总算将它“救活”了,虽然无法安装Windows系统,但让它“变”成了一块移动硬盘。效果可以看下具体51搜索展示,结合Xunse
APK大公开!深入探讨Android世界中的可执行包
APK是Android Package的缩写,即Android安装包。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。APK文件其实是
农业害虫大战:3472张图片助力YOLO模型打造,实战教程揭秘
文章前瞻:优质数据集与检测系统精选点击链接:数据集与检测系统 数据集与检测系统一、数据集介绍【数据集】害虫分类识别数据集 3472 张,目标检
菜鸟进阶:从0到熟练,用Yolo识别害虫
文章前瞻:优质数据集与检测系统精选点击链接:数据集与检测系统 数据集与检测系统一、数据集介绍【数据集】害虫分类识别数据集 3472 张,目标检
发表评论