切换VPS的IP

在DNS配置中将ip配置给相应的网址后,带www很快就能访问,可能是因为之前没有访问过这个网址,没有缓存。
不带www的网址不能正常访问,电脑清理DNS缓存后,不带www依然无法访问。一段时间后才能访问。
手机无法访问,显示nginx错误,使用IP能正常访问,之后再使用网址才能正常访问。

npm install <package>安装并保存在package.json中。

npm install <package> -g
npm uninstall <package>卸载并从package.json中删除

npm registry镜像地址配置

Node 的官方模块仓库网速太慢,模块仓库需要切换到阿里的源。

1
npm config set registry https://registry.npmmirror.com

执行下面的命令,确认是否切换成功。

1
npm config get registry

使用官方镜像

1
npm config set registry https://registry.npmjs.org/

淘宝npm源地址变化:https://registry.npm.taobao.orghttps://registry.npmmirror.com

npm dependencies 中版本前面特殊符号代表的意义

~的意思是匹配小版本 比如~1.2.3将会匹配所有的1.2.x版本,但不匹配1.3.0
^的意思是匹配大版本 比如^1.2.3 将会匹配 所有1.x.x包括1.3.0但不包括2.0

npm更新软件包

hexo升级运行npm outdated后修改package.json内的版本再升级npm update

运行

scrcpy -Sw -b 20M

  • -S 关闭手机屏幕
  • -w 在程序运行时,保持屏幕常亮
  • -b 码率20Mbps

快捷键

返回: 鼠标右键
全屏: alt+f
旋转设备: alt+r
旋转窗口: alt+left
控制台输出fps: alt+i
关闭屏幕:alt+o
打开屏幕:alt+shift+o

参考 scrcpy

adb设置android代理

1
2
3
adb connect 127.0.0.1:58526
adb shell settings put global http_proxy <ip>:<port>
adb shell settings put global http_proxy :0

原理

将元素高宽设置为0,然后设置三个方向的border,每个border不是正方形,而是三角形。查看这三个border的形状

.triangle {
    width: 0;
    height: 0;
    border-width: 0 40px 40px;
    border-style: solid;
    border-color: black red green yellow;
}

3个border
所以不设置上方向的border,左右border设置为透明,下border设置为需要的颜色即可绘制方向朝上的三角形。要绘制其他方向的箭头同理。

绘制带边框的三角形

给上面这个三角形元素添加::after伪元素,按照上面的方法设置同样的三角形。但是伪元素位置是相对于父元素的contentbox的,所以要添加absolute定位调整伪元素的位置。

div{
    width: 0;
    height: 0;
    /* top | left and right | bottom */
    border-width: 0 100px 100px;
    border-style: solid;
    border-color: black transparent green transparent;
    position: relative;
}
div::after{
    content: '';
    border-width: 0 100px 100px;
    border-style: solid;
    border-color: black transparent white transparent;
    position: absolute;
    top: 2px;
    left: -100px;
}

左右方向带border的三角形就可以作为对话框上的箭头了

<div class="flex">
    <div class="triangle"></div>
    <section>hello</section>  
</div>
<style>
.flex{
    display: flex;
    align-items: center;
}
.triangle{
    width: 0;
    height: 0;
    border-width: 5px 5px 5px 0;
    border-style: solid;
    border-color: transparent green transparent black ;
    position: relative;
}
.triangle::after{
    content: '';
    border-width: 5px 5px 5px 0;
    border-style: solid;
    border-color: transparent white transparent black ;
    position: absolute;
    top: -5px;
    left: 2px;
}
section{
    height: 20px;
    width: 500px;
    border: 1px green solid;
}
</style>

实现对话框样式

一键安装脚本 curl -O https://raw.githubusercontent.com/atrandys/trojan/master/trojan_mult.sh && chmod +x trojan_mult.sh && ./trojan_mult.sh

chrome 以socks5代理启动

1
chrome.exe   --show-app-list  --proxy-server="SOCKS5://<address>:<port>"

为Trojan生成自签名SSL证书

