主頁 > 作業系統 > 需要更新哪些內容才能使JUnit5測驗成功?

需要更新哪些內容才能使JUnit5測驗成功?

2022-01-26 08:07:49 作業系統

我已經為我在 SNHU 的計算機科學課程創建了這個 Java 專案,并且對為什么在對代碼運行 JUnit5 測驗時遇到這些錯誤感到困惑和困惑。我在運行 JUnit5 測驗時收到的錯誤是:

org.opentest4j.AssertionFailedError: First name was not null. == > expected: not < null > 
  at org.junit.jupiter.api.AssertionUtils.fail(AssertionUtils.java: 39)
at org.junit.jupiter.api.Assertions.fail(Assertions.java: 134)
at org.junit.jupiter.api.AssertNotNull.failNull(AssertNotNull.java: 47)
at org.junit.jupiter.api.AssertNotNull.assertNotNull(AssertNotNull.java: 36)
at org.junit.jupiter.api.Assertions.assertNotNull(Assertions.java: 308)
at module3.ContactTest.testContactFirstNameNotNull(ContactTest.java: 76)
at java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java: 64)
at java.base / jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java: 43)
at java.base / java.lang.reflect.Method.invoke(Method.java: 564)
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java: 725)
at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java: 60)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java: 131)
at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java: 149)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java: 140)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java: 84)
at org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java: 115)
at org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java: 105)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java: 106)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java: 64)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java: 45)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java: 37)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java: 104)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java: 98)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$7(TestMethodTestDescriptor.java: 214)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java: 73)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java: 210)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java: 135)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java: 66)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java: 151)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java: 73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java: 141)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java: 137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java: 139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java: 73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java: 138)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java: 95)
at java.base / java.util.ArrayList.forEach(ArrayList.java: 1511)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java: 41)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java: 155)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java: 73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java: 141)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java: 137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java: 139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java: 73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java: 138)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java: 95)
at java.base / java.util.ArrayList.forEach(ArrayList.java: 1511)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java: 41)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$6(NodeTestTask.java: 155)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java: 73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java: 141)
at org.junit.platform.engine.support.hierarchical.Node.around(Node.java: 137)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$9(NodeTestTask.java: 139)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java: 73)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java: 138)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java: 95)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java: 35)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java: 57)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java: 54)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java: 107)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java: 88)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java: 54)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java: 67)
at org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java: 52)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java: 114)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java: 95)
at org.junit.platform.launcher.core.DefaultLauncherSession$DelegatingLauncher.execute(DefaultLauncherSession.java: 91)
at org.junit.platform.launcher.core.SessionPerRequestLauncher.execute(SessionPerRequestLauncher.java: 60)
at org.eclipse.jdt.internal.junit5.runner.JUnit5TestReference.run(JUnit5TestReference.java: 98)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java: 40)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java: 529)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java: 756)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java: 452)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java: 210)

我在 Eclipse 中運行這個專案并且是最新的軟體。以下是此作業的說明和代碼。先感謝您。

指示:

概述

正如您在模塊一和模塊二中所了解的,可以針對給定情況采用各種型別的軟體測驗。對于本作業,您將使用代碼創建單元測驗以發現移動應用程式的錯誤。您將開發聯系服務和聯系物件。

迅速的

對于將在模塊六中到期的專案一,您被要求為客戶開發一個移動應用程式。客戶將向您提供要求。您的作業是撰寫應用程式代碼并提供單元測驗以驗證應用程式是否滿足客戶的要求。對于這個里程碑,您將專注于提供聯系服務。這些服務的目的是在應用程式中添加、更新和洗掉聯系人物件。

聯系人服務使用記憶體中的資料結構來支持存盤聯系人(不需要資料庫)。此外,此里程碑沒有用戶界面。您將通過 JUnit 測驗驗證聯系服務。聯系服務包含聯系物件以及聯系服務。要求概述如下。

