国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ Java &#&ベース 単一リンクリスト(Linked List)関連のJava実裝

単一リンクリスト(Linked List)関連のJava実裝

Mar 01, 2021 am 09:47 AM
java 単一リスト

単一リンクリスト(Linked List)関連のJava実裝

# 無(wú)料學(xué)習(xí)の推奨事項(xiàng):

Java 基本チュートリアル

##記事ディレクトリ

#1. 単連結(jié)リストの概要

    2. 単連結(jié)リストの実裝
  • 1. 単連結(jié)リストの作成(追加)
    • 1.1 最後に追加
      • 1.2 ランキングによって追加
      • 2. 単一リンク リスト ノードの変更
    • 3.単一リンク リスト ノードの削除
    • 4. 単一リンク リストの完全な実裝
    • ##3. 単一リンク サーフェス テストの質(zhì)問(wèn)
  • 1. 単一リンク リストの概要

単一リンク リストは、情報(bào)

node の形式で格納する

順序付きリスト

です。 、ただし、ノード は連続した である必要はありません。各ノードにはデータ フィールドと次のフィールドが含まれます。 データ ドメイン: データの保存に使用されます。

    次のドメイン
  • : 次のノードを指します。
  • リンク リストは、
  • ヘッド ノードのあるリンク リスト

ヘッド ノードのないリンク リスト##に分割されます。 #。 単一リンクリスト(Linked List)関連のJava実裝

#単一リンク リスト (先頭ノード)

単一リンク リスト (先頭ノードなし)


  • 単一リンクリスト(Linked List)関連のJava実裝#2. 単一リンク リストの実裝

  • 単一リンクリスト(Linked List)関連のJava実裝
  • 要件: ヘッダー
を持つ

単一リンク リストを使用して実裝 – 水滸伝ヒーロー ランキング管理。 1) ヒーローの

追加、削除、変更、確認(rèn)を完了します

2) 1 つ目の方法でヒーローを追加する場(chǎng)合、先頭に を直接末尾に追加します。リンクされたリスト 。 3) 2 番目の方法では、ヒーローを追加するときに、ランキング に従って指定された位置にヒーロー
を挿入します (ランキングがすでに存在する場(chǎng)合、追加は失敗し、プロンプトが表示されます)。
1. 単一リンクリストの作成 (追加)
#1.1 末尾の追加

# #末尾を追加するというアイデア

最初に、単一リンク リストの先頭を表すために使用される先頭ノードを作成します。

その後、ノードが追加されるたびに、そのノードはリンク リストの最後に直接追加されます。

末尾の追加とは、番號(hào)付けシーケンスに関係なく、現(xiàn)在のリンク リストの最後のノードを見(jiàn)つけ、最後のノードの次のノードが新しいノードを指すことを意味します。

コードの実裝
<pre class='brush:php;toolbar:false;'> // 添加方式1:尾添加 public void add(HeroNode heroNode) { // 因?yàn)閔ead頭不能動(dòng),因此需要一個(gè)輔助變量(指針)temp HeroNode temp = head; while (true) { // 如果遍歷到鏈表的最后 if (temp.next == null) { break; } // temp指針后移 temp = temp.next; } // 當(dāng)退出循環(huán)時(shí),temp指向鏈表的最后 temp.next = heroNode; }</pre>

1.2 ランキングによる追加


単一リンクリスト(Linked List)関連のJava実裝
ランキングによる追加のアイデア

まず、補(bǔ)助変數(shù) (temp ポインター) を使用して、新しく追加されたノードの位置を見(jiàn)つけます。

新しいノード.next=temp.next;

temp.next=新しいノード;

#コードの実裝

	// 添加方式2:根據(jù)排名添加
	public void addByOrder(HeroNode heroNode) {
		HeroNode temp = head;// 借助輔助指針
		boolean flag = false;// 添加的編號(hào)是否存在
		while (true) {
			if (temp.next == null) {// 遍歷到結(jié)尾
				break;
			}
			if (temp.next.no > heroNode.no) {// 位置找到,就在temp的后面插入
				break;
			} else if (temp.next.no == heroNode.no) {// 該編號(hào)已存在
				flag = true;
				break;
			}
			temp = temp.next;// 后移,遍歷當(dāng)前鏈表
		}
		if (flag) {
			// 不能添加
			System.out.printf("準(zhǔn)備插入的英雄的編號(hào)%d已經(jīng)存在,不能加入\n", heroNode.no);
		} else {
			// 插入到temp的后面
			heroNode.next = temp.next;
			temp.next = heroNode;
		}
	}

