java keytool 工具

2023-11-03

Keytool 是一个JAVA环境下的安全钥匙与证书的管理工具,Keytool将密钥(key)和证书(certificates)存在一个称为keystore 的文件(受密码保护)中。

在keystore里,包含两种数据: 
密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)
可信任的证书实体(trusted certificate entries)——只包含公钥

jarsigner是JDK中包含的用于JAR文件签名和验证的工具。为Java档案文件(JAR)生成签名,以及对已签名的jar文件的进行校验。

JDK中ketyTool常用命令:

-genkey     在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书,(默认情况下,keystore会存在用户系统默认目录,如:win系统,会生成在C:\Documents and Settings\用户名\文件名为“.keystore”)
-alias     产生别名(default:mykey,每个keystore都关联这一个独一无二的alias,不区分大小写)
-keystore     指定密钥库的名称(产生的各类信息将不在.keystore文件中)
-keyalg     指定密钥的算法 (如RSA、DSA,default:DSA)
-validity     指定创建的证书有效期多少天(default:90)
-keysize     指定密钥长度(default:1024,范围:512 ~ 1024)
-storepass     指定密钥库的密码(获取keystore信息所需的密码)
-keypass     指定别名条目的密码(私钥的密码)
-dname     指定证书拥有者信息 

例如: "CN=名字与姓氏,OU=组织单位名称,O=组织名称,L=城市或区域名称,ST=州或省份名称,C=单位的两字母国家代码"

-list     显示密钥库中的证书信息 

keytool -list -v -keystore 指定keystore -storepass 密码     -v 显示密钥库中的证书详细信息
-export     将别名指定的证书导出到文件 

keytool -export -alias 需要导出的别名 -keystore 指定keystore -file 指定导出的证书位置及证书名称 -storepass 密码
-delete     删除密钥库中某条目 

keytool -delete -alias 指定需删除的keystore别名 -keystore 指定keystore -storepass 密码
-printcert     查看导出的证书信息

keytool -printcert -file yushan.crt
-keypasswd     修改密钥库中指定条目口令 

keytool -keypasswd -alias 需修改的别名 -keypass 旧密码 -new 新密码 -storepass keystore密码 -keystore sage
-storepasswd     修改keystore口令 

keytool -storepasswd -keystore e:\yushan.keystore(需修改口令的keystore) -storepass 123456(原始密码)-new yushan(新密码)
-import     将已签名数字证书导入密钥库 

keytool -import -alias 别名 -keystore指定keystore -file需导入的证书


keytool 使用demo(注:.keystore可以换成.jks后缀):

1、keystore的生成:

分阶段生成:
keytool -genkey -alias yushan(别名) -keypass yushan(别名密码) -keyalg RSA(算法) -keysize 1024(密钥长度) -validity 365(有效期,天单位) -keystore
e:\yushan.keystore(指定生成证书的位置和证书名称) -storepass 123456(获取keystore信息的密码);

回车输入相关信息即可;

一次性生成:
keytool -genkey -alias yushan -keypass yushan -keyalg RSA -keysize 1024 -validity 365 -keystore e:\yushan.keystore -storepass 123456 -dname "CN=(名字与
姓氏), OU=(组织单位名称), O=(组织名称), L=(城市或区域名称), ST=(州或省份名称), C=(单位的两字母国家代码)";

(中英文即可)

2、keystore信息的查看:
keytool -list -v -keystore e:\keytool\yushan.keystore -storepass 123456
显示内容:

[plain]  view plain  copy
  1. Keystore 类型: JKS  
  2. Keystore 提供者: SUN  
  3.   
  4. 您的 keystore 包含 1 输入  
  5.   
  6. 别名名称: yushan  
  7. 创建日期: 2009-7-29  
  8. 项类型: PrivateKeyEntry  
  9. 认证链长度: 1  
  10. 认证 [1]:  
  11. 所有者:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国  
  12. 签发人:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国  
  13. 序列号:4a6f29ed  
  14. 有效期: Wed Jul 29 00:40:13 CST 2009 至Thu Jul 29 00:40:13 CST 2010  
  15. 证书指纹:  
  16. MD5:A3:D7:D9:74:C3:50:7D:10:C9:C2:47:B0:33:90:45:C3  
  17. SHA1:2B:FC:9E:3A:DF:C6:C4:FB:87:B8:A0:C6:99:43:E9:4C:4A:E1:18:E8  
  18. 签名算法名称:SHA1withRSA  
  19. 版本: 3  