接觸類要求

  • 聯系人物件應具有要求的唯一聯系人 ID 字串,不能超過 10 個字符。聯系人 ID 不得為空且不可更新。
  • 聯系人物件應具有不能超過 10 個字符的必需的 firstName String 欄位。firstName 欄位不得為空。
  • 聯系人物件應具有不能超過 10 個字符的必需的姓氏字串欄位。lastName 欄位不得為空。
  • 聯系人物件應有一個必需的電話字串欄位,該欄位必須正好是 10 位數字。電話欄位不得為空。
  • 聯系人物件應有一個不超過 30 個字符的必填地址欄位。地址欄位不應為空。

聯系服務要求

  • 聯系人服務應該能夠添加具有唯一 ID 的聯系人。
  • 聯系人服務應能夠洗掉每個聯系人 ID 的聯系人。
  • 聯系人服務應能夠洗掉每個聯系人 ID 的聯系人。
  • 聯系服務應能夠更新每個聯系 ID 的聯系欄位。以下欄位是可更新的:
  • 數字
  • 地址

聯系方式.java

//Description: This is the contact class. It creates and stores contact information.

package module3;

public class Contact {
   String contactID;
   String firstName;
   String lastName;
   String phoneNumber;
   String address;
  
   public Contact(String contactID, String firstName, String lastName, String phoneNumber) {
       super();
       this.contactID = contactID;
       this.firstName = firstName;
       this.lastName = lastName;
       this.phoneNumber = phoneNumber;
       this.address = address;
   }
  
   public String getContactID() {
       return contactID;
   }

   public void setContactID(String contactID) {
       this.contactID = contactID;
   }

   public String getFirstName() {
       return firstName;
   }

   public void setFirstName(String firstName) {
       this.firstName = firstName;
   }

   public String getLastName() {
       return lastName;
   }

   public void setLastName(String lastName) {
       this.lastName = lastName;
   }

   public String getPhoneNumber() {
       return phoneNumber;
   }

   public void setPhoneNumber(String phoneNumber) {
       this.phoneNumber = phoneNumber;
   }

   public String getAddress() {
       return address;
   }

   public void setAddress(String address) {
       this.address = address;
   }

   @Override
   public String toString() {
       return "Contact [contactID="   contactID   ", firstName="   firstName   ", lastName="   lastName
                 ", phoneNumber="   phoneNumber   ", address="   address   "]";
   }
  
}

聯系服務.java:

//Description: This is the contact service. It maintains a list of contacts and has capabilities
//for adding and deleting contacts, as well as updating first name, last name, phone number, and address.

package module3;

import java.util.ArrayList;

public class ContactService {
//will contain our list of contacts
  
private ArrayList<Contact> contacts;
  
public ContactService()
{
//beginning call for the array list
contacts = new ArrayList<>();
}
  
//need to have an add contact, remove contact and update contact feature
//set add contact to have all values
public boolean addContact(Contact contact){
boolean contactAlready= false;
//run through all the contacts in the list made
for (Contact contactList:contacts)
{
//test to see if already a contact
//if so make contactAlready true
if (contactList.equals(contact))
{
contactAlready = true;
}
}
//if not a contact add it as one
if (!contactAlready)
{
contacts.add(contact);
//after adding is now true
return true;
}
else
{
return false;
}
}
  
//delete needed via contactID
public boolean deleteContact(String string)
{
//run through list of contacts
for (Contact contactList:contacts)
{
//if equals to contactID will remove and return
if (contactList.getContactID().equals(string))
{
//remove and return true
contacts.remove(contactList);
return true;
}
}
//else return false
return false;
}
  
//update is trickiest due to needing to make sure still fits parameters
//nothing means no change
public boolean updateContact(String contactID, String firstName, String lastName, String phoneNumber, String address)
{
//run through loop again
for (Contact contactList:contacts)
{
//if contactID matches, run through each with making sure not "" and meets requirements
//then return true as it did equal update.
if (contactList.getContactID().equals(contactID))
{
if(!firstName.equals("") && !(firstName.length()>10))
{
contactList.setFirstName(firstName);
}
if(!lastName.equals("") && !(lastName.length()>10))
{
contactList.setFirstName(lastName);
}
if(!phoneNumber.equals("") && (phoneNumber.length()==10))
{
contactList.setFirstName(phoneNumber);
}
if(!address.equals("") && !(address.length()>30))
{
contactList.setFirstName(address);
}
return true;
}
}
//else return false
return false;
}
}

