.NET6打包部署到Windows Service

1.安裝Nuget包

安裝以下nuget包支持windows service

<PackageReference Include="Microsoft.AspNetCore.Hosting.WindowsServices" Version="6.0.10" />
<PackageReference?Include="Microsoft.Extensions.Hosting.WindowsServices"?Version="6.0.1"?/>

2.設置ContentRootPath

不設置ContentRootPath會指向C盤sc.exe所在文件夾。

var options = new WebApplicationOptions
{Args = args,ContentRootPath = WindowsServiceHelpers.IsWindowsService() ? AppContext.BaseDirectory : default
};var builder = WebApplication.CreateBuilder(options);

3.啟用WIndowsService

通過以下方法即可啟用WIndowsService支持

builder.Host.UseWindowsService();

4.發布項目

右鍵項目,進行發布,發布到文件夾

432680390134eba3b34e11e65e512a67.png

5.簡單安裝

通過以下BASH命令,實現安裝/開始/停止/刪除windows service

安裝

set "CDir=%~dp0"
sc.exe?create?"MyService"?start=auto?binpath="%CDir%MyService.exe?--environment?Development"

啟動

sc.exe start "MyService"

停止

sc.exe stop "MyService"

刪除

sc.exe delete "MyService"

6.安裝打包工具

安裝Inno Setup打包工具

安裝好后,進行漢語支持支持。打開Inno Setup安裝目錄,默認C:\Program Files (x86)\Inno Setup 6。

復制Default.isl,將其拷貝至C:\Program Files (x86)\Inno Setup 6\Languages文件夾,并重命名為Chinese.isl

將以下內容覆蓋到Chinese.isl

