首页
关于
留言
Search
1
红米 AX3000 (AX6) 路由器解锁 SSH 教程
6,677 阅读
2
网盘挂载程序sharelist美化教程
4,216 阅读
3
小米路由器 AX3600 开启SSH教程,官方固件即可安装 ShellClash开启科学上网
2,168 阅读
4
Oracle 甲骨文 ARM VPS 自动抢购脚本
1,820 阅读
5
编译带PassWall和SSR-plus插件的Openwrt系统
1,393 阅读
前端
Vue
React
后端
Java
Python
PHP
数据库
运维
杂谈
小程序
影视资源
登录
Search
标签搜索
Java
Linux
Mysql
IDEA
Debian
Docker
Springboot
CentOS
Cloudflare
Maven
JavaScript
SQL
Wordpress
宝塔
Nginx
Windows
MacBook
JS
CSS
Openwrt
William
累计撰写
144
篇文章
累计收到
702
条评论
首页
栏目
前端
Vue
React
后端
Java
Python
PHP
数据库
运维
杂谈
小程序
影视资源
页面
关于
留言
搜索到
144
篇与
的结果
2021-08-02
Java集合框架
List,Set,Map三者的区别List :(对付顺序的好帮手)存储的元素是有序的,可重复的。Set :(注重独一无二的性质)存储的元素是无序的,不可重复的Map :(用key搜索的专家)使用键值对(key-value)存储,key是无序的、不可重复的、value是无序的、可重复的,每个键最多映射到一个值。如何选用集合?主要根据集合的特点来选,比如需要根据键值获取元素的值,就选用 Map 接口下的集合,需要排序就选 TreeMap,不需要排序就选 HashMap,要保证线程安全就选用 ConcurrentHashMap如果只是需要存放元素,那么可以选择实现 collection 接口的集合,需要保证元素唯一性时选择 Set 接口的集合比如 TreeSet或HashSet。不需要就选择实现 List 接口的比如 ArrayList 或 LinkedList,然后再根据实现这些接口的集合的特点进行选择。为什么要选用集合?当我们需要保存一组类型相同的数据的时候,我们应该用一个容器来保存,这个容器就是数组,但是,使用数组来存放对象有一定的弊端,因为在实际开发中,存储的数据的类型是多样的,于是,就出现了集合。集合也是用来存放多个数据的。数组的缺点是一旦声明了以后,长度就不可变了;同时,声明数组时确定的数据类型也决定了它存放的数据的数据类型;而且,数组存储的数据时有序的,可重复的,特点单一。但是集合提高了数据存储的灵活性,Java结合不仅可以用来存储不同类型不同数量的对象,还可以保存具有映射关系的数据。Arraylist与Vector的区别?Arraylist 是 List 的主要实现类,底层使用的是 Object[ ] 存储,适用于频繁的查找工作,线程不安全。Vector 是 List 的古老实现类,底层使用的是 Object[ ] 存储,线程是安全的 。Arraylist 与 LinkedList 区别?是否保证线程安全: ArrayList 和 LinkedList 都是不同步的,也就是不保证线程安全;关于底层数据结构:Arraylist 底层使用的是 Object 数组,Linkedlist 底层使用的是双向链表(jdk1.6之前是循环,jdk1.7后取消了)插入和删除是否受元素位置影响Arraylist 采用数组存储,所以插入和删除元素的时间复杂度都会收到元素位置的影响。比如,增加的时候 ArrayList 是默认加到列表尾部的,那这时候复杂度就是 O(1)。但如果是要在指定位置i进行插入或删除的话,那么时间复杂度就是O(n-i)。因为上述两个操作集合中的第i个和第i个元素之后的 (n-i) 个元素都要执行向后/向前移动一位的操作。LinkedList采用链表存储,所以,如果是在头部插入或者删除元素不受元素位置的影响,近似O(1),如果是在指定位置 i 插入和删除元素的话,时间复杂度近似 O(n),因为需要先移动到指定位置再插入。是否支持快速随机访问:LinkedList 不支持高效的随机元素访问,而 ArrayList 支持。快速随机访问就是通过元素的序号快速获取元素对象(对应于 get(int index) 方法)内存空间占用:ArrayList的空间浪费主要体现在list列表在结尾会预留一定的容量空间,而 Linkedlist 的空间花费主要体现在每个元素都要消耗比 Arraylist 更多的空间(因为要存放直接后继,直接前驱及数据)comparable 和 Comparator 的区别comparable 接口实际上是出自 java.lang 包 它有一个 compareTo(Object obj)方法用来排序comparator接口实际上是出自 java.util 包它有一个 compare(Object obj1, Object obj2) 方法用来排序无序性和不可重复性的含义是什么1、什么是无序性?无序性不等于随机性 ,无序性是指存储的数据在底层数组中并非按照数组索引的顺序添加 ,而是根据数据的哈希值决定的。2、什么是不可重复性?不可重复性是指添加的元素按照 equals()判断时 ,返回 false,需要同时重写 equals()方法和 HashCode()方法。将数组转换为ArrayListJava8的Stream方法(推荐)Integer[] myarray = {1,2,3}; List myList = Arrays.stream(myarray).collect(Collectors.toList()); // 基本类型也可以实现转换(依赖boxed的装箱操作) int[] myarray2 = {1,2,3} List myList = Arrays.stream(myarray2).boxed().collect(Collectors.toList());
2021年08月02日
13 阅读
0 评论
0 点赞
2021-07-28
如何通过公众号SEO排名优化获取精准垂直流量
SEO也就是搜索引擎优化,简单点说就是搜索排名优化。也就是当用户搜索某一些关键词时,就会看到你的文章或者账号排在前几位,说白了,做SEO其实就是为了提高排名,获取精准垂直流量。那么我们如果要做公众号排名相对比百度搜索应该怎么做呢?两个重点一是 关键词,二是长尾词一、关键词关键词就是能体现一篇文章的中心概念的词语,网络搜索主要就是依靠关键词搜索。要做搜索排名优化就要先确定需要优化的 核心关键词。此外,不同的关键词,流量也不同。有些词意思相近,但流量差别却很大。我们可以通过 5118、微信指数、百度指数查看每个词的流量大小。核心关键词可以通过账号去优化。二、长尾词长尾词 就是单个搜索量非常低的一些关键词,但是合并在一起的长尾词却拥有大量搜索需求。在大多数情况下,长尾关键词会更长,因为通常用户认为更多的词汇会表达更具体的需求。长尾词主要是指与核心关键词 高度相关 的关键词,它通常是对目标词的进一步解释与定义。下面就长尾词特点、如何挑选长尾词以及如何强调关键词这三个方面详细说一下。1.长尾词特点:① 相关关键词,也就是与目标关键词具有一定的相关性。② 关键词意图,一个有效的长尾关键词,是具有明确的关键词意图的,它通常代表某一部分用户的搜索需求。2.如何挑选长尾词:① 分析目标的核心关键词。② 深入挖掘用户需求和用户意图,根据核心关键词做定义上的扩展、根据用户需求和用户意图选择精准的长尾关键词,并且长尾词、关键词要具备准确性和描述性。③ 模拟用户思维方式设计关键词。④ 研究竞争者的关键词。⑤ 强调长尾词和关键词。3.如何强调关键词① 注意关键词密度,尽量在文章的每段内容中都出现关键词。② 在关键词出现的第一个地方最好给它加粗。③ 标题、文章中(开头、中间、小标题、结尾) 一定要出现核心关键词、长尾词。对应的长尾关键词,可以根据微信搜一搜下拉框、百度下拉框、5118 进行选择,也可以站在用户角度进行思考。对于长尾词的优化,则要靠公众号的文章,标题。账号的排名和文章的排名上面已经说了做排名的两个重点,也就是 关键词 和 长尾词,下面再来说说 账号的排名 和 文章的排名。一、账号排名1.关键词匹配公众号名称带有关键词,比如,当用户在微信搜索栏搜索“电影”时,你的公众号排名刚好在前面,那他很可能就会关注。做账号排名优化的第一步,就是要确定需要优化的关键词,也就是用户可能会搜索的那个关键词。公众号名字、公众号简介、菜单栏都要包含你想要优化的关键词。2.账号权重① 微信认证。② 注册时间越早越好。③ 账号无违规。④ 原创占比高。⑤ 公众号持续更新,每周至少1篇,保持活跃。⑥ 粉丝越多,排名相对越靠前。⑦ 用户喜欢程度,如标为星标的人数。⑧ 账号的垂直度⑨ 核心关键词一定要布局在公众号名称、简介和菜单栏中,长尾关键词则布局在文章中(开头、中间、小标题、结尾)。二、文章排名1.关键词与文章标题、文章内容、文章摘要的匹配程度。提升文章与关键词的匹配度,要使文章尽可能多地覆盖核心关键词和长尾词,关键词尽可能地放置在文章标题、文章前100字的内容、文章小标题和结尾当中。标题要至少在文章中出现2次,这样可以增加被平台收录和被用户搜索到的概率。关键词在文章中出现的频率高,平台会认为更符合用户的搜索需求,所以要强化关键词出现的频率,不过关键词和长尾词一定要出现的自然。2.内容的优质性,平台会根据内容是否原创、发布时间、互动性、稀缺度来判断。① 文章是否原创,平台更喜欢原创。② 发布时间,读者肯定是想看最新、最前沿的内容,所以在搜索结果中,越晚发布的文章越容易排在前面。③ 互动性,文章的阅读量、转发、点赞、在看、收藏、留言、阅读完关注等互动数据越高越好,这反映了文章的受欢迎程度。④ 文章越稀缺则平台越喜欢。
2021年07月28日
47 阅读
0 评论
1 点赞
2021-07-21
Debian系统环境精简优化
第一步:先更新一下系统apt-get update && apt-get -y upgrade && apt-get install -y wget curl vim{message type="warning" content="最好是在刚重装完系统后操作这些步骤,而不是在已经稳定运行的机器优化,以免出现问题。 "/}第二步、移除多余的软件apt-get -y purge apache2-* bind9-* xinetd samba-* nscd-* portmap sendmail-* sasl2-bin上面那些软件的用途:apache2-* //apache服务器,一般我们自己会用一键安装包安装 bind9-* //我们不需要用VPS搭建DNS,所以去掉 xinetd //xinetd是服务守护进程 samba-* //samba能让linux使用windows共享功能,不需要 nscd-* //DNS缓存软件,同bind9,不需要 portmap //端口转发,一般Web服务器不需要 sendmail-* //发送邮件用,如果有需要保留 sasl2-bin //一个权限程序,占用资源,删除第三步、删除多余组件apt-get -y purge lynx memtester unixodbc python-* odbcinst-* sudo tcpdump ttf-*第四、清理缓存文件apt-get autoremove && apt-get clean可选删除 Debian 自带的不必要程序apt-get remove acpi acpi-support-base acpid eject man-db manpages nano laptop-detect bsdmainutils busybox dmidecode
2021年07月21日
228 阅读
0 评论
0 点赞
2021-07-15
Spring Boot打包报错 maven-surefire-plugin:2.18.1
问题场景在IDEA中执行打包操作,报错Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test问题定位出现这个问题是因为单元测试不通过解决方案去除单元测试的代码执行命令跳过测试包 mvn clean package -Dmaven.test.skip=true使用idea打包时 勾选闪电图标
2021年07月15日
14 阅读
0 评论
0 点赞
2021-07-15
IDEA执行mvn命令提示不是内部或外部命令
问题场景在IDEA中的maven项目执行打包,需要之行mvn命令,用 mvn -version 检查mvn版本时发现mvn不存在于环境变量解决方案在系统环境变量中添加maven的bin目录。windows10的话在Path中添加一条maven的bin目录,例如:D:\apache-maven-3.3.9\bin应用,保存后,再回到IDEA的Terminal中执行mvn -version就会出来mvn的版本信息了
2021年07月15日
12 阅读
0 评论
0 点赞
2021-07-07
使用Cloudflare Workers反代网站
Workers 的工作原理就是最近几年火热的 serverless。网站管理员不再一定需要一个服务器,只需要将对应的 Function 托管在 Workers 上,当用户访问网站时就会执行对应的 Function,值得一提的是 Cloudflare Workers 本质上只支持 JS反代代码// 需要反代的地址 const upstream = 'www.example.com' // 反代地址的子路径 const upstreamPath = '/' // 反代网站的移动端域名 const upstreamMobile = 'www.example.com' // 是否使用 https const useHttps = true // 禁止使用该 worker 的国家代码 const blockedRegion = ['KP', 'SY', 'PK', 'CU'] // 禁止使用该 worker 的 ip 地址 const blockedIp = ['0.0.0.0', '127.0.0.1'] // 是否关闭缓存 const disableCache = false // 替换条件 const contentTypes = [ 'text/plain', 'text/html' ] // 反代网站中其他需要被替换的地址 const replaceDict = { '$upstream': '$workerDomain', } addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)) }) /** * Respond to the request * @param {Request} request */ async function handleRequest(request) { const region = request.headers.get('cf-ipcountry') || ''; const ip = request.headers.get('cf-connecting-ip'); if (blockedRegion.includes(region.toUpperCase())) { return new Response('Access denied: WorkersProxy is not available in your region yet.', { status: 403 }); } if (blockedIp.includes(ip)) { return new Response('Access denied: Your IP address is blocked by WorkersProxy.', { status: 403 }); } const upstreamDomain = isMobile(request.headers.get('user-agent')) ? upstreamMobile : upstream; // 构建上游请求地址 let url = new URL(request.url); const workerDomain = url.host; url.protocol = useHttps ? 'https:' : 'http'; url.pathname = url.pathname === '/' ? upstreamPath : upstreamPath + url.pathname; url.host = upstreamDomain; // 构建上游请求头 const newRequestHeaders = new Headers(request.headers); newRequestHeaders.set('Host', upstreamDomain); newRequestHeaders.set('Referer', url.protocol + '//' + workerDomain); // 获取上游响应 const originalResponse = await fetch(url.href, { method: request.method, headers: newRequestHeaders }) const connectionUpgrade = newRequestHeaders.get("Upgrade"); if (connectionUpgrade && connectionUpgrade.toLowerCase() === "websocket") { return originalResponse; } let originalResponseClone = originalResponse.clone(); // 构建响应头 let responseHeaders = originalResponseClone.headers; let newResponseHeaders = buildResponseHeaders(responseHeaders); if (newResponseHeaders.get("x-pjax-url")) { newResponseHeaders.set("x-pjax-url", responseHeaders.get("x-pjax-url").replace("//" + upstreamDomain, "//" + workerDomain)); } // 构建响应体 let originalText; const contentType = newResponseHeaders.get('content-type'); if (contentType != null) { const types = contentType.replace(' ','').split(';') if (types.includes('charset=utf-8')){ for (let i of contentTypes) { if (types.includes(i)){ originalText = await replaceResponseText(originalResponseClone, upstreamDomain, workerDomain); break } } } } else { originalText = originalResponseClone.body } return new Response(originalText, { status: originalResponseClone.status, headers: newResponseHeaders }) } function isMobile(userAgent) { userAgent = userAgent || '' let agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]; for (let v = 0; v < agents.length; v++) { if (userAgent.indexOf(agents[v]) > 0) { return true; } } } function buildResponseHeaders(originalHeaders) { const result = new Headers(originalHeaders); if (disableCache) { result.set('Cache-Control', 'no-store'); } result.set('access-control-allow-origin', '*'); result.set('access-control-allow-credentials', true); result.delete('content-security-policy'); result.delete('content-security-policy-report-only'); result.delete('clear-site-data'); return result } async function replaceResponseText(response, upstreamDomain, workerDomain) { let text = await response.text() const placeholders = { "$upstream": upstreamDomain, "$workerDomain": workerDomain } for (let origin in replaceDict) { let target = replaceDict[origin] origin = placeholders[origin] || origin target = placeholders[target] || target const re = new RegExp(origin, 'g') text = text.replace(re, target); } return text; }
2021年07月07日
136 阅读
0 评论
0 点赞
2021-06-23
CentOS7修改rc.local设置开机执行命令不生效
问题现象CentOS 7、Debian等操作系统云服务器中,修改了/etc/rc.local开机启动脚本不生效。本节操作以CentOS 7操作系统为例分析根因,并介绍解决方法。根因分析出现该问题的可能原因如下:CentOS 7中/etc/rc.d/rc.local文件没有执行权限。处理方法查看/etc/rc.d/rc.local是否有执行权限ls -l /etc/rc.d/rc.local输出:-rw-r--r-- 1 root root 473 Sep 14 02:19 /etc/rc.d/rc.local如回显信息所示该文件没有执行权限,需要为/etc/rc.d/rc.local添加可执行权限。执行以下命令为/etc/rc.d/rc.local添加可执行权限chmod +x /etc/rc.d/rc.local
2021年06月23日
49 阅读
0 评论
0 点赞
2021-06-23
轻松搭建 FRP 内网穿透并设置开机自启动方法
1.它是什么?干嘛用的?先假设这样一个场景,在仅有的IPV4的环境下,你身处外面使用手机数据流量,想访问家里的路由器界面(如192.168.1.1),但奈何路由设备仅仅存与家庭局域网中,无法访问,怎么让路由器管理界面在世界各地都可以访问呢?Frp内网穿透工具就是为了解决这样一个问题的,可以在有网络的任何地方访问到你家庭的设备。家里头无法在外面访问的网络,我们以下称为内网公网:与内网相反,为什么我们都可以在任何地方访问百度?因为百度的服务器放在了一个大家都可以访问到底网络,公共使用的网络--公网2. Frp工具是如何做到的?简单的说转发,它需要一台在公网设备的帮助转发;借助下面的图就懂了Frp服务器部署在公网中,它是一个中间商,你想发数据给路由,先发给Frp服务器,Frp再转发给路由,路由发你的数据也是如此 IP:网络地址,字面意思,网络的地址,有地址才找到一个地方域名: 方便访问,为什么我们输入"baidu.com"就能访问百度呢?为什么大家不直接通过百度IP访问呢?不是所有人都能记住那一串数字的{IP地址:xxx.xxx.xxx.xxx}3.部署所需一台具有公网IP的设备(服务器)一个属于你的域名4.进行部署1、根据你的服务器或设备类型选择对应 frp 压缩包FRP Github ReleaseCDN加速下载 windows 64位:XXX_windows_amd64.zip windows 32位:XXX_windows_386.zip linux 64位:XXX_linux_amd64.tar.gz linux 32位:XXX_linux_386.tar.gz 2、然后使用ftp或sftp或者scp等方式,将frp压缩包上传到你的服务器中(也可以直接在服务器使用wget进行下载)3、对frp压缩包进行解压,里面会有几个文件其中包括有frpc(客户端),frpc.ini(客户端配置),frps(服务器),frps.ini(服务器配置)假设上传到了服务器的root路径下,对frp文件夹进行权限设置chmod 777 -R /root/frp4、配置frp服务器参数使用vim编辑: vim frps.ini[common] bind_addr = 0.0.0.0 bind_port = 服务器监听端口(10000) bind_udp_port = UDP端口(10001) kcp_bind_port = KCP端口(10002) vhost_http_port = 80 vhost_https_port = 443 subdomain_host = 你的域名(如:yourname.xxx) dashboard_addr = 0.0.0.0 dashboard_port = 后台管理端口(11000) dashboard_user = 管理用户名(root) dashboard_pwd = 管理密码(你自己填一个) token = 链接密钥(你自己想一个,别照抄啊!如:ABCDEFG) max_pool_count = 100 log_file = ./frps.log log_level = info log_max_days = 3 tcp_mux = true如果你的服务器已经部署了网站那些,也就是80跟443端口已经被占用,那么 vhost_http_port 和 vhost_https_port 这两个端口也需要改变。总之,frps.ini 中的任何端口不能跟 其他frp 或 其他程序 冲突,否则服务启动失败5.启动frp所有配置完成后,正常使用frp的话,肯定是要让frp在后台运行的,以下有几种后台启动方式nohub命令:# 在root根目录下执行 nohup /root/frp/frps -c /root/frp/frps.iniscreen命令:# 在frp目录下执行 screen -S frp ./frps -c ./frps.inirc.local修改/etc/rc.local文件,加入启动命令/root/frp/frps -c /root/frp/frps.ini &systemctl创建并编辑 frps.service 文件,执行代码:vim /lib/systemd/system/frps.service然后在该文件输入以下代码,并保存退出:[Unit] Description=Frp Server Service After=network.target [Service] Type=simple User=root Restart=on-failure RestartSec=5s ExecStart=/存放frp的目录/frps -c /存放frp的目录/frps.ini LimitNOFILE=1048576 [Install] WantedBy=multi-user.target「操控命令」启动服务 systemctl start frps开机自启动 systemctl enable frps重启服务 systemctl restart frps停止服务 systemctl stop frps查看日志与状态 systemctl status frps客户端自启动与服务端相同,只需要创建 frpc.service 并把 ExecStart 路径改为存放frpc的路径,操控命令将 frps 改为 frpc不同的系统自启动会不太一样,ubuntu,debian,centOS,windows等等,可自行百度Openwrt进入 /etc/init.d 文件夹中,创建一个名为 frp 的文件,写入以下代码:#!/bin/sh /etc/rc.common START=90 STOP=90 SERVICE=frpc USE_PROCD=1 PROC="/存放frp的目录/frps -c /存放frp的目录/frps.ini" start_service(){ procd_open_instance procd_set_param command $PROC procd_set_param respawn procd_close_instance } service_triggers(){ procd_add_reload_trigger "rpcd" }6.解析一个域名到服务器比如解析了个 frp.example.com 到你的服务器7.在浏览器中访问frp管理后台在自己电脑打开浏览器,输入frp后台管理地址,比如本例子中:域名是:frp.example.com面板端口:11000那浏览器地址栏就写 frp.example.com:11000 域名后面的端口就是frps.ini中的dashboard_port。用户名就是dashboard_user,密码是dashboard_pwd如果frps.ini中没有配置 subdomain_host 那么就使用 服务器IP:FRP面板端口 形式访问,客户端配置时也使用服务器IP如果访问frp管理后台无法打开,那就是你的服务没启动或者端口没有开放。重新检查frps.ini文件,并确定该文件中的bind_port、dashboard_port在你的防火墙(服务器安全组)中放行了8.客户端连接服务器这个客户端是你要被控制的设备,下载frp程序,下载回来后,frps相关的可以删掉了,只有frpc才是客户端使用的编辑 frpc.ini[common] server_addr = frp.example.com(刚刚设置的域名解析) server_port = 服务器监听端口(10000) / bind_port token = frp服务器中你设置的token user = 客户端名称(可以随便填一个英文字符串,给这个客户端命名) [web] //代理内网的网站 type = http //类型http local_ip = 127.0.0.1 //内网设备IP local_port = 80 //端口 subdomain = http //子域名:如此时填入的是http,则浏览器输入(http.yourname.xxx)就会访问到此设备 [ssh] type = tcp //内网TCP代理 local_ip = 127.0.0.1 //内网设备IP local_port = 22 //要代理的端口 remote_port = 11022 //代理所生成的端口,远程ssh链接需要指定为这个端口9.被控设备为Windows电脑如果要被控制的设备是Windows,比如公司的电脑,下载frp相对应的压缩包,解压后将文件夹名字改为frp,删掉frps相关文件,只留frpc文件,用记事本打开frpc.ini进行配置[common] server_addr = 你的服务器域名或者IP server_port = 服务器监听端口(10000) / bind_port token = frp服务器中你设置的token user = 给本次客户端取一个名(全英文名) tls_enable=true [windows] type = tcp local_ip = 127.0.0.1 local_port = 3389 remote_port = 33890(映射端口,可随便设置,但不能和其他frp客户端冲突,并且服务器防火墙要放行这个端口)在frp文件夹内,按住shift键盘并右键鼠标,点击右键菜单栏中的powershell,输入命令:./frpc.exe -c frpc.ini如果你看到start proxy success的字样,则表示成功了,如果没有,则表示frpc.ini配置有问题按ctrl+C停止程序运行,现在程序可以正常运行,但我们需要将其设置开机自启动需要一个叫winsw的工具,Github下载 CDN加速下载下载后放到frp的文件夹中,并改名为winsw.exe,并且新建一个文件winsw.xml用记事本打卡winsw.xml,填入下面内容,需要修改的是要运行的frp程序绝对路径,根据你的实际路径填写<service> <!-- 该服务的唯一标识 --> <id>frp</id> <!-- 该服务的名称 --> <name>frp_0.37.0_windows_amd64</name> <!-- 该服务的描述 --> <description>frpc客户端 - 实现内网穿透</description> <!-- 要运行的程序绝对路径,根据你的实际路径填写 --> <executable>C:\frp\frpc.exe</executable> <!-- 携带的参数 --> <arguments>-c frpc.ini</arguments> <!-- 第一次启动失败 60秒重启 --> <onfailure action="restart" delay="60 sec"/> <!-- 第二次启动失败 120秒后重启 --> <onfailure action="restart" delay="120 sec"/> <!-- 日志模式 --> <logmode>append</logmode> <!-- 指定日志文件目录(相对于executable配置的路径) --> <logpath>logs</logpath> </service>在frp文件夹中,按住shift并点击鼠标右键,可以在右键菜单栏中看到powershell,输入.\winsw.exe install,如下图如果提示下面,则成功!成功!重启电脑(被控制设备)后用手机端试试能不能远程桌面吧下载Remote Desktop安装,PC name(电脑名)那里输入FRP服务器域名/IP:端口(上面的remote_port = 33890)比如:frp.example.com:33890
2021年06月23日
253 阅读
0 评论
0 点赞
1
...
9
10
11
...
18