缺省情况下,-list 命令打印证书的 MD5 指纹。而如果指定了 -v 选项,将以可读格式打印证书,如果指定了 -rfc 选项,将以可打印的编码格式输出证书。

keytool -list -rfc -keystore e:\yushan.keystore -storepass 123456

显示:

[plain]  view plain  copy
  1. Keystore 类型: JKS  
  2. Keystore 提供者: SUN  
  3.   
  4. 您的 keystore 包含 1 输入  
  5.   
  6. 别名名称: yushan  
  7. 创建日期: 2009-7-29  
  8. 项类型: PrivateKeyEntry  
  9. 认证链长度: 1  
  10. 认证 [1]:  
  11. -----BEGIN CERTIFICATE-----  
  12. MIICSzCCAbSgAwIBAgIESm8p7TANBgkqhkiG9w0BAQUFADBqMQ8wDQYDVQQGDAbkuK3lm70xDzAN  
  13. BgNVBAgMBua5luWNlzEPMA0GA1UEBwwG5rmY5r2tMREwDwYDVQQKDAh4eOWNj+S8mjERMA8GA1UE  
  14. CwwIeHjlhazlj7gxDzANBgNVBAMTBnl1c2hhbjAeFw0wOTA3MjgxNjQwMTNaFw0xMDA3MjgxNjQw  
  15. MTNaMGoxDzANBgNVBAYMBuS4reWbvTEPMA0GA1UECAwG5rmW5Y2XMQ8wDQYDVQQHDAbmuZjmva0x  
  16. ETAPBgNVBAoMCHh45Y2P5LyaMREwDwYDVQQLDAh4eOWFrOWPuDEPMA0GA1UEAxMGeXVzaGFuMIGf  
  17. MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCJoru1RQczRzTnBWxefVNspQBykS220rS8Y/oX3mZa  
  18. hjL4wLfOURzUuxxuVQR2jx7QI+XKME+DHQj9r6aAcLBCi/T1jwF8mVYxtpRuTzE/6KEZdhowEe70  
  19. liWLVE+hytLBHZ03Zhwcd6q5HUMu27du3MPQvqiwzTY7MrwIvQQ8iQIDAQABMA0GCSqGSIb3DQEB  
  20. BQUAA4GBAGoQQ1/FnTfkpQh+Ni6h3fZdn3sR8ZzDMbOAIYVLAhBb85XDJ8QZTarHbZMJcIdHxAl1  
  21. i08ct3E8U87V9t8GZFWVC4BFg/+zeFEv76SFpVE56iX7P1jpsu78z0m69hHlds77VJTdyfMSvtXv  
  22. sYHP3fxfzx9WyhipBwd8VPK/NgEP  
  23. -----END CERTIFICATE-----  

3、证书的导出:
keytool -export -alias yushan -keystore e:\yushan.keystore -file e:\yushan.crt -storepass 123456

4、查看导出的证书信息
keytool -printcert -file yushan.crt
显示:(在windows下可以双击yushan.crt查看)

[plain]  view plain  copy
  1. 所有者:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国  
  2. 签发人:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国  
  3. 序列号:4a6f29ed  
  4. 有效期: Wed Jul 29 00:40:13 CST 2009 至Thu Jul 29 00:40:13 CST 2010  
  5. 证书指纹:  
  6. MD5:A3:D7:D9:74:C3:50:7D:10:C9:C2:47:B0:33:90:45:C3  
  7. SHA1:2B:FC:9E:3A:DF:C6:C4:FB:87:B8:A0:C6:99:43:E9:4C:4A:E1:18:E8  
  8. 签名算法名称:SHA1withRSA  
  9. 版本: 3  
