目次
ファイルの読み込み---プロジェクトを理解するための最初のステップ---プロジェクト
ホームページ バックエンド開発 PHPチュートリアル ファイルの読み込み---プロジェクトを理解するための最初のステップ---project_PHP チュートリアル

ファイルの読み込み---プロジェクトを理解するための最初のステップ---project_PHP チュートリアル

Jul 13, 2016 am 10:07 AM
pro project 負荷 書類 理解する

ファイルの読み込み---プロジェクトを理解するための最初のステップ---プロジェクト

私が最初に PHP を書き始めたとき、私はいつもこの問題について心配していました: ここで作成した新しいクラスを対応するクラスにロードできるか? ?結局のところ、致命的エラーは、実行するとすぐに報告されます。** ファイルが見つからない、クラスをインスタンス化できないなどです。これは非常に「低レベル」のエラーであり、他の人が読むのではないかと心配しています。それは冗談です。そのため、新しいタスクを引き受けるたびに、その読み込みプロセスを理解したいと考えています (以前は HTML タグとスタイルをいくつかしか知らなかったので、それが Web 開発としてカウントされるかどうかはわかりません)。それを読んで、まだこれを読む時間があると言うので、彼はロジックを急いで書きます。これを実行してください...お姉さん、もちろん、あなたはそれを確信していますD:、しかし後で私は、プロセスがほとんど終わっていることがわかりました同じ。

C++/Java などの IDE で開発する場合、通常は新しいプロジェクトを作成し、IDE を介して指定されたディレクトリに新しいファイルを追加し、それを #include/Import します。PHP ではこのステップがより手続き的になっており、ファイル 読み込みプロセスは基本的に、このプロジェクト (フレームワークまたは自己構築プロジェクト) のディレクトリ構造とファイル分類を決定します。

フレームワークであっても、自作プロジェクトであっても、エントリーファイルが存在する必要があります。このとき、設定ファイルや共通メソッドなど、いくつかの基本情報を事前にロードする必要があります。基本的な方法は手動でロードすることです。次の 4 つの方法のいずれかを使用して、単一のファイルを直接作成します:

include、require、include_once、require_once

リーリー

クラス ファイルのロードに関しては、少数のファイルが直接ロードされます。たとえば、一般的なメソッドは後で使用されるメソッド (エラー出力、curl など) が多いため、クラス Utilities に静的メソッドとして記述されます。リクエスト、ランダムな文字列生成。..) なので、クラスでカプセル化され、通常は設定ファイルのロード時にロードされます

include('Utilities.php');

より一般的な状況は、クラスの動的ロードです。まずロードメソッドについては話さないで、クラスとインスタンスがいつ使用されるかを見てみましょう:

1. 最も明白なのは、$obj = new A; そのバリアント $obj = $className; です。

2. クラスの静的メソッド、静的変数、定数、つまり Utilities::httpRequest()、Utilities::$instance、Utilities::HOST を呼び出す。

3. PHP 関数でコールバック関数を使用する場合、最も一般的なのは call_user_func_array() (call_user_func) です。他にも配列内の array_walk や array_map など、コールバック関数をパラメータとして使用する必要があります。 。

コールバック関数は非常に柔軟であり、単純な関数だけでなく、静的クラスメソッドを含むオブジェクトメソッドにすることもできます。オブジェクト メソッドまたは静的メソッドを使用できるため、この時点で対応するクラス ファイルを読み込む必要があります。 PHP 5.3 以降では、js のような匿名関数を使用してコールバック関数を実装することもできます。

リーリー

厳密に言えば、上記の例の call_user_func_array はすでにオブジェクトをインスタンス化していますが、このような使い方があり、クラスの静的メソッドを使用することもできます。

最初に理解することは、なぜ動的読み込みが必要なのかということです。 PHP はスクリプト言語です。たとえば、localhost/index として直接アクセスすると、ルート ディレクトリにindex.php ファイルが存在します。 php にあるすべてのリソースにアクセスできます。index.php で共通のクラス A が定義されている場合、A のオブジェクトがスクリプト内でインスタンス化されると、プログラムは次のように反応します。 A の定義を作成し、それを直接インスタンス化できます (他のファイルをロードする必要はありません)。クラスB、C、Dなどのクラスがたくさんある場合、それらをすべてindex.phpに書いて別のファイルに書いてインクルードすると当然動作しません(インクルードはすでに読み込み作業を行っています)。プログラムでは機能しません。これも「表示」されます。

