MySQL 実践演習 シンプルなライブラリ管理システム

MySQL 実践演習 シンプルなライブラリ管理システム

1. ソート機能

1. 各書籍のシリアル番号、タイトル、著者、価格、種類などの書籍情報を表現できます。
2. ユーザー情報、一般ユーザー、管理者を表現できます。
3. サポートされている操作:

  • 一般ユーザー向け: 書籍リストの表示、特定の書籍の検索、書籍の借り入れと返却。
  • 管理者向け: 書籍リストの表示、書籍の追加と削除を行います。

ここに画像の説明を挿入

2. データベースを準備する

ユーザーテーブルとブックテーブルを作成する

データベースが存在しない場合は作成します java100_bookmanager;
java100_bookmanager を使用します。
ブックが存在する場合はテーブルを削除します。
// id を自動増分主キーとして設定します。create table book(id int primary key auto_increment,name varchar(20),author varchar(20),price int,type varchar(20),isBorrowed int);

ユーザーが存在する場合はテーブルを削除します。
// また、userid を自動増分主キーとして設定し、ユーザー名が一意であることを確認します。create table user(
    userId int 主キー auto_increment,
    ユーザー名varchar(20) 一意、
    パスワードvarchar(20)、
    管理者整数
);
-- いくつかの本を挿入します insert into book values(null,'西遊記','呉承恩',10000,'古典小説',0);
insert into book values(null,'三国志演義','羅貫中',10000,'古典小説',0);
insert into book values(null,'水滸伝','世内庵',10000,'古典小説',0);
insert into book values(null,'Jin Ping Mei','Lanling Xiao Xiao Sheng',10000,'Classical Novels',0);
--ユーザーをいくつか挿入します insert into user values(null,'admin','123',1);
ユーザーに値を挿入します(null、'zhangsan'、'123'、0);

3. データベースに関連するエンティティクラスの構築

パブリッククラスBooks {
    private int bookId;//書籍番号 private String name;//書籍タイトル private String author;//著者 private int price;//価格 private String type;//タイプ private boolean isBorrowed;//借用されているかどうか//設定 get メソッド public int getBookId() {
        bookIdを返します。
    }

    パブリック void setBookId(int bookId) {
        this.bookId = ブックID;
    }

    パブリック文字列getName() {
        名前を返します。
    }

    パブリック void setName(文字列名) {
        this.name = 名前;
    }

    パブリック文字列 getAuthor() {
        著者を返す;
    }

    パブリックvoid setAuthor(String author) {
        this.author = 著者;
    }

    パブリック int getPrice() {
        返品価格;
    }

    パブリックvoid setPrice(int price) {
        this.price = 価格;
    }

    パブリック文字列getType() {
        戻り値の型;
    }

    パブリック void setType(文字列型) {
        this.type = タイプ;
    }

    パブリックブール値isBorrowed() {
        isBorrowed を返します。
    }

    パブリック void setBorrowed(boolean 借用) {
        isBorrowed = 借用済み;
    }

    @オーバーライド
    パブリック文字列toString() {
        "Book{" を返す +
                "bookId=" + ブックId +
                ", 名前='" + 名前 + '\'' +
                ", 著者='" + 著者 + '\'' +
                ", 価格=" + 価格 +
                ", タイプ='" + タイプ + '\'' +
                ", isBorrowed=" + isBorrowed +
                '}';
    }

ユーザー

ユーザーには一般ユーザーと管理者の2種類があります。管理者と一般ユーザーでは表示されるメニューが異なり、管理者と一般ユーザーのクラスメソッドも異なります。まず、抽象クラス User を定義し、一般ユーザー NoramlUser と管理者クラス Admin に User クラスを継承させます。

抽象パブリッククラスユーザー{
    プライベート int ユーザーID;
    プライベート文字列userName;
    プライベート文字列passWord;

    IOperation[] operations; // ユーザー クラスに含まれるメソッドを示すメソッド配列 abstract int menu(); // 2 つのサブクラスは異なるメニューを参照するため、サブクラスは menu メソッドをオーバーライドする必要があります public void doOperation(int choice) { // このメソッドは、本の借り出しや返却などの操作を実行するために使用されます。 operations[choice].work();
    }

    パブリックint getUserId() {
        ユーザーIDを返します。
    }

    パブリックvoid setUserId(int userId) {
        this.userId = ユーザーID;
    }

    パブリック文字列 getUserName() {
        ユーザー名を返します。
    }

    パブリックvoid setUserName(文字列userName) {
        this.userName = ユーザー名;
    }

    パブリック文字列 getPassWord() {
        パスワードを返します。
    }

    パブリックvoid setPassWord(文字列passWord) {
        this.passWord = パスワード;
    }

    @オーバーライド
    パブリック文字列toString() {
        "user{" を返す +
                "ユーザーID=" + ユーザーID +
                ", ユーザー名='" + ユーザー名 + '\'' +
                ", パスワード='" + パスワード + '\'' +
                '}';
    }
}