5、证书的导入:
准备一个导入的证书:
keytool -genkey -alias shuany -keypass shuany -keyalg RSA -keysize 1024 -validity 365 -keystore e:\shuany.keystore -storepass 123456 -dname "CN=shuany,
OU=xx, O=xx, L=xx, ST=xx, C=xx";

keytool -export -alias shuany -keystore e:\shuany.keystore -file e:\shuany.crt -storepass 123456

现在将shuany.crt 加入到yushan.keystore中:
keytool -import -alias shuany(指定导入证书的别名,如果不指定默认为mykey,别名唯一,否则导入出错) -file e:\shuany.crt -keystore e:\yushan.keystore -storepass
123456

keytool -list -v -keystore e:\keytool\yushan.keystore -storepass 123456
显示:

[plain]  view plain  copy
  1. Keystore 类型: JKS  
  2. Keystore 提供者: SUN  
  3.   
  4. 您的 keystore 包含 2 输入  
  5.   
  6. 别名名称: yushan  
  7. 创建日期: 2009-7-29  
  8. 项类型: PrivateKeyEntry  
  9. 认证链长度: 1  
  10. 认证 [1]:  
  11. 所有者:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国  
  12. 签发人:CN=yushan, OU=xx公司, O=xx协会, L=湘潭, ST=湖南, C=中国  
  13. 序列号:4a6f29ed  
  14. 有效期: Wed Jul 29 00:40:13 CST 2009 至Thu Jul 29 00:40:13 CST 2010  
  15. 证书指纹:  
  16. MD5:A3:D7:D9:74:C3:50:7D:10:C9:C2:47:B0:33:90:45:C3  
  17. SHA1:2B:FC:9E:3A:DF:C6:C4:FB:87:B8:A0:C6:99:43:E9:4C:4A:E1:18:E8  
  18. 签名算法名称:SHA1withRSA  
  19. 版本: 3  
  20.   
  21.   
  22. *******************************************  
  23. *******************************************  
  24.   
  25.   
  26. 别名名称: shuany  
  27. 创建日期: 2009-7-29  
  28. 输入类型: trustedCertEntry  
  29.   
  30. 所有者:CN=shuany, OU=xx, O=xx, L=xx, ST=xx, C=xx  
  31. 签发人:CN=shuany, OU=xx, O=xx, L=xx, ST=xx, C=xx  
  32. 序列号:4a6f2cd9  
  33. 有效期: Wed Jul 29 00:52:41 CST 2009 至Thu Jul 29 00:52:41 CST 2010  
  34. 证书指纹:  
  35. MD5:15:03:57:9B:14:BD:C5:50:21:15:47:1E:29:87:A4:E6  
  36. SHA1:C1:4F:8B:CD:5E:C2:94:77:B7:42:29:35:5C:BB:BB:2E:9E:F0:89:F5  
  37. 签名算法名称:SHA1withRSA  
  38. 版本: 3  
  39.   
  40.   
  41. *******************************************  
  42. *******************************************  
6、证书条目的删除:
keytool -delete -alias shuany  -keystore yushan.keystore -storepass 123456

7、证书条目口令的修改:
keytool -keypasswd -alias yushan -keypass yushan -new 123456 -keystore e:\yushan.keystore -storepass 123456

8、keystore口令的修改:
keytool -storepasswd -keystore e:\yushan.keystore  -storepass 123456 -new yushan

9、修改keystore中别名为yushan的信息

keytool -selfcert -alias yushan -keypass yushan -keystore e:\yushan.keystore -storepass 123456 -dname "cn=yushan,ou=yushan,o=yushan,c=us"

jarsigner工具简介

jarsigner工具主要有以下两个作用:
a.对JAR文件签名            jarsigner [ options ] jarfile alias
b.校验签名以及签名JAR文件的完整性     jarsigner -verify [ options ] jarfile
JAR文件可以同时包含多个package的类文件,图片,声音以及数字数据,一边更快更方便的发布。jar工具用来创建JAR文件,从技术角度来说,任何zip文件都可以被看作是JAR文件,虽然使用jar创建的JAR文件包含META-INF/MANIFEST.MF文件。

