- 博客(264)
- 资源 (1)
- 收藏
- 关注
原创 用nodejs连接mongodb数据库对标题和内容的全文本搜索,mogogdb对文档的全文本索引的设置以及用node-rs/jieba对标题和内容的分词
/首先我们要在Nodejs中安装 我们的分词库@node-rs/jieba,这个分词不像jieba安装时会踩非常多的雷,而且一半的机率都是安装失败,node-rs/jieba比jieba库要快20-30%;在window打开cmd运行showSearch.js,然后在浏览器中输入http://localhost:3000/show 则会显示出搜索结果。对于在Mongodb中设置全文本索引,比如上面代码中的title,content。第二个为搜索代码,对标题和内容进行全文搜索search.js。
2025-04-03 22:28:17
365
原创 crypto 自己写的cipher加密chacha20-poly1305算法最优化增强性能,不用时间戳匹配
动态 nonce 的主要目的是确保每次加密时使用的 nonce 都是唯一的,从而防止重放攻击(replay attacks)和确保加密的随机性。在你的原始代码中,nonce 的前 8 字节是基于时间戳和随机偏移生成的,后 4 字节是随机填充的。加密时:仍然生成动态 nonce(前 8 字节基于时间戳 + 随机偏移,后 4 字节随机填充)。安全性:修改后的代码仍然保持了动态 nonce 的唯一性和随机性,因此安全性没有降低。重放攻击防护:由于 nonce 仍然是动态生成的,重放攻击的风险仍然被有效避免。
2025-03-08 03:57:12
133
原创 nodejs用ws模块反向代理socks5数据,即用ws写服务端和客户端及加密
首先思路是客户端发送socks5请求数据——>服务端解密并解析socks5数据是否为真,解析出Host和port,并用net.socket访问目标网站,目标网站返回数据,服务端再用ws发送返回数据给客户端。) 捕获请求,并通过 targetSocket.write(data) 将请求转发给 baidu.com。) 捕获数据,并通过 targetSocket.write(data) 将数据转发给目标服务器。) 捕获数据,并通过 ws.send(data) 将数据转发给客户端。
2025-02-26 22:22:50
839
原创 websocket服务端对客户的数据的FIN,mask,大端序payload数据复制以及解码,WS写浏览器端和cmd客户端模拟掩码发送文本、二进制、ping的方法
如果 self._processBuffer() 返回 false,表示当前缓冲区中的数据不足以解析一个完整的帧,循环会结束,等待更多数据。self._processBuffer() 是一个方法,用于从 self.buffer 中解析出完整的 WebSocket 帧。如果 self._processBuffer() 返回 true,表示成功解析了一个完整的帧,并可以继续解析下一个帧。如果添加了额外的逻辑,确保代码结构清晰,避免将 self._processBuffer() 的逻辑与其它逻辑混在一起。
2025-02-19 22:33:24
685
原创 模拟一个 WebSocket 数据帧,使用 masked() 函数对数据进行掩码处理,然后将掩码后的数据传递给 processBuf() 函数,以验证它是否正确解析和解码数据。
/理解了上面的创建FIN,MASK和数据的关系,我们就可以着手模拟创建一个 WebSocket 数据帧,包含掩码和掩码后的数据。createWebSocketFrame() 函数:用于模拟创建一个 WebSocket 数据帧,包含掩码和掩码后的数据。//最后是掩码函数和解码函数,就不多做介绍,可以搜我的文章有掩码和解码的具体过程。processBuffer() 函数会解析数据帧并输出解码后的数据。unmask() 函数:用于对掩码后的数据进行解掩码处理。//解码processBuffer()函数。
2025-02-16 23:08:56
210
原创 websocket服务器端对于websocket协议中FIN 位、操作码、Mask 位、长度字段、Payload 复制数据到 Buffer 中的测试
例如,当长度为65536(0x00010000),用writeUInt32BE(0,2)和writeUInt32BE(length,6),那么第2到5字节是0,第6到9字节是0x00010000,这样整个长度是0x0000000000010000,即65536,是正确的。需要注意的是,对于超过32位的情况,代码可能存在错误。测试长度超过65535的情况,这时候应使用八个字节的长度,并且前四个字节可能为0(因为JavaScript的Buffer最大长度可能受限制,但假设这里处理的是大端序的64位长度)。
2025-02-15 02:49:25
745
原创 bind绑定类,使this在上下文章中指向类,然后利用debug绑定类中的方法输出缓存中的日志
这段代码实现了一个 带缓冲功能的日志记录器,主要功能是将日志暂存到缓冲区,最后统一格式化输出。bind 的作用:确保 logger.log 和 logger.printOutput 方法中的 this 始终指向 logger 实例。作用:定义一个空函数,用于在日志未启用时作为 printOutput 的占位符,避免调用时报错。看起来这是一个用于缓冲日志记录的模块,使用。接下来,我需要详细解释代码的每个部分,指出可能的问题,并说明其工作原理。库来记录日志,但添加了缓冲的功能,允许在适当的时候输出所有日志。
2025-02-06 00:43:04
1115
原创 WebSocket协议里客户端发送给服务器的数据会用4字节的掩码循环异或的分析
但在WebSocket协议的上下文中,maskBytes应该是4个字节的数组,每个元素是0-255的整数,因此这种情况应由上层输入验证处理,而不是在unmask函数中处理。但根据WebSocket协议,服务器在接收到客户端消息时,掩码必须是4字节,因此在正确的实现中,调用unmask函数之前,应该已经验证了maskBytes的长度为4。此外,可能需要测试掩码中的某些字节为0的情况,例如掩码中间有零,但之前的测试用例已经覆盖了全零的情况,可能不需要特别测试。:对于大数据量的处理,是否有效率问题?
2025-02-06 00:10:06
1007
原创 nodejs后端ws与http结合共享一个服务器,前端websocket发送信息后端ws接收信息,使用Map定型数组设置ID
【代码】nodejs后端ws与http结合共享一个服务器,前端websocket发送信息后端ws接收信息,使用Map定型数组设置ID。
2025-01-15 00:47:49
505
原创 nodejs利用net|http|cluster模块将net.socket客户端的请求发送到net服务器,net服务器将信息转发到http服务器上,客户访问浏览器访问
/子进程处理模块文件child9401.js。//net模块客户端请求代码。//app.js文件。
2025-01-12 22:28:18
186
原创 Nodejs利用net和cluster模块主进程将socket对象传递给子进程中运行返回消息
/客户端 client.js。主进程代码app.js。
2025-01-12 20:42:02
189
原创 nodejs创建ws服务器,前端浏览器用websocket接收信息和发送信息给服务端
/html文件,index.html。//创建前端的websocket文件。首页是用nodejs建立服务器端。//向服务端发送信息。
2024-12-24 20:51:03
559
原创 在window环境下安装openssl生成钥私、证书和签名,nodejs利用express实现ssl的https访问和测试
现在我们在window环境下打开node-ssl-server文件夹就可以看到一个package.json文件,在scripts{}中添加"start":“node index.js”要创建一个新的 Express 项目,让我们创建一个名为node-ssl -server 的目录,用终端cmd中进入node-ssl-server目录。由于我们是自己的颁发证书,因此我们需要使用 CSR 来生成我们的证书。现在进行最后的步骤,我们需要使用key.pem和csr.pem文件来生成我们的 SSL 证书。
2024-12-17 22:03:28
1066
原创 nodejs建立TCP服务器端和TCP客户端之间的连接
TCP服务器端,看名字也知道是建立在服务器上面的。//下面是客户端,也是放在机子上的,比如VPS。
2024-11-29 23:16:13
695
原创 nodejs第三方库sharp对图片的操作生成新图片、压缩、添加文字水印及图片水印等
Sharp是一个基于libvips的高性能Node.js图像处理库,它提供了广泛的功能,包括调整大小、裁剪、旋转、格式转换等。text-to-svg将文本转换为SVG路径,而无需本地依赖,相关用法及说明看https://www.npmjs.com/package/text-to-svg。以及安装:npm install --save text-to-svg。相关说明及用法看:https://sharp.nodejs.cn/安装:Sharp:npm install sharp。
2024-11-26 23:07:39
638
原创 virtualBox建立虚拟机安装centos7.9的设置与换源后才可用yum,及共享目录设置的报错的处理方法
查看共享盘下面没有文件,如果你D盘的文件在centos7.9的/usr/local/xuenodejs/文件夹里面显示,说明挂载成功,如果没有说明失败;/mnt/cdrom 是你刚刚创建并挂载ISO文件的目录,这条命令将你的当前工作目录切换到这个目录。/mnt/cdrom 是你想要创建的目录路径,这里用作挂载点,即ISO文件将被挂载到这个目录。/dev/cdrom 是Linux系统中的虚拟光驱设备文件,代表插入的ISO文件。/mnt/cdrom 是挂载点,即你想要挂载 /dev/cdrom 设备的位置。
2024-11-20 00:57:36
938
原创 在 Service Worker 中caches.put() 和 caches.add()/caches.addAll() 方法他们之间的区别
在 Service Worker 中,caches.put(request, response) 和 caches.add(request)/caches.addAll(requests) 方法都用于将资源添加到缓存中,但它们的使用场景和目的略有不同。它允许你在捕获到网络请求并从网络获取资源后,将这些资源存储到缓存中,以便后续的请求可以直接从缓存中获取。预先缓存:这些方法用于在 Service Worker 安装时预先缓存资源,这样在页面加载时可以直接从缓存中获取这些资源,而不需要等待网络请求。
2024-11-13 03:10:37
580
原创 利用服务工作线程serviceWorker缓存静态文件css,html,js,图片等的方法,以及更新和删除及版本控制
新的 Service Worker 将会注册,并且 install 事件将会使用新的缓存名称来缓存资源——>这句话的意思就是让你关闭测试中的页面,重新再打开,不然,看不到修改后的页面,因为是缓存页面;2、编写 Service Worker 脚本 (serviceWorker.js): 在 Service Worker 中,你可以监听 install 事件来缓存资源,以及 fetch 事件来拦截网络请求并提供缓存的资源。//如果你要删除所有已经注册的生效的service worker,可以用下面的。
2024-11-12 21:11:29
709
原创 服务工作者线程serviceworker简单开启
/这里返回的期约是navigatorWorkerRegistration对象。//注册服务工作线程;scope表示手动指定作用域范围。//子线程navigatorWorker.js。'service worker注册失败'简单开启服务工作线程是怎么开启的。
2024-11-10 21:18:08
244
原创 专用工作者线程worker加载模块方法,import引入和importscirpt引入
在 Web Workers 中加载其他脚本,通常有两种方式:使用 importScripts() 方法和使用 ES6 模块的 import 语法。全局作用域:通过 importScripts() 加载的脚本中的变量和函数会成为 Worker 的全局作用域的一部分。作用域:importScripts() 加载的脚本共享全局作用域,而 import 导入的模块有自己的作用域。加载方式:importScripts() 是同步的,而 import 是异步的。现代语法:使用 ES6 模块语法,支持模块化开发。
2024-11-09 22:39:40
1087
原创 sharedWorker共享工作线程,两个不同页面或不同窗口之间传递信息
下面是一个简单的示例,展示了如何在主线程和 SharedWorker 之间相互传递信息,以及如何在两个不同的主线程(比如两个不同的网页或者同一个网页的两个不同窗口)之间通过 SharedWorker 传递信息。点击你想要检查的 SharedWorker 实例旁边的 “inspect” 链接,这将打开一个新的开发者工具窗口,其中包含了 SharedWorker 的控制台输出。在 Chrome 浏览器地址栏输入 chrome://inspect,进入 Chrome 的开发者工具界面。//接收子线程返回的数据。
2024-11-08 20:08:36
536
原创 webassembly.instance()调用模块中的函数及webassembly.Module.exports()查看模块中的成员或函数信息
/把 WebAssembly 二进制代码编译为一个 WebAssembly.Module ,不进行实例化。//实例化模块方法并调用其中的add()方法,当然也可以调用其它的方法。有时候我们需要查看wasm模块中的成员信息及对其调用方法。//查看模块中的所有被导出的方法信息。//导出模块中的所有导出成员或方法。//返回模块中的二进制文件。
2024-11-03 19:59:15
327
原创 测试webAssembly.module导出模式中所有函数用worker传递函数并调用
/第二种方法,先读取wasm中的内容,再获取内存当中的二进制文件,然后用webassembly.module()方法获取二进制文件的模块。//这里有两种方法来实现发送wasm中模块,第一种方法用webAssembly.compileStreaming()流文件方式。//这里是html文件,worker调用webassmblyModule.js文件,在线程中执行js文件。当然这里的wat要转换成wasm才能被javascript调用。//主线程执行js文件。
2024-11-03 02:01:53
393
原创 window制作WebAssembly(Wasm)模块,编译C/C++/Rust等语言,为javascript使用的方法,及相关的工具如Cmake,git,wabt的正确安装和配置
1、安装CMake可以从CMake官网下载并安装。记得要设置环境变量,在系统设置里面,如在D盘:D:\cmake\bin2、安装MinGW很多介绍都是在MinGW官网里面下面安装,但现在的官网改版非常快,那些指定的页面里根本找不到要下载的版本特别是window需要的版本已经移至这个网站:https://winlibs.com/只需要进这个网站下载64位的with POSIX threads的 7-Zip archive即可;
2024-10-30 02:52:13
1320
原创 javascript工作线程worker对内传递参数;和计算对外输出以用使用方法
/同样是emptyWorker.js。//显示结果,并在外部给内部的函数赋值。//给线程内部的函数赋值,以对象形式。//获取信息,显示最终计算的值。这里是给线程内部的函数参数赋值。在工作线程内部计算后输出数据。//创建worker线程文件。
2024-10-19 00:13:35
302
2
原创 javascript异步动态加载模块,导出和导入代码
异步动态导入模块中的代码是ES6中使用模块化的方法,方便按需加载模块。//这是模块(exportModule.js)有两个函数被导出。//然后在html代码中动态导入并运行。//异步动态导入模块代码,返回的是期约。
2024-10-16 21:52:50
296
原创 利用sessionStorage收集用户访问信息,然后传递给后端
/计算加载页面共用时间;//现实生成过程过应该是以用户关闭页面;然后把收集数据传递给后端,用unload事件完成。//这里是加载完成各类要素如:CSS、图片、javascript等。//将收集所有数据,存储进frondEndData对象中。//这里是以点击按钮,然后把数据传递给后端;//停留时间,每秒种seconds增加1。//页面加载完成后,收集用户信息。//利用fetch传递给后端。//转换为json格式。'连接服务器发生错误'//访问的日期和时间。//取消停留时间变量。//将停留计时器删除。
2024-10-12 16:44:45
1258
原创 后端输出二进制数据,前端fetch接受二进制数据,并转化为字符输出
在这个前端代码中,我们使用fetch API请求PHP脚本,并获取二进制数据。然后,我们将ArrayBuffer转换为字符串,以便在JavaScript中使用。在PHP中,你可以将字符串或其他数据类型转换为二进制数据,并通过HTTP响应发送给前端。
2024-09-01 02:07:48
841
原创 使用 fetch() 函数和 Response 对象的示例,创建一个新的 Response 对象来模拟一个自定义响应
请注意,这个示例中的 newResponse.json() 是为了演示如何使用 Response 对象。在实际应用中,通常不需要手动解析 Response 对象中的JSON,因为 fetch() 已经为我们处理了这一步。然后,我们创建一个新的 Response 对象 newResponse,其中包含自定义的JSON字符串和一些自定义的响应头。这个新的 Response 对象具有200状态码和"OK"状态信息。最后,我们解析这个新的 Response 对象中的JSON数据,并在控制台中打印出来。
2024-08-30 22:53:46
548
原创 javascript用weakmap绑定节点的元数据
4、定制行为:元数据可以用来存储配置信息,这些信息可以用来定制节点的行为,例如在不同的条件下应用不同的逻辑。10、数据绑定:在数据绑定的场景中,元数据可以用于存储绑定的详细信息,比如数据的来源和更新机制。2、状态管理:在复杂的应用中,节点的状态可能需要被追踪和管理,元数据可以用来存储这些状态信息。1、数据封装:元数据可以帮助封装节点相关的信息,使得这些信息可以随着节点一起被操作和传递。6、交互性:在用户界面编程中,元数据可以用来存储与用户交互相关的信息,比如按钮的点击状态。将这段js代码插入前端页面中。
2024-08-26 21:19:51
373
原创 yield生成器生成表单字段,并进行验证,利用fetch方法和formData对象传递数据给后端,后端返回成功,返回数据
验证通过后,利用fetch异步传递方法将formdata数据传给后端;后端再进行验证返回数据。这里主要利用生成器函数生成配置的表单字段;验证用户填写的数据信息;后端代码formfieldgenerator.php。formfieldgenerator.js文件。//有端index.html。
2024-08-21 01:50:34
483
原创 用生成器函数生成表单各字段
生成器函数生成表单字段是非常合适的用法,避免你要用纯javascript做后台时频繁的制作表单,而不能重复利用。//这里是javascript部分,formfiled.js。//前端生成表单index.html。
2024-08-18 21:33:27
325
原创 fetch跨域请求数据的前端设置和后端php的header设置
跨源请求,也称为CORS(Cross-Origin Resource Sharing)请求,是Web开发中常见的一种需求,允许一个网页的JavaScript代码向与该网页不同源的服务器发出HTTP请求。// 允许的HTTP方法这几种。这里做测试的是前端http://127.0.0.1:5500/fetchcors.html。
2024-08-14 22:26:05
826
原创 fetch测试用get方法发送数据和获取后端数据
前端fetchget.html把我们想要发送的数据以get的形式发到后端;如:foo=bar&baz=que格式的数据发送给后端。//这里是后端处理数据和返回数据。
2024-08-13 15:52:19
725
原创 jsonp跨域传递数据,前端回调后端的数据进行处理
这里的前端http://127.0.0.1:5500/jsonp.html。后端:http://xuejs.xyz/jsonp.php。回调:是在页面接收到响应之后应该调用的函数。jsonp格式包含两个部分:回调和数据;数据:作为参数传给回调函数的JSON数据。
2024-08-11 00:25:25
337
原创 利用formdata自动序列化和xhr上传表单到后端
/FormData对象是XMLHTTPRequest level2新增的类型,它可以自动序列化表单内容,不再需要我们去写序列化表单方法;FormData()即可以直接把整个表单给它,也可以分别使用append(‘字段’,‘值’)方法给FormData();现在就结合xhr写一个简单示例,怎么把表单传递给后端。
2024-08-09 21:54:00
383
javascript+php原生态写的上传文件,可多选文件,解决formdata()后端只接到一个图片和图片中有恶意代码的问题
2023-10-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人