大家好,欢迎来到这期深度解析。今天呢,我们要聊一个让无数数据打工人,甚至是有经验的工程师都非常头疼的真实企业级场景,也就是企业级数据库的连接与底层架构。咱们直接进入正题。 作为在企业里摸爬滚打多年的数据分析工程师,我太常看到大家在这个环节被卡的死死的了。今天我们可不只是教你怎么点,下一步我们要把扒开表象,看看这些让人崩溃的连接失败,底层的真实逻辑到底是什么。 为了让大家有代入感,我们直接拿一个最典型的实际场景来开刀,使用最新的 knm, 五点八,通过 jdbc 驱动去连 ibm db2, 听起来是不是很简单,填个 ip, 填个密码,对吧?但实际上里面处处都是坑。 咱们先来看第一关,也就是最容易踩坑的第一阶段,排查 license, 寻找失踪的授权文件。 当你兴奋地配好地址,点下连接时,啪!报错了,非常有意思啊!仔细看这个错误提示,它根本不是说你密码错了或者网络不通,而是告诉你找不到 ibm db 二特有的 license 授权文件。 很多人看到这里直接就蒙了,无从下手。其实破解这招不难,你需要打开系统设置里的 classpath, 这里的核心细节是,千万记得你要把主驱动文件以及那个特殊的授权文件同时加进去, 如果你少加了,哪怕一个 j、 d、 b、 c 都会直接罢工,连门都不让你进好。当你搞定了授权文件,以为万事大吉的时候,往往会迎来第二季重锤。这就是我们要排查的第二阶段,新引擎和老驱动的底层冲突。 这时候系统可能会甩给你一个看起来特别吓人的报错提示,什么绘画无效? 别慌,抓重点,真正的关键线索在这儿。系统提示,当前的驱动不支持 is valid 这个特定的验证方法。 这就很有意思了,为什么会不支持呢?根本原因其实出在软件本身。 knmie 升级了它的底层引擎,全面拥抱了更高版本的 java 十七和 jdbc 四点 x 标准。 这就意味着你手里那个祖传的老旧的 d b j c c 点 j 二已经彻底被时代淘汰了,你必须果断抛弃它,换成支持新标准的新版驱动才行。 这里我必须要插一句,企业级的最佳实践,千万千万不要遇到驱动问题就去网上随便百度一个乱想。 要知道,很多企业级驱动是需要主述权限的,而且版本必须要和你们公司服务器上的版本严格匹配。听我一句劝,最靠谱的做法就是直接去找你们公司的 dba 数据管理员哟,真能帮你省去无数的麻烦。 经过这番折腾,换上对的驱动和 license 节点,终于亮起绿灯了,那种感觉确实很爽,常输一口气对吧?但是大家先别急着开枪兵, 这正是检验你是初级新手还是资深工程师的试金史。温体节点绿了,连接成功了,那你觉得服务器上那几百万上千万条数据,现在是不是已经乖乖躺在你的电脑硬盘里了? 答案是,绝对没有!这就引出了我们今天这一期解析最最核心的概念,下推优化,也就是教你如何真正压榨服务器的算力。 这神奇概念叫做下推优化,页内也常叫 sql pushdown。 它的本质是什么呢?此时此刻, k n i m 其实化身成了一个高级的 s q l 自动化指挥官。 他只是在给数据库发号施令,让数据库去干那些脏活儿、累活儿,而不是傻乎乎地把海量数据全部拖回你的本地电脑自己算。 你看,像建立、连接、执行、查询,甚至做数据分组、聚合这些代表数据操作的节点,他们其实都只是在后台默默生成 s q 罗语句,然后一脚踢给远端的 d b 服务器去执行。 我再强调一遍,在这个阶段,连一滴数据都没有留到你的本地电脑上,一滴都没有,我们到底图什么呢?当然是为了光明正大地利用企业及数据库服务器那庞大的 cpu 和内存资源呀! 你把表关联、过滤、排序这些句号资源的操作,留在数据的老家执行,不仅能享受底层所引的速度加成, 更关键的是,这彻底堵绝了你那台可怜的办公电脑因为瞬间塞进千万条数据而直接卡死崩溃的风险。 那数据到底什么时候才会进入本地呢?请大家死死记住这个特定的提取节点 db reader, 只有当工作流执行到它的时候,才是唯一的一个特定时刻,数据大门才被真正打开。 服务器端算好的精简过的数据才会被抽取并下载到了你本地的内存里,变成你能看到的数据表。这就是为什么我们需要一场彻底的范式转变,放下固有的思维,去真正拥抱企业级的工作流架构, 很多刚从 excel 转过来的同学,思维还停留在我要先把所有原始明细数据全下到本地,然后再去算,遇到几十个 g 的 数据,电脑直接原地升天。 而正中的企业级思维是什么?是把庞大的原始数据死死按在服务器上,尽情调用服务器的算力去处理,最后仅仅把那几百或者几千条轻量级的最终结果,也就是你的洞察下载到本地,这就是妥妥的降维打击。 好了,让我们稍微总结一下今天的核心要点,我们不仅带大家解决了真实环境里因为 license 缺失或者 java 版本引发的驱动操爆难题, 更关键的是,我们揭开了数据节点的真相,带你领略了下推优化和服务器端计算的霸道威力。记住,只要还没跨过那个数据读取节点,数据就还在远端。 既然你现在已经懂得了下推优化的精髓,那么我想留给你一个挑战,明天回到工位,打开电脑后,你会怎么重新审视你的数据工作流? 在你的日常任务中,还有多少原本在本地苦?哈哈,运算了重体力活,是可以反向推回给数据库服务器去承担的, 赶紧去试试看吧,那种性能飙升的感觉一定会让你上瘾。感谢收听这期解析,我们下次再见!
粉丝5151获赞7572

