小编Ray*_*uin的帖子

我的Java power方法的效率如何?

所以我参加了面试,他们让我在白板上写了一个快速的数学方法,这就是我在那里写的

public static double pow(double base, double power) {
    double result = 1.0;
    for(double x = 0; x < power; x++) {
        result = result * base;
    }

    return result;
}
Run Code Online (Sandbox Code Playgroud)

这很有效,他们对此感到满意,但后来又开始问我如何才能让它更有效率,而且我没有回应.所以我的问题是,你能比这更有效率,还是只是一个让我流汗的问题?我认为可能有一些直接的位移解决方案,但我不确定,我认为这只适用于2的幂?有任何想法吗?

*编辑 对不起,我忘了提到方法签名是给我的(双打作为输入),我被告知我不能使用任何内置的数学库.

java math performance

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

iCal 文件不会将 VALARM 警报作为 Internet 日历导入 Outlook

如果我下载生成的 ICS 文件并将其作为文件导入 Outlook(本质上只是创建快照),则我设置的 VALARM 可以正常工作。

我想要的是一个与服务器同步的 ical feed。因此,当我使用 ICS 文件 URL 创建 Internet 日历(添加/打开日历 -> 从 Internet)时,所有事件均已正确创建并同步工作,但 VALARM 被忽略且未设置

BEGIN:VCALENDAR
VERSION:2.0
PRODID:Appointment Calendar
METHOD:PUBLISH
SOURCE:ICAL-URL
X-WR-CALNAME:Appointments
X-WR-CALDESC:Calendar
BEGIN:VEVENT
UID:84fbfa16-ab3a-4313-b98b-638da09a8a1c
DTSTAMP:20190107T190135Z
SUMMARY:My Event
DTSTART:20190109T183000Z
DTEND:20190109T184500Z
CATEGORIES:Red Category
BEGIN:VALARM
ACTION:DISPLAY
TRIGGER:-PT15M
DESCRIPTION:Alert
END:VALARM
END:VEVENT
END:VCALENDAR
Run Code Online (Sandbox Code Playgroud)

我是否做错了什么,或者 Outlook 中的互联网日历不支持 VALARM?当我在带有 Lightning 插件的 Thunderbird 中执行此操作时,效果非常好。所以我假设我缺少一些 MS 特定格式?

我使用 Outlook 2016 进行测试。我读到有些人成功登录 Office365 并从仪表板导入日历,但这对我来说也不起作用。我尝试使用http://和来格式化我的网址webcal://

icalendar outlook office365 webcal

5
推荐指数
0
解决办法
1355
查看次数

Angular 组件在被销毁后仍在监听订阅

角 5

我遇到的问题是,当我离开某个组件时,该组件仍在侦听服务订阅更新并对其采取行动。

我的服务

