主頁 >  其他 > 復習Java網路編程.NET包&Java面試題Redis哨兵模式&生活【記錄一個咸魚大學生三個月的奮進生活】022

復習Java網路編程.NET包&Java面試題Redis哨兵模式&生活【記錄一個咸魚大學生三個月的奮進生活】022

2021-07-30 09:00:33 其他

記錄一個咸魚大學生三個月的奮進生活022

  • 復習Java網路編程.NET包
    • 網路層知識
    • 傳輸層知識
    • java.net包
      • InetAddress類
      • ServerSocket類和Socket類的使用(基于TCP的通訊)
      • DatagramSocket和DatagramPacket使用(基于UDP的通訊)
  • 學習Java面試題(Redis哨兵模式)
  • 照片分享

復習Java網路編程.NET包

在正式開始之前我們先來了解一下什么是網路?
網路: 以某種介質連接各個終端實作資源共享和通信的通信系統

ISO模型/七層協議
這個知識其實在軟考的每一科,無論中級還是高級的考試中都屬于一個必考的知識點,應該是每個程式員都要記住的知識

這是我之前備戰軟考時的筆記,要是大家實在覺得難記,就可以背個口訣:巫術忘傳會飚鷹(從下往上每一層)

巫:物理層 、術:資料鏈路層 、忘:網路層 、傳:傳輸層 、會:會話層 、飚:表示層 、鷹:應用層

然后還有個模型也很重要叫 TCP/IP模型
TCP/IP模型 和 ISO模型是相輔相成的,也就是我筆記中右邊的圖
應用層(3個) 對應著 應用層、表示層、會話層
傳輸層(1個) 對應著 傳輸層
網路層(1個) 對應著 網路層
網路介面層(2個) 對應著 資料鏈路層、物理層

我們這次主要學習傳輸層和網路層這兩個知識,Java的網路編程用的最多的也就是這兩層模型

網路層知識

網路層最常見的應用就是IP地址的應用和協議

IP地址根據位數分為 IPV4 和 IPV6
IPV4(現在很多網站常用):0-255.0-255.0-255.0-255
IPV6(解決IPV4不夠用的情況):0-255.0-255.0-255.0-255.0-255.0-255

IP地址還分為 靜態IP 和 動態IP
動態IP:上網不用IP時就換人,誰用誰上
靜態IP:給常駐機器例如服務器一個IP地址

DNS域名地址:就是最常用的網站域名,例如:www.csdn.net

而 IP地址 和 DNS域名地址 也是能相互轉換的
例如:www.baidu.com 就是百度的DNS域名地址
然后我們可以通過DOS命令輸入指令獲取IP地址

ping www.baidu.com

獲取到百度的IP地址,如下圖:

又或者是到站長之家輸入域名查找該域名的IP地址

又因為 IP地址 和 DNS域名地址 是可以相互轉換的
所以我們可以通過在瀏覽器地址欄輸入www.baidu.com 或者 14.215.177.39 這兩種方法來訪問百度

埠:
用于實作程式間的通信
常用的埠有:
Telnet協議 —— 23
簡單郵件傳輸協議 —— 25
檔案傳輸協議 —— 21
超文本傳輸協議 —— 80

協議:
網路中計算機之間通信的規則
常用的協議有:
超文本傳輸協議 (HTTP)
檔案傳輸協議 (FTP)
簡單郵件傳輸協議 (SMTP)
網路新聞傳輸協議 (NNTP)

傳輸層知識

傳輸層最常見的應用就是TCP傳輸和UDP傳輸

TCP: 雙方都不間斷交流,安全,穩定的資料流(就像打電話),因為是資料流所以資訊都是以位元組的形式傳遞
UDP: 單方面的間斷的,不安全不穩定的資料包(就像寫信),因為是資料包所以新訊息都是以byte陣列的形式傳遞

java.net包

InetAddress類

