大家好,今天给各位分享javascript教程源代码的一些知识,其中也会对wireshark源代码分析进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
react源码解析
解析React源码涉及到许多复杂的细节,下面我将简要介绍React的一些关键组成部分。
1.VirtualDOM:React使用虚拟DOM来跟踪和比较界面的实际状态与新的改变,这是为了优化性能,因为操作实际DOM比操作JavaScript对象开销大得多。
2.Reconciliation:React通过对比新旧两个虚拟DOM的不同,找出应当如何最有效地更新用户界面。这个算法的复杂度是线性的,而不是传统的全面对比的二次复杂度。
3.ComponentLifecycle:React的组件生命周期方法允许在组件在创建、更新、销毁过程中的各个阶段执行特定的行为。
4.Hooks:React的hooks机制允许在函数组件中使用state和其他React特性,这使得函数组件的功能更加丰富和灵活。
5.JSX:JSX是JavaScript的语法扩展,允许直接在代码中写HTML标签,使得组件的结构更加直观。
理解这些概念需要深入阅读React的源码,而且需要有一定的JavaScript和Web开发知识。如果你对这些内容还有疑问,我建议查阅React官方文档,或者找一些专门解析React源码的博客和教程。
你在阅读js开源项目源码的时候见过哪些高级写法
你在阅读js开源项目源码的时候见过哪些高级写法?
晚上非常闲的无聊的帮组里另外一个老哥解决一个非常简单的js问题。我居然更闲的无聊的看了bootstrap源码然后转到jquery源码然后看了ace的example并且吐槽了一下ace文档实在是烂如何发现作者几年前就没有更新了,最后回过头来突然想看他ajax怎么写的,然后一脸懵逼的发现其实是dataTable的问题,查了文档解决了。事实告诉我们,不要在自己不熟悉的领域xjb解决问题,因为,你自己的bug还没修
2019年度:Webassembly,ServerLess,写个Flutter,Taro玩个小程序,学会rxjs,熟悉docker、熟悉k8s,看next.js源码,golang
js源码分析是什么
js源码就是一个立即执行匿名函数表达式,内部定义了一个vue函数对象。
如何看angularjs源代码
查看angularjs源代码方法如下
大部分JS框架的源代码都可以在Github中找到,angular.js也可以在里面查找,要想在Github中找到相应的源代码,步骤如下:
在浏览器中访问github.com
在右上角的搜索框中输入想要查找的源代码(输入angular.js),按回车搜索
在查询结果中,一般来说第一个结果就是对应的源代码(angular.js)
点进去后,可以在线查看,亦可以点击绿色下拉按钮“Cloneordownload”,用git复制地址同步源代码到本地,或者打包成zip压缩包下载都本地。
如何使用JavaScript构建一个神经网络
首先,我必须承认我不是神经网络或机器学习方面的专家。坦率的说,我仍然对大部分内容感到困惑。但希望这能够鼓励到正在读这篇文章,并急切想尝试M.L的非专家们。
机器学习会时不时地出现,我会告诉自己「是的,这很酷……但是我不确定我是否想在接下来几个月的时间里学习线性代数和微积分。」
然而,像很多的开发人员一样,我对JavaScript很感兴趣,偶尔也会寻找在JS中实现机器学习的例子,结果却发现大量的文章和StackOverflow的帖子都在告诉我们对于M.L.来说JS是多么糟糕的语言,诚然,这是事实。然后我就分心了,继续,认为他们是对的,我应该回去验证表格输入并等待CSS网格的启动。
但是后来我发现了Brain.js,这让我大吃一惊。它在哪里被藏起来了?!文档写的非常好且易于遵循,在开始大约30分钟之内,我就建立并训练了一个神经网络。事实上,如果你想直接跳过整篇文章,仅仅在Github上阅读readme(https://github.com/BrainJS/brain.js),请便。它真的很棒。
也就是说,接下来的内容不是关于深入研究神经网络的隐藏输入层、激活函数或如何使用Tensorflow的教程。相反,这是一个简单的、入门级别的关于如何实现Brain.js的解释,这有点超出了文档的范围。
OK,让我们做点什么......
以下是我们将要做的事情的概述:
1.创建你的起始文件
2.决定你想要你的神经网络做什么
3.建立Brain.js并了解如何处理训练数据和用户输入
4.收集一些训练数据
5.运行神经网络
6.利润?
如果你希望直接下载此项目的工作版本,而不是按照文章进行操作,那么你可以在这里(https://github.com/lordpoint/neural-network-author-classifier)克隆Github存储库。
1-起始文件
创建一个新目录并在其中放置一个好的ol』*index.html*样板文件。然后创建三个JS文件:*brain.js、training-data.js*和*scripts.js*(或用于默认JS文件的任何通用项),当然,将所有这些文件导入到index.html的底部文件中。
永远不要害怕看到文件结构
到目前为止都很容易。
现在,在这里(https://raw.githubusercontent.com/harthur-org/brain.js/master/browser.js)获取Brain.js的源代码。将**全部内容**复制并粘贴到空的*Brain.js*文件中,点击save和bam:完成4个文件中的2个。
2-「我的目的是什么?」
接下来是有趣的部分:决定你的机器学什么。用这样的东西可以解决无数的实际问题,例如,情感分析或图像分类等。我碰巧认为将文本作为输入的M.L.的应用程序非常有趣,因为你几乎可以在任何地方找到训练数据,并且他们有各种各样的潜在用例,所以我们将在这里使用的例子是一个处理文本分类的例子:
我们将确定一个推特是由DonaldTrump还是KimKardashian写的。
Ok,这可能不是最有用的应用程序。但是Twitter是机器学习素材的宝库,尽管它可能是无用的,但我们的推特作者识别器仍然会说明一个强大的观点。一旦它被训练完成,我们的神经网络将可以在看到**它从未看过的**推特后确定它是由DonaldTrump还是KimKardashian所写的,仅仅通过识别他们所写东西中的模式。为了做到这一点,我们将需要提供尽可能多的训练数据,以便将其复制/粘贴到我们的*training-data.js*文件中,然后我们可以看看我们是否能找到一些推特的作者。
3-建立和数据处理
现在剩下要做的就是在我们的*scripts.js*文件中建立Brain.js,并提供一些在*training-data.js*文件中的训练数据。但是在此之前,让我们从30,000英尺的角度来看一下这些将如何工作。
建立Brain.js非常简单,所以我们不会花费太多时间,但是有一些关于如何预测其输入数据被格式化的细节,我们应该先来看一下。我们先看一下文档汇中包含的建立示例(我在此略微做过修改),这些示例很好地说明了这一点:
letnet=newbrain.NeuralNetwork();
net.train([
{
Input:{r:0.03,g:0.7,b:0.5},
Output:{black:1}
},{
Input:{r:0.16,g:0.09,b:0.2},
Output:{black:1}
},{
Input:{r:0.5,b:0.5},
Output:{black:1}
}
]);
letoutput=net.run({r:1,g:0.4,b:0});
首先,上面的例子实际上是一个工作A.I(它看着给定的颜色,然后告诉你黑色文本还是白色文本在上面更清晰)。这有希望说明Brain.js是多么容易使用。只是实例化、训练、然后运行而已。我的意思是,如果你将训练数据内联,将会是3行代码。很酷。
现在让我们来谈一下训练数据。在上面的例子中,除了训练数据整体input:{},output:{}的格式,还有两个重要的事情需要注意。
首先,数据不需要长度相同。正如你在上面第11行看到的,只有一个R和B值通过,而另外两个输入通过了R、G和B的值。另外,值得一提的是,即使上面的例子将输入看作对象,你也可以使用数组。我提到这点很大程度上是因为我们将在项目中传递不同长度的数组。
第二,这些不是有效的RGB值。如果你想真的使用它们,每个都会变成黑色。这是因为输入值必须介于0和1之间才能使Brain.js和它们一起工作。因此,在上面的例子中,每种颜色都必须经过处理(可能只是经过一个将其除以255的函数进行处理——RGB的最大值)以使其工作。我们也会做同样的事情。
3.1—encode()
所以如果我们想让神经网络接受推特(即字符串)为输入,我们需要通过一个类似的函数(下面称为encode())来处理它们,这将使字符串中的每一个字符变成一个介于0和1之间的值,并将其储存在一个数组中。幸运的是,Javascript有一个将字符转化成ASCII的简单方法,叫做charCodeAt()。所以我们将使用它并将输出除以扩展的ASCII(http://www.theasciicode.com.ar/)码的最大值:255(我们用**扩展的**ASCII
码,以防遇到像**é**或**?**这样的边缘情况),这将确保我们得到的值<1。
3.2—processTrainingData()
另外,我们会将训练数据存储为纯文本,而不是我们最终将输入到人工智能的编码数据——稍后你将会为此感谢我。所以我们需要另一个函数(下面称为processTrainingData())将前面提到的编码函数应用到训练数据中,有选择地将文本转换为编码字符,并返回一组训练数据,这些数据将与Brain.js很好的工作。
Sohere』swhatallofthatcodewilllooklike(thisgoesintoyour『scripts.js』file):
所以下面是所有的代码(这会进入你的『scripts.js』文件中):
lettrainedNet;
functionencode(arg){
returnarg.split('').map(x=>(x.charCodeAt(0)/255));
}
functionprocessTrainingData(data){
returndata.map(d=>{
return{
input:encode(d.input),
output:d.output
}
})
}
functiontrain(data){
letnet=newbrain.NeuralNetwork();
net.train(processTrainingData(data));
trainedNet=net.toFunction();
console.log('Finishedtraining...');
};
functionexecute(input){
letresults=trainedNet(encode(input));
letoutput;
results.trump>results.kardashian?output='Trump':output='Kardashian';
returnoutput;
}
train(trainingData);
31行。这是非常多的。
在这里你会注意到在train()函数中的第20行有前面文档的示例中没有提到的(除了我们已经讨论过的两个辅助函数外),它将训练过的神经网络保存到一个叫trainedNet的全局变量中。这可以防止我们每次使用神经网络时不得不重新训练它们。一旦网络被训练并保存到变量中,我们可以将它称为函数,并传入编码输入(如execute()函数中的第25行)以使用A.I。
好的,所以现在你的*index.html*、*brain.js*、和*scripts.js*文件都完成了。现在我们需要的是将一些东西放入training-data.js中,准备好开始吧。
4-训练
最后,我们的训练数据。像我之前提到的,我们将所有推特存储为文本,并将它们编码为数值,这将使你在实际需要复制/粘贴训练数据时变得更加容易。没有必要的格式。只需要在文本中粘贴并添加一个新行。
consttrainingData=[
{
input:"InsideChi'snursery",
output:{kardashian:1}
},{
input:"WhyIdyedmyhairpink",
output:{kardashian:1}
},{
input:"FeelingBlue(wearing@kkwbeautypowdercontourinmedium&darkcontourkitaseyeshadow,&anewlipcomingsoon)",
output:{kardashian:1}
},{
input:"Iwillbeinterviewedby@JudgeJeanineon@FoxNewsat9:00P.M.Enjoy!",
output:{trump:1}
},{
input:"DemMemo:FBIdidnotdisclosewhotheclientswere-theClintonCampaignandtheDNC.Wow!",
output:{trump:1}
},{
input:"ThankyoutothegreatmenandwomenoftheUnitedStates@SecretServiceforajobwelldone!",
output:{trump:1}
}
]
把它添加到你的『training-data.js』文件中,你就完成了!
注意:虽然上面的例子只显示了每个人的3个样本,但我用了10个;我只是不希望这个样本占用太多空间。当然,你的神经网络的准确性会随着你提供的训练数据量的增加而成比例的增加,所以你可以随意使用比我更多或更少的数据,看看它是如何影响结果的。
5-执行
现在,运行新训练的神经网络只需要在『script.js』文件的底部额外添加一行调用execute()函数的指令,并传入一个Trump或Kardashian的推特。确保console.log,因为我们还没有建立UI。下面是一个来自KimKardashian的推特,它不在我的训练数据中(即网络之前没有见过这篇推特):
然后在本地主机上拉起index.html页面,检查console,然后......
在这里!该网络正确识别了它之前从未见过的来自KimKardashian的推特,确定性为86%。
现在让我们用Trump的推特再尝试一下:
console.log(execute("WhetherweareRepublicanorDemocrat,wemustnowfocusonstrengtheningBackgroundChecks!"));
结果是......
再一次,一个从未见过的推特。再一次,正确识别!这次有97%的确定性。
6-利润?
现在你有一个神经网络可以训练你想要的任何文本!你可以轻松地调整它来识别电子邮件或公司在线评论中的情绪,识别垃圾邮件,分类博客文章,确定信息是否紧急,或任何上千种不同的应用程序。尽管我们的推特识别器是无用的,但是它仍然说明了一个非常有趣的观点:像这样的神经网络可以执行类似根据写作方式识别作者这样的细致入微的任务。
所以,即使你不去创建一个以机器学习为动力的创新或有用的工具,这仍然是你开发工具中很好的经验。你永远不知道什么时候可能就派上用场了,甚至可能在未来开辟新的机会。
关于javascript教程源代码,wireshark源代码分析的介绍到此结束,希望对大家有所帮助。