小编Vol*_*ort的帖子

Cocos2d - Mac:检查键盘事件?

我正在使用Cocos2d,这是一个用于创建iPhone游戏的框架.最近他们发布了Mac支持,我正在为Mac制作一个简单的游戏.

但是,我对如何检查Mac键盘上何时按下X键一无所知.

Objective-C的

keyboard macos events objective-c cocos2d-iphone

6
推荐指数
2
解决办法
4435
查看次数

检查是否按下某个键?

我需要检查我的VB.net应用程序中是否按下了SHIFT或CTRL键,有什么想法吗?(得到一个布尔值)

vb.net visual-studio

6
推荐指数
3
解决办法
4万
查看次数

我为什么要使用@properties?

可能重复:
@property(...)的最佳描述是什么?什么是真正有用的?

如果我在类接口中声明一个变量,我可以在我的类的任何地方使用这样的变量.真棒.

如果我使用@property (retain) Something *myVar;我可以访问该变量self.myVar...但是,有什么区别?我应该使用一种方法还是另一种方法?

iphone objective-c ios

6
推荐指数
1
解决办法
2312
查看次数

在字符串中查找char的索引?

我有一个类似的字符串 "abcdefg..."

我想找到字母d所在的索引,所以我可以得到数字3.

我设法通过循环遍历字符串中的每个字母来做到这一点,但这听起来不太方便.还有另外一种方法吗?

vb.net string

6
推荐指数
1
解决办法
10万
查看次数

为什么较低的delta会导致我的PID控制器以较低的精度进行调整?

我不完全确定这是否是正确的问题.嗯,我想这一个编程问题.


我正在尝试用Java创建一个简单的PID控制器模拟.

简而言之,存在目标值和当前值.当前值由数字修改.您为PID控制器提供当前值,它将尝试返回一个数字,希望这个数字将使当前值接近目标值.加班,你使用PID控制器的次数越多,它就会"学习"(使用积分和导数),并最终会返回越来越准确的值.这对于通过控制车轮运动来维持船的平衡是有用的.


PID控制器使用的公式非常通用且非常简单 - 或者我认为.在下面的示例中,PID控制器返回的值只是添加到当前值.我认为它适用于更复杂的应用程序(涉及乘法或除法等).这是我的计划:

public class PID {

    private static double Kp = 0.1;
    private static double Kd = 0.01;
    private static double Ki = 0.005;

    private static double targetValue = 100.0;
    private static double currentValue = 1.0;

    private static double integral = 0.0;
    private static double previousError = 0.0;

    private static double dt = 0.5;

    private static double max = 5;
    private static double min = -5;

