对浏览器村的第二次采访

AI浏览器:从搜索工具到数字神经中枢的范式革命 AI浏览器不是传统浏览器的智能插件,而是基于意图识别、上下文记忆与任务执行重构的信息交互新范式。它突破关键词匹配的局限,依托本地大模型实现低延迟语义理解,将网页浏览升维为跨站点、跨应用、可执行的智能代理过程。其技术价值在于打通HTTP协议层的数据通路,赋予AI对全网内容的‘上帝视角’,支撑法律审阅、竞品比价、文献综述等高阶工作流自动化。作为当前最接近‘操作系统级AI入口’的终端形态,AI浏览器正成为知识工作者构建个人数字中枢的核心载体。 阅读详情

0?wx_fmt=png

上一次由于IE老先生太激动, 没有机会采访下Chrome和火狐, 这回我们记者再次拜访浏览器村,先找到了Chrome ,  不但做了个深度访谈,而且解决了HTTP中包裹的安全问题, 创造了一个新的包裹运输方式: HTTPS 。


没有看过上一篇文章的读者可以回复“IE打人”或者通过公共号的“热门”菜单查看

0?wx_fmt=png


0?wx_fmt=png

记者

0?wx_fmt=png

 Chrome你好, 久仰大名, 你能谈谈平时你是怎么做代理生意的吗?

我看了你上次的访谈,老IE确实也挺可怜的,其实我和IE做生意的方式差不多,只是我更快,更稳定,更安全。

0?wx_fmt=png

0?wx_fmt=jpeg

Chrome

0?wx_fmt=png

记者

0?wx_fmt=png

此话怎讲?

首先,主人每次委托我访问一个网站时, 我就会创建一个和我差不多的代理人(进程)来为主人服务,有多少个网站就有多少个代理人, 我只是居中调停, 要是某个网站崩溃了, 不会影响其他代理人。其次,我执行javascript的速度要比老IE快的多,估计你也听说过V8 引擎吧, 那速度简直是唰唰的。就是有人看到了这一点,才会把我的V8引擎放到服务器端去执行javascript ,创造了Node.js 。服务器端, 你造这意味着什么吗?

0?wx_fmt=png

0?wx_fmt=jpeg

Chrome

0?wx_fmt=png

记者

0?wx_fmt=png

不知道啊?

这意味着需要支持多用户,大并发啊 , 这足以说明我执行的速度该有多快!

0?wx_fmt=png

0?wx_fmt=jpeg

Chrome

0?wx_fmt=png

记者

0?wx_fmt=png

厉害, 上次老IE给我介绍的时候, 他说你们就是收发包裹 , 我一直有个疑问, 你们的包裹传那么远, 难道就不怕被某些居心叵测的人拆开,做点坏事吗?

你算问道点子上了, 最近闹得沸沸扬扬的运营商劫持事件不就是这样吗, 这帮家伙没有我们的允许, 强行把我们的包裹拆开, 放了大量的小广告传单, 让我们主人看的非常不爽。 可是我拿它也没办法, 因为我区分不开这些广告到底是运营商加的,还是网站本来就有。   其实小广告还能忍, 万一包裹中的用户名和密码被那些地痞流氓看到了, 主人的损失就大了去了。

0?wx_fmt=png

0?wx_fmt=jpeg

Chrome

0?wx_fmt=png

记者

0?wx_fmt=png

我倒是有一招, 把包裹放到保险柜里去!

对, 我最近也在琢磨这事儿, 保险柜上有锁, 那些人就打不开了,  可是钥匙怎么发给隔着千山万水的服务器啊,  如果通过包裹把钥匙发过去, 你知道运送包裹的路上有很多人虎视眈眈啊,  钥匙就有可能被人复制, 保险柜就没用了, 如果服务器亲自到我这儿当面取,  那这么多服务器, 这么多浏览器, 大家都得累死了。


(码农翻身注: 双方用的钥匙一样,这其实叫做对称加密和解密)

0?wx_fmt=png

0?wx_fmt=jpeg

Chrome

只听到外边有人咳嗽了一声, Chrome往窗户下一看, 老IE正蹲在那里偷听呢

 进来吧, 蹲那儿多难受。

0?wx_fmt=png

0?wx_fmt=jpeg

Chrome

老IE尴尬地笑了笑, 走进来坐下。