2. 単一リンク リスト ノードの変更

単一リンクリスト(Linked List)関連のJava実裝変更のアイデア

まずトラバーサルでノードを見(jiàn)つけます。

temp.name =newHeroNode.name;, temp.nickname=newHeroNode.nickname;

コードの実裝
<pre class='brush:php;toolbar:false;'> // 修改節(jié)點(diǎn)信息,根據(jù)節(jié)點(diǎn)的no屬性修改其他信息 public void update(HeroNode newHeroNode) { // 空鏈表無(wú)法修改節(jié)點(diǎn)信息 if (head.next == null) { System.out.println(&quot;鏈表為空~&quot;); return; } // 根據(jù)no排名找到需要修改的節(jié)點(diǎn) HeroNode temp = head.next; boolean flag = false;// flag表示是否找到需要修改的節(jié)點(diǎn) while (true) { if (temp == null) { // 遍歷到結(jié)尾 break; } if (temp.no == newHeroNode.no) { // 找到 flag = true; break; } temp = temp.next;// 后移 } if (flag) { temp.name = newHeroNode.name; temp.nickname = newHeroNode.nickname; } else { System.out.printf(&quot;沒(méi)有找到編號(hào)為%d的節(jié)點(diǎn),不能修改\n&quot;, newHeroNode.no); } }</pre>
3. 単一リンク リスト ノードの削除削除のアイデア

必要なノードを見(jiàn)つける前のノードを削除します。

temp.next=temp.next.next

削除されたノードには、それを指す他の參照がなく、ガベージ コレクション メカニズムによってリサイクルされます。

#コードの実裝#<pre class='brush:php;toolbar:false;'> public void delete(int no) { HeroNode temp = head; boolean flag = false;// 是否找到待刪除節(jié)點(diǎn) while (true) { if (temp.next == null) { // 遍歷到結(jié)尾 break; } if (temp.next.no == no) { // 找到了待刪除節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn) flag = true; break; } temp = temp.next;// 后移 } if (flag) { // 可以刪除 temp.next = temp.next.next; } else { System.out.printf(&quot;要?jiǎng)h除的%d節(jié)點(diǎn)不存在\n&quot;, no); } }</pre>#4. 単一リンク リストの完全な実裝
#

