V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  jinliming2  ›  全部回复第 30 页 / 共 57 页
回复总数  1131
1 ... 26  27  28  29  30  31  32  33  34  35 ... 57  
@Jerami 这个是看他上网的运营商归属地的吧,他上网服务是美国提供的,IP 也就是美国的。
这个类似于国内的手机卡,全国漫游,但 IP 永远是归属地的 IP (好像移动是漫游到哪就是哪的 IP )
2020-09-03 22:46:19 +08:00
回复了 circsqua 创建的主题 git 新手 Window 试下 git 客户端求推荐
建议学习 cli,并找一个 gui 仅用作看提交记录而不用来进行任何提交。
当然,如果愿意的话,看提交记录之类的用 cli 也足够了……
2020-08-24 19:17:47 +08:00
回复了 inktiger 创建的主题 问与答 继电器的 NO/NC/COM 该怎么接线呢?
楼上这些魔鬼是想骗楼主入坑吗……
看到楼主前两天的帖子了,楼主只是想实现一个很简单的东西而已……
2020-08-15 12:16:15 +08:00
回复了 v2fish 创建的主题 程序员 shell 里 echo 如何同时输出单引号和双引号
echo ''' '\''a'\'' "a" '''

三引号中间不能直接转义,但是你可以使用一对单引号把要转义的单引号包起来:
echo ''' ' 在这里可以转义单引号:\' ' '''
Google 将“地球”理解为 Earth,而 Earth 被认为是“全世界”的意思。

所以搜索 earth life expectancy,则会认为你要搜索地球人的寿命。
搜索 planet life expectancy,则可以得到结果:7.5 billion years 。
2020-08-15 11:40:42 +08:00
回复了 caola 创建的主题 PHP PHP 怎样才能验证 ssl/tls 证书的有效性
curl 、openssl 之类 linux 下的应用都是使用 ca-certificates 这个包提供的 CA 证书列表来信任的。
所以你可以直接下载这个包( ubuntu 仓库镜像下载或者直接 apt 下载 deb 包),解压,就可以得到所有可信 CA 的列表了。
你可以再根据需要删除或增加部分 CA 证书。
然后用这个 CA 证书列表去验证你要验证的证书是否是可信的。
自从 win10 有了自带的 sandbox 之后,我绝大多数不常用的软件都是只留安装包,用的时候临时拷到 sandbox 里装一遍也很快。
临时用的 exe 那更是直接 sandbox 没跑了。
2020-08-10 06:16:27 +08:00
回复了 l890908 创建的主题 奇思妙想 有没有搜集过人们的聊天记录做数据分析??
@laminux29 #17 自信点,把“国外的”三个字去掉,全世界的都是一样的。
区别在于一个明目张胆,甚至写进管理条例。另一个总是私下干,很难拿出证据,要是被抓住了,也就罚上几个亿然后继续……
2020-08-06 13:21:23 +08:00
回复了 yiyezhihan 创建的主题 分享创造 一款域名查询工具,来倾听您的建议
域墙的检测逻辑是啥?为啥有的被樯了的提示正常,有的正常的却提示被强?
2020-08-05 07:05:31 +08:00
回复了 alex321 创建的主题 奇思妙想 日常生活中,有啥设计得好和不好的产品?
“健康码”:最开始还比较严重那会儿,看着一群人聚集在门口扫二维码,然后时不时有人摘下口罩做人脸识别——知道的这是在注册健康码,不知道以为这里在交叉传染呢……最起码把纪律组织好,间隔 1 米排队注册啊!
然后注册过程需要填写过去两周去过的地方,填写是有校验的,你填写少了它会提示你填写错误,但就是不告诉你到底哪里填错了——它若是知道我去过哪里,为啥还要让我自己填一遍?是在测试我的记忆力吗?
后来几乎人人都有健康码了,门口就很少聚集了,但是人流量比较大的商场却检查的不严,要求出示健康码却又不仔细看、甚至有人为了图方便,直接截图拿着就进去了(因为扫码加载实时的有时 4G 网慢的跟 2G 一样)……那么这个东西意义在哪里?

还有各个地方的纸质版“出入证”,我是真想不出这东西怎么持续证明自己的健康状况的……

所以总感觉这东西属于形式主义了,不仔细检查,不维持 1 米距离,只要出示一下,证明自己“领证”的时候是健康的就行了……
2020-07-26 14:33:29 +08:00
回复了 johnsonhk 创建的主题 云计算 关于一个超简单 CIDR 问题,云安全组不知如何写
@realpg 嗯,这个没问题,在描述 IP 和其超网网段前缀的时候,写 IP/n 没啥问题。

