粉丝1.2万获赞14.2万


数据分析的面试一定会有这三种问题。第一个是 circle 的 问题,这其实就是技术面,因为 circle 就是 你做这门工作的一个最基本的工具,一般的公司都会有笔试,会测试一下你有没有这方面的能力。后面的口头面试呢,一般是默认你已经掌握了基本的功能,所以问的问题会 比较深入一点,比如说问你一下窗口函数有什么用,查询怎么优化等等。然后第二类的问题呢,就是问你的项目经理,这主要是为了看一下你有没有实操的经验。像比较典型的数据分析项目,就是 前期写 circle, 中期做报表,然后后面去维护。这东西涉及到非常多的一些细节问题,他们有可能会在你表述的时候去挑一些问,比如说问你一些数据怎么更新的问题, 怎么确保数据的准确性,如果数据错了,怎么去查修等等。然后最后一类呢,肯定是会问你的工作经历,以我的实际经验来说,如果不是非常必要,最好不要频繁跳槽,因为我之前 在一家公司工作过四个月,然后面跳槽,然后很长时间找不到工作。一般公司会对这种频繁跳槽,工作时间又很短的人会比较谨慎一点,很可能就是过不了前期的简历筛选。所以我觉得如果你不是一定待不下去的,最好还是忍一忍,熬够时间。