封裝了 IP地址 和 DNS域名

InetAddress實體化時只能用其中的getByName()方法進行實體化:
InetAddress 實體名 = InetAddress.getByName(“IP地址或DNS”);

.getHostName()方法 —— 回傳呼叫的實體的DNS域名

.getHostAddress()方法 —— 回傳呼叫的實體的IP地址


ServerSocket類和Socket類的使用(基于TCP的通訊)

Socket類
Socket可以使一個應用從網路中讀取和寫入資料,不同計算機上的兩個應用可以通過連接發送和接受位元組流,就像是兩個客戶端要通信時進行傳輸要用的類,所以Socket經常會發起通信,然后通信建立后就是兩個Socket在進行傳輸,
Socket實體化: Socket 實體名 = new Socket(“要通訊的IP地址”, 要通訊的Port值);
Socket類的常用方法:
.getLocalPort()方法 —— 獲取自己的Port值
.getPort()方法 —— 獲取通訊對方的Port值

ServerSocket類
因為要實作網路傳輸,所以要實作一個服務器應用,服務器需隨時待命,因為不知道客戶端什么時候會發來請求,此時,我們就要使用ServerSocket,
ServerSocket與Socket不同,ServerSocket是等待客戶端的請求,一旦獲得一個連接請求,就創建一個Socket示例來與客戶端進行通信,ServerSocket就像是兩個終端(Socket)之間通訊的轉化操作,
ServerSocket實體化: ServerSocket 實體名 = new ServerSocket(port值); 【這個port值是用于其他終端聯系這個ServerSocket的,也就是Socket類實體化時需要輸入的Port值,不指定的話系統會給一個隨機的port值】
ServerSocket類的常用方法:
.accept()方法 —— 回傳跟本類ServerSocket進行通訊的Socket類

常出現的問題:
Connection reset例外(兩邊任意一個終端例外終止就會報這個錯,因為網路通信之中用I/O讀取資訊,所以經常會報這個錯,回圈讀取的時候加個判斷條件跳出回圈就可以解決)

例子(用ServerSocket類和Socket類進行網路通信):
Work29_wangluochuanshuTCPSocket【ServerSocket類】//記住要先啟動這個ServerSocket類才能接收資訊:

package com.javawork29;

// ServerSocket和Socket使用(基于TCP的通訊)
// 這是被通訊的ServerSocket然后再用Socket進行讀取顯示

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;

public class Work29_wangluochuanshuTCPServerSocket {

	public static void main(String[] args) {
		ServerSocket serverSocket = null;              // ServerSocket就像是TCP通訊中的兩個終端通訊之間的轉化操作
		
		Socket socket = null;                          // Socket就像兩個通訊終端里的一個被通訊的終端
		
		BufferedReader reader = null;
		BufferedWriter writer = null;
		
		try {
			serverSocket = new ServerSocket(8888);     // 實體化:ServerSocket 名 = new ServerSocket(port值);       這個port數是用于其他終端聯系這個ServerSocket的,不指定的話系統會給一個隨機的port值
			
			socket = serverSocket.accept();            // .accept()方法 回傳跟本類ServerSocket進行通訊的Socket類
			
			// 之后是用I/O包對Socket進行資料讀取
			reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));          // 先用.getInputStream()方法獲取Socket實體的位元組,然后InputStreamReader將位元組轉換為字符,然后再用BufferedReader緩沖流讀取(記得因為InputStreamReader和BufferedReader都是處理流所以需要嵌套實體化使用)
			String info = null;
			while(true) {
				info = reader.readLine();
				System.out.println("ServerSocket收到的訊息:" + info);
				if("再見!".equals(info)) {
					break;
				}
			}
			
