我最近在我正在处理的现有代码库中运行了以下代码段,并添加了您在那里看到的注释.我知道这段特殊的代码可以重写为更清晰,但我只是想知道我的分析是否正确.
java会创建一个新的类声明并将其存储在perm gen空间中,以便每次调用此方法,还是会知道重用现有的声明?
protected List<Object> extractParams(HibernateObjectColumn column, String stringVal) {
// FIXME: could be creating a *lot* of anonymous classes which wastes perm-gen space right?
return new ArrayList<Object>() {
{
add("");
}
};
}
Run Code Online (Sandbox Code Playgroud) 谷歌警告说,v2监控api现已弃用,很快就会消失.然而,迁移到v3被证明有点困难.我正在尝试编写自定义指标,并收到以下错误响应:
服务> Google Monitoring API v3> monitoring.projects.timeSeries.create
{
"timeSeries": [{
"metric": {
"type": "custom.googleapis.com/test_metric",
"labels": {
"payment_type": "Paypal"
}
},
"resource": {
"type": "custom.googleapis.com/test_metric",
"labels": {
"payment_type": "Paypal"
}
},
"metricKind": "GAUGE",
"valueType": "INT64",
"points": [{
"interval": {
"endTime": "2016-03-20T15:01:23.045123456Z",
"startTime": "2016-03-20T15:01:23.045123456Z"
},
"value": {
"int64Value": "2"
}
}]
}]
}
{
"error": {
"code": 400,
"message": "Field timeSeries[0].resource.type had an invalid value of \"custom.googleapis.com/test_metric\": Unrecognized resource name.",
"status": "INVALID_ARGUMENT"
}
Run Code Online (Sandbox Code Playgroud)
"资源"字段是必需的,文档称它是"MonitoredResource"...但我没有看到任何api用于创建一个,仅用于列表.采取疯狂的猜测并将其设置为"全局"似乎让我更进一步,并给了我这个不同的错误:
{
"error": {
"code": 400,
"message": "Field timeSeries[0].resource.labels[0] …Run Code Online (Sandbox Code Playgroud) google-app-engine google-cloud-platform stackdriver google-cloud-monitoring
看起来苹果已经弃用了我的应用正在使用的API.不知道如何解决这个问题.具体用法如下:
background.js 机制在清单 v3 中被删除,我正在寻找如何在后台执行周期性操作,因为它已经消失了。
此升级指南说使用 chrome 警报 api: https://developer.chrome.com/docs/extensions/mv3/migration_to_service_workers/
具体来说,它说:
相反,我们可以使用 Alarms API。与其他侦听器一样,警报侦听器应在脚本的顶层注册。
目前尚不清楚它需要成为哪个脚本的顶层,但是当使用我的 chrome 扩展的入口点“popup.js”时,它会定期执行,但仅当 chrome 弹出窗口实际打开时才执行。即使弹出窗口关闭,我也需要它在后台执行。附带说明的是,我对 chrome.alarms 未定义,直到我将“警报”添加到清单文件中的权限,然后它不会阻塞,但我仍然遇到它不运行后台的问题。
由于上面的文章是在 Service Worker 的上下文中,我假设您需要将警报侦听器放在 service-worker.js 文件的顶层。只是这个不行。我在这里未定义 chrome.alarms (即使授予了“警报”权限):
service-worker.js
console.log("inside service worker")
// getting chrome.alarms undefined here
chrome.alarms.create("alarm", { periodInMinutes: 1 });
Run Code Online (Sandbox Code Playgroud)
将其放入安装事件侦听器中也没有帮助:
self.addEventListener('install', event => {
console.log("Installing service worker")
// still getting chrome.alarms undefined here
chrome.alarms.create("alarm", { periodInMinutes: 1 });
chrome.alarms.onAlarm.addListener((alarm) => {
if (alarm.name === "alarm") {
let milliseconds = new Date().getTime();
console.log(milliseconds)
chrome.action.setTitle({
title: "Hello "+ milliseconds …Run Code Online (Sandbox Code Playgroud)