小编adv*_*013的帖子

比较Bash中的数字

我开始学习为bash终端编写脚本,但我无法弄清楚如何让比较正常工作.我正在使用的脚本是:

echo "enter two numbers";
read a b;

echo "a=$a";
echo "b=$b";

if [ $a \> $b ];
then 
    echo "a is greater than b";
else
    echo "b is greater than a";
fi;
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是它比较了第一个数字的数字,即9大于10000,但1大于09

如何将数字转换为类型以进行真正的比较?

bash shell numeric

462
推荐指数
8
解决办法
79万
查看次数

用于静态网页的AngularJS SEO(S3 CDN)

我一直在研究如何改进托管在像Amazon S3这样的CDN上的angularJS应用程序的SEO(即没有后端的简单存储).大多数解决方案,PhantomJS,prerender.io,seo.js等依赖于后端来识别?_escaped_fragment_爬虫生成的URL,然后从其他地方获取相关页面.即使您提前生成快照页,即使是grunt-html-snapshot也最终需要您这样做.

解决方案基本上依赖于使用cloudflare作为反向代理,这看起来有点浪费,因为他们的服务提供的大多数安全设备等对于静态站点来说是完全冗余的.根据这里的建议设置反向代理也似乎有问题,因为它需要i)路由所有AngularJS应用程序我需要静态html通过一个代理服务器可能会妨碍性能或ii)为每个应用程序设置一个单独的代理服务器在这一点上,我也可以建立一个后端,这在我工作的规模上是不可承受的.

无论如何这样做,或者是静态托管AngularJS应用程序与伟大的SEO基本上不可能,直到谷歌更新他们的爬虫?


在John Conde的评论之后转发给网站管理员.

javascript seo amazon-s3 amazon-web-services angularjs

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

为什么python的内置二进制搜索功能运行得更快?

(sharth的评论已经回答了.)

我在python中编写了一个二进制搜索算法,它或多或少遵循与bisect模块中的bisect_left函数相同的结构.实际上它有一些较少的条件,因为我知道高点将是列表的长度而低值将为0.但由于某种原因,内置函数的运行速度是我的5倍.

我的代码如下:

def bisection_search(word, t):

    high = len(t)
    low = 0

    while low < high:
        half = (high+low)/2
        if t[half] < word:
            low = half + 1
        else:
            high = half
    return low
Run Code Online (Sandbox Code Playgroud)

内置函数的源代码是:

def bisect_left(a, x, lo=0, hi=None):
    if lo < 0:
        raise ValueError('lo must be non-negative')
    if hi is None:
        hi = len(a)
    while lo < hi:
        mid = (lo+hi)//2
        if a[mid] < x: lo = mid+1
        else: hi = mid
    return lo
Run Code Online (Sandbox Code Playgroud)

如你所见,几乎完全相同.然而,我的函数的超时时间(在100,000字的有序列表中搜索最后一个项)是-3.60012054443e-05,其中内置达到-6.91413879395e-06.是什么解释了这种差异

源代码中,最后有一条注释说"用快速C实现覆盖上面的定义" …

python binary-search

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

Windows emulator.exe PANIC:'x86'CPU缺少仿真器引擎程序

我正在尝试emulator.exe用作Charles Proxy的android模拟器。但是我启动时遇到问题

emulator @5.1_WVGA_API_28 
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

PANIC:缺少“ x86” CPU的仿真器引擎程序。

但是我可以从android studio运行模拟器,并且运行正常!我有一个英特尔处理器。

android android-emulator android-studio

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