学考利,我看行考利作为网安界的万能工具箱,六百多款实战工具,从今天开始手把手带你从零开始。废话不多说,我们直接开始学习。你有了解到过这种情况吗? 就是当我们去访问一个网站的时候,我们通常会输入网址来查看这个网站里面的内容对不对?但是你知道吗?这个网站地址的内容呢,也是可以传递给网站的数据库服务器的, 那黑客就可以利用这一点来传输一些特殊的内容,然后他就可以去拿到网站数据库中的敏感数据。像这样的情况现实中其实有很多,那咱们怎么能够提前发现这种漏洞,并且进行防范呢?我们今天就来认识一下卡里里面的 circle 注入侦探 circle map, 哪怕你是个新手,只要你跟着我一步步来,也能够轻松搞定。 ok, 上一节课呢,我们认识了 webstore 里面的数据拦截高手 bobsweet, 知道它是能够帮助我们去抓包分析网络请求的。 而咱们今天的主角 circle map 呢,它专攻的就是另外一个方向了,它主要是来找网站数据库的一些小破绽的。简单来说,这个 bubble suite 它就像是一个交通指挥员,能够拦下路过的一些数据。 那 circle map 呢,就像是一个试错员,它是专门找数据库接口有没有问题的。那咱们这一节课就手把手教你用一个 circle map 入门的技巧,搜索、注入、检测,看完你就能试着找漏洞了。还是要郑重声明一下,我今天所有操作都是在本地搭建的合规靶场里面进行的 测试,用的网站和数据呢,也都是我自己生成的,没有任何的真实业务信息。那大家在使用 skype 的 时候呢,也必须要在授权范围内去操作啊, 比如你可以在企业的内部做一下安全检测,也可以自己搭建一个测试的环境来进行练习,但绝对不能对未授权的网站动手,擅自测试他人的网站属于违法行为,后果得自己担着啊。 好,咱们来看一下今天的实操,其实也特别方便,我们用到的还是卡里,不用你去额外装工具。我们今天要讲的这个 circle map 呢,它也是卡里里面自带的,我们打开终端就可以直接使用。为了演示呢,我还搭建了一个带了 circle 注入漏洞的一个靶场,专门用来验证 circle 注入漏洞的,上面还有故意留下的一些小漏洞,就方便咱们去练习检测了吗? 打开这个靶场之后呢,你可以看到这上面会有很多个关卡,就是这个 nice 一, 如果你想课后自己练手的话,也可以下载我准备好的靶场和详细的操作步骤,都可以帮你快速上手的。我们今天的目标也很明确,就是用 circle map 来检测靶场里面的注入点,看他到底有啥本事。那在动手之前呢,我们还是要先搞懂这个 circle map 到底是咋干活的。 我们都知道网站的数据,它大多是存储在我们的数据库里面,对不对?比如说用户的账号呀,还有留言内容啊等等的这些数据。那网站跟数据库交流说话,问数据库要东西的时候,它靠的是什么呢?它靠的就是这个 circle 语句, 就像我们之间进行交流,用普通话交流是一样的。可是如果这个网站他没做好防护的话,就是我们在网址连接参数的数据里面加上一些特殊的内容,比如说这个单引号或者是其他一些特殊字母,那这些内容呢,他就会随着 sql 语句传给我们的数据库服务器, 就会让数据库执行到一些错误的命令,这些命令呢,它就可能会导致我们网站上出现一些异常的信息,甚至会泄露我们数据库的敏感数据,而这就是我们的 sql 注入漏洞。那怎么去察觉这个网站是否存在 sql 注入漏洞呢?就需要使用到我们今天的主角 sqlmap 了。 这个 sqlmap 它核心的逻辑其实也很简单,它就像是一个机灵的设错员,它会自动往我们的网站里面,比如说网址后门的参数啊,或者是表单数据里面去塞各种特殊符号, 然后去看一下这个网站的反应。如果说网站返回了一些错误的信息,或者是这个网站的数据内容有变化的话,就说明这里可能是存在注入漏洞的。那发现漏洞之后呢,我们这个 second map 它还会进行进一步的测试, 然后看看能够拿到多少数据库里面的信息。简单来说呢,我们这个 second map 它就是通过投石问路这样的一个方法来找到我们数据库的防守漏洞的,这一点大家可以理解吗?我们准备好了之后呢,就开始实操吧,直接三步就搞定 second map 的 基础用法,我们第一步需要先来确定一下测试目标, 这一步其实就是来打开我们有漏洞的那个测试靶场的,然后再看一下我们的 ip 地址是多少,结合这个 ip 地址来给到我们一个目标网址,方便我们后续来进行搜索支付漏洞检测,我们有漏洞的这个测试靶场以及目标网址准备好了之后呢,我们就可以使用这一条命令来进行检测了,检测完之后呢,我们就一步一步分析结果就可以了, 是不是很简单呀,直接三步搞定。 ok, 咱们现在就来开始实操看看吧,这里的参数待会在实操的过程中也会给大家详细讲解的,这一块不用担心,首先来打开我们的 php 吧机,然后呢你打开这一个小皮面板,确定小皮面板上的这一个网页服务以及我们 micro 数据库的服务是不是处于打开那个状态。 确认好它俩是开启的状态之后呢,我们再来看一下我们这个吧机的 ip 是 多少,好,我们把它记下来,是幺九二点幺六八点幺四四点幺三二, 把它复制下来。接着我们再结合这个把机的 ip 地址来打开一个带参数数据的查询网址,这个网址前面的内容呢就是我们的这一个把机 ip, 那 后面这一个是什么意思呢?这一个它其实指的是我们把机上面具体页面的路径,就是指我们的网站上具体某一个页面,这个页面它就是指向我们把机的第一关,就是刚刚带大家看的这一个类似一这一个第一关的具体位置。 那这个问号 id 等于一是什么意思呢?它其实就是指的我们可以往页面上去传递一个 id 等于一的数据,来测试我们这个网页会给出什么样的反应。 我们这个网址它总体的一个意思,其实就是在我们网站的某一个页面上传递一个 id 等于一的数据,来看一下我们这个页面会不会有一些其他的反应,我们就是用它来作为我们的测试目标,这个测试目标准备好了之后呢,我们就进入第二步来进行注入检测。接下来我们打开卡里的终端, 然后在这个终端输入命令 sqlmap 加上杠 u, 再接上我们的目标网址,再给大家解释一下这个杠 u 后面接上我们的目标网址,它是表示我们的 sqlmap, 它会自动的对这个网址里面的参数进行检测。 这个目标网址就是我们测试版机上面的某一个页面,然后给这个页面上传递了一个 id 等于一这样的一个数据,然后 sqlmap 呢就会盯着这一个数据来进行检测,就是检测它会不会存在 sql 漏洞这样子的。 你执行这个命令之后,这个 mac 它会自动先帮你打开,看一下我们这个网址对应的页面能不能够正常打开,然后它再对 id 等于一的这一个参数数据自动去发送各种试探性的请求。比如说它会把这个 id 等于一,把它改成 id 等于一,后面加一个单引号, 然后去发送请求,然后它就会帮你分析页面返回的结果。比如说我们修改了这个参数之后发送请求这个页面会不会报错,它的内容会不会变化,通过这样的方式来判断我们这个 id 的 这一个参数数据有没有敲刻注入漏洞,最后它会告诉你检测的结果。 ok, 接下来我们回车来看一下吧, 很快的我们就看到了检测结果了,如果你是第一次检测到这一个链接存在漏洞的话,它就会提示这样的一句话,就表示我们的 sqlmap 它怀疑这个 id 参数是存在漏洞的。然后呢,它会问你,问你是否要继续检测这个页面中的参数, 如果我们要继续检测,就输入 y 直接回车,它就会给我们继续来检测,这里就是问我们要不要加宽测试范围,我们直接输入 y 回车,这个时候它就开始试错了,我们屏幕上就会显示正在测试的内容,比如我们看到了这个 get parameter id, 然后这上面也有 id, 它就是表示正在测试 id 这一个参数。 后面 sqlmap 就 会自动去拼接一些内容来获取数据库里面的数据。大概十几秒之后呢,我们就会看到 sqlmap 这边就会提示这样一句话,就说明我们已经找到注入点了,就是这一个参数数据 id 它确实是有问题的。接着我们再输入 y 回车,它 就会告诉你漏洞类型,比如说这里的 unicorn, 它就是表示这里是存在联合查询类型的漏洞的,就是可以在这一个注入点的同时查询到数据库的多个表里面的数据,然后这里我们可以看到还会有一些其他类型的漏洞。 查询到这个注入点确实存在漏洞。之后呢,我们还可以使用前面这个命令,后面加上 tables, 然后查看一下这个数据库里面存在的一些数据表,就是进一步再利用这个漏洞,让它去查询到这个数据库里面存在的数据表了。 我们可以看到不同的数据库,它是有很多个数据表的,比如说我们现在看到的这个数据库,它里面是有八十七个数据表的,这样我们就可以获取到数据库里面的具体数据表格啦。 怎么样呀?这个 secmap 的 基础用法是不是也没有我们想象中那么难呀?我们从确定目标网址,再到用简单的命令去检测注入点,然后查看数据库信息,三步就可以让他帮我们找出网站的数据库漏洞了。 那其实它的核心呢,就是去自动试错,加上分析反应,我们新手的话就只要去记住里面的基础参数就可以了。那了解了 second map 的 基础用法之后呢,我们再来说说它在实战中的用处吧。第一个就是它可以用在企业网站安全自查上面,企业可以去使用 second map 定期扫描自家网站的输入点,去看一看有没有 second 注入漏洞啊, 早发现早修补嘛,这样我们就可以尽可能地去避免黑客利用这些漏洞偷走用户的数据,比如说用户的手机号啊,地址啊这些敏感数据。第二种呢,就是它可以用在安全工具开发商测试上面,开发网站防护软件的时候呢,工程师就会使用赛克 map 模拟黑客攻击来测试防护软件能不能挡住注入攻击, 就像它在利用一个假小偷去测试防盗门结不结实是一样的道理。 ok, 到这里呢,咱们用 a r p scan 和这个 nmap 来扫描 ip 找设备, 再到后面我们用 nmap 来做端口扫描找服务器的入口。然后呢,我们还用了 harry 这个工具来破解密码,主要是做了一个 r g p 密码爆破,还有我们的 my sql 密码爆破,大家还记得吗? 接着就来到了我们用 bobsweet 来做抓包分析到最后,今天我们来使用 sqlmap 找注入漏洞,这一整套流程走下来呢,咱们对网络安全的基础工具的用法其实大致也有了了解了, 小伙伴们之后可以多多进行练习,俗话说熟能生巧嘛,你们肯定可以的。好的,咱们今天呢就用赛克 map 来搞定了这一个赛克注入检测的基础操作,学会了的同学也可以给个一箭三连, 用到的所有资料呢,我都早早的打包好了,希望能够对大家有所帮助。如果后面大家想要去深入学习网络安全知识,也可以跟我一步一步来学习,带你成长为一个网络安全的专业选手。