但是这里讨论的前提是配置安全组,所以这里的前提就是网段的配置。
所以我说“因为前面写任意 IP 在这里都没有意义了”,这里的“这里”说的是安全组网段配置里,前面写 IP 没有意义。

另外,“你不能用 192.168.1.3/24 描述一个网段”,这个逻辑上没问题,但是实际上在配置网段的时候,你填写 192.168.1.3/24 也是可以的,只不过配置结果会自动更新为 192.168.1.0/24,因为最后面的 “3” 在配置网段的时候没有意义。
所以我说“一般统一写成 0.0.0.0/0”、“通常把后面 32 - n 位归零”,因为你就算不归零,很多系统里这么写也是可以正确识别的。
2020-07-26 14:02:50 +08:00
回复了 johnsonhk 创建的主题 云计算 关于一个超简单 CIDR 问题,云安全组不知如何写
@realpg 那么请教一下我的理解错在哪里了?
2020-07-26 14:00:59 +08:00
回复了 ChunkitAu 创建的主题 Java 关于 cors 跨域配置,不填 * 该怎么写?
首先,浏览器发生跨域请求时分为两种,简单请求和需要预检的请求。

简单请求是指:
1. 请求方法仅限 GET 、POST 、HEAD 三种(你的 PUT 、DELETE 、OPTIONS 就不属于了)
2. 请求头仅限:(你的 X-Requested-With 、Authorization 就不属于了,Origin 本身就属于禁止头,是浏览器自动设置的,你不可以手动设置)
- Accept
- Accept-Language
- Content-Language
- Content-Type (仅限 application/x-www-form-urlencoded 、multipart/form-data 、text/plain 三者之一,你的 application/json 就不属于)
- DPR
- Downlink
- Save-Data
- Viewport-Width
- Width
3. 没有在 XMLHttpRequest.upload 添加事件监听
4. POST 没有使用 ReadableStream

不满足简单请求的,就需要进行预检。

对于简单请求,服务器需要根据请求头中的 Origin 字段判断是否允许这个域来请求,允许的话,就在响应头中给出 Access-Control-Allow-Origin,值就和请求头的 Origin 一样就行。
简单请求只需要给 Access-Control-Allow-Origin 这一个头就行。

如果不是简单请求,那么在请求前,浏览器会自动发出一个 OPTIONS 预检请求,其中可能包含 Access-Control-Request-Method 和 /或 Access-Control-Request-Headers,指出申请使用的请求方法和携带的请求头。
服务器判断,是否允许,允许的话,就根据需求带上这些头:
Access-Control-Allow-Origin 指定允许的 Origin,和上面简单请求一样。
Access-Control-Allow-Methods 指定允许的请求方法,必须包含 Access-Control-Request-Method 中申请的值,否则跨域请求失败。
Access-Control-Allow-Headers 指定允许带的请求头,和 Access-Control-Allow-Methods 类似。
Access-Control-Expose-Headers 指定哪些响应头可以被访问,默认情况下,请求方只能访问到 Cache-Control 、Content-Language 、Content-Length 、Content-Type 、Expires 、Last-Modified 、Pragma 几个头,如果你的响应里带了其他头需要被请求者访问的话,需要加上这个头来指定。
如果服务器要求客户端自动携带身份信息( cookie 、Authorization 头、TLC 客户端证书),那么需要设置 Access-Control-Allow-Credentials: true 。否则请求不会自动带这些信息。
浏览器收到预检的响应之后,再根据响应里的授权,决定是跨域失败,还是继续发送跨域请求。
2020-07-26 13:01:28 +08:00
回复了 johnsonhk 创建的主题 云计算 关于一个超简单 CIDR 问题,云安全组不知如何写
仅对单一 IP 授权,那么答案是 192.168.1.6/32 。
/0 的情况一般统一写成 0.0.0.0/0 表示为任意 IP 。因为前面写任意 IP 在这里都没有意义了。
这里写 192.168.1.6/0 和写 0.0.0.0/0 是一样的,都表示任意 IP 。

