首页 文章 精选 留言 我的

精选列表

搜索[云压测],共10000篇文章
优秀的个人博客,低调大师

WebMCP 上了 Playwright:页面给 Agent 的工具怎么测

凌晨一点,值班群里弹出一条告警:客服侧的智能体在商品目录页上「找不到搜索入口」,整夜只回人工。前端把截图甩了过来——搜索框在,接口 200,DOM 里的搜索语义节点一个不少。翻到智能体自己那份执行日志才看明白:它读的根本不是像素和标签,而是页面注册给它的工具列表;昨晚那次发布,列表里少了一个 search_catalog,多了一个改了参数名的新条目。页面上没有任何东西坏掉,坏掉的是页面端给智能体的那张工具面板,而它不在我们任何一条用例的覆盖面上。这个盲区现在有了官方出口:据 Playwright 官方 Release Notes(v1.64),浏览器侧第一次给出了枚举并直接调用页面工具的接口,page.webmcp.tools() 与 page.webmcp.callTool(name, params),把「页面把哪些能力交给了智能体」变成像按钮一样可以断言的东西。

优秀的个人博客,低调大师

大模型写代码以后,测试到底要测什么?

摘要: 如果你刚开始接触大模型测评,AI 生成代码其实是一个很适合入门的场景。过去我们习惯看“代码能不能跑、测试能不能过”,但到了 Coding Agent 阶段,这两个标准已经不够了。真正需要验证的,还包括功能是否符合真实需求、AI 写出的测试是否可信、代码有没有超范围修改,以及最终产物是否符合项目本身的工程规范。

优秀的个人博客,低调大师

谷歌开测语音支付,张嘴付钱真能现实吗

