我多年来一直担任顾问编程,我喜欢我的工作,涉及大量面向对象的分析和使用托管语言(即软件工程)的软件系统设计.但是我最终想获得一个博士学位,让我感到困扰的是我从未真正"获得"计算机科学理论.在大学里,我在这些课程中只做得很好,因为他们的教学方式并不适合我.我通过观察概念的应用来学习,而不是死记硬背.
我之前已经克服了这样一个障碍的一个例子 - 我有一个可怕的第一年.这位教授(我现在知道他几乎没有资格,也是一位不称职的老师)从C++开始,教我们程序编程.从技术上讲,我已经了解了一个对象是什么,但直到我看到面向对象分析和设计的应用(具有设计模式和其他结构,如链表),我才真正理解它们的用途.
我将如何学习编译器,编程语言理论和算法分析等学科?什么是开始这些的好方法?例如,我想最终编写一个编译器(为了好玩),但我不知道从哪里开始.有没有人遇到过这种情况?有关教程,免费在线讲座视频或参考的建议(像w3schools那样的东西会很棒)?
(我想补充一点,浏览Stackoverflow已经教会了我的负载,但我希望它有点更正式:)
编辑:谢谢大家的建议.我已经标记了一个对我个人有用的答案,但请保持答案:)
我正在尝试从文本blob中过滤名称.目前我只是生成一个单词列表并手动过滤它但我已经有大约8k字了,所以我正在寻找更好的方法.我可以抓住一本字典并过滤掉它们,但这样可以剔除像史密斯和悬崖这样的名字.
我需要的是以下任何一种:
我想他们之间,我可以组合黑名单/白名单来获得我需要的东西.
如果我尝试编译程序
#include <pthread.h>
Run Code Online (Sandbox Code Playgroud)
在其中,我收到错误:
pthread.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)
是否有可能在Windows环境中编译?
我正在使用Vista与最新的MinGW.
我不想使用Microsoft Windows Services for UNIX Version 3.5,因为我必须将其移至Unix环境.
我有一个从两个QThreads主线程调用的方法.这个方法有时需要花费很长时间才能在循环中进行计算,所以我放了QCoreApplication::processEvents()这个就可以防止GUI冻结.在某些时候我已经改变QCoreApplication::processEvents()了QApplication::processEvents()但是这导致GUI冻结(我非常确定那是什么令人惊叹它因为我QCoreApplication::processEvents()放回它还没有再次冻结)我是正确的认为QApplication::processEvents()从主线程和QThreads调用可以冻结GUI?
我必须访问http:// someserver上的Web服务器,它需要一些身份验证.如何判断它是否使用NTLM,Kerberos或它可能是什么?
我想使用代码合同为此通用接口指定合同:
interface IRandomWriteAccessible<T>
{
T this[uint index] { set; }
uint Length { get; }
}
Run Code Online (Sandbox Code Playgroud)
文档ContractClass说明在为接口指定合同时使用该属性.但是,编译器会抱怨这个:
[ContractClass(typeof(IRandomWriteAccessibleContract<T>))]
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <-- compiler error
interface IRandomWriteAccessible<T> { … }
[ContractClassFor(typeof(IRandomWriteAccessible<T>))]
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ <-- compiler error
sealed class IRandomWriteAccessibleContract<T> : IRandomWriteAccessible<T> { … }
Run Code Online (Sandbox Code Playgroud)
似乎类型参数不能与属性一起使用.
如何做我写我的通用接口一份合同吗?或者代码合同无法实现这一点吗?
我试图使用"strace -p"附加到已经运行的JBoss进程.JBoss正在使用1.5.0_15 Java JDK.不幸的是,这不起作用 - 我只得到一个futex()结果:
# strace -p 3388
Process 3388 attached - interrupt to quit
[ Process PID=3388 runs in 32 bit mode. ]
futex(0x8f18f7c, FUTEX_WAIT_PRIVATE, 1, NULL <unfinished ...>
Run Code Online (Sandbox Code Playgroud)
Strace适用于所有其他程序,但不适用于JBoss.当我通过strace启动进程时,它似乎工作正常.当我尝试连接到已经运行的进程时,它不起作用.
我正在使用64位Linux 2.6.18和32位Java JDK(RedHat Enterprise Linux 5.3,如果重要的话).
更新#1:
我尝试用"-d"运行它,但输出似乎没有任何洞察力,至少对我来说:
[root@]# strace -d -e verbose=all -p 3388
Process 3388 attached - interrupt to quit
[wait(0x137f) = 3388]
pid 3388 stopped, [SIGSTOP]
[wait(0x57f) = 3388]
pid 3388 stopped, [SIGTRAP]
[ Process PID=3388 runs in 32 bit mode. ]
futex(0x8f18f7c, FUTEX_WAIT_PRIVATE, …Run Code Online (Sandbox Code Playgroud) 我有三张桌子 -
Transaction:
ID TimeStamp
Discount:
Code Amount
Transaction_Discount:
ID Code
Run Code Online (Sandbox Code Playgroud)
它几乎和你能得到的一样基本.
是否有更"有效"的方法将这些表链接在一起?
我正在尝试为使用Visual Studio 2008在C#中编写的类库驱动程序编写安装项目/安装程序.驱动程序项目有一段看起来像这样的代码...
[ComRegisterFunction]
public static void RegisterASCOM(Type t)
{
Trace.WriteLine("Registration Started.");
DoRegistration(true);
}
Run Code Online (Sandbox Code Playgroud)
在驱动程序项目属性 - >"装配信息"中,我设置了选中Make COM-Visible = true的框.
我在VS中的解决方案中添加了一个Setup Project,从驱动程序项目添加了输出dll,以便它安装在目标机器上并将dll的Register属性设置为"vsdraCOM".所以,我的理解是当安装程序运行它时,应该执行用[COMRegisterFunction]标记的dll方法.
使用SysInternals Debug View我可以通过观察窗口中显示的"Registration started"文本来监视上面的代码片段何时被点击.当我构建解决方案时,我可以看到文本显示,所以我知道驱动程序正在正确注册.问题是,当我运行安装程序时,我不认为它正在执行注册位.我看到Debug View中没有显示任何内容.如果我尝试通过另一个应用程序访问我的驱动程序,我收到一个错误,说"无法创建ActiveX对象".为什么在安装过程中不会发生注册?
驱动程序注册COM,但它不会调用我的自定义注册方法.
有没有人对我可能遗失的东西有所建议?还有其他方法可以调试吗?
(如果有人想看看,我可以提供更多代码!!)
晚上好,
我对Unix很陌生,所以这个迷你项目可能过于雄心勃勃.希望有人可以指出正确的方向.
在隔间里工作,我看不到它外面的光线.一般情况下,我在早上(阳光充足)使用黄色终端,在凌晨3点(夜晚)使用黑色/绿色.
我想做什么(部分只是为了练习我的bash).是写一个脚本,将在3:00改变我所有终端的颜色.如果可行的话,我可能会让它们每小时或类似的事情发生变化.那会安全吗?这可能吗?
以下是我的一些规范:Solaris 10 Bash shell Gnome
我现在正在看这个: 以编程方式更改Gnome终端主题