小编mik*_*ail的帖子

在代码中从maven pom.xml中检索版本

在代码中从maven的pom.xml中检索版本号的最简单方法是什么,即以编程方式?

java maven-2 version

236
推荐指数
10
解决办法
15万
查看次数

没有id的JPA实体

我有一个具有以下结构的数据库:

CREATE TABLE entity (
    id SERIAL,
    name VARCHAR(255),
    PRIMARY KEY (id)
);

CREATE TABLE entity_property (
    entity_id SERIAL,
    name VARCHAR(255),
    value TEXT
);
Run Code Online (Sandbox Code Playgroud)

当我尝试创建一个EntityProperty类时

@Entity
@Table(name="entity_property")
public class EntityProperty {

    private String name;
    private String value;

    @Column(name="name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    @Column(name="value", nullable=true, length=255)
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到以下异常:

org.hibernate.AnnotationException: No identifier specified for …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa

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

JVM进程如何分配内存?

我在理解JVM进程如何分配自己的内存方面有一点差距.我所知道的

RSS = Heap size + MetaSpace + OffHeap size
Run Code Online (Sandbox Code Playgroud)

其中OffHeap由线程堆栈,直接缓冲区,映射文件(库和jar)和JVM代码本身组成;

目前我正在尝试分析我的Java应用程序(Spring Boot + Infinispan),其中RSS为779M(它在docker容器中运行,因此pid 1可以):

[ root@daf5a5ae9bb7:/data ]$ ps -o rss,vsz,sz 1
RSS    VSZ    SZ
798324 6242160 1560540
Run Code Online (Sandbox Code Playgroud)

据称jvisualvm,承诺堆大小为374M 在此输入图像描述

Metasapce大小为89M
在此输入图像描述

换句话说,我想解释799M - (374M + 89M)= 316M的OffHeap内存.

我的应用程序(平均)有36个活动主题. 在此输入图像描述

每个线程消耗1M:

[ root@fac6d0dfbbb4:/data ]$ java -XX:+PrintFlagsFinal -version |grep ThreadStackSize    
intx CompilerThreadStackSize                   = 0
intx ThreadStackSize                           = 1024
intx VMThreadStackSize                         = 1024
Run Code Online (Sandbox Code Playgroud)

所以,在这里我们可以添加36M.

应用程序使用DirectBuffer的唯一地方是NIO.据我所知,从JMX可以看出,它不会消耗大量资源 - 只有98K 在此输入图像描述

最后一步是映射libs和jar.但根据pmap(完整输出 …

java linux jvm memory-leaks spring-boot

12
推荐指数
1
解决办法
1840
查看次数

VideoView对HLS来说太早触发OnPreparedListener

我想在等待VideoView开始播放HLS时向用户显示一些ProgressDialog.我尝试使用OnPreparedListener,但他早期触发(播放器下载m3u8文件后,而不是视频启动时).

VideoView player = (VideoView) findViewById(R.id.player);
String httpLiveUrl = "http://example.com/playlist.m3u8";

player.setVideoURI(Uri.parse(httpLiveUrl));
player.setMediaController(new MediaController(this));
player.requestFocus();

player.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
    progress.dismiss();
}
});

progress.show();
player.start();
Run Code Online (Sandbox Code Playgroud)

我没有找到另一个合适的列表...可能有人知道sloution?

android http-live-streaming

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

使用延迟初始化属性分离JPA对象

有两个JPA实体:具有一对多关系的用户和订单.

/**
 * User DTO
 */
@Entity
@Table(name="user")
public class User implements Serializable {
    private static final long serialVersionUID = 8372128484215085291L;

    private Long id;
    private Set<Order> orders;

    public User() {}

    @Id @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="sequenceUser")
    public Long getId() {
        return this.id;
    }
    private void setId(Long id) {
        this.id = id;
    }

    @OneToMany(mappedBy="user", cascade=CascadeType.PERSIST, fetch=FetchType.LAZY)
    @LazyCollection(LazyCollectionOption.EXTRA)
    public Set<Order> getOrders() {
        return orders;
    }
    public void setOrders(Set<Order> orders) {
        this.orders = orders;
    }
 }


/**
 * Order DTO
 */
@Entity
@Table(name="order")
public class Order …
Run Code Online (Sandbox Code Playgroud)

orm hibernate jpa transactions lazy-loading

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

如何使用 Java 流计算两个聚合函数?

我有一个像这样的“请求”对象(ID、数量、价格)列表

List<Request> requests = Arrays.asList(
        new Request(id++, 20, 59.28),
        new Request(id++, 10, 61.23),
        new Request(id++, 30, 60.67),
        new Request(id++, 25, 60.16),
        new Request(id++, 60, 59.67));
Run Code Online (Sandbox Code Playgroud)

我想在一次迭代中计算两个指标 - sum(amount) 和 sum(amount * price)。我需要他们来计算平均价格:sum(amount * price) / sum(amount)。

考虑到我想使用 Java 8 流,我发现的唯一变体是将值映射到 Pair 对象并实现自定义使用者:

static class Aggregate implements Consumer<Pair<Double, Double>> {
    private double count = 0L;
    private double sum = 0L;

    public double average() {
        return count > 0 ? sum/(double) count : 0;
    }