package com.gql.linkedlist;/**
 * 單鏈表
 * 
 * @guoqianliang
 *
 */public class SingleLinkedListDemo {
	public static void main(String[] args) {
		// 創(chuàng)建節(jié)點(diǎn)
		HeroNode hero1 = new HeroNode(1, "宋江", "及時(shí)雨");
		HeroNode hero2 = new HeroNode(2, "盧俊義", "玉麒麟");
		HeroNode hero3 = new HeroNode(3, "吳用", "智多星");
		HeroNode hero4 = new HeroNode(4, "林沖", "豹子頭");
		// 創(chuàng)建單向鏈表
		SingleLinkedList singleLinkedList = new SingleLinkedList();
		// 加入
		singleLinkedList.addByOrder(hero1);
		singleLinkedList.addByOrder(hero4);
		singleLinkedList.addByOrder(hero3);
		singleLinkedList.addByOrder(hero2);

		singleLinkedList.list();

		// 測(cè)試修改節(jié)點(diǎn)
		HeroNode newHeroNode = new HeroNode(2, "小盧", "玉麒麟~");
		singleLinkedList.update(newHeroNode);
		System.out.println("修改后的鏈表情況:");
		singleLinkedList.list();

		// 刪除一個(gè)節(jié)點(diǎn)
		singleLinkedList.delete(1);
		singleLinkedList.delete(2);
		singleLinkedList.delete(3);
		singleLinkedList.delete(4);
		System.out.println("刪除后的鏈表情況:");
		singleLinkedList.list();

	}}//定義SingleLinkedList,管理英雄class SingleLinkedList {
	// 初始化頭結(jié)點(diǎn),不存放具體數(shù)據(jù)
	private HeroNode head = new HeroNode(0, "", "");

	// 添加方式1:尾添加
	// 思路:
	// 1.找到當(dāng)前鏈表的最后節(jié)點(diǎn)
	// 2.將這個(gè)最后的節(jié)點(diǎn)的next指向新的節(jié)點(diǎn)
	public void add(HeroNode heroNode) {
		// 因?yàn)閔ead頭不能動(dòng),因此需要一個(gè)輔助變量(指針)temp
		HeroNode temp = head;
		while (true) {
			// 如果遍歷到鏈表的最后
			if (temp.next == null) {
				break;
			}
			// temp指針后移
			temp = temp.next;
		}
		// 當(dāng)退出循環(huán)時(shí),temp指向鏈表的最后
		temp.next = heroNode;
	}

	// 添加方式2:根據(jù)排名添加
	public void addByOrder(HeroNode heroNode) {
		HeroNode temp = head;// 借助輔助指針
		boolean flag = false;// 添加的編號(hào)是否存在
		while (true) {
			if (temp.next == null) {// 遍歷到結(jié)尾
				break;
			}
			if (temp.next.no > heroNode.no) {// 位置找到,就在temp的后面插入
				break;
			} else if (temp.next.no == heroNode.no) {// 該編號(hào)已存在
				flag = true;
				break;
			}
			temp = temp.next;// 后移,遍歷當(dāng)前鏈表
		}
		if (flag) {
			// 不能添加
			System.out.printf("準(zhǔn)備插入的英雄的編號(hào)%d已經(jīng)存在,不能加入\n", heroNode.no);
		} else {
			// 插入到temp的后面
			heroNode.next = temp.next;
			temp.next = heroNode;
		}
	}

	// 修改節(jié)點(diǎn)信息,根據(jù)節(jié)點(diǎn)的no屬性修改其他信息
	public void update(HeroNode newHeroNode) {
		// 空鏈表無(wú)法修改節(jié)點(diǎn)信息
		if (head.next == null) {
			System.out.println("鏈表為空~");
			return;
		}
		// 根據(jù)no排名找到需要修改的節(jié)點(diǎn)
		HeroNode temp = head.next;
		boolean flag = false;// flag表示是否找到需要修改的節(jié)點(diǎn)
		while (true) {
			if (temp == null) {
				// 遍歷到結(jié)尾
				break;
			}
			if (temp.no == newHeroNode.no) {
				// 找到
				flag = true;
				break;
			}
			temp = temp.next;// 后移
		}
		if (flag) {
			temp.name = newHeroNode.name;
			temp.nickname = newHeroNode.nickname;
		} else {
			System.out.printf("沒(méi)有找到編號(hào)為%d的節(jié)點(diǎn),不能修改\n", newHeroNode.no);
		}
	}

	// 刪除節(jié)點(diǎn)
	// 思路:
	// 1.找到需要?jiǎng)h除節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)
	// 2.temp.next=temp.next.next
	// 3.被刪除的節(jié)點(diǎn)將會(huì)被垃圾回收機(jī)制回收
	public void delete(int no) {
		HeroNode temp = head;
		boolean flag = false;// 是否找到待刪除節(jié)點(diǎn)
		while (true) {
			if (temp.next == null) {
				// 遍歷到結(jié)尾
				break;
			}
			if (temp.next.no == no) {
				// 找到了待刪除節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)
				flag = true;
				break;
			}
			temp = temp.next;// 后移
		}
		if (flag) {
			// 可以刪除
			temp.next = temp.next.next;
		} else {
			System.out.printf("要?jiǎng)h除的%d節(jié)點(diǎn)不存在\n", no);
		}

	}

	// 顯示鏈表[遍歷]
	public void list() {
		// 空鏈表直接返回
		if (head.next == null) {
			System.out.println("鏈表為空");
			return;
		}
		// 仍然使用輔助變量(指針),進(jìn)行循環(huán)
		HeroNode temp = head.next;
		while (true) {
			if (temp == null) {
				break;
			}
			System.out.println(temp);
			// 將temp后移
			temp = temp.next;
		}

	}}//定義HeroNode,每一個(gè)HeroNode就是一個(gè)節(jié)點(diǎn)class HeroNode {
	public int no;// 排名
	public String name;
	public String nickname;// 昵稱(chēng)
	public HeroNode next;// 指向下一個(gè)節(jié)點(diǎn)

	// 構(gòu)造器
	public HeroNode() {
		super();
	}

	public HeroNode(int no, String name, String nickname) {
		super();
		this.no = no;
		this.name = name;
		this.nickname = nickname;
	}

	// 重寫(xiě)toString
	@Override
	public String toString() {
		return "HeroNode [no=" + no + ", name=" + name + ", nickname=" + nickname + "]";
	}}
