WordPress 自带钩子wptexturize
,可以在wp-includes/functions.php
中查看,随着 WordPress 版本的更新,禁用wptexturize()
函数更有效果,在当前主题目录下的functions.php
中添加如下代码:
//禁用wptexturize函数,解决“-”显示为“–”的问题
add_filter( 'run_wptexturize', '__return_false' );
WordPress 自带钩子wptexturize
,可以在wp-includes/functions.php
中查看,随着 WordPress 版本的更新,禁用wptexturize()
函数更有效果,在当前主题目录下的functions.php
中添加如下代码:
//禁用wptexturize函数,解决“-”显示为“–”的问题
add_filter( 'run_wptexturize', '__return_false' );
pve,esxi都是用lvm管理分区,可以使用lvm扩容分区
检查可能出现的情况
fdisk -l
如果提示
GPT PMBR size mismatch (67108863 != 121634815) will be corrected by write.
执行
apt-get update
apt-get install parted
parted -l
Fix
安装需要的软件
apt-get update
apt-get install parted
执行
fdisk -l
提示
GPT PMBR size mismatch (67108863 != 121634815) will be corrected by write.
Disk /dev/sda: 58 GiB, 62277025792 bytes, 121634816 sectors
Disk model: VMware Virtual S
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 0C17A6FD-69E2-401F-97C8-209F38118AC9
Device Start End Sectors Size Type
/dev/sda1 34 2047 2014 1007K BIOS boot
/dev/sda2 2048 1050623 1048576 512M EFI System
/dev/sda3 1050624 67108830 66058207 31.5G Linux LVM
Disk /dev/mapper/pve-swap: 3.9 GiB, 4160749568 bytes, 8126464 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/pve-root: 7.8 GiB, 8321499136 bytes, 16252928 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
查看系统内硬盘名称(这一步可省略)
lsblk
提示
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mmcblk1 179:0 0 58.2G 0 disk
├─mmcblk1p1 179:1 0 1007K 0 part
├─mmcblk1p2 179:2 0 512M 0 part /boot/efi
└─mmcblk1p3 179:3 0 57.8G 0 part
├─pve-swap 253:0 0 3.6G 0 lvm [SWAP]
├─pve-root 253:1 0 7.3G 0 lvm /
├─pve-data_tmeta 253:2 0 1G 0 lvm
│ └─pve-data 253:4 0 44.9G 0 lvm
└─pve-data_tdata 253:3 0 44.9G 0 lvm
└─pve-data 253:4 0 44.9G 0 lvm
mmcblk1boot0 179:8 0 4M 1 disk
mmcblk1boot1 179:16 0 4M 1 disk
如果是emmc,硬盘名称是mmcblk1,执行
parted /dev/mmcblk1
如果是非emmc,硬盘名称是sda,执行
parted /dev/sda
提示
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
执行
print
提示
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sda: 62.3GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 17.4kB 1049kB 1031kB bios_grub
2 1049kB 538MB 537MB fat32 boot, esp
3 538MB 34.4GB 33.8GB lvm
(parted)
扩容LVM,执行
resizepart 3 100%
quit
提示
(parted) resizepart 3 100%
(parted) quit
Information: You may need to update /etc/fstab.
更新物理卷的大小,LVM所在驱动器
如果是emmc,执行
pvresize /dev/mmcblk3
非emmc,执行
pvresize /dev/sda3
提示
Physical volume "/dev/sda3" changed
1 physical volume(s) resized or updated / 0 physical volume(s) not resized
扩容逻辑卷,执行
cat /etc/pve/storage.cfg
提示
dir: local
path /var/lib/vz
content iso,vztmpl,backup
lvmthin: local-lvm
thinpool data
vgname pve
content rootdir,images
执行
lvdisplay
提示
--- Logical volume ---
LV Path /dev/pve/swap
LV Name swap
VG Name pve
LV UUID ArHV9L-H5ZI-M4gs-Gj1M-4bFV-qbWO-K2VYk4
LV Write Access read/write
LV Creation host, time proxmox, 2020-07-02 19:06:14 +0800
LV Status available
# open 2
LV Size <3.88 GiB
Current LE 992
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
--- Logical volume ---
LV Path /dev/pve/root
LV Name root
VG Name pve
LV UUID L1MtJ0-LX2s-JfVn-5bTY-WdM8-jfxZ-Gi2oTD
LV Write Access read/write
LV Creation host, time proxmox, 2020-07-02 19:06:14 +0800
LV Status available
# open 1
LV Size 7.75 GiB
Current LE 1984
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
--- Logical volume ---
LV Name data
VG Name pve
LV UUID AYiySQ-K6O5-Ye17-XAtF-m154-tRoG-mljDuL
LV Write Access read/write
LV Creation host, time proxmox, 2020-07-02 19:06:15 +0800
LV Pool metadata data_tmeta
LV Pool data data_tdata
LV Status available
# open 0
LV Size <14.00 GiB
Allocated pool data 0.00%
Allocated metadata 1.58%
Current LE 3583
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:4
执行
pvs
lvextend -l +100%FREE /dev/pve/data
提示
Size of logical volume pve/data_tdata changed from <14.00 GiB (3583 extents) to 43.87 GiB (11231 extents).
Logical volume pve/data_tdata successfully resized.
扩容成功,可在pve控制端网页查看
把凸多边形划分成若干个三角形,取多边形的一个顶点为三角形共同顶点
double x0 = x.get(0);
double y0 = y.get(0);
三角形个数 = 坐标对数 – 2
// 每个三角形的三条边 i从0开始
double s1 = Math.sqrt(Math.pow(x0 - x.get(i + 1), 2) + Math.pow(y0 - y.get(i + 1), 2));
double s2 = Math.sqrt(Math.pow(x0 - x.get(i + 2), 2) + Math.pow(y0 - y.get(i + 2), 2));
double s3 = Math.sqrt(Math.pow(x.get(i + 1) - x.get(i + 2), 2) + Math.pow(y.get(i + 1) - y.get(i + 2), 2));
// 每个三角形的面积
double s = (s1 + s2 + s3) / 2;
double area = Math.pow((s * (s - s1) * (s - s2) * (s - s3)), 1.0 / 2);
方法一:线程睡眠,根据系统计时器和调度程序的精度和准确性,使当前正在执行的线程进入休眠状态(暂时停止执行)达指定的毫秒数。 该线程不会失去任何监视器的所有权,参数单位是毫秒
Thread.sleep(3000); // 毫秒
// 特殊情况
Thread.currentThread().sleep(1000); // 毫秒
方法二:java.util.concurrent.TimeUnit 类中的 sleep() 方法,底层调用的也是线程睡眠
import java.util.concurrent.TimeUnit;
TimeUnit.DAYS.sleep(1); // 天
TimeUnit.HOURS.sleep(1); // 小时
TimeUnit.MINUTES.sleep(1); // 分
TimeUnit.SECONDS.sleep(1); // 秒
TimeUnit.MILLISECONDS.sleep(1000); // 毫秒
TimeUnit.MICROSECONDS.sleep(1000); // 微妙
TimeUnit.NANOSECONDS.sleep(1000); // 纳秒
报未处理异常: java.lang.InterruptedException?
使用 try/catch 环绕
try{
TimeUnit.MINUTES.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
原因:微信需加JVM运行参数
找到你的IDE所在的安装目录下的bin文件夹,打开,找到你的exe运行参数文件,如(idea64.exe.vmoptions,studio64.exe.vmoptions)使用编辑器打开,在最后一行添加
-Djsse.enableSNIExtension=false
// 保存后重启IDE
也可以通过exe快捷方式添加参数,如快捷方式目标指向:
E:\Android\eclipse\eclipse.exe -nl=en -Djsse.enableSNIExtension=false
这种方式要求exe所在的路径不能带空格
*Java系统属性的修改通常只能用于本次运行
将Java系统属性Djsse.enableSNIExtension设置为false,$java -Djsse.enableSNIExtension=false
尝试运行时只输出帮助信息?解决方法:
$java -Djsse.enableSNIExtension=false MainClass
$java -Djsse.enableSNIExtension=false -jar foobar.jar
<error><ret>1203</ret><message>为了你的帐号安全,此微信号不能登录网页微信。你可以使用Windows微信或Mac微信在电脑端登录。Windows微信下载地址:https://pc.weixin.qq.com Mac微信下载地址:https://mac.weixin.qq.com</message></error>
好几年的微信老账号,早就实名认证了依然是没办法登录
临时解决方法:
1、微信关联QQ
2、下载 QQ浏览器,安装并用QQ号登录
3、登录成功后,QQ浏览器的左侧有一个工具条,有个微信插件的安装,安装,扫码,登录成功
微信官方已经不再支持登录web协议了
基本就是两个方向,一个方向是虚拟机本身存在漏洞,历史上在18、19年的时候 VMware就出现过这样的一次问题:
VMware Workstation有一个拖放功能,就曾经出现了越界内存访问漏洞,在虚拟机正常情况下应该是访问虚拟的内存,而不访问宿主机(实体机)的内存,但漏洞导致有时候会访问实体机内存,黑客就可以制作一个命令执行。如果虚拟机已经中毒了,病毒就可以逃出虚拟机感染宿主机,在宿主机上执行命令。
第二个方向是在自己不知道虚拟机已经被病毒感染的情况下,从虚拟机里把文件拷贝出来,存储到了宿主机的硬盘中,就会导致电脑被感染。
除去以上两种情况,虚拟机还是很安全的,在里边安装杀毒软件后再下载软件,出现的问题就不会很严重了。
在虚拟机安全中,有个专业的名词就叫做虚拟机逃逸,指的是进程越过虚拟机范围,进入到宿主机的操作系统中,也就是病毒逃离虚拟机,对真实主机造成危害。
Pwn2Own黑客大赛:虚拟机逃逸获得10500美元奖金——通过三个独立漏洞的巧妙利用
在加拿大温哥华的Pwn2Own世界黑客大赛上,来自360安全战队的参赛选手完成了一项令人印象极其深刻的战绩:他们完成了虚拟化软件VMware Workstation的逃逸,并攻破了微软防御工事森严的Edge浏览器。这次破解给他们带来了10.5万美元的奖励,这是Pwn2Own连续三天赛程上的最高奖励。
根据Pwn2Own赛事主办方在周五早上(加拿大当地时间)发布的Tweet显示,来自360安全战队的成员运用了Edge的堆溢出漏洞、微软内核的一种混乱缺陷、VMware的缓冲区漏洞,成功完成了“完整的虚拟机逃逸过程”。“实际上,虚拟机管理程序就是另一个存在漏洞,且可以被攻破的软件隔离层。”Capsule8的联合创始人兼首席技术官Dino Dai Zovi告诉记者,Capsule8是为现代网络基础设施提供实时威胁防护的公司。“隔离层比如沙箱、虚拟化、封装等都让黑客的攻击难度增加,但是没有一个隔离层是完美的。作为防御者来说,应该始终保持这样的态度,那就是所有的防御措施都可以通过攻击者的足够努力而被攻破。”报道链接:https://arstechnica.com/security/2017/03/hack-that-escapes-vm-by-exploiting-edge-browser-fetches-105000-at-pwn2own/
Java 库 String 类的 valueOf 方法大致可以分为三种:
String.valueOf(int i)源码:
public static String valueOf(int i) {
return Integer.toString(i);
}
Integer.toString(int i)源码:
public static String toString(int i) {
if (i == Integer.MIN_VALUE)
return "-2147483648";
int size = (i < 0) ? stringSize(-i) + 1 : stringSize(i);
char[] buf = new char[size];
getChars(i, size, buf);
return new String(buf, true);
}
Integer.getChars(int i, int index, char[] buf)的源码:
static void getChars(int i, int index, char[] buf) {
int q, r;
int charPos = index;
char sign = 0;
if (i < 0) {
sign = '-';
i = -i;
}
// Generate two digits per iteration
while (i >= 65536) {
q = i / 100;
// really: r = i - (q * 100);
r = i - ((q << 6) + (q << 5) + (q << 2));
i = q;
buf [--charPos] = DigitOnes[r];
buf [--charPos] = DigitTens[r];
}
// Fall thru to fast mode for smaller numbers
// assert(i <= 65536, i);
for (;;) {
q = (i * 52429) >>> (16+3);
r = i - ((q << 3) + (q << 1)); // r = i-(q*10) ...
buf [--charPos] = digits [r];
i = q;
if (i == 0) break;
}
if (sign != 0) {
buf [--charPos] = sign;
}
}
其他方式实现MyString1 valueOf(int i)
public static MyString1 valueOf(int i) {
int n;
char[] temp;
int count;
if (i <= Character.MAX_VALUE)
return new MyString1(Character.toChars(i));
else {
n = i % Character.MAX_VALUE;
count = i / Character.MAX_VALUE;
temp = new char[count + 1];
temp[0] = (char) n;
for (int j = 1; j <= count; j++)
temp[j] = Character.MAX_VALUE;
return new MyString1(temp);
}
}
2021/3/8
请上传一张清楚显示你面部的照片。请确保照片足够亮、不模糊,而且其中没有其他人。我们使用此照片来验证这是你的帐户。完成验证后,我们会立即删除照片,决不让这张照片显示在你的个人主页中。
没有分享过照片与视频,包括头像,注册后使用 Facebook 账号登录过第三方网站,这可能是账户被封禁的原因
Refusing to run /opt/google/chrome-remote-desktop/start-host as root.root@xxxxxxxxxx
该问题在当前用户为root时出现,创建一个普通用户或者退出root用户重新运行该服务