小编Glo*_*del的帖子

解决javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败错误?

编辑: -尝试格式化问题并在我的博客中以更明显的方式接受答案

这是原始问题.

我收到此错误:

详细消息sun.security.validator.ValidatorException:PKIX路径构建失败:
sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径

导致javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到所请求目标的有效证书路径

我使用Tomcat 6作为网络服务器.我有两个HTTPS Web应用程序安装在不同端口上但位于同一台机器上的不同Tomcats上.说App1(port 8443)App2(port 443).App1连接到App2.当App1所连接到App2我得到上述错误.我知道这是一个非常常见的错误,所以在不同的论坛和网站上遇到了很多解决方案.我有server.xml两个Tomcats 的以下条目:

keystoreFile="c:/.keystore" 
keystorePass="changeit"
Run Code Online (Sandbox Code Playgroud)

每个站点都说同样的原因,即app2提供的证书不在app1 jvm的可信存储中.当我试图在IE浏览器中访问相同的URL时,这似乎也是正确的,它可以工作(加热,这个网站的安全证书存在问题.在这里我说继续这个网站).但是当Java客户端(在我的情况下)遇到相同的URL时,我得到上述错误.所以把它放在信任库中我试过这三个选项:

选项1

System.setProperty("javax.net.ssl.trustStore", "C:/.keystore");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
Run Code Online (Sandbox Code Playgroud)

Option2 在环境变量中设置如下

CATALINA_OPTS -- param name
-Djavax.net.ssl.trustStore=C:\.keystore -Djavax.net.ssl.trustStorePassword=changeit ---param value
Run Code Online (Sandbox Code Playgroud)

选项3 在环境变量中设置如下

JAVA_OPTS -- param name
-Djavax.net.ssl.trustStore=C:\.keystore -Djavax.net.ssl.trustStorePassword=changeit ---param value
Run Code Online (Sandbox Code Playgroud)

但没有任何效果.

最后工作的 是执行如何使用Apache HttpClient处理无效SSL证书中建议的Java方法由Pascal Thivent执行,即执行程序InstallCert.

但这种方法适用于devbox设置,但我无法在生产环境中使用它.

我很奇怪,为什么上面提到的三种方法时,我已经中提到的相同值没有工作server.xmlapp2服务器和相同的价值观信任设置

System.setProperty("javax.net.ssl.trustStore", "C:/.keystore") and System.setProperty("javax.net.ssl.trustStorePassword", "changeit"); …

java ssl https

392
推荐指数
11
解决办法
101万
查看次数

首次数据库设计:我是否过度工程?

背景

我是CS的第一年学生,我兼职为我爸爸的小生意做准备.我没有任何实际应用程序开发经验.我用Python编写脚本,用C编写一些课程,但没有这样的.

我父亲有一个小型培训业务,目前所有课程都通过外部网络应用程序进行安排,记录和跟进.有一个导出/"报告"功能,但它非常通用,我们需要特定的报告.我们无权访问实际数据库来运行查询.我被要求建立一个自定义报告系统.

我的想法是创建通用CSV导出并导入(可能使用Python)它们每晚都在办公室中托管的MySQL数据库中,从那里我可以运行所需的特定查询.我没有数据库方面的经验,但了解非常基础知识.我已经阅读了一些关于数据库创建和普通表单的内容.

我们可能很快就会开始拥有国际客户,因此我希望数据库在发生这种情况时不会爆炸.我们目前还有几家大公司作为客户,有不同的部门(例如ACME母公司,ACME医疗保健部门,ACME身体护理部门)

我提出的架构如下:

  1. 从客户的角度来看:
    • 客户是主要的表
    • 客户与他们工作的部门相关联
      • 各部门可以分散在一个国家:伦敦的人力资源部门,斯旺西的市场营销部门等.
      • 部门与公司的部门相关联
    • 部门与母公司相关联
  2. 从班级角度来看:
    • 会话是主要的表格
      • 教师与每个课程相关联
      • 每个会话都有一个statusid.例如0 - 已完成,1 - 已取消
      • 会话被分组为任意大小的"包"
    • 每个包都分配给客户端

我在一张纸上"设计"(更像是潦草书写)模式,试图将其标准化为第三种形式.然后我把电源插头插上到MySQL Workbench和它使人们都非常适合我:
(点击查看全尺寸图片)

替代文字http://maian.org/img/schema.png

示例查询我将运行

  • 哪些有信用额度的客户仍处于闲置状态(未来未安排课程的客户)
  • 每个客户/部门/部门的出勤率是多少(以每个会话中的状态ID来衡量)
  • 一个月有一个老师有几节课
  • 标记出勤率低的客户
  • 人力资源部门的自定义报告,其部门的人员出勤率

问题(S)

  • 这是过度工程还是我正确的方向?
  • 对于大多数查询,是否需要连接多个表会导致性能大幅下降?
  • 我已经向客户添加了"lastsession"列,因为它可能是一个常见的查询.这是一个好主意还是我应该严格规范化数据库?

谢谢你的时间

mysql database schema database-design database-normalization

245
推荐指数
5
解决办法
2万
查看次数

'foo'到底意味着什么?

我希望这有资格作为一个编程问题,就像在任何编程教程中一样,你最终会在代码示例中遇到'foo'.(是的,对吧?)