随着技术的进步,如今移动支付的手段也早已呈现出日新月异的景象,从早前输入繁琐的密码,现在已经有了更加方便安全的指纹与人脸识别。不过现在在智能手机上已经很常见的声纹识别,却很少被应用到支付领域。而在近日有消息显示,谷歌方面已经开始着手在旗下产品中,落地这项“张嘴就能付钱”的语音支付功能。 据相关媒体的报道显示,目前谷歌已经正在测试一项新功能,将允许消费者使用语音匹配(Voice Match)进行授权确认支付。而谷歌方面也证实,并不是所有的购买都会提供语音识别,现阶段这项功能仅适用于APP内购与餐厅订单,并不适用于谷歌购物(Google Shopping)。 按照该报道中的说法,这一语音支付功能原本计划在今年I/O开发者大会上发布,但由于疫情的原因只能跳过发布直接开始测试。目前在位于Google Assistant (谷歌语音助手)的支付界面中,就能看到“Confirm with Voice Match”的选择。 事实上,语音支付这项技术其实并不新潮,甚至于比语音助手所依赖的自然语言处理(NLP)更加古老。没错,语音支付与自然语言处理尽管说都与语音相关,但二者却有着天壤之别,语音支付的本质是进行声纹识别,但声纹识别显然并不等于语音识别。 而声波传输是利用声音作为传输方式的一种数据通信模式,比如我们说话的过程,就可以理解为把信号编码成声音的过程。而聆听的过程,则是把音频信号解码成语言文字的过程,所使用的汉字与拼音之间的对应关系,其实就相当于是音频协议。 但声纹识别则是个性识别,需要通过提取语音中的声纹特性,判断说话的人是谁,也就是解决“谁在说话”的问题。而语音识别是共性识别,判断的是说话的内容,解决“说了什么”的问题。显而易见,在语音支付中最重要的,是判断说出支付命令的人是谁。 由于每个人的发声器官在尺寸与形态方面大概率不会完全一致,因此这些差异也导致了发声气流的改变,进而产生了声纹的差异。所以我们才能“未见其人,先闻其声”,通过音色、音调和说话习惯,可以判断声音主人的身份,因此同理也能用算法提取语音信息中明显的、抽象高维的声纹特征,并用深度学习来训练模型,进而利用具备独特性的生物特征,来证明“我是我自己”这样的命题。 事实上,使用声纹识别来完成语音支付的过程很简单。就是用户发出带有确定命令的声波,终端设备获取这一声波并转化为会话(Session),并将具体的商品信息以及交易号发送到谷歌后台,其在服务器端匹配了声纹信息后就能开始进行交易操作,最后再将完成交易的信息,推送到谷歌语音助手中。 而在谷歌此次确认测试语音支付之前,亚马逊方面在去年秋天就已经开始允许用户使用语音命令在自家的Alexa上支付账单,一旦用户使用类似“ Alexa,支付我的移动账单”来批准交易,Alexa将使用Amazon Pay支付账单金额,并通过用户注册的手机号码发送确认。此外,国内市场的天猫精灵也早已可以使用语音支付,根据阿里方面公布的数据显示,仅在去年双十一期间,天猫精灵上就共有105万笔订单是通过说话的方式支付成功。 不过谷歌想要实现的,显然并不仅仅是在自家Google Home智能音箱上使用语音支付,而是瞄准了适配场景更为广阔的智能语音助手。不过谷歌能想到的,亚马逊与阿里难道想不到吗?在智能语音助手上全面接入语音支付,毫无疑问会大幅度提升用户的使用体验,毕竟相比于人脸与指纹识别,声纹识别的便捷性要高得多。 但亚马逊与阿里选择将这一功能局限到智能音箱这种通常放在家中的设备上,其实极有可能是有一番深意的。语音相比于指纹或者面部信息来说由于有着可控性更低的因素,毕竟用户可以自主决定是将手指放在指纹识别模块上,或将脸放在镜头前,但却无法这样控制声音的传播。 更为重要的一点是,指纹信息很难被采集,面部识别通常需要配备活体检测,但是声纹识别不仅很容易收集,同时也很难判断用户在说出支付命令时的状态。再加上如今AI技术已经全面扩散,通过深度学习模型、波形编辑工具,拼接出指定内容的语音数据,几乎完全可以复刻出用户的声纹频谱。 并且语音支付的安全问题不仅仅只出现在客户端,服务端同样面临也有一定的风险。语音支付可以看做是一次数据交互,例如cookie机制所采用的是在客户端保持状态的方案,而Session(会话)机制采用的是在服务器端保持状态的方案,在用户第一次访问服务器时会为客户端创建一个Session,并通过特殊算法算出一个Session的ID,用于标识对象。 然而由于语音支付并不是一次性行为,用户下次与服务器进行数据交互就需要通过SessionID来完成。然而,SessionID的实现机制导致了其可能会遭到劫持,比如说经典的XSS跨站点脚本攻击、网络嗅探、代理人劫持等不同攻击模式,如果SessionID被劫持,黑客就能获得目标用户的合法会话,那么接下来就能像信用卡盗刷一样掏空被盗者的钱包。 因此这或许也是谷歌自己坦言,如果反馈与性能都太过负面,该功能甚至可能不会向公众推出的重要原因之一。因此在谷歌没有解决至关重要的安全性问题之前,想要张张嘴就能完成购物体验,或许暂时只能在智能音箱上得以实现了。

优秀的个人博客,低调大师

亲测Mac和Linux安装Tomcat,不服来战

