分类 大观园 下的文章

简单记录一下搜索引擎的基本原理和搭建步骤。


搜索引擎基本框架




搭建搜索引擎主要分为三个步骤:Web信息的搜集;信息的索引与检索;Web服务提供接口。



1.信息搜集

信息搜集的原理是将互联网看成一个大的图,则信息搜集可以看成是图的遍历,目的是为了获取高质量的网页,其搜集的策略就有广度优先搜索和深度优先搜索及网站采集和全局URL采集等。推荐的开源信息搜集工具是Weblech,Weblech的基本流程图为:






2.索引与搜索

在建立索引上,大规模数据的索引常常使用倒排索引,具体的介绍百度百科介绍的挺好:倒排索引,建立倒排索引的流程如下(在分词的同时还需要有英文的词根还原,去除停用词等处理):



检索是用户提交一个查询(Query),搜索引擎查找与该查询相关结果的过程。检索的模型包括布尔模型,向量空间模型等。在检索过程中有一些判断网页等级/重要性的方法比如Google的PageRank,IBM的HITS算法等。


推荐的开源索引及检索工具为全文检索工具包Lucence。关于Lucence的具体介绍见上一篇文章Lucence全文搜索框架。



3.Web接口

用户查询请求的处理程序利用脚本语言ASP,PHP,JSP等编写即可。


接口的主要功能为:1)获取用户查询式:把用户通过Form输入的查询语句封装发送给检索服务器。2)显示结果:从检索服务器获取结果,缓存幵分页呈现给用户。


推荐的开源Web服务器工具为Tomcat。



————————————————

版权声明:本文为CSDN博主「qiuyang0607」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qiuyoungster/article/details/7657369


有时候我们想导出某次版本提交时有哪些变更的文件,在 svn 中有一个 export 功能,很方便,如下图所示。

在 Git 中我也找到了以下两种方法。

方法1

使用 git 自带命令 git archive, 语法如下。

git archive -o c:/Users/yourusername/Desktop/export.zip NewCommitId $(git diff --name-only OldCommitId NewCommitId)

使用示例如下:

git archive -o c:/Users/yourusername/Desktop/export.zip 479d554cf570edcc28c20ce264c6f216f8223bf3 $(git diff --name-only a838d0512e84e5eb42569cce3ef305d3ac1c44d0 479d554cf570edcc28c20ce264c6f216f8223bf3)

这样会在桌面生成一个 export.zip 压缩包。

这个方法需要敲命令,且每次拷贝前后提交的版本号,会稍显麻烦。

方法2

下载 TortoiseGit Git 客户端软件,使用方法和 svn 的 export 功能类似。

很明显,方法2不用敲命令,不用拷贝提交版本号,方法2更方便,更实用!

但遗憾的是,我没有在 Source Tree 软件中找到类似的功能,需要装两个客户端,有点蛋疼。

如果你知道 Source Tree 中类似的导出变更文件功能,可以在下方留言。

版权申明:本文系 "Java技术栈" 原创,原创实属不易,转载、引用本文内容请注明出处,禁止抄袭、洗稿,请自重,尊重他人劳动成果和知识产权。


发布于 2020-11-30


对于某些服务来说如果直接暴露于公网上将会存在安全隐患。

使用 stcp(secret tcp) 类型的代理可以避免让任何人都能访问到要穿透的服务,只有自己才可访问,但是访问者也需要运行另外一个 frpc。

以下示例将会创建一个只有自己能访问到的 ssh 穿透服务代理。


frps.ini服务端配置

Bash

[common]bind_port = 7000
bind_udp_port = 7001
dashboard_port = 7500
log_file = /root/frp/frps.log
log_level = info
log_max_days = 3
authentication_timeout = 0
token = frp888
max_pool_count = 50


启动 frpc,转发内网的 ssh 服务,配置如下,不需要指定远程端口:

待对方访问

frpc.ini客户端配置

Bash

[common]server_addr = 服务端IP
server_port = 7000
token = frp888[client_A]type = stcp#SK跟访问者一致才能连通,可以自己随便设sk = abcdefg
local_ip = 127.0.0.1
local_port = 3389


在要访问这个服务的机器上启动另外一个 frpc,配置如下:

要访问对方

frpc.ini客户端配置

Bash

[common]server_addr = 服务端IP
server_port = 7000
token = frp888[client_A_visitor]type = stcp
role = visitor#server_name同上面[client_A]一致,待访问端和访问者client_A字段可以替换成自己想要的server_name = client_A
sk = abcdefg
bind_ip = 127.0.0.1
bind_port = 2222


说明:

bind_addr = 127.0.0.1绑定监听本地IP

bind_port = 2222绑定监听本地端口,可自定义。

本地SSH工具通过 127.0.0.1:2222,既可访问到已穿透的3389服务。

server_name = 要访问的穿透服务名称。

sk = 只有 sk 一致的用户才能访问到此服务,可自定义。

role = stcp 的访问者,可自定义。


注意:这是最精简使用的方法实例,如你有更多要求,请参考详细参数阅读。


国外vps穿透后远程桌面速度慢(想放视频),带宽不够.国内服务器贵的一匹
尝试以下方案
P2P点对点穿透(stcp)
连接速度取决访问端和客户端的带宽,与服务器无干

访问端--(服务器)--客户端(受访问的机器)

