问题列表 - 第287803页

C - 如果达到 EOF,为什么 fread() 有两种可能的行为?

我不明白为什么函数 fread() 在这两个示例中表现不同:

1)
我有一个带有short和char的结构(大小为4个字节,包括填充)和一个由三个这样的结构组成的数组。如果我用fwrite()分别写入每个结构的每个short和char,然后用fread读取该文件() 对于一个类型为该结构的变量,我将一次读取 4 个字节(文件中将有 9 个字节),因此您可以看到在第 3 次迭代中将留下一个字节(并且在第 3 次迭代中将丢失一个字节)每次迭代)。发生的情况是没有第三次读取,因为我只剩下一个字节,而 fread 必须读取 4 个字节。

2)
一个更简单的例子,如果我使用 fwrite() 将 1 字节字符写入文件,然后使用 fread() 将该文件的内容放入 4 字节 int 中,则整数将获取该数据。

为什么会发生这种情况?如果达到 EOF,为什么在一种情况下会读取数据,而在另一种情况下却不会读取数据?

这是第一个例子:

int main()
{
    struct X { short int s; char c; } y, x[]=
    {{0x3132,'3'},{0x3435,'6'},{0x3738,'9'}};
    FILE *fp=fopen("FILE.DAT","wb+");
    if (fp)
    {
        for(int i=0;i<sizeof(x)/sizeof(x[i]);)
        {
            fwrite(&x[i].s,sizeof(x[i].s),1,fp);
            fwrite(&x[i].c,sizeof(x[i].c),1,fp);
            i++;
        }
        rewind(fp);
        for(int i=0;fread(&y,sizeof(y),1,fp);)
        printf("%d:%x %c\n",++i, y.s, y.c);
        fclose(fp);
    }
return 0;
}  
Run Code Online (Sandbox Code Playgroud)

第二个例子:

int main()
{
    FILE *fp=fopen("FILE.DAT","wb+");
    char c …
Run Code Online (Sandbox Code Playgroud)

c

2
推荐指数
1
解决办法
1201
查看次数

为什么我无法连接到我的 linux 实例?

我刚刚在 AWS EC2(免费层 - t2.micro)上启动了一个实例 - 所以我可以开始一个 Wordpress 博客。我尝试连接到这个实例(使用基本的 3 种方法),以便我可以下载 wordpress 并开始使用。问题是我无法使用给定的 3 种方法连接到此实例。

我在我的笔记本电脑上运行 linux 18.04,所以即使在我的 AWS 实例设置上 - 我选择了 Linux。尝试与独立 SSH 客户端连接时:我收到此响应ssh: connect to host ec2-198-51-100-1.compute-1.amazonaws.com port 22: Connection refused。使用 EC2 Instance Connect 时:There was a problem setting up the instance connection An error occurred and we were unable to connect or stay connected to your instance. If this instance has just started up, try again in a minute or two.我得到了该响应。最后一个选项是直接从我的浏览器使用 Java SSH …

wordpress amazon-ec2

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

Python 的 pipenv 慢吗?

我试图从切换venvcondapipenv管理我的虚拟环境中,但有一点我注意到了有关pipenv它的奇怪慢,当它做“锁定”,它到达的地方停止了“的时候暗战”执行点。通常是这么慢还是只是我?另外,你能给我一些关于如何使它更快的建议吗?

python pipenv

15
推荐指数
3
解决办法
6136
查看次数

使用 Pyspark 检查 hive Metastore 中是否存在表

我正在尝试检查 hive Metastore 中是否存在表,如果不存在,请创建该表。如果表存在,则追加数据。

我有下面的代码片段:

spark.catalog.setCurrentDatabase("db_name")
db_catalog = spark.catalog.listTables(dbName = 'table_name)
if any(table_name in row for row in db_catalog):
    add data
else:
    create table
Run Code Online (Sandbox Code Playgroud)

但是,我收到一个错误。

>>> ValueError: Some of types cannot be determined after inferring
Run Code Online (Sandbox Code Playgroud)

我无法解决值错误,因为在 hive Metastore 中创建的其他数据库表出现相同的错误。是否有另一种方法来检查 hive Metastore 中是否存在表?

hive python-3.x apache-spark apache-spark-sql pyspark

7
推荐指数
4
解决办法
1万
查看次数

在我知道不会为空的字段上使用assert可以吗?

通过阅读现有文章,我了解到“断言”不应在生产代码中使用,但是IntelliJ给我的第一个技巧是,当我使用一种我知道不会为NULL的方法时,但在其他方面还是可以为Null的,是要告诉我应该使用“断言” IntelliJ工具提示的屏幕截图

在上面的代码中,创建新的ItemStack时ItemMeta不会为null,但是如果ItemStack也为null,则可以为null,这就是为什么它没有@NotNull批注的原因。

知道这一点,处理此警告的最正确方法是什么?是因为我知道它永远不会为空而忽略它,还是仍然进行空检查。如果要执行null检查哪种类型,请断言或我已经做过的方式是

if(fillerMeta != null) 
Run Code Online (Sandbox Code Playgroud)

java minecraft bukkit

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

检查 Typescript 中的 ReadonlyArray 中是否包含字符串

背景是,我正在尝试读取.envDatabaseType构建 TypeORM 连接,如下所示:

const config: ConnectionOptions = {
  type: process.env.DB_CONNECTION, // A type of DatabaseType = 'mysql'|'postgres'|'sqlite'|...
  //...
}
Run Code Online (Sandbox Code Playgroud)

然后上面我有支持的列表DatabaseType

const SUPPORTED_DB_TYPES = ['mysql', 'mariadb', 'postgres'] as const; // This array contains selected DatabaseType
Run Code Online (Sandbox Code Playgroud)

当我想缩小类型范围时,问题就出现了。这个函数目前可以工作,但是涉及到转换:

const isSupportedDBType = (dbConnection: string|undefined): dbConnection is typeof SUPPORTED_DB_TYPES[number] =>
  dbConnection !== undefined &&
  ((SUPPORTED_DB_TYPES as readonly string[]).indexOf(dbConnection) > -1);

if(!isSupported(process.env.DB_CONNECTION)) {/*...*/}
Run Code Online (Sandbox Code Playgroud)

如果删除,我必须强制转换,因为出现以下错误as readonly string[]

“string”的参数类型不能分配给“mysql”|“mariadb”|“postgres”的参数类型

有没有办法使用 来做到这一点as readonly string[]

typescript typeorm

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

使用Apply将2个新列添加到现有数据框

我想使用apply函数:-以2列作为输入-基于函数输出两个新列。

这个add_multiply函数就是一个例子。

#function with 2 column inputs and 2 outputs
def add_multiply (a,b):
  return (a+b, a*b )

#example dataframe
df = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]})