重装操作系统之后,怎样将原有网站的数据库恢复了? 我们在使用追梦网进行可视化网站设计的时候,通常呢会遇到我们重装操作系统的情况, 这样一来就需要重装数据库软件, 就好像我们现在一样,重装了操作系统之后,我们的数据库没有了, 那么怎么把它找回来呢?我们现在使用的是 escorec 味这样一种树, 对于这样一种数据库而言呢,我们辈分的数据文件有两种形式, 一种呢是通过我们的企业管理器备份出来的 bak 文件, 那么怎么去备份 b a k 文件呢?大家可以到陶老师的主页上去看备份 escort sever 数据库的视频。 那么另外一种文件呢,就是数据库的原始文件,原始文件呢包括数据文件和日制文件,这两种 文件的恢复的方法不一样,下边呢我们俩先看第一种怎样来恢复数据库原文件, 我们在数据库上点击右键,然后选择附加,接下来呢,我们点击添加按钮, 我们定位到数据备份这个文件加,然后选中数据库的数据文件 mdf, 接下来我们点击确定,然后再点击确定,这样呢 我们就把数据库恢复回来了,那 bak 文件又怎么恢复呢? 接下来我们演示来进行一个操作的演示,我们在数据库上单击右键,然后选择还原数据库, 然后我们选择设备,接下来呢,我们点击这个浏览的按钮,弹出对话框之后,我们选择添加按钮, 接下来我们定位到我们保存备份文件的文件加,然后我们选中备份文件, 单击确定,然后再点击确定,接下来我们再点击确定,这个时候会提示还原数据库失败 怎么办呢?我们找到选项,然后勾选覆盖现有数据库,再点击确定。好,这个时候我们就成功的还原了数据库。 我们现在来总结一下,就是 bak 文件呢,它是通过还原数据库功能来实现,而数据库的原始文件呢,是通过附加数 数据库来进行实现的。使用军木门进行可视化的网站编程呢,具有不用手工写代骂的优点,非常适合初学者设计自己的网站。 欢迎大家到陶老师的主页上去观看更多的视频,今天的分享就到这里。