客户端配置

[common] 
server_addr = 47.98.250.160
server_port = 7000
token = P2QTwF6Lhn9W8kA0

[rdp]
type = stcp
 sk = abcdefg
 local_ip = 127.0.0.1
 local_port = 3389

访问端配置

[common]
server_addr = 47.98.250.160
server_port = 7000
token = P2QTwF6Lhn9W8kA0

[rdp]
type = stcp
role = visitor
server_name = p2p_rdp
sk = abcdefg 
bind_addr = 127.0.0.1
bind_port = 63389

服务器(vps)配置

服务器端不需要特别配置,只需要指定一个udp端口
即bind_udp_port = 7001
比如7001吧

在两台win10电脑上测试了,连接成功,但我这速度依然不理想,校园网背锅?
win10访问端只要打开windows附件里远程桌面填写地址127.0.0.1:63389即可
这个端口自己指定

刷了高恪,不带frp 路由未测试


什么是frp?

frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。frp 是一款跨平台的内网穿透工具,支持 Windows、macOS 与 Linux,它需要你有一台拥有固定公网 IP 的电脑,VPS 最好,然后就能愉快的进行内网穿透了。还支持 https,甚至可以用它进行小程序开发。

frp项目的github地址

frp 的作用

  • 利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。

  • 对于 http 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。

  • 利用处于内网或防火墙后的机器,对外网环境提供 tcp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。

  • 可查看通过代理的所有 http 请求和响应的详细信息。(待开发)

使用示例

根据对应的操作系统及架构,从 frp的Release 页面下载最新版本的程序。

将 frps 及 frps.ini 放到具有公网 IP 的机器上。

将 frpc 及 frpc.ini 放到处于内网环境的机器上。

然后配置frps.ini或frpc.ini 文件中的内容。

服务器端用命令frps -c frps.ini来启动frp。
客户端用命令frpc -c frpc.ini来启动frp。

frp的四种模式:tcp、udp、stcp、xtcp

  • tcp和udp:就是将普通的tcp端口或者udp端口映射到公网上,相当于你的设备直接向公网暴露了一个tcp端口。任何设备都可以尝试连接这个端口。这里就会有很大的安全风险。

  • stcp:出于安全和防止攻击的考虑,frp提供了使用密钥验证的tcp,这就是frp的Secret TCP(stcp)模式。示意图如下:

  • xtcp:目的是让两个客户具有直接相连。在正式运行时,其实并不需要服务端做什么事情。
    frp客户端就好比两个相亲的对象,frp服务端是媒婆。媒婆介绍完之后,就应该让两个相亲对象自己去聊天了。
    这个就是点对点模式(p2p)。在frp中,这个可以通过设置xtcp实现。
    这种模式的好处是不需要消耗服务器的带宽和网速,延时也较低。
    不过该模式还在继续开发完善阶段,目前使用起来并不太稳定,很多时候会出现连不上的情况。并且与两端的路由器防火墙、DMZ、UPNP设置都有一些关系。本人测试后发现直接连接不上,暂时还未解决该问题。

示意图如下:

frp 示意图:


其中,客户端B是需要做端口映射的电脑。Visitor是访问端的电脑,只用于stcp模式和xtcp模式。

服务器端的frps配置

[common]bind_addr = 0.0.0.0bind_port = 7000bind_udp_port = 7001privilege_token = frp888
dashboard_port = 7500dashboard_user = admin
dashboard_pwd = admin

服务器端用命令frps -c frps.ini来启动frp。
启动后输入http://[服务器ip]:7500,并输入所设置的账号(admin)和密码(admin)就可以看到以下管理界面:

客户端B的配置模式1:tcp

[common]server_addr = 自己服务器的ip
server_port = 7000[PC-RDP]type = tcp
local_ip = 127.0.0.1local_port = 3389remote_port = 13389

客户端用命令frpc -c frpc.ini来启动frp。

客户端的配置模式2:udp

[common]server_addr = 自己服务器的ip
server_port = 7000[UDP-test]type = udp
local_ip = 127.0.0.1local_port = 53remote_port = 10053

客户端用命令frpc -c frpc.ini来启动frp。

客户端的配置模式3:stcp

[common]server_addr = 自己服务器的ip
server_port = 7000[PC-RDP-stcp]type = stcp
sk=123456local_ip = 127.0.0.1local_port = 3389

客户端用命令frpc -c frpc.ini来启动frp。

客户端的配置模式4:xtcp

[common]server_addr = 自己服务器的ip
server_port = 7000[PC-RDP-xtcp]type = xtcp
sk=123456local_ip = 127.0.0.1local_port = 3389

客户端用命令frpc -c frpc.ini来启动frp。

总结

对于网站等公开内容,使用tcp比较合适。对于远程桌面和ssh等非公开应用,最好使用stcp。xtcp暂时不建议使用,因为本人测试后发现不稳定。

参考资料

1、fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
2、使用frp实现P2P点对点内网穿透_FRP教程_电脑博士
3、frp – 你也能用的开源内网穿透工具,最简洁教程 – 小众软件
4、frp首页、文档和下载 – 内网穿透工具 – OSCHINA
5、FRP 内网穿透 – 知乎
6、内网穿透神器frp之进阶配置——stcp及p2p模式_网络_黄腾霄的博客-CSDN博客