情况:
我想从stdin控制台获取密码- 而不回显用户输入的内容.是否有类似getpasswdGo的功能?
我尝试了什么:
我尝试过使用syscall.Read,但它回应了所输入的内容.
在过去的五年里,我一直在做Java和一些.NET,而且在那段时间里没有写过任何重要的C或C++.所以离开那个场景一段时间了.
如果我今天要编写一个C或C++程序来执行一些多线程并且可以跨Windows,Mac OS X和Linux/Unix移植源代码 - 那么PThread是一个不错的选择吗?
C或C++代码不会执行任何GUI,因此不需要担心任何这些.
对于Windows平台,我不想在unix仿真运行时库方面带来很多Unix包袱.更喜欢用于Windows的PThread API,它是现有Windows线程API的尽可能薄的包装器.
附录编辑:
我倾向于使用boost:thread - 我也希望能够使用C++ try/catch异常处理.即使我的程序相当简单而且不是特别OOPish,我喜欢使用类和命名空间封装 - 而不是C无实体的函数.
如果PC也连接到网络(无线或固定电话),是否可以使用环回IP 127.0.0.1(localhost)在本地计算机上交换的任何数据进行数据包嗅探?
想知道环回作为本地运行进程的进程间通信的一种手段,可以被视为一种交换数据的安全方式(即,不具备通过数据包嗅探器驻留在网络外部的任何人轻松放弃的方法.程序).
正在针对所有相关的操作系统平台提出这个问题:
我目前正在使用Java中的iBATIS来解决Oracle SQL DATE转换问题.
我使用的是Oracle JDBC瘦驱动程序ojdbc14版本10.2.0.4.0.iBATIS版本2.3.2.Java 1.6.0_10-rc2-b32.
问题围绕这个SQL片段返回的DATE类型列:
SELECT *
FROM TABLE(pk_invoice_qry.get_contract_rate(?,?,?,?,?,?,?,?,?,?)) order by from_date
Run Code Online (Sandbox Code Playgroud)
包过程调用返回一个包含在TABLE中的ref游标,然后很容易读取结果集,就好像是对表的select查询一样.
在PL/SQL Developer中,返回的SQL DATE类型的FROM_DATE列之一具有一天中的时间精度:
Tue Dec 16 23:59:00 PST 2008
Run Code Online (Sandbox Code Playgroud)
但是当我通过iBATIS和JDBC访问它时,该值仅保留精确到白天:
Tue Dec 16 12:00:00 AM PST 2008
Run Code Online (Sandbox Code Playgroud)
这样显示时更清晰:
本来应该:
1229500740000 milliseconds since epoch
Tuesday, December 16, 2008 11:59:00 PM PST
Run Code Online (Sandbox Code Playgroud)
但是得到这个:
1229414400000 milliseconds since epoch
Tuesday, December 16, 2008 12:00:00 AM PST
(as instance of class java.sql.Date)
Run Code Online (Sandbox Code Playgroud)
无论我尝试什么,我都无法公开通过Java JDBC和iBATIS返回的这个DATE列的完整精度.
iBATIS映射的是:
FROM_DATE : 2008-12-03 : class java.sql.Date
Run Code Online (Sandbox Code Playgroud)
目前的iBATIS映射是这样的:
<result property="from_date" jdbcType="DATE" javaType="java.sql.Date"/>
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
<result property="from_date" jdbcType="DATETIME" …Run Code Online (Sandbox Code Playgroud) 多年来一直在做Java,所以一直没有跟踪C++.已经最后条款中增加了C++异常处理的语言定义是什么?
是否有一种模仿Java的尝试/终极的青睐成语?
我还担心C++没有可能抛出的所有可能异常的最终超类型 - 比如Java的Throwable类.
我可以写:
try {
// do something
} catch(...) {
// alas, can't examine the exception
// can only do cleanup code and perhaps rethrow, ala:
throw;
}
Run Code Online (Sandbox Code Playgroud)
附录编辑:
我最终接受了得票最多的答案,即使用析构函数进行清理.当然,从我自己的评论来看,很明显我并不完全同意这一点.但是,C++就是这样,所以在我想到的应用程序中,我会或多或少地努力坚持共同的社区实践.我将使用模板类来包装尚未具有类析构函数的资源(即C库资源),从而赋予它们析构函数语义.
新的附加编辑:
嗯,而不是最后一个封闭功能或许?结合ScopeGuard方法的闭包(参见下面的答案之一)将是一种通过任意操作完成清理并访问清理代码的外部范围上下文的方法.清理可以用在Ruby编程中看到的成语方式来完成,它们在打开资源时提供清理块.C++不考虑关闭功能吗?
1992年到1993年的时间框架对于C++来说是至关重要的.
在'92/'93时间框架中,我研究了Aldus PageMaker的插件架构,该架构采用C++编码.PageMaker建立在一个名为VAMP的C++ OOP框架上,它支持Mac OS和Windows之间的可移植性.
所以我们尝试使用C++的特性来构建插件架构.由于所谓的脆弱基类问题,这证明对于C++类来说是非常有问题的.
我接着写了一篇发表在期刊上的论文,并在OOPSLA '93的反思研讨会上发表了论文.您可以阅读我在此处介绍的论文的pdf格式:
时间不变虚拟成员函数调度C++ Evolvable类 (页面底部,单击查看或下载)
我还在波特兰的Usenix会议上与Bjarne Stroustrup联系,并与他进行了几个月的对话,在那里他主张代表我处理脆弱的基类问题.(唉,当时其他问题被认为更重要 - 例如,试图通过批准来支持RTTI.)
微软此时为Windows平台引入了COM/DCOM系统,该系统被视为该问题的可行解决方案.通过用于定义COM接口的抽象类,C++可以用作COM的实现语言.
然而,这些天开发人员避开COM/DCOM - 尤其是基于COM的ActiveX.(1994年,我继续在微软工作,并在那里使用了C++和COM/DCOM十年.我得出结论,技术组合是一个明确的死胡同.我在这里提到的经验:建立有效的企业分布式软件系统)
与所有这些早期的C++历史相反,Steve Job的公司NeXT在90年代早期使用Objective C设计了一个插件架构,这是NeXT Step框架的组成部分.如今,苹果计算机和重要平台(如iPhone)上的Mac OS X中充满活力.
我提交的Objective C能够以出色的方式解决插件问题.
Java的拥护者将引用垃圾收集等因素来说明为什么它比C++更有效率.我不会对此提出异议,但是Objective C直到最近才用2.0进行垃圾收集.在iPhone上垃圾收集仍然无法使用.尽管如此,OS X插件架构完全可行 - 完全取决于Objective C风格的OOP与C++ OOP的优点.
有趣的是,Java已被用于构建适用于任何平台或软件开发社区的最普遍的插件架构.Eclipse IDE插件体系结构现在几乎已经成为传奇,就像这样的体系结构一样,几年前整合了Equinox OSGi模块管理层.J2EE应用服务器已经支持EJB 的插件架构十年了.目前,所有注意到的J2EE应用服务器都已合并OSGi来管理运行时可绑定模块.Spring Framework及其Spring Bean的运行时可绑定单元已经发展到超过J2EE - 主要是因为它的系统强大,可以管理Spring Bean中的绑定.
Java社区仍在努力定义官方模块管理标准,尽管事实如此,Java平台支持的软件架构比任何其他编程平台更普遍地包含插件功能.
尽管Java作为一种相对于C#的语言存在弱点,并且.NET已经在其.NET程序集标准中具有更强大的模块实现,但Java在广泛使用的日常软件系统方面仍然领先一步,其中包含某种形式的插件建筑.奇怪的是,Java社区甚至没有意识到这是他们作为企业开发平台持续成功的基础.
我个人认为C++的脆弱基类问题是最致命的缺陷.
自从这个问题突显给C++社区以及C++的创建者以来已经过去17年了,现在解决这个问题已经太晚了吗?
我想在C语言中沿着java.exe构建一个特殊的AIR启动程序.
我已经看过使用进程查看器运行AIR程序,并且能够找到正在使用的AIR运行时DLL.AIR程序与Java不同之处在于它们作为特定于平台的可执行文件安装,这些可执行文件一旦启动就将AIR运行时绑定为进程内共享库(用户双击它们的图标).
好吧,我想制作一个类似java.exe的AIR启动器.
java.exe作为平台OS进程启动,该进程作为进程内共享库绑定到Java JVM运行时(JRE).要执行的java应用程序被指定为java.exe的命令行参数.一旦java.exe运行并且JVM完全正常运行,JVM类加载器就会加载指定的java应用程序类以供执行.然后,指定的Java应用程序接管,从某种意义上说"劫持"java.exe的进程.当然,指定的java应用程序在任何进程列表中显示为托管它的java.exe程序.
我想让AIR应用程序启动这样的工作.为什么?因此,我可以探索破解AIR的方法,并可能克服其中的许多不足之处.例如,对于初学者,我想使用一些可用于正在运行的AIR应用程序的新API来扩展AIR运行时体验.
我的第一笔业务是:
目前Merapi提供了一个带有Java的AMF桥,因此证明了它的功效.唉,Merapi必须使用localhost端口和套接字来进行进程间通信 - 相对于使用stdin/stdout/stderr进程间管道而言,这是一种笨拙的方式.
我希望能够使用mklink在我的Windows Vista家庭版计算机上创建符号链接.
但是,我必须在mklink能够在Vista Home版本上运行之前授予SeCreateSymbolicLink(默认情况下,权利被撤销).
家庭版不提供UI或工具设施来授予/撤销谨慎的权利.
NTFS符号链接上的Wikipedia链接说明Windows Server 2003资源工具包工具中的ntrights.exe工具可用于在Home Edition上授予此权限.但是,安装这些工具后,事实证明这是不正确的.该版本的ntrights.exe无法识别SeCreateSymbolicLink,并且Microsoft的网站未显示此特定资源工具包工具的任何可用更新.
是否有PowerShell脚本方法来执行此操作?或者在Vista Home Edition上可能使用的任何其他工具/技术?