しかし、システムの機能が増えるにつれてクラスの数も増え、各クラスの機能も異なります。データベース操作を直接定義してデータベースデータを読み取るもの、スクリプトにアクセスするときに実行するメソッドを制御するもの、などです。表示されるページのうち、参照するサードパーティのコア ライブラリは、すべてのファイルをディレクトリに配置すると、インクルードによって直接ロードできますが、これらのファイルの配置が乱雑で見つけにくいように見えます。維持コストが削減されます。さて、ルート ディレクトリにさらにいくつかのディレクトリを作成しましょう。ディレクトリ A は、データベースを処理するスクリプトの保存専用です。ディレクトリ C は、プログラム開始時のエントリ制御方法を制御します。スクリプト、ディレクトリ D はブラウザに表示されるページです...

  于是MVC架构慢慢就演化出来了,我们不能再像以前那样直接include,脚本都放在特定的目录下,如Controller目录下存放的是各种控制器,加载控制器时,我们得这样include('root/Controller/indexController.php'),每次都在文件前面弄一大串的include不仅看着头疼,简直让人累觉不爱。既然有了获取当前文件路径和类名的现成方法,为何不将类名与文件名对应起来,而只要是控制器类的脚本就全放在根目录的Controller子目录下边,就可以写一个方法,只要是控制器类,在这个方法中运行include(ROOT.'Controller/'.$className.'.php');这一句,ROOT为根目录常量,$className为传入的类名,只要是模型类,就这样include(ROOT.'Model/'.$className.'.php');,全凭这个函数来动态控制到哪个目录里边去找,这个project可能就是这样的:

                                

  无形中,就建立起了类名和文件名的对应规则,文件和所在的目录的对应规则,该project下有哪些这样的目录和文件呢?啊原来是放控制器的Controller、放配置信息的Config等等,再次于无形中得知了这个project的结构,而上面说的,利用函数根据一定条件(传入参数)可知自动到哪个目录下去加载该文件,而不是一个个写死的include,就是所谓的文件的动态加载了。

  因此,当你要新建一个**类文件时,也就知道,哦在这个project中,我应该放在这个目录下,文件的命名应该与类名相同,这样就一定能加载到了~~~接下来就是写业务逻辑的一个“愉快的过程”。

  知道什么时候会动态加载及为什么要动态加载后,接下来就是来实现了,也就是上面说到的利用函数来加载某个文件,就是要写好这个“函数”来实现这个过程。常用的有三种方式:

  1. __autoload

  我第一次学的时候就是用的就是这个,魔术函数,只要定义了php程序就会在要用到一个类时自动调用它进行文件动态加载,一样,既然它是个函数,就要让程序对__autoload的定义可见,不然从哪儿调用它呢?一般来说,作为后边程序大部分地方要用到的方法,我们都会放在一个单独的文件中,在程序的入口处加载进来,一个project总得有几个文件是手动include的,完全可以在开头单独include进来,或者放在配置信息中,加载配置信息时就加载进来了。它的原型:

  void __autoload ( string $class )

  参数当前加载的类名名称(注意如果有命名空间,则包含命名空间前缀),下面是一个针对上面的图片结构的简单示例:

    <span>//</span><span> file: autoload.php 
    // ROOT为已经定义的根目录常量</span>
    <span>function</span> __autoload(<span>$className</span><span>){
        </span><span>try</span><span>{
            </span><span>if</span>(<span>file_exists</span>(ROOT.'Controller/'.<span>$className</span>.'.php')){<span>//</span><span> 检查Controller</span>
                <span>include</span>(ROOT.'Controller/'.<span>$className</span>.'.php'<span>);
            }
            </span><span>else</span> <span>if</span>(<span>file_exists</span>(ROOT.'Model/'.<span>$className</span>.'.php')){<span>//</span><span> 检查Model</span>
                <span>include</span>(ROOT.'Model/'.<span>$className</span>.'.php'<span>);
            }
            </span><span>else</span> <span>if</span>(<span>file_exists</span>(ROOT.'Lib/'.<span>$className</span>.'.php')){<span>//</span><span> 检查Lib</span>
                <span>include</span>(ROOT.'Lib/'.<span>$className</span>.'.php'<span>);
            }
            </span><span>else</span>{                                               <span>//</span><span> 找不到该文件</span>
                <span>throw</span> <span>new</span> <span>Exception</span>("ERROR: can't find file {<span>$className</span>}.php"<span>);
            }
        }
        </span><span>catch</span>(<span>Exception</span> <span>$e</span><span>){
            </span><span>echo</span> <span>$e</span>.<span>getMessage();
            </span><span>exit</span><span>;
        }
    }</span>