1
2
3
4
5
mkdir /etc/trojan/ssl
cd /etc/trojan/ssl
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt

客户端中remote_addr为远程的ip地址。

不论主要内容section高度有多高,底栏footer始终保持在最下方
FOOTER

<style>
header {
    height:100px;
    background-color: green;
}
section {
    height: 500px;  // 可以任意改变
    background-color: red;
}
footer {
    height: 100px;
    position: -webkit-sticky;
    position: sticky;
    bottom: 0;
    background-color: green;
}
</style>
<body>
    <header>HEADER</header>
    <section>MAIN</section >
    <footer>FOOTER</footer>
</body>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <string>
using namespace std;

int main(){
string str1, str2, res="";
int count=0;
cin >> str1;
cin >> str2;
for(int i=0; i<str1.size(); i++){
for(int j=0;j<str2.size();j++){
for(int k=0; i+k<str1.size()&&j+k<str2.size()&&
str1[i+k]==str2[j+k];k++){
if(k>count){
count = k;
res = str1.substr(i, k+1);
}
}
}
}
if(res== "") cout<< -1;
cout<< res;
return 0;
}

1
2
3
4
5
6
7
8
adb shell #进入shell模式
$ pm uninstall --user 0 com.android.browser #浏览器
$ pm uninstall --user 0 com.xiaomi.gamecenter.sdk.service #游戏中心
$ pm uninstall --user 0 com.miui.player #音乐播放器
$ pm uninstall --user 0 com.miui.video #视频
$ pm uninstall --user 0 com.xiaomi.vipaccount #小米vip
$ pm uninstall --user 0 com.xiaomi.ab #广告相关
$ pm uninstall --user 0 com.miui.systemAdSolution #广告

先关闭上滑手势和桌面搜索框再卸载,否则只能重装再卸载了:(

1
2
3
$ pm uninstall --user 0 com.miui.hybrid #首页上滑信息流
$ pm uninstall --user 0 com.miui.newhome #首页上滑内容中心
$ pm uninstall --user 0 com.android.quicksearchbox #首页搜索

卸载小米支付相关

1
2
3
4
$ pm uninstall --user 0 com.unionpay.tsmservice.mi
$ pm uninstall --user 0 com.xiaomi.payment
$ pm uninstall --user 0 com.miui.nextpay
$ pm uninstall --user 0 com.mipay.wallet

在设置中卸载多看阅读,游戏

重新安装用户卸载的应用

1
2
3
4
$ cmd package install-existing com.vivo.browser
## 或者
$ pm install-existing com.vivo.browser

查找应用

1
$ pm list packages [options] <FILTER>

卸载vivo内置应用

1
2
3
4
$ pm uninstall --user 0 com.vivo.browser
$ pm uninstall --user 0 com.android.VideoPlayer
$ pm uninstall --user 0 com.bbk.theme
$ pm uninstall --user 0 com.yozo.vivo.office

Android跳转应用商店

market://details?id=com.mipay.in.wallet

正常声明并初始化1

1
2
3
int a = 1;
int *p;
p = &a; //初始化为已存在的指针地址

正常声明并初始化2

1
2
3
4
int* p;
p = (int*)calloc(2, sizeof(int)); //分配内存地址
*p = 1; //赋值为1
free(p); //自行分配的内存需要手动释放

指针必须经过分配内存才能再赋值,没有分配内存地址的指针不能直接赋值

1.手机电脑显示一模一样的界面

使用媒体查询判断是横屏还是竖屏
竖屏页面宽度为全屏
横屏页面宽度收窄

2.两套效果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@media screen and (orientation: landscape) {
/* 横屏 */
body {
width: 61.8vh;
margin: auto;
}
}

@media screen and (orientation: portrait) {
/* 竖屏 */
body {
width: 100vw;
}
}

手机浏览器的宽度(window.innerWidth)不等于屏幕的分辨率

手机只有400px左右的宽度
可以使用@media screen and (min-width: 600px)@media screen and (max-width: 600px) 来设置不同样式

0%