我正在尝试使用K&R C编程语言手册中的一个函数,并使用指针来编写strindex函数而不是数组符号.我有一个奇怪的问题,如果我在下面的代码中的两个点中包含一个printf()语句,那么该函数返回正确的索引(在这种情况下为6),但是如果我将printf()语句保留,那么函数返回-1.
我真的不明白为什么这应该有任何不同,并且会感激任何澄清.这是我的代码:
#include <stdio.h>
int strindex(char *a, char *b) {
char *pa;
char *astart = a;
char *pb = b;
int len;
while(*pb++ != '\0')
len++;
while(*a != '\0') {
pa = a;
pb = b;
for(;*pb != '\0' && *pa == *pb; pa++, pb++)
;
if(len > 0 && *pb == '\0') {
return a - astart;
}
//printf("%c\n", *a);
a++;
}
//printf("%c\n", *a);
return -1;
}
int main() {
char *a = "experiment";
char *b = "me"; …Run Code Online (Sandbox Code Playgroud) 我用ssh2 for php很开心.(!)
我正在通过ssh-ing进入localhost(运行ubuntu)进行测试.我已经设法用我的用户名(不是root)连接和验证,并且一些命令(比如'ls'返回一些信息,这很有希望.绝对可以到达某个地方.
我希望接下来能做的是发出'su'命令,然后给出root密码.
我没有收到错误,并返回资源,但流中似乎没有数据.(我有点期待'密码:'提示).我无法直接使用root密码进行身份验证,因为ssh禁用了该密码.
有没有理由为什么'su'会带回一些文字,你觉得呢?
我应该期待'密码:'提示回来吗?
这是我的代码:
function changeServerPassword( $ip, $port, $sshUser, $sshPassword, $rootPassword, $newRootPassword, $newSSHPassword = false) {
// login to server using $sshUser and $sshPassword
// su as root and enter $rootPassword
// if any of the above steps fail, return with appropriate error message
if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
// log in
// Do I have to make sure that port is a number?
if(!($con = ssh2_connect($ip, $port))){
echo "fail: unable to establish connection\n"; …Run Code Online (Sandbox Code Playgroud) 我按照描述的方法使用每个方法使用一个内部类来组织我的junit测试:
在这里,在一个haacked文章(关于nunit测试),和
这里,在这个SO问题
public class TestMyThing {
public static class TestMyThingMethodOne {
@Test
public void testMethodOneDoesACertainBehaviour() {
// terse, clear testing code goes here
}
@Test
public void testMethodOneHasSomeOtherDesiredBehaviour() {
// more inspiring testing code here
}
}
public static class TestMyThingMethodTwo {
... etc
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试为此运行junit测试时,Eclipse会询问我要运行哪个内部类测试,而我只能选择一个.有没有一种方法可以指定我希望每个内部类中的每个测试都能运行TestMyThing类?
我在 CloudFormation 模板中定义了一个 AWS CodePipeline。
管道的步骤之一是 CloudFormation 操作,它为我的应用程序构建测试环境。应用程序的 Elastic Load Balancer 的 URL 是此模板中定义的输出之一。
如何访问此输出,以便我可以在下一步中使用它,这是一个针对测试环境运行 api 测试的 CodeBuild 操作?
我可以OutputFileName在 CloudFormation Deploy 步骤中指定一个,但是 CodeBuild 步骤将需要 2 个输入工件、测试代码和 CloudFormation 输出文件,并且最多有 1 个输入工件。
我认为我可以有一个步骤将 CloudFormation 输出文件推送到 S3,以便 api 测试步骤可以访问它(或者只是将它作为 CloudFormation::Init 代码的一部分推送到 S3),但我希望我可以在 CodePipeline 步骤中配置更简单的东西(类似于 CloudFormation 中的 !ImportValue)。
我还认为我可以在 CloudFormation 步骤中分配一个“测试网址”,例如http://test.myapp.com,以便始终针对该特定网址运行 api 测试,这将是一个很好的选择,除了我在测试之前动态地启动测试环境(因为我不希望它总是运行的成本),而且我不确定在 api 测试开始运行时 DNS 是否会传播。
提前致谢
启动测试环境的 CodePipeline CloudFormation 操作的定义
...
Name: DeployApplicationInfra
ActionTypeId:
Category: Deploy
Owner: AWS
Version: 1
Provider: CloudFormation
Configuration:
ActionMode: CREATE_UPDATE
Capabilities: CAPABILITY_IAM …Run Code Online (Sandbox Code Playgroud) 我在 VPC 中有一个 lambda 函数,它应该能够通过 VPC 终端节点连接到 SSM。事实上,我已经在另一个 VPC(默认)中使用了此功能,但无法在我使用 CloudFormation 构建的新 VPC 中使用它。此外,我还可以通过同一 VPC 的 VPC 终端节点连接到 S3:
lambda函数的角色有权对所有资源执行所有SSM操作(只是排除iam权限的临时情况)
我尝试过 console.log 调试,它显示 lambda 函数在尝试从 SSM 获取信息后超时。
谁能建议我如何调试这个?
谢谢
只是试图真正让我的头围绕C中的数组和指针以及它们之间的差异,并且在使用2d数组时遇到了一些麻烦.
对于普通的1D阵列,这是我所学到的:
char arr[] = "String constant";
Run Code Online (Sandbox Code Playgroud)
创建一个字符数组,变量arr将始终表示初始化时创建的内存.
char *arr = "String constant";
Run Code Online (Sandbox Code Playgroud)
创建一个指向char的指针,该指针当前指向char数组"String constant"的第一个索引.指针可以稍后指向其他地方.
char *point_arr[] = {
"one", "two","three", "four"
};
Run Code Online (Sandbox Code Playgroud)
创建一个指针数组,然后指向char数组"one","two"等.
如果我们可以同时使用:
char *arr = "constant";
Run Code Online (Sandbox Code Playgroud)
和
char arr[] = "constant";
Run Code Online (Sandbox Code Playgroud)
那为什么我不能用:
char **pointer_arr = {
"one", "two", "three", "four"
};
Run Code Online (Sandbox Code Playgroud)
代替
char *pointer_arr[] = {
"one", "two", "three", "four"
};
Run Code Online (Sandbox Code Playgroud)
如果我尝试这char **件事,那么我会得到一个错误,比如"标量初始化器中的多余元素".我可以char**通过使用专门分配内存来使示例工作calloc,但因为我没有必要这样做char *arr = "blah";.我不明白为什么它是必要的,所以我真的不明白它们之间的区别:
char **arr_pointer;
Run Code Online (Sandbox Code Playgroud)
和
char *arr_pointer[];
Run Code Online (Sandbox Code Playgroud)
非常感谢您的建议.
在我正在使用的数据库中,有6列名称:
price1dollar
price2dollar
price3dollar
price4dollar
price5dollar
price6dollar
Run Code Online (Sandbox Code Playgroud)
我认为,一旦我有了查询的结果集,我就可以像使用PHP一样访问它:
for($i = 1; $i <= 6; $i++) {
echo $row['price'+$i+'dollar'].'<br />';
}
Run Code Online (Sandbox Code Playgroud)
这将打印出所有的值,但我没有打印任何东西.
如果我使用:
echo $row['price1dollar'];
Run Code Online (Sandbox Code Playgroud)
然后打印出来的价值很好.
我已经echo编了$i它的值,并打印出1至6美分,所以我不知道发生了什么.
$row['price'+$i+'dollar']语法是不允许的?
非常感谢
向 Web 服务发出休息请求后,我想将用户重定向到 Web 服务返回的 url。
我正在使用window.open(url, "_blank");它,当我过去使用它时,只需打开一个新选项卡。但是,由于某种我无法深入了解的原因,我的重定向被视为弹出窗口。Chrome 实际上创建了一个单独的小窗口,而不是打开一个新选项卡。
对于为什么 chrome 决定创建一个单独的窗口而不是仅仅打开一个新选项卡的任何建议,我将不胜感激。
谢谢
我用 webpack 构建了 3 个单独的 npm 模块。他们都依赖于 angular 因为我有这条线:
var angular = require('angular');
Run Code Online (Sandbox Code Playgroud)
在每个 npm 模块的 angular 模块定义中。
其中一个模块依赖于其他 2 个:
var angular = require('angular');
var ngModule = angular.module('topModule', [
require('dependency1'),
require('dependency2')
]);
Run Code Online (Sandbox Code Playgroud)
我相信我收到tried to load angular more than once错误的原因是 Angular 已包含在 webpack 构建的所有 3 个包中。
我知道我可以将 webpack 配置为将 angular 放在一个单独的文件中(例如 vendor.js),但我认为当我构建顶级文件时,它会看到 Angular 已经包含在其他 2 个模块中,并且不会t 再次添加它。
如何在所有模块中使用 `require('angular')',但在顶级模块中只包含一次?
我在linux上看过,Docker使用底层的linux内核来创建容器.因此,这是一个优势,因为资源不会浪费在创建每个包含操作系统的虚拟机上.
但是,我很困惑,为什么大多数Dockerfiles在Dockerfile的FROM行中指定操作系统.我认为,因为它使用底层操作系统,所以不必定义操作系统.
我想知道如果指定的操作系统与运行它的机器的操作系统风格不匹配会发生什么.因此,如果机器是CentOS但Dockerfile FROM Debian:latest在第一行中,则是包含实际创建的Debian OS的虚拟机.
换句话说,这是否会导致性能下降,因为它需要创建包含指定操作系统的虚拟机?