; *** Inno Setup version 5.5.0+ Chinese messages ***;; To download user-contributed translations of this file, go to:;   http://www.jrsoftware.org/files/istrans/;; Note: When translating this text, do not add periods (.) to the end of; messages that didn't have them already, because on those messages Inno; Setup adds the periods automatically (appending a period would result in; two periods being displayed).[LangOptions]; The following three entries are very important. Be sure to read and?; understand the '[LangOptions] section' topic in the help file.LanguageName=ChineseLanguageID=$0409LanguageCodePage=0; If the language you are translating to requires special font faces or; sizes, uncomment any of the following entries and change them accordingly.;DialogFontName=;DialogFontSize=8;WelcomeFontName=Verdana;WelcomeFontSize=12;TitleFontName=Arial;TitleFontSize=29;CopyrightFontName=Arial;CopyrightFontSize=8[Messages]; *** Application titlesSetupAppTitle=安裝SetupWindowTitle=安裝 - %1UninstallAppTitle=卸載UninstallAppFullTitle=%1 卸載; *** Misc. commonInformationTitle=安裝信息ConfirmTitle=提示ErrorTitle=錯誤; *** SetupLdr messagesSetupLdrStartupMessage=現在將安裝 %1。是否繼續?LdrCannotCreateTemp=不能創建臨時文件。安裝中止!LdrCannotExecTemp=不能在臨時目錄中解壓文件,安裝過程中止!; *** Startup error messagesLastErrorMessage=%1.%n%n 錯誤 %2: %3SetupFileMissing=在安裝目錄中找不到文件 %1 。請更正該問題或者獲得一個新的文件。SetupFileCorrupt=安裝文件被占用。請獲得一個新的安裝文件。SetupFileCorruptOrWrongVer=安裝文件被占用, 或者安裝文件的版本不對。請更正該問題或者獲得一個新文件。NotOnThisPlatform=該程序不能在 %1 下運行。OnlyOnThisPlatform=該程序必須在 %1 下運行。OnlyOnTheseArchitectures=該程序只能在以下WINDOWS版本下運行:%n%n%1MissingWOW64APIs=該版本需要64位的安裝程序。要更正該問題,請安裝 Service Pack %1。WinVersionTooLowError=該軟件需要 %1 版本號 %2 或者更高。WinVersionTooHighError=該軟件不能在 %1 版本號 %2 或者更高版本中安裝。AdminPrivilegesRequired=您在安裝該程序時必須是管理員權限。PowerUserPrivilegesRequired=您在安裝程序是必須是管理員權限或者高權限用戶權限。SetupAppRunningError=安裝程序檢測到 %1 正在運行。%n%n請關閉它的所有實例。然后單擊“確認”繼續安裝,或者單擊“放棄”退出。UninstallAppRunningError=卸載程序檢測到 %1 正在運行。%n%n請關閉它的所有實例。然后單擊“確認”繼續安裝,或者單擊“放棄”退出。; *** Misc. errorsErrorCreatingDir=安裝程序不能創建目錄 "%1"ErrorTooManyFilesInDir=不能在目錄"%1" 下創建文件。因為該目錄下有太多的文件了。; *** Setup common messagesExitSetupTitle=退出安裝ExitSetupMessage=安裝沒有完成。 如果您現在退出,程序將不被安裝。%n%n您可以下次在完成安裝任務。%n%n退出安裝?AboutSetupMenuItem=關于安裝程序[&A]...AboutSetupTitle=關于安裝程序AboutSetupMessage=%1 版本 %2%n%3%n%n%1 主頁:%n%4AboutSetupNote=TranslatorNote=; *** ButtonsButtonBack=< 回退[&B]ButtonNext=下一步[&N] >ButtonInstall=安裝[&I]ButtonOK=確認ButtonCancel=放棄ButtonYes=市[&Y]ButtonYesToAll=全部確認[&A]ButtonNo=否[&N]ButtonNoToAll=全部否認[&o]ButtonFinish=完成[&F]ButtonBrowse=瀏覽[&B]...ButtonWizardBrowse=瀏覽[&r]...ButtonNewFolder=新建文件夾[&M]; *** "Select Language" dialog messagesSelectLanguageTitle=選擇安裝語言種類SelectLanguageLabel=選擇該語言作為安裝語言:; *** Common wizard textClickNext=單擊“下一步”繼續,或者單擊“放棄”退出本安裝程序。BeveledLabel=BrowseDialogTitle=瀏覽文件夾BrowseDialogLabel=在下面的列表中選擇一個目錄, 然后單擊“確認”繼續。NewFolderName=新文件夾; *** "Welcome" wizard pageWelcomeLabel1=歡迎進入 [name] 安裝向導WelcomeLabel2=將在您的電腦上安裝 [name/ver] 。%n%n建議在繼續安裝之前退出其它程序的運行。; *** "Password" wizard pageWizardPassword=密碼PasswordLabel1=本安裝程序受密碼保護。PasswordLabel3=請輸入密碼,密碼區分大小寫。然后單擊“下一步”繼續。PasswordEditLabel=密碼[&P]:IncorrectPassword=輸入的密碼不正確,請重新輸入。; *** "License Agreement" wizard pageWizardLicense=用戶許可協議LicenseLabel=請在繼續之前仔細閱讀用戶許可協議。LicenseLabel3=請仔細閱讀下面的用戶許可協議。在繼續安裝之前,您必須接受該協議。LicenseAccepted=我接受協議[&a]。LicenseNotAccepted=我不接受協議[&d]; *** "Information" wizard pagesWizardInfoBefore=提示InfoBeforeLabel=在繼續安裝之前請仔細閱讀以下重要的信息。InfoBeforeClickLabel=當您準備好繼續安裝時,單擊“繼續”。WizardInfoAfter=信息InfoAfterLabel=在繼續安裝之前請仔細閱讀以下重要的信息。InfoAfterClickLabel=當您準備好繼續安裝時,單擊“繼續”。; *** "User Information" wizard pageWizardUserInfo=用戶信息UserInfoDesc=請輸入您的信息。UserInfoName=用戶名[&U]:UserInfoOrg=組織[&O]:UserInfoSerial=序列號[&S]:UserInfoNameRequired=您必須輸入一個名稱。; *** "Select Destination Location" wizard pageWizardSelectDir=選擇目標位置SelectDirDesc=您將把[name]安裝在哪里?SelectDirLabel3=安裝程序將把[name]安裝在下面的的文件夾中。SelectDirBrowseLabel=為了繼續安裝, 請單擊“下一步”。如果您想選擇一個不同的目錄,請單擊“瀏覽”。DiskSpaceMBLabel=為了安裝本軟件,至少需要 [mb] MB 的空閑磁盤空間。ToUNCPathname=安裝程序不能安裝到一個 UNC 目錄名稱。如果您試圖網上安裝本程序,請映射網絡驅動器。InvalidPath=您比如輸入一個含盤符的路徑名稱。比如:%n%nC:\APP%n%n 或者一個網絡路徑,例如:%n%n\\server\shareInvalidDrive=您選擇的磁盤或者網絡路徑不存在或者不能訪問。請重新選擇其它的磁盤或者網絡路徑。DiskSpaceWarningTitle=磁盤空間不足。DiskSpaceWarning=安裝程序至少需要 %1 KB 空閑磁盤空間來安裝本軟件。但是選擇的磁盤上只有 %2 KB 空間可用。%n%n 您確認繼續?DirNameTooLong=該文件夾的名稱太長。InvalidDirName=該文件夾的名字太長。BadDirName32=文件夾名稱中不能包括以下的任何字符:%n%n%1DirExistsTitle=文件夾已經存在DirExists=文件夾:%n%n%1%n%n已經存在。您想繼續安裝?DirDoesntExistTitle=文件夾不存在DirDoesntExist=文件夾:%n%n%1%n%n不存在。您想創建該文件夾?; *** "Select Components" wizard pageWizardSelectComponents=選擇部件SelectComponentsDesc=哪些部件需要安裝?SelectComponentsLabel2=選擇您想要安裝的部件; 清除您不想安裝的部件。當您準備好后,請單擊“下一步” 。FullInstallation=完全安裝; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)CompactInstallation=精簡安裝CustomInstallation=自定義安裝NoUninstallWarningTitle=部件存在NoUninstallWarning=安裝程序檢測到以下部件已經在您的電腦中被安裝了:%n%n%1%n%n不選擇它們將不在您的電腦中安裝它們。%n%n您想就這樣繼續嗎?ComponentSize1=%1 KBComponentSize2=%1 MBComponentsDiskSpaceMBLabel=當前選擇項至少需要 [mb] MB 的空閑磁盤空間才能安裝。; *** "Select Additional Tasks" wizard pageWizardSelectTasks=選擇一個附加任務SelectTasksDesc=您想選擇哪個附加任務?SelectTasksLabel2=選擇在安裝[name]時執行的附加任務, 然后單擊“下一步”。; *** "Select Start Menu Folder" wizard pageWizardSelectProgramGroup=選擇開始菜單文件夾SelectStartMenuFolderDesc=您想在哪里放置軟件的快捷方式?SelectStartMenuFolderLabel3=安裝程序將在下面的文件夾中創建軟件的快捷方式。SelectStartMenuFolderBrowseLabel=為了繼續,單擊“下一步”。如果您想另外選擇一個文件夾,單擊“瀏覽”。MustEnterGroupName=您必須輸入一個文件夾名稱。GroupNameTooLong=文件夾名稱或者路徑名稱太長。InvalidGroupName=文件夾名稱非法。BadGroupName=文件夾名字中不能包含下面的字符:%n%n%1NoProgramGroupCheck2=不創建開始菜單中的文件夾[&D]; *** "Ready to Install" wizard pageWizardReady=準備開始安裝ReadyLabel1=安裝程序開始在您的電腦中安裝[name].ReadyLabel2a=單擊“安裝”開始安裝本軟件,或者單擊“回退”修改安裝設置。ReadyLabel2b=單擊“安裝”開始安裝本軟件。ReadyMemoUserInfo=用戶信息:ReadyMemoDir=安裝目標位置:ReadyMemoType=安裝種類:ReadyMemoComponents=選中的部件:ReadyMemoGroup=開始菜單文件夾:ReadyMemoTasks=附加任務:; *** "Preparing to Install" wizard pageWizardPreparing=準備安裝PreparingDesc=安裝程序準備在您的電腦中安裝[name]。PreviousInstallNotCompleted=安裝/卸載一個以前的程序沒有完成。您需要重新啟動您的電腦來完成安裝工作。%n%n當重新啟動您的電腦后,請運行安裝程序來完成安裝[name]。CannotContinue=安裝程序不能繼續執行。請單擊“放棄”退出。; *** "Installing" wizard pageWizardInstalling=安裝中InstallingLabel=安裝程序正在安裝[name],請等待。; *** "Setup Completed" wizard pageFinishedHeadingLabel=[name]安裝完成FinishedLabelNoIcons=安裝程序已經在您的電腦中安裝了[name]。FinishedLabel=安裝程序已經在您的電腦中安裝了[name]。要執行本軟件,請單擊安裝好的本軟件圖標 。ClickFinish=單擊“完成”退出本安裝程序.FinishedRestartLabel=為了完成[name]的安裝, 安裝程序必須重新啟動您的電腦。您想現在就重新啟動?FinishedRestartMessage=為了完成[name]的安裝, 安裝程序必須重新啟動您的電腦。%n%您想現在就重新啟動?ShowReadmeCheck=是的,我想查看 README 文件YesRadio=是的,我想重新啟動計算機[&Y]NoRadio=不,我將稍后重新啟動計算機[&N]; used for example as 'Run MyProg.exe'RunEntryExec=運行 %1; used for example as 'View Readme.txt'RunEntryShellExec=查看 %1; *** "Setup Needs the Next Disk" stuffChangeDiskTitle=安裝程序需要下一個安裝盤SelectDiskLabel2=請插入安裝盤 %1 并且單擊“確認”。%n%n如果該盤不是下面顯示的盤,請輸入正確的路徑或者單擊“瀏覽”。PathLabel=目錄[&P]:FileNotInDir2=在 "%2" 中沒有發現文件。請插入正確的磁盤或者選擇其它的文件夾。SelectDirectoryLabel=請輸入下一個磁盤中的正確位置。; *** Installation phase messagesSetupAborted=安裝沒有完成。%n%n請修復錯誤并重新安裝。EntryAbortRetryIgnore=單擊“重試”重新嘗試,單擊“忽略”將繼續安裝,或者單擊“放棄”退出安裝。; *** Installation status messagesStatusCreateDirs=創建目錄中...StatusExtractFiles=解壓文件中...StatusCreateIcons=創建快捷方式中...StatusCreateIniEntries=創建INI單元中...StatusCreateRegistryEntries=創建注冊表內容中...StatusRegisterFiles=注冊文件中...StatusSavingUninstall=保存卸載信息中...StatusRunProgram=正在完成安裝...StatusRollback=恢復原來修改的內容中...; *** Misc. errorsErrorInternal2=內部錯誤: %1ErrorFunctionFailedNoCode=%1 失敗ErrorFunctionFailed=%1 失敗; 代碼 %2ErrorFunctionFailedWithMessage=%1 錯誤; 代碼 %2.%n%3ErrorExecutingProgram=不能執行文件:%n%1; *** Registry errorsErrorRegOpenKey=在打開注冊表鍵時發生錯誤:%n%1\%2ErrorRegCreateKey=在創建注冊表鍵時發生錯誤:%n%1\%2ErrorRegWriteKey=在些注冊表鍵時發生錯誤:%n%1\%2; *** INI errorsErrorIniEntry=在創建INI文件時發生錯誤 "%1".; *** File copying errorsFileAbortRetryIgnore=單擊“重試”再試一次,單擊“忽略”忽略該文件,或者單擊“放棄”退出安裝程序。FileAbortRetryIgnore2=單擊“重試”再試一次,單擊“忽略”忽略該文件繼續安裝,或者單擊“放棄”退出安裝程序。SourceIsCorrupted=源文件被使用SourceDoesntExist=源文件 "%1" 不存在ExistingFileReadOnly=該已經存在的文件是只讀屬性。%n%n單擊“重試”刪除只讀屬性并重新嘗試,單擊“忽略”忽略該文件,或者單擊“放棄”退出安裝程序。ErrorReadingExistingDest=當試圖讀取一個已經存在的文件時發生了錯誤:FileExists=該文件已經存在。%n%n您想覆蓋它嗎?ExistingFileNewer=已經存在的文件比安裝程序試圖安裝的文件要新。建議您保留該文件。%n%n您想保留已經存在的文件嗎?ErrorChangingAttr=當試圖改變一個存在的文件的屬性時發生了錯誤:ErrorCreatingTemp=當試圖在目標目錄中創建一個文件時發生了錯誤:ErrorReadingSource=當試圖讀取一個文件時發生了錯誤:ErrorCopying=當試圖復制一個文件時發生了錯誤:ErrorReplacingExistingFile=當試圖覆蓋已經存在的文件時發生錯誤:ErrorRestartReplace=重新啟動置換失敗:ErrorRenamingTemp=當在目標目錄中重命名文件時發生錯誤:ErrorRegisterServer=不能注冊 DLL/OCX: %1ErrorRegisterServerMissingExport=沒有Dll注冊服務庫輸出ErrorRegisterTypeLib=不能注冊以下類型庫: %1; *** Post-installation errorsErrorOpeningReadme=當打開 README 文件時發生錯誤。ErrorRestartingComputer=安裝程序不能重新啟動電腦。請手動啟動。; *** Uninstaller messagesUninstallNotFound=文件 "%1" 不存在。不能卸載。UninstallOpenError=文件 "%1" 不能打開。不能卸載。UninstallUnsupportedVer=卸載記錄文件 "%1" 不是基于本安裝程序的版本。不能完成軟件的刪除工作。UninstallUnknownEntry=一個未知的實體 (%1) 存在于卸載記錄文件中。ConfirmUninstall=您確定完全刪除 %1 和所有基于它上面的部件嗎?UninstallOnlyOnWin64=該安裝程序只能在64位的Windows上執行卸載工作。OnlyAdminCanUninstall=該安裝程序只能在您具有管理員權限時才能執行卸載工作。UninstallStatusLabel= %1 正在被刪除,請稍等。UninstalledAll=%1 被成功地從您的電腦中刪除。UninstalledMost=%1 刪除完成。%n%n有某些部件不能被刪除。您可能需要手動刪除它們。UninstalledAndNeedsRestart=為了完成 %1 的刪除工作, 您必須重新啟動電腦。%n%n您想現在就重新啟動嗎?UninstallDataCorrupted=文件"%1" 被占用。不能完成刪除工作。; *** Uninstallation phase messagesConfirmDeleteSharedFileTitle=刪除共享程序文件?ConfirmDeleteSharedFile2=系統指出以下的共享程序文件將不再被使用。您是否想刪除這些共享文件?%n%n如果這些文件刪除后,其他程序仍然要使用它,可能其它程序的功能將受影響。如果您不能肯定,請選擇“否”。讓這些文件保留在系統中不會對系統造成損害。SharedFileNameLabel=文件名:SharedFileLocationLabel=位置:WizardUninstalling=卸載StatusUninstalling=卸載 %1 中...; The custom messages below aren't used by Setup itself, but if you make; use of them in your scripts, you'll want to translate them.[CustomMessages]NameAndVersion=%1 版本 %2AdditionalIcons=附加圖標:CreateDesktopIcon=創建桌面圖標[&d]CreateQuickLaunchIcon=創建快速啟動圖標[&Q]ProgramOnTheWeb=%1 on the WebUninstallProgram=卸載 %1LaunchProgram=執行 %1AssocFileExtension=用文件擴展名 %2 匹配[&A] %1?AssocingFileExtension=正在用文件擴展名 %2 匹配[&A] %1 中...