#this doesn't work
df[['add', 'multiply']] = df.apply(lambda x: add_multiply(x['col1'], x['col2']), axis=1)
Run Code Online (Sandbox Code Playgroud)

理想结果:

col1  col2  add  multiply
1     3     4    3
2     4     6    8

Run Code Online (Sandbox Code Playgroud)

python apply dataframe pandas

14
推荐指数
2
解决办法
252
查看次数

Android Studio 3.5原因:buildOutput.apkData不能为空清理和重建已尝试

将Android Studio 3.4更新为3.5,并想构建一个Signed APK之后,但是出现错误:

原因:buildOutput.apkData不能为null错误

我已经尝试清理并制作项目以及清理并重建项目,但没有成功。

我正在使用Android Gradle 3.5.0和Gradle版本5.4.1

android android-studio android-studio-3.0

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

asp-route- *中的奇怪行为

在index.cshtml中,我使用锚标记助手作为

<a asp-action="Edit" asp-route-id="@Model.Id" asp-route-firstname="@Model.Name"</a>
Run Code Online (Sandbox Code Playgroud)

并在动作方法中

public IActionResult Edit(string id, string firstname)
{
   // id and firstname are assigned correct values
   // but  RouteData.Values only has three entries which are: controller, action and id, where is firstname?
}
Run Code Online (Sandbox Code Playgroud)

但是我不能通过访问访问firstname值,RouteData.Values["firstname"];而可以通过访问id值RouteData.Values["id"];,为什么它对id有效但对其他自定义属性无效?

c# asp.net-core-mvc tag-helpers

0
推荐指数
1
解决办法
31
查看次数

为什么在此处将列表元素辅助变量的工作方式不同?

我有这段代码:

lst = [[1,1], [2,1],[3,1]]
n = len(lst)
head = lst[n - 1]

head[0] += 1

lst.append(head)
del lst[0]

print(lst)
Run Code Online (Sandbox Code Playgroud)

而且我希望可以打印此代码:[[2,1], [3,1], [4,1]] 但它正在打印:[[2, 1], [4, 1], [4, 1]]. 我不明白为什么。请帮我。

python arrays list variable-assignment

2
推荐指数
1
解决办法
54
查看次数