数字签名是从一个实体(人、公司等)的某些数据(正被“签名”的数据)和私钥计算出来的位串。与手写的签名一样,数字签名有很多有用的特性: 
1.真实性2.不可能被伪造(假设私钥没有泄露)3.已签名的数据不能被修改;如果被修改了,签名将不再被校验为可信的。

为了给文件生成实体的签名,该实体首先必须与一对公/私钥相关联,以及一个或多个鉴别其公钥的证书。证书是来自一个实体的已被数字签署的声明,表示某个其它实体的公钥有特定值。

使用keytool 创建和管理密钥仓库(keystore)后,jarsigner 使用来自密钥仓库(keystore)的密钥和证书信息为 JAR 文件生成数字签名。

语法参数:

jarsigner -verify [选项] jar 文件

[-keystore <url>]                  密钥库位置
[-storepass <口令>]           用于密钥库完整性的口令
[-storetype <类型>]             密钥库类型
[-keypass <口令>]              专用密钥的口令(如果不同)
[-sigfile <文件>]                 .SF/.DSA 文件的名称
[-signedjar <文件>]            已签名的 JAR 文件的名称
[-digestalg <算法>]            摘要算法的名称
[-sigalg <算法>]                  签名算法的名称
[-verify]                验证已签名的 JAR 文件
[-verbose]         签名/验证时输出详细信息
[-certs]               输出详细信息和验证时显示证书
[-tsa <url>]               时间戳机构的位置
[-tsacert <别名>]            时间戳机构的公共密钥证书
[-altsigner <类>]            替代的签名机制的类名
[-altsignerpath <路径列表>]   替代的签名机制的位置
[-internalsf]            在签名块内包含 .SF 文件
[-sectionsonly]             不计算整个清单的散列
[-protected]              密钥库已保护验证路径
[-providerName <名称>]              提供者名称
[-providerClass <类>              加密服务提供者的名称
[-providerArg <参数>]] ...             主类文件和构造函数参数

使用demo:

C:\>jar cf pg.jar org\*.*

C:\>jarsigner -storetype jks -keystore c:\mykeystore.keystore -digestalg MD5 -sigalg MD5withRSA -signedjar pgsigned.jar pg.jar myalias

C:\>jarsigner -verify pgsigned.jar

修改MYALIAS.SF文件的内容,然后再校验:
C:\>jarsigner -verify pgsigned.jar

附:Java KeyStore的类型

JKS和JCEKS是Java密钥库(KeyStore)的两种比较常见类型(我所知道的共有5种,JKS, JCEKS, PKCS12, BKS,UBER)。


JKS的Provider是SUN,在每个版本的JDK中都有,JCEKS的Provider是SUNJCE,1.4后我们都能够直接使用它。

JCEKS在安全级别上要比JKS强,使用的Provider是JCEKS(推荐),尤其在保护KeyStore中的私钥上(使用TripleDes)。

PKCS#12是公钥加密标准,它规定了可包含所有私钥、公钥和证书。其以二进制格式存储,也称为 PFX 文件,在windows中可以直接导入到密钥区,注意,PKCS#12的密钥库保护密码同时也用于保护Key。

BKS 来自BouncyCastle Provider,它使用的也是TripleDES来保护密钥库中的Key,它能够防止证书库被不小心修改(Keystore的keyentry改掉1个 bit都会产生错误),BKS能够跟JKS互操作,读者可以用Keytool去TryTry。