7.打包

打開Inno Setup,通過右上角File->New新建Inno Setup打包文件。設置應用程序信息

d37f00396ee7733f04752fe3d4f17dee.png

設置安裝目錄為前面的程序發布目錄

13989859ba10c389116cd4c74bc0c6d5.png

添加卸載快捷鍵

88f64c27d3abbbef333f6ccfa81902c9.png

?設置licence信息

c0ad4f1f65edb87687f080c6dbf595a2.png

?選擇安裝模式

c951242ea0747957d582eeefc9b64e37.png

?選擇漢化語言

f1e9535ff224d3631386661d5f7982d3.png

?設置輸出目錄

ade70bfcf572bf713d37f82638f2c386.png

?腳本中添加安裝命令,卸載命令

[Run]
Filename: "{sys}\sc.exe"; Parameters: "stop MyService" ; Flags: runhidden
Filename: "{sys}\sc.exe"; Parameters: "delete MyService" ; Flags: runhidden
Filename: "{sys}\sc.exe"; Parameters: "create MyService start=auto binPath=""{app}\MyWeb.exe""" ; Flags: runhidden
Filename: "{sys}\sc.exe"; Parameters: "start MyService" ; Flags: runhidden[UninstallRun]
Filename: "{sys}\sc.exe"; Parameters: "stop MyService" ; Flags: runhidden
Filename:?"{sys}\sc.exe";?Parameters:?"delete?MyService"?;?Flags:?runhidden

