小编Jas*_*n C的帖子

使用Android SDK的gcc -x objective-c

由于Objective-C存在并且即使在MinGW中也受支持,通过传递-x objective-c,是否存在使用Android SDK实现此目的的黑客攻击?我对同事的机器进行了初步测试,看来语言objective-c不受支持.

我不想让UIKit或AppKit,甚至基金会工作; 我在Objective-C中编写了大部分OpenGLES游戏,并成功将其移植到Mac OS X和Windows上; 我相当肯定,一旦我有时间弄清楚足够的GNUStep,我就可以轻松地将它移植到GNU/Linux(即使没有它,我也可以创建类来让游戏运行).

我只对基本语言和基本运行时感兴趣(如果可能的话包括属性); 甚至NSObject可以很容易地写到我需要的程度.


与此同时,我已经设法编译了一些Objective-C代码,并为此编写了一个指南:

我的答案中有更多细节.

android gcc objective-c objective-c++

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

Java:'.class'在将数组传递给函数时出现预期的错误

我正在上一门java课,但已经离开了一段时间.

试图让这个排序程序工作:

import java.util.*;
public class Assignment1 
{
   private int[] nums;
   private int[] ast;

   private int n;

   public void sort(int[] vals)
   {
      this.nums = vals;
      n = vals.length;
      this.ast = new int[n];
      merges(0, n - 1);
   }   

   private void merges(int bot, int top)
   {
      if (bot < top)
      {
         int mid = bot + (top - bot) / 2;
         merges(bot, mid);
         merges(mid + 1, top);
         merge(bot, mid, top);
      }
   }