NormalUser クラス

パブリッククラス NormalUser は user{
    パブリックNormalUser(){
        this.operations = new IOperation[]{//これらのメソッドを保存および実装するための別のパッケージを開きます。new ExitOperation(), //システムを終了します。new DisplayOperation(), //書籍リストを表示します。new FindOperation(), //書籍を検索します。new BorrowOperation(), //書籍を借ります。new ReturnOperation(), //書籍を返却します。};
    }
    @オーバーライド
    public int menu(){//親クラスの menu メソッドをオーバーライドします System.out.println("=========================");
        System.out.println("ようこそ、「+this.getUserName()+」!");
        System.out.println("1. 書籍リストを表示する");
        System.out.println("2. 指定された本を見つける");
        System.out.println("3. 本の借り方");
        System.out.println("4. 本を返却する");
        System.out.println("0. システムを終了します");
        System.out.println("==========================");
        System.out.println("オプションを入力してください");
        スキャナー sc = 新しいスキャナー (System.in);
        int 選択 = sc.nextInt();
        選択肢を返す;
    }
}

管理者クラス

パブリッククラスAdminはuserを拡張します{
    パブリック管理者(){
        this.operations = 新しいIOperation[]{
                new ExitOperation(), // システムを終了します new DisplayOperation(), // 本のリストを表示します new FindOperation(), // 本を検索します new AddOperation(), // 本を追加します new DelOperation(), // 本を削除します };
    }
    @オーバーライド
    パブリック int メニュー() {
        System.out.println("==========================");
        System.out.println("ようこそ,"+this.getUserName()+"あなたは管理者です!");
        System.out.println("1. 書籍リストを表示する");
        System.out.println("2. 指定された本を見つける");
        System.out.println("3. 新しい本");
        System.out.println("4. 書籍を削除する");
        System.out.println("0. システムを終了します");
        System.out.println("==========================");
        System.out.println("オプションを入力してください");
        スキャナー sc = new Scanner(System.in);
        int 選択 = sc.nextInt();
        選択肢を返す;
    }
}

4. データベース関連操作のカプセル化

  • 1.まずデータベースリンク操作をカプセル化する
  • 2. 次に、bookテーブルの追加、削除、クエリ、変更操作をカプセル化します。
  • 3. 次に、ユーザーテーブルに対する操作をカプセル化します。

データベースリンク操作

//ここでデータベース接続操作をカプセル化します public class DBUtil {
// 個人設定に従って URL アカウントとパスワードを設定します private static final String URL="jdbc:mysql://127.0.0.1:3306/java100_bookmanager?characterEncoding=utf8&&useSSL=false";
    プライベート静的最終文字列 USERNAME="root";
    プライベート静的最終文字列 PASSWORD="q986681563";
    //ハングリーマン モード//静的コード ブロックは、クラスの読み込みフェーズ中にインスタンス化のために呼び出されます/*private static DataSource dataSource=new MysqlDataSource();

    静的{
        ((MysqlDataSource)dataSource).setUrl(URL);
        ((MysqlDataSource)dataSource).setUser(ユーザー名);
        ((MysqlDataSource)dataSource).setPassword(パスワード);
    }*/
    // 遅延モード // getDataSource メソッドは最初にのみインスタンス化されます private static DataSource dataSource=null;
    パブリック静的データソース getDataSource() {
        if(データソース==null){
            データソース = 新しいMysqlDataSource();
            ((MysqlDataSource)dataSource).setUrl(URL);
            ((MysqlDataSource)dataSource).setUser(ユーザー名);
            ((MysqlDataSource)dataSource).setPassword(パスワード);
        }
        データソースを返します。
    }
    パブリック静的Connection getConnection() はSQLExceptionをスローします {
        getDataSource().getConnection() を返します。
    }
    public static void close(ResultSet resultSet, PreparedStatement statement,Connection connection){//リソースを解放する//コメントアウトされたメソッドの方が安全です/*if(resultSet!=null){
            試す {
                結果セットを閉じます。
            } キャッチ (SQLException e) {
                e.printStackTrace();
            }
        }
        if(ステートメント!=null){
            試す {
                ステートメント.close();
            } キャッチ (SQLException e) {
                e.printStackTrace();
            }
        }
        if (接続!=null) {
            試す {
                接続を閉じます。
            } キャッチ (SQLException e) {
                e.printStackTrace();
            }
        }*/
        試す {
            resultSet が null の場合、 resultSet.close();
            if(statement!=null) ステートメント.close();
            接続がnullの場合、接続を閉じます。
        } キャッチ (SQLException e) {
            e.printStackTrace();
        }
    }
}