UBER比较特别,当密码是通过命令行提供的时候,它只能跟keytool交互。整个keystore是通过PBE/SHA1/Twofish加密,因此keystore能够防止被误改、察看以及校验。以前,Sun JDK(提供者为SUN)允许你在不提供密码的情况下直接加载一个Keystore,类似cacerts,UBER不允许这种情况。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java keytool 工具 的相关文章

  • 使用匕首柄作为依赖注入来处理多个改造客户端?

    我想在我的 android 应用程序中使用两个不同的后端 具有不同的响应格式 我使用 hilt 作为依赖注入 并对网络调用进行改造 这非常适合工作 因为我已经添加了第二个服务器网络文件和应用程序模块 所以它给了我错误 该错误列在最后 我需要
  • 即使我单击“运行”,Eclipse 也会运行调试模式

    Eclipse 总是在调试模式下启动我的应用程序 即使我单击常规的 运行 按钮 有任何想法吗 我发现我必须重新启动 Xoom 才能使其再次正常工作
  • Android Widget ID 是否持久

    在从桌面删除该 Widget 实例之前 您从操作系统收到的用户桌面上特定 Widget 实例的 Widget ID 是否一致 我找不到任何明确说明这一点的文档 但我假设这是因为文档说您可以使用小部件 id 来存储任何实例配置信息 我想将一些
  • Phonegap(应用程序错误...发生网络错误)

    我已经使用phonegap 创建了一个版本 在index html 文件中 我编写了一个简单的iframe 用于加载网站 当我从phonegap获取本地url时它就起作用了 但如果我将整个构建作为 zip 文件上传到 PhoneGap 中
  • ndk-build error.opencv2/core/core.hpp:没有这样的文件或目录

    我在 Android 中使用 OpenCV Nonfree 模块时遇到问题 我读了这个教程https sites google com site wghsite technical notes sift surf opencv androi
  • 升级到 Proguard 4.8 后无法导出应用程序

    我刚刚将我的 Android SDK ADT 和 Proguard 升级到最新最好的版本 我的项目在调试模式下编译并运行良好 但是当我尝试导出它的签名版本 APK 时 我收到来自导出向导的错误Eclipse 控制台上没有任何错误日志消息 如
  • android:ScrollView(或视差)内的RecyclerView

    我有一个片段2 次卡片浏览内有多个控件 below我有第二个卡片视图回收者视图 这有效perfect 问题是 recyclerview 启动了屏幕的最底部 并且滚动recyclerview非常small 以前使用过列表视图 这使我可以适应您
  • 不使用eclipse安装Android模拟器

    如何在没有eclipse的电脑上安装android模拟器 android模拟器无需安装eclipse 只需下载 android sdk 并安装即可 安装android SDK之前必须先安装JDK 完成后安装成功 您将获得两个应用程序 SDK
  • Android Studio APK META-INF/BCKEY.DSA 中复制的重复文件

    我的代码构建得很好 但是当我尝试在调试中运行它时 出现以下错误 Error Execution failed for task app transformResourcesWithMergeJavaResForDebug com andro
  • 旋转 Google 地图中的两层标记图标

    在我的应用程序中 我向地图添加了一定数量的标记 如下所示 private fun addMarker googleMap GoogleMap location Location val options MarkerOptions optio
  • 检测设备方向

    我需要检测 Android 设备方向变化 而无需手动处理传感器数据 同时保持活动方向坚持某个方向 onConfigurationChange不会起作用 因为会让我的活动不旋转 通过使用传感器数据来检测方向变化 我认为这是轮子的发明 因为 A
  • Android中如何使用intent加载本地html页面?

    我的 asset 目录中有一个 html 文件 我必须使用 Intent 将其加载为浏览器应用程序 这是我的代码 但它不起作用 startActivity new Intent Intent ACTION VIEW Uri parse fi
  • Android 两个 Activity 之间的共享元素转换不起作用

    在我的应用程序中 我尝试使用新引入的活动之间共享的元素 如果共享元素具有固定位置 例如 android layout gravity top 但是当视图被锚定时问题就出现了 我的第一个活动如下所示
  • 如何获取Android中的所有主屏幕?

    我是安卓开发新手 我知道每个主屏幕都是启动器中的一个工作区 我想获取屏幕上所有应用程序图标的所有位置信息 那么有没有办法获取这些屏幕对象及其图标信息的列表 ADD 我更期待的是应用程序图标和屏幕之间的关系 例如 我想要某个应用程序图标的位置
  • Grade Plugin 3-alpha1 输出文件导致错误

    我正在尝试将项目更新到 Android Studio 3 build gradle 文件中不再接受以下代码片段 applicationVariants all variant gt variant outputs each out gt d
  • Android - 检测视图上的双击和三次点击

    我一直在尝试构建一个可以检测双敲击和三敲击的敲击检测器 在我的努力失败后 我在网上搜索了很长时间以找到可以使用的东西 但没有运气 奇怪的是 像这样的图书馆如此稀缺 有什么帮助吗 你可以尝试这样的事情 尽管我通常建议不要使用三次点击作为一种模
  • JavaScript 点击事件在 Android 4.0.4 默认浏览器上的 Samsung Galaxy SIII 上不起作用

    我在 Android 4 0 4 上使用 Samsung Galaxy SIII 的默认浏览器时遇到了最奇怪的问题 对于以下页面 单击链接将不会触发 JavaScript 处理程序 从其中一个 div 的内容中删除单个 a 字母使它们再次工
  • AndroidAnnotations 和 Dagger

    我正在尝试使用 Dagger 注入 Android 带注释的 Activity java lang IllegalArgumentException No inject registered for members com app serv
  • Android Webview隐私浏览

    我在我的 Android 应用程序中使用 webview 从多个站点获取一些网页 我对 webview 行为有一些疑问 webview 是否存储历史记录 cookie 表单自动填充信息 如果是的话 我们可以阻止它这样做吗 如果 Webvie
  • android.view.WindowLeaked - 使用对话框和新意图时

    我已经尝试了 stackoverflow 上提供的所有可能的解决方案 但我仍然在 logcat 中遇到此错误 活动 com xyz MainActivity 泄露了最初在此处添加的窗口 com android internal policy

