首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何建立TLS连接?TLS握手失败可能这个原因!

结果:从另外一台客户端的OpenSSL去连接这HTTPS站点,也报告certificate has expired。 既然OpenSSL可复现,就可进一步检查!...PKI里有交叉签名的技术,就是新老根证书对同一个新的中间证书进行签名,但并不适用于这个案例。...https://站点名 用 OpenSSL命令 来检查证书: openssl s_client -tlsextdebug -showcerts -connect 站点名:443 需要分析OpenSSL为什么报错时...假设服务端返回的证书链是根证书+中间证书+叶子证书,客户端没有这个根证书,但是有这个中间证书。你认为客户端会信任这个证书链吗? 如果客户端缺少根证书,那么客户端将无法验证证书链的完整性和真实性。...因此,为了建立可信的TLS连接,客户端必须拥有完整的证书链,包括根证书、中间证书和叶子证书。

87240

为什么查询连接查询(LEFT JOIN)效率低

MySQL从4.1版本开始支持子查询,使用子查询进行SELECT语句嵌套查询,可以一次完成很多逻辑上需要多个步骤才能完成的SQL操作。子查询虽然很灵活,但是执行效率并不高。...那么问题来了,什么是子查询为什么它的效率不高?...子查询:把内层查询结果当作外层查询的比较条件 示例: select goods_id,goods_name from goods where goods_id = (select max(goods_id...) from goods); 执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,这里多了一个创建和销毁临时表的过程。...优化方式: 可以使用连接查询(JOIN)代替子查询连接查询不需要建立临时表,因此其速度比子查询快。

3.8K20
您找到你想要的搜索结果了吗?
是的
没有找到

9.SSD目标检测之三:训练失败记录(我为什么有脸写这个……)

这个大概折腾了三四天,反正我能想到改的地方都改了,笔记本上试过了,宿舍的电脑上也试过了,反正就是不行,我也没什么办法了,后面就转向YoloV3了。尽管失败了,还是记录一下。...分别是存储tfrecord格式的训练数据,存储训练的模型以及存储原始VOC格式的训练数据用的,这个时候就可以把上一篇做好的VOC格式的训练数据复制过来了。 3 生成.tfrecords训练文件。...SPLIT_TO_SIZE中train就是训练基的个数,Test是测试集的个数,我是全部用作训练了(因为数据量很少,所以测试集就随便写了一个数,这个在训练的时候是不影响的)。...6.总结 我最后遇到的问题就是训练的时候loss居高不下,最终也都是在20-100之间跳跃,这个loss太大了一些,所以也没有用保存的模型来看一下测试结果。 我猜想了几种可能。 训练数据量太少?...按照我大量参考的博客来讲,150张训练样本并不算少,而且为了消除这个疑虑,我用VOC的数据也训练了一段时间(大概四个小时),loss也是降不下来。所以基本排除了训练数据的问题。 设置有问题?

1.4K20

为什么wifi连接上却不能上网 如何解决这个问题

在以前中国尚未完善基站建设时,每个人用的都是手机网络,高昂的流量费用,让那个时候的网吧很受欢迎,但那个时候的电脑大部分都是直接连接网线端口,而现在网线普及,几乎家里、学校、公共场合都可以连接wifi使用...但有时候电脑的wifi连接却有些问题,为什么wifi连接上却不能上网?...image.png 一、为什么wifi连接上却不能上网 一般这种情况都是出现三个问题:第一种是wifi外部线路的问题,这类问题就很麻烦,因为这种情况都不是个人使用的问题,而是总线路那边出的问题,这个可以让运营商解决...更多有关“为什么wifi连接上却不能上网”的信息,可以上网搜索查询。wifi的使用,极大地方便了人们日常生活。例如在外吃饭或者在咖啡厅休息时,需要视频,那么wifi就能省下很多流量。

3.1K20

MySQL查询为什么选择使用这个索引?——基于MySQL 8.0.22索引成本计算

