agid])) {
foreach ($g_flag_thread[$flagid] as &$val) {
flag_thread_filter($val);
}
flag_thread_set($flagid, $g_flag_thread[$flagid]);
}
}
return $g_flag_thread[$flagid];
}
// 设置缓存 $key = flagid / $val = flagid下tid数组
function flag_thread_set($key, $val)
{
global $g_flag_thread;
FALSE === $g_flag_thread and $g_flag_thread = website_get('flag_thread');
empty($g_flag_thread) and $g_flag_thread = array();
$g_flag_thread[$key] = $val;
return website_set('flag_thread', $g_flag_thread);
}
// 删除flag下tid缓存
function flag_thread_delete_cache($flagid)
{
global $g_flag_thread;
FALSE === $g_flag_thread and $g_flag_thread = website_get('flag_thread');
empty($g_flag_thread) and $g_flag_thread = array();
if (isset($g_flag_thread[$flagid])) {
unset($g_flag_thread[$flagid]);
website_set('flag_thread', $g_flag_thread);
}
return TRUE;
}
// Delete by tid / 通过tid删除flag下的主题和对应flagid缓存
function flag_thread_delete_by_tid($tid)
{
global $g_flag_thread;
FALSE === $g_flag_thread and $g_flag_thread = website_get('flag_thread');
if (empty($g_flag_thread)) {
$g_flag_thread = array();
} else {
$thread = well_thread_read_cache($tid);
$arrlist = flag_thread_find($tid, 1, $thread['flags']);
$flagarr = $ids = array();
foreach ($arrlist as $val) {
$flagarr[] = $val['flagid'];
$ids[] = $val['id'];
if (isset($g_flag_thread[$val['flagid']])) unset($g_flag_thread[$val['flagid']]);
}
website_set('flag_thread', $g_flag_thread);
// 主键更新
flag_update($flagarr, array('count-' => 1));
// 主键删除
flag_thread_delete($ids);
}
return TRUE;
}
// 主键删除 通过$flagid删除flag下的主题和对应flagid缓存
function flag_thread_delete_by_flagid($flagid)
{
global $g_flag_thread;
FALSE === $g_flag_thread and $g_flag_thread = website_get('flag_thread');
$read = flag_read_cache($flagid);
if (empty($read)) return TRUE;
$arrlist = flag_thread_find_by_flagid($flagid, 1, $read['count']);
if (empty($arrlist)) return TRUE;
$flagarr = $ids = array();
$n = 0;
foreach ($arrlist as $val) {
++$n;
$flagarr[] = $val['flagid'];
$ids[] = $val['id'];
if (isset($g_flag_thread[$flagid])) unset($g_flag_thread[$flagid]);
}
website_set('flag_thread', $g_flag_thread);
// 主键更新
flag_update($flagarr, array('count-' => $n));
// 主键删除
$r = flag_thread_delete($ids);
return $r;
}
?>break;
}
$r = array('filesize' => filesize($tmpfile), 'width' => $des_width, 'height' => $des_height);;
copy($tmpfile, $destfile);
is_file($tmpfile) && unlink($tmpfile);
imagedestroy($img_dst);
return $r;
}
/**
* 图片裁切
*
* @param string $sourcefile 原图片路径(绝对路径/abc.jpg)
* @param string $destfile 裁切后生成新名称(绝对路径/rename.jpg)
* @param int $clipx 被裁切图片的X坐标
* @param int $clipy 被裁切图片的Y坐标
* @param int $clipwidth 被裁区域的宽度
* @param int $clipheight 被裁区域的高度
* image_clip('xxx/x.jpg', 'xxx/newx.jpg', 10, 40, 150, 150)
*/
function well_image_clip($sourcefile, $destfile, $clipx, $clipy, $clipwidth, $clipheight, $getimgsize = '')
{
global $conf;
empty($getimgsize) AND $getimgsize = getimagesize($sourcefile);
if (empty($getimgsize)) {
return 0;
} else {
$imgwidth = $getimgsize[0];
$imgheight = $getimgsize[1];
if (0 == $imgwidth || 0 == $imgheight) {
return 0;
}
}
if (!function_exists('imagecreatefromjpeg')) {
copy($sourcefile, $destfile);
return filesize($destfile);
}
switch ($getimgsize[2]) {
case 1 :
$imgcolor = imagecreatefromgif($sourcefile);
break;
case 2 :
$imgcolor = imagecreatefromjpeg($sourcefile);
break;
case 3 :
$imgcolor = imagecreatefrompng($sourcefile);
break;
case 15: // WBMP
$imgcolor = imagecreatefromwbmp($sourcefile);
break;
case 18: // WEBP
$imgcolor = imagecreatefromwebp($sourcefile);
break;
}
if (!$imgcolor) return 0;
$img_dst = imagecreatetruecolor($clipwidth, $clipheight);
imagefill($img_dst, 0, 0, 0xFFFFFF);
imagecopyresampled($img_dst, $imgcolor, 0, 0, $clipx, $clipy, $imgwidth, $imgheight, $imgwidth, $imgheight);
$tmppath = isset($conf['tmp_path']) ? $conf['tmp_path'] : ini_get('upload_tmp_dir') . '/';
'/' == $tmppath AND $tmppath = './tmp/';
$tmpfile = $tmppath . md5($destfile) . '.tmp';
imagejpeg($img_dst, $tmpfile, 75);
$n = filesize($tmpfile);
copy($tmpfile, $destfile);
is_file($tmpfile) && unlink($tmpfile);
return $n;
}
function well_image_ext($filename) {
return strtolower(substr(strrchr($filename, '.'), 1));
}
?>
【原创】Eclipse vs. IDEA快捷键对比大全-软件玩家 - 软件改变生活!
花了一天时间熟悉IDEA的各种操作,将各种快捷键都试了一下,感觉很是不错!于是就整理了一下我经常用的一些Eclipse快捷键与IDEA的对比,方便像我一样使用Eclipse多年但想尝试些改变的同学们。另外推荐个IDEA必装插件Key Promoter ,对于你没用快捷键的操作它都会立即提示对应的快捷键,十分强大。IDEA比较惊艳的一些快捷键我都高亮了,想了解其中的神奇,就装一个IDEA亲自尝试下吧!
| 分类 | 功能点 | Eclipse快捷键 | IDEA快捷键 |
| 搜索 | 搜索文本 | Ctrl + F | Ctrl + F Ctrl + R 查找替换 Alt + P/A 逐个/全部替换 Alt + F3 查找当前选中词 |
| 继续搜索 | Ctrl + K 向前 Ctrl + Shift + K 向后 | F3 Shift + F3 |
| 搜索方法 | Ctrl + O | Ctrl + F12 |
| 搜索类 | Ctrl + Shift + T | Ctrl + N |
| 搜索文件 | Ctrl + Shift + T | Ctrl + Shift + N 这两个都支持简单的正则表达式,还支持直接按大写字母的缩略,例如: 查找JsonTranscoder,只需要输入JT |
| 搜索所有引用处 | Ctrl + Alt + H | Alt + F7 |
| 搜索所有文本出现的位置 | Ctrl + H | Ctrl + Shift + F |
| 编辑 | 自动代码补全 | Alt + / | Ctrl + J |
| 自动代码生成 | | Alt + Insert |
| 快速修复错误 | Ctrl + 1 | Alt + Enter |
| 删除当前行 | Ctrl + D | Ctrl + X |
| 复制到下一行 | | Ctrl + D |
| 注释/取消注释 | Ctrl + / | Ctrl + / |
| 选中当前字 | | Ctrl + W |
| 补全当前行 | | Ctrl + Shift + Enter 神器,补全当前行,最常用的场景时补全当前行后的;号,并将光标定位到下一行 |
| 调出最近复制的N份内容 | | Ctrl + Shift + V |
| 查看最近编辑的文件 | | Ctrl + E |
| 对比最近修改 | | Alt + Shift + C |
| 格式化代码 | Ctrl + Shift + F | Ctrl + Alt + L |
| 整理import | Ctrl + Shift + O | Ctrl + Alt + O |
| 跳转 | 显示方法层次 | | Ctrl + Shift + H |
| 显示类、方法说明 | F2 | Ctrl + Q |
| 跳到方法定义处 | | Ctrl + B |
| 跳到方法实现处 | | Ctrl + Alt + B |
| 跳到上/下一方法 | | Alt + Up/Down |
| 上/下一查看处 | Alt + <- Alt + -> | Ctrl + Alt + Up/Down |
| 跳到指定行 | Ctrl + L | Ctrl + G |
| 重构 | 改名 | Alt + Shift + R | Shift + F6 |
| 其他常用 | | Ctrl + F6 修改方法签名 Ctrl + Shift + F6 修改参数的类型 Ctrl + Shift + V引入局部变量 Ctrl + Shift + P 引入参数 Ctrl + Shift + F 引入类变量 Ctrl + Shift + M 引入方法 Ctrl + Shift + C 引入常量 |
| 运行 | 启动调试 | | Alt + Shift + F9 |
| 启动运行 | | Alt + Shift + F10 |
| 单步进入 | F5 | F7 |
| 单步跳过 | F6 | F8 |
| 跳过 | F8 | F9 |
| 执行选中语句 | | Alt + F8 |
| 窗口 | 调出界面 | | Ctrl + Alt + S调出Settings界面 Ctrl + Alt + Shift + S调出项目Setting界面 |
| 关闭界面 | | Ctrl + F4 或 ESC |
| 打开窗口 | | Alt + 窗口编号(例如项目窗口编号是1) |
| 最大化窗口 | Ctrl + M | Ctrl + Shift + F12 |
| 隐藏窗口 | | Shift + ESC |
| 关闭当前文件 | | Ctrl + F4 |
| 垂直分屏 | | Ctrl + | (自定义的) |
| 调整窗口位置 | | Ctrl + M 将当前光标处显示到屏幕中央 |
| 切换窗口 | | Ctrl + Tab |
本文标签:
快捷键大全EclipseIDEA
更多相关文章
快速在Windows Terminal间游走:超实用的窗口控制台快捷指南
刚刚下载了 Windows Terminal ,在 Microsoft Store 安装的,很方便。自带的字体和 Flutter Design 就很好。 总结一下窗口切换的一些快捷键。快捷键
告别繁琐!轻松设置你的控制面板超级加速键组合!
打开控制面板命令:control使用方法:点击“开始”菜单,选择“运行”,输入“control”命令,点击确定即可打开控制面板;设置控制面板快捷键,一键启动控制面板的方法:控制面板没有真正意义上的快捷键,网络上大
交易高手必学:从零开始玩转下单面板Power控件
简介:下单面板快捷键Power是一款专为交易者打造的高效下单工具,通过预设指令与自定义快捷键,显著提升交易速度与操作精准度。其简洁直观的界面设计支持一键执行买入、卖出、止损、止盈等操作,适用于高频及短线交易场景。该工具兼容MetaTr
浏览器内截图秘籍:让你的Flash操作更高效
大家知道浏览器怎么截图吗,最近发现浏览器有个截图快捷键非常方便。特别是需要截那些电脑操作步骤图的时候,使用qq截图的时候总是缩回去,无法截图。后来发现了浏览器的截图功能,瞬间表示爱了,浏览器的快捷键截图也太好用了吧。话不多说,下面就来
Windows7截图不再迷路!一键搞定,自动保存到设定的文件夹
问题描述:如何将电脑屏幕截图直接保存到文件夹。之前都是先截图然后发到QQ里面,然后在QQ里面另存为到文件夹里面。 注意:最好不要把截图保存到word文档里面,因为图片保存到word中保存的不是原图,而是被压缩了,以后如果我们从
任务栏不见了?轻松几步快速恢复显示!
喜欢隐藏任务栏的朋友,是不是发现了一个有时候隐藏任务栏,任务栏下沉后用鼠标去唤醒,以重新显示任务栏而显示,激活不出来的问题?十分容易解决,见下。使用显示任务栏的快捷键。 这些问题经常出现在比如开启了一个或者多个比较占内存的程序
发表评论