转:Windows版本判断大全
/*****************************************************************************Operating System Version PlatformIDWindows 8 6.2 VER_PLATFORM_WIN32_NT (=2)Windows 7 6.1 VER_PLATFORM_WIN32_NTWindows Server 2008 R2 6.1 VER_PLATFORM_WIN32_NTWindows Server 2008 6.0 VER_PLATFORM_WIN32_NTWindows Vista 6.0 VER_PLATFORM_WIN32_NTWindows Server 2003 R2 5.2 VER_PLATFORM_WIN32_NTWindows Server 2003 5.2 VER_PLATFORM_WIN32_NTWindows XP 64-Bit Edition 5.2 VER_PLATFORM_WIN32_NTWindows XP 5.1 VER_PLATFORM_WIN32_NTWindows 2000 5.0 VER_PLATFORM_WIN32_NTWindows NT 4.0 4.0 VER_PLATFORM_WIN32_NTWindows NT 3.51 3.51 ? VER_PLATFORM_WIN32_NTWindows Millennium Edition 4.90 VER_PLATFORM_WIN32_WINDOWS (=1)Windows 98 4.10 VER_PLATFORM_WIN32_WINDOWSWindows 95 4.0 VER_PLATFORM_WIN32_WINDOWSWindows 3.1 3.1 ? VER_PLATFORM_WIN32s (=0)*****************************************************************************/#include "stdafx.h"#include<windows.h>//#include<tchar.h>//#include <stdio.h>#include<strsafe.h>#pragma comment(lib,"User32.lib")#pragma comment(lib,"Advapi32.lib")//VS2005 Express needed#define BUFSIZE 256#define PRODUCT_ULTIMATE 0x00000001#define PRODUCT_HOME_BASIC 0x00000002#define PRODUCT_HOME_PREMIUM 0x00000003#define PRODUCT_ENTERPRISE 0x00000004#define PRODUCT_HOME_BASIC_N 0x00000005#define PRODUCT_BUSINESS 0x00000006#define PRODUCT_STANDARD_SERVER 0x00000007#define PRODUCT_DATACENTER_SERVER 0x00000008#define PRODUCT_SMALLBUSINESS_SERVER 0x00000009#define PRODUCT_ENTERPRISE_SERVER 0x0000000A#define PRODUCT_STARTER 0x0000000B#define PRODUCT_DATACENTER_SERVER_CORE 0x0000000C#define PRODUCT_STANDARD_SERVER_CORE 0x0000000D#define PRODUCT_ENTERPRISE_SERVER_CORE 0x0000000E#define PRODUCT_ENTERPRISE_SERVER_IA64 0x0000000F#define PRODUCT_BUSINESS_N 0x00000010#define PRODUCT_WEB_SERVER 0x00000011#define PRODUCT_CLUSTER_SERVER 0x00000012#define PRODUCT_HOME_SERVER 0x00000013#define PRODUCT_STORAGE_EXPRESS_SERVER 0x00000014#define PRODUCT_STORAGE_STANDARD_SERVER 0x00000015#define PRODUCT_STORAGE_WORKGROUP_SERVER 0x00000016#define PRODUCT_STORAGE_ENTERPRISE_SERVER 0x00000017#define PRODUCT_SERVER_FOR_SMALLBUSINESS 0x00000018#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM 0x00000019#define PRODUCT_HOME_PREMIUM_N 0x0000001A#define PRODUCT_ENTERPRISE_N 0x0000001B#define PRODUCT_ULTIMATE_N 0x0000001C#define PRODUCT_WEB_SERVER_CORE 0x0000001D#define PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT 0x0000001E#define PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY 0x0000001F#define PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING 0x00000020#define PRODUCT_SMALLBUSINESS_SERVER_PRIME 0x00000021#define PRODUCT_HOME_PREMIUM_SERVER 0x00000022#define PRODUCT_SERVER_FOR_SMALLBUSINESS_V 0x00000023#define PRODUCT_STANDARD_SERVER_V 0x00000024#define PRODUCT_DATACENTER_SERVER_V 0x00000025#define PRODUCT_ENTERPRISE_SERVER_V 0x00000026#define PRODUCT_DATACENTER_SERVER_CORE_V 0x00000027#define PRODUCT_STANDARD_SERVER_CORE_V 0x00000028#define PRODUCT_ENTERPRISE_SERVER_CORE_V 0x00000029#define PRODUCT_HYPERV 0x0000002A#define PRODUCT_PROFESSIONAL 0x00000030#define SM_TABLETPC 86#define SM_MEDIACENTER 87#define SM_STARTER 88#define SM_SERVERR2 89/*#define VER_SERVER_NT 0x80000000#define VER_WORKSTATION_NT 0x40000000#define VER_SUITE_SMALLBUSINESS 0x00000001#define VER_SUITE_ENTERPRISE 0x00000002#define VER_SUITE_BACKOFFICE 0x00000004#define VER_SUITE_COMMUNICATIONS 0x00000008#define VER_SUITE_TERMINAL 0x00000010#define VER_SUITE_SMALLBUSINESS_RESTRICTED 0x00000020#define VER_SUITE_EMBEDDEDNT 0x00000040#define VER_SUITE_DATACENTER 0x00000080#define VER_SUITE_SINGLEUSERTS 0x00000100#define VER_SUITE_PERSONAL 0x00000200#define VER_SUITE_BLADE 0x00000400#define VER_SUITE_EMBEDDED_RESTRICTED 0x00000800#define VER_SUITE_SECURITY_APPLIANCE 0x00001000#define VER_SUITE_STORAGE_SERVER 0x00002000#define VER_SUITE_COMPUTE_SERVER 0x00004000*/#define VER_SUITE_WH_SERVER 0x00008000typedef void(WINAPI *PGNSI)(LPSYSTEM_INFO);typedef BOOL (WINAPI *PGPI)(DWORD, DWORD, DWORD, DWORD, PDWORD);BOOL GetOSDisplayString( LPTSTR pszOS){OSVERSIONINFOEX osvi;SYSTEM_INFO si;PGNSI pGNSI;PGPI pGPI;BOOL bOsVersionInfoEx;DWORD dwType;ZeroMemory(&si,sizeof(SYSTEM_INFO));ZeroMemory(&osvi,sizeof(OSVERSIONINFOEX));osvi.dwOSVersionInfoSize =sizeof(OSVERSIONINFOEX);bOsVersionInfoEx =GetVersionEx((OSVERSIONINFO*)&osvi);if(!bOsVersionInfoEx)return FALSE;// Call GetNativeSystemInfo if supported or GetSystemInfo otherwise.pGNSI =(PGNSI)GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")),"GetNativeSystemInfo");if(NULL != pGNSI)pGNSI(&si);elseGetSystemInfo(&si);if( VER_PLATFORM_WIN32_NT==osvi.dwPlatformId &&osvi.dwMajorVersion >4){StringCchCopy(pszOS, BUFSIZE, TEXT("Microsoft "));// Test for the specific product.if( osvi.dwMajorVersion >=6){if( osvi.dwMajorVersion >6|| osvi.dwMinorVersion >2){StringCchCat(pszOS, BUFSIZE, TEXT("Windows 8 Later "));// for new OS}elseif( osvi.dwMinorVersion ==0){if( osvi.wProductType == VER_NT_WORKSTATION )StringCchCat(pszOS, BUFSIZE, TEXT("Windows Vista "));elseStringCchCat(pszOS, BUFSIZE, TEXT("Windows Server 2008 "));}elseif( osvi.dwMinorVersion ==1){if( osvi.wProductType == VER_NT_WORKSTATION )StringCchCat(pszOS, BUFSIZE, TEXT("Windows 7 "));elseStringCchCat(pszOS, BUFSIZE, TEXT("Windows Server 2008 R2 "));}elseif( osvi.dwMinorVersion ==2){StringCchCat(pszOS, BUFSIZE, TEXT("Windows 8 "));}pGPI =(PGPI)GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")),"GetProductInfo");pGPI( osvi.dwMajorVersion, osvi.dwMinorVersion,0,0,&dwType);switch( dwType ){case PRODUCT_ULTIMATE:StringCchCat(pszOS, BUFSIZE, TEXT("Ultimate Edition"));break;case PRODUCT_PROFESSIONAL:StringCchCat(pszOS, BUFSIZE, TEXT("Professional"));break;case PRODUCT_HOME_PREMIUM:StringCchCat(pszOS, BUFSIZE, TEXT("Home Premium Edition"));break;case PRODUCT_HOME_BASIC:StringCchCat(pszOS, BUFSIZE, TEXT("Home Basic Edition"));break;case PRODUCT_ENTERPRISE:StringCchCat(pszOS, BUFSIZE, TEXT("Enterprise Edition"));break;case PRODUCT_BUSINESS:StringCchCat(pszOS, BUFSIZE, TEXT("Business Edition"));break;case PRODUCT_STARTER:StringCchCat(pszOS, BUFSIZE, TEXT("Starter Edition"));break;case PRODUCT_CLUSTER_SERVER:StringCchCat(pszOS, BUFSIZE, TEXT("Cluster Server Edition"));break;case PRODUCT_DATACENTER_SERVER:StringCchCat(pszOS, BUFSIZE, TEXT("Datacenter Edition"));break;case PRODUCT_DATACENTER_SERVER_CORE:StringCchCat(pszOS, BUFSIZE, TEXT("Datacenter Edition (core installation)"));break;case PRODUCT_ENTERPRISE_SERVER:StringCchCat(pszOS, BUFSIZE, TEXT("Enterprise Edition"));break;case PRODUCT_ENTERPRISE_SERVER_CORE:StringCchCat(pszOS, BUFSIZE, TEXT("Enterprise Edition (core installation)"));break;case PRODUCT_ENTERPRISE_SERVER_IA64:StringCchCat(pszOS, BUFSIZE, TEXT("Enterprise Edition for Itanium-based Systems"));break;case PRODUCT_SMALLBUSINESS_SERVER:StringCchCat(pszOS, BUFSIZE, TEXT("Small Business Server"));break;case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM:StringCchCat(pszOS, BUFSIZE, TEXT("Small Business Server Premium Edition"));break;case PRODUCT_STANDARD_SERVER:StringCchCat(pszOS, BUFSIZE, TEXT("Standard Edition"));break;case PRODUCT_STANDARD_SERVER_CORE:StringCchCat(pszOS, BUFSIZE, TEXT("Standard Edition (core installation)"));break;case PRODUCT_WEB_SERVER:StringCchCat(pszOS, BUFSIZE, TEXT("Web Server Edition"));break;}}elseif(/*osvi.dwMajorVersion == 5 &&*/ osvi.dwMinorVersion ==2){if(GetSystemMetrics(SM_SERVERR2))StringCchCat(pszOS, BUFSIZE, TEXT("Windows Server 2003 R2, "));elseif( osvi.wSuiteMask & VER_SUITE_STORAGE_SERVER )StringCchCat(pszOS, BUFSIZE, TEXT("Windows Storage Server 2003"));elseif( osvi.wSuiteMask & VER_SUITE_WH_SERVER )StringCchCat(pszOS, BUFSIZE, TEXT("Windows Home Server"));elseif( osvi.wProductType == VER_NT_WORKSTATION &&si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64){StringCchCat(pszOS, BUFSIZE, TEXT("Windows XP Professional x64 Edition"));}elseStringCchCat(pszOS, BUFSIZE, TEXT("Windows Server 2003, "));// Test for the server type.if( osvi.wProductType != VER_NT_WORKSTATION ){if( si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_IA64 ){if( osvi.wSuiteMask & VER_SUITE_DATACENTER )StringCchCat(pszOS, BUFSIZE, TEXT("Datacenter Edition for Itanium-based Systems"));elseif( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )StringCchCat(pszOS, BUFSIZE, TEXT("Enterprise Edition for Itanium-based Systems"));}elseif( si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64 ){if( osvi.wSuiteMask & VER_SUITE_DATACENTER )StringCchCat(pszOS, BUFSIZE, TEXT("Datacenter x64 Edition"));else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )StringCchCat(pszOS, BUFSIZE, TEXT("Enterprise x64 Edition"));elseStringCchCat(pszOS, BUFSIZE, TEXT("Standard x64 Edition"));}else{if( osvi.wSuiteMask & VER_SUITE_COMPUTE_SERVER )StringCchCat(pszOS, BUFSIZE, TEXT("Compute Cluster Edition"));else if( osvi.wSuiteMask & VER_SUITE_DATACENTER )StringCchCat(pszOS, BUFSIZE, TEXT("Datacenter Edition"));else if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )StringCchCat(pszOS, BUFSIZE, TEXT("Enterprise Edition"));else if( osvi.wSuiteMask & VER_SUITE_BLADE )StringCchCat(pszOS, BUFSIZE, TEXT("Web Edition"));elseStringCchCat(pszOS, BUFSIZE, TEXT("Standard Edition"));}}}elseif(/*osvi.dwMajorVersion == 5 &&*/ osvi.dwMinorVersion ==1){StringCchCat(pszOS, BUFSIZE, TEXT("Windows XP "));if( osvi.wSuiteMask & VER_SUITE_PERSONAL )StringCchCat(pszOS, BUFSIZE, TEXT("Home Edition"));elseStringCchCat(pszOS, BUFSIZE, TEXT("Professional"));}elseif(/*osvi.dwMajorVersion == 5 &&*/ osvi.dwMinorVersion ==0){StringCchCat(pszOS, BUFSIZE, TEXT("Windows 2000 "));if( osvi.wProductType == VER_NT_WORKSTATION ){StringCchCat(pszOS, BUFSIZE, TEXT("Professional"));}else{if( osvi.wSuiteMask & VER_SUITE_DATACENTER )StringCchCat(pszOS, BUFSIZE, TEXT("Datacenter Server"));elseif( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )StringCchCat(pszOS, BUFSIZE, TEXT("Advanced Server"));elseStringCchCat(pszOS, BUFSIZE, TEXT("Server"));}}// Include service pack (if any) and build number.if( _tcslen(osvi.szCSDVersion)>0){StringCchCat(pszOS, BUFSIZE, TEXT(" "));StringCchCat(pszOS, BUFSIZE, osvi.szCSDVersion);}TCHAR buf[80];StringCchPrintf( buf,80, TEXT(" (build %d)"), osvi.dwBuildNumber);StringCchCat(pszOS, BUFSIZE, buf);if( osvi.dwMajorVersion >=6){if( si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_AMD64 )StringCchCat(pszOS, BUFSIZE, TEXT(", 64-bit"));elseif(si.wProcessorArchitecture==PROCESSOR_ARCHITECTURE_INTEL )StringCchCat(pszOS, BUFSIZE, TEXT(", 32-bit"));}return TRUE;}else{return FALSE;}}BOOL GetOldOSVer(LPSTR pszOldOS){OSVERSIONINFOEXA osvi;BOOL bOsVersionInfoEx;ZeroMemory(&osvi,sizeof(OSVERSIONINFOEXA));// Try calling GetVersionEx using the OSVERSIONINFOEX structure.// If that fails, try using the OSVERSIONINFO structure.osvi.dwOSVersionInfoSize =sizeof(OSVERSIONINFOEXA);bOsVersionInfoEx =GetVersionExA((OSVERSIONINFOA *)&osvi);if(!bOsVersionInfoEx ){osvi.dwOSVersionInfoSize =sizeof(OSVERSIONINFOA);if(!GetVersionExA((OSVERSIONINFOA *)&osvi)){StringCchCatA(pszOldOS, BUFSIZE,"Unknow Windows?");return FALSE;}}switch(osvi.dwPlatformId){// Test for the Windows NT product family.case VER_PLATFORM_WIN32_NT:if(osvi.dwMajorVersion <=4){StringCchCatA(pszOldOS, BUFSIZE,"Microsoft Windows NT ");}else{return FALSE;}break;// Test for the Windows Me/98/95.case VER_PLATFORM_WIN32_WINDOWS:if(osvi.dwMajorVersion ==4){switch(osvi.dwMinorVersion){case 0:StringCchCatA(pszOldOS, BUFSIZE,"Microsoft Windows 95 ");if(osvi.szCSDVersion[1]=='C'|| osvi.szCSDVersion[1]=='B')StringCchCatA(pszOldOS, BUFSIZE,"OSR2 ");break;case 3://??StringCchCatA(pszOldOS, BUFSIZE,"Microsoft Windows 95 OSR2 ");case 10:StringCchCatA(pszOldOS, BUFSIZE,"Microsoft Windows 98 ");if( osvi.szCSDVersion[1]=='A'|| osvi.szCSDVersion[1]=='B')StringCchCatA(pszOldOS, BUFSIZE,"SE ");break;case 90:StringCchCatA(pszOldOS, BUFSIZE,"Microsoft Windows Millennium Edition ");break;}}break;case VER_PLATFORM_WIN32s:StringCchCatA(pszOldOS, BUFSIZE,"Microsoft Win32s ");break;default:return FALSE;}if(osvi.dwPlatformId == VER_PLATFORM_WIN32_NT){// Test for specific product on Windows NT 4.0 SP6 and later.if( bOsVersionInfoEx ){// Test for the workstation type.if( osvi.wProductType == VER_NT_WORKSTATION){if( osvi.dwMajorVersion ==4)StringCchCatA(pszOldOS, BUFSIZE,"Workstation 4.0 ");elseif( osvi.wSuiteMask & VER_SUITE_PERSONAL )StringCchCatA(pszOldOS, BUFSIZE,"Home Edition ");elseStringCchCatA(pszOldOS, BUFSIZE,"Professional ");}// Test for the server type.elseif( osvi.wProductType == VER_NT_SERVER ||osvi.wProductType == VER_NT_DOMAIN_CONTROLLER ){// Windows NT 4.0if( osvi.wSuiteMask & VER_SUITE_ENTERPRISE )StringCchCatA(pszOldOS, BUFSIZE,"Server 4.0, Enterprise Edition ");elseStringCchCatA(pszOldOS, BUFSIZE,"Server 4.0 ");}}// Test for specific product on Windows NT 4.0 SP5 and earlierelse{HKEY hKey;TCHAR szProductType[BUFSIZE];DWORD dwBufLen=BUFSIZE*sizeof(TCHAR);LONG lRet =RegOpenKeyEx( HKEY_LOCAL_MACHINE,TEXT("SYSTEM\\CurrentControlSet\\Control\\ProductOptions"),0, KEY_QUERY_VALUE,&hKey );if( lRet != ERROR_SUCCESS )return FALSE;lRet =RegQueryValueEx( hKey, TEXT("ProductType"),NULL, NULL,(LPBYTE) szProductType,&dwBufLen);RegCloseKey( hKey );if((lRet != ERROR_SUCCESS)||(dwBufLen > BUFSIZE*sizeof(TCHAR)))return FALSE;if( lstrcmpi( TEXT("WINNT"), szProductType)==0)StringCchCatA(pszOldOS, BUFSIZE,"Workstation ");if( lstrcmpi( TEXT("LANMANNT"), szProductType)==0)StringCchCatA(pszOldOS, BUFSIZE,"Server ");if( lstrcmpi( TEXT("SERVERNT"), szProductType)==0)StringCchCatA(pszOldOS, BUFSIZE,"Advanced Server ");char szVer[20];StringCchPrintfA(szVer,sizeof(szVer),"%d.%d ", osvi.dwMajorVersion, osvi.dwMinorVersion );StringCchCatA(pszOldOS, BUFSIZE, szVer);}// Display service pack (if any) and build number.char sp6[]="Service Pack 6";char szBuf[40];if( osvi.dwMajorVersion ==4&&lstrcmpiA( osvi.szCSDVersion, sp6 )==0){HKEY hKey;LONG lRet;// Test for SP6 versus SP6a.lRet =RegOpenKeyEx( HKEY_LOCAL_MACHINE,TEXT("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Hotfix\\Q246009"),0, KEY_QUERY_VALUE,&hKey );if( lRet == ERROR_SUCCESS ){StringCchPrintfA(szBuf,sizeof(szBuf),"Service Pack 6a (Build %d)", osvi.dwBuildNumber &0xFFFF);StringCchCatA(pszOldOS, BUFSIZE, szBuf);}else// Windows NT 4.0 prior to SP6a{StringCchPrintfA(szBuf,sizeof(szBuf),"%s (Build %d)", osvi.szCSDVersion, osvi.dwBuildNumber &0xFFFF);StringCchCatA(pszOldOS, BUFSIZE, szBuf);}RegCloseKey( hKey );}else// not Windows NT 4.0{StringCchPrintfA(szBuf,sizeof(szBuf),"%s (Build %d)", osvi.szCSDVersion, osvi.dwBuildNumber &0xFFFF);StringCchCatA(pszOldOS, BUFSIZE, szBuf);}}return TRUE;}int __cdecl _tmain()int _tmain(int argc, _TCHAR* argv[]){TCHAR szOS[BUFSIZE];if(GetOSDisplayString( szOS )){_tprintf( TEXT("\n%s\n"), szOS );}else{char szOldOS[BUFSIZE]={0};if(GetOldOSVer(szOldOS)){printf("\n%s\n", szOldOS);}}}
转:Windows版本判断大全的更多相关文章
- Windows 系统版本判断
Windows 系统版本判断 博客分类: C/C++ 很多情况下,需要软件判断操作系统,其实网上写的都很少,我希望这篇文章能给大家帮助 首先我们要在.h中定义下面的东西 #define PRODU ...
- Windows CMD命令大全(转)
Windows CMD命令大全 命令简介 cmd是command的缩写.即命令行 . 虽然随着计算机产业的发展,Windows 操作系统的应用越来越广泛,DOS 面临着被淘汰的命运,但是因为它运行 ...
- Windows窗口消息大全(转)
Windows窗口消息大全,全不全自己看 ////////////////////////////////////////////////////////////////////////// #inc ...
- Windows API函数大全(完整)
Windows API函数大全,从事软件开发的朋友可以参考下 1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一 ...
- [windows菜鸟]Windows API函数大全(完整)
Windows API函数大全,从事软件开发的朋友可以参考下 1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一 ...
- Windows 窗体消息大全(速查)
Windows窗口消息大全,全不全自己撸 通用窗口消息 WM_NULL:--------->空消息,可检测程序是否有响应等 WM_CREATE:--------->新建一个窗口 WM_DE ...
- Windows CMD命令大全
http://greatverve.cnblogs.com/archive/2011/12/09/windows-cmd.html 命令简介 cmd是command的缩写.即命令行 . 虽然随着计算机 ...
- Windows CMD命令大全【转】
命令简介 cmd是command的缩写.即命令行 . 虽然随着计算机产业的发展,Windows 操作系统的应用越来越广泛,DOS 面临着被淘汰的命运,但是因为它运行安全.稳定,有的用户还在使用,所以一 ...
- windows cmd 命令大全
原文: http://www.cnblogs.com/greatverve/archive/2011/12/09/windows-cmd.html 命令简介 cmd是command的缩写.即命令行 . ...
随机推荐
- struts2学习笔记(三)—— struts2的常见配置
一.配置文件的加载顺序 每次从客户端发送请求到服务器都要先经过Struts2的核心过滤器StrutsPrepareAndExecuteFilter,这个过滤器有两个功能:预处理和执行.在预处理中主要就 ...
- pycharm运行Pytest,有没有将Pytest写入Python代码中的区别
初学pytest. 将pytest写进Python代码中 不同运行方式都可正常运行 =======================**********************========= ...
- 洛谷 P3380 【模板】二逼平衡树(树套树)
题面 luogu 题解 2019年AC的第一道题~~ 函数名命名为rank竟然会ce 我写的是树状数组套值域线段树(动态开点) 操作1:询问\(k\)在\([l-r]\)这段区间有多少数比它小,再加\ ...
- Tarjan算法打包总结(求强连通分量、割点和Tarjan-LCA)
目录 Tarjan打包总结(求强连通分量.割点和Tarjan-LCA) 强连通分量&缩点 原理 伪代码 板子(C++) 割点 原理 伪代码 最近公共祖先(LCA) 原理 伪代码 板子 Tarj ...
- 并排的两个div之间会有空隙
两个并排的DIV会有如下图所示的空隙 是因为 代码中 两个DIV之前有个 ’回车‘ 这么写就OK了 可是为什么会有这种问题呢,是因为浏览器将 空格.回车.tab键等字符都当做一个空格处理,所以当你回车 ...
- java的Spring学习2- junit和mock
<!-- 引用Mock --> <dependency> <groupId>org.mockito</groupId> <artifactId&g ...
- java的Spring学习3- mybatis
1.java的maven依赖包 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourc ...
- 神马是代码简单的cmd模式,这就是!
小狼正在研究 “怎么查找连在一起的同色方块?”算法问题 ,突然感觉我是不是需要一种开发模式,不然感觉自己的代码好乱的. 可能是研究算法吧,导致小狼的思路特别清晰,加上也用了差不多1年的nodejs.s ...
- Spring Annotation(注解)
Spring Boot Annotation @SpringBootApplication 必须作用在main 方法所在类 @RequestMapping @GetMapping @PostMappi ...
- python爬虫之认识爬虫和爬虫原理
python爬虫之基础学习(一) 网络爬虫 网络爬虫也叫网络蜘蛛.网络机器人.如今属于数据的时代,信息采集变得尤为重要,可以想象单单依靠人力去采集,是一件无比艰辛和困难的事情.网络爬虫的产生就是代替人 ...