ContactTest.java:

//Description: This is the unit tests for the contact class (ContactTest).

package module3;

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.DisplayName;
import static org.junit.jupiter.api.Assertions.*;

public class ContactTest {
/*
* The following tests exercise the Contact class.
* The first 5 tests to make sure the field does not become longer than the constraint
* (10 characters for first and last name, exactly 10 characters for phone number,
* and 30 characters for the address).
* The last 4 tests ensure that each field is not null.
* ContactID is not tested for being not null because there isn't a way to create
* a contact with a null contactID. Likewise it is not tested for being non-updateable
* because there is no way to update it.
*/
@Test
@DisplayName("Contact ID cannot have more than 10 characters")
void testContactIDWithMoreThanTenCharacters() {
Contact contact = new Contact("FirstName","LastName","PhoneNumbr","Address");
if(contact.getContactID().length() > 10) {
fail("Contact ID has more than 10 characters.");
}
}

@Test
@DisplayName("Contact First Name cannot have more than 10 characters")
void testContactFirstNameWithMoreThanTenCharacters() {
Contact contact = new Contact("OllyOllyOxenFree","LastName","PhoneNumbr","Address");
if(contact.getFirstName().length() > 10) {
fail("First Name has more than 10 characters.");
}
}

@Test
@DisplayName("Contact Last Name cannot have more than 10 characters")
void testContactLastNameWithMoreThanTenCharacters() {
Contact contact = new Contact("FirstName","OllyOllyOxenFree","PhoneNumbr","Address");
if(contact.getLastName().length() > 10) {
fail("Last Name has more than 10 characters.");
}
}

@Test
@DisplayName("Contact phone number is exactly 10 characters")
void testContactNumberWithMoreThanTenCharacters() {
Contact contact = new Contact("FirstName", "LastName", "55555555555","Address");
if(contact.getPhoneNumber().length() != 10) {
fail("Phone number length does not equal 10.");
}
}

@Test
@DisplayName("Contact address cannot have more than 30 characters")
void testContactAddressWithMoreThanThirtyCharacters() {
Contact contact = new Contact("FirstName","LastName","PhoneNumbr","123456789 is nine characters long"
  "123456789 is another nine characters long");
if(contact.getAddress().length() > 30) {
fail("Address has more than 30 characters.");
}
}

@Test
@DisplayName("Contact First Name shall not be null")
void testContactFirstNameNotNull() {
Contact contact = new Contact(null, null, null, null);
assertNotNull(contact.getFirstName(), "First name was not null.");
}

@Test
@DisplayName("Contact Last Name shall not be null")
void testContactLastNameNotNull() {
Contact contact = new Contact(null, null, null, null);
assertNotNull(contact.getLastName(), "Last name was null.");
}

@Test
@DisplayName("Contact Phone Number shall not be null")
void testContactPhoneNotNull() {
Contact contact = new Contact("FirstName", "LastName", null,"Address");
assertNotNull(contact.getPhoneNumber(), "Phone number was null.");
}

@Test
@DisplayName("Contact Address shall not be null")
void testContactAddressNotNull() {
Contact contact = new Contact(null, null, null, null);
assertNotNull(contact.getAddress(), "Address was null.");
}
}

聯系服務測驗.java:

//Description: This is the unit tests for the contact service (ContactServiceTest)

package module3;

import static org.junit.Assert.assertEquals;

import org.junit.Test;

public class ContactServiceTest {