其实这个包裹问题我也想了很久了, 终于有了点眉目, 我们来讨论下吧,  听说过没有?最近有人发明了一个新的保险柜, 非常神奇,有两把钥匙,一把是公开的,无论是谁都可以配一把 (简称公钥), 另外一把是私有的, 必须要保管好(简称私钥)。  神奇的地方还在这儿: 如果是用公钥把保险柜锁上, 只能用私钥打开, 反之, 如果是用私钥锁保险柜,  只能用公钥打开。

(码农翻身注: 这其实叫做非对称加密, 大名鼎鼎的RSA算法。)

0?wx_fmt=png

0?wx_fmt=jpeg

IE

0?wx_fmt=png

记者

0?wx_fmt=png

确实挺神奇, 但是有啥用啊?

我也听说过, 这个保险柜的名字叫RSA , IE老先生的意思是:我们买个这样的RSA保险柜, 发包裹时, 用远程网站的公钥来锁上, 这样那些地痞流氓就无法打开了, 等到保险柜到了网站,他就可以用他的私钥打开了。

0?wx_fmt=png

0?wx_fmt=jpeg

Chrome

0?wx_fmt=png

记者

0?wx_fmt=png

 妙啊, 可是你怎么取到人家网站的公钥?

 这很简单啊, 网站发个包裹给我们不就有了嘛!

0?wx_fmt=png

0?wx_fmt=jpeg

IE

慢着, 万一这个包裹也被人拆开了呢? 他完全可以把这个公钥替换成自己的公钥,做个中间人, 模拟远程的网站,这样我们的后续包裹不还是着了流氓地痞的道了?

(码农翻身注: 这叫中间人攻击)

0?wx_fmt=png

0?wx_fmt=jpeg

Chrome

0?wx_fmt=png

记者

0?wx_fmt=png

让那个网站也把公钥放到保险柜里, 然后发过来

那就回到原始的问题了, 典型的鸡生蛋, 蛋生鸡, 谁先谁后啊

0?wx_fmt=png

0?wx_fmt=jpeg

IE

不如这样, 我们让网站从公安局申请一个特殊的身份证,里边包含公钥和他的网址, 然后通过普通包裹发给我们,  我们会向公安局查询, 看看到底是不是他。

0?wx_fmt=png

0?wx_fmt=jpeg

Chrome

0?wx_fmt=png

记者

0?wx_fmt=png

那地痞流氓还是可以改这个身份证, 把公钥给替换了啊。

你不知道, 这个身份证的特殊之处在于有个“签名”,只要改了身份证里的任何东西,哪怕是一点点,  签名就会变, 我们可以让网站用自己的私钥把签名锁到RSA保险柜里,随同包裹一并发给我们,  这样我们收到以后,我们就试试用公钥能不能打开这个柜子,  如果打不开,公钥肯定被人换了; 打开了, 我们就对比一下身份证上的最新签名和保险柜里的是不是一样, 如果不一样, 也证明身份证被人做了手脚。

0?wx_fmt=png

0?wx_fmt=jpeg

Chrome

0?wx_fmt=png

记者

0?wx_fmt=png

这真是好复杂啊, 不过好像解决了拿到网站公钥的问题, 还是你厉害,Chrome。

我忘了给你们说了, 这个RSA保险柜有个很大的问题:就是加锁和开锁特别的慢, 如果每次都用这个保险柜来发包裹,我们主人估计受不了。

0?wx_fmt=png

0?wx_fmt=jpeg

IE

0?wx_fmt=png

记者

0?wx_fmt=png

 (小声自言自语)靠, IE真是老糊涂了  ,这保险柜明明就没法用还给我们说。 

我想想, 应该还有办法, 再梳理一下现在的过程:

1. 网站给我们发身份证

2. 我们验证身份证是不是合法, 具体方法如下:

    2.1 向公安局查询

    2.2 验证网站

    2.3 用公钥打开RSA保险柜, 验证签名是否正确。

3. 如果上面的都通过,我们就确认公钥没有问题 。

0?wx_fmt=png

0?wx_fmt=jpeg

Chrome

 我想到了! 以后我们就可以用普通的钥匙和普通的包裹了, 像这样

1. 我们创建一把普通钥匙, 再配一把, 然后把它放到RSA保险柜, 用刚刚验证过的公钥锁上

2. 网站用私钥把RSA保险柜打开,  拿到普通钥匙

3. 从此以后,我们就用普通的钥匙和普通的保险柜来运送包裹了, 这样速度就快多了吗?

0?wx_fmt=png

0?wx_fmt=jpeg

IE

0?wx_fmt=png

记者