西门子 plc 之间的 github 通讯怎么做?这期视频我们来给大家分享一下。西门子 plc 之间的通讯方式呢,有很多种,比如说像 o b, c, u a, 还有 i o 通讯 tcpip, 还有这期视频讲的 github 都能实现这个 plc 之间的通讯, 这个 github 这种方式呢,相对来说感觉是简单一些,那么我们就直接来看一下这两个 plc 之间怎么做通讯。我在这里组态了两个 plc, 一个 plc 一, plc 二, 那么呢我想把 plc 一 的 db 二这个数据库里边,这里有十个数据发送给 plc 二的,这个数据发送给 plc 一, 这里呢有十个 int 类型的数据和八个波尔型的数据发送给 plc 一, 那么这里我们就可以用到 getpu 的 通讯。下面我们来看一下这两个指令怎么添加呢?首先第一种便捷的方式,就是在这直接插入一个空的功能框, 比如说我们添加一个 get, 然后直接回车,在这里他会调用一个十例,点击确定就可以,不需要改其他的。 第二种添加方式呢,就是我们可以在侧边的指令,在下面这里有一个通讯啊,我们把这基本指令收起来, s 七通讯,这里直接给它拉过来添加一个 put, 点击确定。这两种添加方式都是一样的效果啊,你习惯用哪种用哪种就可以。然后点一下这个组态, 这里呢需要给它选一下连接伙伴,也就是说你想得到这个数据是从哪个 plc 去得到这个数据,那么就是 plc 二,如果说你想和多个 plc 做通讯的话,也是同样的道理,就是这里选择的伙伴是不同的 plc。 好,这个是 get, 我 们再来看一下 put, put 同样也来选择一下伙伴也是 plc 二,因为我们这里就演示的是两个 plc 之间做通讯,那么下面呢,我们再来看一下它这几个具体的参数怎么填,这里需要特别注意一下啊, 这个就是它接收的一个频率,我们可以给它写的快一点,比如说写一个 m 零点零的这个时钟时赫兹,也就是说零点一秒扫描一次这个扑特,同样的我们也写一个 m 零点零。 然后呢我们再来看一下 get 下面这两个引角。第一个呢就是它要从哪个数据库里边儿读取数据,可以把鼠标指向放到这里,它这里提示的就是从远程 cpu 读取数据, 也就是说你读 p l、 c 二的哪个数据块看一下,就是 d b 二,它的写法呢就是 p 警号 d b 二, 这个 d b 二呢就是你读取的这个数据块的编号,然后是 d b x 零点零,也就是说它从第零位开始读取,后面就是数据长度,注意这里数据长度一定是要匹配的 int 十一回车。 好,这样我们就写好了,为什么是 int 十一呢?我们可以来看一下啊,这里的 put 这里有十个 int 类型的变量,下面呢还有八个波二类型的变量, 这样呢就是十个 int 加八个波二,八个波二呢同时又是一个字节,也就是一个 int, 所以 说就是十一。那么我们再返回到这个程序啊,同样的它接收过来这个数据之后,存放到 p l、 c e 的 这个 get, 可以看一下,它对应的这个就是十个 int 和八个 bar, 这个一定要对应上,如果说对应不上的话,可能会出现通讯不上或者说报错的情况, 那么我们在这写一个 p 警号,这个就是存放到 d b 一, 然后是对应的 d x, 然后对应的就是 dbx 零点零,数据长度呢,同样呢也是引导十,输入完之后,它是这种蓝色的,就代表我们输入的没有问题,如果说红色的话,你需要检查一下,这里呢有这个空格,大家需要注意一下啊, 那么我们再来看一下这个 put, put 下面这个呢就是向远程 cpu 写入数据,也就是说你写到 plc 二的哪个数据库,也就是说这个 get, 这个 get 里边呢只有十个 int 值,所以说在这里我们就需要写成是 int 十,让我们来写一下 p 警号 d b 一, 也就是说给它写入到 plc 二的 d b 一 点 d b x 零点零,从 d 零位开始 int 十 就是这样。然后下边这个是什么意思呢?就是它读取本 plc 的 哪个数据库去发送,也就是说 d b 二的这个 put 对 应的也是十个 int, 然后我们写一下,就是 p 警号 d b 二点 d b x 零点零, 数据长度呢?同样的是 int 十,这个空格啊,一定要注意一下,这里有一个空格,这里也有一个空格,如果说你忘了敲空格了,可能就会爆红,那么我们在 plc 一 里边已经写完 getput 了, plc 二里边就不用写了, 如果说你想写呢,也没有关系,它是不影响通讯的,不用写也不影响,如果说你想把这个 put 写到 plc 二,或者说它们一边写一个也是可以的啊,这个没有太多的讲究,那么下面呢,我们就启动仿真来看一下这两个 plc 之间的通讯效果, 好仿真的过程因为比较卡,就不给大家一一的展示了,现在已经仿真启动好了,那么我们首先来看一下 get, 也就是说 plc 二向 plc 一 发数据。我们先来看一下 plc 的 get, 然后打开 plc 二的 put 分 屏,我们来看一下啊, 启动一下监控,双击一下,比如说我们先修改第一个改成一个幺六六, 确定可以看到 plc 二这边改完之后, plc 一 的这个 db 数据块立马变过来了,值幺六六。然后我们再来改一个其他的值,比如说这个改成一个幺二二, 可以看到这边同时也是变过来的,但是你在这边改是无效的,因为它是实时向这边发送的,那边是多少,这边就是多少。比如说改成一个一百, 可以看到他还是幺二二是改不过来的,因为这边给他发过去的就是幺二二,实时发送。然后这边比如说再改一个六六六, 这边点点六六六。再来看一下波尔亮,比如说这个双击一下,哎,改为一,然后这个双击一下改为一, 但是你在这边是发不回去的,大概就是这样一个效果。那么下面呢,我们再来看一下这个扑特,也就是说 plc 一 向 plc 二发送数据,同样的效果啊,就是给大家来看一下,比如说这个我们修改一个是六六六, 哎,这边同时变为六六,哎,这边在这改一下二十,这样是不是我们就实现了两个西门子 plc 之间的不可替代通讯呢?如果说你想做多个 plc 之间通讯的话,也是同样的方式,只不过在这个连接伙伴这里, 他选择的是不同的 plc, 还有其他的方式,比如说像 i o 通讯 t c p i p。 大家可以看一下我的往期视频,都有所讲解,那么这期视频呢?我们就分享到这里,关注我,我们一起学习博图。


