IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    love 0
    Moxuy
    发表于
    2023-10-12 14:33:32

    Git一键删除已经合并的本地分支

    在终端输入以下指令打开git全局设置1git config -e --global在全局设置中配置指令12[alias]cleanup = "!git branch --merged | grep -v '\\*\\|master\\|develop' | xargs -n 1 -r git branch -d"之后在终端执行1git cleanup就可以将已合并到master或develop中的本地分支删除。 ...继续阅读 (128)


    love 0
    Moxuy
    发表于
    2023-10-12 14:33:32

    扫码连接WiFi

    家里的WiFi是隐藏的,为了不被WiFi万能钥匙之流共享密码,但是因此导致有客人来连WiFi异常的麻烦。之前想的都是如果可以用微信扫一扫加入WiFi的话,那就非常方便了,但是微信貌似不支持,所以就上网搜寻了一番,发现用支付宝扫一扫是可以的。只需要将以下文本转成二维码即可。12// 将和替换WIFI:S:;T:WPA;P:; ...继续阅读 (121)


    love 0
    Moxuy
    发表于
    2023-10-12 14:33:32

    匹配1-28数字的正则表达式

    最近在用MockJS处理接口数据,遇到一个需求,需要返回一个视频链接,有28个视频,视频名依次从1到28命名,例如”http://192.168.0.90:7478/22.mp4"MockJS中提供了正则表达式的方式mock数据,返回上面这条链接可以使用/http\:\/\/192\.168\.0\.90\:7478\/22\.mp4/这样的表达式,但是如果想要返回1-28的视频链接,需要对22进行处理一开始想到的是/[1-28]/,以为这样就能达到目的的,但事实证明想的还是太少😂。/[1-28]/只会匹配1、2、8,这三个数字,可以拆开这样理解/([1-2]|8)/。所以想要匹配1-28,需要每一位去匹配,/([1-9]|1[0-9]|2[0-8])/很好!这样应该就可以了吧?输入到正则表达式工具内之后,我发现我想的还是太少如果是两位数,那就会只匹配了开头,并不是如预期的那样匹配一整个28。一番搜索之后,发现可以在前后加上\b解决,/\b([1-9]|1[0-9]|2[0-8])\b/\b可以表达为词边界,它会检查字符串中的位置是否是词边界,可以匹配一个一个的整体。 ...继续阅读 (117)


    love 0
    Moxuy
    发表于
    2023-10-12 14:33:32

    JavaScript Unicode 归一化

    你看到的“⼀”不是真正的“一”1'⼀'==='一'// false转Unicode之后:⼀:\u2f00一:\u4e00发现两个一的Unicode是不一样的,这两个字符分别为部首「U+2F00 ⼀」和汉字「U+4E00 一」,也就是说前者是符号,后者是汉字,具体可参阅为什么在字库里存在一些「长得一样」的文字? - 知乎。如何解决可以使用String对象下的normalize函数,normalize参数有四种NFC:正则分解,然后进行正则构成NFD:仅正则分解NFKC:兼容性分解,然后进行规范性组成NFKD:兼容性分解返回值:含有给定字符串的 Unicode 规范化形式的字符串。具体可参阅String.prototype.normalize() - JavaScript | MDN可使用如下方法将符号转义为正常的汉字1'⼀'.normalize('NFKC') ==='一'// true ...继续阅读 (165)


    love 0
    Moxuy
    发表于
    2023-10-12 14:33:32

    OpenWrt Docker 安装青龙面板

    我的R2S刷了OpenWrt带Docker版本之后,发现磁盘容量不够,所以需要分一部分容量到Docker新建分区打开系统 - 磁盘管理,然后点击磁盘中的修改目前我这里是已经新建好分区的状态,点击新建按钮新建完成后需要对新建的分区进行格式化,格式化的格式为EXT4挂载分区打开 系统 - 挂载点移到下面挂载点栏目,点击添加按钮按如下设置,然后重启即可拉取镜像进入Docker - 镜像,在拉取镜像输入框中填入whyour/qinglong:latest,点击拉取。启动容器拉取完成之后进入Docker - 容器,点击添加,选择命令行,填入如下命令12345678910111213docker run -dit \-v$pwd/ql/config:/ql/config \-v$pwd/ql/log:/ql/log \-v$pwd/ql/db:/ql/db \-v$pwd/ql/scripts:/ql/scripts \-v$pwd/ql/jbot:/ql/jbot \-p 5700:5700 \-e ENABLE_HANGUP=true\-e ENABLE_WEB_PANEL=true\--name qinglong \--hostname qinglong \--restart always \whyour/qinglong:latest如果$pwd无法识别,可以更改成挂载点,比如我这里是 ...继续阅读 (131)


    love 0
    Moxuy
    发表于
    2023-10-12 14:33:32

    英语学习之文档翻译(2)

    https://platform.openai.com/docs/introduction/overview/Original:OverviewThe OpenAI API can be applied to virtually any task that involves understanding or generating natural language, code, or images. We offer a spectrum of models with different levels of power suitable for different tasks, as well as the ability to fine-tune your own custom models. These models can be used for everything from content generation to semantic search and classification.ME:概述OpenAI API几乎可以应用到所有任务中,包括理解和生成自然语言,代码或者图像。我们为不同任务提供适当的模型,也能够调整为你的自定义模型。这些模型可以被用作搜索和归类任何生成文本。GPT:概述OpenAI API可以应用于几乎涉及自然语言理解或生成、代码或图像的任务。我们提供一 ...继续阅读 (136)


    love 0
    Moxuy
    发表于
    2023-10-12 14:33:32

    ChatAI的prompt集合

    prompt:帮我提取出上面文本中的电子邮箱地址,电子邮箱地址中包含@prompt:下面这句话中的英文是多个汉字拼音的首字母,每一个拼音首字母对应一个汉字,请帮我找出语境中最恰当的汉字@prompt:我希望你充当一个翻译大师,将上面的文本按换行符分成多个段落,然后在每一段落后面跟着该段落的中文翻译,以下面的格式进行输出Original: 此处为原文ME: 此处留空GPT: 此处为中文翻译…以此循环只到翻译完成全部段落example: ...继续阅读 (152)


    love 0
    Moxuy
    发表于
    2023-10-12 14:33:32

    英语学习之文档翻译(1)

    https://farm-fe.github.io/docs/why-farm/Why Farm?Me: 为什么使用Farm?ChatGpt: 为什么需要 Farm?As the web project scales, building performance has been themajor bottleneck, for ahugeproject, compiling with webpack may cost 10min or more, a hmr update may cost 10s or more,heavily reducedtheefficiency.Me: 作为web项目扩展,为大型项目构建高性能的主要障碍,使用webpack编译可能需要10分钟或以上的时间,一次HMR更新可能要花10秒或以上的时间,大大的降低了效率。ChatGPT: 随着 Web 项目规模的扩大,构建性能成为了主要的瓶颈。对于一个庞大的项目,使用 webpack 进行编译可能需要花费 10 分钟甚至更长时间,HMR 更新可能需要 10 秒或更长时间,严重降低了效率。Then some tools like vite comes out, it uses native ESM and is unbundled for source files in dev mode, pre-bundle d ...继续阅读 (122)


    love 0
    Moxuy
    发表于
    2023-10-12 14:33:32

    使用GithubAction自动部署

    1.在服务器生成ssh密钥对教程2.将密钥添加到仓库的Secrets中代码仓库 - Settings - Secrets - Actions添加完成后就可以在action中使用了3.部署代码示例123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051name: Build and Deployon:push:branches:- mainpermissions:contents:readjobs:build:runs-on: ubuntu-latestenvironment: productionsteps:- name: Checkoutuses: actions/checkout@v3# 缓存依赖- name: Cache nodemodulesuses: actions/cache@v1env:cache-name: cache-node-moduleswith:# 需要缓存的文件的路径path: ./node_modules# 对缓存的文件指定的唯一标识key:${{ runner.os }}-dist-${{ env.cache-name }}-${ ...继续阅读 (130)


    love 0
    Moxuy
    发表于
    2023-10-12 14:33:32

    使用Charles抓包

    下载Charles后需要使用手机设置代理在手机的wifi设置中将代理设置为手动,然后把电脑的ip填入,端口通常为8888连接后手机上下载cer证书,安装后可以代理https流量手机安装证书后,电脑也需要安装证书,打开Charles设置安装证书安装完成后,需要打开SSL Proxy设置 Proxy - SSL Proxying Settings,设置所有域名和端口为*即可iOS设置iOS需要在安装证书后选择信任证书才可劫持https请求打开:设置 - 通用 - 关于本机 - 证书信任设置 ...继续阅读 (134)


    love 0
    Moxuy
    发表于
    2023-10-12 14:33:32

    纳瓦尔宝典读书笔记

    真正的财务自由是通过创建公司或者通过投资创造出来的,而不是靠单纯地投入大量时间来实现的。不要追逐所谓的”热门“,而要追求自己真正感兴趣的事情。如果在追随好奇心和求知欲的过程中又满足了社会需求,你就能得到优厚的经济回报。退休就是不再为了想象中的明天而牺牲今天。 ...继续阅读 (131)


    love 0
    Moxuy
    发表于
    2023-10-12 14:33:32

    R2S扩展LAN口

    最近家里新组了一台主机,需要连网线,但是R2S只有一个LAN口,已经给无线路由器用了,所以想置换一台R5S。但是需要500+大洋,一直没有下手买入,不过就在前几天在V2EX上看到一个帖子,说的是R2S的USB口可以用来扩展WIFI功能,我就想那岂不是也可以作为拓展LAN来使用。立马在京东上买了一个USB转网口的转接器,插入之后还需要设置一下,研究了半天就是不行。后来想到平时转接器是用来输入网络的,那这个USB是不是可以拓展为WAN口,而原来的WAN口转为LAN是不是就行了。经过一番实验,果然成功了,下面是操作方法。打开openwrt管理界面,网络 - 接口 - WAN - 修改插入USB转网口转接器后会发现在物理设置中会多出来一个eth2接口(原来WAN口的接口设置为eth0),选中保存即可然后切换到 接口 - LAN - 修改 中的物理设置,把eth0勾选上保存即可 ...继续阅读 (134)


    love 0
    Moxuy
    发表于
    2023-10-12 14:33:32

    在VSCode中开发Go遇到的问题

    最近在学习Go开发,但是在VSCode中开发时遇到了一个很奇怪的问题,如图:我本地已经安装过依赖了,但是VSCode无论如何都找不到相关的依赖。然后我尝试修改$GOPATH环境变量去调整依赖的路径,但是发现只会在$GOPATH/src下去寻找,而go get安装的依赖都不会包含src。在网络搜索了很久,最后在这里找到了答案。使用VSCode打开的项目中包含了多个project目录,其中又都有go.mod文件,所以导致VSCode无法识别。最终只打开单个project目录后就正常了~ ...继续阅读 (130)


    love 0
    Moxuy
    发表于
    2023-10-12 14:33:32

    一级路由器访问二级路由器下的设备

    前前后后弄了很多天,终于实现了,记录一下。从网上搜索了很多帖子,采用了其中一种方法,就是关闭二级路由的DHCP服务,让一级路由去给二级路由下的设备分配IP即可。我家使用的是R2S软路由作为一级路由,红米AX6作为二级路由。进入红米路由器管理界面 - 常用设置 - 局域网设置 - DHCP服务 - 选择关闭进入R2S管理界面(我这用的是FusionWrt),网络 - 静态路由添加一个IPv4的静态路由,如图把R2S的LAN口连接到红米路由器的LAN口这样软路由就可以读取到二级路由下的设备了。 ...继续阅读 (119)


    love 0
    Moxuy
    发表于
    2023-10-12 14:33:32

    go笔记2

    指针指针保存了值的内存地址。类型*T是指向T类型值的指针。其零值为nil。&操作符会生成一个指向其操作数的指针。*操作符表示指针指向的底层值。123456789101112funcmain(){i, j :=42,2701p := &i;// 指向 ifmt.Println(*p)// 通过指针读取 i 的值*p =21// 通过指针设置 i 的值fmt.Println(i)// 查看 i 的值p = &j;// 指向 j*p = *p /37// 通过指针对 j 进行除法运算fmt.Println(j)// 查看 j 的值}结构体12345678typeVertexstruct{XintYint}funcmain(){v := Vertex{1,2}v.X =4}数组数组切片并不存储任何数据,它只是描述了底层数组中的一段。修改了切片的值就相当于修改了原数组。切片拥有长度和容量len和cap函数的区别是- len 输出当前数组所包含的元素个数- cap 输出从当前数组的第一个元素开始数,到其底层数组元素末尾的个数1234567funcmain(){varslice1 []int=make([]int,10)varslice2 = slice1[:5]fmt.Println(slice1)fmt ...继续阅读 (131)


    love 0
    Moxuy
    发表于
    2023-10-12 14:33:32

    go笔记

    :=可在类型明确的地方代替var声明,但是函数外的每个语句都必须以关键字开始(var,func等等),因此:=结构不能在函数外使用。没有明确初始值的变量声明会被赋予它们的零值数值类型为0布尔类型为false字符串类型为""输出变量类型1234567funcmain(){v :=42// intf :=3.142// float64g :=0.867+0.5i// complex128fmt.Printf("v is of type %T", v, f, g)// output: v is of type float64%!(EXTRA float64=3.142, complex128=(0.867+0.5i))}for 是 Go 中的 “while”1234567funcmain(){sum :=1forsum <1000{sum += sum}fmt.Println(sum)}同for一样,if语句可以在条件表达式前执行一个简单的语句。123456funcpow(x, n, limfloat64)float64{ifv := math.Pow(x, n); v < lim {returnv}returnlim}deferdefer 语句会将函数推迟到外层函数返回之后执行。推迟调用 ...继续阅读 (159)


    love 0
    Moxuy
    发表于
    2023-10-12 14:33:32

    CUID卡写入数据

    小区门禁没法正常录入小米手环,所以就采用了另一种方法。从万能的淘宝上购入设备后,插入电脑USB中。打开tools软件后,首先要点击检测连接按钮,这样可以更快的进行后续操作。将空白卡置于设备上方,点击软件中的扫描卡片即可识别。选择高级选项卡,点击CUID写入,选择之前生成的解密文件,写入即可。然后使用小米手环识别该卡,识别成功后再将小米手环放到设备上面,再重复3、4步骤即可。 ...继续阅读 (131)


    love 0
    Moxuy
    发表于
    2023-10-12 14:33:32

    rust记忆点3

    结构体结构体像是TypeScript中的Interface,在大括号中定义每一部分数据的名字和类型123456structUser{active:bool,username:String,email:String,sign_in_count:u64}解构赋值与Javascript类似,Rust可以使用解构赋值,如下12345678fnmain() {// --snip--letuser2= User {email: String::from("another@example.com"),..user1};}不同的是,Rust使用..来解构没有命名字段的元组结构体与之前不同,可以创建没有字段的结构体,如下1234567structColor(i32,i32,i32);structPoint(i32,i32,i32);fnmain() {letblack=Color(0,0,0);letorigin=Point(0,0,0);}没有任何字段的类单元结构体常用在想要在某个类型上实现trait但不需要在类型中存储数据的时候。12345structAlwaysEqual;fnmain() {letsubject= AlwaysEqual;}方法方法和函数类似,都是用fn关键字和名称声明,可以拥 ...继续阅读 (275)


    love 0
    Moxuy
    发表于
    2023-10-12 14:33:32

    rust记忆点2

    所有权所有权规则Rust中的每一个值都有一个被称为其所有者的变量值在任一时刻有且只有一个所有者。当所有者(变量)离开作用域,这个值将被丢弃。String类型在 Rust 中声明string类型的变量需要这样操作1lets= String::from("hello");// 声明虽然string类型的数据都是被存放在堆中,但是复制string类型的变量和 JavaScript 不同,如果简单的赋值12lets1= String::from("hello");// 声明lets2= s1;// rust中称之为移动而不是复制那么s1就会自动被垃圾回收机制回收,因为s1和s2在栈中指向的是堆中同一个地址,所以如果s1和s2离开作用域,他们都会尝试释放相同的内存,这就会导致二次释放的错误,会导致内存污染和潜在的安全漏洞。如果一定要复制,则可使用clone12lets1= String::from("hello");// 声明lets2= s1.clone();引用和借用只传递值而不传递所有权可以使用引用,比如123456789fnmain() {lets1= String::from("hello");letlen=calculate_length(&s1;);// 在变量前加一个&符号即表示引用,它们允许你使用值但不获取其所有权println!("The length of & ...继续阅读 (165)


    love 0
    江南一点雨
    发表于
    2023-10-12 14:13:31

    @Scope 注解失效了?咋回事

    scope 属性,相信大家都知道,一共有六种:取值含义生效条件singleton表示这个 Bean 是单例的,在 Spring 容器中,只会存在一个实例。prototype多例模式,每次从 Spring 容器中获取 Bean 的时候,才会创建 Bean 的实例出来。request当有一个新的请求到达的时候,会创建一个 Bean 的实例处理。web 环境下生效session当有一个新的会话的时候,会创建一个 Bean 的实例出来。web 环境下生效application这个表示在项目的整个生命周期中,只有一个 Bean。web 环境下生效gloablsession有点类似于 application,但是这个是在 portlet 环境下使用的。web 环境下生效这个用法也很简单,通过配置就可以设置一个 Bean 是否为单例模式。1. 问题呈现今天我要说的不是基础用法,是另外一个问题,假设我现在有如下两个 Bean:@Service public class UserService { @Autowired UserDao userDao; } @Repository public class UserDao { }在 UserService 中注入 UserDao,由于两者都没有声明 scope,所以默认都是单例的。现在,如果我给 UserDao 设置 Scope,如下 ...继续阅读 (121)


    love 0
    yuanj\'s blog
    发表于
    2023-10-12 13:03:15

    做了一个 presentasion 后的总结

    今天给农科院基因组研究所的黄三文老师发了邮件和简历,没想到才没过多久就有一位黄老师的博士生加我微信,说是要我做一个 presentasion,了解一下我,也跟我讲了讲黄老师课题组的一些事情。 ...继续阅读 (102)


    love 0
    yuanj\'s blog
    发表于
    2023-10-12 13:03:15

    做了一个 presentasion 后的总结

    今天给农科院基因组研究所的黄三文老师发了邮件和简历,没想到才没过多久就有一位黄老师的博士生加我微信,说是要我做一个 presentasion,了解一下我,也跟我讲了讲黄老师课题组的一些事情。 ...继续阅读 (33)


    love 0
    CatUncle4
    发表于
    2023-10-12 13:03:15

    做了一个 presentasion 后的总结

    今天给农科院基因组研究所的黄三文老师发了邮件和简历,没想到才没过多久就有一位黄老师的博士生加我微信,说是要我做一个 presentasion,了解一下我,也跟我讲了讲黄老师课题组的一些事情。 ...继续阅读 (32)


    love 0
    ChenSoul
    发表于
    2023-10-12 13:00:00

    [译]关于 HTTP 您需要了解的一切

    HTTP 是每个 Web 开发人员都应该了解的协议,因为它为整个 Web 提供动力。了解 HTTP 当然可以帮助您开发更好的应用程序。 在本文中,我将讨论 HTTP 是什么、它是如何产生的、它今天的状况以及我们是如何走到这一步的 什么是 HTTP? 首先,什么是 HTTP? HTTP 是基于 TCP/IP 的应用层通信协议,它标准化了客户端和服务器之间的通信方式。它定义了如何通过互联网请求和传输内 … ...继续阅读 (119)


    love 0
    Lenciel
    发表于
    2023-10-12 12:39:29

    木里

    ...在同一张床上,她态度反复,有时乖乖伏在多吉怀里,听他讲大喇嘛当年的排场,讲大寺里里外外那些故事,或如欢喜的幼兽,上下翻腾,让彼此的身体都变得温暖;有时又忽轻忽重或不顾轻重地咬他,带着接近怨的爱... ...继续阅读 (133)


    love 0
    ChenSoul
    发表于
    2023-10-12 11:00:00

    前端学习路线图

    前端学习路线图: Internet: HTTP DNS HTML Basic Semantic HTML Forms and Validations Accessibility SEO CSS Basic Layout Responsive Design JavaScript Baisc DOM Fetch API / Ajax Package Manager npm pnpm yarn … ...继续阅读 (112)


    love 0
    Denis &#124; 邓鸿华
    发表于
    2023-10-12 10:27:43

    设置好 WordPress 的「CDN 加速」功能之后,怎么判断站点成功加速了?

    前面介绍了WPJAM Basic的「CDN 加速」功能背后原理:对象存储的镜像回源功能详细介绍,以及为什么不使用 API 直接上传图片到云存储?大家对 CDN 加速有了基本的了解,也参考文档对自己站点进行了设置,但是怎么判断自己的 WordPress 站点成功加速了?这是 #WPJAM Basic# 插件用户使用「CDN 加速」功能问的的最多问题之一。其实很好判断,简单说,打开自己网站,按F12查看网页源代码,看看图片的地址是不是替换到 CDN 域名下了,如果图片都替换到 CDN 域名下面,则基本说明生效了。为什么要说基本呢?可能部分用户的 CDN 域名没有按照要求解析到 CDN 上,所以还需要做最后一步的确认。直接打开站点中的一张图片查看其响应标头:火山引擎veImagex 标头如果是火山引擎veImagex,则响应标头里面有 X-Powered-By: ImageX 的响应标头:阿里云OSS标头如果是阿里云OSS,则响应标头里面有 x-oss 打头的响应标头:腾讯云COS标头如果腾讯云COS,则响应标头里面有 x-cos 打头的响应标头:总结一下,只要符合下面这三点,就是成功了:网页上的图片能够正常显示。在源代码查看图片是否都替换到 CDN 域名下。查看图片的响应标头是否正确最后老是老规矩,贴一下 WPJAM Basic 支持的云存储服务,记得点我的链接,这三家土豪会给佣金的, ...继续阅读 (181)


    love 0
    Denis &#124; 邓鸿华
    发表于
    2023-10-12 10:17:38

    WordPress 本地删除图片,CDN 上会同时删除图片吗?

    前面介绍了 #WPJAM Basic# 的「CDN 加速」功能背后原理:对象存储的镜像回源功能详细介绍,以及为什么不使用 API 直接上传图片到云存储?大家对 CDN 加速有了基本的了解,也可以参考文档进行设置,对自己的 WordPress 站点进行 CDN 加速了。但是慢慢一些用户就有一些问题,今天就继续来解答 #WPJAM Basic# 插件「CDN 加速」功能的常见问题,今天是关于图片同步的问题。我本地删除了图片,云存储上会同时删除图片吗?我设置好之后,为什么云存储的空间里没有看到任何的文件?照旧,开始之前,还是建议先看看详细的使用说明:WordPress 博客使用阿里云对象存储 OSS 进行静态资源 CDN 加速WordPress 博客使用腾讯云对象存储 COS 进行静态资源 CDN 加速WordPress 博客使用火山引擎 veImageX 进行静态资源 CDN 加速云存储上会同时删除图片吗?首先简单回答:不会。因为 #WPJAM Basic# 的「CDN 加速」是使用云存储的镜像回源的功能实现的,当用户请求的资源不存在的时候,可以通过回源规则从设定的源地址获取到正确的数据,然后再返回给网站的用户。镜像回源只处理云存储的空间文件不存在的时候去设定的源站点抓取,而源站点(WordPress 本地)的文件修改了或者删除了,云存储是不会感知到的,也不会重新抓取。只有主动通知云存 ...继续阅读 (177)


    love 0
    ChenSoul
    发表于
    2023-10-12 09:00:00

    [译]DevOps 和测试人员的 Git 面试问题

    欢迎来到 Git 面试准备指南,我们将在这里向初学者和经验丰富的专业人士讨论最常见的 Git 面试问题。无论您是准备参加 DevOps 或测试面试,还是希望提高 Git 技能,此资源都可以通过深入研究一些与 Git 基本概念和实践相关的最常见面试问题来帮助您。 我们将涵盖所有重要主题,例如分支、存储库管理、处理合并冲突和协作工作流程。通过探索这些问题,您将更深入地了解 Git 的版本控制系统,并更 … ...继续阅读 (162)


    love 0
    ChenSoul
    发表于
    2023-10-12 09:00:00

    [译]Spring Security 面试问题

    本面试准备指南将讨论一些常见的 Spring Security 面试问题。无论您是准备面试还是只是想增强对 Spring Security 的了解,这些问题都将帮助您理解关键概念并指导您设计常见安全问题的解决方案。 1. Spring Security 的核心特性是什么? Spring Security 提供的两个最突出的功能是身份验证和授权。这些功能在确保应用程序的安全性方面发挥着至关重要的作 … ...继续阅读 (108)

上一页 500/4404 下一页
沪ICP备19023445号-2号
友情链接