所以呢这会要跟大家讲的一个都是数据库的简单的一个备份还原的事情,点在表上面右键,然后呢有个叫转储 ctrl 文件,这里会出来两个选项,一个叫结构和数据,一个叫紧结构, 点到桌面上会保存成一个点 sql 的文件,然后这个文件里的内容是什么呢?我们可以右键这样子用这个编辑器打开看一眼,是这样的,上面这段呢是注视,可以先不管他这里呢,也可以先不管他这些都可以先不管, 先删除一个扑克表,再创建一个扑克表,但是他后来多了一句话叫 insert in to, 还有个 finals, 他把数据也带进来了, 也就是说如果说我们这里有一千条数据,那这边就会有一千条的音色的语句,所以他这个结构其实就是把他要用的语句全给他存起来了,先创建一个自己确定这张表,然后呢把后面的音色的语句,把这数据一条条写入进去, 这是后面要学的内容。所以呢这个文件是不是本质上其实相当于就是已经是一个数据库的一个备份了,因为我们现在已经过了创建数据表这个阶段了,所以以后呢不会让你们总是从头开始的,会先给你们这么一个点色扣的文件,里面的表结构呀数据啊可能都有, 那么这个文件怎么用?你们看完了双击打开,然后打开之后呢打开自己的库,点在表这个位置,然后呢把这个东西拖进来,记得看到我拖什么位置,拖到右边这个大的空白的地方,松手,然后点开始 再关闭,然后呢右键刷新一下,这个表就有了,数据也有了,这个点 spl 文件,这样备份的话,我是要把这个文件单独拿下来,会觉得有点麻烦,对不对?数据库上其实可以直接做备份的,就在这个地方可以点到最下面有个备份,这个地方是一个这种录音机词 加两个符号,这个地方呢我们点这里新建备份,新建备份的意思现在就是我对整个这个库上面做个备份了,那么我们先随便写个注视,比如说备份, 然后呢点开始点开始,现在呢就备份好了,备份好之后会发现这边就多了一个还原点,是不是?还原点的意思就是如果说我现在不小心把原来的数据搞坏了,或者数据不小心删了之类的, 那我可以回到这个备份的点,然后呢我点动这里还原备份,点一下再开始,然后刚才删掉的表现在又回来了,对吧?数据也在,这就是做一个还原的效果。