   //need to test add, delete and update
//templates
/*
* Contact("1413252", "Jane", "Doe", "4444444444", "Sample 24 Drive");
Contact("1309403", "Malleus", "Draconia", "2187123404", "Valley of Thorns");
Contact("9752319", "Vil", "Schoenheit", "9215501793", "Land of Proxynee");
*/
  
@Test
public void testAdd()
{
ContactService cs = new ContactService();
Contact test1 = new Contact("1413252", "Jane", "Doe", "4444444444");
assertEquals(true, cs.addContact(test1));
}

@Test
public void testDelete()
{
   ContactService cs = new ContactService();
     
Contact test1 = new Contact("1413252", "Jane", "Doe", "4444444444");
Contact test2 = new Contact("1309403", "Malleus", "Draconia", "2187123404");
Contact test3 = new Contact("9752319", "Vil", "Schoenheit", "9215501793");

cs.addContact(test1);
cs.addContact(test2);
cs.addContact(test3);

assertEquals(true, cs.deleteContact("1309403"));
assertEquals(false, cs.deleteContact("1309404"));
assertEquals(false, cs.deleteContact("1309403"));
}

@Test
public void testUpdate()
{
ContactService cs = new ContactService();
     
Contact test1 = new Contact("1413252", "Jane", "Doe", "4444444444");
Contact test2 = new Contact("1309403", "Malleus", "Draconia", "2187123404");
Contact test3 = new Contact("9752319", "Vil", "Schoenheit", "9215501793");

cs.addContact(test1);
cs.addContact(test2);
cs.addContact(test3);

assertEquals(true, cs.updateContact("9752319", "VilFirst", "SchoenheitLast", "9215501793", "Land of Proxynee"));
assertEquals(false, cs.updateContact("9752322", "VilFirst", "SchoenheitLast", "9215501793", "Land of Proxynee"));
}

}

uj5u.com熱心網友回復:

在瀏覽了你的代碼之后,我可以找出這些錯誤,因為你的測驗失敗了。

測驗 1

@Test
@DisplayName("Contact address cannot have more than 30 characters")
void testContactAddressWithMoreThanThirtyCharacters() {
    
Contact contact = new Contact("FirstName","LastName","PhoneNumbr","123456789 is nine characters long"
  "123456789 is another nine characters long");
System.out.println("contact address i ---------"   contact.getAddress().length());
if(contact.getAddress().length() > 30) {
fail("Address has more than 30 characters.");
}
}

失敗的原因:

創建物件聯系人時,您沒有為地址傳遞值,因為您的建構式只有這些值:

public Contact(String contactID, String firstName, String lastName, String phoneNumber)

因此,默認情況下,您的地址值僅為 null。當您對空物件應用任何方法呼叫時(contact.getAddress().length()),它會給出空指標例外。

測驗 2

@Test
@DisplayName("Contact phone number is exactly 10 characters")
void testContactNumberWithMoreThanTenCharacters() {
Contact contact = new Contact("FirstName", "LastName", "5555555555","Address");

if(contact.getPhoneNumber().length() != 10) {
fail("Phone number length does not equal 10.");
}
}

失敗的原因:

您傳遞的是字串地址而不是您的電話號碼:您必須糾正您的測驗才能通過

@Test
@DisplayName("Contact phone number is exactly 10 characters")
void testContactNumberWithMoreThanTenCharacters() {
Contact contact = new Contact("FirstName", "LastName", "Address","5555555555");
System.out.println("contact digits  i ---------"   contact.getPhoneNumber().length() );
if(contact.getPhoneNumber().length() != 10) {
fail("Phone number length does not equal 10.");
}
}

此外,如果不是在運行每個測驗之前創建一個新物件,您實際上應該使用@Before 注釋在運行每個測驗之前創建初始化條件。

整改