実行結(jié)果

単一リンクリスト(Linked List)関連のJava実裝
3. シングルチェーン表面テストの質(zhì)問(wèn)

上記 4 つの答え面接の質(zhì)問(wèn)は次のコードにあります

package com.gql.LinkedList;import java.util.Stack;/**
 * 模擬單鏈表
 * 
 * @author Hudie
 * @Email:guoqianliang@foxmail.com
 * @date 2020年7月16日下午6:47:42
 */public class SingleLinkedListDemo {
	public static void main(String[] args) {
		// 創(chuàng)建節(jié)點(diǎn)
		HeroNode hero1 = new HeroNode(1, "宋江", "及時(shí)雨");
		HeroNode hero2 = new HeroNode(2, "盧俊義", "玉麒麟");
		HeroNode hero3 = new HeroNode(3, "吳用", "智多星");
		HeroNode hero4 = new HeroNode(4, "林沖", "豹子頭");
		// 創(chuàng)建單向鏈表
		SingleLinkedList singleLinkedList = new SingleLinkedList();
		// 加入
		singleLinkedList.addByOrder(hero1);
		singleLinkedList.addByOrder(hero4);
		singleLinkedList.addByOrder(hero3);
		singleLinkedList.addByOrder(hero2);

		singleLinkedList.list();

		// 測(cè)試修改節(jié)點(diǎn)
		HeroNode newHeroNode = new HeroNode(2, "小盧", "玉麒麟~");
		singleLinkedList.update(newHeroNode);
		System.out.println("修改后的鏈表情況:");
		singleLinkedList.list();

		// 刪除一個(gè)節(jié)點(diǎn)
		singleLinkedList.delete(4);
		System.out.println("刪除后的鏈表情況:");
		singleLinkedList.list();
		
		//練習(xí)4:反向打印單鏈表
		System.out.println("反向打印單鏈表:");
		reversePrint(singleLinkedList.getHead());
		//練習(xí)3:反轉(zhuǎn)單鏈表
		reversalList(singleLinkedList.getHead());
		System.out.println("反轉(zhuǎn)過(guò)后的單鏈表為:");
		singleLinkedList.list();
		
		// 練習(xí)1:獲取單鏈表節(jié)點(diǎn)個(gè)數(shù)
		System.out.println("單鏈表的有效個(gè)數(shù)為:");
		System.out.println(getLength(singleLinkedList.getHead()));
		
		int index = 2;
		//練習(xí)2:獲取單鏈表倒數(shù)第index給節(jié)點(diǎn)
		System.out.println("倒數(shù)第"+ index +"個(gè)節(jié)點(diǎn)為:");
		System.out.println(getLastKNode(singleLinkedList.getHead(),index));
	}

	/**
	 * @Description: 獲取單鏈表節(jié)點(diǎn)個(gè)數(shù) 思路: while循環(huán) + 遍歷指針
	 */
	public static int getLength(HeroNode head) {
		if (head.next == null) {
			return 0;
		}
		int length = 0;
		// 輔助指針
		HeroNode p = head.next;
		while (p != null) {
			length++;
			p = p.next;
		}
		return length;
	}

	/**
	 * @Description: 
	 * 查找單鏈表中倒數(shù)第index個(gè)節(jié)點(diǎn) index:表示倒數(shù)第index給節(jié)點(diǎn) 
	 * 思路:
	 * 1.首先獲取鏈表的長(zhǎng)度length,可直接調(diào)用getLength
	 * 2.然后從鏈表第一個(gè)開(kāi)始遍歷,遍歷(length-index)個(gè) 
	 * 3.找不到返回null
	 */
	public static HeroNode getLastKNode(HeroNode head, int index) {
		if (head.next == null) {
			return null;
		}
		int length = getLength(head);
		if (index <= 0 || index > length) {
			return null;
		}
		HeroNode p = head.next;
		for(int i = 0;i < length-index;i++){
			p = p.next;
		}
		return p;
	}
	
	/**
	 * @Description: 
	 * 反轉(zhuǎn)單鏈表[帶頭節(jié)點(diǎn)]
	 * 思路:
	 * 1.先定義一個(gè)節(jié)點(diǎn)reversalHead = new HeroNode(0,"","");
	 * 2.遍歷原來(lái)的鏈表,每遍歷一個(gè)節(jié)點(diǎn),就將其取出,并放在新的鏈表reversalHead的最前端
	 * 3.原來(lái)的鏈表的head.next = reversalHead;
	 */
	public static void reversalList(HeroNode head){
		//鏈表為空或只有一個(gè)節(jié)點(diǎn),無(wú)需反轉(zhuǎn),直接返回
		if(head.next == null || head.next.next == null){
			return;
		}
		//輔助指針p
		HeroNode p = head.next;
		HeroNode next = null;//指向輔助指針p的下一個(gè)位置
		HeroNode reversalHead = new HeroNode(0,"","");
		//遍歷原來(lái)的鏈表,每遍歷一個(gè)節(jié)點(diǎn),就將其取出,并放在新的鏈表reversalHead的最前端
		while(p != null){
			next = p.next;
			p.next = reversalHead.next;
			reversalHead.next = p;
			p = next;
		}
		head.next = reversalHead.next;
	}
	/**
	 * @Description: 
	 * 反向打印單鏈表[帶頭節(jié)點(diǎn)]
	 * 思路1:單鏈表反轉(zhuǎn)后打印(不建議,因?yàn)槠茐牧藛捂湵淼慕Y(jié)構(gòu))
	 * 思路2:使用棧結(jié)構(gòu),利用棧先進(jìn)后出的特點(diǎn)
	 */
	public static void reversePrint(HeroNode head){
		if(head.next == null){
			return;
		}
		Stack stack = new Stack();
		HeroNode p = head.next;
		while(p != null){
			stack.push(p);
			p = p.next;
		}
		//將棧中的節(jié)點(diǎn)進(jìn)行打印
		while(stack.size() > 0){
			System.out.println(stack.pop());
		}
	}}// 定義SingleLinkedList,管理英雄,即鏈表的增刪改查class SingleLinkedList {
	// 初始化頭結(jié)點(diǎn),不存放具體數(shù)據(jù)
	private HeroNode head = new HeroNode(0, "", "");

	// 添加方式1:尾添加
	// 思路:
	// 1.找到當(dāng)前鏈表的最后節(jié)點(diǎn)
	// 2.將這個(gè)最后的節(jié)點(diǎn)的next指向新的節(jié)點(diǎn)
	public void add(HeroNode heroNode) {
		// 因?yàn)閔ead頭不能動(dòng),因此需要一個(gè)輔助變量(指針)temp
		HeroNode temp = head;
		while (true) {
			// 如果遍歷到鏈表的最后
			if (temp.next == null) {
				break;
			}
			// temp指針后移
			temp = temp.next;
		}
		// 當(dāng)退出循環(huán)時(shí),temp指向鏈表的最后
		temp.next = heroNode;
	}

	public HeroNode getHead() {
		return head;
	}

	// 添加方式2:根據(jù)排名添加
	public void addByOrder(HeroNode heroNode) {
		HeroNode temp = head;// 借助輔助指針
		boolean flag = false;// 添加的編號(hào)是否存在
		while (true) {
			if (temp.next == null) {// 遍歷到結(jié)尾
				break;
			}
			if (temp.next.no > heroNode.no) {// 位置找到,就在temp的后面插入
				break;
			} else if (temp.next.no == heroNode.no) {// 該編號(hào)已存在
				flag = true;
				break;
			}
			temp = temp.next;// 后移,遍歷當(dāng)前鏈表
		}
		if (flag) {
			// 不能添加
			System.out.printf("準(zhǔn)備插入的英雄的編號(hào)%d已經(jīng)存在,不能加入\n", heroNode.no);
		} else {
			// 插入到temp的后面
			heroNode.next = temp.next;
			temp.next = heroNode;
		}
	}

	// 修改節(jié)點(diǎn)信息,根據(jù)節(jié)點(diǎn)的no屬性修改其他信息
	public void update(HeroNode newHeroNode) {
		// 空鏈表無(wú)法修改節(jié)點(diǎn)信息
		if (head.next == null) {
			System.out.println("鏈表為空~");
			return;
		}
		// 根據(jù)no排名找到需要修改的節(jié)點(diǎn)
		HeroNode temp = head.next;
		boolean flag = false;// flag表示是否找到需要修改的節(jié)點(diǎn)
		while (true) {
			if (temp == null) {
				// 遍歷到結(jié)尾
				break;
			}
			if (temp.no == newHeroNode.no) {
				// 找到
				flag = true;
				break;
			}
			temp = temp.next;// 后移
		}
		if (flag) {
			temp.name = newHeroNode.name;
			temp.nickname = newHeroNode.nickname;
		} else {
			System.out.printf("沒(méi)有找到編號(hào)為%d的節(jié)點(diǎn),不能修改\n", newHeroNode.no);
		}
	}

	// 刪除節(jié)點(diǎn)
	// 思路:
	// 1.找到需要?jiǎng)h除節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)
	// 2.temp.next=temp.next.next
	// 3.被刪除的節(jié)點(diǎn)將會(huì)被垃圾回收機(jī)制回收
	public void delete(int no) {
		HeroNode temp = head;
		boolean flag = false;// 是否找到待刪除節(jié)點(diǎn)
		while (true) {
			if (temp.next == null) {
				// 遍歷到結(jié)尾
				break;
			}
			if (temp.next.no == no) {
				// 找到了待刪除節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)
				flag = true;
				break;
			}
			temp = temp.next;// 后移
		}
		if (flag) {
			// 可以刪除
			temp.next = temp.next.next;
		} else {
			System.out.printf("要?jiǎng)h除的%d節(jié)點(diǎn)不存在\n", no);
		}

	}

	// 顯示鏈表[遍歷]
	public void list() {
		// 空鏈表直接返回
		if (head.next == null) {
			System.out.println("鏈表為空");
			return;
		}
		// 仍然使用輔助變量(指針),進(jìn)行循環(huán)
		HeroNode temp = head.next;
		while (true) {
			if (temp == null) {
				break;
			}
			System.out.println(temp);
			// 將temp后移
			temp = temp.next;
		}

	}}// 定義HeroNode,每一個(gè)HeroNode就是一個(gè)節(jié)點(diǎn)class HeroNode {
	public int no;// 排名
	public String name;
	public String nickname;// 昵稱(chēng)
	public HeroNode next;// 指向下一個(gè)節(jié)點(diǎn)

	// 構(gòu)造器
	public HeroNode() {
		super();
	}

	public HeroNode(int no, String name, String nickname) {
		super();
		this.no = no;
		this.name = name;
		this.nickname = nickname;
	}

	// 重寫(xiě)toString
	@Override
	public String toString() {
		return "HeroNode [no=" + no + ", name=" + name + ", nickname=" + nickname + "]";
	}}