ログイン後にコピー

  

  2. spl_autoload_register

  __autoload实际上也差不多了,但它是php定义的,如果现在有个东西写了并调用之后,就告诉程序说,我不用__autoload来加载文件了,我已经定义了一个专门加载文件的方法(比如名称是loadClass),以后需要加载一个类文件时,你就用它吧。spl_autoload_register就是这样一个能告诉程序这样去做的方法,而且自定义加载方法将会更灵活,可以指定多个加载函数,spl_autoload_register函数会将这些函数放在一个队列中,并激活它们,在调用时逐个激活:“If there must be multiple autoload functions, spl_autoload_register() allows for this. It effectively creates a queue of autoload functions, and runs through each of them in the order they are defined. ”,php.net上(http://php.net/manual/en/function.spl-autoload-register.php)也确实如此解释,spl_autoload_unregister则是从加载函数队列中注销。

  另外spl_autoload_functions()函数,可以获取我们注册了哪些函数;spl_autoload_call($class)函数,尝试调用所有已注册的加载函数来加载$class的类文件。

  对于spl_autoload_register的解释,我的理解是,如果用spl_autoload_register注册了n个函数在加载队列中,因为它自动激活它们嘛,现在我要实例化一个类,在第1个加载函数中加载失败了,然后尝试第2个函数,第二个失败则尝试第3个,''',直到第n个函数走完,若还没加载成功,就报错,只要中间一个加载成功就成功了,but事实好像有点出入。

  还是用上一个图片中的目录结构,

  1、在Controller目下创建indexController.php文件,包含类indexController;

  2、在Model目录下创建userModel.php文件,包含类userModel;

  3、首页写个类加载脚本Autoload.php,代码如下:

    <span>//</span><span> file: Autoload.php</span>
    <span>define</span>('DS',<span> DIRECTORY_SEPARATOR);
    </span><span>define</span>('ROOT', <span>rtrim</span>(<span>dirname</span>(<span>__FILE__</span>), '/\\').<span>DS);
    
    </span><span>class</span><span> Autoload{
        </span><span>public</span> <span>static</span> <span>function</span> autoloadRegister(<span>$loadFunc</span> = 'Autoload::loadControllerClass', <span>$enable</span> = <span>true</span><span>){
            </span><span>return</span> <span>$enable</span> ? spl_autoload_register(<span>$loadFunc</span>) : spl_autoload_unregister(<span>$loadFunc</span><span>);
        }
        </span><span>//</span><span> 加载控制器类</span>
        <span>public</span> <span>static</span> <span>function</span> loadControllerClass(<span>$className</span><span>){
            </span><span>if</span>(<span>file_exists</span>(ROOT.'Controller'.DS.<span>$className</span>.'.php')){<span>//</span><span> 检查Controller</span>
                <span>include</span>(ROOT.'Controller'.DS.<span>$className</span>.'.php'<span>);
                </span><span>echo</span> ROOT.'Controller'.DS.<span>$className</span>.'.php'.'<br/>'<span>;
            }
            </span><span>else</span><span>{
                </span><span>echo</span> "ERROR: can't find file {<span>$className</span>}.php in ".ROOT."Controller"<span>;
                </span><span>exit</span><span>;
            }
        }
        </span><span>//</span><span> 加载模型类</span>
        <span>public</span> <span>static</span> <span>function</span> loadModelClass(<span>$className</span><span>){
            </span><span>if</span>(<span>file_exists</span>(ROOT.'Model'.DS.<span>$className</span>.'.php')){<span>//</span><span> 检查Model</span>
                <span>include</span>(ROOT.'Model'.DS.<span>$className</span>.'.php'<span>);
                </span><span>echo</span> ROOT.'Model'.DS.<span>$className</span>.'.php'.'<br/>'<span>;
            }
            </span><span>else</span><span>{
                </span><span>echo</span> "ERROR: can't find file {<span>$className</span>}.php in ".ROOT."Model"<span>;
                </span><span>exit</span><span>;
            }
        }
    }</span>
ログイン後にコピー

  4、测试脚本,测试类是否能加载

    <span>//</span><span> 注册两个加载函数</span>
    Autoload::autoloadRegister('Autoload::loadControllerClass'<span>);
    Autoload</span>::autoloadRegister('Autoload::loadModelClass'<span>);</span><span>
    
    // 查看总共注册了哪些加载函数</span>
    <span>echo</span> 'register functions=> <pre class="brush:php;toolbar:false">'<span>;
    </span><span>print_r</span><span>(spl_autoload_functions());
    </span><span>//</span><span> 分别实例化一个Controller类和Model类</span>
    <span>$indexCon</span> = <span>new</span><span> indexController;
    </span><span>$userMod</span> = <span>new</span> userModel;
ログイン後にコピー

   结果是这样

  

  这不科学啊,spl_autoload_functions数组显示两个函数都注册了,但是当实例化userModel类时它还是跑到Controller目录中去找,两个类的实例化调用的自动加载方法都是Autoload::loadControllerClass,所以userModel类文件加载报错......注意到spl_autoload_register方法的第三个参数, 是添加一个加载函数时放在栈中的位置,于是我另写一个类似的类otherLoad,只是为了将loadModelClass方法放到队列首部:

    <span>class</span><span> otherLoad{
        </span><span>public</span> <span>static</span> <span>function</span> autoloadRegister(<span>$loadFunc</span> = 'otherLoad::loadModelClass', <span>$enable</span> = <span>true</span><span>){
            </span><span>//</span><span> 默认将loadModelClass放在队首</span>
            <span>return</span> <span>$enable</span> ? spl_autoload_register(<span>$loadFunc</span>, <span>true</span>, <span>true</span>) : spl_autoload_unregister(<span>$loadFunc</span><span>);
        }
        </span><span>//</span><span> 加载模型类</span>
        <span>public</span> <span>static</span> <span>function</span> loadModelClass(<span>$className</span><span>){
            </span><span>if</span>(<span>file_exists</span>(ROOT.'Model'.DS.<span>$className</span>.'.php')){<span>//</span><span> 检查Model</span>
                <span>include</span>(ROOT.'Model'.DS.<span>$className</span>.'.php'<span>);
                </span><span>echo</span> ROOT.'Model'.DS.<span>$className</span>.'.php'.'<br/>'<span>;
            }
            </span><span>else</span><span>{
                </span><span>echo</span> "ERROR: can't find file {<span>$className</span>}.php in ".ROOT."Model"<span>;
                </span><span>exit</span><span>;
            }
        }
    } </span>
ログイン後にコピー

  测试是这样

    <span>//</span><span> 注册三个加载函数</span>
    Autoload::autoloadRegister('Autoload::loadControllerClass'<span>);
    Autoload</span>::autoloadRegister('Autoload::loadModelClass'<span>);
    otherLoad</span>::autoloadRegister('otherLoad::loadModelClass'<span>);
    
    </span><span>//</span><span> 查看总共注册了哪些加载函数</span>
    <span>echo</span> 'register functions=> <pre class="brush:php;toolbar:false">'<span>;
    </span><span>print_r</span><span>(spl_autoload_functions());
    </span><span>//</span><span> 分别实例化一个Controller类和Model类</span>
    <span>$indexCon</span> = <span>new</span><span> indexController;
    </span><span>$userMod</span> = <span>new</span> userModel;
ログイン後にコピー

  这次的结果是这样:

  

  可以看到,这次是在加载indexController类时不成功,因为它只调用了loadModelClass方法,再看看spl_autoload_functions返回的数组,otherLoad类的loadModelClass方法在最前面,难道说,只有在加载函数队列最前面的函数才被用于自动加载,其他无效?这是什么状况?

  使用spl_autoload_call('indexController')来“尝试调用所有已注册的函数来装载请求类”,还是报这个错。

  翻了下别人的文章,包括github上的博客,也就是列举了下手册上说的“可以一次注册多个加载函数 bala bala......”,难道没有人试过,还是我的理解有问题>3<...(win下测试,php版本5.4.10)真是这样的话spl_autoload_register方法就没多大意义嘛╮(╯▽╰)╭......

  关于spl_autoload_register还有几个有意思的地方:

  1、 一个函数只会加载到函数队列中一次,重复加载也是如此;

  2、 spl_autoload_register如果不指定加载函数(第一个参数),则默认使用加载函数spl_autoload(功能类似于__autoload,是它的默认实现形式)

  3、 spl_autoload_register指定了__autoload为加载函数,则一定要实现__autoload;

  4、 同时实现了spl_autoload_register和__autoload,优先使用spl_autoload_register注册的加载函数。

  以上几种情况几乎都可从php.net的note中找到测试例子,老外写得挺有意思,可供参考。上面第2点还需要注意,比如现在在根目录创建一个目录,使用默认函数来加载:

    <span>//</span><span> 设置加载文件的扩展名,将只加载*.php的文件</span>
    spl_autoload_extensions('.php'<span>);
    </span><span>//</span><span> 默认使用spl_autoload加载文件,只能加载当前目录下文件:小写类名.php</span>
<span>    spl_autoload_register();
    </span><span>//</span><span> 测试
    // $obj = new A;</span>
ログイン後にコピー

  spl_autoload_extensions设置加载时只认哪些扩展类型的文件,默认是.php或者.inc文件,这里设置成.php,然后就是调用注册函数。在根目录下创建一个A.php文件,新建一个类A,加载成功,再将文件名改成a.php,照样加载成功。需要留意spl_autoload默认将类名转小写,但是A.php照样加载成功,因为Windows的文件是大小写不敏感的(在同一目录下创建一个d.txt,再创建D.txt会认为是同一个文件),对于Mac OS X也是这样,但Linux就是大小写敏感了,测试时要注意这点。

  也不是全要自动加载,如CI,它将加载文件封装为一个核心类CI_Loader,程序启动时先include必要的脚本(其他要用的核心类),然后再等需要使用时,CI_Loader实例作为当前控制器类或模型类等的一个属性成员,通过调用它的方法来include各种model(模型)、view(视图)、database(数据库对象)、helper(辅助函数)等等。

動的読み込みを使用するかどうかに関係なく、ファイルがカテゴリに配置され、特定のルールに従ってファイルに名前が付けられることを確認する必要があります。これは、堅牢で拡張性が高く、使いやすいものにするために必須です。プロジェクトを作成し、コードを記述するのにも便利です。もちろん、ロードされるファイルの数や占有メモリの量は人によって異なり、フレームワークを判断する基準にもなります。読み込み方法を理解してフレームワークの構造に慣れるのは簡単ではないでしょうか =_=...

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/955204.html技術記事ファイルの読み込み --- プロジェクトを理解するための最初のステップ --- プロジェクト 初めて PHP を書き始めたとき、私はいつもこの問題について心配していました: ここで作成した新しいクラスを、対応するクラス ファイルにロードできるか...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Quark Cloud Disk から Baidu Cloud Disk にファイルを転送するにはどうすればよいですか? Quark Cloud Disk から Baidu Cloud Disk にファイルを転送するにはどうすればよいですか? Mar 14, 2024 pm 02:07 PM

Quark Netdisk と Baidu Netdisk は現在、ファイルの保存に最も一般的に使用されている Netdisk ソフトウェアです。Quark Netdisk 内のファイルを Baidu Netdisk に保存したい場合は、どうすればよいですか?今回は、Quark Network Disk コンピュータから Baidu Network Disk にファイルを転送するためのチュートリアル手順を編集者がまとめたので、その操作方法を見てみましょう。 QuarkネットワークディスクファイルをBaiduネットワークディスクに保存するにはどうすればよいですか? Quark Network Disk から Baidu Network Disk にファイルを転送するには、まず Quark Network Disk から必要なファイルをダウンロードし、次に Baidu Network Disk クライアントでターゲット フォルダーを選択して開きます。次に、Quark Cloud Disk からダウンロードしたファイルを Baidu Cloud Disk クライアントによって開かれたフォルダーにドラッグ アンド ドロップするか、アップロード機能を使用してファイルを Baidu Cloud Disk に追加します。アップロードが完了したら、Baidu Cloud Disk にファイルが正常に転送されたかどうかを必ず確認してください。それでおしまい

0x80004005 エラー コードが表示された場合の対処方法 エディターは、0x80004005 エラー コードを解決する方法を説明します。 0x80004005 エラー コードが表示された場合の対処方法 エディターは、0x80004005 エラー コードを解決する方法を説明します。 Mar 21, 2024 pm 09:17 PM

パソコン上のフォルダーを削除または解凍するときに、「エラー 0x80004005: 不明なエラー」というダイアログ ボックスが表示されることがあります。この状況はどう解決すればよいでしょうか?エラー コード 0x80004005 が表示される理由は実際にはたくさんありますが、そのほとんどはウイルスによって引き起こされます。DLL を再登録して問題を解決できます。以下では、エディターがエラー コード 0x80004005 の処理体験を説明します。 。一部のユーザーは、コンピュータの使用時にエラー コード 0X80004005 を表示されます。0x80004005 エラーは主に、コンピュータが特定のダイナミック リンク ライブラリ ファイルを正しく登録していないこと、またはファイアウォールがコンピュータとインターネット間の HTTPS 接続を許可していないことが原因で発生します。それでどうですか

hiberfil.sys ファイルとは何ですか? hiberfil.sysは削除できますか? hiberfil.sys ファイルとは何ですか? hiberfil.sysは削除できますか? Mar 15, 2024 am 09:49 AM

最近、多くのネチズンが編集者に「hiberfil.sys ファイルとは何ですか?」と尋ねました。 hiberfil.sys は C ドライブのスペースを多く消費し、削除される可能性がありますか?エディターは、hiberfil.sys ファイルを削除できることを通知します。以下で詳細を見てみましょう。 hiberfil.sys は Windows システムの隠しファイルであり、システム休止状態ファイルでもあります。通常、C ドライブのルート ディレクトリに保存され、そのサイズはシステムに搭載されているメモリのサイズと同等です。このファイルはコンピュータが休止状態になっているときに使用され、リカバリ中に以前の状態にすばやく復元できるように、現在のシステムのメモリ データが含まれています。そのサイズはメモリ容量と等しいため、より多くのハードドライブスペースを占有する可能性があります。冬休み

Linuxシステムのログ閲覧コマンドを詳しく解説! Linuxシステムのログ閲覧コマンドを詳しく解説! Mar 06, 2024 pm 03:55 PM

Linux システムでは、次のコマンドを使用してログ ファイルの内容を表示できます。 tail コマンド: tail コマンドは、ログ ファイルの末尾の内容を表示するために使用されます。最新のログ情報を表示するための一般的なコマンドです。 tail [オプション] [ファイル名] 一般的に使用されるオプションは次のとおりです。 -n: 表示する行数を指定します。デフォルトは 10 行です。 -f: ファイルの内容をリアルタイムで監視し、ファイルが更新されたときに新しい内容を自動的に表示します。例: tail-n20logfile.txt#logfile.txt ファイルの最後の 20 行を表示 tail-flogfile.txt#logfile.txt ファイルの更新された内容をリアルタイムで監視 head コマンド: head コマンドは先頭を表示するために使用されます。ログファイルの

MySQLにおける.ibdファイルの役割と注意事項について詳しく解説 MySQLにおける.ibdファイルの役割と注意事項について詳しく解説 Mar 15, 2024 am 08:00 AM

MySQL における .ibd ファイルの役割とそれに関連する注意事項の詳細な説明 MySQL は人気のあるリレーショナル データベース管理システムであり、データベース内のデータは別のファイルに保存されます。このうち、.ibd ファイルは InnoDB ストレージ エンジンのデータ ファイルであり、データとインデックスをテーブルに保存するために使用されます。この記事では、MySQL における .ibd ファイルの役割を詳細に分析し、読者の理解を深めるために関連するコード例を示します。 1. .ibd ファイルの役割: データの保存: .ibd ファイルは InnoDB ストレージです

20 倍ズームを備えた 3 台のカメラ、Honor が Xiaopai Smart Camera Pro を選択 イノベーションが到来 20 倍ズームを備えた 3 台のカメラ、Honor が Xiaopai Smart Camera Pro を選択 イノベーションが到来 Aug 23, 2024 pm 09:44 PM

あなたの家にカメラを設置しましたか?近年、家庭用カメラ製品がにわかにヒットしています。周りの友達に聞いてみると、どこの家にも一台はあるし、複数持っている家もあるそうです。しかし、この製品の人気に伴い、使用中にいくつかの不満も生じています。たとえば、同時に見ることができるのは 1 つの場所だけであり、他の場所を見たい場合は、パン/チルトを調整し、カメラを前後に回転する必要があります。観察時には一定の死角と時間差が生じます。または、家の特定の場所を詳しく見たいときに、画像がぼやけていてまったく見えないなど、鮮明さが大幅に損なわれます。 Honor Select と Xiaopai Technology は共同で、「3 つのレンズとデュアル画像」を特徴とする Honor Select Xiaopai スマート カメラ プロを発売しました。業界とユーザーの問題点に対する新しいソリューションを提供します

Linux の「.a」ファイルを作成して実行する Linux の「.a」ファイルを作成して実行する Mar 20, 2024 pm 04:46 PM

Linux オペレーティング システムでファイルを操作するには、開発者がファイル、コード、プログラム、スクリプトなどを効率的に作成および実行できるようにするさまざまなコマンドとテクニックを使用する必要があります。 Linux 環境では、拡張子「.a」を持つファイルは静的ライブラリとして非常に重要です。これらのライブラリはソフトウェア開発において重要な役割を果たし、開発者が複数のプログラム間で共通の機能を効率的に管理および共有できるようにします。 Linux 環境で効果的なソフトウェア開発を行うには、「.a」ファイルの作成方法と実行方法を理解することが重要です。この記事では、Linux の「.a」ファイルのインストールと構成方法を包括的に紹介します。Linux の「.a」ファイルの定義、目的、構造、作成および実行方法について見てみましょう。 Lとは何ですか

千元台の選び方は?バッテリー寿命は非常に優れており、vivo Y37 Proは6000mAhを搭載しています 千元台の選び方は?バッテリー寿命は非常に優れており、vivo Y37 Proは6000mAhを搭載しています Aug 27, 2024 pm 03:31 PM

今日の千元の携帯電話市場では、バッテリー寿命と外観が多くの消費者の焦点になっています。結局のところ、ほとんどの人にとって、携帯電話は日常使用の基本的なニーズを満たすだけでなく、長期間の使用に耐えられる耐久性も備えていなければなりません。同時に、見た目のデザインも満足のいくものであることがポイントとなります。使用経験は少ないです。 vivo Y37Pro は、バッテリー寿命と外観の点で優れた千元の携帯電話です。外観 vivoY37Proはシンプルでスタイリッシュな外観を持っています。背面パネル:指紋がつきにくい特殊加工処理。ミドルフレーム:メタルの質感たっぷり。色: アプリコットの海、暗い夜、空の街。背面カメラ モジュールのレイアウト: 背面パネルの左上隅。 SIMカードスロット:機体左側。音量ボタンと電源ボタン: 機体の右側。インタフェース

See all articles