ブックテーブルでの操作

//DAO データ アクセス オブジェクト データ アクセス オブジェクト public class BookDAO {
    //1. 新しい本を追加する public boolean add(Books book){
        接続 connection=null;
        PreparedStatement ステートメント = null;
        試す {
            接続 = DBUtil.getConnection();
            文字列 sql="帳簿値に挿入(null,?,?,?,?,?)";
            ステートメント=connection.prepareStatement(sql);
            ステートメント.setString(1,book.getName());
            ステートメント.setString(2,book.getAuthor());
            ステートメント.setInt(3,book.getPrice());
            ステートメント.setString(4,book.getType());
            ステートメント.setInt(5,book.isBorrowed()?1:0);
            int ret = ステートメント.executeUpdate();
            if(ret!=1) は false を返します。
            true を返します。
        } キャッチ (SQLException e) {
            e.printStackTrace();
        }ついに {
            DBUtil.close(null,ステートメント,接続);
        }
        false を返します。
    }
    //2. すべての書籍を表示する public List<Books> selectAll(){
        リスト<Books> list=new ArrayList<>();
        接続 connection=null;
        PreparedStatement ステートメント = null;
        結果セット resultSet=null;
        試す {
            接続=DBUtil.getConnection();
            文字列 sql="select*from book";
            ステートメント=connection.prepareStatement(sql);
            結果セット=ステートメント.executeQuery();
            while(resultSet.next()){
                本 book = new Books();
                book.setBookId(resultSet.getInt("id"));
                book.setName(resultSet.getString("name"));
                book.setAuthor(resultSet.getString("著者"));
                book.setPrice(resultSet.getInt("price"));
                book.setType(resultSet.getString("type"));
                book.setBorrowed(resultSet.getInt("isBorrowed")==1);
                リストに本を追加します。
            }
        } キャッチ (SQLException e) {
            e.printStackTrace();
        }ついに {
            DBUtil.close(結果セット、ステートメント、接続);
        }
        リストを返します。
    }
    //3. 名前で本を検索する public List<Books> selectByName(String name) {
        リスト<Books> list=new ArrayList<>();
        接続 connection=null;
        PreparedStatement ステートメント = null;
        結果セット resultSet=null;
        試す {
            接続=DBUtil.getConnection();
            文字列 sql="select* from book where name=?";
            ステートメント=connection.prepareStatement(sql);
            ステートメント.setString(1,名前);
            結果セット=ステートメント.executeQuery();
            while(resultSet.next()){
                本 book = new Books();
                book.setBookId(resultSet.getInt("Id"));
                book.setName(resultSet.getString("name"));
                book.setAuthor(resultSet.getString("著者"));
                book.setType(resultSet.getString("type"));
                book.setPrice(resultSet.getInt("price"));
                book.setBorrowed(resultSet.getInt("isBorrowed")==1);
                リストに本を追加します。
            }
        } キャッチ (SQLException e) {
            e.printStackTrace();
        }ついに {
            DBUtil.close(結果セット、ステートメント、接続);
        }
        リストを返します。
    }
    //4. 本を削除する public boolean delete(int bookId){
        接続 connection=null;
        PreparedStatement ステートメント = null;
        試す {
            接続=DBUtil.getConnection();
            文字列 sql="id=?" のブックから削除;
            ステートメント=connection.prepareStatement(sql);
            ステートメント.setInt(1,bookId);
            int ret = ステートメント.executeUpdate();
            if(ret!=1) は false を返します。
            true を返します。
        } キャッチ (SQLException e) {
            e.printStackTrace();
        }ついに {
            DBUtil.close(null、ステートメント、接続);
        }
        false を返します。
    }
    //5. 本を借りる public boolean lendBook(int bookId){
        接続 connection=null;
        PreparedStatement ステートメント = null;
        PreparedStatement ステートメント2 = null;
        結果セット resultSet=null;
        試す {
            接続=DBUtil.getConnection();
            文字列 sql="select * from book where id=?";
            ステートメント=connection.prepareStatement(sql);
            ステートメント.setInt(1,bookId);
            結果セット=ステートメント.executeQuery();
            if(resultSet.next()){
                ブール値 isBorrowed=(resultSet.getInt("isBorrowed")==1);
                if(isBorrowed){
                    System.out.println("この本は借りられており、再度借りることはできません! bookId="+bookId);
                    false を返します。
                }
            }それ以外{
                System.out.println("書籍が存在しません bookId="+bookId);
                false を返します。
            }
            sql="書籍セットを更新、isBorrowed=1、id=?";
            ステートメント2 = connection.prepareStatement(sql);
            ステートメント2.setInt(1,bookId);
            int ret = ステートメント2.executeUpdate();
            if(ret!=1) {
                System.out.println("借用に失敗しました");
                false を返します。
            }
            System.out.println("借用成功");
            true を返します。
        } キャッチ (SQLException e) {
            e.printStackTrace();
        }ついに {
            if(結果セット!=null) {
                試す {
                    接続を閉じます。
                } catch (SQLException スロー可能) {
                    throwables.printStackTrace();
                }
            }
            if(ステートメント!=null) {
                試す {
                    ステートメント.close();
                } catch (SQLException スロー可能) {
                    throwables.printStackTrace();
                }
            }
            if(ステートメント2!=null) {
                試す {
                    ステートメント2.close();
                } catch (SQLException スロー可能) {
                    throwables.printStackTrace();
                }
            }
            if (接続!=null) {
                試す {
                    接続を閉じます。
                } catch (SQLException スロー可能) {
                    throwables.printStackTrace();
                }
            }
        }
        false を返します。
    }
    //6. 戻り値 public boolean returnBook(int bookId){
        接続 connection=null;
        PreparedStatement ステートメント = null;
        PreparedStatement ステートメント2 = null;
        結果セット resultSet=null;
        試す {
            接続=DBUtil.getConnection();
            文字列 sql="select* from book where id=?";
            ステートメント=connection.prepareStatement(sql);
            ステートメント.setInt(1,bookId);
            結果セット = ステートメント.executeQuery();
            if(resultSet.next()){
                ブール値 isBorrowed=(resultSet.getInt("isBorrowed")==1);
                if(!isBorrowed){
                    System.out.println("この本は借りられていないので返却する必要はありません bookId="+bookId);
                    false を返します。
                }
            }それ以外{
                System.out.println("そのような本はありません! bookId="+bookId);
                false を返します。
            }
            sql="書籍セットを更新、isBorrowed=0、id=?";
            ステートメント2 = connection.prepareStatement(sql);
            ステートメント2.setInt(1,bookId);
            int ret = ステートメント2.executeUpdate();
            if(ret!=1) は false を返します。
            true を返します。
        } キャッチ (SQLException e) {
            e.printStackTrace();
        }ついに {
            if(結果セット!=null) {
                試す {
                    接続を閉じます。
                } catch (SQLException スロー可能) {
                    throwables.printStackTrace();
                }
            }
            if(ステートメント!=null) {
                試す {
                    ステートメント.close();
                } catch (SQLException スロー可能) {
                    throwables.printStackTrace();
                }
            }
            if(ステートメント2!=null) {
                試す {
                    ステートメント2.close();
                } catch (SQLException スロー可能) {
                    throwables.printStackTrace();
                }
            }
            if (接続!=null) {
                試す {
                    接続を閉じます。
                } catch (SQLException スロー可能) {
                    throwables.printStackTrace();
                }
            }
        }
        false を返します。
        }
    }
   