有人问我,零基础纯文科怎么学色扣,因为我本人从高中到研究生一直都是文科,后来到了大厂做数据分析,我觉得我可以给这个问题一个答案。其实网上免费的资源挺多,但正因为他多,所以他良有不齐。 而且小白面临的问题不是没有资源,而是他不知道我学了这个东西到底是为了什么,我学这个东西 学到什么样的程度,就算学的好了,可以了。而且小白一定会面临一种声音,网上的或者现实中的说, 这个东西很简单啊,我面试之前刷几套题就可以了,或者是我看完这本书就可以了。然后他看完之后发现好像我还是不行,不会,我是不是不适合干这个,没长这份脑子。这其实不能怪说这句话的人,因为很多人他学会了之后, 他就忘记了他是迈过怎样的坎才学会了这个知识的,所以他不能给你一些惊喜的指导,而我是一个小白来的,这些我都理解,所以我可以给一个框架类的东西给你们参考。我建议每一个人先去买一本书,这本书叫色寇必知必会, 他最好是一个实体书。为什么强调他是实体书?因为这本书他是要作为一个字典来用的, 就是你在之后的刷题,甚至之后的工作中,他放在你的手边,哪些部分你不会,你可以随时的翻开,他如果是电子资料或者是视频,他就没有那么方便。 这本书你收到了之后怎么看?你需要通读一遍,这个通读不需要做笔记,不需要花太长的时间,只需要通读重点的部分。高亮,你需要知道我得掌握的知识有哪些,同时这部分知识在哪些位置? 看过之后你会产生一些疑问,比如说我学这个是要干什么?比如说哪一些是重点,哪一些是重要的知识,哪一些不重要我都不知道。 这个时候你直接去刷题,刷题的好处在于重要的知识会反复的出现在题目中。刷题的网站会推荐两个,第一个叫 soco 入,他好像他有十二套题目, 每一套题目都是讲一个知识点是由浅入深的,到了深的那个部分就是你这个知识点要掌握到的程度。它的好处还在于他不需要配置 coco 的环境。有一个对话框,你可以直接输入 coco。 在刷的过程中,你可以结合着你那本搜索必知避讳来看,不知道知识点,通过刷题来熟悉,直到这十二套题的每一套题你都可以做正确。这网站也是给标准答案的, 用起来很方便,但他的问题就是他的练习题还是太少了,不够。这个时候你打开一个叫牛课网的网站,这个网站是很多程序员在面试之前需要刷题的一个网站, 你在网站的搜索栏里搜 sco, 点题库就可以出来各个大厂。在面试的时候,他的 cco 真题你可以选自己喜欢的一套来刷,还是结合着 cocob 知必回来看。他的好处也是不需要你配置环境,可以直接在对话框里写。 他有一个论坛,很多人会发布面对这道题他的困扰,他的思路,你会发现你的困扰也是别人的困扰。 这个时候你会发现面对的困难不是只有你一个人,他还有很多种的标准答案可以供你参考,是非常好的一个资源。看书马蹄这样循环往复,一直到你会发现题没有什么错误, 基本上所有的题我都有很好的思路了,这时候就够了。其实说起来特别简单,就是做的时候需要克服思想上行动上的很多困难。希望我的方法可以给你们一些帮助,希望你们在思考的学习之路上一切顺利。

