バッファーとは何ですか? Nodejs のバッファー モジュールの詳細については、こちらをご覧ください。
バッファとは何ですか?次の記事では、Nodejs のバッファー モジュールを深く理解し、バッファーの作成、コピー、スプライシング、インターセプト、バッファーへの充填、およびバッファーと文字列の変換の方法を紹介します。みんなの役に立ちますように!
#1.バッファとは何ですか?
JS には文字列、配列、数値、ブール値などを操作するためのメソッド API が対応していますが、Node ではファイル操作、ネットワーク通信、データベース操作、データ送信も必要であることがわかっています。機能; ファイルはストレージ レベルでバイナリ形式で表現され、http リクエストと応答でのデータ送信もバイナリ データで送信されるため、現在の JS 機能だけでは十分ではありません。そのため、Node## バッファ モジュールが必要です。 #で提供されます。
つまり、NodeJS に文字列などのバイナリ データを操作する機能を与えます。バッファは、一時記憶領域とも呼ばれ、入出力バイナリ データを一時的に保存するメモリのセクションです。
Nodejsのコアモジュールについて話します:ストリームモジュール(使用方法を参照)では、大きなファイルを読み取る場合、一般にメモリには読み込まれないことを学びました。データブロックは一度に読み取られますが、データブロックはストリームの形式で読み取られ、連続したデータブロックはデータストリームの概念を形成します。データ ブロックの読み取りおよび書き込みのプロセス中、データはまず buffer (一時バッファ領域) のメモリに保存されて処理されます。
#1.1 バッファ メモリ割り当てを理解する
#バッファ オブジェクトのメモリ割り当ては、V8 のヒープ メモリではなく、C で行われます。ノードのレベルでメモリ アプリケーションを実装します。アプリケーションを効率的に使用してメモリを取得するために、ノードはスラブ割り当てメカニズム (動的メモリ管理メカニズム) を採用します。1. 2 バッファのグローバルな性質
プロセスの開始時にノードはすでにバッファをメモリにインストールし、バッファをメモリに配置します。グローバル オブジェクトは、使用時に require なしで導入できますが、import または require ステートメントを通じて明示的に参照することが公式に推奨されています。2. バッファの作成
ファイルの読み取りと http リクエストの取得に加えて、バッファ インスタンスを手動で構築および作成することもできます。2.1 Buffer.alloc(size[, fill[, encoding]])
パラメータ:- size: バッファ長
- fill: 事前に入力された値、デフォルト値: 0
- encoding: fill が文字列の場合、文字列のエンコーディングです、デフォルト: utf-8
import { Buffer } from 'buffer'; const buf = Buffer.alloc(8); console.log(buf); // <Buffer 00 00 00 00 00 00 00 00>
ログイン後にコピー
2.2 Buffer.allocUnsafe(size)
パラメータ:- size: 必要な長さ新しいバッファ この方法で作成されたバッファ インスタンスの基礎となるメモリは初期化されません。新しく作成されたバッファの内容は不明であり、機密データが含まれている可能性があります。
import { Buffer } from 'buffer'; const buf = Buffer.allocUnsafe(8); console.log(buf); // <Buffer e8 bf 99 e6 98 af e4 b8 80 e6>
2.3 Buffer.from(string[, encoding])
受信文字列を含む新しいバッファを作成しますパラメータ:
- string: 文字列 encoding: エンコーディング、デフォルト値: utf-8
import { Buffer } from 'buffer'; const buf = Buffer.from('hello buffer'); console.log(buf); // <Buffer 68 65 6c 6c 6f 20 62 75 66 66 65 72>
2.4 Buffer.from(array)
0 –
255
array の範囲のバイトを使用して、新しい ## を割り当てます#バッファ###。
import { Buffer } from 'buffer'; const array = [0x62, 0x78, 0x84]; const buf = Buffer.from(array); console.log(buf); // <Buffer 62 78 84>
3. バッファのコピー3.1 Buffer.from(buffer)
パラメータ:
buffer、コピーされるバッファ インスタンス
import { Buffer } from 'buffer'; // 新建 const buf1 = Buffer.alloc(10, 2); // 复制 const buf2 = Buffer.from(buf1); console.log(buf1); // <Buffer 02 02 02 02 02 02 02 02 02 02> console.log(buf2); // <Buffer 02 02 02 02 02 02 02 02 02 02>
buf インスタンスをターゲット target
import { Buffer } from 'buffer'; const buf1 = Buffer.alloc(10, 2); const buf2 = Buffer.allocUnsafe(10) // 将buf1复制到buf2 buf1.copy(buf2); console.log(buf1); // <Buffer 02 02 02 02 02 02 02 02 02 02> console.log(buf2); // <Buffer 02 02 02 02 02 02 02 02 02 02>
4 にコピーします。スプライス バッファ
#4.1 Buffer.concat(list[, totalLength])
リスト内のすべてのバッファ インスタンスが結合された新しいバッファを返します
パラメータ:
list:
- totalLength: 接続の合計長。 Note
リストにエントリがない場合、または totalLength が 0 の場合、新しい長さ 0 のバッファが返されます。
- totalLength が指定されていない場合は、リスト内の Buffer インスタンスの長さを加算することによって計算されます。
import { Buffer } from 'buffer'; const buf1 = Buffer.alloc(4, 2); const buf2 = Buffer.alloc(4, 3); const buf3 = Buffer.concat([buf1, buf2]); console.log(buf1); // <Buffer 02 02 02 02> console.log(buf2); // <Buffer 03 03 03 03> console.log(buf3); // <Buffer 02 02 02 02 03 03 03 03>
##5.1 buf.slice([start[, end]])
buf インスタンスから新しい Buffer インスタンスを返します。返された新しい Buffer インスタンスは、ソース buf インスタンスへの参照のみです。つまり、新しく返されたインスタンスへの変更は、元の Buffer インスタンスに影響します# ##パラメーター :### 6.1 buf.fill(value[, offset[, end]][, encoding]) 参数: 6.2 buf.write(string[, offset[, length]][, encoding]) 根据 encoding 中的字符编码将 string 写入 buf 的 offset 处。 参数: 7.1 Buffer.isBuffer(obj) 检验传入obj是否为buffer 7.2 Buffer.isEncoding(encoding) 检查传入的编码名称是否被Buffer所支持 Buffer转String 8.1 buf.toString([encoding[, start[, end]]]) 参数: String转Buffer 8.2 Buffer.from(string[, encoding]) 参数: 9.1 与Array类似点 9.2 与Array不同之处 更多node相关知识,请访问:nodejs 教程!! 以上がバッファーとは何ですか? Nodejs のバッファー モジュールの詳細については、こちらをご覧ください。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。import { Buffer } from 'buffer';
const buf1 = Buffer.alloc(10, 2);
// 截取
const buf2 = buf1.slice(1,4);
// 截取部分修改
buf2[0] = 0x63;
console.log(buf1);
// <Buffer 02 63 02 02 02 02 02 02 02 02>
console.log(buf2);
// <Buffer 63 02 02>
6. 填充Buffer
import { Buffer } from 'buffer';
const buf1 = Buffer.allocUnsafe(8).fill(2);
console.log(buf1);
// <Buffer 02 02 02 02 02 02 02 02>
注意
:length 参数是要写入的字节数。 如果 buf 没有足够的空间来容纳整个字符串,则只会写入 string 的一部分import { Buffer } from 'buffer';
// buf1 length为12
const buf1 = Buffer.alloc(12, 3);
// write offset大于buf1.length,写入无效
buf1.write('hello', 12);
console.log(buf1);
// <Buffer 03 03 03 03 03 03 03 03 03 03 03 03>
// 部分写入
buf1.write('hello', 10);
// <Buffer 03 03 03 03 03 03 03 03 03 03 68 65>
7. Buffer工具方法
import { Buffer } from 'buffer';
const buf1 = Buffer.alloc(12, 3);
console.log(Buffer.isBuffer(buf1));
// true
import { Buffer } from 'buffer';
console.log(Buffer.isEncoding('utf-8'))
// true
8. Buffer与String的转换
import { Buffer } from 'buffer';
const buf1 = Buffer.allocUnsafe(26)
for (let i = 0; i < 26; i++) {
// 97 是 'a' 的十进制 ASCII 值。
buf1[i] = i + 97;
}
console.log(buf1.toString())
// abcdefghijklmnopqrstuvwxyz
import { Buffer } from 'buffer';
const buf = Buffer.from('hello buffer');
console.log(buf);
// <Buffer 68 65 6c 6c 6f 20 62 75 66 66 65 72>
9. Buffer与Array的对比

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Node.js はサーバー側の JavaScript ランタイムであり、Vue.js は対話型ユーザー インターフェイスを作成するためのクライアント側の JavaScript フレームワークです。 Node.js はバックエンド サービス API 開発やデータ処理などのサーバー側開発に使用され、Vue.js はシングルページ アプリケーションや応答性の高いユーザー インターフェイスなどのクライアント側開発に使用されます。