ここに画像の説明を挿入

ユーザーテーブルに対する操作

パブリッククラスUserDao{
    //ユーザー名に基づいてパスワードを見つけるロジック //ユーザー名は一意の制約です public user selectByName(String name){
        接続 connection=null;
        PreparedStatement ステートメント = null;
        結果セット resultSet=null;
        試す {
            接続=DBUtil.getConnection();
            文字列 sql="select* from user where username=?";
            ステートメント=connection.prepareStatement(sql);
            ステートメント.setString(1,名前);
            結果セット = ステートメント.executeQuery();
            if(resultSet.next()){
                ブール値 isAdmin=(resultSet.getInt("isAdmin")==1);
                ユーザー users=null;
                if(isAdmin){
                    ユーザー = 新しい Admin();
                }そうでない場合、users=new NormalUser();
                users.setPassWord(resultSet.getString("パスワード"));
                ユーザIDを設定します。
                users.setUserName(resultSet.getString("ユーザー名"));
                ユーザーを戻す;
            }

        } キャッチ (SQLException e) {
            e.printStackTrace();
        }ついに {
            DBUtil.close(結果セット、ステートメント、接続);
        }
        null を返します。
    }
}

メインロジック(メインメソッドとログインメソッド)を記述する

パブリッククラスMain {
    パブリック静的voidメイン(String[] args) {
        ユーザー users=login();
        while(true){
            int choice=users.menu();
            users.doOperation(選択肢);
        }
    }
    プライベート静的ユーザーログイン(){
        スキャナー sc = 新しいスキャナー (System.in);
        System.out.println("ユーザー名を入力してください");
        文字列名=sc.next();
        System.out.println("パスワードを入力してください");
        文字列パスワード=sc.next();
        UserDao を新規 UserDao() に追加します。
        ユーザー users=userDao.selectByName(名前);
        if(users==null){
            System.out.println("ログインに失敗しました!");
            システム終了(0);
        }
        if(!users.getPassWord().equals(パスワード)){
            System.out.println("パスワードが間違っています");
            システム終了(0);
        }
        ユーザーを戻す;
    }
}

