小编Jos*_*osh的帖子

在Java中使用instanceof的性能影响

我正在开发一个应用程序,一种设计方法涉及对instanceof操作员的极大使用.虽然我知道OO设计通常会试图避免使用instanceof,但这是一个不同的故事,这个问题纯粹与性能有关.我想知道是否有任何性能影响?是这么快==吗?

例如,我有一个包含10个子类的基类.在一个获取基类的函数中,我会检查该类是否是子类的实例并执行一些例程.

我想解决它的另一种方法是使用"type id"整数原语,并使用位掩码来表示子类的类别,然后只需对子类"type id"进行掩码比较.表示类别的常量掩码.

instanceof莫名其妙地由JVM优化得比较快?我想坚持使用Java,但应用程序的性能至关重要.如果之前一直走在这条路上的人可以提供一些建议,那将会很酷.我是在挑剔太多还是专注于错误的事情来优化?

java performance instanceof

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

indexedDB在概念上与HTML5本地存储有何不同?

  1. indexedDB和本地存储都是键值存储.拥有两个键/值存储的优势是什么?
  2. indexedDB是异步的,但是连接(最耗时的东西)是手动的.它们似乎与异步调用在同一个线程中运行.这怎么会阻止用户界面?
  3. indexedDB允许更大的商店.为什么不增加HTML5商店的大小?
  4. 我在挠头.indexedDB有什么意义?

javascript html5 indexeddb

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

Select*和Select [list each col]之间是否有区别

我正在使用MS SQL Server 2005.与SQL引擎之间有区别

SELECT * FROM MyTable;
Run Code Online (Sandbox Code Playgroud)

SELECT ColA, ColB, ColC FROM MyTable;
Run Code Online (Sandbox Code Playgroud)

当ColA,ColB和ColC代表表格中的每一列时?

如果它们是相同的,那么为什么你应该使用第二个呢?我有一个对LINQ很重的项目,我不确定它生成的标准SELECT*是不是很糟糕,或者我应该总是使用.Select()来指定我想要的cols.

编辑:更改"当ColA,ColB和ColC是表格的所有列?" "当ColA,ColB和ColC代表表格中的每一列?" 为清楚起见.

sql linq database linq-to-sql

25
推荐指数
6
解决办法
6649
查看次数

使用fetch时如何退出HTTP/2服务器推送?

我正在使用新的fetch API在Javascript中编写一个基本应用程序.以下是代码相关部分的基本示例:

function foo(url) {
  const options = {};
  options.credentials = 'omit';
  options.method = 'get';
  options.headers = {'Accept': 'text/html'};
  options.mode = 'cors';
  options.cache = 'default';
  options.redirect = 'follow';
  options.referrer = 'no-referrer';
  options.referrerPolicy = 'no-referrer';
  return fetch(url, options);
}
Run Code Online (Sandbox Code Playgroud)

在进行获取请求时,我偶尔会在控制台中看到如下所示的错误:

拒绝加载脚本'<url>',因为它违反了以下内容安全策略指令...

在阅读并了解HTTP/2之后,看起来会出现此消息,因为响应正在推回预加载的脚本.使用devtools,我可以在响应中看到以下标题:

链接:<路径到脚本>; 相对=预载荷; 为=脚本

以下是我的Chrome扩展程序manifest.json文件的相关部分:

{
  "content_security_policy": "script-src 'self'; object-src 'self'"
}
Run Code Online (Sandbox Code Playgroud)

以下是Chrome的manifest.json格式的文档,以及内容安全策略如何应用于扩展程序提取的内容:https://developer.chrome.com/extensions/contentSecurityPolicy

我做了一些测试,并且能够确定在获取期间发生此错误消息,而不是在解析响应文本时.没有问题将脚本元素加载到实时DOM中,这一切都发生在获取时.

在我的研究中我无法找到的是如何避免这种行为.看起来急于支持这个伟大的新功能,制作HTTP/2和fetch的人没有考虑我没有获取远程页面以便显示它或其任何相关资源(如css)的用例/图像/脚本.我(应用程序)以后不会使用任何相关资源; 只有资源本身的内容.

在我的使用案例中,这种推送(1)完全浪费了资源,并且(2)现在导致一个非常恼人和压力诱导的消息偶尔出现在控制台中.

话虽如此,这是我希望得到一些帮助的问题:有没有办法向浏览器发信号,使用清单或脚本,我对HTTP/2推送不感兴趣?是否有我可以为获取请求设置的标头告诉Web服务器不响应推送?我可以在我的应用程序清单中使用CSP设置,以某种方式触发不要推送我的响应吗?

我查看了https://w3c.github.io/preload/第3.3节,它没有多大帮助.我看到我可以发送标题Link: </dont/want/to/push/this>; rel=preload; as=script; nopush.问题是我还不知道响应中会有哪些链接头,我不确定fetch是否允许在初始请求中设置链接头.我想知道我是否可以发送某些类型的请求,可以在响应中看到链接头但是避免它们,然后发送追加所有相应nopush头的后续请求?

