我有一些代码(内联汇编).
void NativeLoop()
{
int m;
__asm
{
PUSH ECX
PUSH EDX
MOV ECX, 100000000
NEXTLOOP:
MOV EDX, ECX
AND EDX, 0X7FFFFFFF
MOV DWORD PTR m, EDX
DEC ECX
JNZ NEXTLOOP
POP EDX
POP ECX
}
}
Run Code Online (Sandbox Code Playgroud)
MS C++ Automagicaly将这些代码(标有**)添加到我的程序中.
为什么?
怎么避免呢?
**push ebp
**mov ebp,esp
**push ecx
push ecx
push edx
mov ecx,5F5E100h
NEXTLOOP:
mov edx,ecx
and edx,7FFFFFFFh
mov dword ptr m,edx
dec ecx
jnz NEXTLOOP
pop edx
pop ecx
**mov esp,ebp
**pop ebp
**ret
Run Code Online (Sandbox Code Playgroud) 我究竟做错了什么?我不能让xmlparser停止解析.我设置了断点,[xmlParser abortParsing];然后运行.但是这之后的所有内容if(success)
都是我的代码:
-(void)viewDidLoad{
[NSThread detachNewThreadSelector:@selector(loadstuff)toTarget:self withObject:nil];
}
-(void)loadstuff{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
XMLParserdelegate *parserdeleagte = [[XMLParserdelegate alloc] init];
[xmlParser setDelegate:parserdelegate];
BOOL success = [xmlParser parse];
if(success){
NSLog(@"No Errors");
links = [[NSMutableArray alloc] initWithArray:links];
titles = [[NSMutableArray alloc] initWithArray:titles];
dates = [[NSMutableArray alloc] initWithArray:dates];
descriptions = [[NSMutableArray alloc] initWithArray:descriptions];
loading = FALSE;
[theTableView reloadData];
}else{
NSLog(@"Error parsing xml");
}
[pool release];
}
-(void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:animated];
[xmlParser abortParsing];
[xmlParser release];
xmlParser …Run Code Online (Sandbox Code Playgroud) 组成和继承.
我知道它们都是适当选择的工具,上下文在组合和继承之间进行选择时非常重要.然而,关于每个的适当背景的讨论通常有点模糊; 这让我开始考虑传统OOP的独特方面是多么明显的继承和多态.
多态性允许人们同等地指定"is-a"关系以及继承.特别是,从基类继承隐式地创建该类与其子类之间的多态关系.然而,尽管可以使用纯接口实现多态,但是继承通过同时传输实现细节使多态关系复杂化.通过这种方式,继承与纯多态性完全不同.
作为一种工具,继承通过简化在无关紧要的情况下重用实现,为程序员提供与多态(通过纯接口)不同的方式.但是,在大多数情况下,超类的实现细节与子类的要求略有冲突.这就是为什么我们有"覆盖"和"成员隐藏"的原因.在这些情况下,继承所提供的实现重用是通过在级联级别的代码中验证状态更改和执行路径的额外工作来购买的:子类的完整"扁平化"实现细节分布在多个类之间,这通常意味着多个文件,其中只有部分适用于相关的子类.在处理继承时,查看该层次结构是绝对必要的,因为如果不查看超类的代码,就无法知道哪些未覆盖的细节会对您的状态进行整理或转移您的执行.
相比之下,独占使用组合可以保证您可以看到哪些状态可以通过显式实例化对象进行修改,这些对象的方法可以自行调用.真正扁平化的实现仍然没有实现(实际上甚至不可取,因为结构化编程的好处是实现细节的封装和抽象)但是你仍然可以重用代码,你只需要在一个地方查看当代码行为不端时.
我的目标是在实践中测试这些想法,避免传统继承为基于纯接口的多态性和对象组合的组合,我想知道,
有什么对象组成和接口无法实现继承吗?
编辑
在迄今为止的回复中,ewernli认为一种技术没有技术专长,而另一种技术则没有; 后来他提到了每种技术固有的不同模式和设计方法.这是有道理的.但是,这个建议让我通过询问是否专用组合和界面代替传统继承来禁止使用任何主要设计模式来改进我的问题?如果是这样,在我的情况下是不是有相同的模式?
我正在创建一个通用类来保存小部件,我在实现contains方法时遇到问题:
public class WidgetBox<A,B,C>
{
public bool ContainsB(B b)
{
// Iterating thru a collection of B's
if( b == iteratorB ) // Compiler error.
...
}
}
Run Code Online (Sandbox Code Playgroud)
错误:运算符'=='无法应用于'V'和'V'类型的操作数
如果我无法比较类型,我如何实现包含?字典,列表和所有其他通用容器如何做到这一点?
我有一个asp.net(非mvc)的ajax代码来调用webMethod从服务器获取请求的其他数据.但我似乎无法弄清楚在MVC中提供我的JQuery的URL.
<script type="text/javascript" language="javascript">
function SubmitAjax(url, message, successFunc, errorFunc) {
$.ajax({
type:"POST",
url:url,
data:message,
contentType: "application/json; charset=utf-8",
dataType: "json",
success:successFunc,
error:errorFunc
});
};
Run Code Online (Sandbox Code Playgroud)
我不想将整个相关数据列表传递给每个到达页面的人的选择列表,因为并非所有人都需要此功能.所以我想通过JQuery调用控制器或webmethod,但似乎无法找到如何解决MVC中的URL.
我注意到这篇文章: JQuery Ajax调用被解析为当前的Controller文件夹,而不是根文件夹
$ .getJson是一个mvc方法吗?这对我的用例来说是一个很好的解决方案吗?我只需要返回一个字符串url,或者如果找不到我正在寻找的空字符串.我是否需要为$ .getJSon方法添加一个?是MVC的一部分还是JQuery的一部分?领先的斜杠是指向应用程序根目录还是服务器根目录?
我正在寻找一个代码片段/库,通过网络使用来自Linux服务器的php/Java从第三方foxpro数据库中读取数据.有没有图书馆?有些人似乎正在使用Dbase库进行php?那样有用吗?
除了默认值(数据库名,用户名,密码)之外,我还需要Foxpro DB中的哪些参数.DBF名称,连接字符串??
我似乎无法让Maven Glassfish插件在我的生活中工作:
<project>
...
<pluginRepositories>
<pluginRepository>
<id>glassfish-repository</id>
<name>Java.net Repository for Glassfish</name>
<url>http://download.java.net/maven/glassfish</url>
<layout>default</layout>
<snapshots>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</snapshots>
</pluginRepository>
</pluginRepositories>
...
<build>
<plugins>
<plugin>
<groupId>org.glassfish</groupId>
<artifactId>maven-embedded-glassfish-plugin</artifactId>
<version>3.0</version>
<configuration>
<goalPrefix>glassfish</goalPrefix>
<app>${artifactId}.war</app>
<contextRoot>${context.root}</contextRoot>
<port>${http.port}</port>
</configuration>
</plugin>
...
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
当我运行时mvn glassfish:run,它正在寻找一个不同的插件,但无法找到它:
[INFO] The plugin 'org.apache.maven.plugins:maven-glassfish-plugin' does not exist or no valid version could be found
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我们看到一些奇怪的行为,我们不确定它是否是apache,php,mysql或操作系统的问题,所以对于stackoverflow的大脑!
我们有Apache和mod_php与mysql5服务器通信.有时,进程会选择挂起,尝试从文件描述符中读取.
在它们上面填一个strace(所有悬挂过程显示相同的结果)给出了:
[root@prweb133v ~]# strace -p 8450
Process 8450 attached - interrupt to quit
read(57, <unfinished ...>
Run Code Online (Sandbox Code Playgroud)
那它试图读什么呢?
[root@prweb133v ~]# lsof -p 8450
...
...
httpd 8450 apache 57u IPv4 5546599 TCP
prweb133v.local:36615->hadat.local:mysql (ESTABLISHED)
Run Code Online (Sandbox Code Playgroud)
那是我们的mysql服务器!好的,所以也许它试图读取查询的结果,我想.检查mysql服务器上的进程列表,建立了连接但处于SLEEP状态.
Hmmmm.
那么我检查了netstat以查看谁正在尝试发送/接收内容.
在网络服务器上:
[root@prweb133v ~]# netstat -t -n -a | grep 36615
tcp 0 5 172.23.179.6:36615 172.23.179.67:3306
ESTABLISHED
Run Code Online (Sandbox Code Playgroud)
并且在mysql服务器上有一个已建立的连接,但在发送或接收队列中为0.
知道这些神秘的5个字节是什么,或者为什么他们随机不得到mysql服务器?
干杯!
麦克风
首先,我们目前有所需的行为,但是当需要对数据库进行任何更改时,维护它并非易事.我正在寻找更简单,更有效或更容易维护的东西(任何能够做到这三者的东西都是最受欢迎的).当我们执行更新时,会创建一个历史行,它是当前行的副本,然后更新当前行的值.结果是我们有一个关于行在更新之前的历史记录.
推理:我们必须遵守一系列联邦规则,然后通过这条路线获得所有内容的完整审计历史记录,以及我们可以随时查看数据库并查看事物的外观(未来要求) . 出于类似的原因,我无法改变历史记录的记录方式 ......任何解决方案都必须产生与当前触发器创建的数据相同的数据.
以下是ContactTable 的当前触发器的样子:(
为简洁起见,剥离无用字段,字段数无关紧要)
更新前(每行):
DECLARE
indexnb number;
BEGIN
:new.date_modified := '31-DEC-9999';
indexnb := STATE_PKG.newCONTACTRows.count + 1;
:new.date_start := sysdate;
:new.version := :old.version + 1;
state_pkg.newCONTACTRows(indexnb).ID := :old.ID;
state_pkg.newCONTACTRows(indexnb).PREFIX := :old.PREFIX;
state_pkg.newCONTACTRows(indexnb).FIRST_NAME := :old.FIRST_NAME;
state_pkg.newCONTACTRows(indexnb).MIDDLE_NAME := :old.MIDDLE_NAME;
state_pkg.newCONTACTRows(indexnb).LAST_NAME := :old.LAST_NAME;
--Audit columns after this
state_pkg.newCONTACTRows(indexnb).OWNER := :old.OWNER;
state_pkg.newCONTACTRows(indexnb).LAST_USER := :old.LAST_USER;
state_pkg.newCONTACTRows(indexnb).DATE_CREATED := :old.DATE_CREATED;
state_pkg.newCONTACTRows(indexnb).DATE_MODIFIED := sysdate;
state_pkg.newCONTACTRows(indexnb).VERSION := :old.VERSION;
state_pkg.newCONTACTRows(indexnb).ENTITY_ID := :old.id;
state_pkg.newCONTACTRows(indexnb).RECORD_STATUS := :old.RECORD_STATUS;
state_pkg.newCONTACTRows(indexnb).DATE_START := :old.DATE_START;
END;
Run Code Online (Sandbox Code Playgroud)
更新前(所有行一次):
BEGIN
state_pkg.newCONTACTRows …Run Code Online (Sandbox Code Playgroud) 在网站上有一个奇怪的问题.链接标记href="#anything"不会将您移动到页面顶部或指定的锚点,它会将您移动到主页.就是这样 - 当我将鼠标悬停在链接上时,我会在FF的状态栏中看到example.com/#而不是example.com/testpage.php#.
网站上堆满了垃圾代码,无法验证所有设置,特别是标头配置等.
关于这可能是什么的任何提示?
PS Link href没有改变JS,Firebug声称它是href="#"我点击它的时候.
c# ×2
php ×2
.net ×1
anchor ×1
apache ×1
asp.net-mvc ×1
audit ×1
c++ ×1
composition ×1
foxpro ×1
generics ×1
glassfish ×1
glassfish-3 ×1
href ×1
html ×1
inheritance ×1
iphone ×1
jquery ×1
maven-2 ×1
mysql ×1
networking ×1
nsxmlparser ×1
oop ×1
oracle ×1
polymorphism ×1
sdk ×1
tcp ×1
triggers ×1