如果有一天,所有数据库都被资本收编,只剩下一个还在坚持技术理想的,你觉得会是谁?很多人会说 postrophe, 在 数据库江湖里,它从来不是最张扬的那个。没有 oracle 那 种帝王气场,没有 sql server 背靠微软生态的庞大军团,也不像 my sql 那 样经历资本收购的戏剧冲突,但它却越来越强, 而且是悄悄地变巧。 postgraduate 的 出身很特别,它不是诞生在商业公司会议室里,它来自学术界。上世纪七十年代,在加州大学伯克利分校, 一群研究数据库理论的教授和研究人员想做一件事,把数据库这件事做得更严谨一点,更标准一点,更优雅一点。后来,这个项目不断引进,成为今天的 postgraduate。 所以 它从基因上就不一样,它不是为市场份额而生,它是为正确性而生,这决定了它的性格。 很多程序员喜欢 pj, 不是 因为它营销做得好,而是因为它讲道理。第一,它对 coco 标准的支持非常完整。很多数据库会为了性能或者历史包袱,对 coco 做大量私有扩展,甚至偏离标准。但 postgraduate 始终尽量贴近标准实现。这意味着什么? 意味着它更像一部教科书籍。数据库。如果你是一个对技术有洁癖的人,你会喜欢这种克制。第二,它的扩展能力极强。 postgraduate 几乎是数据库里的瑞士军刀, 你可以把它当关系型数据库,你可以把它当文档数据库用。 jason, 你 可以做地理信息系统,可以做权威搜索,甚至可以定义自己的数据类型、操作符和函数语言。它不像有些数据库只允许你调用 api, 它允许你改造内核逻辑。 这种开放程度对工程师来说是一种尊重。第三,也是最关键的一点,它没有被单一资本控制。很多开源数据库都有类似命运,先开源后商业化,再被大公司收购,最后发展方向服务于母公司战略。但 postgraduate 没有母公司, 它由全球社区共同维护。没有一家企业可以单方面决定它的走向。这在今天的技术世界里非常罕见。那为什么它这几年越来越强? 答案是云时代。以前企业不敢用 p g, 担心缺少商业支持。现在云厂商提供托管服务,稳定性和支持问题被解决,风险降低了,成本更低了,灵活性更高了。 于是,越来越多创业公司默认选择 post grexit, 很多大厂也在核心系统中部署 p g。 一个很有意思的现象是,很多技术团队内部的默认数据库已经从 mesico 优先变成 post grexit 优先。这是一种趋势性的转变。当然,它也不是完美的, 他不够傻瓜式调优,需要理解原理参数很多,文档厚的像一本教材。但也正因为如此,他更像一把好剑,高手用它可以发挥出极致能力, 新手用它会觉得复杂,它不讨好人,但它赢得尊重。如果说 oracle 代表商业秩序, sql server 代表生态统治, my sql 代表开源理想与资本博弈,那 post sql 代表的是一种技术信仰。它告诉你,数据库不仅是工具,数据库也是工程哲学。 他没有称王,但他守住了底线。现在问题来了,你觉得未来十年, postgraduate 会成为真正的新王吗?还是他注定只属于技术?即刻的小众阵营?评论区,告诉我你的默认数据库是什么? 下一期,我们聊一个更狠的话题,数据库最赚钱的秘密,锁定效应,为什么企业一旦选了某个数据库,几乎永远不会换?为什么数据库公司比你想象的更赚钱?那一集,我们从技术走向商业数据库江湖,我们继续。