    public void combine(Aggregate other) {
        count += …
Run Code Online (Sandbox Code Playgroud)

java stream aggregate-functions

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

无法在我的Android应用中播放mp4视频

我非常想在我的Android应用程序中播放mp4视频.我甚至为它编写了一些代码:

String sourceUrl = "http://tvstream.cn.ru/storage/1kanal/20120530/"
       + "1kanal-20120530-01-14-00-20120530-03-16-00.mp4";

final VideoView videoView = (VideoView) findViewById(R.id.videoView);
getWindow().setFormat(PixelFormat.TRANSLUCENT);

final MediaController mediaController = new MediaController(this);
mediaController.setMediaPlayer(videoView);
videoView.setMediaController(mediaController);
videoView.setVideoURI(Uri.parse(sourceUrl));

videoView.setOnPreparedListener(new OnPreparedListener() {

    public void onPrepared(MediaPlayer mp) {
        videoView.requestFocus();
        videoView.start();
        mediaController.show();
    }
});
Run Code Online (Sandbox Code Playgroud)

但没有任何作用:(当我在模拟器(Android 2.3.3)中启动我的应用程序时,我有一些奇怪的堆栈跟踪与一些常见的错误代码:

在谷歌搜索和实验几个小时后,我决定尝试在真实设备上启动我的应用程序并观看logcat:

D/test.tv.activity.PlayerActivity( 3428): Player source: http://tvstream.cn.ru/storage/1kanal/20120530/1kanal-20120530-01-14-00-20120530-03-16-00.mp4
D/VideoView( 3428): onMeasure()
I/VideoView( 3428):     Setting size: 320x430
I/Launcher(  260): onWindowFocusChanged(false)
D/Launcher(  260): setWallpaperDimension() called
D/Launcher(  260): USE_NON_SCROLLABLE_IMAGE_WALLPAPER is true
I/ActivityManager(  163): Start proc org.reactivephone for broadcast org.reactivephone/ru.yandex.common.clid.ClidBroadcastReceiver: pid=3448 uid=10073 gids={1015, 3003}
I/ActivityManager(  163): No longer …
Run Code Online (Sandbox Code Playgroud)

android android-mediaplayer

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

将Web应用程序上下文添加到Jetty

我想创建在Jetty下运行的简单的Spring MVC"Hello world"应用程序(这是应用程序的一部分).

我的申请结构是:

|-WEB-INF
| |-view
| |-layout
| |-index.jsp
| |-web.xml
|
|-jetty.xml
|-application-context.xml
Run Code Online (Sandbox Code Playgroud)

我尝试创建Jetty服务器并基于web.xml文件添加Web应用程序上下文:

Resource jettyConfig = Resource.newSystemResource("jetty.xml");
XmlConfiguration configuration = new XmlConfiguration(jettyConfig.getInputStream());
Server server = (Server)configuration.configure();

WebAppContext wac = new WebAppContext();
wac.setDescriptor("WEB-INF/web.xml");
wac.setContextPath("/");
wac.setParentLoaderPriority(true);
server.setHandler(wac);

server.start();
Run Code Online (Sandbox Code Playgroud)

服务器启动正常,但没有我的上下文:没有关于弹簧启动日志的信息,spring mvc控制器不可用.有什么想法我做错了吗?

jetty.xml的内容:

  <Configure id="server" class="org.mortbay.jetty.Server">
      <Call name="addConnector">
          <Arg>
              <New class="org.mortbay.jetty.nio.SelectChannelConnector">
                  <Set name="port">9080</Set> 
              </New>
          </Arg>
      </Call>
      <Set name="handler">
          <New class="org.mortbay.jetty.handler.HandlerList">
              <Set name="handlers">
                  <Array type="org.mortbay.jetty.Handler">
                      <Item>
                          <New class="org.mortbay.jetty.handler.DefaultHandler" /> 
                      </Item>
                      <Item>
                          <New class="org.mortbay.jetty.handler.ResourceHandler">
                              <Set name="resourceBase">.</Set> 
                          </New>
                      </Item>
                  </Array>
              </Set>
          </New>
      </Set> …
Run Code Online (Sandbox Code Playgroud)

java spring-mvc

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

使用CXF,Jetty和Spring的Web服务

我尝试使用CXF,Jetty和Spring创建简单的Web服务.我创建服务接口

@WebService
public interface AnonymousService {

    @WebMethod
    public String getVersion();
}
Run Code Online (Sandbox Code Playgroud)

及其实施

@Service("anonymousService")
@WebService(
    serviceName = "AnonymousService",
    targetNamespace = "http://ws.test/",
    endpointInterface = "test.ws.AnonymousService"
)
public class AnonymousServiceImpl {
    public String getVersion() {
        return "Version";
    }
}
Run Code Online (Sandbox Code Playgroud)

下一步我添加到Spring上下文配置文件端点声明

<jaxws:endpoint id="anonymousServiceEndpoint"
    implementor="#anonymousService" address="/anonymous" />
Run Code Online (Sandbox Code Playgroud)

并配置Jetty bean

<bean id="server" class="org.mortbay.jetty.Server" destroy-method="stop">
    <property name="connectors">
    <list>
            <bean id="connector" class="org.mortbay.jetty.nio.SelectChannelConnector">
                <property name="port" value="${server.port}" />
            </bean>
        </list>
    </property>

    <property name="handlers">
        <list>
            <ref bean="workflowContext" />
        </list>
    </property>
 </bean>

<bean name="workflowContext" class="org.mortbay.jetty.servlet.Context">
    <property name="contextPath" value="/" />

        <property name="servletHandler">
            <bean …
Run Code Online (Sandbox Code Playgroud)

java spring cxf jetty

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

Java如何比较两个包装变量?

我有两个应该比较的变量:

Double a = 1D;
Double b = 2D;

if (a > b) {
    System.out.print("Ok");
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,java将使用自动装箱或比较两个对象的引用?

java autoboxing

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