后面那个数字表示子网掩码的位数。
首先把 IP 地址转成 8 位二进制,( 192.168.1.6 就变成了 11000000.10101000.00000001.00000110 )。
然后 /8 就表示匹配前面 8 位和这个一样,后面 24 位任意的 IP 。
/16 就表示匹配前面 16 位和这个一样,后面 16 位任意的 IP 。
/24 就表示匹配前面 24 位和这个一样,后面 8 位任意的 IP 。
/32 就表示匹配所有 32 位和这个都一样的 IP,也就是仅匹配这一个 IP 。
/0 就表示匹配所有 32 位都任意的 IP,也就是匹配任意 IP 地址。
/ 后面跟任意 [0, 32] 之间的数,表示匹配前面 n 位一样,后面的 32 - n 位任意的 IP 。
实际写的时候,通常把后面 32 - n 位归零,然后再转回十进制。
2020-07-26 12:46:11 +08:00
回复了 gantleman 创建的主题 程序员 我们来为“死锁的四个必要条件”加一条
我的理解,你自己加的这个“隐含假设的条件”不对,多线程并不是死锁的条件,单线程下依旧会出现死锁。
只不过实际开发在单线程条件下,因为通常不会出现资源访问冲突,所以单线程开发是不会加锁的,也就不会死锁。
但是,如果在单线程下使用了锁,那么如果资源获取、释放的顺序不对,也会产生死锁。也就是条件中的循环依赖,自己依赖自己。
最简单的例子就是,对一个资源进行加锁访问,在没有释放的时候,再对其进行加锁。这符合四个条件。

真实的情况可能会复杂一些,就是在多线程环境下,其中某一个线程出现了加锁、释放顺序不对的情况。
2020-07-23 23:03:33 +08:00
回复了 saltbo 创建的主题 程序员 goget, 一个比 go get 更方便的装包工具
顺带一提,如果使用 Go 官方工具链的话,go get 几乎都没有用过了。
新项目只要 go mod init ...,然后建个 go 文件开始写就行了,历史装过的包会自动提示、goimports 自动导入,历史没装过的包,直接复制包名放到 import 语句里就行,也不需要 go get,新包会在你 go run 或者 go build 的时候自动下载安装,并更新 go.mod 文件。

讲真,好久都没用过 go get 了……
更新包的话,VSCode 里打开 go.mod 文件有版本提示,点击一下就自动更新了……
2020-07-23 22:51:11 +08:00
回复了 saltbo 创建的主题 程序员 goget, 一个比 go get 更方便的装包工具
@saltbo 首先,使用 Go modules 之后,GOPATH 是依旧存在的。
根据最新的 go 基础文档 https://golang.org/doc/code.html,你安装的第三方包都会被下载到 GOPATH 下的 pkg/mod 目录中:

Module dependencies are automatically downloaded to the pkg/mod subdirectory of the directory indicated by the GOPATH environment variable. The downloaded contents for a given version of a module are shared among all other modules that require that version, so the go command marks those files and directories as read-only.

goimports 会根据 $GOPATH/pkg/mod 下已经安装过的包来实现自动导入(前提是你的项目包含 go.mod ,是一个 Go Modules 项目,否则 goimports 也不会帮你),而 goimports 属于 go 官方工具,所以可以认为是官方的行为。

再说 Goland,在 Go modules 之前,go 要求将项目都放在 $GOPATH/src 下,这也就是“GOPATH 开发模式”的由来。在 Go modules 出来之后,Goland 区分两种模式,Go 和 Go Modules 。
Go 模式,你的项目必须放在 $GOPATH/src 下( Goland 提供了项目 GOPATH 功能,可以临时设置项目路径为 GOPATH ),然后你 go get 的包也会存在 $GOPATH/src 下,这样 Goland 就可以自动导入 $GOPATH/src 下的包了。
而 Go Modules 模式下,Goland 就完全只认 go.mod 中有的包,go.mod 中没有的包完全不认,不会自动去 $GOPATH/pkg/mod 中导入。

但是 Goland 在代码中右键 -> Go Tools -> Goimports File 却可以自动去 $GOPATH/pkg/mod 导入的,因为这个功能调用的是官方的 goimports 工具。但是虽然自动导入了,Goland 依旧显示为红色,不认,你还得再右键 Show Context Actions -> Sync dependencies 同步一遍。

由此,我认为这是 Goland 没遵循 Go Modules 所产生的 bug 。
而 VSCode 因为自身不提供功能,所有功能都依赖 Go 的官方工具,所以可以按照规则自动完成。
GOPATH 开发模式,代码必须放在 $GOPATH/src 下,所有装的包也都在 $GOPATH/src 下。
Go Modules 开发模式,项目中包含 go.mod 文件,所有装的包都在 $GOPATH/pkg/mod 下,按版本共享。

所以你附言 3 说的“搞了半天你们都还在用 GOPATH”是不对的,根据规则,只要 go 版本足够,项目中只要有 go.mod 就是 Go Modules 模式了。Goland 不支持提示只是因为 Goland 没有用官方工具链而产生的 bug,使用 Goland 右键菜单中的官方 goimports 工具可以正确识别 Go Modules 的依赖包。
1 ... 26  27  28  29  30  31  32  33  34  35 ... 57  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2847 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 38ms · UTC 13:32 · PVG 21:32 · LAX 06:32 · JFK 09:32
Developed with CodeLauncher
♥ Do have faith in what you're doing.