my esco 数据库呢,还会通过 isco 的文件的方式来进行恢复, 我们这个 sqi 文件呢,是通过一个软件给他备份出来的卖 sq 数据库,打开它我们可以看到文件里边呢,它是一些操作数据库的语句, 那么通过这样一个文件呢,我们就能恢复我们的数据库,那么好,我们来简单的说一说, s k l 是什么 sql 呢?是用于访问和处理数据,获得标准的计算机语言, 那么数据库呢,包括 my s q l 或者 h q l shaver access 等等。 接下来呢我们到数据库可视化工具里面看一看怎么来恢复我们刚才提到的这个数据库文件。 s k o l 我们切换回来,点击文件,然后打开外部文件,然后选择查询, 接下来我们选中这个 sql 文件,然后单击打开,打开之后就显示了我们所有的 这一个文件的内容,这个文件的内容呢,我们看第二十一行呢,是要创建一个数据库 vip, 然后呢再在我们的歪脖里面去创建表和试图,然后呢还插入数据, 也就是说我们通过这样一个文件就把我们的数据库恢复回来了。好,现在我们点击运行, 在我们这个脚本执行完成之后,我们来这边的年纪,下面我们刷新一下,这个时候就出现了我们 还原回来的数据库歪了,我们双击他可以看到我们所有的表已经恢复回来了。 陶老师在以前的视频里面呢,还介绍过通过备份和还原这样的方法来恢复卖 sq 数据库。那么我们备份和恢复数据库的方法呢?很多, 大家呢可以在实际使用的过程中灵活的进行运用。 今天的视频就分享到这里,欢迎大家到陶老师主页上去看更多的使用追梦人进行可视化网站设计的视频,谢谢你的观看。

是否查询一定要避免?是 like 的 心吗?抱歉,这次我要唱个反调,盲目遵循这条铁律,可能会把你的代码维护搞成灾难。 为什么?如果不写是 like 的 心?今天业务要查 a 字段,你写个方法。明天要查 b 字段,你又得加个方法。最后你的 dio 层代码直接爆炸,充满各种零碎字段的查询代码, 这维护成本谁顶得住?很多人担心 select 星会影响性能,但是大多情况下,只要锁影走对了,查三个字段和查十个字段性能差异不大。 为了这点性能提升,却严重牺牲了代码的扩展性,这笔账不划算。当然,这里有个前提,如果表里有 test blob 这种大字段,那就不要用 select 的 心,大字段会把数据库的内存和网络宽带瞬间吃光。大字段必须按需查询, 架构设计,永远是权衡对错都不绝对,所以没有必要把 select 星妖魔化,避开大智断,它带来的开发效率提升往往要大于性能损耗,是一个更务实的选择。关注我,解锁更多实战技术干货,记得点赞关注哦!