这是一个简单的测试用例来重现这个问题:

  1. 获取最新或近乎最新的chrome的开发版本
  2. 创建扩展文件夹
  3. 使用类似的CSP创建清单
  4. 加载扩展为解压缩到chrome中
  5. 在devtools中打开扩展的后台页面
  6. 在控制台类型获取(' https://www.yahoo.com ').
  7. 检查控制台中显示的结果错误消息: …

javascript google-chrome-extension http2 fetch-api

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

在动态修改的表上使用jQuery tableSorter

我在页面上使用jQuery tableSorter插件.

不幸的是,正在排序的表是动态修改的,当我在添加元素后排序时,元素消失,将表恢复到创建tableSorter时的状态.

有什么方法可以强制tableSorter重新扫描页面,以便这些新元素正确排序?

jquery tablesorter

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

如何存储/存储JavaScript事件并在以后重用它?

来自https://developers.google.com/web/fundamentals/app-install-banners/#trigger-m68

let deferredPrompt;

window.addEventListener('beforeinstallprompt', (e) => {
  e.preventDefault();
  // Stash the event so it can be triggered later.
  deferredPrompt = e;
});
Run Code Online (Sandbox Code Playgroud)

这段代码很好,但我想稍后在另一个地方触发藏匿事件.为了执行该操作,我需要将事件存储在变量中,而不是存储在其他地方.

问题:如何使用其方法存储事件?

我尝试使用对象的序列化/反序列化进行本地存储:

> localStorage.setItem('stashed-event', JSON.stringify(e))
>
> JSON.parse(localStorage.getItem('stashed-event'))
Run Code Online (Sandbox Code Playgroud)

但是这种方法不能按预期工作,因为它只存储键值并丢失所有事件方法.

javascript events local-storage web-storage

14
推荐指数
3
解决办法
1692
查看次数

获取jQuery tablesorter以使用隐藏/分组表行

我有可扩展和可折叠记录的经典表,如果展开显示几个子记录(作为同一父表中的新记录,而不是一些子div /子表).我也在使用tableorter并且非常喜欢它.

问题是tablesorter没有在父记录旁边保留扩展子记录.它将它们分类为顶级.因此,每当表按列排序时,子行最终会遍布整个地方而不是我想要的位置.

有没有人知道对tablesorter或特定配置的良好扩展,使tableorter即使在排序后也能将子行与父行组合在一起?或者我是否必须放弃tableorter以支持其他API或者开始编写我自己的小部件的丑陋过程?我应该避免使用基于CSS的隐藏表的各行来表示折叠行的方法吗?

javascript jquery tablesorter

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

html CustomElement 有打字稿接口吗?

我正在尝试在打字稿中实现网络自定义元素。我发现自定义元素的生命周期回调如下

  • connectedCallback()
  • adoptedCallback()
  • attributeChangedCallback()

这些回调有打字稿接口吗?我可以使用适当的签名编写这些方法,但我更愿意使用现有的定义。

html typescript custom-element

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

何时以及为什么在indexedDB中调用onupgradeneeded方法?

我正在使用IndexedDB进行测试项目.这是一些示例代码:

var indexedDB = window.indexedDB || window.webkitIndexedDB 
                ||window.mozIndexedDB||window.msIndexedDB;

  var request = indexedDB.open("mydb",2),    

  customerData=[
    {ssn:"444-44-4444",name:"Bill",age:35,email:"bill@company.com"},      
    {ssn:"555-55-5555",name:"Donna",age:32,email:"donna@home.org"}
  ];

  request.onerror = function(event){

  };
  request.onupgradeneeded = function(event) {

     var objectStore = db.createObjectStore("customers",{keyPath:"ssn"});
     objectStore.createIndex("name","name",{unique:false});
     objectStore.createIndex("email","email",{unique:true});

     for(var i in customerData){
        objectStore.add(customerData[i]);
     }
  };
  request.onsuccess = function(e) {

  };
Run Code Online (Sandbox Code Playgroud)

我真的不明白的是当我的请求对象运行onupgradeneeded而不是onsuccess(假设当然没有错误).是不存在对象存储的时候?或者在创建新的db版本时?

谢谢

javascript html5 indexeddb

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

Chrome版本61中的扩展ES6模块

这与ES6模块在谷歌Chrome扩展开发(意外令牌)中的问题不同,因为它已经过时且已经得到解答.

谷歌发布了一则新闻稿,声称Chrome支持ES6模块.我正在尝试从扩展中加载模块.我可以从普通页面加载模块,但不能从扩展名中加载.

这是html,这是扩展上下文中的页面:

<script src="test.js" type="module"></script>
Run Code Online (Sandbox Code Playgroud)

当我打开页面时,我在控制台中看到以下错误消息:

无法加载模块脚本:服务器使用非JavaScript MIME类型""进行响应.对每个HTML规范的模块脚本强制执行严格的MIME类型检查.

有人有建议吗?这是一个应该向Chrome报告的错误吗?或者它还没有得到支持?我无法找到任何直截了当的解释.

javascript google-chrome-extension es6-modules

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