@Test
@DisplayName("Contact address cannot have more than 30 characters")
void testContactAddressWithMoreThanThirtyCharacters() {
    
Contact c1 = new Contact("FirstName","LastName","value is","PhoneNumbr","address is longer than 30 characters ");
System.out.println("contact address i ---------"   c1.getAddress().length());
System.out.println("contact address i ---------"   c1.getAddress());
System.out.println(c1);
assertTrue(c1.getAddress().length() > 30);
}

完成這些整改后,所有測驗通過 需要更新哪些內容才能使 JUnit5 測驗成功?

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

標籤:

上一篇:無法理解導致斷言之間差異的節點版本之間的差異

下一篇:如何測驗服務或正確模擬?Java11、Spock框架

標籤雲
其他(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)

熱門瀏覽
  • CA和證書

    1、在 CentOS7 中使用 gpg 創建 RSA 非對稱密鑰對 gpg --gen-key #Centos上生成公鑰/密鑰對(存放在家目錄.gnupg/) 2、將 CentOS7 匯出的公鑰,拷貝到 CentOS8 中,在 CentOS8 中使用 CentOS7 的公鑰加密一個檔案 gpg -a ......

    uj5u.com 2020-09-10 00:09:53 more
  • Kubernetes K8S之資源控制器Job和CronJob詳解

    Kubernetes的資源控制器Job和CronJob詳解與示例 ......

    uj5u.com 2020-09-10 00:10:45 more
  • VMware下安裝CentOS

    VMware下安裝CentOS 一、軟硬體準備 1 Centos鏡像準備 1.1 CentOS鏡像下載地址 下載地址 1.2 CentOS鏡像下載程序 點擊下載地址進入如下圖的網站,選擇需要下載的版本,這里選擇的是Centos8,點擊如圖所示。 決定選擇Centos8后,選擇想要的鏡像源進行下載,此 ......

    uj5u.com 2020-09-10 00:12:10 more
  • 如何使用Grep命令查找多個字串

    如何使用Grep 命令查找多個字串 大家好,我是良許! 今天向大家介紹一個非常有用的技巧,那就是使用 grep 命令查找多個字串。 簡單介紹一下,grep 命令可以理解為是一個功能強大的命令列工具,可以用它在一個或多個輸入檔案中搜索與正則運算式相匹配的文本,然后再將每個匹配的文本用標準輸出的格式 ......

    uj5u.com 2020-09-10 00:12:28 more
  • git配置http代理

    git配置http代理 經常遇到克隆 github 慢的問題,這里記錄一下幾種配置 git 代理的方法,解決 clone github 過慢。 目錄 git配置代理 git單獨配置github代理 git配置全域代理 配置終端環境變數 git配置代理 主要使用 git config 命令 git單獨 ......

    uj5u.com 2020-09-10 00:12:33 more
  • Linux npm install 裝包時提示Error EACCES permission denied解

    npm install 裝包時提示Error EACCES permission denied解決辦法 ......

    uj5u.com 2020-09-10 00:12:53 more
  • Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包

    Centos 7下安裝nginx,使用yum install nginx,提示沒有可用的軟體包。 18 (flaskApi) [root@67 flaskDemo]# yum -y install nginx 19 已加載插件:fastestmirror, langpacks 20 Loading ......

    uj5u.com 2020-09-10 00:13:13 more
  • Linux查看服務器暴力破解ssh IP

    在公網的服務器上經常遇到別人爆破你服務器的22埠,用來挖礦或者干其他嘿嘿嘿的事情~ 這種情況下正確的做法是: 修改默認ssh的22埠 使用設定密鑰登錄或者白名單ip登錄 建議服務器密碼為復雜密碼 創建普通用戶登錄服務器(root權限過大) 建立堡壘機,實作統一管理服務器 統計爆破IP [root ......

    uj5u.com 2020-09-10 00:13:17 more
  • CentOS 7系統常見快捷鍵操作方式

    Linux系統中一些常見的快捷方式,可有效提高操作效率,在某些時刻也能避免操作失誤帶來的問題。 ......

    uj5u.com 2020-09-10 00:13:31 more
  • CentOS 7作業系統目錄結構介紹

    作業系統存在著大量的資料檔案資訊,相應檔案資訊會存在于系統相應目錄中,為了更好的管理資料資訊,會將系統進行一些目錄規劃,不同目錄存放不同的資源。 ......

    uj5u.com 2020-09-10 00:13:35 more
最新发布
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:43:21 more
  • vim的常用命令

    Vim的6種基本模式 1. 普通模式在普通模式中,用的編輯器命令,比如移動游標,洗掉文本等等。這也是Vim啟動后的默認模式。這正好和許多新用戶期待的操作方式相反(大多數編輯器默認模式為插入模式)。 2. 插入模式在這個模式中,大多數按鍵都會向文本緩沖中插入文本。大多數新用戶希望文本編輯器編輯程序中一 ......

    uj5u.com 2023-04-20 08:42:36 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:26:53 more
  • 設定Windows主機的瀏覽器為wls2的默認瀏覽器

    這里以Chrome為例。 1. 準備作業 wsl是可以使用Windows主機上安裝的exe程式,出于安全考慮,默認情況下改功能是無法使用。要使用的話,終端需要以管理員權限啟動。 我這里以Windows Terminal為例,介紹如何默認使用管理員權限打開終端,具體操作如下圖所示: 2. 操作 wsl ......

    uj5u.com 2023-04-19 09:25:49 more
  • docker學習

    ###Docker概述 真實專案部署環境可能非常復雜,傳統發布專案一個只需要一個jar包,運行環境需要單獨部署。而通過Docker可將jar包和相關環境(如jdk,redis,Hadoop...)等打包到docker鏡像里,將鏡像發布到Docker倉庫,部署時下載發布的鏡像,直接運行發布的鏡像即可。 ......

    uj5u.com 2023-04-19 09:19:04 more
  • Linux學習筆記

    IP地址和主機名 IP地址 ifconfig可以用來查詢本機的IP地址,如果不能使用,可以通過install net-tools安裝。 Centos系統下ens33表示主網卡;inet后表示IP地址;lo表示本地回環網卡; 127.0.0.1表示代指本機;0.0.0.0可以用于代指本機,同時在放行設 ......

    uj5u.com 2023-04-18 06:52:01 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:50 more
  • 解決linux系統的kdump服務無法啟動的問題

    問題:專案麒麟系統服務器的kdump服務無法啟動,沒有相關日志無法定位問題。 1、查看服務狀態是關閉的,重啟系統也無法啟動 systemctl status kdump 2、修改grub引數,修改“crashkernel”為“512M(有的機器數值太大太小都會導致報錯,建議從128M開始試,或者加個 ......

    uj5u.com 2023-04-12 09:59:01 more
  • 你是不是暴露了?

    作者:袁首京 原創文章,轉載時請保留此宣告,并給出原文連接。 如果您是計算機相關從業人員,那么應該經歷不止一次網路安全專項檢查了,你肯定是收到過資訊系統技術檢測報告,要求你加強風險監測,確保你提供的系統服務堅實可靠了。 沒檢測到問題還好,檢測到問題的話,有些處理起來還是挺麻煩的,尤其是線上正在運行的 ......

    uj5u.com 2023-04-05 16:52:56 more
  • 細節拉滿,80 張圖帶你一步一步推演 slab 記憶體池的設計與實作

    1. 前文回顧 在之前的幾篇記憶體管理系列文章中,筆者帶大家從宏觀角度完整地梳理了一遍 Linux 記憶體分配的整個鏈路,本文的主題依然是記憶體分配,這一次我們會從微觀的角度來探秘一下 Linux 內核中用于零散小記憶體塊分配的記憶體池 —— slab 分配器。 在本小節中,筆者還是按照以往的風格先帶大家簡單 ......

    uj5u.com 2023-04-05 16:44:11 more