::Hansen ::2012-02-22 @call Clean.bat @call SetEnv.bat @title XXXX :RunHere @cls @xxxxxxxxxxxx @echo 运行完毕 :StartInput @set /p var=重新运行(R)还是退出(E)? @if /i "%var%"=="E" exit() @if /i "%var%"=="R" (goto RunHere) @echo 输入错误,请重试! @goto StartInpu
CMD常用命令09设置Java的ClassPath
::Hansen
::2012-02-22
::Set ClassPath
@echo off
for %%i in ("lib/*.jar") do call :appendPath %%i
goto pathOK
:appendPath
set CLASSPATH=%CLASSPATH%;lib/%1
goto :eof
:pathOk
@echo on
Jar包签名
1、生成keystore及key
#生成私钥 keytool -validity 10000 -genkey -alias xxxxxx -keypass xxxxxx -storepass xxxxxx -keystore xxxxxx.jks -dname "CN=(R&D),O=(ATS),C=(CN)" -keyalg RSA
导出证书
#证书DER格式 keytool -exportcert -alias xxxxxx -keypass xxxxxx -keystore xxxxxx.jks -storepass xxxxxx -file xxxxxx.der #证书PEM格式 keytool -exportcert -alias xxxxxx -keypass xxxxxx -keystore xxxxxx.jks -storepass xxxxxx -rfc -file xxxxxx.pem
枚举证书
keytool -list -keystore xxxxxx.jks
2、签名
jarsigner -keystore xxxxxx.jks -storepass xxxxxx -keypass xxxxxx xxxxxx.jar xxxxxx
3、验证
JARsigner -verbose -verify xxxxxx.jar
C#调用cdll指针参数处理
1、API声明(包括**参数)
int GetTheLastErrorA(char **pcError); int GetTheLastErrorW(wchar_t **pwError);
2、C#代码
using System.Runtime.InteropServices;
[DllImport("StringAW.dll", CallingConvention = CallingConvention.Winapi,
CharSet = CharSet.Ansi, EntryPoint = "GetTheLastErrorA")]
extern static int GetTheLastErrorA(ref IntPtr a);
[DllImport("StringAW.dll", CallingConvention = CallingConvention.Winapi,
CharSet = CharSet.Auto, EntryPoint = "GetTheLastErrorW")]
extern static int GetTheLastErrorW(ref IntPtr w);
IntPtr a = IntPtr.Zero;
GetTheLastErrorA(ref a);
String sa = Marshal.PtrToStringAnsi(a);
MessageBox.Show(sa);
IntPtr w = IntPtr.Zero;
GetTheLastErrorW(ref w);
String sw = Marshal.PtrToStringUni(w);
MessageBox.Show(sw);
Maven常用参数
1.常用命令参数
进行编译
mvn compile
进行打包
#测试并打包 mvn package #直接打包,不进行测试 mvn package -DskipTests=true #打Jar包 mvn jar:jar #打War包 mvn war:war #打War包但不执行最后的压缩 mvn war:exploded
进行测试
#编译单元测试 mvn test-compile #编译并允许单元测试 mvn test
安装到本地repository
mvn install mvn install -DskipTests=true mvn install -DskipTests=true --fail-at-end #安装jar包到本地仓库 mvn install:install-file -DgroupId=groupId -DartifactId=artifactId -Dversion=1.0.0 -Dpackaging=jar -Dfile=xxx.jar
安装到远程repository
mvn deploy
进行清理
mvn clean
生成网站
#生成网站 mvn site #生成网站并发布 mvn site-deploy
打包源码包
#打包源码 mvn source:jar #下载项目源码 mvn dependency:sources -DdownloadSources=true -DdownloadJavadocs=true
打包测试源码包
mvn source:test-jar
拷贝依赖到target目录
#拷贝依赖 mvn dependency:copy-dependencies #依赖分析 mvn dependency:analyze mvn dependency:tree
生成ecplise项目
mvn eclipse:eclipse
生成ecplise项目
mvn idea:idea
生成文档
#单模块项目生成文档 mvn javadoc:javadoc #多模块项目生成文档 mvn javadoc:aggregate
创建Jar项目
mvn archetype:create -DgroupId=gourpid -DartifactId=artifactId
创建War项目
mvn archetype:create -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-webapp -DgroupId=gourpid -DartifactId=artifactId
2.settings.xml
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"] <localRepository>X:/Maven/repository</localRepository> <servers> <server> <id>neo-public</id> <username>username</username> <password>password</password> </server> <server> <id>neo-releases</id> <username>username</username> <password>password</password> </server> <server> <id>neo-snapshots</id> <username>username</username> <password>password</password> </server> </servers> <mirrors> <mirror> <id>neo-public</id> <name>Neohope Nexux Public Mirror</name> <url>http://192.168.xxx.xxx:8081/nexus/content/groups/public</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> <profiles> <profile> <id>myprofile</id> <repositories> <repository> <id>neo-public</id> <name>Neohope Nexux Public Mirror</name> <url>http://192.168.xxx.xxx:8081/nexus/content/groups/public</url> </repository> </repositories> </profile> </profiles> <activeProfiles> <activeProfile>myprofile</activeProfile> </activeProfiles> </settings>
3.pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"]
<modelVersion>4.0.0</modelVersion>
<groupId>com.neohope.xxx</groupId>
<artifactId>xxx-xxx</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<name>xxx-xxx</name>
<url>http://neohope.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<nexus.url>http://192.168.xxx.xxx:8081</nexus.url>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</plugin>
</plugins>
</build>
<distributionManagement>
<repository>
<id>neo-releases</id>
<name>Internal Releases</name>
<url>${nexus.url}/nexus/content/repositories/releases</url>
</repository>
<snapshotRepository>
<id>neo-snapshots</id>
<name>Internal Snapshots</name>
<url>${nexus.url}/nexus/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
</project>
Maven Lifecycles
Maven有三大生命周期
default:默认生命周期,用于软件构建
clean:用于项目清理
site:用于生成项目网站
1、default
<phases> <phase>validate</phase> <phase>initialize</phase> <phase>generate-sources</phase> <phase>process-sources</phase> <phase>generate-resources</phase> <phase>process-resources</phase> <phase>compile</phase> <phase>process-classes</phase> <phase>generate-test-sources</phase> <phase>process-test-sources</phase> <phase>generate-test-resources</phase> <phase>process-test-resources</phase> <phase>test-compile</phase> <phase>process-test-classes</phase> <phase>test</phase> <phase>prepare-package</phase> <phase>package</phase> <phase>pre-integration-test</phase> <phase>integration-test</phase> <phase>post-integration-test</phase> <phase>verify</phase> <phase>install</phase> <phase>deploy</phase> </phases>
2、clean
<phases>
<phase>pre-clean</phase>
<phase>clean</phase>
<phase>post-clean</phase>
</phases>
<default-phases>
<clean>
org.apache.maven.plugins:maven-clean-plugin:2.5:clean
</clean>
</default-phases>
3、site
<phases>
<phase>pre-site</phase>
<phase>site</phase>
<phase>post-site</phase>
<phase>site-deploy</phase>
</phases>
<default-phases>
<site>
org.apache.maven.plugins:maven-site-plugin:3.3:site
</site>
<site-deploy>
org.apache.maven.plugins:maven-site-plugin:3.3:deploy
</site-deploy>
</default-phases>
Windows下以兼容模式启动EXE
有两种常用的方式,可以让Windows可以以兼容模式启动EXE程序。
方法1、修改注册表,永久模式(右键-》属性-》兼容模式,也是通过修改注册表达到兼容模式启动EXE的)
A、以WINXPSP3兼容模式,注册表命令行
reg.exe Add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "PATH_TO_EXE" /d "WINXPSP3"
B、以WINXPSP3兼容模式,注册表文件
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers] "PATH_TO_EXE"="WINXPSP3"
方法2、设置环境变量,单次运行
#注意:__COMPAT_LAYER前面是两个下划线 #两个LayerName之间用空格隔开 #!表示不可以使用该兼容模式 set __COMPAT_LAYER=[!]LayerName1 [LayerName2 ...] #用WinXPsp3兼容模式启动程序 set __COMPAT_LAYER=WINXPSP3 #用WinXPsp3兼容模式启动程序,并禁用主题 set __COMPAT_LAYER=WINXPSP3 DISABLETHEMES #以管理员身份、用WinXPsp3兼容模式启动程序,并禁用主题 set __COMPAT_LAYER=WINXPSP3 DISABLETHEMES RUNASADMIN #禁用兼容模式 set __COMPAT_LAYER=
可用的设置选项有:
| LayerName | 含义 |
| 兼容模式(Compatibility Modes) | |
| WIN95 | Windows 95 |
| WIN98 | Windows 98 |
| WIN4SP5 | Windows NT 4.0 SP5 |
| WIN2000 | Windows 2000 |
| WINXPSP2 | Windows XP SP2 |
| WINXPSP3 | Windows XP SP3 |
| VISTARTM | Vista |
| VISTASP1 | Vista SP1 |
| VISTASP2 | Vista SP2 |
| WIN7RTM | Windows 7 |
| WINSRV03SP1 | Windows Server 2003 SP1 |
| WINSRV08SP1 | Windows Server 2008 SP1 |
| 显示设置(Display Settings) | |
| DISABLETHEMES | 禁用主题 |
| 640X480 | 以640×480分辨率进行 |
| HIGHDPIAWARE | 高DPI设置时,禁用显示缩放 |
| 256COLOR | 以256色运行 |
| DISABLEDWM | 禁用桌面组合 |
| 权限设置(Privilege Level) | |
| RUNASADMIN | 管理员权限运行EXE |
| RUNASINVOKER | 以调用者权限运行EXE |
| RUNASHIGHEST | 以用户最高权限运行EXE |
| Win8 | |
| ELEVATECREATEPROCESS | 子进程将获取一个UAC提升权限对话框 |
| PINDLL | DLL内存常驻 |
| DISABLEUSERCALLBACKEXCEPTION | 禁用用户回调异常 |
| VIRTUALIZEDELETE | 该模式拦截受保护文件上的删除操作,防止应用由于未处理删除操作中的异常而失败 |
| WRPMITIGATION | 当应用尝试写入、修改或删除Windows受保护文件或注册表项时,该模式返回成功(实际上没有完成该操作) |
| DXMAXIMIZEDWINDOWEDMODE | 该模式标识进入全屏模式的应用并指将这些应用重定向到最大化Window模式 |
Python遍历文件夹
import os
def walk_dir(targetdir,topdown=True):
for root, dirs, files in os.walk(targetdir, topdown):
for name in files:
print(os.path.join(name))
for name in dirs:
print(os.path.join(name))
#Let's start here
walk_dir("D:\",fileinfo)
Python使用ODBC
#!/usr/bin/python
# -*- coding: utf-8 -*-
import ceODBC
con=ceODBC.connect('driver=MySQL ODBC 5.1 Driver;server=127.0.0.1;port=3306;database=django;uid=sa;pwd=sa;')
cur=ceODBC.Cursor(con)
cur.execute("SELECT count(*) FROM djuser")
rows=cur.fetchall()
for row in rows:
print(row[0])
Python调用dll
1.Test.h
#ifndef TEST_INTADD_HEADER #define TEST_INTADD_HEADER extern "C" int WINAPIV IntAdd(int a,int b); #endif
2.Test.cpp
#include <windows.h>
#include "Test.h"
BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpReserved)
{
UNREFERENCED_PARAMETER(hinstDLL);
UNREFERENCED_PARAMETER(lpReserved);
switch(fdwReason)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
extern "C" int WINAPIV IntAdd(int a,int b)
{
return a+b;
}
3.Test.def
LIBRARY "Test" EXPORTS IntAdd
4.test_cdll.py
#test_cdll.py #请用__cdecl调用约定而不是__stdcall from ctypes import * fileName="Test.dll" Test=cdll.LoadLibrary(fileName) print(Test.IntAdd(2,3))