问题

如何搜索

原则 #

  1. 搜索的时候,要简约,且尽量把关键词分散,不要有"的",“地”,或者其他动词什么的,尽量是名词
  2. 关键词之间用空格隔开

比如想要看一部电影,那么关键词有"电影名",“bt”,“迅雷”,“阿里云盘”,“百度网盘”

解释一下,这里来源(迅雷|阿里云盘|百度网盘),资源类型(bt)也是关键词

所以搜索就是**“孤注一掷 bt”,“孤注一掷 阿里云盘”,“孤注一掷 百度网盘”,“孤注一掷 迅雷”,注意,中间都有空格**

例子 #

bt种子形式 #

image-20240226132336128
点进来之后,滑到最下面(一般链接都是以浅蓝色标识,点过一次后就变成暗红色)
image-20240226132614759

bt文件一般要用"迅雷"这个软件下载,上面随便点击一个,迅雷这个软件就会跳出来
image-20240226132743460
然后选择好目录点击确认就可以下载了

阿里云盘形式 #

image-20240226133054195

第一个链接有人提出质疑了,我们点下面那个,这是进入之后的画面:
image-20240226133201891
再点击"阿里xxxxxxxxxx"这个链接,进入阿里云盘:
image-20240226133251855

点进来看视频文件还在不在,在的话,保存就可以了
image-20240226133340936
之后到自己的阿里云盘下载就行了

百度云盘形式 #

百度云盘被限速了,不得已的情况下,不要用百度云盘,基本上前面两种形式的资源没找到的话,百度云盘大概率也不会有

Linux操作符问题

函数退出 #

函数退出状态:0(成功),非零(非正常,失败)

引号 #

双引号中使用转义字符可以防止展开
这意味着单词分割(空格制表换行分割单词)、路径名展开(*星号)、波浪线展开和花括号展开都将失效,然而参数展开算术展开命令替换仍然执行