前几天,我发了一条关于数据库的视频,本来就是随口一聊,结果真正让我愣住的不是播放量,而是评论区。因为我刷着刷着,突然感觉自己被拉回了二十多年前。有人说现在还在用 s q l server, 两千,有人说服务器还是两千系统。 还有人说 x b 加 s q l 两千的财务系统一直跑的挺好。也有人说, x b 加 s q l 两千的财务系统一直跑的挺好的, x s 二零一三还能再战很多年。 那一刻,我不是想笑,而是真的愣了一下。因为这些留言太真实了。很多人第一反应会问一句, 你们为什么不升级?是技术不行吗?还是不懂新东西?但说实话,这些都不是答案。因为很多系统是真的还能跑,功能十几年没变,用户就那么多,数据量也不大,不联网,不上云,不折腾,每天安安静静的在角落里干活, 你要问他能不能用,答案往往是,能,而且很稳。问题在于,升级这件事,从来不是点一下安装新版本这么简单。 升级数据库,意味着数据结构要不要改,老代码还认不认?存储过程会不会直接报废?报表接口第三方工具还能不能连得上?稍微一个地方没处理好,系统可能直接就瘫了。 所以,对很多公司来说,升级不是技术问题,而是一次风险极高的选择。说到这里,你再想想那些航空公司,很多航空公司的核心系统看起来像 dos, 界面老得不行, 但它们不是不先进,而是不敢随便动。因为一旦系统升级出问题,后果不是某一个部门加班,而是航班取消,机场瘫痪,行李错乱,甚至全球连锁反应, 那种损失不是几万几百万,而是几亿几十亿欧元。在这种情况下,能不动就先不动,反而成了一种理性的选择。 所以再回头看评论区那些还在用 s q l 两千的留言,其实已经不是在炫耀老系统有多稳,而更像是在说一句话,我这个系统现在还能撑得住。 老系统真正可怕的地方不是慢,而是突然。有时候他平时一点问题都没有,但一旦出事,你甚至已经找不到当年写这个系统的人了。 那是不是新系统、新技术, ai 就 一定更靠谱?也不是。新系统的问题往往是已知的,是可以预估的。老系统的问题很多时候是不可预期的,你不知道他什么时候会炸,会在哪个点炸,会炸到什么程度,区别就在这里。 所以,数据库到底要不要升级?我的答案其实很简单,你可以暂时不升级,但你至少要清楚自己在用什么,要有完整的备份,要知道哪一天是非升级不可的。如果你连这些都没有,那不是稳定,那只是运气好而已。 这件事其实和 ai 一 模一样,不是 ai 靠不靠谱,而是你有没有理解它,有没有准备好,有没有升级自己的认知。系统可以慢慢换,数据库可以慢慢升,但认知如果停在原地,时代是不会等你的。 最后我想说一句,系统老并不可怕,可怕的是你以为这个世界会一直保持不变。来评论区继续聊,你现在用的是什么数据库版本,你觉得它还能再跑几年?

你们遇到过这种情况吗?首先看一眼代码视力,这是一个 supreme boot 项目,这个方法用于保存学生信息,在方法中又开启了一个现成,保存另一个学生信息。最后手动抛出一个异常,这里我添加了一个 supreme 的生命式事物, 执行一下会是什么效果呢?咱们来看一眼数据库,现在数据库里面是没有数据的,咱们通过 pos 他们调用一下,看一眼效果, 再刷新一下数据库,发现子线城的数据保存进来了,这是什么原因呢? severin 事务是通过数据库连接来实现的,咱们来看一眼 severin 事务管理员码, 发现数据库链接是放在 thread local 当中的, thread local 本身是线层隔离的, 咱们开启的线程和主线程不是同一个数据库连接,只有同拥有同一个数据库连接,才能同时提交事务和回滚。那这个问题应该怎么解决呢?咱们可以通过编程式事务 加上咱们的加握同步工具来解决,同步工具呢有很多种,这里面咱们用到的是卡当烂尺。来看一眼原码。 首先呢,模拟一些学生数据,创建一个现成池创,按照学生数量创建一个计数器,这里有一个异常标识,默认值为 false, 如果子线程报错,则将这个标识设置为处。按照学生数量,咱们开启现成, 这里通过传赛身 time later 的 x q 的方法来进行插入操作。这里我判断了手动模拟了个 异常,判断学生姓名是否等于礼仪,如果等于礼仪,我则抛出一个自定义异常,接下来呢,捕捉这个异常,如果发现异常呢,则将咱们那个异常标识设置为处, 然后计入器卡档。最后呢,用一个烂尺点儿 awat 等待其他线程执行。最后判断这个异常标识是否为处,如果为处,则进行回滚,再往下呢,那就是拉烂尺点儿 awat 主线程,等待其他子线程执行。 那咱们执行一下,看一眼效果, 看一眼日志,手动异常,说明咱们的异常已经抛出了 这些 circle 呢,里一、里二里三也执行了,咱们看一眼数据进没进来,发现这种方式是可以解决问题的。还有什么解决方法?小伙伴请在评论区里留言。