関連する學(xué)習(xí)の推奨事項(xiàng):
単一リンクリスト(Linked List)関連のJava実裝Java の基礎(chǔ)

以上が単一リンクリスト(Linked List)関連のJava実裝の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見(jiàn)つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫(huà)像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫(xiě)真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫(xiě)真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類(lèi)リムーバー

Video Face Swap

Video Face Swap

完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

JDBCを使用してJavaのトランザクションを処理する方法は? JDBCを使用してJavaのトランザクションを処理する方法は? Aug 02, 2025 pm 12:29 PM

JDBCトランザクションを正しく処理するには、最初に自動(dòng)コミットモードをオフにし、次に複數(shù)の操作を?qū)g行し、結(jié)果に応じて最終的にコミットまたはロールバックする必要があります。 1。CONN.SETAUTOCOMMIT(FALSE)を呼び出して、トランザクションを開(kāi)始します。 2。挿入や更新など、複數(shù)のSQL操作を?qū)g行します。 3。すべての操作が成功した場(chǎng)合はconn.commit()を呼び出し、データの一貫性を確保するために例外が発生した場(chǎng)合はconn.rollback()を呼び出します。同時(shí)に、リソースを使用してリソースを管理し、例外を適切に処理し、接続を密接に接続するために、接続の漏れを避けるために使用する必要があります。さらに、接続プールを使用してセーブポイントを設(shè)定して部分的なロールバックを達(dá)成し、パフォーマンスを改善するためにトランザクションを可能な限り短く保つことをお?jiǎng)幛幛筏蓼埂?/p>

