小编Mic*_*cho的帖子

Spring REST Hibernate应用程序设计

环境 :

Spring 4 REST

Spring MVC

过冬

问题 :

我们正在开发一个低于堆栈的应用程序.

在此输入图像描述

Spring REST Web服务将为客户端公开API,它将在UI(ASP .NET)上显示它.响应以JSON格式发送.

考虑以下情况:

客户端调用REST api以获取具有ID的用户.dao层提取用户实体并将被提交给客户端.

以下场景的问题/观察:

  1. 由于用户可以使用与Hibernate映射相关的其他实体(例如userRoles使用oneToMany),因此还需要获取这些实体,否则抛出LazyInitialization异常,因为UI尝试通过User对象访问这些集合.

  2. 并非响应中需要User对象中的所有属性(例如:某些请求不需要用户拥有的角色).

考虑到上面的图片,通过Spring REST向客户端发送User对象(或响应)的最佳设计方法是什么?

  1. 创建一个模拟实体对象的中间对象层(如DTO).根据要求在服务层中填充此DTO.由于服务层在交易中运行,因此将解决第1号问题.但这需要在实体和DTO之间进行额外的复制

  2. 在Hibernate实体/查询级别处理问题编号1/2(连接获取查询或修改映射)并通过注释排除响应中不需要的属性,如:@JsonIgnore.但是这种方法不灵活,需要非常仔细地设计实体类

任何人都可以对此发表评论吗?还有更好的选择吗?

java rest spring hibernate spring-mvc

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

如何在4B/5B编码方案中编码0000到11110

4B/5B编码

4B/5B ecoding

从编码的4B/5B编码方案数据0000到11110码字,类似地,0001被编码为01001等.

这里,两个码字之间的XOR运算结果将是另一个有效的码字.

例如,11110和01001的XOR是另一个码字10111,其数据字是1011.这里我没有问题.

同样,为了避免直流分量,使用NRZ-I线路编码方案.结果,输出码字中没有三个连续的零.代码字中没有一个标题和两个尾随零.我们不担心NRZ-I编码方案中的一个数量.

但是,如何编码0000到11110或0001到01001以及我应该为这种编码方案应用哪种算法.

我也搜索谷歌和学习书籍.但到处都是他们只讲同一件事,但我没有得到答案.

提前致谢

networking encoding error-detection

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

'你必须启用Javascript才能正确查看此页'错误闪亮(R)

我试图在闪亮的情况下使用rgl情节,但不知何故它抛出错误:

'您必须启用Javascript才能正确查看此页面'.

Javascript已启用.我在R中使用' shinyRGL '库来显示其输出,但是失败了.

请帮忙!

r rgl shiny

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

Android通过socket发送大文件

目前我正在尝试为我的Android设备创建一个小套接字应用程序.

我想通过套接字连接将大文件(~500MB)发送到我的笔记本电脑/ PC或其他任何东西.我在我的Android设备上使用套接字客户端连接到我的PC上的套接字服务器但是,当我尝试发送测试字段(~460MB)时,我的应用程序崩溃了,它说:

"抛出OutOfMemoryError"无法分配441616290字节分配4194304空闲字节和90MB直到OOM""

我想我的客户端无法处理这个文件大小.所以我的问题是:有没有办法用TCP套接字连接处理这些大文件?我的代码可以很好地处理小文件(例如5MB),但是文件更大会失败.

这是我到目前为止:

客户端在我的Android设备上运行:

private class Connecting extends AsyncTask<String, Integer, String>
{
    @Override
    protected String doInBackground(String... serverAdd) 
    {
        String filePath = "Path to file";

        File sdFile = new File(filePath);

        try {

            client = new Socket("ip", "port");

            outputStream = client.getOutputStream();                
            byte[] buffer = new byte[1024];
            FileInputStream in = new FileInputStream(sdFile);
            int rBytes;
            while((rBytes = in.read(buffer, 0, 1024)) != -1)
            {
              outputStream.write(buffer, 0, rBytes);
            }

            outputStream.flush();
            outputStream.close();
            client.close(); 


        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) { …
Run Code Online (Sandbox Code Playgroud)

sockets android tcp

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

如何使CombinedChart在MPAndroidChart上有两个不同的比例?

我有一个CombinedChart,我希望LineChart将左轴作为参考,BarChart并将右轴作为参考,但我无法得到它.

我正在尝试以下代码:

barDataSet.setAxisDependency(YAxis.AxisDependency.RIGHT);
lineDataSet.setAxisDependency(YAxis.AxisDependency.LEFT);
Run Code Online (Sandbox Code Playgroud)

但现在两个图表(LineChartBarChart)都在左边(混合它们,右轴已经消失).

左右轴具有不同的粒度.

如何才能正确地将每个图表作为一个不同的Y轴(分别为左或右)作为参考?

提前致谢!

android mpandroidchart

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

Hibernate Criteria查询集合包含某些元素

我有一些问题Criteria.我有一个Job包含一组的类Skills.

当我想要过滤包含2种技能的作业时,问题就出现了,例如,包含id为1和3的技能的所有作业.

现在我有这个:

for (Skill skill : job.getSkills()) {
    ids.add(skill.getId());
}

criteria.createAlias("skills", "skill");
criteria.add(Restrictions.in("skill.id", ids));
Run Code Online (Sandbox Code Playgroud)

但它给了我包含1或3技能的工作,而不仅仅是那些兼具技能的人.我怎样才能做到这一点?

更新:

criteria.createAlias("Job.skills", "skill");    
Conjunction and = Restrictions.conjunction();   

for (Skill skill : job.getSkills()) {
    and.add(Restrictions.eq("skill.id", skill.getId()));
}
criteria.add(and);
Run Code Online (Sandbox Code Playgroud)

我试过这个,但是sql and (skill1_.ID=? and skill1_.ID=?)没有结果

java spring criteria-api

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

Angular2 中出现“nativeElement.querySelector 不是函数”异常

我正在尝试访问 Angular2 中的 div,如下所示:

import { Component, ViewChild, ElementRef, AfterContentInit } from '@angular/core';

@Component({
    selector: 'main',
    template: `
    <div  #target class="parent">
        <div class="child">
        </div>
    </div>
  `
})

export class MainComponent implements AfterContentInit {
    @ViewChild('target') elementRef: ElementRef;

    ngAfterContentInit(): void {
        var child = this.elementRef.nativeElement.querySelector('div');
        console.log(child);
    }
}
Run Code Online (Sandbox Code Playgroud)

但我得到以下异常:

异常:调用节点模块失败并出现错误:TypeError:this.elementRef.nativeElement.querySelector 不是函数

viewchild angular-universal angular

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

更新到Android Studio 2.3之后,构建gradle无法构建

错误:无法打开zip文件.

Gradle的依赖性缓存可能已损坏(这有时会在网络连接超时后发生.)

<a href="syncProject">Re-download dependencies and sync project (requires network)</a>
<a href="syncProject">Re-download dependencies and sync project (requires network)</a>
Run Code Online (Sandbox Code Playgroud)

这发生在昨天.我无法运行任何旧项目,虽然我有良好的互联网连接,但我无法下载此依赖项.

android

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

Scala 将 IndexedSeq[AnyVal] 转换为 Array[Int]

我正在尝试使用 Scala解决 Codility 的GenomicRangeQuery,为此我编写了以下函数:

def solution(s: String, p: Array[Int], q: Array[Int]): Array[Int] = {
  for (i <- p.indices) yield {
    val gen = s.substring(p(i), q(i) + 1)
    if (gen.contains('A')) 1
    else if (gen.contains('C')) 2
    else if (gen.contains('G')) 3
    else if (gen.contains('T')) 4
  }
}
Run Code Online (Sandbox Code Playgroud)

我没有做过很多测试,但它似乎解决了问题。

我的问题是 for comprehension 返回 an scala.collection.immutable.IndexedSeq[AnyVal],而函数必须返回 an Array[Int],因此它抛出 a type mismatch error

有什么方法可以让 for comprehension 返回一个 Array[Int] 或将 theIndexedSeq[AnyVal]转换为一个Array[Int]

arrays scala

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

reduceByKey是什么意思(_ ++ _)

最近我有一个场景将数据存储在keyValue对中并遇到了一个函数reduceByKey(_ ++ _).这更像是速记语法.我无法理解这实际意味着什么.

例如:reduceBykey(_ + _) 意思是reduceByKey((a,b)=>(a+b))

所以reduceByKey(_ ++ _)意味着??

我能够使用数据创建Key value对reduceByKey(_ ++ _).

val y = sc.textFile("file:///root/My_Spark_learning/reduced.txt")

y.map(value=>value.split(","))
  .map(value=>(value(0),value(1),value(2)))
  .collect
  .foreach(println)

(1,2,3)
(1,3,4)
(4,5,6)
(7,8,9)

y.map(value=>value.split(","))
  .map(value=>(value(0),Seq(value(1),value(2))))
  .reduceByKey(_ ++ _)
  .collect
  .foreach(println)

(1,List(2, 3, 3, 4))
(4,List(5, 6))
(7,List(8, 9))
Run Code Online (Sandbox Code Playgroud)

scala apache-spark

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