目标 - 使用客户端:
将动态 SVG 绘图(使用 d3js 创建)转换为可下载的 PNG 图像并使用 Internet Explorer 工作。
完成:
在 Chrome 中实现,没问题。一旦我有了 PNG DataURI,它就可以轻松转换为可下载的 PNG blob。
不幸的是,在 IE 中运行相同的代码会产生 SecurityException,当我尝试将画布转换为 PNG DataURI ( canvas.toDataURL )时它会失败。
显然这是一个活跃的IE BUG,我在 StackExchange 上发现其他人也有同样的问题。我相信这与应用于来自其他域(并在画布中绘制)的图像的 CORS 限制有关,但我的 SVG 源自本地页面。
想法
想知道原因是否与我为IMG 元素呈现的 SVG 绘图生成初始 DataURI ( data:image/svg+xml ) 的方式有关。
我尝试了两种替代方法来生成image/svg+xml,base64 和 charset=utf8,但它们没有解决遇到的问题。所以想知道是否是SVG的内容,目前SVG绘图中没有图像。
参考代码:
var rawSvg = new XMLSerializer().serializeToString(svgElement);
var img3 = new Image();
document.body.appendChild(img3);
var canv = document.createElement("canvas");
var canv_ctx = canv.getContext("2d");
img3.onload …Run Code Online (Sandbox Code Playgroud) 我需要增加分配给innodb_buffer_pool_size的内存,因为默认的8M太低了.Rick James推荐70%的RAM用于此设置,他有很多很棒的信息.
Edlerd对两个建议都是正确的:-)
我将数据拆分为月分区,然后运行6,000行响应查询,最初需要6到12秒.它现在在不到一秒钟内完成(.984/.031).我使用默认的innodb缓冲区大小(innodb_buffer_pool_size = 8M)来运行它,以确保它不仅仅是内存增加.
然后我设置innodb_buffer_pool_size = 4G并以更好的响应运行查询.062/.032.
我还想提一下,增加内存也提高了我的Web应用程序和服务的整体速度,它接收和写入消息到这个表,我很惊讶这个配置设置有多大的不同.我的网络服务器的第一个字节时间(TTFB)现在几乎与MySQL Workbench相当,有时会达到20秒.
我还发现慢查询日志文件是识别问题的一个很好的工具,我在那里看到它表明我的innodb_buffer_pool_size很低并且突出了所有表现不佳的查询.这也确定了我需要索引其他表的区域.
我正在重构一个记录遥测数据的大型表,它已经运行了大约4-5个月并且已经产生了大约.平均行数约为5400万条记录.380个字节.
我已经开始看到我的一个原始数据查询的性能滞后,它会在24小时内返回设备的所有日志.
最初我认为它是索引,但我认为这是MySQL需要处理的I/O量.一个典型的24小时查询将包含2.2k 3k到9k记录,我实际上想支持大约7天的导出.
我没有数据库性能调优的经验,所以仍然只是学习绳索.我正在考虑一些策略.
1,2(INDEXES): 我会用我的查询修改我的索引,但我认为我很好,因为Explain显示100%命中,除非我读错了.
我会在重建时尝试覆盖索引,但是如何确定设置错误的效果呢?EG插入速度受到影响.
如何在实时环境中最好地监控桌子的性能?
编辑:我刚刚开始使用慢速日志文件,它看起来像是一个很好的查找问题的工具,我想在performance_schema上查询可能是另一种选择?
3(PARTITIONING): 我已经阅读了一些关于分区的内容,并且不确定我的数据大小是否会产生很大的差异.
Rick James提出了大约1M的记录,我是54M,并希望在归档之前保持300M左右,我的桌子是否足够复杂?
我必须自己测试一下,因为我没有任何这方面的经验,这对我来说都是理论上的.如果它不适合我的需要,我只是不想走这条路.
4(通过'加入'细节表进行垂直分区):我不认为我有表扫描问题而且我需要所有行,所以我不确定这种技术是否有益.
5(使用限制并再次获取):如果我在一个请求中使用较少的时间,这会释放服务器吗?我是否会在同一连接上以更多命令为代价看到更好的I/O吞吐量?
6(查看配置):另一部分是审查安装MySQL时使用的默认非开发人员配置,也许有一些设置可以调整?:-)
感谢阅读,热衷于听取任何和所有建议.
以下FYI:
表:
CREATE TABLE `message_log` (
`db_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`db_created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`created` datetime DEFAULT …Run Code Online (Sandbox Code Playgroud) 我需要使用C#.NET 4.5+构建TCP服务器,它必须能够舒适地处理至少3,000个连接的客户端,这些客户端每10秒发送一次消息,消息大小为250至500字节。
数据将被分流到另一个进程或队列以进行批处理和记录。
我还需要能够选择一个现有客户端,以便在Windows窗体应用程序中发送和接收消息(大于500字节)。
我之前没有构建过这样的应用程序,因此我的知识是基于我在网上找到的各种问题,示例和文档。
我的结论是:
我不确定的是:
感谢您的阅读。我渴望听到建设性的想法或与最佳做法/示例的链接。自从我用C#编码以来已经有一段时间了,如果我的某些问题很明显,我深表歉意。任务,异步/等待对我来说是新的!:-)
.net-4.5 ×1
async-await ×1
canvas ×1
indexing ×1
mysql ×1
partitioning ×1
sockets ×1
svg ×1
tcplistener ×1
todataurl ×1