腳本最終內容

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!#define MyAppName "MyService"
#define MyAppVersion "1.0.0"
#define MyAppPublisher "My Company, Inc."
#define MyAppURL "https://www.example.com/"[Setup]
; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{0C9603FD-2587-41FD-A532-CB5294E7B56E}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={autopf}\{#MyAppName}
DefaultGroupName={#MyAppName}
DisableProgramGroupPage=yes
LicenseFile=D:\Mylicence.txt
InfoBeforeFile=D:\Myshowafter.txt
InfoAfterFile=D:\Myshowbefore.txt
; Uncomment the following line to run in non administrative install mode (install for current user only.)
;PrivilegesRequired=lowest
OutputDir=C:\Users\c\Desktop
OutputBaseFilename=mysetup
Compression=lzma
SolidCompression=yes
WizardStyle=modern[Languages]
Name: "chinese"; MessagesFile: "compiler:Languages\Chinese.isl"[Files]
Source: "D:\MyWeb\bin\Release\net6.0\publish\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files[Icons]
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"[Run]
Filename: "{sys}\sc.exe"; Parameters: "stop MyService" ; Flags: runhidden
Filename: "{sys}\sc.exe"; Parameters: "delete MyService" ; Flags: runhidden
Filename: "{sys}\sc.exe"; Parameters: "create MyService start=auto binPath=""{app}\MyWeb.exe""" ; Flags: runhidden
Filename: "{sys}\sc.exe"; Parameters: "start MyService" ; Flags: runhidden[UninstallRun]
Filename: "{sys}\sc.exe"; Parameters: "stop MyService" ; Flags: runhidden
Filename: "{sys}\sc.exe"; Parameters: "delete MyService" ; Flags: runhidden

8.打包編譯

點擊編譯按鈕,打包好后,雙擊exe安裝

a05e25ee94fce4327d07a9363412d553.png

9.檢驗安裝

首先去windows 服務查看是否安裝成功

8be7e9feba4620da9509af6579b3f8a0.png

然后訪問服務

0c20282ee5ae545bbebb16e85ad8a30d.png

?至此打包安裝完成。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281535.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281535.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281535.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

傳統家電在智能家居變革的五大優勢

而在眾多向智能家居領域轉型變革的企業中&#xff0c;看似落后的傳統家電企業&#xff0c;卻占據著一定的優勢。 產品優勢 傳統家電企業在產品上的優勢主要體現在企業擁有產品本身的設計、技術、生產、制造和營銷渠道&#xff0c;其產品不論是從外觀設計、零件制造還是零件組裝…

《Apache Kafka實戰》讀書筆記-調優Kafka集群

《Apache Kafka實戰》讀書筆記-調優Kafka集群 作者&#xff1a;尹正杰 版權聲明&#xff1a;原創作品&#xff0c;謝絕轉載&#xff01;否則將追究法律責任。 一.確定調優目標 1>.常見的非功能性要求 一.性能&#xff08;performance&#xff09;最重要的非功能性需求之一。…

android emoji unicode編碼表,unicode編碼

unicode編碼app是一款字符查找客戶端應用&#xff0c;通過unicode編碼可以方便尋找特定字符&#xff0c;查看字符表情詳細的描述&#xff0c;并且利用unicode編碼就可以快捷復制任意unicode編碼&#xff0c;提高開發效率&#xff0c;非常的實用&#xff0c;快來下載unicode編碼…

物聯網商機誘人 芯片商大力搭建生態系統

應用需求變化多端的物聯網&#xff0c;雖具備龐大的發展潛力及應用商機&#xff0c;但由于市場過于分散&#xff0c;幾乎沒有殺手應用可言&#xff0c;因此對有意耕耘相關市場的半導體業者而言&#xff0c;如何借力使力&#xff0c;尋找盟友共同搭建出的生態系統&#xff0c;遂…

ASP.NET Core 6框架揭秘實例演示[30]:利用路由開發REST API

借助路由系統提供的請求URL模式與對應終結點之間的映射關系&#xff0c;我們可以將具有相同URL模式的請求分發給與之匹配的終結點進行處理。ASP.NET的路由是通過EndpointRoutingMiddleware和EndpointMiddleware這兩個中間件協作完成的&#xff0c;它們在ASP.NET平臺上具有舉足輕…

數據庫(二)tab補全功能,使數據庫支持簡體中文,日志管理,備份腳本

一、如何在MySQL數據庫中使用tab鍵補全功能 1.修改主配置文件/etc/my.cnf vim /etc/my.cnf [mysql] #no-auto-rehash auto-rehash 2.重啟MySQL服務&#xff0c;登錄測試 /etc/init.d/mysqld restart mysql -uroot -p (可在數據庫中使用tab鍵&#xff09; 3.&#xff1b;臨時支持…

php new self()關鍵字的用法

今天開框架源碼&#xff0c;發現有用到new self()的用法 有點不懂 在網上查了一下&#xff0c;給大家說一下&#xff1a; 在類中 self的用法 和this的用法差不多 &#xff0c; php new self() 一般在類內部使用&#xff0c;作用是對自身類實例化&#xff0c;下面給個實例講解…

android listview item置頂,ListView的item置頂

ListView的item設置置頂1.activitypublic class TopListViewActivity extends Activity {private static int ON_TOP 1;private static int CANCEL_TOP 0;public static String TOP_STATES "TOP";private ListView mListView;private List sessionList;private Se…

電信運營商x86服務器定制策略

近幾年&#xff0c;伴隨云計算、大數據、移動互聯網、物聯網等新技術從概念到實踐&#xff0c;業務、用戶數據海量式爆發增長&#xff0c;作為承載這些業務發展的服務器行業也面臨巨大的機遇和挑戰。一方面&#xff0c;需求的爆發式增長大幅提升了市場空間&#xff0c;尤其是大…

企業數字化轉型服務+方案

前言&#xff1a;本文的閱讀對象是公司老板、或企業高層管理者&#xff01;1【背景介紹】數字經濟與實體經濟深度融合是助推我國經濟高質量發展的重要環節。為加快數字中國建設&#xff0c;中央和地方政府都出臺各類政策扶植數字化轉型相關項目。馬云在接受采訪時也提到&#x…

在 MongoDB 上模擬事務操作來實現支付

我們的產品叫「學海密探」&#xff0c;屬于在線教育行業&#xff0c;產品需要有支付功能&#xff0c;然而支付最蛋疼是什么&#xff1f;有人會說是支付寶和微信等支付接口的接入開發&#xff01;沒錯&#xff0c;但支付接口的開發算是比較簡單的了&#xff0c;我覺得凡是跟錢有…

Zabbix server is not running

問題描述 Dashbord中提示Zabbix server is not running 分析過程 首先查看zabbix-server的運行狀態 systemctl status zabbix-server 確定是否是active(running)狀態&#xff0c;如果不是&#xff0c;重啟zabbix-server查看log tail -f /var/log/zabbix/zabbix_server.log 導致…

android 把異常寫入到文本里,嘗試在Android中將文件寫入sdcard時發生FileNotFoundException(權限被拒絕)...

從標題中可以看到&#xff0c;我在Android中將文件寫入sdcard時遇到問題.我想寫入將在sdcard上的公共空間中的文件&#xff0c;以便任何其他應用程序都可以讀取它。首先&#xff0c;我檢查sdcard是否已安裝&#xff1a;Environment.getExternalStorageState();然后&#xff0c;…

.NET性能優化-使用ValueStringBuilder拼接字符串

前言這一次要和大家分享的一個Tips是在字符串拼接場景使用的&#xff0c;我們經常會遇到有很多短小的字符串需要拼接的場景&#xff0c;在這種場景下及其的不推薦使用String.Concat也就是使用運算符。 目前來說官方最推薦的方案就是使用StringBuilder來構建這些字符串&#xff…

Buildroot 龍芯1C支持指南

本文轉載自&#xff1a;https://github.com/pengphei/smartloong-sphinx/blob/master/source/cn/loongson1c_buildroot_guide.rst Buildroot 龍芯1C支持指南 引子&#xff1a;從龍芯1C預訂拿到板子已經很長一段時間了&#xff0c;因為各種事情&#xff0c;一直讓它呆在角落的冷…

STOLUCK:經濟下行的當下 ,STO或將幫助中小企業度過寒冬

2018年被稱為創業陣亡率特別高的一年&#xff0c;相關報道稱有近20%的創業團隊面臨“后續融資跟不上&#xff0c;可能死在春天來臨之前”的窘境。經濟不景氣的當下&#xff0c;上下游資金不足&#xff0c;信貸機構沒錢&#xff0c;風投業捉襟見肘。實際今年3月份開始&#xff0…

[ 轉載 ] Java面試精選【Java基礎第一部分】

http://www.cnblogs.com/hnlshzx/p/3491587.html 轉載于:https://www.cnblogs.com/ILoke-Yang/p/8137326.html

html如何自動調整邊框大小,html – Chrome與大小調整:顯示中的邊框:表格

我正在使用display&#xff1a;table做一個小的2窗格布局.對于間距(也來自背景圖像),我使用填充.因為我需要孩子們有一個確切的寬度&#xff1a;50&#xff05;來自可用空間(考慮到父div的填充),我使用Box-sizing&#xff1a;border-Box.這在Opera中運行良好,但在Chrome中,框大…

淺析C# Dictionary實現原理

一、前言二、理論知識1、Hash 算法2、Hash 桶算法3、解決沖突算法三、Dictionary 實現1. Entry 結構體2. 其它關鍵私有變量3. Dictionary - Add 操作4. Dictionary - Find 操作5. Dictionary - Remove 操作6. Dictionary - Resize 操作(擴容)7. Dictionary - 再談 Add 操作8. C…

對特朗普獲勝感到意外? 那你是被社交媒體迷惑了

北京時間11月10日消息&#xff0c;據外媒報道&#xff0c;昨天曠日持久的美國總統選戰終于告一段落&#xff0c;特朗普的獲勝讓民調徹底成了一張廢紙&#xff0c;而早就在Facebook上提前歡慶希拉里勝利的人則徹底蒙圈了&#xff0c;就連萬里之外的中國吃瓜群眾們也開始追著許多…