小编Boh*_*ian的帖子

不需要的通用参数

假设需要使用特定的通用接口,但这种情况不需要使用其中一个通用参数.

假设我需要一个Callable<T>(必须T从其call()方法返回一个),但在这种情况下我不需要返回结果,我只想提交一些代码ExecutorService来"做某事"

什么是该类型的最佳选择T

java generics coding-style

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

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

使用localhost而不是gmail发送邮件

所以,我正在尝试通过javamail和glassfish发送电子邮件:这是我的代码(我在这里找到它http://www.javasrilankansupport.com/2012/05/send-email-in-java-mail-api -using-gmail.html)

private Session m_Session;
private Message m_simpleMessage;
private InternetAddress m_fromAddress;
private InternetAddress m_toAddress;
private Properties m_properties;
@Override
public void sendMail(String mail) throws Exception {
    try {

        m_properties     = new Properties();
        m_properties.put("mail.smtp.host", "smtp.gmail.com");
        m_properties.put("mail.smtp.socketFactory.port", "465");
        m_properties.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
        m_properties.put("mail.smtp.auth", "true");
        m_properties.put("mail.smtp.port", "465");
        m_properties.put("mail.debug", "false");
        m_properties.put("mail.smtp.ssl.enable", "true");


        m_Session        =   Session.getDefaultInstance(m_properties,new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("user@gmail.com","password"); // username and the password
            }

        });

        m_simpleMessage  =   new MimeMessage(m_Session);

        m_fromAddress    =   new InternetAddress("user@gmail.com");
        m_toAddress      =   new InternetAddress(mail);


        m_simpleMessage.setFrom(m_fromAddress);
        m_simpleMessage.setRecipient(RecipientType.TO, m_toAddress); …
Run Code Online (Sandbox Code Playgroud)

java gmail smtp jakarta-mail glassfish-3

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

是否提取到Java优化所需的静态最终版本?

考虑这种方法:

private void iterate(List<Worker> workers) {
    SortedSet<Worker> set = new TreeSet<>(new Comparator<Worker>() {
        @Override
        public int compare(Worker w0, Worker w1) {
            return Double.compare(w0.average, w1.average);
        }
     });

     // ... 
}
Run Code Online (Sandbox Code Playgroud)

如您所见,该集正在创建一个TreeSet带有自定义比较器的新功能.

我想知道它是否与性能/内存/垃圾收集/任何观点有任何区别,如果我这样做而是污染了外层空间:

static final Comparator<Worker> COMPARATOR = new Comparator<Worker>() {
    @Override
    public int compare(Worker w0, Worker w1) {
        return Double.compare(w0.average, w1.average);
    }
};

private void iterate(List<Worker> workers) {
    SortedSet<Worker> set = new TreeSet<>(COMPARATOR);
    // ... 
}
Run Code Online (Sandbox Code Playgroud)

我问的原因是,我觉得编译器应该已经解决了这个并为我优化它,所以我不应该提取它,对吧?

对于在方法中声明的字符串或其他临时不可变对象,情况也是如此.

提取final变量会有什么不同吗?

注意:我知道这可能给性能提升带来的影响很小.问题是,是否存在任何差异,无论多么微不足道.

java performance compiler-optimization

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

在构造函数中调用私有方法是一个好的设计吗?

说我有以下课程:

public class FormContainer {

    @EJB
    private ExternalDao externalDao; // uses dependency Injection

    private final OrderForm orderForm;

    private final List<OrderFormContent> formContents;

    public FormContainer(OrderForm orderForm) {
        this.orderForm = orderForm
        initializeOrderForm();
    }

    private void initializeOrderForm() {
        formContents = externalDao.getFormContents(orderForm);
        // similar for any other properties
    }

    // getters & setters
}
Run Code Online (Sandbox Code Playgroud)

我正在使用这个类来保存我需要通过应用程序引用的所有字段.我仍在学习良好的设计和糟糕的设计实践,所以我想知道这个糟糕的设计是否初始化orderForm的属性.

如果是这样,怎么可以改进?

java constructor design-patterns initialization

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

使用 Django 的 post_save() 信号

我有两个表:

class Advertisement(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    author_email = models.EmailField()

class Verification(models.Model):
    advertisement = models.ForeignKeyField(Advertisement)
    key = models.CharField(max_length=32)
Run Code Online (Sandbox Code Playgroud)

我需要在添加新广告后自动填充验证表。

def gen_key(sender, instance, created, **kwargs):
    if created:
        from hashlib import md5
        vkey = md5("%s%s" % (instance.author_email, instance.created_at))
        ver = Verification(advertisement=instance)
        ver.key = vkey
        ver.save()

post_save.connect(gen_key, sender=Advertisement)
Run Code Online (Sandbox Code Playgroud)

当然是行不通的。Django 1.2 问:我应该怎么做?


好了,解决了一半。
问题是父模型的 post_save() 不调用子模型。
所以你可以通过直接提供子类来解决它。

class Advertisement(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    author_email = models.EmailField()

class Sale(Advertisement):
    rooms = models.IntegerField(max_length=1)
    subway = models.ForeignKey(Subway)

class Verification(models.Model):
    advertisement = models.ForeignKeyField(Advertisement)
    key = models.CharField(max_length=32)

def gen_key(sender, instance, created, …
Run Code Online (Sandbox Code Playgroud)

python django-signals

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

静态ConcurrentHashmap是否需要外部同步

静态ConcurrentHashmap是否需要使用同步块或锁进行外部同步?

java synchronization concurrenthashmap

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

通过其ID来序列化JAXB对象?

在我的数据模型中,我有一些这样的效果:

@Entity
public class Target {

    @Id 
    @GeneratedValue
    private Long id;

    /* ...etc... */
}

@Entity
public class Dependency {

    @Id
    @GeneratedValue
    private Long id;

    @ManyToOne(optional=false)
    @Column(name="target_id")
    private Target target;

    /* ...etc... */
}
Run Code Online (Sandbox Code Playgroud)

我已经序列化Target很好,但我需要序列化Dependency.基本上,我需要的是这样的事情:

<dependency>
    <id>100</id>
    <targetId>200</targetId>
</dependency>
Run Code Online (Sandbox Code Playgroud)

有没有办法在JAXB注释中执行此操作而不修改我的模型?

java xml hibernate jaxb

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

在一列中获取项目及其值的计数

考虑这些表:

Table Items:

ItemID    ItemName
------------------
 1          N1
 2          N2 
 3          N4
 4          N5
Run Code Online (Sandbox Code Playgroud)

在MyTbl表中,我有一个ItemID,可能是这样的:

ItemId
----
1
1
3
4
4
4
Run Code Online (Sandbox Code Playgroud)

我想写一个返回此结果的查询:

ItemId        count
-------------------
   1            2
   2            0
   3            1
   4            3
Run Code Online (Sandbox Code Playgroud)

如果没有游标我怎么能这样做?

sql sql-server-2008

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

用户名略有复杂的正则表达式

我需要帮助来为用户名构建正则表达式.

用户名分为三个部分.第一个字符,中间组,最后一个字符.

以下是我必须遵循的规则:

  • 第一个字符必须是小写字母,例如 (a-z)
  • 中间的字符组必须是4个或更多字符的字母和数字,例如 (a-zA-Z0-9)
  • 中间组必须至少包含一个字母和一个数字
  • 最后一个字符必须是数字 (0-9)

一些例子:

hTes38      (i.e. h Tes3 8)
j347k6      (i.e. j 347k 6)
atksde21D2  (i.e. a tksde21D 2)
Run Code Online (Sandbox Code Playgroud)

以下是我到目前为止的情况,几乎就是:

^[a-z][a-zA-Z0-9]\w{1,}[0-9]$
Run Code Online (Sandbox Code Playgroud)

但中间组不正确,我不知道如何强制执行'必须包含一个字母和一个数字'规则.

regex

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