0?wx_fmt=png

 妙啊, 老先生, 我们搞了这么多,其实就是为了把一把普通的钥匙发给网站啊,   看来你是宝刀不老啊。

 过奖过奖。

0?wx_fmt=png

0?wx_fmt=jpeg

IE

 我们就把它称为 HTTPS (HTTP over Secure Socket Layer) 吧, 以后如果哪个网站不用https , 我就给主人提示, 主人确认了, 我才去访问。

我们google 也会把我们的所有的网站都改成https。 

0?wx_fmt=png

0?wx_fmt=jpeg

Chrome

我们微软也改。

0?wx_fmt=png

0?wx_fmt=jpeg

IE

码农翻身注: 

RSA算法: RSA公钥加密算法由三位在麻省理工的科学家提出,RSA就是他们三人姓氏开头字母拼在一起组成的。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难, 大家可以自行搜索更多细节。


特殊的身份证:其实就是网站的证书。


公安局:就是证书的颁发机构。


签名: 签名就是对内容做一个Hash操作,特点是单向的, 不可逆的, 不能从签名还原内容。


声明:原创文章,版权所有,未经授权,不得转载。


0?wx_fmt=jpeg

公众号:码农翻身

“码农翻身”公众号由工作15年的前IBM架构师创建,分享编程和职场的经验教训。

/home 挂载点无法访问 怎么解决 指令可以进入Home目录 du: 无法访问“*“: 输入/输出错误 本文介绍了Linux系统中XFS文件系统损坏的故障排查与修复方法。当/home挂载点出现I/O错误时,通过dmesg发现XFS日志错误和磁盘I/O报错,判断可能是文件系统逻辑损坏或硬件故障。解决方案包括:1)尝试卸载分区;2)使用xfs_repair工具进行预检查和正式修复;3)在极端情况下使用-L参数强制清空日志;4)若存在硬件故障,建议优先进行数据抢救并更换硬盘。最后强调重要数据应先备份,再考虑系统重建。 阅读详情

相关推荐

什么是深度展开网络?如何将迭代算法的每一次迭代展开成深度网络对应的一层?深度展开网络进行端对端训练,其中端对端是什么意思?

在深度学习和机器学习的背景下,“端到端”(End-to-end)训练指的是将输入数据直接映射到最终输出的过程,而不需要任何中间的手动数据预处理或特征工程。- **自然语言处理**:端到端自然语言处理系统可以将自然语言输入直接转化为计算机可理解的语言输出,而不需要对语言进行分解和转化。- **推荐系统**:通过使用深度神经网络,端到端推荐系统可以直接根据用户历史行为预测其未来的兴趣爱好,并推荐相应的产品或服务。4. **直接映射**:从输入到输出的直接映射,中间没有任何拆分或分解的过程。

m0_67897882的博客 5433

第二次作业 APP分析

第一部分 调研, 评测 1.下载软件并使用。 今天我要分析的软件app是UC浏览器这个软件,UC浏览器的用户群体还是挺多的,作为一款主流之一的浏览器APP,整体的用户体验还是很好的。简洁的界面还有中间的常用应用的标签,用户可以吧自己经常浏览使用的网页放在那里。每天的头条新闻可以让用户更好的了解每天的重要新闻。而且对新闻进行了分类。底下的设置选项也是简洁易懂。 上图: ...

weixin_30929011的博客 269

智能车数字图像处理算法入门及C语言实现

智能车图像的最最基本入门算法介绍及C语言实现,二值化 - 特征识别 - 补线 - 中心巡线 - 偏差曲率计算。

不想随波逐流的大学生一枚,我们每个人都在努力奔跑 5110

第二次结对编程之必应缤纷桌面软件测试(谢永青,李嘉良)

