小编Ans*_*shu的帖子

Java中的静态块与初始化程序块?

可能重复:
静态初始化块

请考虑以下代码:

public class Test {
    {
        System.out.println("Empty block");
    }
    static {
        System.out.println("Static block");
    }
    public static void main(String[] args) {
        Test t = new Test();
    }
}
Run Code Online (Sandbox Code Playgroud)

我们知道首先执行静态块,然后执行块.但问题是我从来没有能够理解块的实际效用.任何人都可以展示一个真实的例子 -

  • 无论静态正在使用的块
  • 无论静态块具有不同的事业

java static-block initialization-block

79
推荐指数
2
解决办法
7万
查看次数

嵌套类中私有构造函数的范围

这不仅仅是一个难题而不是问题.我有以下代码:

public class PrivateBaseConstructor {
    public static class BaseClass {
        private BaseClass() {
        }

    }

    public static class DerivedClass extends BaseClass {
        public DerivedClass() {
            super(); // 1*
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这里对super();1*的调用是允许的事件,尽管基类构造函数是private.如果我们将类作为单独的类编写在同一个包中:

BClass.java
public class BClass {
    private BClass() {

    }
}

DClass.java
public class DClass extends BClass {
    public DClass() {
        super(); // 2*
    }
Run Code Online (Sandbox Code Playgroud)

由于基类构造函数不可见,编译器正确地在2*处给出错误.

当两个类在一个类中声明为静态时,为什么编译器不会在我的第一个场景中抛出错误?

java inheritance constructor superclass

25
推荐指数
1
解决办法
8176
查看次数

减少 Java 中的内存消耗

我曾参与过一些项目,其中实现更好的性能和减少内存消耗是主要目标。但是相信我,在 Java 中控制内存消耗已经很困难了。

这个wiki 页面上说“ Java 程序速度,在某些情况下,Java 在低级和数字基准测试中等同于 C++。

这些统计数据并没有真正显示时间计算性能基准的主要差异。但是,Java 中的内存使用量比 C++ 高得多,因为每个对象有 8 字节的开销,Java 中每个数组有 12 字节的开销(32 位;64 位 java 中的两倍),如中所述以上维基链接。

现在的问题是人们采取了哪些措施来最小化 Java 中的内存使用率?

请注意,我更关心内存而不是性能,因为我想不出比“编写更好的程序”和“在 JDK 中正确调整内存”更好的方法

java memory performance

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

javascript比较危机

我遇到了以下情况,无法理解原因,有人可以解释一下吗?

var foo = [0];
console.log(foo == !foo); // true 
console.log(foo == foo);  // true
Run Code Online (Sandbox Code Playgroud)

javascript comparison

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

从Optional列表中流式传输

我在下面有一个简单的例子

static class Town  {
    School school;
}

static class School {
    List<Subject> subjects;
}

static class Subject{
    String name;
}
Run Code Online (Sandbox Code Playgroud)

我想实现一个返回给定城镇的主题名称的方法,该城镇也可以为空

    List<String> getSubjectNames(Town town) {
    return Optional.ofNullable(town)
            .map(town1 -> town1.school)
            .map(school -> school.subjects.stream())
            .flatMap(subjects -> )
            ...
     }
Run Code Online (Sandbox Code Playgroud)

如何正确地将主流转换为主题以进行地图操作.任何指针将不胜感激.

java lambda java-8 java-stream

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

使用spring + JPA处理乐观锁定中的LockModeType

我已经搜索了stackoverflow中的帖子,我希望这不是重复.

我第一次尝试使用乐观锁定,我能够使用Spring管理的LockModeType,但无法自己定义LockMode

以下是代码示例:

我正在使用以下方法注入持久化上下文:

@PersistenceContext
private EntityManager entityManager;
Run Code Online (Sandbox Code Playgroud)

第一种方法:使用注释交易

@Transactional
    public void updateUserProfile(UserProfile userProfile) {
        entityManager.lock(userProfile, LockModeType.OPTIMISTIC); // 1*
        entityManager.merge(userProfile);
    }
Run Code Online (Sandbox Code Playgroud)

例外1: java.lang.IllegalArgumentException: entity not in the persistence context

第二种方法:管理交易

public void updateUserProfile(UserProfile userProfile) {
        entityManager.getTransaction().begin(); // 2*
        entityManager.lock(userProfile, LockModeType.OPTIMISTIC); 
        entityManager.merge(userProfile);
        entityManager.getTransaction().commit();
    }
Run Code Online (Sandbox Code Playgroud)

2的例外情况: Not allowed to create transaction on shared EntityManager - use Spring transactions or EJB CMT instead

第三种方法:由于我使用共享的entityManager获得了异常,我还尝试从entityManagerFactory创建EntityManager.

@Transactional
public void updateUserProfile(UserProfile userProfile) {
        EntityManager em = entityManager.getEntityManagerFactory().createEntityManager();
        em.getTransaction().begin();
        em.lock(userProfile, LockModeType.OPTIMISTIC);  // 3*
        em.merge(userProfile);
        em.getTransaction().commit();
    }
Run Code Online (Sandbox Code Playgroud)

3点的例外情况: …

java spring jpa transactions

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

javascript编号属性语法

可能重复:
为什么我不能使用单个点访问整数的属性?

我正在阅读一篇文章,并遇到了javascript toFixed方法的奇怪行为.我不明白最后一句话的原因.有人可以解释一下吗?

(42).toFixed(2);//"42.00" 好的

42.toFixed(2); // SyntaxError:标识符在数字文字后立即开始

42..toFixed(2);//"42.00" 这真的很奇怪

javascript syntax numbers

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