操作のさまざまな詳細を記述します

すべての操作をパッケージに入れて、インターフェース操作を定義し、すべての操作がこのインターフェースを実装してメソッドをオーバーライドします。
IOperation インターフェース

パブリックインターフェースIOperation{
    void 作業();
}

ブックアクションの追加

パブリッククラスAddOperationはIOperationを実装します{
    @オーバーライド
    パブリックボイドワーク(){
        System.out.println("新しい本!");
        スキャナー sc = new Scanner(System.in);
        System.out.println("本のタイトルを入力してください");
        文字列名=sc.next();
        System.out.println("著者を入力してください");
        文字列author = sc.next();
        System.out.println("価格を入力してください");
        int 価格 = sc.nextInt();
        System.out.println("カテゴリを入力してください");
        文字列タイプ=sc.next();
        本 book = new Books();
        book.setName(名前);
        book.setPrice(価格);
        book.setType(type);
        book.setAuthor(著者);
        BookDAO を新規作成します。
        ブール値 ret = bookDAO.add(book);
        if(ret) System.out.println("正常に追加されました");
        そうでない場合、System.out.println("追加に失敗しました");
    }
}

本の貸出業務

パブリッククラスBorrowOperationはIOperationを実装します{
    @オーバーライド
    パブリックボイドワーク(){
        System.out.println("借りた本");
        System.out.println("借りたい本のIDを入力してください");
        スキャナー sc = 新しいスキャナー (System.in);
        int id = sc.nextInt();
        BookDAO を新規作成します。
        ブール値 ret = bookDAO.borrowBook(id);
    }
}

書籍削除操作

パブリッククラスDelOperationはIOperationを実装します{
    @オーバーライド
    パブリックボイドワーク(){
        System.out.println("書籍を削除します!");
        スキャナー sc = new Scanner(System.in);
        System.out.println("削除する本のIDを入力してください");
        int id = sc.nextInt();
        BookDAO を新規作成します。
        ブール値 ret = bookDAO.delete(id);
        if(ret) System.out.println("正常に削除されました");
        そうでない場合、System.out.println("削除に失敗しました");
    }
}

書籍リストの表示操作

パブリッククラスDisplayOperationはIOperationを実装します{
    @オーバーライド
    パブリックボイドワーク(){
        System.out.println("すべての書籍を表示");
        BookDAO を新規作成します。
        リスト<Books> list=bookdao.selectAll();
        for(書籍 book:リスト){
            System.out.println(本);
        }
        System.out.println("書籍の表示が完了しました");
    }
}

終了システム操作

パブリッククラスExitOperationはIOperationを実装します{
    @オーバーライド
    パブリックボイドワーク(){
        System.out.println("プログラムを終了");
        システム終了(0);
    }
}

本を探す操作