必应缤纷桌面测试报告     报告人员:10061152----李嘉良, 10061183----谢永青 软件名称: 必应缤纷桌面 (http://desktop.bing.msn.cn/) 测试环境: 第一部分:按照教程描述的 bug 定义, 找出一个功能性的比较严重的 bug bug1:软件不能缩小到托盘,必须在任务栏中呈现。这个会对用户的任务管理造成一定程度上的不适应...

weixin_33895604的博客 1309

DC-DC 转换器中的压电谐振器:当前状态和限制

在功率转换器应用中,居里温度较低的谐振器的 k 2和 Q M显着降低会导致效率降低,需要仔细的热处理。由于使用 PR 的功率转换器在不同的条件下运行,包括温度范围、电压偏置和功率电平,因此不可避免地会出现非线性效应,必须妥善解决这一问题,以免影响转换器的性能。等效电路模型(Butterworth Van-Dyke 或 BVD 模型)将压电谐振器在其机械谐振附近的电响应转换为一个简单电路,该电路由与由电极形成的输入电容 C 0并联的串联 RLC 动分支组成,见图图 1 还显示了阻抗与频率的关系。

2301_79716471的博客 1297

qcc304x笔记之手机端显示电量(九)

默认的sdk有些安卓手机不支持电量显示,所以需要加电量显示的补丁 流程分析 1. 首先新建一个task,并将task注册给电池模块 appBatteryRegister(batteryRegistrationForm) 实现handler处理函数,当battery模块电池电量更新后,会将电池百分比值发送到本模块,然后我们就可以在handler中将实时电量同步到手机端了。 hfpAtCmdInit atCmdTask.task.handler = appAtCmdHandleM...

在云巅的博客 2201

Windows Phone 7 第二次更新细节将于二月 MWC 2011 上宣布

知情人士向 Tom Warren 透露,微软已选择明年二月中旬的 MWC 2011(即移动世界大会)上作为其宣布 Windows Phone 7 第二次更新的时间。 WP7 的第二波更新将会增强开发者对应用的控制、允许多任务的新 API 、应用内下载和更出色的用户端自定义选项。微软目前已经编译了第二波更新的 Beta 版本,并分发给了部分外部测试者。其中一位测试者称“该更新...

weixin_33936401的博客 81

【异常】Python环境中没有安装 `openpyxl` 模块提示ModuleNotFoundError: No module named ‘openpyxl‘

是一个用于读写Excel 2010 xlsx/xlsm/xltx/xltm文件的库。只是示例版本号,你可以根据需要选择不同的版本。安装完成后,再次尝试运行你的程序,应该就不会再出现。,这表明你的Python环境中缺少。运行一个Python程序时遇到了。如果由于某些原因你无法直接使用。,你可以指定版本号来安装,这里。要解决这个问题,你需要安装。

奶爸的编程之路,也就一周冷个三天 3398

海豚浏览器获高通战略投资 反攻国内市场第二波

10:00更新:海豚浏览器今日上午已正式对外宣布获得高通战略投资。 9月5日,海豚浏览器已获得新投资,由高通完成。百纳信息和高通两方都已确认了这一消息。而也在近日,海豚浏览器更新新版,对国内市场发起第二波反攻,盈利模式更加清晰。 高通为何投资? 去年7月,海豚浏览器曾获经纬创投和红杉资本的A轮千万美元投资。在昨日的中国移动互联网投资大会期间,高通风险投资中国部总经理沈劲在接受搜狐的采访时,确

lksodit_yiyi的专栏 7132

【系统安全】Windows内核权限提升漏洞(CVE-2024-30088)

CVE-2024-30088是Windows内核提权漏洞,由越南安全研究员@Bùi Quang Hiếu详细分析。漏洞发生在AuthzBasepCopyoutInternalSecurityAttributes函数中,该函数在复制SecurityAttributesList时会使用用户提供的指针,在校验及复制期间存在时间差,导致存在TOCTOU漏洞。

李同學AI安全 1325

UniApp 覆盖安装后首次进入 APP pages.json 不生效的解决方案

通过以上步骤,解决了缓存问题导致的首次加载异常。此方案的关键在于强制更新文件名,从根本上避免旧缓存的干扰。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 683

第二次作业——App案例分析

第一部分 调研, 评测 下载软件并使用起来,描述最简单直观的个人第一次上手体验。 我选择的应用是chrome浏览器。之所以选择分析它,是因为我用的时间较长,对功能比较熟悉。 chrome浏览器提供了应用商店,用户可以方便的安装各种扩展程序极大的增强了浏览器的功能 按照《构建之法》13.1节描述的 bug 定义, 找出几个功能性的比较严重的 bug。 ...

weixin_34253539的博客 304

【DRAM存储器四十三】LPDDR5介绍--寻址

简要说明LPDDR5 X16、x8 die的寻址

highman110的博客 969

第二次作业

关于微信开发者工具的分析 导语:作为一个微信公众号的前端开发者,微信开发者工具是一个必备的调试具(只有这个软件能调试我也很绝望),今天就来分析一下这个软件。 一、调研,评测 1.下载软件并使用起来,描述最简单直观的个人第一次上手体验。 第一次上手感觉这就是微信开发的救星啊哥,没有了它我对调试根本无能为力啊!!! a.打开软件后会让你选择开发项目的类型:小程序还有公众号,根据自己的需要选择...

weixin_30596023的博客 199

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

第二次作业(个人作业):软件案例分析

软件工程第二次作业——软件案例分析(C笔记)

ayaoyoehei的博客 314

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

软工第二次博客作业-软件案例分析

可复现性:大概率发生,只要对应知识点有大于一道练习题时就会发生。具体复现步骤:进入技能树主页,点击左部某个知识点。具体情况描述:如下图,中部有三道练习题,每道练习题右侧对应一个图标。而靠上练习题的图标与其他题相比,存在明显的向左偏移。bug可能成因:顶部练习题与其它位置的练习题之间横向约束关系不一致。bug的严重性:🐛。不影响功能,但很影响逼格。bug改进建议:在前端统一所有练习题横向的几何约束关系。

weixin_51932821的博客 424

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

第二次结对编程之软件测试

必应缤纷桌面测试报告     报告人员:10061152----李嘉良, 10061183----谢永青 软件名称: 必应缤纷桌面 (http://desktop.bing.msn.cn/) 测试环境: 第一部分:按照教程描述的 bug 定义, 找出一个功能性的比较严重的 bug bug1:软件不能缩小到托盘,必须在任务栏中呈现。这个会对用户的任务管理造成一定程度上的不适应...

weixin_34405557的博客 317

第二次作业:微信案例分析

1、写在前面   自2011年1月微信发布之后,它迅速抢占市场。发展至今,几乎每一部智能手机都安装了微信,据不完全统计,微信全球月活跃用户总数达到了9.38亿,这一恐怖的数字让它成为手机APP“扛把子”。今天,我想浅谈一下微信,做一个案例分析。 2、作业内容 2.1、介绍产品相关信息 你的产品是什么?     支付宝 为什么选择该产品作为分析?     因为我自己很喜...

weixin_33709609的博客 689

软件工程实践——软件评测

这个作业属于哪个课程 2022年福大-软件工程、实践-W班社区-优快云社区云 这个作业要求在哪里 软件工程实践——软件评测-优快云社区 这个作业的目标 通过各种案例分析,评测,思辨,总结 其他参考文献 GitCode GitHub Gitee 文章目录第一部分 调研,评测1.用户采访2. Gitcode介绍该软件体验(优缺点分析和改进意见)BUG结论3. Github介绍该软件体验(优缺点分析和改进意见)BUG结论4. Gitee介绍该软件体验(优缺点分析和改进意见)BUG结...

Kedar的博客 3089

Qwen3-ForcedAligner-0.6B多输入模式:文件上传+浏览器实时录音双通道实测

本文介绍了如何在星图GPU平台自动化部署Qwen3-ForcedAligner-0.6B镜像,实现高效语音转文字及时间戳对齐。该工具支持文件上传和实时录音双输入模式,可快速生成带精确时间戳的转录文本,适用于视频字幕制作、会议记录整理等场景,提升音频处理效率。

weixin_35815766的博客 232

Akamai首席架构师Will:WebRTC、QUIC、DASH、AV1都前景可观

William Robert Law是Akamai媒体业务群的首席架构师,自从去年邀请他参加LiveVideoStackCon 2017后,我们就亲切的称他Will。在对...

LiveVideoStack 2694

Zoe Liu:传统算法与深度学习各有所长

第一次MSU视频编码大赛就取得了“主观评分”第一,微帧团队到底做了哪些创新的尝试?深度学习真的是编解码的未来吗?LiveVideoStack通过邮件采访了微帧联合创始人Zoe Liu,向...

LiveVideoStack 2434

Https是如何保证安全的

什么是HttpsHTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL, 简单点也是Https = Http + 加密 + 认证 + 完整性保护Https的过程 服务器需要把自己的公开密钥

每天进步一点点 1257

《码农翻身》

大话编程 我是一个线程 我是一个Java class Javascript: 一个屌丝的逆袭 Java:一个帝国的诞生 JSP:一个装配工的没落 TCP/IP 之 大明王朝的邮差 TCP/IP 之 大明内阁 TCP/IP 之 蓟辽督师 CPU 阿甘 CPU 阿甘之烦恼 CPU 阿甘:函数调用的秘密 我是一个网卡 我是一个路由器 我是一个进程 我是一块硬盘(上) 我...

风不止步的博客 8739
上一篇: 学会编程, 而不是学会Java
下一篇: 我的编程之路--大学趣事
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值