小编for*_*rtm的帖子

在MySQL表上并发READ和WRITE

如果经常从前端写入表,并且同样的表也必须经常搜索.两者都是性能关键.

例如,可在其" 内容 "列上搜索具有全文索引的POST表?如果很少有用户在撰写帖子,则会转到同一个表,然后其他用户会在同一时间搜索关键字.

Will UPDATE/INSERT operation lock SELECT queries in above case ?
Run Code Online (Sandbox Code Playgroud)

数据库 - MySQL

mysql sql

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

放松Spring Data REST投影的安全性

我有一个User类,我想授权访问,只有用户才能看到他有权使用的内容.

使用Spring Security和Spring Data Rest可以很容易地实现这一点,我在下面的JPA Repository中做了 -

public interface UserRepository extends JPARepository<User,Integer> {

    @PreAuthorize("hasRole('LOGGED_IN') and principal.user.id == #id")
    User findOne(@Param("id") Integer id);

}
Run Code Online (Sandbox Code Playgroud)

通过这种方式,用户在访问Spring Data REST脚手架网址时会像 -

/users/{id}
/users/{id}/userPosts
Run Code Online (Sandbox Code Playgroud)

只有那些用{id}登录的人才能看到这些,其他人都得到了我想要的401.

我的问题是我有一个Projections,它是每个用户的公共视图,我正在使用Spring Data Rest投影进行创建,如下所示我希望每个{id}都可以访问

@Projection(name = "details", types = User.class)
public interface UserDetailsProjection {
..
}
Run Code Online (Sandbox Code Playgroud)

因此,即使用户登录,/users/{id1}?projection=details/users/{id2}?projection=details应该提供200 OK并显示数据{id1}

我开始通过使用@PreAuthorize("permitAll")标记投影来实现这一点,但由于存储库具有更难的安全检查,因此无法工作.我们是否可以将此功能用于预测,我们可以放松安全性?

我正在使用最新的Spring Data Rest和Spring Security发行版

spring spring-security spring-data spring-data-rest

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

jooq 和 java 8 流 SQL 生成

在我从在线材料中找到的以下 jooq 片段中,有一个从“jooq 到此结束”到“流开始”的过渡

这是否意味着 SQL 查询生成会在 fetch() 之前发生?后来在stream()开始之后,所有东西都在java进程内的内存中

或者像活动记录 DSL 这样的 java 8 流和整个片段是否转换为 SQL 查询,包括 stream() 部分?

这是因为我在许多在线示例中看到在流中执行 sortBy / groupingBy 的示例,而它们也可以在 SQL 中完成

