小编Dom*_*ino的帖子

计算大因子时间复杂度

我遇到了一个问题,我需要计算非常大的因子的值.我用两种不同的方式在C++中解决了这个问题,但只想知道我的复杂性分析是否准确.

在任何一种方法中,我将非常大的数字表示为v[0]表示最低有效数字的向量,而最后一个索引处的值表示最高有效数字.版本1的代码可以在这个要点中找到.

鉴于上面的代码,它似乎multiplyVectorByInteger()O(log(n*k))其中n在给定的整数,并且k是由向量表示的数目.我的逻辑是,我们将做一些与结果数的长度成比例的步骤n*k,以产生一个向量表示n*k.长度n*kO(log(n*k))一些步骤将在for循环中执行,其他步骤将在while循环中执行.

在这个程序中找到大的阶乘,每当我们调用时multiplyVectorByInteger()我们都会传入一个整数n和向量表示(n-1)!.这意味着如果我们想要查找6!,我们传入整数6和向量表示5!.该函数将返回矢量表示6!.使用以前的信息我相信我可以说复杂性是O(log(i!))我传递整数的地方.为了找到大的阶乘,我们必须调用此方法O(n)次,其中n是我们正在努力寻找阶乘.我们积累的逻辑将如下所示:

1!       = 1!
1!*2     = 2!
2!*3     = 3!
3!*4     = 4!
...
(n-1)!*n = n!
Run Code Online (Sandbox Code Playgroud)

因为在我们计算的每个级别i!,我们因此O(log(i!))在每个级别执行步骤.总结如下:

SUM1

我从第二次总结跳到Big-Oh表示法的逻辑如下......打破这个我们得到以下结果:

1log(1) + 2log(2) + 3log(3) + ... + nlog(n)
Run Code Online (Sandbox Code Playgroud)

很明显我们得到的O(n^2)条款log(1) + …

c++ algorithm factorial time-complexity asymptotic-complexity

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

Heroku最大月费与爱好计划?

我一直是一个免费的Heroku用户,但是我最近改变了一个应用程序来运行Hobby计划.我注意到爱好计划细节说它是7美元/月/ dyno.这让我有点困惑,有什么方法可以通过一个爱好计划运行一个应用程序,每月收费超过7美元?如果大量的用户碰巧去了网站,会不会有一些Dyno扩展,这最终会让我花费超过定价?这可能吗?谢谢

heroku dyno

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

如何使用Node.js/Express + Passport + Websockets进行身份验证?

我正在构建一个angular2-login-seed,它使用Passport.js和OAuth策略进行身份验证.显然,使用这些工具进行身份验证的默认方法是使用由express签名的HTTP cookie.从我所知道的,Passport管理实际的Set Cookie标题,以便express可以request.isAuthenticated()通过护照通过身份验证每个后续请求并访问数据集req.session.passport.dataHere.

我想通过websockets将实时数据合并到应用程序中.这当然意味着从服务器到客户端的套接字流.此通信完全独立于常规HTTP服务器请求,这意味着:

  1. 它不包含所有HTTP请求包含的HTTP cookie

  2. Express不会代理与套接字的交互,它使用后端中使用的任何实现进行管理(sock.js,socket.io)

这使得难以简化要表达的HTTP请求之间的身份验证,并且将websocket数据简化为后端,因为它们是单独的通信方法.

根据我的研究,这给我留下了两个选择.其中一个是使用来实现我的套接字实现(最好通过socket.io上的sock.js,但我需要做更多的研究)访问快速会话.然后我可以根据需要验证套接字连接.问题是我不知道如何将快速cookie从前面获取到流中,因为javascript无法访问它(仅HTTP cookie).

我见过人们跳过的另一个常见解决方案是使用JWT(JSON Web令牌).围绕此实现的实现将JWT存储在前端的localstorage中.这是SPA(在我的案例中Angular2服务)可以发送它与每个"无状态"服务器身份验证请求,我们可以通过websocket发送它来验证websocket连接(前端JS显然可以访问本地存储) .在考虑这种实现时会想到几件事:

  1. 是否有可能让Passport OAuth策略使用JWT而不是常规会话信息?这会带来什么样的改变?据我所知,Passport策略使用某种形式的OAuth1或OAuth2父策略进行身份验证,默认使用cookie.

  2. 将此重要信息存储在本地存储中会将应用程序打开以防止安全漏洞(XSS,CSRF等)

  3. 如果是这样,我见过的最常见的解决方法是将JWT存储在cookie中,这样就不会轻易访问,欺骗或伪造.然而,这让我回到了使用JWT之前的位置,所以不妨打扰.

  4. 这是否意味着我必须在后端使用某种状态管理存储(例如Redis)来管理JWT主体的身份验证和解码?(我对Redis等一无所知).