Java仮想マシン(JVM)內(nèi)部の理解 Java仮想マシン(JVM)內(nèi)部の理解 Aug 01, 2025 am 06:31 AM

thejvmenablesjavaの「writeonce、runany where "capabilitybyexcuting byteCodeThethermainComponents:1。theClassLoaderSubSystemloads、links、andinitializes.classfilesusingbootStrap、拡張、およびアプリケーションクラスローロー、

Javaでカレンダーを操作する方法は? Javaでカレンダーを操作する方法は? Aug 02, 2025 am 02:38 AM

Java.Timeパッケージのクラスを使用して、古い日付とカレンダーのクラスを置き換えます。 2。LocalDate、LocalDateTime、LocalTimeを通じて現(xiàn)在の日付と時(shí)刻を取得します。 3。of()メソッドを使用して特定の日付と時(shí)刻を作成します。 4.プラス/マイナスメソッドを使用して、時(shí)間を不正に増加させて短縮します。 5. ZonedDateTimeとZoneIDを使用して、タイムゾーンを処理します。 6。DateTimeFormatterを介したフォーマットおよび解析の文字列。 7.インスタントを使用して、必要に応じて古い日付型と互換性があります?,F(xiàn)代のJavaでの日付処理は、java.timeapiを使用することを優(yōu)先する必要があります。

