小编ver*_*tti的帖子

Java的类型擦除有什么好处?

我今天读了一条推文说:

当Java用户抱怨类型擦除时,这很有趣,这是Java唯一正确的做法,而忽略了所有错误的东西.

因此我的问题是:

Java的类型擦除是否有好处?除了JVM实现偏向于向后兼容性和运行时性能之外,它(可能)提供的技术或编程风格有哪些优势?

java type-erasure

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

生成在Eclipse中返回self的setter

我想要我的定制者,以便我可以将它们链接起来:

myPojo.setX(x).setY(y);
Run Code Online (Sandbox Code Playgroud)

通常我使用Eclipse生成setter但不幸的是code template,setter允许我只更改setter的主体,而不是签名.

什么是最简单的方法来完成上述?除了搜索和替换+手动编辑?:)

java eclipse code-generation pojo

22
推荐指数
3
解决办法
5067
查看次数

片段着色器和着色纹理

我试图通过片段着色器调整纹理颜色.我的片段着色器非常简单:

uniform sampler2D sampler;

void main() {
  vec4 tex = texture2D ( sampler, uvVarying );
  gl_FragColor = vec4(tex.r, tex.g, tex.b, tex.a);
}
Run Code Online (Sandbox Code Playgroud)

这按照预期绘制了我的狗纹理: 正常的狗

如果我然后将着色器更改为

  gl_FragColor = vec4(tex.r, tex.g, tex.b, 1.0);
Run Code Online (Sandbox Code Playgroud)

结果是我的预期,透明度信息丢失:

没有透明度

但如果我把它设置为:

  gl_FragColor = vec4(tex.r, tex.g, tex.b, 0.0);
Run Code Online (Sandbox Code Playgroud)

我期待它完全消失,但我得到:

绿狗

到底是怎么回事??

对于我原来的问题:我想在我的纹理中添加一点红色:

  gl_FragColor = vec4(tex.r + 0.5, tex.g, tex.b, tex.a);
Run Code Online (Sandbox Code Playgroud)

现在,我希望它与原始纹理具有相同的透明度信息,但我得到了这个:

红色的狗

我在这里想念的是什么 纹理使用引擎的默认混合src = GL_ONE, dst = GL_ONE_MINUS_SRC_ALPHA.

opengl opengl-es glsl fragment-shader opengl-es-2.0

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

微服务和Spring Security OAuth2

我已经在另一个项目中运行了OAuth2授权服务器.现在我需要使用OAuth2来保护几个简单的spring-boot rest-servers.但是我发现Spring文档在分离授权和资源服务器时确实非常有限.

我还发现了几个问题,答案是"只要它们共享相同的tokenStore数据源,它们就可以是不同的盒子".这真的可以吗?这怎么可能对微服务有用?每个休息服务都需要实现它自己的OAuth授权服务器,这似乎是一件非常奇怪的事情.

那么如何为引用远程oauth授权服务器的spring-boot rest-endpoints设置Oauth2.0安全性(可能甚至不用Spring编写)?

这个名为RemoteTokenServices的东西似乎很有希望,但根本没有记录.

spring spring-security oauth-2.0

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

使用visualvm分析码头非常慢

我在Jetty上运行了一个wicket + spring + hibernate应用程序.当我使用VisualVM(jdk 1.7.0_9)启动CPU分析时,它首先使用控制台打印停顿几分钟:

Profiler Agent: 250 classes cached.
Profiler Agent: 250 classes cached.
Run Code Online (Sandbox Code Playgroud)

这些行重复约20次,然后VisualVM说它已经开始实验并且检测了大约8000种方法.

在此之后,我单击我的Web应用程序上的一个按钮,然后应用程序完全挂起几分钟,同时控制台打印出以下行:

Profiler Agent: Redefining 100 classes at idx 100, out of total 336 
Run Code Online (Sandbox Code Playgroud)

在此之后,我获得了分析结果,但它们相当无用,因为几乎99.6%的时间花费了

sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run()
Run Code Online (Sandbox Code Playgroud)

这使得VisualVM完全不可用.有人猜到这可能是罪魁祸首吗?

我正在运行Jetty 8.1.2.v20120308

profiling visualvm jetty

11
推荐指数
2
解决办法
8663
查看次数

带有Spring Security的Jetty addFilter,没有web.xml

通常我会添加这样org.springframework.web.filter.DelegatingFilterProxy的代码片段到web.xml:

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>
        org.springframework.web.filter.DelegatingFilterProxy
    </filter-class>
</filter>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping> 
Run Code Online (Sandbox Code Playgroud)

但是使用Servlet 3.0 Container和Jetty,我删除了web.xml.我正在尝试将DelegatingFilterProxy添加到Jetty的启动中:

context.addFilter(DelegatingFilterProxy.class, "/*", EnumSet.allOf(DispatcherType.class));
Run Code Online (Sandbox Code Playgroud)

但我得到错误:

No bean named 'org.springframework.web.filter.DelegatingFilterProxy-100555887' is defined
Run Code Online (Sandbox Code Playgroud)

我该如何创建和添加此过滤器?

jetty spring-security servlet-3.0 spring-3

11
推荐指数
1
解决办法
2617
查看次数

为什么Java标准库不实现toString方法?

Object.toString() JavaDoc说:

返回对象的字符串表示形式.通常,toString方法返回一个"文本表示"此对象的字符串.

尽管如此,许多标准的java类Collections(例如,集合,列表等)都可以使用非常有用的toString()方法,但是并不打算实现它.有这种愚蠢的原因吗?

或者嘿,你想要一个十六进制的字符串吗?:)

编辑:糟糕,这是我使用我的IDE失败.我按照界面而不是实现,这直接带给我一些理由Object.toString().

java

9
推荐指数
1
解决办法
574
查看次数

为什么Eclipse标记接口方法是公共抽象的?

当使用Eclipse的" Extract Interface "重构时,它将public abstract默认声明方法.为什么?public接口上的修饰符是完全冗余的,并且abstract在接口声明上似乎也没有意义.

java eclipse interface

9
推荐指数
1
解决办法
1205
查看次数

来自Maven Mojo的反思

我想使用Google Reflections从我的Maven插件中扫描已编译项目中的类.但默认情况下,插件不会看到项目的已编译类.从Maven 3文档我读到:

需要从项目的compile/runtime/test类路径加载类的插件需要与mojo注释@requiresDependencyResolution一起创建自定义URLClassLoader.

至少可以说这有点模糊.基本上我需要一个加载已编译项目类的类加载器的引用.我怎么做到的?

编辑:

好的,@Mojo注释有requiresDependencyResolution参数,所以这很容易,但仍然需要正确的方法来构建一个类加载器.

java classloader maven reflections

9
推荐指数
1
解决办法
1743
查看次数

类型在Scala中作为键的键

我的游戏有

class Enemy
Run Code Online (Sandbox Code Playgroud)

谁可以改变我的人工智能/功能

trait Moving
trait VerticalMover extends Moving
trait RandomMover extends Moving
Run Code Online (Sandbox Code Playgroud)

等等.现在我需要根据特征获取预加载的东西.我想要做的是有一个Map接受所有特征,这些特征扩展了Moving作为键,然后是一些EnemyContainer作为预先加载特征相关内容的值.

但是我如何定义这样的Map以及如何格式化我的.get()以通过某个Enemy的实例来获取容器.就像是:

val myEnemy = new Enemy with RandomMover 
val myDetails:EnemyContainer = enemyDetailsStore.get(myEnemy.getClass)
Run Code Online (Sandbox Code Playgroud)

types scala class map

8
推荐指数
2
解决办法
6454
查看次数