WTF

[译] Blink内核是如何工作的?

我只是一个虾纸丫 提交于 2020-04-29 15:23:11
原文链接 Blink 是如何工作的 Author: haraken@ Last update: 2018 Aug 14 Status: PUBLIC 译: LeoY 对于刚接触 Blink 的开发者来说, Blink 相关的工作并不简单。因为实现一个高效快速的渲染引擎,需要了解大量与 Blink 相关的概念和代码约定。这对于经验丰富的 Blink 开发者来说也并不简单,因为 Blink 项目很庞大,并且对于性能、内存和安全性很敏感。 本文的目标是提供一个关于 Blink 工作原理的概览,希望能够帮助开发者快速熟悉 Blink 的架构。 本文不是一个关于 Blink 架构细节和代码风格的详细教程,而是关于 Blink 基本原理的简单介绍。这部分原理在短期内不会有大的改变,另外提供了一些深入了解这些部分的相关资源。 本文不会介绍具体的功能(比如 ServiceWorkers , editing 等),而是介绍了代码中广泛使用的一些基本的功能(比如内存管理, V8 APIs 等) 访问 Chromium wiki page 来获取更多的关于 Blink 开发的信息 Blink 是如何工作的 Blink 做了什么 进程/线程 架构 进程 线程 Blink 的初始化和终止 目录架构 Content public APIs 和 Blink public APIs 目录架构和依赖 WTF

一道简单的算法题,重新认识字面量对象和Map

半腔热情 提交于 2020-04-29 15:22:53
场景: 如下,一道简单的算法题 解决思路如下, 遍历改变前的字符串,记录下每个字符对应出现的次数,然后遍历改变以后的字符串,依次将字符出现的次数减1,直到为0。 当新添加的字符被遍历到时,此时对应的次数已经为0,就可以检测到了。 const map = new Map(); for ( let str of s) { const val = map.get(str); map.set(str, !val ? 1 : val + 1); } for ( let str of t) { const val = map.get(str); if (!val) { return str; } else { map.set(str, val - 1); } } 复制代码 实不相瞒,看到结果我差点飘了。但这毕竟是一道很简单的题,所以并代表不了什么,还是想想如何优化吧, 不知道小伙伴们怎么看,我的第一反应是new Map()这一步占用了内存, 或许有更轻量的存储方式,比如 看似超级轻量 (不要被表面骗了) 的字面量对象 // const map = new Map(); const map = {} 复制代码 毕竟不用创建对象,应该会更节省空间吧, 于是我们更改代码如下 const map = {}; for ( let i of s) { const val = map[i]; map[i]

VueJs(7)---计算属性和侦听器