随机推荐

  • Pycharm使用教程 (非常实用)

    一 PyChram下载 官网 http www jetbrains com pycharm Windows http www jetbrains com pycharm download section windows Linux http
  • 【STL】模板概念+STL介绍

    模板 Template 模板就是C 实现代码重用机制的一种工具 它可以实现类型参数化 即把类型定义为参数 从而实现了真正的代码可重用性 可以使用模板来定义函数和类 当你定义一个如下函数 想要计算一个数的平方 int square int x
  • sql中用什么替代in

    IN和EXISTS 有时候会将一列和一系列值相比较 最简单的办法就是在where子句中使用子查询 在where子句中可以使用两种格式的子查询 第一种格式是使用IN操作符 where column in select from where 第
  • CVE-2019-0708 远程桌面代码执行漏洞复现

    0X00 靶机 漏洞环境 我当时就是虚拟机装了Windows7 SP1的系统 一下就ojbk 你们没有 就下载装吧 使用VM安装Windows7 SP1模拟受害机 Windows7 SP1下载链接 这里的靶机是使用清水表哥提供的win7sp
  • SOA:原理•方法•实践,第 1 部分: SOA 的基本概念

    SOA 原理方法实践 的第 1 章从概念上对 SOA 给出一个全面而精炼的总体描述 首先说明 SOA 的特点 以及使用 SOA 对系统进行架构决策和设计的必要性 然后介绍了 SOA 的参考体系结构 设计原则及相关技术的简介 查看本系列更多内
  • Android性能优化 _ 大图做帧动画卡?优化帧动画之 SurfaceView滑动窗口式帧复用

    ps 粗斜体表示引导方案逐步进化的关键点 SurfaceView逐帧解析 帧复用 简单回顾下上一篇的内容 原生帧动画在播放前解析所有帧 对内存压力大 SurfaceView可以精细地控制帧动画每一帧的绘制 在每一帧绘制前才解析当前帧 且解析
  • java常用部署脚本

    记一个工作中常用的java部署脚本 首先进入linux 1 使用下面代码段 vim run sh 2 然后按 i 进入编辑模式 3 拷贝下面脚本代码 bin sh chkconfig 2345 99 10 description Start
  • 西门子S7-1200 PLC进行项目选型要了解这些

    西门子S7 1200 PLC是西门子S7系列PLC产品中一员 S7系列产品包含有 S7 200 Smart 200 S7 1200 S7 300 S7 1500 S7 400等系列PLC 其中S7 200 Smart 200 S7 1200
  • Java多线程编程详解(第零章)

    Java多线程编程详解 0 参考书籍 Java并发编程实战 Java并发编程实战 本文是关于以上两本书的读书笔记以及一些个人思考 0 关于并发与多线程的简介 编写正确的程序很难 而编写正确的并发程序则难上加难 与串行程序相比 在并发程序中存
  • 如何针对单个表单项去掉验证和添加验证?

    this refs conpanyForm clearValidate district 清除校验 this refs conpanyForm validate district 添加校验
  • Ubuntu安装notepad++

    习惯了Windows的代码编写输入方式 转回Ubuntu vim编程总有点不习惯和不方便 即使vim功能很强大 我还是喜欢Windows的代码编写输入方式 简简单单 安装个notepadqq就行了 Ubuntu版notepad 安装方式 s
  • vue vue-json-viewer 展示 JSON 格式数据

    1 下载 vue json viewer npm 下载 vue json viewer Vue2 npm install vue json viewer 2 save Vue3 npm install vue json viewer 3 s
  • MS Active Accessibility 接口技术编程尝试

    MS Active Accessibility 接口技术编程尝试 编译 崔传凯 下载源代码 Microsoft Active Accessibility 2 0 is a COM based technology that improves
  • 【Ogre编程入门与进阶】第十三章 公告板与粒子系统

    Ogre编程入门与进阶 第十三章 公告板与粒子系统 标签 ogre公告板粒子系统ogre粒子系统 2015 07 05 14 41 1365人阅读 评论 1 收藏 举报 分类 Orge模块 16 版权声明 本文为博主原创文章 未经博主允许不
  • 计算机电源接口图解,菜鸟老鸟都要知道 电源接口图文全教程

    IT168 应用 电源的功率一直是玩家们关注的焦点 可对于刚涉足DIY领域的用户来说 自己组装DIY一台电脑拿才是最令人兴奋的事情 组装电脑少不了要接各种各样的线材 那么如何辨别各种类型的接口 每个接口之间的的功能有何区别呢 电源接口种类繁
  • 微信小程序之分享页面内容为空

    文章目录 错误记录 分享的关键方法 onShareAppMessage 错误记录 分享出去的页面 别人打开没有内容 解决方法参考文章 说是因为分享出去的页面的某些数据是上级页面传递过来的 结果直接分享出去的页面 别人打开是获取不到传递过来的
  • leetcode 二叉树题目总结

    leetcode 二叉树题目总结 一 基本问题 遍历 前序遍历 后序遍历 中序遍历 莫里斯遍历 空间复杂度O 1 层次遍历 由序列构造二叉树 递归解决二叉树问题 将二叉树转换为其他结构 二叉树结构 struct TreeNode int v
  • nrm安装(NPM源管理器)

    1 什么是nrm nrm 是一个 npm 源管理器 允许你快速地在 npm源间切换 npm默认情况下是使用npm官方源 使用命令可以查看 一般我们都会用淘宝npm源 设置淘宝源 npm set registry https registry
  • 智能小车之PWM脉冲控制小车调速

    目录 一 PWM脉冲控制小车调速 二 代码实现 一 PWM脉冲控制小车调速 原理 全速前进是LeftCon1A 0 LeftCon1B 1 完全停止是LeftCon1A 0 LeftCon1B 0 那么单位时间内比如 20ms 有15ms是
  • java keytool 工具

    Keytool 是一个JAVA环境下的安全钥匙与证书的管理工具 Keytool将密钥 key 和证书 certificates 存在一个称为keystore 的文件 受密码保护 中 在keystore里 包含两种数据 密钥实体 Key en