一、今天需要使用到本地的Tomcat,结果在网上找了下教程,都是假的,都有问题,都没有经过测试,不负责任啊啊啊,坑爹坑爹。 Mac正确安装Tomcat的姿势 首先访问一下Tomcat的官网: Tomcat官网 想下载什么版本就点击什么版本 二、下面以Tomcat9为例,Mac和Linux的一定要下载tar.gz文件,其余的都有问题 三、解压后,重命名文件夹 四、通过终端进入到Tomcat的bin目录下 ~/Develop/Tomcat/tomcat9/bin ⌚ 19:16:26 $ pwd /Users/wangdong/Develop/Tomcat/tomcat9/bin ~/Develop/Tomcat/tomcat9/bin ⌚ 19:16:29 $ ls bootstrap.jar setclasspath.bat catalina-tasks.xml setclasspath.sh catalina.bat shutdown.bat catalina.sh shutdown.sh ciphers.bat startup.bat ciphers.sh startup.sh commons-daemon-native.tar.gz tomcat-juli.jar commons-daemon.jar tomcat-native.tar.gz configtest.bat tool-wrapper.bat configtest.sh tool-wrapper.sh daemon.sh version.bat digest.bat version.sh digest.sh ~/Develop/Tomcat/tomcat9/bin ⌚ 19:16:31 $ 五、启动Tomcat ./startup.sh ~/Develop/Tomcat/tomcat9/bin ⌚ 19:16:31 $ ./startup.sh Using CATALINA_BASE: /Users/wangdong/Develop/Tomcat/tomcat9 Using CATALINA_HOME: /Users/wangdong/Develop/Tomcat/tomcat9 Using CATALINA_TMPDIR: /Users/wangdong/Develop/Tomcat/tomcat9/temp Using JRE_HOME: /Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home Using CLASSPATH: /Users/wangdong/Develop/Tomcat/tomcat9/bin/bootstrap.jar:/Users/wangdong/Develop/Tomcat/tomcat9/bin/tomcat-juli.jar Tomcat started. ~/Develop/Tomcat/tomcat9/bin ⌚ 19:17:23 $ 六、访问http://localhost:8080/ 出现上述的界面,就证明成功了。 七、关闭Tomcat ./shutdown.sh ~/Develop/Tomcat/tomcat9/bin ⌚ 19:17:23 $ ./shutdown.sh Using CATALINA_BASE: /Users/wangdong/Develop/Tomcat/tomcat9 Using CATALINA_HOME: /Users/wangdong/Develop/Tomcat/tomcat9 Using CATALINA_TMPDIR: /Users/wangdong/Develop/Tomcat/tomcat9/temp Using JRE_HOME: /Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home Using CLASSPATH: /Users/wangdong/Develop/Tomcat/tomcat9/bin/bootstrap.jar:/Users/wangdong/Develop/Tomcat/tomcat9/bin/tomcat-juli.jar

优秀的个人博客,低调大师

java文字识别技术(亲测,识别率很高)