DSL.using(c)
   .select(
       COLUMNS.TABLE_NAME,
       COLUMNS.COLUMN_NAME,
       COLUMNS.TYPE_NAME
   )
   .from(COLUMNS)
   .orderBy(
       COLUMNS.TABLE_CATALOG,
       COLUMNS.TABLE_SCHEMA,
       COLUMNS.TABLE_NAME,
       COLUMNS.ORDINAL_POSITION
   )
   .fetch()  // jOOQ ends here
   .stream() // Streams start here
   .collect(groupingBy(
       r -> r.getValue(COLUMNS.TABLE_NAME),
       LinkedHashMap::new,
       mapping(
           r -> new Column(
               r.getValue(COLUMNS.COLUMN_NAME),
               r.getValue(COLUMNS.TYPE_NAME)
           ),
           toList()
       )
   ))
   .forEach(
       (table, columns) -> {
            // Just emit a CREATE TABLE statement
            System.out.println( …
Run Code Online (Sandbox Code Playgroud)

java sql jooq java-8 java-stream

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

ttl 在 cassandra 创建墓碑

我只对 cassandra 进行插入。插入时,仅插入非空值以避免墓碑。但插入 TTL 的记录很少。但是然后从表中执行 select count(*) 会出现以下错误 -

读取 76 个活动行和 1324 个逻辑删除单元格以进行查询 SELECT * FROM xx.yy WHERE token(y) >= token(fc872571-1253-45a1-ada3-d6f5a96668e8) LIMIT 100 (请参阅 tombstone_warn_threshold)

TTL 插入会导致 cassandra 3.7 中的逻辑删除吗?如何减轻警告?

没有进行任何更新,仅进行插入,一些记录没有 TTL,其他记录有 TTL

cassandra cassandra-3.0

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

在存储库中有或没有显式声明的Spring Data Rest Projections

创建SDR投影然后有什么区别

(i)在相应的知识库中明确声明如下 -

@RepositoryRestResource(excerptProjection = UserSummaryProjection.class)
public interface UserRepository extends JpaRepository<User, Integer> { ..
}
Run Code Online (Sandbox Code Playgroud)

(ii)未明确定义存储库中的投影

我发现当在Repository中显式声明Projection时,无论findAll还是findByID被调用,都会为该实体显示该投影.

但是当它没有被声明时,那么有一个选项留给用户/不使用它们,所以默认显示所有字段.

一些例子 -

我还发现,当定义投影时,链接会消失.例如 - 有UserLanguage和RefLanguage,说有2个存储库UserLanguageRepository和ResfLanguageRepository,那么还有RefLangSummaryProjection

UserLanguage - > ManytoOne - > REfLanguage RefLanguage - > OneToMany - > UserLanguage

因此,转到URL/userLanguages或/ userLanguages/{id}显示RefLanguage的嵌入数据,其中字段来自RefLangSummaryProjection并且链接到RefLang已消失.这可能是预期但我不喜欢为REFLangSummaryProejction生成的查询仍然选择所有列

spring spring-data spring-data-rest

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

如何在Spring Data REST投影中有条件地公开数据?

有一个投影UserProjection,User表有字段 - enable_email布尔值.

@Projection(name = "summary", types = User.class)
public interface UserSummaryProjection {

    String getEmail();
}
Run Code Online (Sandbox Code Playgroud)

访问URL /app/users/{id}?projection=summary按预期显示电子邮件

  1. 如何总结投影配置为返回的电子邮件仅enable_emailtrue

  2. 该配置是否仅影响此预测或适用于User实体的所有预测?

spring spring-data spring-data-rest

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

yii2 listview 下一页而不更改 url

yii1 中缺少 Yii2 列表视图$.fn.yiilistview.update。更重要的是,它依赖于 pjax 来满足基本要求,因此会产生嵌套 pjax 、超时等各种问题,以便使用 listView 进行简单的分页。

对控制器的 GET 请求由 javascript 呈现为 HTML(从包含 listview html 的控制器返回的 json)。由于在这个过程中 URL 没有改变,我没有使用 pjax 来避免复杂性,而是进行了简单的 ajax 调用,并根据成功返回的数据更新容器。(就像 pjax 只手动使用 ajax 而不更改 url)

现在当我做下一页时,URL 会更新,页面也会完全刷新。最初它工作得不好,但是一旦我在控制器内的页面 GET 参数上添加了 IF 检查,而不是在 JSON 中返回 renderAjax 输出,现在将直接返回 HTML

我们如何避免在不使用 pjax 的情况下使用 yii2 listview 下一页更新 URL,并使其与控制器和 javascript 一起工作,以便在手动 ajax 调用中模拟 pjax,如上所述?

控制器 :

if($pageParam == null) {
    $page =  $this->renderAjax("_list", [
                        "dataProvider" => $dataProvider
             ]) ;

    Yii::$app->response->format = 'json';
    return array("error"=>false,"page"=>$page);
} else {
    return …
Run Code Online (Sandbox Code Playgroud)

yii2

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

使用java 8 streams api进行嵌套查找

我们如何使用java 8 streams api来获得预期的输出

A1有B1,B2
A2有B1,B2,B3

B1,B2属于C1
B3属于C2

因此,对于C1,计数应该是4作为B1,B2出现4次
同样,C2的计数将是1,因为B3出现1次

        List<String> A= new ArrayList<>();
        A.add("A1");
        A.add("A2");

        Map<String, List<String>> AMap = new HashMap<>();
        AMap.put("A1", Arrays.asList("B1", "B2"));
        AMap.put("A2", Arrays.asList("B1", "B2", "B3"));

        Map<String, String> BMap = new HashMap<>();
        CMap.put("B1", "C1");
        CMap.put("B2", "C1");
        CMap.put("B3", "C2");
Run Code Online (Sandbox Code Playgroud)

预期产出

        C1 : 4 , C2 : 1
Run Code Online (Sandbox Code Playgroud)

java-8 java-stream

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

用于嵌入资源分页的用例

有一个用例我正在努力与SDR如下 -

这是User Table和RefSecQuestion表

User -> ManyTOOne -> RefSecQuestion , RefSecQuestion -> OneToMany -> User
Run Code Online (Sandbox Code Playgroud)

这是User Table和UserFriends表

User -> OneToMany UserFriends , UserFriends -> ManyToOne -> User
Run Code Online (Sandbox Code Playgroud)

有一个要求,当我去/用户/ {ID}/userFriends,然后名字,姓氏等从UserProjection应该是默认的显示

因此,我在UserRepository中启用了excerptProjection,它运行正常.我希望这里有大约100个结果,如果这个结果没有分页,那就没问题.

但是,现在因为RefSecQuestion也与User有关,所以当我去/ refSecQuestions时 - >此页面挂起,因为它试图用UserProjection替换用户链接.对于大多数用户而言,RefSecQuestion表存在一个问题,因此由于分页丢失而导致页面中断.

因为我不能在这里选择单向性,因为两个网址都需要,即

/users/{id}/userFriends
/refSecQuestions/users  
Run Code Online (Sandbox Code Playgroud)

我发现最接近的答案是选择单向性,即我在RefSEcQuestion中为用户设置Rest Export为false

spring-data spring-data-rest

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

yii2 中的速率限制与使用 nginx 进行速率限制

通过 yii2 进行速率限制与使用 nginx 作为反向代理和速率限制器有什么区别?

参考:Yii2 速率限制 Api

nginx yii2

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