5.7.22,本文使用8.0.22,不同版本数据库计算成本常数是不同的,书中是1W条记录,我这里是近10W条记录,经过实践,是对于书中的补充和验证,计算的成本和实际成本对比,让大家更容易理解MySQL为什么要使用这个索引...所以MySQL很粗暴的认为不管这个块有没有加载到内存中,使用的成本都是1.0。   至于为什么在8.0+ 版本中成本常数变小了呢?...实际中,我们想分析MySQL为什么选择这个索引,直接如下例子,强制索引后分析成本,根本不用自己手动计算,本文是给大家分析,让大家理解思路。...没有连接条件的表连接查询会产生笛卡尔积,一般都会写条件。   为什么我们分析内连接老是假设驱动表?难道左表不是驱动表?不一定,内连接左右表顺序可以任意互换,优化器会优化其连接顺序的。...提前结束某种顺序的成本评估 MySQL在计算各种链接顺序的成本之前,会维护一个全局的变量,这个变量表示当前最小的连接查询成本。

63410

SpringBoot官方为什么采用这个数据库连接池?史上最快?

下面陈某带大家从源码角度分析一下HikariCP为什么能够被Spring Boot 青睐,文章目录如下: ?...里初始化好一个连接对象放进池子内,当然触发该流程得保证initializationTimeout > 0时(默认值1),这个配置属性表示留给预热操作的时间(默认值1在预热失败时不会发生重试)。...socketTimeout=250 这个值最终会被赋值给HikariCP的networkTimeout字段,这就是为什么最后那一步使用这个字段来还原驱动连接超时属性的原因;说到这里,最后那里为啥要再次还原呢..., // 并且成功修改属性,那么当前线程的cas会失败,那么就会继续循环尝试获取下一个连接对象 if (bagEntry !...,但是cas设置失败,说明又该对象又被其他线程率先拿去用了,若时间还够,则再次尝试获取 timeout -= elapsedNanos(start); //timeout减去消耗的时间

80720

慢的不是 Ruby,而是你的数据库

这个例子展示了从表中获取一条记录的操作,虽然它并非关系型数据库所擅长的领域,但它揭示了 ORM 存在的实际性能问题:缺乏连接、排序、过滤和计算等操作。...它可能会“突然地、神奇地、动态地”开始构建其他连接查询,从而降低性能。(好吧,不是从一分钟到下一分钟的运行时,而是经过小的更改)。...我曾在一个拥有百万级用户的应用程序中,导致数据库服务器集群崩溃:原因在于一个无关控制器的简单更改,使 Rails 切换到一个外部连接,该连接具有巨大物化视图,本不应以这种方式连接(用于报告)。...未优化的连接。添加简单的 has_many 太容易了,这使得开发人员可以在数据库中启动过于繁重的查询。一旦通过应用程序引入和传播,这几乎不可能解决。...而且它会查询五个连接表并且连接到至少一个索引上,而这个索引并不是为此准备的。导致大约 800 毫秒的查询。在每次页面加载时。 未优化的 where、group 和 order 调用。

11330

GitHub 关系型数据库垂直分库实践

模式领域就是指那些经常一起被用在查询(例如表连接和子查询)和事务中的数据库表的集合。...有时候,我们只需要把表连接查询拆成单独的查询。例如,用 ActiveRecord 的 preload 方法取代 includes 方法。...根据数据结构和数据集势的不同,MySQL 的查询计划器有时会生成性能较差的查询执行计划,而应用层的数据连接可以获得较稳定的性能。...有了 ProxySQL,我们可以快速改变数据库的流量路由,将对客户端(也就是我们的 Rails 应用程序)的影响降到最低。 基于这样的结构,我们可以很自然地将数据库连接迁移到 cluster_b。...这个时候,所有向 cluster_a 和 cluster_b 的写入操作都是不允许的。所有尝试向数据库执行写入操作的 Web 请求都会失败,并返回 500 错误。

1.5K11

GitHub分享了他们将自己1200+节点、300+TB数据存储的MySQL从5.7升级至8.0的故事

升级动机为什么要升级到 MySQL 8.0?随着 MySQL 5.7 的生命周期即将结束,我们将我们的系统升级到了下一个主要版本,即 MySQL 8.0。...查询会通过 CI,但在生产环境中会失败我们知道在生产环境中难免会首次出现问题,因此我们采取了升级副本的渐进式推广策略。我们遇到过通过 CI 的查询,但在生产环境中遇到实际工作负载时却会失败。...我们了解到,Trilogy 客户端库的一致性为我们提供了更多连接行为的可预测性,并让我们确信来自主 Rails 单体的连接不会破坏向后复制。...这一点非常重要,因为一个失败查询会阻碍整个集群的升级,而对不同的工作负载进行分区,可以让我们进行零散升级,减少升级过程中遇到的未知风险的爆炸半径。代价是,这也意味着我们的 MySQL 集群扩大了。...从这个项目中汲取的经验教训为我们的 MySQL 自动化奠定了基础,并将为未来更高效地完成升级铺平道路,但仍需保持同样的谨慎和安全。