Javaフレームワークの比較:Spring Boot vs Quarkus vs Micronaut Javaフレームワークの比較:Spring Boot vs Quarkus vs Micronaut Aug 04, 2025 pm 12:48 PM

Pre-formanceTartuptimeMemoryusage、quarkusandmicronautleadduetocopile-timeprocessingingandgraalvsupport、withquarkusoftentylightbetterine serverlessシナリオ。

ネットワークポートとファイアウォールの理解 ネットワークポートとファイアウォールの理解 Aug 01, 2025 am 06:40 AM

ネットワークポートアンドファイアワルクトグテルトエナブルコマニケーションwhiledensuringsecurity.1.networksarevirtualendpointsnumbered0–655 35、withwell-knownportslike80(http)、443(https)、22(ssh)、および25(smtp)識(shí)別pecificservices.2.portsoperateovertcp(信頼できる、c

Garbage CollectionはJavaでどのように機(jī)能しますか? Garbage CollectionはJavaでどのように機(jī)能しますか? Aug 02, 2025 pm 01:55 PM

JavaのGarbage Collection(GC)は、メモリを自動(dòng)的に管理するメカニズムであり、到達(dá)不可能なオブジェクトを取り戻すことでメモリ漏れのリスクを軽減します。 1.GCルートオブジェクトからのオブジェクトのアクセシビリティ(スタック変數(shù)、アクティブスレッド、靜的フィールドなど)、および到達(dá)不可能なオブジェクトはゴミとしてマークされています。 2。マーククリアリングアルゴリズムに基づいて、すべての到達(dá)可能なオブジェクトをマークし、マークのないオブジェクトをクリアします。 3.世代の収集戦略を採(cǎi)用する:新世代(Eden、S0、S1)は頻繁にMinorGCを?qū)g行します。高齢者のパフォーマンスは少なくなりますが、MajorGCを?qū)g行するのに時(shí)間がかかります。 Metaspaceはクラスメタデータを保存します。 4。JVMはさまざまなGCデバイスを提供します。SerialGCは小さなアプリケーションに適しています。 ParallelGCはスループットを改善します。 CMSが減少します

Javaビルドツールの比較:Maven vs. Gradle Javaビルドツールの比較:Maven vs. Gradle Aug 03, 2025 pm 01:36 PM

gradleisthebetterchoiceformostnewprojectoitssuperorfficability、performance、andmoderntoolingsupport.1.gradle’sgroovy/kotlindslismoreconciseandexpressiveethanmaven’sverboseml.2.gradleorformsmavenbenbumebutedwitedwitedwitedspedexは

説明された延期聲明の例で進(jìn)みます 説明された延期聲明の例で進(jìn)みます Aug 02, 2025 am 06:26 AM

Deferは、クリーニングリソースなど、関數(shù)が戻る前に指定された操作を?qū)g行するために使用されます。パラメーターは、延期時(shí)にすぐに評(píng)価され、関數(shù)は最後のファーストアウト(LIFO)の順に実行されます。 1.複數(shù)の債務(wù)は、宣言の逆の順序で実行されます。 2.ファイルの閉鎖などの安全なクリーニングに一般的に使用されます。 3。指定された返品値を変更できます。 4.回復(fù)に適したパニックが発生した場(chǎng)合でも実行されます。 5。リソースの漏れを防ぐために、ループで延期の亂用を避けます。正しい使用により、コードのセキュリティと読みやすさが向上します。

See all articles