Node.js は、高いパフォーマンス、スケーラビリティ、クロスプラットフォーム サポート、豊富なエコシステム、開発の容易さなどの機能を備えているため、バックエンド フレームワークとして使用できます。

MySQL データベースに接続するには、次の手順に従う必要があります。 mysql2 ドライバーをインストールします。 mysql2.createConnection() を使用して、ホスト アドレス、ポート、ユーザー名、パスワード、データベース名を含む接続オブジェクトを作成します。 connection.query() を使用してクエリを実行します。最後に connection.end() を使用して接続を終了します。

Node.js には次のグローバル変数が存在します。 グローバル オブジェクト: グローバル コア モジュール: プロセス、コンソール、require ランタイム環境変数: __dirname、__filename、__line、__column 定数: unknown、null、NaN、Infinity、-Infinity

Node.js インストール ディレクトリには、npm と npm.cmd という 2 つの npm 関連ファイルがあります。違いは次のとおりです。拡張子が異なります。npm は実行可能ファイルで、npm.cmd はコマンド ウィンドウのショートカットです。 Windows ユーザー: npm.cmd はコマンド プロンプトから使用できますが、npm はコマンド ラインからのみ実行できます。互換性: npm.cmd は Windows システムに固有ですが、npm はクロスプラットフォームで使用できます。使用上の推奨事項: Windows ユーザーは npm.cmd を使用し、他のオペレーティング システムは npm を使用します。

Node.js と Java の主な違いは、設計と機能です。 イベント駆動型とスレッド駆動型: Node.js はイベント駆動型で、Java はスレッド駆動型です。シングルスレッドとマルチスレッド: Node.js はシングルスレッドのイベント ループを使用し、Java はマルチスレッド アーキテクチャを使用します。ランタイム環境: Node.js は V8 JavaScript エンジン上で実行され、Java は JVM 上で実行されます。構文: Node.js は JavaScript 構文を使用し、Java は Java 構文を使用します。目的: Node.js は I/O 集中型のタスクに適しており、Java は大規模なエンタープライズ アプリケーションに適しています。

はい、Node.js はバックエンド開発言語です。これは、サーバー側のビジネス ロジックの処理、データベース接続の管理、API の提供などのバックエンド開発に使用されます。

Web 開発において Node.js と Java にはそれぞれ長所と短所があり、どちらを選択するかはプロジェクトの要件によって異なります。 Node.js はリアルタイム アプリケーション、迅速な開発、マイクロサービス アーキテクチャに優れており、Java はエンタープライズ グレードのサポート、パフォーマンス、セキュリティに優れています。