27910

架构之美:教你如何分析一个接口?

为什么要看风格? 它希望你怎样使用它或二次开发。 还要维护项目的一致性,必须统一风格。不少项目里共存多种不同风格的接口,就是每个人都在各设计各习惯的接口,导致混乱。...Rails的起步走文档做得就非常好,主线可以说是一目了然。它用了一个Web项目帮你介绍了Rails开发的基本过程,通过这个过程,你就对Rails有了初步的印象。...Rails对REST的使用方式做了一个约定。只要你遵循Rails的惯用写法,写出来的结果基本上就是符合REST结构的,也就是说,Rails把REST这个模型用一种更实用的方式落地了。...当年我接触Rails时,最让我感到震惊的是它的数据库查询方式,与传统开发的风格截然不同,就这么简单的一句: Article.find_by_title("foo") 要知道,那个时候用Java写程序,即便是想做一个最简单的查询...而 Rails用一句轻描淡写find_by就解决了所有的问题,而且,这个find_by_title方法还不是我实现的,Rails会替你自动实现。

2.2K20

RVM安装指令

使用一个ruby版本 rvm use 1.9.3 如果想设置为默认版本,可以这样 rvm use 1.9.3 --default  查询已经安装的ruby...gemset是附加在ruby语言版本下面的,例如你用了1.9.2, 建立了一个叫rails3的gemset,当切换到1.8.7的时候,rails3这个gemset并不存在。...rvm use 1.8.7 rvm use 1.8.7@rails23 然后所有安装的gem都是安装在这个gemset之下。...在这个文件里可以很简单的加一个命令: rvm use 1.9.3@rails313 然后无论你当前ruby设置是什么,cd到这个项目的时候,rvm会帮你加载 ruby 1.9.3...ps:rvm是个好东西,做的很智能,(大部分)操作失败后会告诉你原因,然后告诉你需要安装哪些Lib等等,非常适合新手老手使用,简直是居家旅行必备良药。

2.6K20

自建 Gitlab (邮箱配置、拆分 PostgreSQL、Redis) + 随想

分离缓存与数据库 我不知道 gitlab 为什么不进一步提供纯净版的镜像,而且官方推荐 omnibus 的安装方式,反正我至少不喜欢把数据库和缓存都集成到一个镜像里面,预期是构建一个子镜像并移除 nginx...start-first networks: proxy: external: true youclk: external: true 注意,postgreSQL 默认是禁用远程连接的...也许这辈子都不会用到使用 HTTP 去 clone 代码,但哥哥就是受不了这个提示,一想起来就头皮发麻,宛如被一万头草泥马来回碾压。 这个小问题让我吃不香,睡不着,都胖了好几斤,我必须要解决他。...然后,我不知道当时的状态是不是已经已经在阿鼻地狱的边缘,我最开始想到的是从源代码中去寻找这个提示的逻辑,强行改成 HTTPS(失败);注入一段 js 去修改提示(有修改的延迟,仍然无法忍受);修改 nginx...gitlab.youclk.com' nginx['listen_port'] = 80 nginx['listen_https'] = false 效果完全一致,这时候宛如被好几万头草泥马来回碾压,我当初为什么就没有把参考文档拉到最后面

2.2K60

数据挖掘工程师:如何通过百度地图API抓取建筑物周边位置、房价信息

因此,本文的目标是用一个rails应用配合js脚本来实现这种自动化抓取和储存,思路是js脚本负责与百度地图Api交互,rails服务器端负责储存抓取的数据,js和rails服务器用ajax方式传递数据....代码实现 3.1 浏览器端(js) 1.GetDataFromServer: ajax向get_data_url地址以get方法请求json格式的数据, 成功拿到数据后先用小区来匹配房屋坐标, 如果失败再用街道匹配...BMap.LocalSearch通过onSearchComplete指定了查询完成后的回调函数:这里我们对查询的结果做一个遍历,计算出这个查询结果与房屋的距离,然后将这些信息整合到一个数组里,传给sendData...3.2 服务器端(rails controller) SpidersController 1.return_next: 通过类变量@@house_id确定当前需要查询的房屋id,这个全局id变量随着return_text...HousesHelper 3.insert: 解析sendData()发送来的数据, 创建相应的记录. attr中存放着每条周边数据经度,维度以及名字; obj为类名,如Bus, Subway, 通过find_by()方法查询这个经度和维度是否已经存在