java文字识别程序的关键是寻找一个可以调用的OCR引擎。tesseract-ocr就是一个这样的OCR引擎,在1985年到1995年由HP实验室开发,现在在Google。tesseract-ocr 3.0发布,支持中文。不过tesseract-ocr 3.0不是图形化界面的客户端,别人写的FreeOCR图形化客户端还不支持导入新的 3.0 traineddata。但这标志着,现在有自由的中文OCR软件了。 java中使用tesseract-ocr3.01的步骤如下: 1.下载安装tesseract-ocr-setup-3.01-1.exe(3.0以上版本才增加了中文识别) 2.在安装向导中可以选择需要下载的语言包。 3.到网上搜索下载java图形处理所需的2个包:jai_imageio-1.1-alpha.jar,swingx-1.6.1.jar 4.java程序清单: ImageIOHelper 类: importjava.awt.image.BufferedImage; importjava.io.File; importjava.io.IOException; importjava.util.Iterator; importjava.util.Locale; importjavax.imageio.IIOImage; importjavax.imageio.ImageIO; importjavax.imageio.ImageReader; importjavax.imageio.ImageWriteParam; importjavax.imageio.ImageWriter; importjavax.imageio.metadata.IIOMetadata; importjavax.imageio.stream.ImageInputStream; importjavax.imageio.stream.ImageOutputStream; importcom.sun.media.imageio.plugins.tiff.TIFFImageWriteParam; publicclassImageIOHelper{ publicstaticFilecreateImage(FileimageFile,StringimageFormat){ FiletempFile=null; try{ Iteratorreaders=ImageIO.getImageReadersByFormatName(imageFormat); ImageReaderreader=readers.next(); ImageInputStreamiis=ImageIO.createImageInputStream(imageFile); reader.setInput(iis); //Readthestreammetadata IIOMetadatastreamMetadata=reader.getStreamMetadata(); //SetupthewriteParam TIFFImageWriteParamtiffWriteParam=newTIFFImageWriteParam(Locale.CHINESE); tiffWriteParam.setCompressionMode(ImageWriteParam.MODE_DISABLED); //Gettifwriterandsetoutputtofile Iteratorwriters=ImageIO.getImageWritersByFormatName("tiff"); ImageWriterwriter=writers.next(); BufferedImagebi=reader.read(0); IIOImageimage=newIIOImage(bi,null,reader.getImageMetadata(0)); tempFile=tempImageFile(imageFile); ImageOutputStreamios=ImageIO.createImageOutputStream(tempFile); writer.setOutput(ios); writer.write(streamMetadata,image,tiffWriteParam); ios.close(); writer.dispose(); reader.dispose(); }catch(IOExceptione){ e.printStackTrace(); } returntempFile; } privatestaticFiletempImageFile(FileimageFile){ Stringpath=imageFile.getPath(); StringBufferstrB=newStringBuffer(path); strB.insert(path.lastIndexOf('.'),0); returnnewFile(strB.toString().replaceFirst("(?<=//.)(//w+)$","tif")); } } OCR 类: packagecom.hhp.util; importjava.io.BufferedReader; importjava.io.File; importjava.io.FileInputStream; importjava.io.InputStreamReader; importjava.util.ArrayList; importjava.util.List; importorg.jdesktop.swingx.util.OS; publicclassOCR{ privatefinalStringLANG_OPTION="-l";//英文字母小写l,并非数字1 privatefinalStringEOL=System.getProperty("line.separator"); privateStringtessPath="C://ProgramFiles(x86)//Tesseract-OCR"; //privateStringtessPath=newFile("tesseract").getAbsolutePath(); publicStringrecognizeText(FileimageFile,StringimageFormat)throwsException{ FiletempImage=ImageIOHelper.createImage(imageFile,imageFormat); FileoutputFile=newFile(imageFile.getParentFile(),"output"); StringBufferstrB=newStringBuffer(); Listcmd=newArrayList(); if(OS.isWindowsXP()){ cmd.add(tessPath+"//tesseract"); }elseif(OS.isLinux()){ cmd.add("tesseract"); }else{ cmd.add(tessPath+"//tesseract"); } cmd.add(""); cmd.add(outputFile.getName()); cmd.add(LANG_OPTION); cmd.add("chi_sim"); //cmd.add("eng"); ProcessBuilderpb=newProcessBuilder(); pb.directory(imageFile.getParentFile()); cmd.set(1,tempImage.getName()); pb.command(cmd); pb.redirectErrorStream(true); Processprocess=pb.start(); //tesseract.exe1.jpg1-lchi_sim intw=process.waitFor(); //删除临时正在工作文件 tempImage.delete(); if(w==0){ BufferedReaderin=newBufferedReader(newInputStreamReader(newFileInputStream(outputFile.getAbsolutePath()+".txt"),"UTF-8")); Stringstr; while((str=in.readLine())!=null){ strB.append(str).append(EOL); } in.close(); }else{ Stringmsg; switch(w){ case1: msg="Errorsaccessingfiles.Theremaybespacesinyourimage'sfilename."; break; case29: msg="Cannotrecongnizetheimageoritsselectedregion."; break; case31: msg="Unsupportedimageformat."; break; default: msg="Errorsoccurred."; } tempImage.delete(); thrownewRuntimeException(msg); } newFile(outputFile.getAbsolutePath()+".txt").delete(); returnstrB.toString(); } } 测试类TestOCR : importjava.io.File; importjava.io.IOException; importcom.hhp.util.OCR; publicclassOcrTest{ publicstaticvoidmain(String[]args){ Stringpath="C://temp//OCRcode//4.png"; System.out.println("ORCTestBegin......"); try{ StringvalCode=newOCR().recognizeText(newFile(path),"png"); System.out.println(valCode); }catch(IOExceptione){ e.printStackTrace(); }catch(Exceptione){ e.printStackTrace(); } System.out.println("ORCTestEnd......"); } } 经过测试,tesseract-ocr 3.01的文字识别率很高,对于网站中常见的验证码识别率也很高。 原文地址http://www.bieryun.com/558.html

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册