小编Ye *_*ang的帖子

如何在rails上使用ruby构建openid提供程序

我尝试了一些有关ruby on rails的openid利用率的搜索.但是,虽然出现了一组选项,例如omniauth,authlogic等,但这些gem通常用于构建接受openid身份验证的站点.换句话说,它们适用于开放式消费者设置.

我也想建立自己的openid服务器. 正如在OpenId网站上所建议的那样,我发现像Masquerade和local-openid这样的东西,不幸的是,它们不是非常活跃的项目,下载量非常少.

是否有任何其他设施可用于构建自有的openid提供程序服务器?

非常感谢 !!

干杯,

ruby openid ruby-on-rails

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

没有索引的MongoDB搜索真的很慢吗?

我正在尝试MongoDB的性能来比较我当前基于MySQL的解决方案。

在具有三个属性A,B和C的集合/表X中,我在MongoDB和MySQL中都为属性A编制了索引。

现在,我在MongoDB和MySQL中投入了1M数据,并在这种简单的情况下尝试了搜索性能。

MongoDB上的插入速度仅比插入MySQL快10%。但这没关系,我知道采用MongoDB不会带来我的CRUD的神奇提升,但是我真的对在没有索引的MongoDB中进行搜索感到惊讶。

结果表明,MongoDB在非索引字段上的选择比在索引字段上的选择慢十倍。

另一方面,非索引字段上的MySQL选择(MyISAM)仅比索引字段上的选择慢70%。

最后但并非最不重要的一点是,在选择索引方案中,MongoDB比我的MySQL解决方案快30%。

我想知道,上述数字正常吗?特别是MongoDB的性能选择没有索引?

我的代码如下:

BasicDBObject query = new BasicDBObject("A", value_of_field_A);
DBCursor cursor = currentCollection.find(query);
while(cursor.hasNext()) {
    DBObject obj = cursor.next();
    // do nothing after that, only for testing purpose
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,从业务逻辑的角度来看,我的收藏可能真的很大(TB甚至更多),您对每个物理收藏的大小有何建议?1000万个文档还是10亿个文档?

非常感谢!

------------------------------编辑------------------- -----------

我在MongoDB和MySQL上都尝试了1000万条记录的插入,而MongoDB的行为比MySQL快20%-确实不如我想的那样。

我很好奇,如果我设置了MongoDB自动分片,是否会提高插入速度?如果是这样,我是否需要将碎片放在不同的物理机器上,或者可以将它们放在具有多核的同一台机器上?

------------------------------更新------------------- -----------

首先,我将MongoDB的写关注从ACKNOWLEDGED修改为UNACKNOWLEDGED,然后MongoDB的插入速度提高了3倍。

后来,我并行制作了插入程序(使用8核计算机的8线程),对于MongoDB ACKNOWLEDGED模式,插入也进行了3倍的改进,对于UNACKNOWLEDGED模式,速度实际上降低了50%。

对于MySQL,并行插入模式将速度提高了5倍!这比MongoDB最好的插入盒快!

mongodb mongodb-java mongodb-query

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

如何使Spring MVC返回CSV与返回JSON一样方便

我知道Spring MVC可以轻松返回Json格式的模型; 但是,我尝试了很多不同的方法来返回CSV格式的模型(通过杰克逊),但无法成功.

我该怎么办?

我附上我的模型代码,控制器代码和gradle.build,如下所示:

非常感谢!

模型:

@JsonPropertyOrder({ "staffName", "name" })
public class Greeter
{
    String name;
    String staffName[];

    public String getName()
    {
        return name;
    }

    public void setName(String name)
    {
        this.name = name;
    }

    public String[] getStaffName()
    {
        return staffName;
    }

    public void setStaffName(String[] staffName)
    {
        this.staffName = staffName;
    }
}
Run Code Online (Sandbox Code Playgroud)

控制器:

@Controller
public class GreetingController {

    @RequestMapping(value = "/greeter/json", method = RequestMethod.GET)
    public @ResponseBody
    Greeter getGreeterInJSON() {

        Greeter greeter = new Greeter();

        greeter.setName("default");
        greeter.setStaffName(new String[] { "ye", "lichi" …
Run Code Online (Sandbox Code Playgroud)

spring spring-mvc gradle jackson

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

如何在Angularjs控制器中使用初始谷歌地图

我想在我的角度控制器中实现下面的谷歌样本.

https://developers.google.com/maps/documentation/javascript/examples/map-simple

<html>
  <head>
    <title>Simple Map</title>
    <meta name="viewport" content="initial-scale=1.0">
    <meta charset="utf-8">
    <style>
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
      #map {
        height: 100%;
      }
    </style>
  </head>
  <body>
    <div id="map"></div>
    <script>

var map;
function initMap() {
  map = new google.maps.Map(document.getElementById('map'), {
    center: {lat: -34.397, lng: 150.644},
    zoom: 8
  });
}

    </script>
    <script src="https://maps.googleapis.com/maps/api/js?callback=initMap"
        async defer></script>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

其中google map api的加载需要在窗口范围内跟踪initMap.

我应该怎样做角度控制器?以下代码不起作用:

angular.module('testApp')
  .controller('MainCtrl', function ($scope, $window) {

    $window.map;
    $window.initMap = function() {
      $window.map = new google.maps.Map(document.getElementById('map'), {
        center: …
Run Code Online (Sandbox Code Playgroud)

google-maps angularjs

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

如何允许普通用户在没有密码的情况下杀死 visudo 中的某个根应用程序

我想允许普通用户杀死由 root 用户启动的某个应用程序。

在视觉上:

我添加了这样的一行:

normal_user ALL=(ALL) NOPASSWD: /usr/bin/kill $(ps aux | grep 'target_application' | awk '{print $2}')
Run Code Online (Sandbox Code Playgroud)

但是在保存并以normal_user身份执行以下命令后,我仍然收到输入root密码的提示:

sudo /usr/bin/kill $(ps aux | grep 'target_application' | awk '{print $2}')
Run Code Online (Sandbox Code Playgroud)

那我该怎么办?非常感谢!

linux kill

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

为什么 TokuDB 和 InnoDB 插入比 MyISAM 慢

我准备了以下SQL语句来比较MyISAM、InnoDB和TokuDB的性能行为(INSERT执行100000次):

MyISAM:

CREATE TABLE `testtable_myisam` (`id` bigint(20) NOT NULL AUTO_INCREMENT, `value1` INT DEFAULT NULL, `value2` INT DEFAULT NULL, PRIMARY KEY (`id`), KEY `index1` (`value1`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO `testtable_myisam` (`value1`, `value2`) VALUES (FLOOR(RAND() * 1000), FLOOR(RAND() * 1000)); 
Run Code Online (Sandbox Code Playgroud)

索引数据库:

CREATE TABLE `testtable_innodb` (`id` bigint(20) NOT NULL AUTO_INCREMENT, `value1` INT DEFAULT NULL, `value2` INT DEFAULT NULL, PRIMARY KEY (`id`), KEY `index1` (`value1`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `testtable_innodb` (`value1`, `value2`) VALUES (FLOOR(RAND() * 1000), FLOOR(RAND() * 1000));
Run Code Online (Sandbox Code Playgroud)

德库数据库:

CREATE TABLE …
Run Code Online (Sandbox Code Playgroud)

mysql myisam innodb mariadb tokudb

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

如何获得具有最佳SQL性能的最新值

我正在运行一个包含两列的表A:datetime和value.表A是一个巨大的数据库,里面有数千万个数据.

在我的SQL语句中(在mysql dialet中),我想

1)获取最新值(最新日期时间的值)

2)获取时间范围内的值

我目前的解决方案

1)

SELECT value
FROM A
WHERE datetime = (
    SELECT MAX(datetime)
    FROM A
    ORDER BY datetime
); 
Run Code Online (Sandbox Code Playgroud)

2)

SELECT value
FROM A
WHERE datetime IN (
    SELECT datetime
    FROM A
    WHERE datetime > start_time AND datetime < finish_time
); 
Run Code Online (Sandbox Code Playgroud)

但是,我怀疑这是一个优化的解决方案,因为内部的SELECT.

是否有更好的方法来实现更好的性能?

非常感谢!

mysql sql

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