小编Ant*_*oly的帖子

Java中静态块的必要性

我发现在Java中,有一个叫做的功能static block,它包括在第一次加载类时执行的代码(我不明白'加载'意味着什么,它是否意味着初始化?).是否有任何理由在静态块内而不是在构造函数中执行初始化位?我的意思是,即使构造函数做同样的事情,在第一次初始化类时也要做所有必要的事情.什么是静态块完成哪些构造函数不能?

java static initialization

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

在Universal Analytics中启用受众特征和兴趣报告

我想使用Universal Analytics跟踪代码启用受众特征和兴趣报告.

为我的网站生成的跟踪代码如下所示:

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-999999999-9', 'whatever.com');
  ga('send', 'pageview');

</script>
Run Code Online (Sandbox Code Playgroud)

展示广告客户功能下,有一个选项说:

受众特征和兴趣报告可提供年龄,性别和兴趣数据,以便您更好地了解访问者的身份.要查看此数据,您需要对跟踪代码进行少量更改.详细了解如何更改跟踪代码.

它链接到:https://support.google.com/analytics/answer/2444872?hl = en&utm_id = ad

这基本上告诉我要更换:

ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') 
   + '.google-analytics.com/ga.js';
Run Code Online (Sandbox Code Playgroud)

附:

ga.src = ('https:' == document.location.protocol ? 'https://' : 'http://')
  + 'stats.g.doubleclick.net/dc.js';
Run Code Online (Sandbox Code Playgroud)

但这似乎针对不同版本的Google Analytics(经典分析跟踪代码,我正在使用新的Universal Analytics)...

我应该更换:

})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
Run Code Online (Sandbox Code Playgroud)

什么东西?(例如)

})(window,document,'script','//stats.g.doubleclick.net/analytics.js','dc');
Run Code Online (Sandbox Code Playgroud)

此外,我是否真的需要启用广告客户功能才能跟踪访问者的年龄和性别?我目前无意使用AdSense.

google-analytics universal-analytics

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

对重载定义的模糊引用 - 一对二参数

给定以下具有重载版本的伴随对象apply:

object List {
  def apply[T](): List[T] = new Nil
  def apply[T](x1: T): List[T] = new Cons(x1, new Nil)
  def apply[T](x1: T, x2: T): List[T] = new Cons(x1, new Cons(x2, new Nil))
  def apply[T](elems: T*): List[T] = 
    elems.foldRight(List[T])((elem, l) => new Cons(elem, l))
}
Run Code Online (Sandbox Code Playgroud)

和两个实例

List(1) // Error - Ambiguity 
List('a', 'b') // Works fine
Run Code Online (Sandbox Code Playgroud)

scalac抱怨第一个实例化(对重载定义的模糊引用),因为单个参数和varargs方法都是同样具体的.

搜索stackoverflow我发现可以强制使用单个参数方法.List[Int](1)将使编译器使用def apply[T](x1: T).

我的问题是为什么第二个实例化def apply[T](x1: T, x2: T)没有额外的"提示" 匹配?换句话说,为什么两个参数方法比单个参数方法不是的varargs方法更 …

scala overloading variadic-functions

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

java.lang.Class无法强制转换为java.lang.reflect.ParameterizedType

我长期坚持这个问题.我曾经搜索过这个问题,但没有一个解决方案有效.

结构体:

public interface GenericDAO<T extends Serializable, ID extends Serializable>

