nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还支持内网http代理、内网socks5代理、p2p等,并带有功能强大的web管理端。
首先访问Github releases下载合适的软件包
https://github.com/ehang-io/nps/releases
如果没有合适的版本,当然也可以自编译:
go get -u ehang.io/nps
服务端go build cmd/nps/nps.go
客户端go build cmd/npc/npc.go
下载完服务器压缩包后,解压,然后进入解压后的文件夹
对于linux|darwin sudo ./nps install
对于windows,管理员身份运行cmd,进入安装目录 nps.exe install
对于linux|darwin sudo nps start
对于windows,管理员身份运行cmd,进入程序目录 nps.exe start
安装后windows配置文件位于 C:\Program Files\nps,linux和darwin位于/etc/nps
停止和重启可用,stop和restart
如果发现没有启动成功,可以使用nps(.exe) stop
,然后运行nps.(exe)
运行调试,或查看日志(Windows日志文件位于当前运行目录下,linux和darwin位于/var/log/nps.log)
如果使用powershell
运行,请将ip括起来!
如果需要注册到系统服务可查看注册到系统服务
-version
打印版本nps -version
或./nps -version
npc -version
或./npc -version
bridge_port
为8024,配置文件中web_port
为8080./npc -server=1.1.1.1:8024 -vkey=客户端的密钥Copy to clipboardErrorCopied
注意:运行服务端后,请确保能从客户端设备上正常访问配置文件中所配置的bridge_port
端口,telnet,netcat这类的来检查
适用范围: 小程序开发、微信公众号开发、产品演示
注意:域名解析模式为http反向代理,不是dns服务器,在web上能够轻松灵活配置
假设场景:
使用步骤
a.proxy.com
,内网目标:127.0.0.1:81
,2、域名:b.proxy.com
,内网目标:127.0.0.1:82
现在访问(http|https://)a.proxy.com
,b.proxy.com
即可成功
https: 如需使用https请进行相关配置,详见 使用https
适用范围: ssh、远程桌面等tcp连接场景
假设场景: 想通过访问公网服务器1.1.1.1的8001端口,连接内网机器10.1.50.101的22端口,实现ssh连接
使用步骤
ssh -p 8001 root@1.1.1.1
适用范围: 内网dns解析等udp连接场景
假设场景: 内网有一台dns(10.1.50.102:53),在非内网环境下想使用该dns,公网服务器为1.1.1.1
使用步骤
适用范围: 在外网环境下如同使用vpn一样访问内网设备或者资源
假设场景: 想将公网服务器1.1.1.1的8003端口作为socks5代理,达到访问内网任意设备或者资源的效果
使用步骤
注意 经过socks5代理,当收到socks5数据包时socket已经是accept状态。表现是扫描端口全open,建立连接后短时间关闭。若想同内网表现一致,建议远程连接一台设备。
适用范围: 在外网环境下使用http正向代理访问内网站点
假设场景: 想将公网服务器1.1.1.1的8004端口作为http代理,访问内网网站
使用步骤
注意:对于私密代理与p2p,除了统一配置的客户端和服务端,还需要一个客户端作为访问端提供一个端口来访问
适用范围: 无需占用多余的端口、安全性要求较高可以防止其他人连接的tcp服务,例如ssh。
假设场景: 无需新增多的端口实现访问内网服务器10.1.50.2的22端口
使用步骤
./npc -server=1.1.1.1:8024 -vkey=vkey -type=tcp -password=secrettest -local_type=secretCopy to clipboardErrorCopied
如需指定本地端口可加参数-local_port=xx
,默认为2000
注意: password为web管理上添加的唯一密钥,具体命令可查看web管理上的命令提示
假设10.1.50.2用户名为root,现在执行ssh -p 2000 root@127.0.0.1
即可访问ssh
适用范围: 大流量传输场景,流量不经过公网服务器,但是由于p2p穿透和nat类型关系较大,不保证100%成功,支持大部分nat类型。nat类型检测
假设场景:
想通过访问使用端机器(访问端,也就是本机)的2000端口—->访问到内网机器 10.2.50.2的22端口
使用步骤
nps.conf
中设置p2p_ip
(nps服务器ip)和p2p_port
(nps服务器udp端口)注:若 p2p_port
设置为6000,请在防火墙开放6000~6002(额外添加2个端口)udp端口./npc -server=1.1.1.1:8024 -vkey=123 -password=p2pssh -target=10.2.50.2:22Copy to clipboardErrorCopied
如需指定本地端口可加参数-local_port=xx
,默认为2000
注意: password为web管理上添加的唯一密钥,具体命令可查看web管理上的命令提示
假设内网机器为10.2.50.2的ssh用户名为root,现在在本机上执行ssh -p 2000 root@127.0.0.1
即可访问机器2的ssh,如果是网站在浏览器访问127.0.0.1:2000端口即可。
名称 | 含义 |
---|---|
web_port | web管理端口 |
web_password | web界面管理密码 |
web_username | web界面管理账号 |
web_base_url | web管理主路径,用于将web管理置于代理子路径后面 |
bridge_port | 服务端客户端通信端口 |
https_proxy_port | 域名代理https代理监听端口 |
http_proxy_port | 域名代理http代理监听端口 |
auth_key | web api密钥 |
bridge_type | 客户端与服务端连接方式kcp或tcp |
public_vkey | 客户端以配置文件模式启动时的密钥,设置为空表示关闭客户端配置文件连接模式 |
ip_limit | 是否限制ip访问,true或false或忽略 |
flow_store_interval | 服务端流量数据持久化间隔,单位分钟,忽略表示不持久化 |
log_level | 日志输出级别 |
auth_crypt_key | 获取服务端authKey时的aes加密密钥,16位 |
p2p_ip | 服务端Ip,使用p2p模式必填 |
p2p_port | p2p模式开启的udp端口 |
pprof_ip | debug pprof 服务端ip |
pprof_port | debug pprof 端口 |
disconnect_timeout | 客户端连接超时,单位 5s,默认值 60,即 300s = 5mins |
修改完成记得重载配置文件:
对于linux、darwin
sudo nps reloadCopy to clipboardErrorCopied
对于windows
nps.exe reloadCopy to clipboardErrorCopied
说明: 仅支持部分配置重载,例如allow_user_login
auth_crypt_key
auth_key
web_username
web_password
等,未来将支持更多
此模式的各种配置在服务端web管理中完成,客户端除运行一条命令外无需任何其他设置
./npc -server=ip:port -vkey=web界面中显示的密钥Copy to clipboardErrorCopied
对于linux、darwin
sudo ./npc install 其他参数(例如-server=xx -vkey=xx或者-config=xxx)
sudo npc start
sudo npc stop
./npc uninstall
,再重新注册对于windows,使用管理员身份运行cmd
npc.exe install 其他参数(例如-server=xx -vkey=xx或者-config=xxx)
npc.exe start
npc.exe stop
npc.exe uninstall
,再重新注册首先进入到对于的客户端二进制文件目录
请首先执行sudo npc stop
或者npc.exe stop
停止运行,然后
对于linux
sudo npc-update updateCopy to clipboardErrorCopied
对于windows
npc-update.exe updateCopy to clipboardErrorCopied
更新完成后,执行执行sudo npc start
或者npc.exe start
重新运行即可完成升级
如果无法更新成功,可以直接自行下载releases压缩包然后覆盖原有的npc二进制文件
此模式使用nps的公钥或者客户端私钥验证,各种配置在客户端完成,同时服务端web也可以进行管理
./npc -config=npc配置文件路径Copy to clipboardErrorCopied
示例配置文件
[common]server_addr=1.1.1.1:8024conn_type=tcpvkey=123username=111password=222compress=truecrypt=truerate_limit=10000flow_limit=100remark=testmax_conn=10#pprof_addr=0.0.0.0:9999Copy to clipboardErrorCopied
项 | 含义 |
---|---|
server_addr | 服务端ip/域名:port |
conn_type | 与服务端通信模式(tcp或kcp) |
vkey | 服务端配置文件中的密钥(非web) |
username | socks5或http(s)密码保护用户名(可忽略) |
password | socks5或http(s)密码保护密码(可忽略) |
compress | 是否压缩传输(true或false或忽略) |
crypt | 是否加密传输(true或false或忽略) |
rate_limit | 速度限制,可忽略 |
flow_limit | 流量限制,可忽略 |
remark | 客户端备注,可忽略 |
max_conn | 最大连接数,可忽略 |
pprof_addr | debug pprof ip:port |
[common]server_addr=1.1.1.1:8024vkey=123
[web1]
host=a.proxy.com target_addr=127.0.0.1:8080,127.0.0.1:8082 host_change=www.proxy.com header_set_proxy=npsCopy to clipboardErrorCopied
项 | 含义 |
---|---|
web1 | 备注 |
host | 域名(http |
target_addr | 内网目标,负载均衡时多个目标,逗号隔开 |
host_change | 请求host修改 |
header_xxx | 请求header修改或添加,header_proxy表示添加header proxy:nps |
[common]server_addr=1.1.1.1:8024vkey=123
[tcp]
mode=tcp target_addr=127.0.0.1:8080 server_port=9001Copy to clipboardErrorCopied
项 | 含义 |
---|---|
mode | tcp |
server_port | 在服务端的代理端口 |
tartget_addr | 内网目标 |
[common]server_addr=1.1.1.1:8024vkey=123
[udp]
mode=udp target_addr=127.0.0.1:8080 server_port=9002Copy to clipboardErrorCopied
项 | 含义 |
---|---|
mode | udp |
server_port | 在服务端的代理端口 |
target_addr | 内网目标 |
[common]server_addr=1.1.1.1:8024vkey=123
[http]
mode=httpProxy server_port=9003Copy to clipboardErrorCopied
项 | 含义 |
---|---|
mode | httpProxy |
server_port | 在服务端的代理端口 |
[common]server_addr=1.1.1.1:8024vkey=123
[socks5]
mode=socks5 server_port=9004 multi_account=multi_account.confCopy to clipboardErrorCopied
项 | 含义 |
---|---|
mode | socks5 |
server_port | 在服务端的代理端口 |
multi_account | socks5多账号配置文件(可选),配置后使用basic_username和basic_password无法通过认证 |
[common]server_addr=1.1.1.1:8024vkey=123
[secret_ssh]
mode=secret password=ssh2 target_addr=10.1.50.2:22Copy to clipboardErrorCopied
项 | 含义 |
---|---|
mode | secret |
password | 唯一密钥 |
target_addr | 内网目标 |
[common]server_addr=1.1.1.1:8024vkey=123
[p2p_ssh]
mode=p2p password=ssh2 target_addr=10.1.50.2:22Copy to clipboardErrorCopied
项 | 含义 |
---|---|
mode | p2p |
password | 唯一密钥 |
target_addr | 内网目标 |
利用nps提供一个公网可访问的本地文件服务,此模式仅客户端使用配置文件模式方可启动
[common]server_addr=1.1.1.1:8024vkey=123
[file]
mode=file server_port=9100 local_path=/tmp/ strip_pre=/web/Copy to clipboardErrorCopied
项 | 含义 |
---|---|
mode | file |
server_port | 服务端开启的端口 |
local_path | 本地文件目录 |
strip_pre | 前缀 |
对于strip_pre
,访问公网ip:9100/web/
相当于访问/tmp/
目录
[common]auto_reconnection=true
文章转载于nps内网穿透搭建教程-孙子烧烤知识分享站 (sunzishaokao.com)
声明本文仅供学习参考,其中涉及的一切资源均来源于网络,请勿用于任何非法行为,否则您将自行承担相应后果,我不承担任何法律及连带责任。靶场信息:地址:https://www.vulnhub.com/entry/darkhole-2,740/发布日期:2021年9月3日难度:难目标:获得root权限 运行:VMware 提示:不要为Brute-Force浪费时间一、信息收集1获取靶机ipnetdiscover-r10.0.1.0/24-ieth0 复制得到ip地址:10.0.1.4image-202110241616170812访问靶机http://10.0.1.4/ 复制 image-202110241906510223开放端口服务信息获取nmap-v-T4-p--A-oNnmap.log10.0.1.4 复制得到信息(存在.git泄露):PORTSTATESERVICEVERSION 22/tcpopensshOpenSSH8.2p1Ubuntu4ubuntu0.3(UbuntuLinux;protocol2.0) |ssh-hostkey: |307257:b1:f5:64:28:98
什么是微服务网关SpringCloudGateway是Spring全家桶中一个比较新的项目,Spring社区是这么介绍它的:该项目借助SpringWebFlux的能力,打造了一个API网关。旨在提供一种简单而有效的方法来作为API服务的路由,并为它们提供各种增强功能,例如:安全性,监控和可伸缩性。而在真实的业务领域,我们经常用SpringCloudGateway来做微服务网关,如果你不理解微服务网关和传统网关的区别,可以阅读此篇文章ServiceMesh和APIGateway关系深度探讨来了解两者的定位区别。以我粗浅的理解,传统的API网关,往往是独立于各个后端服务,请求先打到独立的网关层,再打到服务集群。而微服务网关,将流量从南北走向改为东西走向(见下图),微服务网关和后端服务是在同一个容器中的,所以也有个别名,叫做GatewaySidecar。为啥叫Sidecar,这个词应该怎么理解呢,吃鸡里的三蹦子见过没:摩托车是你的后端服务,而旁边挂着的额外座椅就是微服务网关,他是依附于后端服务的(一般是指两个进程在同一个容器中),是不是生动形象了一些。由于本人才疏学浅,对于微服务相关概念理解
今年十月,Google即将发布Chrome浏览器86新版本的正式更新,这意味着Chrome将阻止所有类型非HTTPS的混合内容下载。为进一步加固浏览器的安全防线,全球份额已达71%的浏览器霸主Chrome可谓“操碎了心”,早在今年2月份,Google宣布:为了增强用户下载防护体验,Chrome浏览器将逐步阻止非“安全超文本传输协议”的混合内容下载,确保HTTPS安全页面仅下载安全文件。为什么阻止HTTPS页面的HTTP资源下载HTTPS混合内容错误一直是网站推进HTTPS加密的一大阻碍。HTTPS混合内容错误是指,初始网页通过安全的HTTPS链接加载,但页面中其他资源(如:图像、视频、样式表、脚本)却通过不安全的HTTP链接加载,这样就会出现混合内容错误(也就是不安全因素)。据谷歌报道,Chrome用户在所有主要平台上超过90%的浏览时间都使用HTTPS,但是这些安全页面通常会加载不安全的HTTP子资源。初期,Chrome屏蔽始于安全页面的不安全下载。这种情况尤其让人担忧,因为Chrome当前无法向用户表明其隐私和安全受到威胁。不安全的文件下载会威胁到用户的安全和隐私。例如,攻击者可以
配图来自Canva预热良久,比亚迪“汉”终于在7月12日线上发布了,这款预售价在22万-28万元的新车被寄予厚望。比亚迪“汉”被比亚迪董事长王传福认为是其旗下电动汽车迈向“智能化”的关键性产品,新车的发售,吸引了大量的外界目光,更将连月以来比亚迪上涨的市值推向新高。前有特斯拉市值暴涨,后有比亚迪市值高涨,引起了外界广泛的争论。有人认为比亚迪汽车被高估,也有人认为比亚迪被低估,意见难以统一。一方面,比亚迪在电池、半导体、整车制造、汽车芯片等多领域均有自己的优势,其实力不容小觑;另一方面,在中高端电动汽车领域,比亚迪面临特斯拉、蔚来等一批造车新势力的直接围剿,新发售的比亚迪“汉”能否改变其“低端电动车”的品牌印象,真正成为一款在中高端领域的畅销车,仍待观察。但可以肯定的是,比亚迪持续高涨的市值背后,存在太多影响因素,而比亚迪要想继续领跑电动车领域,必须要下“硬功夫”。连创新高的市值早在7月10日,比亚迪的市值就一举突破2253亿元,超越上汽的2212亿元,成为A股市值最高的汽车公司;新车发布后,到7月13日股价涨停至97.9元,市值达到2671亿元,再次创下新高。那么,推动比亚迪市值高涨
版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/u011054333/article/details/103221226Gradle目前已经出到6.0版本了,想当初我第一次了解到Gradle的时候,它仅有2.0版本,这些年来一直不断迭代和优化,现在可以说是非常成熟好用的一款工具。如果大家还在使用Maven,我建议大家学习一下Gradle,现在Gradle的性能可以说是完全超越了Maven,各种平台也早已支持Gradle。可以说,除非是兼容老项目,否则,完全可以用Gradle来替代Maven。Gradle显然也对自己的性能很有信息,官网也专门留了一个地方,对Gradle和Maven进行了全方位的性能对比,对比结果很显然,Gradle在各种方面都超越了Maven。我简单翻译了一下,大家可以看看。当然如果大家想看更详细的对比,可以直接查看官网的详细说明。各场景下的性能对比Java类库场景为了测试对典型Java类库项目的影响,我们将ApacheCommonsLang3项目从Maven迁移到了G
为了更精准更有效的解决实际项目中遇到的问题,以后所有问题请按照对应问题分类的模板格式来提交问题。问题提交人如果不能以邮件形式提供以下模板要求的信息,问题将被永久忽略掉,不给予处理。一、故障类问题需要提供的信息模板二、需求类问题需要提供的信息模板三、优化类问题需要提供的信息模板一、故障类问题需要提供的信息模板:项目名称:1.出故障问题的数据库主机信息主机IP地址:主机系统类型:主机root密码:数据库类型:[Oracle|IEE|Vertica|Greenplum]若数据库类型为ORACLE数据库,需要进一步确定是否有高可用方案:[主机双机|RAC|DG|单机环境|其它]数据库版本:数据库用户名密码:2.当前存在什么问题?现象是?简短的话描述清楚。当前故障现象:注意:如果是数据库的报错问题,请提供ORA-的报错具体错误号码及信息。如果是不能访问到数据库,说明白到底是所有用户都不能访问数据库,还是部分用户不能访问数据库,当前程序是否正常运行。3.期待解决结果期待解决时间:期待解决结果:二、需求类问题需要提供的信息模板:项目名称:1.与需求相关的数据库主机信息主机IP地址:主机系统类型:主机
Druid是阿里开源的一款数据库连接池,除了常规的连接池功能外,它还提供了强大的监控和扩展功能。这对没有做数据库监控的小项目有很大的吸引力。下列步骤可以让你无脑式的在SpringBoot2.x中使用Druid。1.Maven中的pom文件<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.14</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>复制使用SpringBoot-2.x时,如果未引入log4j,在配置Druid时,会遇到Causedby:jav
考试结束,班级平均分只拿到了年级第二,班主任于是问道:大家都知道世界第一高峰珠穆朗玛峰,有人知道世界第二高峰是什么吗?正当班主任要继续发话,只听到角落默默响起来一个声音:”乔戈里峰”题目每天一道剑指offer-不用加减乘除做加法https://www.nowcoder.com/practice/59ac416b4b944300b617d4f7f111b215?tpId=13&tqId=11201&tPage=3&rp=3&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking题目详述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。题目详解思路首先看十进制是如何做的:5+7=12,三步走第一步:相加各位的值,不算进位,得到2。第二步:计算进位值,得到10.如果这一步的进位值为0,那么第一步得到的值就是最终结果。第三步:重复上述两步,只是相加的值变成上述两步的得到的结果2和10,得到12。同样我们可以用三步走的方式计算二进制值相加:5-101
近两年互联网+的风潮带动了西安网络公司遍地开花,尤其是创业型网络公司和工作室非常多,主要提供网站建设和APP开发,微信营销等服务。但随着大大小小的网络公司价格战,再加上创业型网络公司数量多,竞争激烈,企业网站建设的APP开发的价格已经走向“白菜价”。谁都知道转型之路必定是布满荆棘的,但转型已成为是西安网络公司的无奈。转型方向一:IT技能培训公司培训学校或公司或许是最赚钱的行业,笔者发现西安一些网络公司已经成功转型成为培训单位,主要培训IT课程,如:网站建设技术、网络技术、SEO优化等课程。培训的对象当然是刚毕业的学生,或者中小企业老板等,做培训行业成本投入比较低,主要是聘请培训老师。西安有许多大学,每年都有很多刚毕业的学生,而现在的应届毕业生就业压力非常大。一般大学生也要掌握一门技术或技能,在校大学生普遍缺少这样的技能,所以这部分人群需要IT技能培训。另外一部分培训对象就是中小企业老板,这类人群需要网络营销方面的课程,可以培训这方面的技能和知识。转型方向二:软件公司可以转型成为软件公司,例如:销售办公OA软件、手机应用等软件。一般中小企业或单位都需要办公的OA系统,因为现在都是电脑无纸
MySQL8.0.11于2018-04-19日发布GA版本注意:仅支持通过使用in-place方式从MySQL5.7升级到MySQL8.0升级; 不支持从MySQL8.0降级到MySQL5.7(或从MySQL8.0版本降级到任意一个更早的MySQL8.0版本)。唯一受支持的替代方案是在升级之前对数据进行备份。MySQL8.0相对于MySQL5.7新特性1、字符集支持:utf8mb4作为MySQL的默认字符集,此字符集可支持emoji表情2、系统库优化:默认采用utf8mb4字符集,取消默认MyISAM系统表,新加KEYWORDS表3、取消QueryCache:性能审计中建议的第一件事就是禁用QueryCache,因为它给设计带来了很多麻烦。MySQLQC造成的问题比它解决问题要多的多。如果必须需要QueryCache,MySQL8.0可能不太适用。4、角色管理:MySQL8.0中添加了SQL角色功能,角色是指定的拥有特定权限的集合,像用户帐户一样,角色可以拥有授予和撤消的权限。5、隐藏索引:在MySQL8.0中,索引可以被“隐藏”和“显示”。当对索引进行隐藏时,它不会被查询优化器所使用
自从2012年在虎嗅发布第一篇文章至今已近两年。身处广州距离互联网“圈子”太远,并没有太多机会与同行们面对面交流。从大量文章、朋友圈和微信群,却能够明显感受到,互联网圈的“偏见”之风日益浓烈,自认为心态平和、力求客观的笔者也开始越来越多地偏见看待事物。“百度技术远没Google好,如果不是Google退出中国其早已一败涂地”,“Android体验就是垃圾,IPhone是世界上最好的手机……”,“科技媒体不都是黑公关吗?”“互联网公司做硬件是扯淡,北京创业者爱忽悠”“小米的数据一定是刷出来的,天猫双十一的数据都是假的”“腾讯成功就是靠抄袭”“淘宝上的卖家赚钱的很少的,流量已经不行了”……上述“结论”都是我平常接触到的一些观点,但如果仔细推敲会发现许多都站不住脚。要么是人云亦云并无充分调研确凿证据,要么是未能与时俱进已无法适应当下的观点,或者根本就是没有任何逻辑的先入为主判断,可以说,上述例子几乎都是偏见(当然,笔者这一结论也可能是偏见,我现在从情感上倾向于认为它们是偏见)。百度百科解释,偏见是人们以不正确或不充分的信息为根据而形成的对其他人或群体的片面甚至错误的看法与影响,有很多理论用来
今天,今日头条宣布全资收购北美知名短视频社交产品Musical.ly,后者估值已接近10亿美金,这是今日头条最大的单笔收购,接下来Musical.ly将与今日头条旗下的音乐短视频社区抖音合并。此举表明今日头条正在强化短视频布局,形成了西瓜、抖音、Musical.ly、火山等短视频矩阵产品。还有消息称,今日头条成功收购Musical.ly让马化腾有些“小生气”,因为腾讯也在布局短视频。正在加码短视频的不只是今日头条和腾讯。如果你最近有留意就会发现,手机百度信息流中出现大量拥有“好看”logo的短视频内容,好看视频独立App、百科介绍等均已上线,在此之前,百度被外界所知的更多是AI和内容战略,短视频并未被重点提及过,现在看来百度正在加码短视频战略。为何百度会重视短视频?百度百科显示:“好看视频是由百度团队打造集内涵和颜值于一身的专业短视频聚合平台。由百度团队打造,依托百度技术,致力于为你提供更优质的视频内容。好看视频平台拥有海量独家短视频内容源,其分类覆盖搞笑、音乐、影视、娱乐、游戏、生活、小品、军事、汽车、新闻等全方位优质视频内容。”从介绍看,“好看视频”只是一个常规短视频App聚合平台
iOS和JS的交互看似两个问题,其实要解决的问题只有一个,那就是JS如何调用native方法。因为查询文档我们就可以发现,在UIWebView中,native有直接调用JS的方法,但是JS却没有直接调用native的方法。一、native直接调用js的方法:-(NSString*)stringByEvaluatingJavaScriptFromString :(NSString*)script;复制二、JS直接调用native的方法其实,UIWebView并没有提供JS调用native的方法,但是我们却可以通过间接的方法来实现这样的操作。总结看来,间接实现的方式有4种: 1.在代理方法拦截Url,识别判断 2.Block传值,实现JS调用OC 3.模型实现,JS直接用oc方法名来调用oc方法 4.使用第三方工具类:WebViewJavascriptBridge 下面就来简单介绍一下上述方法的简单实用1.在代理方法拦截Url,识别判断这种方法原理很简单,UIWebView的界面响应会调起下面的代理方法-(BOOL)webView:(UIWebView*)webView shouldSta
自GoogleI/O大会,Google正式宣布Kotlin成为Android开发的官方语言的五个月以来,不少开发团队都开始使用Kotlin对Android应用进行重写。本文分享一款完整的案例——欧瑞天气,希望通过这个项目,让读者了解利用Kotlin开发AndroidApp的全过程。 1项目概述这款App用于从服务端获取天气预报信息,并显示在窗口区域。这款App会首先列出省级及其所辖城市和县区信息,如图1所示。图1 列出省级及其所辖城市和县区信息当单击某个城市或县区名称时,会在窗口上显示该城市或县区的天气情况,如图2所示。图2 显示天气情况这款App使用前面章节介绍的UI技术、网络技术,并且使用Kotlin语言编写。其中有一些Library使用了Java编写,实际上,这款App是Kotlin和Java的结合体。2添加依赖在App中使用了大量的第三方Library,如gson、okhttp3、glide等,这些Library需要在app/build.gradle文件中的dependencies部分指定,如下所示:dependencies{ compilefileTree(include:[
背景 近期在项目中需要使用多数据源,其中有一些表的数据量比较大,需要对其进行分库分表;而其他数据表数据量比较正常,单表就可以。 项目中可能使用其他组的数据源数据,因此需要多数据源支持。 经过调研多数据源配置比较方便。在该项目中分库分表的策略比较简单,仅根据一个字段分就可以,因此分库分表方案选用比较流行方便易用的sharding-jdbc 需要实现的目标是根据学生姓名字段student_name进行分表,但是不需要分库。数据表是student_hist0-student_hist9 引入sharding-jdbcmaven依赖 <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-core</artifactId> <version>4.1.1</version> </dependency> 复制 数据源配置文件 spring: application: name:student-
题目链接:https://www.acwing.com/problem/content/831/ 数组模拟队列 1#include<bits/stdc++.h> 2usingnamespacestd; 3constintN=1e5+10; 4inta[N]; 5inth=0,t=0,n; 6intmain() 7{ 8cin>>n; 9while(n--){ 10strings; 11intx; 12cin>>s; 13if(s=="push"){ 14cin>>x; 15a[++t]=x; 16}elseif(s=="pop"){ 17++h; 18}elseif(s=="empty"){ 19if(h>=t){ 20cout<<"YES"<<endl; 21}else{ 22cout<<"NO"<<endl; 23} 24}elseif(s=="query"){ 25cout<<a[h+1]<<endl; 26} 27} 28return0; 29}复制
目录一、下载安装1、百度搜索,找到官网,或直接访问:https://www.mongodb.com/2、寻找下载位置,双击下载。3、找到本地位置,双击执行,进入欢迎界面,选择next。4、勾选协议,选择next。5、选择安装路径,选择next。6、选择具体安装的参数,选择next。7、选择install8、等待安装,安装完成。9、启动运行(1)点击启动(2)命令行启动10、浏览器验证二、修改配置文件1、找到如图位置的配置文件,右键以文本格式打开。2、如果mongo装在c盘那么日志和数据会占用很大的空间,所以,一般会修改data和log的文件路径,这里只做修改演示(测试机只有c盘),其他要按您的实际情况修改。3、关闭mongo,重新启动,日志里看到已经切换了三、设置为windows服务1、Windows+R输入cmd,进入命令行模式,cd+monggo所在路径的bin路径2、输入命令3、查看服务安装4、服务方式启动四、安装MongoDBCompass1、访问:https://www.mongodb.com/,选择products,选择CommunityEdition,点击进入。2、选择T
每周日更新 2016.05.29 UVa中国麻将(ChineseMahjong,Uva11210) UVa新汉诺塔问题(ADifferentTask,Uva10795) NOIP2012同余方程 NOIP2007统计数字 NOIP2013火柴排队 NOIP2013花匠 2016.06.05 Uva组装电脑12124-Assemble Uva派(Pie,NWERC2006,LA3635) 2016.06.19 Uva网络(Network,Seoul2007,LA3902) 期末考。。。 2016.07.01~2016.08.30暑假因为几乎一半的时间去了旅游的关系所以怎么上博客(好了,我知错了。。。 11292 - DragonofLoowater 11729 - CommandoWar 11300 - SpreadingtheWealth 1388 - Graveyard 10881 - Piotr'sAnts 1030 - ImageIsEverything 114
感觉已经好久没有写博客了,也是一直在开发新的项目,眼看项目逐渐进入尾声。趁热整理一下,近期做的有关广告页面监控的项目。 看过我前几篇文章的话,应该了解我一直在开发、维护,我部门广告的前端展示。但是既然是人写的的代码,又怎么会一点错都不犯呢?尽管有自动化测试、测试人员的功能性测试也难免在实际使用中,数据不匹配造成的浏览器端的抛出异常、资源不展示等一系列的页面广告异常。那么我们平常是怎么发现并处理这些异常的呢?在没有监控的时候,往往是投放和业务同事,甚至是客户发现的。业务同事发现的会发邮件,客户发现,就会投诉,如果问题比较不好修复或处理的不及时,就会造成退款等一系列严重的后果。这样我们显得很被动。 如何应对这样一种被动的处境。首先我们先分析一下,这种处境是怎么造成的?首先广告异常的出现是无规律的,我们可以优化处理问题的反馈流程。我们看一下原来的反馈流程(如图1): 可以看出,在客户(或业务同事)发现,反馈到解决问题重新上线这段时间是很短很仓促的,我们在修改的过程中很容易造成二次bug。而在上线到客户(或业务同事)发现问题这段