一曲冷凌霜 提交于 2020-04-29 15:04:14
计算属性和侦听器 一、 概述 计算属性 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护。例如: < div id ="example" > {{ message.split('').reverse().join('') }} </ div > 在这个地方,模板不再是简单的声明式逻辑。你必须看一段时间才能意识到,这里是想要 显示变量 message 的翻转字符串 。当你想要在模板中多次引用此处的翻转字符串时,就会更加难以处理。 所以,对于任何复杂逻辑,你都应当使用计算属性。 基础例子 < div id ="example" > < p > Original message: "{{ message }}" </ p > < p > Computed reversed message: "{{ reversedMessage }}" </ p > </ div > var vm = new Vue({ el: '#example' , data: { message: 'Hello' }, computed: { // 计算属性的 getter reversedMessage: function () { // `this` 指向 vm 实例 return this .message.split('').reverse()

旧梦。

拈花ヽ惹草 提交于 2020-04-26 19:31:39
那些短暂的相遇,短暂的美好,会不会在心里埋下长久的种子 2020-4 24号 生物讲到“DNA的粗提取与鉴定”,生物老师说:“这里不能用甲基绿鉴定DNA,只能用二苯胺”。《三维设计》上写“这里的二苯胺也可以用甲基绿代替”。然后就去搜了一下。。。 ?????? 22号 讲个笑话,搬我博客的那个 CSDN博客 某文,被一 靠转载为生的网站 转载了。 20号 卡了1h常数,才发现漏了一句话,把 \(O(nlogn)\) 写成了 \(O(n^2logn)\) 。。。心累 19号 去ftp上bacha到了好多好东西。比如,wxy被爆踩的黑历史 还有还有!当年学长给的寄语~(哇!已经两年了) 今天google我自己的时候(日常自恋)。发现了自己的翻版博客(笑哭)。这人怎么把我的整个博客都转载了。转载也不给我说一声(差评!) 挂个链接: https://blog.csdn.net/diecimu4798 update:完结 18号 昨天lmh突然被盗号了,然后被删好友,还给她强行绑定了安全守护平台,威胁给¥300解封。然后举报不成功,报警不理会2333 顺便替他问一下,他明明开了设备锁啥的,盗号的人竟然还能登陆并且可以解封已冻结的账号???? 5号 踏个青 2号 哈哈哈哈,感觉今晚上RP爆表了嘿嘿嘿 2020-3 28号 牛客搞活动,白嫖了服务器 \(\times 2\) + 华为体重秤 \(

看了这篇,面试官问你APP体积优化再也不用WTF了

◇◆丶佛笑我妖孽 提交于 2020-04-23 18:59:52
long time no see,最近在总结一些平(应)常(付)用(面)到(试)的知识点,今天就跟大家聊了聊App体积优化这个事儿。 1.为什么要做体积瘦身 别问!问就是为了应付面试。 哈哈,开个玩笑。大家生活中都会遇到一个场景,在某个需要紧急打开App的时候,发现使用的App半天打不开!WTF!而另外一款相同功能的App却可以瞬间打开。哪个App能够挽留更多的用户就不言而喻了吧! 借用某个游戏里边人物的一句话:"时间就是金钱,我的朋友!" 2.我们都能干什么? 下边我们先查看一个的思维导图: 思维导图已经总结目前我已经知道的并且可以落地的优化方式。 如图所示APP体积优化包括两部分:资源瘦身和代码瘦身。 下面我将使用 APPReduction 这个简单的demo实地操作一下。需要的同学可以到gayhub下载一下。 3. 具体实施 3.1 资源瘦身 删除资源 因为旷日持久的业务代码堆砌,工程内很可能会堆积许多无用的图片,而这些图片却能实实在在的增加App的体积。而我们完全可以借助工具 LSUnusedResources 进行资源文件的删除工作。 在 RedutionViewController 中, configImageTest 方法中你会找到image图片的代码调用 - ( void )configImageTest{ [UIImage imageNamed: @"

NOIP 2018 划水记

不羁岁月 提交于 2020-04-21 14:31:45
  (此处不应有目录)   (本来想咕掉这篇游记) Day -1   今天信心题,这个毒瘤出题人怎么出了一堆垃圾题(smallfat批判这个垃圾题)。   T2,T3是送分题。T1考了个noip根本不会考得类欧几里德算法。   下午敲树链剖分求lca板子,然后发现自己WA了。[内心崩溃.jpg]   有人颓generals。晚上为了练习写模拟,写了一个简化后的generals的交互库。(虽然没写图形界面,因为同学都不会Java,只好写C++) Day 0   上午把我的泰拉1.3借给同学,然后变得一发不可收拾,Emmm...   他们想要联机,我果断帮助他们选择了Expert(你们多人联机还打Normal?)。   然后我debug昨晚写的交互库。   我溜到隔壁问高二有没有人在玩,他们表示已被抓颓三次,只能听歌了。最后一个小时和他们玩了一会儿tr。   下午又颓了会儿tr,写了一下excrt的板子。晚上在酒店又debug了一会儿交互库。(加了一点东西,编译错误改了将近半个小时[瑟瑟发抖.jpg]) Day 1   汉庭的早餐一般般。怀念小笼包....   day 1完全送分。1个小时40分ak,检查了1个多小时,最后玩了一会儿扫雷就走了。   快结束了的时候碰到了yl,他想找我对对答案,我坚决地拒绝了(李老居然不管对答案这时?去年我考noip的时候hfu禁止考完交流试题)。  

旧梦。

匆匆过客 提交于 2020-04-20 16:34:11
那些短暂的相遇,短暂的美好,会不会在心里埋下长久的种子 2020-4 19号 今天google我自己的时候(日常自恋)。发现了自己的翻版博客(笑哭)。这人怎么把我的整个博客都转载了。转载也不给我说一声(差评!) 挂个链接: https://blog.csdn.net/diecimu4798 update:完结 18号 昨天lmh突然被盗号了,然后被删好友,还给她强行绑定了安全守护平台,威胁给¥300解封。然后举报不成功,报警不理会2333 顺便替他问一下,他明明开了设备锁啥的,盗号的人竟然还能登陆并且可以解封已冻结的账号???? 5号 踏个青 2号 哈哈哈哈,感觉今晚上RP爆表了嘿嘿嘿 2020-3 28号 牛客搞活动,白嫖了服务器 \(\times 2\) + 华为体重秤 \(\times 2\) +华为手环 \(\times 1\) (薅羊毛好爽) 16号 难得的在正睿省选培训考场上能A一道题,心路历程: 哇哇哇,我竟然想出来了,快写快写。 我竟然调出来了,拍! 好像能过,交! 后面两道题拿暴力分今天就能上分了叭,嘿嘿 (测完挂成50) ?????发生了什么 靠 天要亡我啊。 T2, \(nlog^2\) 没跑过 \(1e5\) 。。 T3,字典序比较写错抱零了。。。 (口吐芬芳) 10号 写完调不出的悲哀。。。 2020-2 22号 呵呵。。 17号

旧梦。

廉价感情. 提交于 2020-04-20 15:47:17
那些短暂的相遇,短暂的美好,会不会在心里埋下长久的种子 2020-4 19号 今天google我自己的时候(日常自恋)。发现了自己的翻版博客(笑哭)。这人怎么把我的整个博客都转载了。转载也不给我说一声(差评!) 挂个链接: https://blog.csdn.net/diecimu4798 update:完结 18号 昨天lmh突然被盗号了,然后被删好友,还给她强行绑定了安全守护平台,威胁给¥300解封。然后举报不成功,报警不理会2333 顺便替他问一下,他明明开了设备锁啥的,盗号的人竟然还能登陆并且可以解封已冻结的账号???? 5号 踏个青 2号 哈哈哈哈,感觉今晚上RP爆表了嘿嘿嘿 2020-3 28号 牛客搞活动,白嫖了服务器 \(\times 2\) + 华为体重秤 \(\times 2\) +华为手环 \(\times 1\) (薅羊毛好爽) 16号 难得的在正睿省选培训考场上能A一道题,心路历程: 哇哇哇,我竟然想出来了,快写快写。 我竟然调出来了,拍! 好像能过,交! 后面两道题拿暴力分今天就能上分了叭,嘿嘿 (测完挂成50) ?????发生了什么 靠 天要亡我啊。 T2, \(nlog^2\) 没跑过 \(1e5\) 。。 T3,字典序比较写错抱零了。。。 (口吐芬芳) 10号 写完调不出的悲哀。。。 2020-2 22号 呵呵。。 17号

Android Log.v(),Log.d(),Log.i(),Log.w(),Log.e()

廉价感情. 提交于 2020-03-20 19:47:00
3 月,跳不动了?>>> 不同的 LogCat 方法是: Log.v(); // Verbose Log.d(); // Debug Log.i(); // Info Log.w(); // Warning Log.e(); // Error 使用每种类型的日志记录的适当情况是什么? 我知道也许这只是一些语义,也许它并不重要,但对于Android Studio和Eclipse中的 LogCat 过滤,我很高兴知道我在适当的时候使用了正确的方法。 #1楼 源代码 提供了一些基本指导: 详细程度的顺序,从最小到最多,是ERROR,WARN,INFO,DEBUG,VERBOSE。 除了在开发期间,不应该将详细编译到应用程序中。 调试日志在运行时编译但被剥离。 始终保留错误,警告和信息日志。 更多细节,Kurtis的答案已经过去了。 我想补充一点:不要在 INFO 或以上( WARN / ERROR )记录任何个人身份信息或私人信息。 否则,错误报告或包含日志记录的任何其他内容可能会受到污染。 #2楼 Android Studio网站 最近(我认为)提供了一些建议,从Kurtis的回答中可能有用的不同日志级别期望什么样的消息: 详细 - 显示所有日志消息(默认)。 调试 - 显示仅在开发期间有用的调试日志消息,以及此列表中较低的消息级别。 信息 - 显示常规使用的预期日志消息

论systemctl命令的利与弊

走远了吗. 提交于 2020-03-18 21:27:26
3 月,跳不动了?>>> 前言 今天在测试环境发布 SpringBoot 服务,发现死活找不到错误的地方,错误日志也生成,然后就一顿 tail ,一顿 cat ,发现日志就截止到我发服务之前, dubbo 服务结束的地方,如图所示。 <img src="http://qiniu-cdn.janker.top/oneblog/20200318202129609.jpg" style="zoom:50%;" /> WTF,why,我是丈二和尚摸不着头脑,后来我发现他这个服务不是像我之前那种 nohup java -jar xxx.jar 启动的,他这个是使用 systemctl restart service@xx 启动的。 <img src="http://qiniu-cdn.janker.top/oneblog/20200318202527014.png" style="zoom:50%;" /> 正文 第六感告诉我,系统启动日志中肯定有猫腻,说完就干,一顿搜索。journalctl这个是我想要的查看linux各种服务启动指令。 journalctl -f | grep "xxxx" 比较粗略展示log journalctl -xe| grep "xxxx" 比较详细展示log 结果如我所料,如图我没权限创建文件,emmmm,我好像找到我的锅了(之前为了本地调试改了日志的文件夹)