   private void merge(int bot, int mid, int top)
   {
      for …
Run Code Online (Sandbox Code Playgroud)

java arrays parameter-passing

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

解析大数字时是否出现NumberFormatException?

我知道这可能不是最有效的编码方式,但这是我到目前为止所做的工作,直到数字变得非常大.代码应该从文件中读取2个数字,例如"052"和"61".然后,它应该将第一个数字从最大值排序到最小值,以使数字尽可能大,第二个数字从最小到最大,以使其尽可能小.(520和16)然后它打印两者的差异,在这种情况下:504.

其中两个数字是"3827367453723784675745843783623672348745389734268374687"和"1682761482512674172712635416571265716235471625176235741".从最大到最小,最小到最大的数字的排序工作正常,但是当我尝试将其解析为整数时NumberFormatException,抛出a.我想因为数字太大而无法存储到一个int所以我尝试解析成a Long但导致相同的错误.

我所做的是读取数字,String然后创建一个String数组,将每个数字存储在一个单独的索引中.然后我做了一个int数组,我几乎有相同的数组,除了整数形式而不是a String.然后我对int数组进行了排序.然后我创建了另一个String来存储新排序的数字,然后我试图解析那个String,那就是抛出异常的地方.

有什么建议?

import java.io.*;    
import java.util.*;    
import java.text.*;    
import static java.lang.System.*;    

public class BigDif    
{    
    public static void main(String[] args) throws IOException    
    {    
        Scanner scan = new Scanner (new File ("BigDif.dat"));    
        int numRuns = scan.nextInt();    
        scan.nextLine();    

    for (int i = 0; i < numRuns; i++)    
    {
        String firstNum = scan.nextLine();
        String secondNum = scan.nextLine();
        String[] firstNum2 = new …
Run Code Online (Sandbox Code Playgroud)

java numberformatexception

5
推荐指数
2
解决办法
3252
查看次数

从 jpcap 设备路径获取接口名称/地址(或将 NetworkInterface 映射到)

我正在尝试执行以下操作:

  1. 向用户显示人类可读的网络接口名称及其 IP 地址的列表。
  2. 在用户选择的接口上启动 jpcap 数据包捕获。

然而,以下几点给我带来了麻烦:

  • jpcap 仅提供PacketCapture.lookupDevices(),它返回到接口的 Windows NPF 驱动程序设备路径列表(例如\Device\NPF_{39966C4C-3728-4368-AE92-1D36ACAF6634})和相当平淡的显示字符串(例如Microsoft),并且没有其他信息。所以我不能用它来构造UI界面列表。
  • NetworkInterface.getNetworkInterfaces()提供系统上的接口列表,其中包含 UI 所需的所有信息,但NetworkInterface不提供 NDF 驱动程序设备路径,仅提供显示名称和设备名称,例如“net5”、“lo”等。
  • jpcapPacketCapture#open()只接受设备路径。

既已启动又未环回的设备列表NetworkInterface确实与 jpcap 返回的设备列表相对应,尽管它们的顺序不同。

因此,我找不到任何NetworkInterface可以传递给 的内容PacketCapture#open(),并且我不知道如何从 . 返回的设备路径中获取适合 UI 的信息PacketCapture#lookupDevices()PacketCapture不接受NetworkInterface#getName()。因此,我被困住了。

我还没有在 Linux 上尝试过这个。我怀疑这个问题是 Windows 特有的,它NetworkInterface#getName()PacketCapture#open().

我如何获取 jpcap 打开设备所需的信息NetworkInterface(或相反 - 获取NetworkInterface给定的设备路径),或者是否有另一种方法可以让我获得一个好的显示名称和 IP 地址每个设备都直接来自 jpcap?


Windows 注册表:我一直在进行一些挖掘,至少在注册表中找到了有关 NPF 设备的信息。给定 jpcap 设备路径,并使用此处的技术之一 …

java windows windows-7 jpcap

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

从servlet,如何设置永不过期的Cookie?

从servlet,我如何设置一个永不过期的cookie?

我试过这样做:

Cookie cookie = new Cookie("xyz","");
cookie.setMaxAge(-1);
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,它会在用户关闭浏览器后立即过期.

java cookies servlets java-ee

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

av_frame_get_buffer 后清理

我的问题有两个方面。我正在使用 libav、ffmpeg、3.1。


首先,您如何适当地处理已分配缓冲区的帧av_frame_get_buffer?例如:

AVFrame *frame = av_frame_alloc();
frame->width = ...;
frame->height = ...;
frame->format = ...;
av_frame_get_buffer(frame, ...);
Run Code Online (Sandbox Code Playgroud)

除了调用av_frame_free(frame)?之外,是否必须手动释放任何缓冲区?文档没有提到任何特别之处,但根据我的经验,ffmpeg 文档通常会遗漏重要的细节,或者至少将它们隐藏在远离明显位置的地方。我查看了av_frame_freeand的代码,av_frame_unref但它分支了很多,我无法确定它是否涵盖了所有内容。


其次,如果一些超出av_frame_free需要做的事情,那么有没有包罗万象的方式来清理框,如果你不知道你怎么它的数据已被分配?例如,假设someBuffer已经分配了适当的大小:

AVFrame *frame2 = av_frame_alloc();
frame2->width = ...;
frame2->height = ...;
frame2->format = ...;
av_image_fill_arrays(frame2->data, frame2->linesize, someBuffer, 
                     frame2->format, frame2->width, frame2->height, 1);
Run Code Online (Sandbox Code Playgroud)

有没有办法使用完全相同的代码在上面的示例中同时释放frameframe2也就是说frame,它的数据应该被释放,frame2应该被释放,但不是someBuffer,因为 libav 没有分配它。

c++ ffmpeg libav

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

从 Knex 检索连接池(与express-mysql-session 共享)

我已经将knex配置为使用 MySQL 进行池化:

var knex = require("knex")({
    client: "mysql",
    connection: {
        host: ...,
        user: ...,
        password: ...,
        database: ...
    },
    pool: {
        min: 0,
        max: 20
    }
});
Run Code Online (Sandbox Code Playgroud)

我也在使用express-session ,并且我计划在商店中切换到express-mysql-session 。

因此,我想使用knex创建的连接池,这样我就可以对所有数据库访问使用相同的池。

有什么方法可以从knex获取连接池并将其传递给 MySQL 会话存储构造函数吗?或者有其他方法可以使用同一个池来处理所有事情?

javascript node.js knex.js express-session

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

如何处理passport.deserializeUser()中的错误?

我已经像这样配置了Express和Passport:

var express = require("express");
var site = express();
var flash = require("connect-flash");
var passport = require("passport");

site.use(require("cookie-parser")());
site.use(require("body-parser").urlencoded({extended:false}));
site.use(require("express-session")(...));
site.use(flash());
site.use(passport.initialize());
site.use(passport.session());
Run Code Online (Sandbox Code Playgroud)

我有一个很好的库存实现deserializeUser(我正在使用local由Bookshelf提供的MySQL支持的身份验证):

var db = require("./database.js"); // exports models e.g. db.User

passport.deserializeUser(function(id, done) {
    db.User.findById(id).then(function (user) {
        done(null, user);
    }).catch(function (err) {
        done(err, null);
    });
});
Run Code Online (Sandbox Code Playgroud)

我遇到了以下特定问题:当从数据库中删除登录用户时(例如,当站点管理员删除用户时),反序列化会按照预期使用CustomError("EmptyResponse")来自Bookshelf 的序列失败.但是,我不知道如何处理它; done(err, null)最终只是导致错误消息和堆栈跟踪以HTML格式发送回客户端.

问题是:如何deserializeUser在故障时提供自定义,优雅的错误处理?

现在,如果它简化了事情,我可以添加{require:false}db.User.findById调用中给我一个null用户而不是错误,但我仍然不知道如何处理它(而且我仍然需要处理错误对象,例如,如果数据库服务器已关闭并且存在连接错误).

我想要失败的操作是将用户重定向回登录页面,可能带有描述性的flash消息,但我没有任何访问请求/响应的权限,deserializeUser我不知道如何回复.

javascript node.js passport.js

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

如何从 Hibernate 禁用 SHOW WARNINGS?

在 MySQL 中使用 Hibernate (4.3.8),我注意到SHOW WARNINGS在活动日志中占用了大量带宽的一堆语句:

在此处输入图片说明

我四处搜索,这是一个非常常见的问题(例如),显然可以通过将日志级别增加到 ERROR来解决(并且该解决方案至少从 4.3.6 起已确认实施)。

问题是,我实际上不知道如何做到这一点。我对 Hibernate 的了解是使用它所需的最低限度的知识。之前链接的帖子通过编辑 Logback 设置解决了这个问题,logback.xml但我没有使用 Logback。我正在使用所有默认设置:

  • 显然它使用JBoss Logging 作为其核心。
  • 我的类路径中没有任何其他日志记录依赖项(例如 slf4j.jar),所以我绝对不会使用它们。日志消息只是被写出到System.err.

所以我实际上不确定如何做到这一点。这是我的配置文件:

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">    
<hibernate-configuration>    
    <session-factory>
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost/xxxxx</property>
        <property name="connection.username">xxxxx</property>
        <property name="connection.password">xxxxx</property>      
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="connection.isolation">2</property>
        <property name="connection.pool_size">10</property>
        <property name="current_session_context_class">thread</property>
        <property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
        <!-- <property name="show_sql">true</property> -->
        <!-- <property name="hbm2ddl.auto">create</property> -->
        <mapping resource="hibernate.hbm.xml"/>     
    </session-factory> …
Run Code Online (Sandbox Code Playgroud)

java mysql hibernate hibernate-4.x

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

在 TcpClient 中设置 TCP_QUICKACK 选项

我正在将一些 C++ 移植到 C#。我正在努力寻找各种套接字选项的等效项。我无法弄清楚的是如何TCP_QUICKACK在 C# 中进行设置。

如果我有一个TcpClient,那么 C# 相当于:

optval = 1; 
setsockopt(socket_, IPPROTO_TCP, TCP_QUICKACK, &optval, sizeof(optval));
Run Code Online (Sandbox Code Playgroud)

在 中似乎没有等价物,在SocketOptionName中似乎也没有相应的属性TcpClient.Client

如何设置此选项?

c# sockets tcpclient

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