3.9K90

“逃离”单体,GitHub的微服务架构实践

例如,不用添加超时处理逻辑,也不用考虑如何优雅地处理由网络延迟和中断所导致的失败。...4务实——以赋能为出发点 在开始迁移 GitHub 之前,我们花了一些时间考虑为什么要这样做,以及这样做的目标是什么。对我们来说,这是文化上的巨大转变,需要做大量的工作。...对于当前的跨域查询,我们做了修复,以防数据拆分对产品造成破坏。在 GitHub,我们在单体中实现了一个查询监视器来帮助我们检测,并在发现跨域查询时发出告警信息。...我们会根据域边界,把这些查询拆分并重写成多个,并在应用程序层实现必要的连接。在划分完功能组后,我们开始通过一个类似的过程,进一步将数据分片到相应的租户组。...这就是为什么把这些基础部分抽取出来如此重要,那可以让主要功能脱离单体而运行。 对于我们来说,身份验证已经很简单,因为我们已经在单体外部将它重写为一个镜像服务。

52720

GitHubMySQL升级8.0复盘【译】

15年前,GitHub作为一个Ruby on Rails应用程序开始,只有一个MySQL数据库。...升级动机 为什么要升级到MySQL 8.0?随着MySQL 5.7的生命周期即将结束,我们将集群升级到下一个主要版本MySQL 8.0。...我们遇到了通过CI的查询,但在遇到实际工作负载时会在生产中失败。最值得注意的是,我们遇到了一个问题,带有大型 WHERE IN 子句的查询会使MySQL崩溃。...我们了解到,Trilogy客户端库的一致性给了我们更多的连接行为的可预测性,并让我们相信来自主Rails单体的连接不会中断向后复制。...这是很重要的,因为一个失败查询会阻塞整个集群的升级,而不同的工作负载分区允许我们分阶段升级,减少在过程中遇到的未知风险的影响范围。这里的权衡是,这也意味着我们的 MySQL 集群规模变大了。

21710

GitLab技术选型为何如此不同:坚持用过气Web框架十多年、坚决不用微服务

全球有许多流行网站都是基于 Rails 构建的,尽管今天 Rails 有日落西山之势,但技术选型还得图个“合适”。...“简而言之,为了保证性能与可靠性,我们只能把原本以纳秒为衡量单位、且永不失败的函数调用,替换成以毫秒甚至秒为衡量单位、而且随时可能失败的网络调用。...如此一来,有些人可能会想问,GitLab 为什么不开发一套合适的插件接口呢?或者干脆建立基于微服务的服务接口?对于这类问题,Sid Sijbrandij 的回答是坚决的:没必要。...根本不可能,我们也压根不打算给自己找这个麻烦。” “凭借着这些无聊的模块化单体,用户及其他第三方开发商一样能为核心产品做出贡献、并帮助社区积累起巨大的影响力,同时保持着无与伦比的创新速度与可扩展性。”.../045-david-heinemeier-hansson-software-contrarian/ 今日好文推荐 首个冲刺科创板的国产数据库:78 岁老教授打磨四十年,每一行代码都自主可控 为什么 Rust

84620

我终于逃离了 Node

当时业界的潮流是反对过去的大一统理念的,像 Ruby on Rails 和 ASP.NET 这样的单体框架逐渐失宠。...我当然要问了:“Sacha,为什么总要关注数据结构呢?”他的回答引用了一句名言,后来我知道是 Rob Pike 说过的话: 数据是关键。...如果你在调用 client.query() 之前不调用 client.connect(),pg 客户端会以静默的方式将这个查询推送到一个内部队列。...在这里,Postgrex 启动了一个进程,该进程管理与我的 Postgres 数据库的连接这个进程在后台某处运行,pid 是指向该进程的指针。...对我这个程序员来说,很重要的一点是 REPL 会高兴地等待,直到它从连接进程中收到回复。对 query/2 的调用是同步的,之所以是同步的,是因为它可以是同步的。

49630
领券