    public static void main(String[] args) throws Exception { …
Run Code Online (Sandbox Code Playgroud)

java algorithm

6
推荐指数
1
解决办法
88
查看次数

如何根据此标准找到所有可能的组合?

我有一组Card实例.

Card[] allCards;
Run Code Online (Sandbox Code Playgroud)

我应该在以下条件下获得这些卡的所有可能组合:

  • 所有组合必须至少有3张牌.
  • 组合没有卡限制(因此如果总共有15张牌,你知道可以有15张卡的组合,其他的可以是13张,等等).

出于大学目的,我不应该使用任何能够更轻松地完成这项工作的花哨库.

我确实已经完成了它,但考虑到没有限制,我通常会做的算法不起作用.

这几乎是他们在这里要求的python:找到所有可能的组合

有任何想法吗?我不想要代码或任何东西 - 我只是迷失了算法/想法.

我的问题(更详细)

我可以通过制作两个循环(一个在另一个循环中)来制作对.我可以通过三个循环(一个在另一个在另一个内)来制作三元组.

但我不知道如何解决这个具体问题,因为:

  • 如果阵列有15张卡怎么办?我不能写15个循环......
  • 然后当然我需要下降到14,13,12个循环...(因为所有组合都不是每个15个元素,当使用这个15个元素时,可以有14,13,12个元素的组合 - 阵列)

我可以找到一些组合,但不是动态的.

java recursion combinations

5
推荐指数
1
解决办法
1083
查看次数

如何在OS X上运行此汇编代码?

开始学习汇编,我得到了一些在Linux上创建的Hello World汇编代码.我想让它适用于64位Mac OS X.

code.asm:

SECTION .data       
    hola:   db "Hola!",10   
    tam:    equ $-hola      

SECTION .text       
    global main     

main:               

    mov edx,tam     
    mov ecx,hola        
    mov ebx,1       
    mov eax,4       
    int 0x80        

    mov ebx,0       
    mov eax,1       
    int 0x80        
Run Code Online (Sandbox Code Playgroud)

这就是我做的:

nasm -f macho32 -o object.o code.asm
gcc -m32 -o program object.o
Run Code Online (Sandbox Code Playgroud)

这告诉我:

体系结构i386的未定义符号:"_ main",引自:crt1.10.6.o中的start ld:未找到体系结构i386的符号

搜索此错误,我发现了这个问题:nasm和gcc:32位链接失败(64位Mac OS X)

一个答案说

您遇到的问题是您正在创建一个与Mac OS X对象格式不兼容的32位Linux(ELF)对象文件.尝试将'-f elf'切换为'-f macho32'.

但我肯定在用-f macho32.那么问题是什么呢?

macos assembly gcc nasm

5
推荐指数
1
解决办法
7712
查看次数

我可以在信号处理程序中做什么?

struct sigaction newSignalAction;
memset(&newSignalAction, 0, sizeof(newSignalAction));
newSignalAction.sa_handler = &SignalHandler;
sigaction(SIGSEGV, &newSignalAction, NULL);

[TestFlight takeOff:@"etc etc etc"];
Run Code Online (Sandbox Code Playgroud)

然后

void SignalHandler(int sig) {
    NSLog(@"Boom");
}
Run Code Online (Sandbox Code Playgroud)

我试图执行一个SIGSEGV信号:

int *p = NULL;
*p = 1;
Run Code Online (Sandbox Code Playgroud)

但是没有调用我的处理程序。相反,Xcode指出了这一行*p = 1

我读过你不能用信号处理程序打印东西。也许这就是问题所在。有什么怎么办呢?我听说您应该保存数据-所以我想我可以在Documents目录中创建文件。我也尝试这样做,但是文件也未创建。

objective-c ios

5
推荐指数
1
解决办法
1357
查看次数

关于 PHP 并行文件读/写

在网站上有一个文件。PHP 脚本将其修改如下:

$contents   = file_get_contents("MyFile");

// ** Modify $contents **

// Now rewrite:
$file       = fopen("MyFile","w+");
fwrite($file, $contents);
fclose($file);
Run Code Online (Sandbox Code Playgroud)

修改非常简单。它获取文件的内容并添加几行。然后它会覆盖该文件。

我知道 PHP 具有将内容附加到文件而不是重新覆盖它的功能。但是,我想继续使用这种方法,因为我将来可能会更改修改算法(因此追加可能还不够)。

无论如何,我正在对此进行测试,发出了 100 个请求。每次调用脚本时,我都会在文件中添加一个新行:


第一次调用:

第一的!

第二次调用:

第一的!

第二!

第三次调用:

第一的!

第二!

第三!

很酷。但是之后:

第四次调用:

第四!

第五个电话:

第四!

第五!


如您所见,第一行、第二行和第三行完全消失了。

我已经确定问题不是内容字符串修改算法(我已经单独测试过)。读取或写入文件时出现问题。

我认为问题很可能是在读取文件内容时:如果$contents出于某种奇怪的原因为空,那么上面显示的行为是有道理的。

我不是 PHP 专家,但也许我几乎同时执行 100 次调用的事实导致了这个问题。如果有两个进程,一个正在写入文件,而另一个正在读取文件怎么办?

这个问题的推荐方法是什么?当多个进程可以写入/读取同一个文件时,我应该如何管理文件修改?

php

5
推荐指数
1
解决办法
2669
查看次数

了解H2数据库的JdbcConnectionPool

我的主服务器计算机上运行着H2服务器进程,允许进行TCP连接。

假设我要执行100个SQL查询:

SELECT * FROM TEST
Run Code Online (Sandbox Code Playgroud)

而且,出于我自己的目的,我想对每个线程进行一个查询。让我们使用Connection线程之间共享的一个和一个对象来完成此操作:

  • 创建一个Connection对象。
  • 创建100个线程。
  • 在每个线程中,使用共享库Connection调用SQL查询。

上面的方法可以工作,但是会有点慢。当然,毕竟,如果有人正在使用Connection,则其他人必须等待它。

那么,让我们Connection为每个线程做一个:

  • 创建100个线程。
  • 在每个线程中,创建一个新Connection对象并调用SQL查询。

快得多了。但是我觉得100个连接有点浪费。也许50个连接就可以了。我听说我可以用JdbcConnectionPool这种东西。

  • 建立JdbcConnectionPool最多50个连线的。
  • 创建100个线程。
  • 在每个线程中,使用pool.getConnection()然后调用SQL查询。

嗯 太慢了 如果有的话,它和第一种方法一样慢。也许出于好奇,我应该将最大连接数设置为100...

...而且仍然很慢。奇怪的。我的理解是,具有100个连接的池相当于为我的100个线程中的每个线程建立一个连接。

可能是什么问题?这是最后一个测试的代码:

import java.sql.Connection;
import java.sql.ResultSet;

import org.h2.jdbcx.JdbcConnectionPool;

public class App {

    public static void main(String[] args) throws Exception {
        Class.forName("org.h2.Driver");
        JdbcConnectionPool pool = JdbcConnectionPool.create("url", "user", "password");
        pool.setMaxConnections(100);
        for (int i = 0; i < 100; ++i) {
            Thread …
Run Code Online (Sandbox Code Playgroud)

java multithreading jdbc h2

5
推荐指数
1
解决办法
1927
查看次数