			// 之后是通過I/O包像另一終端進行通訊(原理是剛才獲取的跟本類進行通訊的socket物件再將內容通過I/O更改為其他內容,)
			writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
			writer.write("沒錢了就告訴老爸!\n");
			writer.flush();
			writer.write("你努力學好軟體開發!\n");
			writer.flush();
			writer.write("再見!\n");
			writer.flush();
			
			
			// socket類中的方法
			System.out.println(socket.getLocalPort());        // .getLocalPort()方法 獲得自己的Port值      
			System.out.println(socket.getPort());             // .getPort()方法 獲得通訊對方的Port值      
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				// 關閉in和out操作
				if(reader != null) {
					reader.close();
					reader = null;
				}
				if(writer != null) {
					writer.close();
					writer = null;
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

Work29_wangluochuanshuTCPSocket【Socket類】:

package com.javawork29;

// ServerSocket和Socket使用(基于TCP的通訊)
// 這是先進行通訊的連接ServerSocket的Socket

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class Work29_wangluochuanshuTCPSocket {

	public static void main(String[] args) {
		
		Socket socket = null;
		
		BufferedWriter writer = null;
		BufferedReader reader = null;
		
		try {
			socket = new Socket("127.0.0.1", 8888);                 // Socket實體化:Socket 名 = new Socket("要通訊的IP地址", 要通訊的Port值);    這就建立通訊了,之后再在這個Socket實體里進行I/O的輸寫資訊
			
			// 通過I/O書寫Socket進行傳輸資訊,因為那邊readLine方法所以有換行才能讀取
			writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
			writer.write("你好,老王!\n");
			writer.flush();
			writer.write("最近缺錢了!\n");
			writer.flush();
			writer.write("再打一千!\n");
			writer.flush();
			writer.write("再見!\n");
			writer.flush();
			
			// 通過I/O讀取Socket進行顯示資訊
			reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
			String info = null;
			while(true) {
				info = reader.readLine();
				System.out.println("Socket收到的資訊:" + info);
				if("再見!".equals(info)) {
					break;
				}
			}
			
			// socket類中的方法
			System.out.println(socket.getLocalPort());        // .getLocalPort()方法 獲得自己的Port值      
			System.out.println(socket.getPort());             // .getPort()方法 獲得通訊對方的Port值  
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				// 關閉in和out操作
				if(reader != null) {
					reader.close();
					reader = null;
				}
				if(writer != null) {
					writer.close();
					writer = null;
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
}

運行結果【發起通信的Socket類】:

運行結果【接收到通信的ServerSocket類】:


DatagramSocket和DatagramPacket使用(基于UDP的通訊)

DatagramSocket類
DatagramSocket是基于UDP的連接,所以客戶端不需要先連接資料,可以直接發送給指定服務端,
DatagramSocket實體化: DatagramSocket 實體名 = DatagramSocket(port值); —— 需要給一個port值以供傳輸資訊
DatagramSocket類的常用方法:
.send()方法 —— 用于發送packet物件
.receive()方法 —— 用于接收packet物件

DatagramPacket類
DatagramPacket就像UDP通信協議中用來建立通訊的兩個客戶端,當需要發送訊息時和接收訊息時兩個實體化的方法是不一樣的,
DatagramPacket實體化:
當需要發送資訊時的DatagramPacket:
DatagramPacket 實體名 = new DatagramPacket(pool, pool.length, InetAddress.getByName(“發送的IP地址”), 對方的port值);

當需要接收資訊時的DatagramPacket:
DatagramPacket 實體名 = new DatagramPacket(pool, pool.length);

DatagramPacket類的常用方法:
.setData(“內容”.getBytes()) —— 設定packet內容的方法,里面寫需要發送內容的byte陣列值
.getData() —— 獲取packet的內容,接收到的packet物件里面是byte陣列,需要用實體化String里的轉化byte陣列內容的構造方法實體化:String info = new String(packet.getData());

常出現的問題:
因為UDP是通過byte陣列進行傳播資料的,所以要宣告一個byte陣列pool,大小為8的倍數

例子(用DatagramSocket類和DatagramPacket類進行網路通信):
Work29_wangluochuanshuUDPDatagram1【發送資訊的DatagramPacket類】:

package com.javawork29;

// DatagramSocket和DatagramPacket使用,本類是終端1(基于UDP的通訊)

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

public class Work29_wangluochuanshuUDPDatagram1 {

	public static void main(String[] args) {
		
		System.out.println("test1開始");
		
		DatagramSocket socket = null;                  // DatagramSocket進行發送資訊
		DatagramPacket packet = null;                  // DatagramPacket進行資訊撰寫,根據發送還是接收實體化格式不同
		
		try {
			
			socket = new DatagramSocket(5555);         // 實體化DatagramSocket(port值)時也需要給一個port值以供傳輸資訊
			
			byte[] pool = new byte[1024];              // 因為UDP是通過byte陣列進行傳播資料的,所以要宣告一個byte陣列pool,大小為8的倍數
			
			// 實體化發送資訊時的DatagramPacket:   DatagramPacket 名 = new DatagramPacket(pool, pool.length, InetAddress.getByName("發送的IP地址"), 對方的port值);
			packet = new DatagramPacket(pool, pool.length, InetAddress.getByName("127.0.0.1"), 6666);
			
			packet.setData("你好test2".getBytes());         // DatagramPacket物件的.setData("內容".getBytes())設定packet內容方法,里面寫需要發送內容的byte陣列值
			
			socket.send(packet);                            // socket.send(packet);  .send()方法 發送packet物件
		
		} catch (SocketException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

Work29_wangluochuanshuUDPDatagram2【接收資訊的DatagramPacket類】//記住要先啟動這個接收資訊的DatagramPacket類才能接收到資訊:

package com.javawork29;

// DatagramSocket和DatagramPacket使用,本類是終端2(基于UDP的通訊)

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
import java.net.UnknownHostException;

public class Work29_wangluochuanshuUDPDatagram2 {

	public static void main(String[] args) {
		
		System.out.println("test2開始");
		
		DatagramSocket socket = null;                  // DatagramSocket進行發送資訊
		DatagramPacket packet = null;                  // DatagramPacket進行資訊撰寫,根據發送還是接收實體化格式不同
		
		try {
			
			socket = new DatagramSocket(6666);         // 實體化DatagramSocket(port值)時也需要給一個port值以供傳輸資訊
			
			byte[] pool = new byte[1024];
			
			// 實體化接收資訊時的DatagramPacket:   DatagramPacket 名 = new DatagramPacket(pool, pool.length);
			packet = new DatagramPacket(pool, pool.length);
			
			socket.receive(packet);                    // socket.receive(packet);  .receive()方法 接收packet物件
			
			String info = new String(packet.getData());           // 接收到的packet物件里面是byte陣列,需要用實體化String里的轉化byte陣列內容的構造方法實體化
			// DatagramPacket物件的.getData()方法獲取packet的內容
			
			System.out.println("test2收到的資訊:" + info);
		
		} catch (SocketException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

運行結果【接收資訊的DatagramPacket類也就是test2類】:

運行結果【發送資訊的DatagramPacket類也就是test1類】:

好了以上就是網路編程所學內容,下次帖子開始我們就要復習第二個專案了,就是根據之前所學的 javaswing、多執行緒、I/O、網路通信 所做的簡易在線聊天系統,敬請期待哦

學習Java面試題(Redis哨兵模式)

指路陳哈哈大佬的Redis相關面試題原帖

照片分享

作者:攝影記錄者|張樂 ? 作品名:武漢黃鶴樓夜色 ?出自500px社區






2021.07.27??by wyh

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290984.html

標籤:其他

上一篇:opencv-python基礎用法詳細代碼-圖片加載-ROI-邊緣濾波-二值化-輪廓提取-膨脹腐蝕等

下一篇:Linux企業運維——haproxy負載均衡

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more