@Repository
public class AbstractGenericDAO<T extends Serializable, ID extends Serializable> 
    implements GenericDAO<T, ID> {

   private Class<T> persistentClass;

   @Autowired
   private SessionFactory sessionFactory;

   static Logger LOGGER = Logger.getLogger(AbstractGenericDAO.class);


   @SuppressWarnings("unchecked")
   public AbstractGenericDAO() {
       this.persistentClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
   }

   /**
    * @param entity
    * @return T
    * @throws DBException
    */
   @SuppressWarnings("unchecked")
   public T saveEntity(T entity) throws DBException {
       return saveEntity(entity, false);
   }

   /**
    * @param entity
    * @param explicitFlush
    * @return T
    * @throws …
Run Code Online (Sandbox Code Playgroud)

java spring

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

因缺少系统属性而抛出正确的异常

说我有一个系统属性MY_PROP:

java -DMY_PROP="My value"
Run Code Online (Sandbox Code Playgroud)

此属性是我的系统工作所必需的.

如果未设置此属性,则抛出的正确异常是什么?

@PostConstruct
private void init() {

    myProp = System.getProperty("MY_PROP");
    if (myProp == null) {
        throw new ????
    }
    // ...   
}
Run Code Online (Sandbox Code Playgroud)

不知何故IllegalArgumentException感觉不对.也许IllegalStateException,MissingResourceException,TypeNotPresentException?这种情况的标准做法是什么?

java

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

延迟加载的单例:双重检查锁定与初始化按需持有者习惯用法

我需要在并发环境中延迟加载资源.加载资源的代码只能执行一次.

这两个双重检查锁定(使用JRE 5+和volatile关键字)和初始化按需持有者成语似乎适合这个职业.

仅仅通过查看代码,按需初始化持有者习惯看起来更干净,更有效(但是嘿,我猜这里).不过,我必须小心并记录我的每一个单身人士的模式.至少在我看来,很难理解为什么代码会在现场写出来......

我的问题是:哪种方法更好?为什么?如果你的答案是否定的.您将如何在Java SE环境中解决此要求?

备择方案

我可以使用CDI而不强制它在整个项目中使用吗?那里有文章吗?

java concurrency singleton design-patterns lazy-loading

9
推荐指数
4
解决办法
5648
查看次数

CORS:Facebook是否为其所有图片启用了CORS?

我已经阅读过Facebook已经为Profile Pictures交叉启用的地方.我不确定专辑和其他内容,但实际上Facebook Access-Control-Allow-Origin: *在我测试过的每个网址上都包含了标题 .

我已经尝试过标准的个人资料图片网址

https://graph.facebook.com/PROFILE_ID/picture?width=25&height=25 
Run Code Online (Sandbox Code Playgroud)

以及Akamai的网址:

https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-ash3/... 
Run Code Online (Sandbox Code Playgroud)

(后者归还https://graph.facebook.com/PROFILE_ID/photos)


我的应用程序基本上是这样做的:

var img = new Image;
img.src = "https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-ash3/...";
img.crossOrigin = "Anonymous";

img.onload = function() {
  ctx.drawImage(img, x, y);
}

// Above code will be repeated several times
// And mixed with code that manipulates ctx 

// Finally generetes data 
var generatedImage = canvas.toDataURL();
// And post if back to Facebook
Run Code Online (Sandbox Code Playgroud)

我的代码似乎一切正常(在所有主流浏览器上都经过测试),但是有很多用户在将画布内容上传回Facebook时报告间歇性错误.不幸的是,我还不能让精通技术的用户报告具有正确错误描述的内容.现在我无法重现问题(甚至不知道问题是什么).

到目前为止,我所知道的是,通过编写服务器端代理来为Facebook图像提供服务,好像它们是本地的,这些错误显然已经消失了,所以,在我开始挖掘奇怪的跨浏览器问题,神秘的错误消息之前,它让我感到疑惑.作为OAuthException: An unknown error has occurred.,受污染的卡瓦斯等,我首先要回到基础:

是否为通过Graph API公开的每张图片启用了CORS?(官方文档或可靠来源的链接会很好).

html5 canvas cors facebook-graph-api

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

Jetty 8 + EJB 3.1 + JTA + CDI + JPA 2堆栈?

任何人都可以告诉我,目前是否可以通过Jetty"粘合"部分Java EE 6 Web配置文件?我发现了很多关于将独立EJB 3容器,JTA提供程序等与旧Jetty版本集成的文章,所以如果我可以将它们全部一起工作,我就会更加努力.我想组装一个Servlet 3.0 + CDI + EJB 3.1 + JTA(如果需要,我真正想要的是声明式事务管理)+ Jetty 8上的JPA 2环境(如果没有可用的Jetty替代品,则为Tomcat 7).我的问题是:可以做到吗?有人设法做到了吗?有关将OpenEJB,Atomikos,Weld,EclipseLink和Jetty(或任何其他类似的堆栈)协同工作的任何文章?有没有神奇的"全部"pom.xml文件?

PS:是的,我知道我可以使用GlassFish(我非常喜欢).我只是想知道使用Servlet容器做类似工作有多难,以及两个环境在复杂性,性能,大小,部署速度,硬件资源消耗等方面的比较.

java jetty openejb java-ee-6 ejb-3.1

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

Maven目标/插件来触摸文件

嗨,我正在寻找一种使用maven触摸文件的方法.用于此的特定用户案例是触及".reload"文件以强制Glassfish重新部署应用程序.

java file glassfish reload maven

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

Docker健康检查命令。我们真的需要|| 1号出口?

当 HEALTHCHECK 失败时,Docker 容器会发生什么,已经有一个类似的问题,但次要问题|| exit 1并不是问题的主要焦点(并且还没有直接回答)。

Dockerfile参考包含以下示例:

HEALTHCHECK
 --interval=5m --timeout=3s \
  CMD curl -f http://localhost/ || exit 1
Run Code Online (Sandbox Code Playgroud)

|| exit 1我在互联网上看到过其他几个健康检查说明的例子。即使原始命令仅有的两个可能的退出代码是 0 和 1。

有什么意义|| exit 1

不会curl -f自行退出并出现错误代码 22?Docker 是否无法识别 1 以外的错误代码?

docker

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