在服务器HTTP请求和套接字数据之间连接身份验证的想法很奇怪,但对正确验证套接字连接似乎至关重要.我有点惊讶一个不存在的简单方法.我已经做了一些研究并且已经看过诸如socketio-jwt,express-jwt之类的东西,但是我不知道这是否可以通过我的Passport策略进行可管理的转换,或者是否更容易打开快速会话数据到套接字实现,或者如果我说错了!

非常感谢任何帮助或指导.

sockets cookies node.js express passport.js

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

C++虚拟内存布局

了解虚拟继承内存布局

我正在努力更好地理解vTables和vPointers为我们提供的解析内存布局.我完全理解多态性及其工作原理,并且确实没有问题,但是有一些小事情我似乎在关于内存布局和理解虚拟基本偏移方面绊倒.我知道这些东西在每天的C++代码中都不是完全必要的,但是我的兴趣是获取正在发生的事情.

我一直在指这个站点,以帮助理解由于使用虚拟继承而发生的内存布局.

在页面的虚拟继承部分大约有一半的时间内,它为生成的vTable提供了视觉效果,但是我想澄清一下我认为发生了几个事件的顺序:

http://www.phpcompiler.org/articles/virtualinheritance/vtable2.png

在上图中,在我看来:

  • 我们首先包含指向LeftvTable的vPtr
  • 接下来包括Left类的唯一值(Left::b)
  • 接下来,计算偏移量,以便我们可以在刚刚包含的数据之后直接放置任何虚拟继承的数据.vPtr的大小+ int Left::b= 8,因此我们偏移Top::a8,并将其添加到布局的底部.
  • 冲洗并重复正确的课程

http://www.phpcompiler.org/articles/virtualinheritance/vtable3.png

上面的图片,在我看来是:

  • 我们首先包括我们继承的第一类vPtr
  • 由于我们实际上并没有从该直接基类继承,我们可以直接继承特定于该类的任何非虚拟数据成员,而无需偏移即(Left::b)
  • 我们包括继承的第二类vPtr
  • 由于我们实际上并没有从该直接基类继承,我们可以直接继承特定于该类的任何非虚拟数据成员,而无需偏移即(Right::c)
  • 接下来包括Bottom该类的任何唯一数据,Bottom::d
  • 接下来,我们计算超类中虚拟数据的偏移量,并将其包含在内存布局的底部.
  • 最后,我们完成了Bottom类的内存布局

对我来说,我认为上述过程在很多情况下确定内存布局是有意义的,但是我想知道如果我改变一些事情会发生什么.

  1. 如果Bottom虚拟地继承了两者Left和内存,内存布局将如何变化Right
  2. 底部继承LeftRight定期,但是说Right定义它自己int a,显然这会使它bottom.a等于bottom.Right::a最近覆盖的任何东西,但是这将被放置在内存布局中?

我的每个问题都有一个提案布局(2),并想知道我背后的想法是否正确,如果没有,为什么......谢谢!

1.)

+--Bottom---+ …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance memory-management virtual-inheritance

6
推荐指数
0
解决办法
113
查看次数

使用Angular2的服务工作者推送通知

我正在尝试将通过服务工作者提供用户推送通知的一般工作流程拼凑在一起.

我已经关注了这个 Google Developers服务工作者推送通知教程,我正在考虑如何在基于用户的小型Web应用程序中实现此类实验.

在我看来,支持推送通知的Web应用程序的一般工作流程如下:

  • 客户访问应用
  • 服务工作者产生推送通知端点
  • 客户端将端点发送到服务器
  • 服务器将端点与为其生成端点的当前用户相关联
  • 每次你的应用程序会说某些通知值得发生时,服务器会抓取与用户关联的推送通知端点,并点击它向任何用户设备发送推送通知(可能在Chrome 50+中有数据负载)等)

基本上我只想确认我对这项技术的一般实施思路是否准确,否则如果我遗漏了某些内容就会得到反馈.

push-notification node.js service-worker progressive-web-apps angular

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

递归算法时间复杂度:硬币变化

我正在通过一些算法,并遇到了硬币更改问题.

在思考这个问题时,我想出了这个天真的递归解决方案:

int coinChange(const vector<int>& coins, int start, int n) {
  if (n == 0) return 1;
  if (n < 0) return 0;

  int total = 0;

  for (int i = start; i < coins.size(); ++i) {
    if (coins[i] <= n) total += coinChange(coins, i, n-coins[i]);
  }

  return total;
}
Run Code Online (Sandbox Code Playgroud)

然后我意识到"接受"的解决方案如下:

int count( int S[], int m, int n )
{
    // If n is 0 then there is 1 solution (do not include any coin)
    if (n …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm recursion time-complexity coin-change

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

C++虚拟继承内存布局

虚拟继承内存布局

我试图通过虚拟继承和vTables/vPtrs完全理解内存中发生的事情,什么不是.

我有两个我编写的代码示例,我完全理解它们的工作原理,但我只想确保在脑海中对对象内存布局有正确的想法.

以下是图片中的两个示例,我只想知道我对所涉及的内存布局的想法是否正确.

例1:

class Top { public: int a;  };
class Left : public virtual Top {  public: int b; };
class Right : public virtual Top { public: int c; };
class Bottom : public Left, public Right { public:  int d; };
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

例2:

与上述相同,但有:

class Right : public virtual Top {
public:
    int c;
    int a;  // <======= added this
};
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

c++ oop inheritance multiple-inheritance virtual-inheritance

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

Flask 和 Angular Web 应用程序路由

我想主要使用 Python Flask 框架和 AngularJS 制作一个 Web 应用程序,在考虑这样做并维护应用程序的功能时,我开始想知道如何处理路由。

在flask中,管理后端如何直接处理路由非常容易:

@app.route('/')
def home():
Run Code Online (Sandbox Code Playgroud)

在 Angular 中,显然也很容易管理路由,并且可以通过加载特定的控制器来处理数据,以通过 XHR 访问后端的某些部分,而不是其他部分。

为了制作一个好的单页 web 应用程序,我会从将所有路由责任委托给 Flask 或 Angular 中受益最大,还是让 Flask 只用 a 处理所有路由/,让 Angular 处理所有散列路由是否有意义对于单个视图中的更改。

我不太确定如何解决和委派这个问题,我意识到没有一种方法可以做到这一点,但我很想知道是否有人以前搞砸过这个问题,以及他们发现哪些方法更容易处理。

javascript python flask angularjs

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

Flask自定义登录和模板渲染

我是学习Python进行Web开发的新手,并决定将Flask作为我现在的首选框架.我选择这个主要是因为它在Web开发方面的基本方法,我希望尽可能多地自定义我的Web应用程序.我在PHP中创建了一个非常基本的MVC框架,并希望在Python中创建类似的东西.我正在研究一些与数据库交互的方法,并添加用户登录/注册支持,我原来的想法是,我想用我自己的方法和对象做什么,而不是.类似于我在PHP中所做的,所以我可以学习如何有效地为长期生产项目开发自己的后端.在一些研究,我发现在瓶如基本对象Login Manager,Login-FormFlask-Admin等我不喜欢使用这些包装精美的东西,我在有很少的控制,并没有dev'd定制的想法.

使用那种东西我也觉得我没有学习所有这些东西是如何在最低级别上工作的,所以当项目环境发生变化和最大的灵活性,定制时,我无法重现他们以后给我的一些好处.可维护性和效率是必需的.显然我现在不在那个位置,但我DO知道如何在PHP中编写这个后端的东西,我只是想知道这是否意味着在Python/Flask中我自己管理会话和身份验证,或者我的想法是什么完全脱离了ocontext,甚至没有接近管理相同的东西.

python authentication model-view-controller flask flask-login

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

jQuery从类名中选择一个元素

我处于需要.slideToggle()在常规 JavaScript 确定元素上使用jQuery 中的函数的位置。我可以使用此代码:

var feedback = document.getElementsByClassName('feedback');
Run Code Online (Sandbox Code Playgroud)

然后稍后在一个函数中:

feedback[index].style.display = 'block';
Run Code Online (Sandbox Code Playgroud)

但是,我想要做的是在slideToggle('fast')上使用该函数feedback[index],因此与其将其粗暴地更改displayblock,我还可以得到一个不错的 jQuery 式转换。

显然这段代码不起作用:

feedback[index].slideToggle('fast');
Run Code Online (Sandbox Code Playgroud)

但是,这将:

$('.feedback').slideToggle('fast');
Run Code Online (Sandbox Code Playgroud)

但我无法通过索引选择哪个反馈来运行该slideToggle()功能,它只是完成所有这些,这是有道理的。如果我能得到一些有效地做到这一点的代码:

$('.feedback')[index].slideToggle('fast');
Run Code Online (Sandbox Code Playgroud)

那将是完美的。我喜欢这样的事实,我可以通过出现在项目列表坚持一类的东西和迭代.getElementsByClassName('classname'),所以我不必在同一类的一切坚持一个ID,这将是很好,如果我可以选择哪些$('.feedback')我在此返回的所有元素的列表中使用的元素,但我无法弄清楚它是如何工作的。如果我能以某种方式通过索引选择列表中的哪些项目按类,在其上运行 jQuery 命令将使这变得更简单,因为我不想在每个具有feedback.

非常感谢。

html javascript css jquery

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