'foo'到底意味着什么?

如果它意味着什么都没有,它何时开始被使用呢?

language-agnostic coding-style

226
推荐指数
6
解决办法
14万
查看次数

取消Chrome开发者工具

如何取消Chrome中的Chrome开发者工具?按下左下角只是将其移动到右侧.

Chrome Corner http://jeremistadler.github.io/corner.png

google-chrome google-chrome-devtools

191
推荐指数
2
解决办法
5万
查看次数

在Android中设置TextView span的颜色

是否可以在TextView中设置文本范围的颜色?

我想做一些类似于Twitter应用程序的东西,其中一部分文本是蓝色的.见下图:

替代文字

formatting android text textview

188
推荐指数
12
解决办法
15万
查看次数

如何在任何二叉树中找到两个节点的最低共同祖先?

这里的二叉树可能不一定是二进制搜索树.
结构可以视为 -

struct node {
    int data;
    struct node *left;
    struct node *right;
};
Run Code Online (Sandbox Code Playgroud)

我可以和朋友一起解决的最大解决方案就是这种 -
考虑这个二叉树:

二叉树http://lcm.csa.iisc.ernet.in/dsa/img151.gif

顺序遍历产量 - 8,4,9,2,5,1,6,3,7

后序遍历产量 - 8,9,4,5,2,6,7,3,1

因此,例如,如果我们想要找到节点8和5的共同祖先,那么我们在顺序树遍历中创建8到5之间的所有节点的列表,在这种情况下恰好是[4,9] ,2].然后我们检查此列表中的哪个节点在后序遍历中最后出现,即2.因此,8和5的共同祖先是2.

这个算法的复杂性,我相信是O(n)(O(n)对于顺序/后序遍历,其余的步骤再次是O(n),因为它们只不过是数组中的简单迭代).但这很有可能是错误的.:-)

但这是一个非常粗略的方法,我不确定它是否会因某些情况而崩溃.这个问题还有其他(可能是更优的)解决方案吗?

algorithm complexity-theory binary-tree least-common-ancestor

183
推荐指数
9
解决办法
18万
查看次数

Netflow记录无法获取八位字节(jnca)

我正在使用jnca库来收集路由器发送的NetFlow记录.路由器发送的NetFlow记录版本为9.

当从Wireshark观察NetFlow分组时,具有模板id 263的流集包含关于发起者八位字节和响应者八位字节的数据,其可用于确定与流相关联的字节数. wireshark记录

但问题是jcna无法获得这些值.对于八位字节,它始终显示为零.

currOffset = t.getTypeOffset(FieldDefinition.InBYTES_32);
currLen = t.getTypeLen(FieldDefinition.InBYTES_32);
if (currOffset >= 0 && currLen > 0) {
    dOctets = Util.to_number(buf, off + currOffset, currLen) * t.getSamplingRate();
}
Run Code Online (Sandbox Code Playgroud)

这是用于获取dOctets的代码段.即使对于模板ID 263,这也返回零.

但是当它根据NetFlow模板ID 263计算时,它会提供正确的数据.(给出启动器八位字节并获得响应者八位字节46应该用50替换,因为特定记录的长度是4字节)

dOctets = Util.to_number(buf, off + 46, 4)
Run Code Online (Sandbox Code Playgroud)

46是Initiator Octets记录位于特定NetFlow数据包的地方.(使用Wireshark记录.)

这是jnca的问题吗?希望有些熟悉jcna的人能给我一些帮助.

java cisco netflow

168
推荐指数
1
解决办法
3705
查看次数

Dijkstra的算法和A-Star如何比较?

我在看马里奥人工智能大赛中的人一直在做什么,其中一些人利用A*(A-Star)路径算法构建了一些漂亮的马里奥机器人.

替代文字http://julian.togelius.com/mariocompetition2009/screen1.png
(马里奥·博特在行动视频)

我的问题是,A-Star与Dijkstra相比如何?看着它们,它们看起来很相似.

为什么有人会使用一个而不是另一个?特别是在游戏路径的背景下?

algorithm artificial-intelligence graph a-star dijkstra

147
推荐指数
8
解决办法
8万
查看次数

如何中断ServerSocket accept()方法?

在我的主线程中,我有一个while(listening)调用accept()我的ServerSocket对象的循环,然后启动一个新的客户端线程,并在接受新客户端时将其添加到Collection.

我还有一个Admin线程,我想用它来发出命令,比如'exit',这将导致所有客户端线程被关闭,自行关闭,并通过转向监听来关闭主线程.

但是,accept()while(listening)循环块中调用,并且似乎没有任何方法可以中断它,因此无法再次检查while条件并且程序无法退出!

有一个更好的方法吗?或者某种方式来中断阻塞方法?

java networking interrupt blocking

136
推荐指数
3
解决办法
9万
查看次数

如何在IntelliSense中为Visual Studio中的函数添加注释?

在Visual Studio和C#中,当使用内置函数(如ToString())时,IntelliSense会显示一个黄色框,说明它的作用.

替代文字 替代文字

对于我编写的函数和属性,我怎么能拥有它?

c# vb.net xml-comments visual-studio-2008 visual-studio

132
推荐指数
8
解决办法
12万
查看次数