export class GlobalVarsService {
  private selectedDepartment = new BehaviorSubject<number>(null);
  selectedDepartment$ = this.selectedDepartment.asObservable();

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

我的组件

ngOnInit() {
     this.globalVarsService.selectedDepartment$.subscribe( selectDepartment => {
        this.refreshReportData();
    });
}
Run Code Online (Sandbox Code Playgroud)

我可能需要点击 3 次,MyComponent但如果我更新selectedDepartment,订阅仍将触发并this.refreshReportData执行。显然我不想要这个,因为它是完全不必要的额外 HTTP 调用。

我尝试实施onDestroy以验证组件销毁是否在我导航时发生并且确实发生了。所以从我的角度来看,我销毁的组件似乎仍然处于活动状态并监听订阅事件。也没有unsubscribe可用的方法,this.globalVarsService.selectedDepartment$因此我也无法将其放入我的onDestroy方法中。

我该怎么办?

rxjs angular

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

在Java中管理具有几乎相同属性的2个类的最佳方法

我想首先说明,由于超出此问题范围的原因,无法修改数据库.

这就是说,该问题是,我有2个数据库对象(T1,T2)与几乎相同的特性和它们共享相同的UI代码和业务逻辑.含义取决于配置选项,UI显示T1数据或T2数据.管理数据的所有逻辑都是一样的.

我不想要的是让我的应用程序逻辑代码充满instanceof操作符,并基本上管理2组相同的代码.所以我的解决方案是创建一种包装类(TCombo),它将T1或T2作为构造函数.所有的getter和setter都具有类似的设计

public String getProp1() {
    if(o instanceof T1) ((T1)o).getProp1();
    else(o instanceof T2) ((T2)o).getProp1();
}
Run Code Online (Sandbox Code Playgroud)

并且基本上对于setter也是如此,所以当我设置一个值时,DB对象被正确设置.这样做可以让我使用一组代码,并在整个代码中管理这个TCombo类,这非常有用.问题是效率很糟糕,因为我的应用程序处理大型数据集,必须为数据集中的每个项目创建这个TCombo类会产生可怕的加载时间.

我的问题是:管理这些类的最佳方法是什么,所以我不需要维护2组逻辑代码并且还有速度?

java oop

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

无法将证书导入java控制面板

我正在尝试将自签名证书导入java控制面板中的受信任证书.它位于安全选项卡 - >管理证书下.无论我在密钥库上设置的密码有多简单,导入程序总是告诉我输入密码后我的密码无效.我也尝试更改证书类型,但没有运气..我尝试了所有这些.以下是我用来创建文件的简单步骤

keytool -genkey -keyalg RSA -keysize 2048 -keystore test_keystore.jks -alias test
Run Code Online (Sandbox Code Playgroud)

然后我生成我的CSR文件,java控制面板将其作为输入

keytool -certreq -alias test -keystore test_keystore.jks -file test_certificate_request.csr
Run Code Online (Sandbox Code Playgroud)

由于这只是一个测试,我设置的密码非常简单,所以它不是使用错误密码或输入错误的问题.然而,每当我导入test_certificate_request.csr文件时,我创建它就会告诉我密码无效.

如果重要,这里是当我点击"更多信息"按钮时从导入程序生成的完整strack跟踪.

java.io.IOException: toDerInputStream rejects tag type 45
at sun.security.util.DerValue.toDerInputStream(Unknown Source)
at sun.security.pkcs12.PKCS12KeyStore.engineLoad(Unknown Source)
at java.security.KeyStore.load(Unknown Source)
at com.sun.deploy.panel.CertificatesDialog.importPKCS12Certificate(Unknown Source)
at com.sun.deploy.panel.CertificatesDialog.importButtonActionPerformed(Unknown Source)
at com.sun.deploy.panel.CertificatesDialog.access$200(Unknown Source)
at com.sun.deploy.panel.CertificatesDialog$4.actionPerformed(Unknown Source)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown …
Run Code Online (Sandbox Code Playgroud)

java import ssl certificate

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

SweetAlert2 关闭后滚动到启动元素

关闭模式后,我强制浏览器滚动到页面顶部以查看任何错误消息。集成SweetAlert2模块以确认提交后,应用程序将在关闭后自动向下滚动回提交按钮,而不是停留在顶部。

submit() {
    swal({
      title: "Submit application",
      html: "All submissions are final",
      type: "warning",
      showCancelButton: true,
      confirmButtonText: "Yes, delete it!",
      cancelButtonText: "Cancel"
    }).then(result => {
          window.scrollTo(0,0);
        }
    );
  }
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我试图在多个区域强制滚动到顶部,这有效,但随后它又回到了底部。请参阅随附的 gif 作为演示。

滚动错误

有想法该怎么解决这个吗?

引导程序 4

SweetAlert2 7.28.2

编辑:在简单的 JSFiddle https://jsfiddle.net/s8f12xad/ 中转载

javascript sweetalert sweetalert2

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

Grails域类属性更改未标记为Dirty

我的域类中有一个临时方法,它将更新类的属性.当我使用此方法时,类不会标记为脏并且不会保存.

class Major {
    String code
    String major

    static transients = ['update']

    def update(String newVal) {
        major = newVal
    }
}

Major major = Major.findByCode("ACAA");
major.update("NEW VALUE");
println("Is dirty? "+ major.dirty);  //Is dirty? false
Run Code Online (Sandbox Code Playgroud)

当我在方法之外更新属性时,它按预期工作,我可以保存

Major major = Major.findByCode("ACAA");
major.major = "NEW VALUE";
println("Is dirty? "+ major.dirty);  //Is dirty? true
Run Code Online (Sandbox Code Playgroud)

有什么理由不起作用吗?

Grails 3.3.1

GORM 6.1.6

grails grails-orm

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

jquery结合就绪和点击事件

所以我有同样的代码,可以运行Ready和Click事件,但是当我尝试将它们组合起来时,它不起作用

$("input[name='reimburse']").on("ready click", function() {
    //some code
});
Run Code Online (Sandbox Code Playgroud)

我认为它必须做Ready功能,因为即使这样也行不通

$("input[name='reimburse']").on("ready", function() {
    //some code
});
Run Code Online (Sandbox Code Playgroud)

相反,我必须为Ready功能执行此操作

$("input[name='reimburse']").ready(function() {
    //some code
});
Run Code Online (Sandbox Code Playgroud)

除了创建另一个JS函数并从2个不同的声明事件调用该方法之外,我该如何实现我的初始代码?为什么不打电话on("ready")

编辑:我注意到该ready事件不适用于个别DOM,load应该使用它.我试过这个,但仍然无法正常工作.只有click活动有效.我也曾尝试更换onbind和同样的事情发生.

javascript jquery

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