小编Rol*_*lie的帖子

Android工作室未在"选择设备"下列出我的手机

刚刚开始Android开发; 有一个Nexus 5在日本购买,但有英文版的android(大概应该没关系).我在Windows 8.1上安装了Android Studio以尝试制作应用程序,但现在我没有在"选择设备"下看到我的手机.我启用了开发人员模式并选择了"USB调试".还有什么我需要做的才能让Android Studio看到我连接的设备吗?

选择设备对话框

android android-studio

32
推荐指数
3
解决办法
14万
查看次数

(浮动)(1.2345f*6.7809)比1.2345f*6.7809f更准确吗?

我有一些代码块:

float total = <some float>;
double some_dbl = <some double>;

total *= some_dbl;
Run Code Online (Sandbox Code Playgroud)

这引发了我想要关闭的编译器警告,但我不喜欢关闭这样的警告 - 相反,我宁愿根据需要显式地转换类型.让我思考的是...... (float)(total * some_dbl)比准确total * (float)some_dbl吗?它是编译器还是平台特定的?

更好的代码示例(链接如下):

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

int main() {
    double d_total = 1.2345678;
    float f_total = (float)d_total;
    double some_dbl = 6.7809123;

    double actual = (d_total * some_dbl);
    float no_cast = (float)(f_total * some_dbl);
    float with_cast = (float)(f_total * (float)some_dbl);

    cout << "actual:               " << setprecision(25) << actual << endl;
    cout << …
Run Code Online (Sandbox Code Playgroud)

c++

11
推荐指数
2
解决办法
835
查看次数

如何获取成员函数指针的类?

考虑一下代码:

class Character
{
  void kill();
  void send_to_wall();
}

template <typename T>
void GeorgeFunc(T fp)
{
  ??? obj;
  (obj.*fp)();
}

int main()
{
  GeorgeFunc(&Character::kill);
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:我怎么能得到????似乎编译器在模板实例化期间肯定知道这个类型是什么(Character),但我不知道如何得到它.我目前的解决方法是更改​​为:void GeorgeFunc(void (T::*fp)()),但从成员函数指针中获取类型会更简洁. decltype(fp)会回来void(Character::*)(),并decltype(fp())会回来void.有Character什么方法可以得到?

c++ c++11

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

是否可以初始化未命名结构的std ::数组?

以下作品:

struct
{
    int v;
} vals[] = { {1}, {2} };
Run Code Online (Sandbox Code Playgroud)

我可以做同样的事情,而是初始化一个std::array

编辑,因为很多人都在问'为什么'

有一些非常明显的解决方法(在评论中列出),但我只想使用一次类型,所以我真的不希望它添加到我当前的命名空间.我可以使用元组或类似的东西,但具有命名值可以提高清晰度.如果我正在构建一个std::array,我不需要c-array值,所以我不能使用decltype.

想要做的最干净的解决方案是:

struct
{
    int v;
} std::array vals = { {1}, {2} };
Run Code Online (Sandbox Code Playgroud)

还有一个学术兴趣的元素 - "这有可能以某种方式我没有吗?".似乎没有,所以我可能会使用:

struct
{
    int v;
} c_array[] = {};

std::array<std::remove_reference_t<decltype(c_array[0])>, 2> arr = { {1}, {2} };
Run Code Online (Sandbox Code Playgroud)

c++

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

我怎么知道GIT分支没有完全合并?

所以我对我目前的GIT工作流程(我是新手)的意见感兴趣,以及如何确定哪些更改尚未合并/推送到相应的存储库.首先,我当前的系统看起来像这样:

      remote.master
            |
            |
            V
      local.master
   |       |       |
   V       V       V
 branch  branch   branch
Run Code Online (Sandbox Code Playgroud)

对于新任务,我会从remote.master拉到local.master,创建一个新分支并检查它.我会在完成任务时做各种提交,也许会切换到其他任务,然后在准备好之后,将从remote.master拉到local.master,将我的分支合并到local.master,最后推送到remote.master.

所以2个问题:对于一个小团队来说,这是否有点过分?省略本地分支是否更有意义?如果是这样,一些建议表明存在"快速转发"问题(我理解它使remote.master中无法区分的更改)或者过多的具有潜在意外时间戳并且难以解析的提交.

2,假设上述工作流程:我有时会经常在任务之间切换.我想要一个显示我的屏幕:

'branch 01' -> partially merged to local.master 
'branch 04' -> notmerged to local.master 
'local.master' -> partially merged to remote.master
Run Code Online (Sandbox Code Playgroud)

如果各种功能已合并到哪里,我会忘记它.我绝对不想逐个分支,并尝试通过'git diff'或其他命令来判断这些信息.我目前在Windows上使用Tortoise GIT,但我对其他图形替代品持开放态度.我有时会使用shell,但更喜欢用户界面.有没有办法获得这些信息?

git git-workflow

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

如何在VS2013中调试"对象引用未设置为对象的实例"?

我有一个ac#Azure项目,它只是一个web api,并且想要删除一些非API默认组件(欢迎页面,帮助等).执行此操作后,启动应用程序时,出现错误消息"对象引用未设置为对象的实例".我之前在Azure中做过这些事情时已经看到了这一点,并且每次都以某种方式绕过它们.我的问题是:我如何自己调试此错误?这个错误描述非常缺乏细节(没有调用堆栈或任何东西,好像应用程序尚未启动,并且对话框是模态的,因此我无法点击VS中的任何内容)

额外说明:

  • 这是一个ASP .NET项目.
  • 一旦我发布到Azure,它就可以工作了.
  • 在完全复制项目并重建之后,它似乎有效.然后在使用NuGet依赖时,我们回到它不工作(我已经尝试删除我的包文件夹并让NuGet重新创建 - 没有运气;根本不知道是否与NuGet有关)
  • 我重新复制了这个项目,所以只是'MySolutionFolder' - >'MySolutionFolder - Copy',用相同版本的VS重新打开,运行正常.这显然是一个非常草率的解决方案,所以寻找更好的东西.

如评论中所述,该问题可能涉及对各种文件的访问权限,很可能与NuGet相关但也可能是Azure,这解释了为什么复制到新的解决方案目录"修复"了这个问题.我希望看到更好的错误信息,例如"错误:Visual Studio无法写入'packages.config'",所以我知道实际上在哪里解决这类问题.就像现在一样,它就像一个编译错误,上面写着"代码中的语法错误.某处.好运找到它".

c# asp.net azure visual-studio

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

如何在Blazor中访问浏览器localStorage?

我想支持JWT,所以我需要保留令牌; 是否有一些设施可以访问这个?或者我们现在应该注册我们自己的javascript函数来访问此功能?

编辑:根据建议,我尝试使用JS interop:

<script>
    localStorage.setItem("key1", "key1data");
    Blazor.registerFunction("readStorage", (key) => {
        return localStorage.getItem(key);
    });
</script>
@if (jwtKey == null)
{
<div class="login-panel">
    <p>JWT not loaded</p>
</div>
}
else
{
<div class="login-panel">
    <p>@jwtKey</p>
</div>
}

@functions {
    public RenderFragment Body { get; set; }
    string jwtKey;

    protected override async Task OnInitAsync()
    {
        jwtKey = RegisteredFunction.Invoke<string>("readStorage", "key1");
        if (jwtKey == null)
        {
            jwtKey = "Unknown";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是这导致了diag中的WASM错误:

WASM:[Microsoft.AspNetCore.Blazor.Browser.Interop.JavaScriptException]找不到名为'readStorage'的注册函数.WASM:错误:找不到名为'readStorage'的注册函数.

仅供参考,这是Blazor VS样板项目的MainLayout.cshtml.

(如果合适,可以提出一个新的问题;虽然有点与此相关)

c# asp.net-core blazor

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

如何使用boost :: asio中的"chunked"HTTP Transfer-Protocol将文件写入套接字?

因此,在增强HTTP Server 3示例的基础上,我想修改connection :: handle_read以支持发送正文以及消息.但是,这样做的方法对我来说并不明显.我想写一些类似的东西:

void connection::handle_read(const boost::system::error_code& e,
    std::size_t bytes_transferred)
{
    ...
 if (result)
    {     
      boost::asio::async_write(socket_, reply.to_buffers(),
          strand_.wrap(
            boost::bind(&connection::write_body, shared_from_this(),
              boost::asio::placeholders::error)));
    }
}

void connection::write_body(const boost::system::error_code& e)
{
    boost::asio::async_write(socket_, body_stream_,
      strand_.wrap(
      boost::bind(&connection::handle_write, shared_from_this(),
      boost::asio::placeholders::error)));
}
Run Code Online (Sandbox Code Playgroud)

这里body_stream_是一个asio::windows::stream_handle.

但是这种方法根本不处理http分块(所有这意味着在每个块之前发送块的大小).解决这个问题的最佳方法是什么?我是否为符合boost const缓冲区要求的ifstream编写自己的包装器?或者尝试模拟循环中async_write多次调用的效果async_write_some?我应该提一下解决方案的要求是我在任何给定时间都没有将整个文件存储在内存中 - 只有一个或几个块.

非常新的ASIO和插座,任何建议表示赞赏!

c++ boost boost-asio

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

验证加载的DLL具有有效证书的最安全的方法是什么?

我有一个二进制'api.dll',它使用另一个二进制'helper.dll'.我想使用数字签名验证每个DLL的真实性,但我不确定正确的方法.对于上下文,DLL使用visual studio 2010构建,并通过依赖项选项卡进行链接.链接通过存根helper.lib发生,所以我没有显式调用LoadLibraryapi.dll代码.部分问题是我不知道从哪里加载helper.dll.我最初的想法是:

  1. 掌握当前流程
  2. 枚举所有已加载的模块
  3. 找到名为"helper.dll"的一个(或多个)(如果这个信息通过枚举模块的API可用),并验证它使用的东西签名 是这样

这是解决这个问题的最好方法吗?

其次,基于我对数字签名/证书的模糊理解,在我看来验证需要连接到证书颁发机构,或者证书需要已经在机器上列为可信任.当外部连接被不赞成或明确禁止时,通常如何处理?是应用程序"安装"的东西吗?或者在这种情况下是否需要另一种不太安全的验证方法?

c++ winapi digital-signature

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

我可以递归调用异步函数而不会溢出堆栈吗?

由于异步函数的返回站点不是调用者,我认为这是有效的,但我认为为了以防万一我会验证这是安全的.如果不是,为什么会溢出堆栈?

static async Task CheckAsync(TimeSpan recursiveTimer)
{
    // do some work

    await Task.Delay(recursiveTimer);
    CheckAsync(recursiveTimer);
}
Run Code Online (Sandbox Code Playgroud)

编辑:我决定尝试一下 - 看起来它不会溢出堆栈(它现在在我的机器上运行 - 它当前正在调用210,000).我假设的原因是因为CheckAsync函数的返回站点实际上不是CheckAsync,而是异步管道中的某个地方.因此,当CheckAsync调用CheckAsync时,它实际上并没有通过普通函数调用机制添加到调用堆栈,而是将该函数作为对象放在某个异步"待执行"队列上,该队列通过管理异步函数的其他线程运行.

对于那些了解这种机制的人来说:这听起来是对的吗?

c# asynchronous

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