相信很多人都踩过这个坑,买游戏耳机只看天生辨位低延迟,结果开黑一下午,耳朵又脏又疼。今天我们不卷音质参数,只聊大家最刚需的佩戴舒适度,找了四款热门的入耳式游戏耳机做实测,全程客观无广,每管的优缺点都会说清楚。 首先原道 d b, 二是这个百元价位的热门款,它的机身很轻,绕耳式设计,日常戴起来没有负担,大幅度动作也不容易掉,很适合预算有限的用户。但树脂腔体透气性一般,夏天戴久了容易闷汗。公版的腔体模具对小耳道用户不算友好, 戴时间长了耳道口会有轻微胀痛,整体表现符合预期,没有太多惊喜。几度一只银鹊耳也是两百元档很火的电竞耳机, 它是属于半入耳式的,而且耳套长得很奇怪,半入耳的设计让它的耳套进入耳道的深度并不会很深。它的佩戴主要是通过耳套后面的凸起用来顶住耳朵,舒适度是挺不错的,但问题就在于适配度上,虽然它也附赠了三种不同尺寸的耳套,但对于耳朵大的人,后端的部分会扣不稳。 然后是木质球身的旋速,也属于两百价位。它就比较特别啊,跟它的品牌名一样,使用的是天然原木手工打磨的枪体,触感很温润,不会像金属枪体那样冬天一戴就冰耳朵。而且实木自带天然孔隙,透气性比树脂和金属枪体好太多, 实测连带一下午打游戏耳道也没有出现粘汗闷汗的情况。他的枪体做的很小,巧成一个 v 字形,能让绝大多数人的耳道都能够适配,既能够带的很稳,同时也不会给耳道带来额外的压迫感。但得注意的是,实木枪体的抗衰性是不如金属和塑料的,日常使用的时候得注意防磕碰。 最后是泰坦 s 二作为三百价位段的产品,标配四种规格的耳套和四点四平衡插头。金属的枪体确实很有质感,但毫无疑问重量也是挺高的,久弹呢会有些勒耳朵,加上用料过于扎实的线材,导致绕耳,佩戴时会有些许异物感,并且给人一种没有戴稳的感觉, 长时间佩戴耳朵是真有点顶不住。追求极致音质和可玩性的兄弟们还是很推荐入手的。 ok, 以上就是今天给大家推荐的几款耳机,大家有觉得好用的游戏耳机或者踩过的佩戴坑都可以打在评论区,觉得这期内容有用的话,别忘了点赞关注我们,下期见!