echo "text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER" #禁止部分
text ~/*.txt {a,b} foo 4 me
echo 'text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER' #全部禁止
text ~/*.txt {a,b} $(echo foo) $((2+2)) $USER

各种操作符 #

[ expression ] / test[[ expression ]]$(( expression ))$var$( termi )
文件表达式 -e file,字符串表达式 -n string,整数表达式 integer1 -eq integer2test增强,增加 [ str =~ regex ],增加 ==
[[ $FILE == foo.* ]]
整数加减乘除取余取变量执行命令/函数
termi取变量$必加,里面被看作命令参数,< > ( ) 必须转义 否则 小于号 < 大于号>被认为重定向与[ ] 一致取变量$可加可不加termi取变量$必加

image-20230920195057911

...

Debian问题处理3

fcitx配合各种软件出现的问题 #

本文章中出现的引号都是英文状态下的引号,切记!

安装完毕后环境变量设置 #

/etc/profile 和/etc/enviroment 均可,profile针对用户,environment针对系统。一般都是放profile里面

不行的话 #

如果修改profile无效,则在/etc/enviroment添加修改

#/etc/enviroment 末尾添加
fcitx & #这行要添加
export XIM_PROGRAM=fcitx
export XIM=fcitx
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
export LANG=zh_CN.UTF-8

source后再重启一下哦

装了zsh后(从终端打开)idea等各种软件不出现fcitx输入法的问题 #

/.zshrc最后添加

export XIM_PROGRAM=fcitx
export XIM=fcitx
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
export LANG=zh_CN.UTF-8
export LC_MESSAGES=en_US.UTF-8 #让终端报错时,显示英文 而不是中文

也可以不在/.zshrc中追加这些,而是直接追加 source /etc/profile或者/etc/enviroment即可

如果还有问题,就要在idea的配置文件idea.vmoptions添加

-Drecreate.x11.input.method=true

如果使用系统默认终端的情况下出的问题 #

可以在 ~/.bashrc最后添加这段话,重启试试

export XIM_PROGRAM=fcitx
export XIM=fcitx
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"
export LANG=zh_CN.UTF-8

各个文件的解释 #

/etc/profile //用户级,所有用户登陆时才会执行 对于fcitx没效果(firefox无效)
/etc/enviroment //系统级,一般不修改 这里有效果
~/.bashrc //系统默认终端打开时执行 ~/.zshrc //zsh使用前执行

...

Debian问题处理2

代理 #

Vmware里面的debian,连接外面物理机的v2ray。

对于浏览器 #

无论是firefox还是chromium,都可以直接通过v2ray允许局域网,然后使用ProxySwitchOmege代理访问

对于命令 #

可以使用proxychains,直接用apt-get 安装即可,注意事项

作用范围 #

对tcp生效,ping是不生效的,不要白费力气

需要修改两个地方 #

  1. libproxychains.so.3 提示不存在 ly

    whereis libproxychains.so.3 
    #libproxychains.so.3: /usr/lib/x86_64-linux-gnu/libproxychains.so.3
    #修改/usr/bin/proxychains
    #export LD_PRELOAD = libproxychains.so.3 修改为:
    export LD_PRELOAD = /usr/lib/x86_64-linux-gnu/libproxychains.so.3
    
  2. l’y配置修改

    #修改文件/etc/proxychains.conf,在最后一行添加
    socks5 	192.168.1.201 1082
    
  3. 使用

    proxychains git pull
    #直接在命令最前面输入proxychains即可
    

直接网络(gui)配置代理 #

这个对于终端不生效

zsh安装 #

proxychains wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh
proxychains sh install.sh

zsh主题安装 #

proxychains git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
#修改
vim ~/.zshrc
ZSH_THEME="powerlevel10k/powerlevel10k"

重新配置 p10k configure

...

Debian问题处理1

清华源设置 #

vim /etc/apt/sources.list
#注释掉原来的,并添加
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware

deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware

deb https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware
# deb-src https://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware

中文环境 #

su
sudo apt-get install locales
#配置中文环境 1.选择zh开头的 2 后面选择en(cn也行,不影响输入法)
sudo dpkg-reconfigure locales
#设置上海时区
sudo timedatectl set-timezone Asia/Shanghai

中文输入法 #

#清除旧的环境
apt-get remove ibus #不兼容问题
apt-get remove fcitx5 fcitx5-chinese-addons 
apt-get autoremove 
ly # gnome-shell-extension-kimpanel
sudo apt install fcitx5 fcitx5-chinese-addons fcitx5-frontend-gtk4 fcitx5-frontend-gtk3 fcitx5-frontend-gtk2  fcitx5-frontend-qt5 
im-config #配置使用fcitx5 
#环境变量添加
export XMODIFIERS=@im=fcitx
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
#退出root用户权限,使用普通用户权限再终端
fcitx5-configtool #配置中文输入法即可
#附加组件-经典用户界面--这里可以修改字体及大小

其他 #

应用程序-优化 修改默认字体大小

...

安卓手机及平板安装linuxDeploy的问题简记

为什么是简记呢,因为这几天折腾这些太累了,等以后回过头来重新操作再详细记载

前言 #

初衷 #

一开始的初衷是为了在平板上使用idea,之前看了一篇docker使用idea的文章,心血来潮。所以想直接在平板的termux安装docker然后使用,结果一堆问题。后面妥协了,在手机上装,然后开远程吧

这年头机在人在,所以装手机还是平板,还真没有很大的问题。后面使用情况证明:手机不需要开热点的情况(开热点是为了保证网络联通,在同一局域网),其实不怎么发热也不怎么耗电的。

平板上 #

本来想在tab s8平板上通过termux安装linux(无root权限),但是总会遇到一堆问题–连系统都装不上。因为root会有两个问题,所以一开始没有考虑使用linuxDeploy(需要root)

  • 保修失效
  • 无法通过系统直接更新(需要线刷)

手机上(root) #

配置 #

后面尝试在root过的手机上安装linuxDeploy,照样有一堆问题,这里配上能使用的配置(能进系统):

ly-20241212141834176
我用的时候ssh端口改了一下,不过不影响,第一次用的22端口也是能连上的。初始用户写的root,这里也是设置的root。
最好挂载一下
ly-20241212141834486

问题 #

  1. 用其他桌面环境,可能会导致图标没有(应该是就没有那个应用,比如浏览器),不过我这个配置完也没有浏览器,不过好在图标也没,不用自己再去移除了。

  2. 装完之后vns有出错过一次,突然就蹦了,死活连不上。后面我直接重装系统了(linux deploy),没有再出现问题。装完之后需要在etc/rc.local添加:

    #删除vns临时文件,保证每次启动都是使用端口:5901
    #(linux上显示:1,连接使用时要+5900,即使用5901端口)
    rm -rf /tmp/.X[1-9]-lock
    rm -rf /tmp/.X11-unix/X[1-9]
    #保证系统每次启动后都自动启动vncserver
    vncserver
    

    电脑上随便找了个VNCServer 绿色免安装程序可以连上
    ly-20241212141834670
    平板上使用AVNC,电脑不方便截图,就不截了.. 类似长这样
    ly-20241212141834882

    #常用命令(也不常,这两天用的最多的)
    vncserver -kill :1 #强制关闭端口1
    vncserver #启动
    
  3. 安装idea,也不用安装,就是去官网下载解压即可。问题:需要jdk11以上才能打开(疑惑,貌似之前在windows安装的时候没这要求,反正后面我妥协了,装了11,之后就是配置环境变量什么的)
    一开始linuxDeploy的Ubuntu,然后..发现openjdk11装完之后,java -version显示的10,一脸蒙圈,搞得后面又重装了Debian(中途还试了centos)

  4. 装完没有中文输入法,系统装完就是要用的,如果随便打打命令倒是不需要中文输入法,但是如果打点代码写点注解,那蹩脚英语就…总不能句句good good study,day day up..真是one day day de…

问题处理 #

其实解决方案前面好像都说了,输入法单独开一块吧,比较恶心,主要是让我意识到了自己水平有多菜…

...

JDK代理和CGLIB代理

完全转载自https://juejin.cn/post/7011357346018361375 ,以防丢失故作备份 。

一、什么是代理模式 #

代理模式(Proxy Pattern)给某一个对象提供一个代理,并由代理对象控制原对象的引用。代理对象在客户端和目标对象之间起到中介作用。

代理模式是常用的结构型设计模式之一,当直接访问某些对象存在问题时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象需要实现相同的接口。代理模式属于结构型设计模式,属于GOF23种设计模式之一。

代理模式可以分为静态代理和动态代理两种类型,而动态代理中又分为JDK动态代理和CGLIB代理两种。 代理模式包含如下角色:

  1. Subject (抽象主题角色) 抽象主题角色声明了真实主题和代理主题的共同接口,这样一来在任何使用真实主题 的地方都可以使用代理主题。客户端需要针对抽象主题角色进行编程。
  2. Proxy (代理主题角色) 代理主题角色内部包含对真实主题的引用,从而可以在任何时候操作真实主题对象。 在代理主题角色中提供一个与真实主题角色相同的接口,以便在任何时候都可以替代真实 主体。代理主题角色还可以控制对真实主题的使用,负责在需要的时候创建和删除真实主 题对象,并对真实主题对象的使用加以约束。代理角色通常在客户端调用所引用的真实主 题操作之前或之后还需要执行其他操作,而不仅仅是单纯的调用真实主题对象中的操作。
  3. RealSubject (真实主题 角色) 真实主题角色定义了代理角色所代表的真实对象,在真实主题角色中实现了真实的业 务操作,客户端可以通过代理主题角色间接调用真实主题角色中定义的方法。

代理模式的优点 #

  • 代理模式能将代理对象与真实被调用的目标对象分离。
  • 一定程度上降低了系统的耦合度,扩展性好。
  • 可以起到保护目标对象的作用。
  • 可以对目标对象的功能增强。

代理模式的缺点 #

  • 代理模式会造成系统设计中类的数量增加。
  • 在客户端和目标对象增加一个代理对象,会造成请求处理速度变慢。

二、JDK动态代理 #

在java的动态代理机制中,有两个重要的类或接口,一个是 InvocationHandler(Interface)、另一个则是 Proxy(Class),这一个类和接口是实现我们动态代理所必须用到的。

InvocationHandler #

每一个动态代理类都必须要实现InvocationHandler这个接口,并且每个代理类的实例都关联了一个handler,当我们通过代理对象调用一个方法的时候,这个方法的调用就会被转发为由InvocationHandler这个接口的 invoke 方法来进行调用。

InvocationHandler这个接口的唯一一个方法 invoke 方法:

java
复制代码Object invoke(Object proxy, Method method, Object[] args) throws Throwable

这个方法一共接受三个参数,那么这三个参数分别代表如下:

  • proxy:指代JDK动态生成的最终代理对象
  • method:指代的是我们所要调用真实对象的某个方法的Method对象
  • args:指代的是调用真实对象某个方法时接受的参数

Proxy #

Proxy这个类的作用就是用来动态创建一个代理对象的类,它提供了许多的方法,但是我们用的最多的就是newProxyInstance 这个方法:

...

linux中调试open jdk

完全转载自https://lin1997.github.io/2020/07/19/debug-openjdk-on-ubuntu.html ,以防丢失故作备份,目前还没看懂。

在Ubuntu中编译和调试OpenJDK #

构建编译环境 #

安装GCC编译器:

sudo apt install build-essential

安装OpenJDK依赖库:

工具库名称安装命令
FreeTypeThe FreeType Projectsudo apt install libfreetype6-dev
CUPSCommon UNIX Printing Systemsudo apt install libcups2-dev
X11X Window Systemsudo apt install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev
ALSAAdvanced Linux Sound Architecturesudo apt install libasound2-dev
libffiPortable Foreign Function Interfacesudo apt install libffi-dev
AutoconfExtensible Package of M4 Macrossudo apt install autoconf
zip/unzipunzipsudo apt install zip unzip
fontconfigfontconfigsudo apt install libfontconfig1-dev

假设要编译大版本号为N的JDK,我们还要安装一个大版本号至少为N-1的、已经编译好的JDK作为“Bootstrap JDK”:

...

zsh卸载后root无法登录及vm扩容centos7报错处理

zsh卸载后root无法登录 #

主要参考文档 https://blog.csdn.net/Scoful/article/details/119746150

  1. 重启,开机引导进入下面的那个,按e进入编辑模式

ly-20241212141833490

  1. 移动光标,找到ro crashkernel=auto,修改为 rw init=sysroot/bin/sh

    ly-20241212141833799

  2. 按ctrl+x进入单用户模式界面

ly-20241212141833982

  1. 输入chroot /sysroot 获取权限
  2. vim /etc/passwd
  3. 第一行 ,root ……zsh,中/bin/zsh,改为/bin/bash
  4. touch /.autorelabel更新SELinux信息
  5. 两次exit 推出chroot
  6. reboot 重启:需要一定时间,耐心等待

vm扩容centos7 #

这里是因为我在vm手动扩容后,进入centos7系统—用了 可视化界面中的disk软件直接扩容,发生错误(具体错误我没注意,一闪而过了),后面呢我再使用命令resize2fs /dev/sda3的时候,发现总是提示 busy

解决办法 #

按照上面的办法,进入到第3步结束之后(按ctrl+x进入单用户模式界面 要做)
输入 umount /dev/sda3 进行卸载
然后输入下面进行修复(极为重要),然后出现问题是否修复一直按’y’即可

xfs_repair /dev/sda4
注:如果你当前文件系统是ext4,可以执行fsck.ext4 /dev/sda4

然后输入 mount /dev/sda3 / 进行挂载(这步可能不需要)
最后 reboot 重启
重启之后,再执行 resize2fs /dev/sda3 即可

hexo在线查看pdf

场景 #

由于在看《mysql是如何运行的》,做md文件笔记时,发现好多都是按pdf一字不漏打出来。所以想着能不能直接本地编辑pdf,然后博客上支持在线查看

事后觉得这个方式有待斟酌,电脑上/平板上查看没啥问题,手机上查看字有点小,但也还能接受。==>待斟酌
不过下面的方案是可行的。

准备 #

需要到官网下载 pdf.js

https://github.com/mozilla/pdf.js/releases ,这里选择 v3.4.120中的 pdfjs-3.4.120-dist.zip ,最新版本好像有问题

操作 #

pdfjs处理 #

在source/下创建myjs/pdfjs文件夹,并解压到这个文件夹下
ly-20241212141830564

修改pdfjs/web/viewer.js

if (fileOrigin !== viewerOrigin) {//1563行左右
	throw new Error("file origin does not match viewer's");
}
//注释掉,为了处理跨域问题,注释掉后允许在线访问其他网站的pdf
// if (fileOrigin !== viewerOrigin) {
//	throw new Error("file origin does not match viewer's");
//}

hexo配置修改 #

# 找到# Directory下的skip_render项,添加忽略渲染的文件夹
skip_render:  ['myjs/pdfjs/**/*']

清理hexo中public及其他缓存文件 #

 hexo clean & hexo g

文件预览测试 #

本地文件 #

我们在hexo的source文件夹下,放置这样一个文件: source/pdf/my.pdf
ly-20241212141830812

...