.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.发布项目
右键项目,进行发布,发布到文件夹
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=Chinese
LanguageID=$0409
LanguageCodePage=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 titles
SetupAppTitle=安装
SetupWindowTitle=安装 - %1
UninstallAppTitle=卸载
UninstallAppFullTitle=%1 卸载 ; *** Misc. common
InformationTitle=安装信息
ConfirmTitle=提示
ErrorTitle=错误 ; *** SetupLdr messages
SetupLdrStartupMessage=现在将安装 %1。是否继续?
LdrCannotCreateTemp=不能创建临时文件。安装中止!
LdrCannotExecTemp=不能在临时目录中解压文件,安装过程中止! ; *** Startup error messages
LastErrorMessage=%1.%n%n 错误 %2: %3
SetupFileMissing=在安装目录中找不到文件 %1 。请更正该问题或者获得一个新的文件。
SetupFileCorrupt=安装文件被占用。请获得一个新的安装文件。
SetupFileCorruptOrWrongVer=安装文件被占用, 或者安装文件的版本不对。请更正该问题或者获得一个新文件。
NotOnThisPlatform=该程序不能在 %1 下运行。
OnlyOnThisPlatform=该程序必须在 %1 下运行。
OnlyOnTheseArchitectures=该程序只能在以下WINDOWS版本下运行:%n%n%1
MissingWOW64APIs=该版本需要64位的安装程序。要更正该问题,请安装 Service Pack %1。
WinVersionTooLowError=该软件需要 %1 版本号 %2 或者更高。
WinVersionTooHighError=该软件不能在 %1 版本号 %2 或者更高版本中安装。
AdminPrivilegesRequired=您在安装该程序时必须是管理员权限。
PowerUserPrivilegesRequired=您在安装程序是必须是管理员权限或者高权限用户权限。
SetupAppRunningError=安装程序检测到 %1 正在运行。%n%n请关闭它的所有实例。然后单击“确认”继续安装,或者单击“放弃”退出。UninstallAppRunningError=卸载程序检测到 %1 正在运行。%n%n请关闭它的所有实例。然后单击“确认”继续安装,或者单击“放弃”退出。 ; *** Misc. errors
ErrorCreatingDir=安装程序不能创建目录 "%1"
ErrorTooManyFilesInDir=不能在目录"%1" 下创建文件。因为该目录下有太多的文件了。 ; *** Setup common messages
ExitSetupTitle=退出安装
ExitSetupMessage=安装没有完成。 如果您现在退出,程序将不被安装。%n%n您可以下次在完成安装任务。%n%n退出安装?
AboutSetupMenuItem=关于安装程序[&A]...
AboutSetupTitle=关于安装程序
AboutSetupMessage=%1 版本 %2%n%3%n%n%1 主页:%n%4
AboutSetupNote=
TranslatorNote= ; *** Buttons
ButtonBack=< 回退[&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 messages
SelectLanguageTitle=选择安装语言种类
SelectLanguageLabel=选择该语言作为安装语言: ; *** Common wizard text
ClickNext=单击“下一步”继续,或者单击“放弃”退出本安装程序。
BeveledLabel=
BrowseDialogTitle=浏览文件夹
BrowseDialogLabel=在下面的列表中选择一个目录, 然后单击“确认”继续。
NewFolderName=新文件夹 ; *** "Welcome" wizard page
WelcomeLabel1=欢迎进入 [name] 安装向导
WelcomeLabel2=将在您的电脑上安装 [name/ver] 。%n%n建议在继续安装之前退出其它程序的运行。 ; *** "Password" wizard page
WizardPassword=密码
PasswordLabel1=本安装程序受密码保护。
PasswordLabel3=请输入密码,密码区分大小写。然后单击“下一步”继续。
PasswordEditLabel=密码[&P]:
IncorrectPassword=输入的密码不正确,请重新输入。 ; *** "License Agreement" wizard page
WizardLicense=用户许可协议
LicenseLabel=请在继续之前仔细阅读用户许可协议。
LicenseLabel3=请仔细阅读下面的用户许可协议。在继续安装之前,您必须接受该协议。
LicenseAccepted=我接受协议[&a]。
LicenseNotAccepted=我不接受协议[&d] ; *** "Information" wizard pages
WizardInfoBefore=提示
InfoBeforeLabel=在继续安装之前请仔细阅读以下重要的信息。
InfoBeforeClickLabel=当您准备好继续安装时,单击“继续”。
WizardInfoAfter=信息
InfoAfterLabel=在继续安装之前请仔细阅读以下重要的信息。
InfoAfterClickLabel=当您准备好继续安装时,单击“继续”。 ; *** "User Information" wizard page
WizardUserInfo=用户信息
UserInfoDesc=请输入您的信息。
UserInfoName=用户名[&U]:
UserInfoOrg=组织[&O]:
UserInfoSerial=序列号[&S]:
UserInfoNameRequired=您必须输入一个名称。 ; *** "Select Destination Location" wizard page
WizardSelectDir=选择目标位置
SelectDirDesc=您将把[name]安装在哪里?
SelectDirLabel3=安装程序将把[name]安装在下面的的文件夹中。
SelectDirBrowseLabel=为了继续安装, 请单击“下一步”。如果您想选择一个不同的目录,请单击“浏览”。
DiskSpaceMBLabel=为了安装本软件,至少需要 [mb] MB 的空闲磁盘空间。
ToUNCPathname=安装程序不能安装到一个 UNC 目录名称。如果您试图网上安装本程序,请映射网络驱动器。
InvalidPath=您比如输入一个含盘符的路径名称。比如:%n%nC:\APP%n%n 或者一个网络路径,例如:%n%n\\server\share
InvalidDrive=您选择的磁盘或者网络路径不存在或者不能访问。请重新选择其它的磁盘或者网络路径。
DiskSpaceWarningTitle=磁盘空间不足。
DiskSpaceWarning=安装程序至少需要 %1 KB 空闲磁盘空间来安装本软件。但是选择的磁盘上只有 %2 KB 空间可用。%n%n 您确认继续?
DirNameTooLong=该文件夹的名称太长。
InvalidDirName=该文件夹的名字太长。
BadDirName32=文件夹名称中不能包括以下的任何字符:%n%n%1
DirExistsTitle=文件夹已经存在
DirExists=文件夹:%n%n%1%n%n已经存在。您想继续安装?
DirDoesntExistTitle=文件夹不存在
DirDoesntExist=文件夹:%n%n%1%n%n不存在。您想创建该文件夹? ; *** "Select Components" wizard page
WizardSelectComponents=选择部件
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 KB
ComponentSize2=%1 MB
ComponentsDiskSpaceMBLabel=当前选择项至少需要 [mb] MB 的空闲磁盘空间才能安装。 ; *** "Select Additional Tasks" wizard page
WizardSelectTasks=选择一个附加任务
SelectTasksDesc=您想选择哪个附加任务?
SelectTasksLabel2=选择在安装[name]时执行的附加任务, 然后单击“下一步”。 ; *** "Select Start Menu Folder" wizard page
WizardSelectProgramGroup=选择开始菜单文件夹
SelectStartMenuFolderDesc=您想在哪里放置软件的快捷方式?
SelectStartMenuFolderLabel3=安装程序将在下面的文件夹中创建软件的快捷方式。
SelectStartMenuFolderBrowseLabel=为了继续,单击“下一步”。如果您想另外选择一个文件夹,单击“浏览”。
MustEnterGroupName=您必须输入一个文件夹名称。
GroupNameTooLong=文件夹名称或者路径名称太长。
InvalidGroupName=文件夹名称非法。
BadGroupName=文件夹名字中不能包含下面的字符:%n%n%1
NoProgramGroupCheck2=不创建开始菜单中的文件夹[&D] ; *** "Ready to Install" wizard page
WizardReady=准备开始安装
ReadyLabel1=安装程序开始在您的电脑中安装[name].
ReadyLabel2a=单击“安装”开始安装本软件,或者单击“回退”修改安装设置。
ReadyLabel2b=单击“安装”开始安装本软件。
ReadyMemoUserInfo=用户信息:
ReadyMemoDir=安装目标位置:
ReadyMemoType=安装种类:
ReadyMemoComponents=选中的部件:
ReadyMemoGroup=开始菜单文件夹:
ReadyMemoTasks=附加任务: ; *** "Preparing to Install" wizard page
WizardPreparing=准备安装
PreparingDesc=安装程序准备在您的电脑中安装[name]。
PreviousInstallNotCompleted=安装/卸载一个以前的程序没有完成。您需要重新启动您的电脑来完成安装工作。%n%n当重新启动您的电脑后,请运行安装程序来完成安装[name]。
CannotContinue=安装程序不能继续执行。请单击“放弃”退出。 ; *** "Installing" wizard page
WizardInstalling=安装中
InstallingLabel=安装程序正在安装[name],请等待。 ; *** "Setup Completed" wizard page
FinishedHeadingLabel=[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" stuff
ChangeDiskTitle=安装程序需要下一个安装盘
SelectDiskLabel2=请插入安装盘 %1 并且单击“确认”。%n%n如果该盘不是下面显示的盘,请输入正确的路径或者单击“浏览”。
PathLabel=目录[&P]:
FileNotInDir2=在 "%2" 中没有发现文件。请插入正确的磁盘或者选择其它的文件夹。
SelectDirectoryLabel=请输入下一个磁盘中的正确位置。 ; *** Installation phase messages
SetupAborted=安装没有完成。%n%n请修复错误并重新安装。
EntryAbortRetryIgnore=单击“重试”重新尝试,单击“忽略”将继续安装,或者单击“放弃”退出安装。 ; *** Installation status messages
StatusCreateDirs=创建目录中...
StatusExtractFiles=解压文件中...
StatusCreateIcons=创建快捷方式中...
StatusCreateIniEntries=创建INI单元中...
StatusCreateRegistryEntries=创建注册表内容中...
StatusRegisterFiles=注册文件中...
StatusSavingUninstall=保存卸载信息中...
StatusRunProgram=正在完成安装...
StatusRollback=恢复原来修改的内容中... ; *** Misc. errors
ErrorInternal2=内部错误: %1
ErrorFunctionFailedNoCode=%1 失败
ErrorFunctionFailed=%1 失败; 代码 %2
ErrorFunctionFailedWithMessage=%1 错误; 代码 %2.%n%3
ErrorExecutingProgram=不能执行文件:%n%1 ; *** Registry errors
ErrorRegOpenKey=在打开注册表键时发生错误:%n%1\%2
ErrorRegCreateKey=在创建注册表键时发生错误:%n%1\%2
ErrorRegWriteKey=在些注册表键时发生错误:%n%1\%2 ; *** INI errors
ErrorIniEntry=在创建INI文件时发生错误 "%1". ; *** File copying errors
FileAbortRetryIgnore=单击“重试”再试一次,单击“忽略”忽略该文件,或者单击“放弃”退出安装程序。
FileAbortRetryIgnore2=单击“重试”再试一次,单击“忽略”忽略该文件继续安装,或者单击“放弃”退出安装程序。
SourceIsCorrupted=源文件被使用
SourceDoesntExist=源文件 "%1" 不存在
ExistingFileReadOnly=该已经存在的文件是只读属性。%n%n单击“重试”删除只读属性并重新尝试,单击“忽略”忽略该文件,或者单击“放弃”退出安装程序。
ErrorReadingExistingDest=当试图读取一个已经存在的文件时发生了错误:
FileExists=该文件已经存在。%n%n您想覆盖它吗?
ExistingFileNewer=已经存在的文件比安装程序试图安装的文件要新。建议您保留该文件。%n%n您想保留已经存在的文件吗?
ErrorChangingAttr=当试图改变一个存在的文件的属性时发生了错误:
ErrorCreatingTemp=当试图在目标目录中创建一个文件时发生了错误:
ErrorReadingSource=当试图读取一个文件时发生了错误:
ErrorCopying=当试图复制一个文件时发生了错误:
ErrorReplacingExistingFile=当试图覆盖已经存在的文件时发生错误:
ErrorRestartReplace=重新启动置换失败:
ErrorRenamingTemp=当在目标目录中重命名文件时发生错误:
ErrorRegisterServer=不能注册 DLL/OCX: %1
ErrorRegisterServerMissingExport=没有Dll注册服务库输出
ErrorRegisterTypeLib=不能注册以下类型库: %1 ; *** Post-installation errors
ErrorOpeningReadme=当打开 README 文件时发生错误。
ErrorRestartingComputer=安装程序不能重新启动电脑。请手动启动。 ; *** Uninstaller messages
UninstallNotFound=文件 "%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 messages
ConfirmDeleteSharedFileTitle=删除共享程序文件?
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 版本 %2
AdditionalIcons=附加图标:
CreateDesktopIcon=创建桌面图标[&d]
CreateQuickLaunchIcon=创建快速启动图标[&Q]
ProgramOnTheWeb=%1 on the Web
UninstallProgram=卸载 %1
LaunchProgram=执行 %1
AssocFileExtension=用文件扩展名 %2 匹配[&A] %1?
AssocingFileExtension=正在用文件扩展名 %2 匹配[&A] %1 中...
7.打包
打开Inno Setup,通过右上角File->New新建Inno Setup打包文件。设置应用程序信息
设置安装目录为前面的程序发布目录
添加卸载快捷键
设置licence信息
选择安装模式
选择汉化语言
设置输出目录
脚本中添加安装命令,卸载命令
[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安装
9.检验安装
首先去windows 服务查看是否安装成功
然后访问服务
至此打包安装完成。
.NET6打包部署到Windows Service的更多相关文章
- [WCF] - 使用 bat 批处理文件将 WCF 服务部署为 Windows Service
1. 添加 Windows Service 项目 2. 添加 WCF 项目引用 3. 更新 App.config 配置文件(可以从 WCF的 Web.config 拷贝过来),设置服务地址. 4. 配 ...
- java 打包部署(一) windows
- C#制作Windows service服务系列二:演示一个定期执行的windows服务及调试(windows service)
系列一: 制作一个可安装.可启动.可停止.可卸载的Windows service(downmoon原创) 系列二:演示一个定期执行的windows服务及调试(windows service)(down ...
- .Net 持续集成 —— windows service
上一篇讲了 Jenkins+WebDeploy+IIS完成 web项目部署,这篇继续讲windows service的部署. windows service 一般用于自动任务,定时完成某些操作.本文自 ...
- 如何将.NET 4.0写的Windows service和Web API部署到docker上面
Web API. 看这篇文章: https://docs.microsoft.com/en-us/aspnet/mvc/overview/deployment/docker-aspnetmvc Win ...
- (22)C#windows打包部署
程序做好后需要打包部署后才能使用 一.创建安装项目 解决方案右键-添加-新建项目-其他项目类型-安装和部署-双击进入文件系统. 二.制作安装程序 一个完整的安装程序包括项目输出文件.内容文件.桌面快捷 ...
- 使用Advanced Installer 13.1打包发布 Windows Service服务程序
原文: 使用Advanced Installer 13.1打包发布 Windows Service服务程序 项目中需要用到一个定时推送案件状态的需求,本人小菜一只,在同事建议下要写成一个windows ...
- war包部署在tomcat下,使用windows service服务方式启动tomcat服务器,在包含调用dll的模块,报dll找不到问题的解决办法
问题描述: 开发了一个需要调用dll的java web程序,在idea开发环境下运行调试没问题,可以正常运行,在tomcat/bin下,运行批处理startup.bat,启动tomcat服务器,也可以 ...
- windows 下部署 .netcore 到 windows service
接上一篇 <windows 下部署 .netcore 到 iis>,这一篇记录一下怎么将 Asp.Net Core 以 windows 服务的方式部署. 一.修改代码 其实也很简单,只要调 ...
随机推荐
- Luogu1655 小朋友的球 (组合数学,第二类斯特林数,高精)
我bingoyes再高精用STL就饿死,死外边! string真的爽... 斯特林数模板题:\(S(n,m) = S(n-1,m-1)+S(n-1,m)*n\) #include <iostre ...
- 急如闪电快如风,彩虹女神跃长空,Go语言高性能Web框架Iris项目实战-初始化项目ep00
在Golang Web编程的世界里,君不言高性能则已,言高性能必称Iris.彩虹女神的名号响彻寰宇.名动江湖,单论一个快字,无人能出其右,就连以简洁轻量著称于世的Gin也难以望其项背,只见彩虹女神Ir ...
- Dynamic CRM使用FetchXML在js中查询与调用传递编码问题
在页面交互脚本js中实现窗体交互逻辑是很常见的crm场景,一般情况下使用拓展工具RESTBuilder编辑器,可以很方便的进行操作,增删改查均能实现,但在某些较为特殊的场景下,需要根据条件去拼接查询过 ...
- 从0搭建Vue3组件库:button组件
button组件几乎是每个组件库都有的:其实实现一个button组件是很简单的.本篇文章将带你一步一步的实现一个button组件.如果你想了解完整的组件库搭建,你可以先看使用Vite和TypeScri ...
- 【AGC】如何快速部署Serverless Url缩短模板
使用场景 Serverless短URL生成模板实现您将在云数据库服务中URL缩短的诉求.使用此模板后,仅需在云数据库服务侧配置长URL值.Serverless短URL生成模板会在后台与Bitly AP ...
- Sirni题解(最小生成树,埃氏筛)(继 Liang-梁)
目录 前言 题意 思路 一些建议 前言 本篇是对Liang-梁的Sirni(最小生成树,埃氏筛)的后继博客. 通篇原文:https://blog.csdn.net/qq_37555704/articl ...
- Oracle 服务器迁移的一些经验
前言 通过此文章来分享一下 Oracle 服务器迁移过程中的一些经验,希望对大家有些许帮助. 本文旨在帮助更多的同学,会提及一些基本命令或技巧,但不赘述,后续有机会再进一步分享各个细节. 背景 之前因 ...
- KingbaseES DBLink 扩展介绍
DBLink 扩展插件功能与 Kingbase_FDW 类似,用于远程访问KingbaseES 数据库.相比于Kingbase_FDW,DBLink 功能更强大,可以执行DML,还可以通过 begin ...
- null和undefined的区别、数组和伪数组的区别
null和undefined的区别 undefined: 字面意思是未定义的值,语义是希望表示一个变量最原始的状态,而非人为操作的结果.这种原始状态会在以下四个场景中出现: 声明了一个变量但没有赋值 ...
- Windows LDAP加固之LDAP over SSL和通道绑定
很多网络通信都可以用SSL来加密的,LDAP也不列外,同样可以用SSL加密. LDAPS使用的证书必须满足以下几个条件: 1.证书的增强性密钥用法中必须有服务器身份验证Server Authentic ...