パブリッククラス FindOperation は IOperation を実装します{
    @オーバーライド
    パブリックボイドワーク(){
        System.out.println("名前で書籍を検索");
        System.out.println("本のタイトルを入力してください");
        スキャナー sc = new Scanner(System.in);
        文字列名=sc.next();
        BookDAO を新規作成します。
        リスト<Books> books = bookDAO.selectByName(name);
        for(本 book:本){
            System.out.println(本);
        }
        System.out.println("名前による書籍の検索が完了しました");
    }
}

本の返却業務

パブリッククラスReturnOperationはIOperationを実装します{
    @オーバーライド
    パブリックボイドワーク(){
        System.out.println("本を返却してください!");
        System.out.println("返却したい本のIDを入力してください");
        スキャナー sc = 新しいスキャナー (System.in);
        int id = sc.nextInt();
        BookDAO を新規作成します。
        ブール値 ret = bookDAO.returnBook(id);
        if(ret){
            System.out.println("成功しました");
        }それ以外{
            System.out.println("戻りに失敗しました");
        }
    }
}

概要: シンプルなライブラリ管理システム。実践を通じて、シンプルな JDBC 構文と API を習得できるほか、Java のポリモーフィック継承などの概念を理解するのにも役立ちます。

これで、MySQL の実践演習と簡単なライブラリ管理システムに関するこの記事は終了です。MySQL ライブラリ管理システムに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL ユーザー権限管理の実装
  • MySQLユーザー権限管理の詳細な説明
  • MySQL InnoDB ストレージエンジンのメモリ管理の詳細な説明
  • MySQL ストアド プロシージャの作成、呼び出し、管理の詳細な説明

<<:  DockerでRabbitMqの共通クラスタとミラークラスタを構築する詳細な操作

>>:  HTML+CSS+JS でスタックカルーセル効果を実装するサンプルコード

推薦する

Dockerfileを使用してDockerイメージを構築する手順

Dockerfile は、命令を含むテキスト ファイルです。各命令はレイヤーを構築するため、各命令の...

MySQL データベース テーブルとデータベース パーティショニング戦略

まず、テーブルを分割する必要がある理由について説明します。データシートが数百万に達すると、1 回のク...

Linux (CentOS) システムで MySQL データベース ディレクトリの場所を変更する方法

CentOS システムで MySQL データベース ディレクトリの場所を変更する方法1. まず、My...

JavaScript配列の簡単な紹介

目次配列の紹介配列リテラル2次元配列要約する配列の紹介配列- Arrayもオブジェクトですこれは通常...

ベスト HTML/CSS デザインおよび開発フレームワーク 15 選を紹介します

プロフェッショナルな Web デザインは複雑で時間がかかります。 HTML と CSS フレームワー...

JSはクリックドロップ効果を実装します

jsはクリックとドロップの特殊効果を実現します。まずは効果画像を見てみましょうさっそく始めましょう。...

MySQLクエリの文字セットの不一致の問題を解決する方法

問題を見つける最近、仕事で問題が発生しました。MySQL データベースにテーブルを作成するときに、ラ...

Vue シンプル登録ページ + 確認コード送信機能の実装例

目次1. エフェクト表示2. 検証コードとメールプッシュ管理の強化(後述のブログを参照) 3. 一般...

Vue3.0はvue-grid-layoutプラグインを使用してドラッグレイアウトを実装します。

目次1. プラグイン2. 幕間3. 実装4. 検証機能1. プラグインまず、私たちが選んだプラグイン...

JavaScript でグレイウルフのポットビーティングゲームを実装

1. プロジェクト文書 2. ページレイアウトにHTMLとCSSを使用するHTML部分 <di...

Web デザインの経験: 独善的な Web デザイナー

1. ゴミかクラシックか? Web テクノロジーは急速に更新されており、Web サイトのインターフェ...

SSM VUE Axios の詳細な説明

目次SQL ログを表示するにはどうすればいいですか? ? SpringMVC でのパラメータ渡しの説...

ビジネス HTML メール作成に関する提案

許可ベースの電子メール マーケティングにより、マーケティングとプロモーションのコストを大幅に削減でき...

MySQLはinet_atonとinet_ntoaを使用してIPアドレスデータを処理します。

この記事では、適切な形式を使用して IP アドレス データをデータベースに保存し、IP アドレスを簡...

Linux ディスクデバイスと LVM 管理コマンドの詳細な例

序文Linux オペレーティング システムでは、デバイス ファイルは特別なタイプのファイルです。これ...