之前有些过两篇关于字体的文章,是关于如何定义字体的: 你该知道的字体 font-family Web 字体 font-family 再探秘 本文将会和这篇 -- CSS 奇思妙想边框动画类似,讲一些文字效果...Google Font 在写各种 DEMO 的时候,有的时候一些特殊的字体能更好的体现动画的效果。这里讲一个快速引入不同格式字体的小技巧。...就是 Google Font 这个网站,上面有非常多的不同的开源字体: ? 当我们相中了一个我们喜欢的字体,它也提供了非常快速的便捷的引入方式。...使用了这个属性的意思是,以区块内的文字作为裁剪区域向外裁剪,文字的背景即为区块的背景,文字之外的区域都将被裁剪掉。...代码非常的简单,我们实现一个黑白相间的背景,文本的颜色为白色,配合上差值模式,即可实现黑底上的文字为白色,白底上的文字为黑色的效果。
除去 none,hidden,看看所有原生支持的 border 的样式: ? 基础的就这些,如果希望实现一个其他样式的边框,或者给边框加上动画,那就需要配合一些其他属性,或是脑洞大开。...OK,一起来看看一些额外的有意思的边框。 边框长度变化 先来个比较简单的,实现一个类似这样的边框效果: ? 这里其实是借用了元素的两个伪元素。...,视觉上会有一个很明显的错位的感觉: ?...关于背景和边框的填充关系,可以看这篇文章:条纹边框的多种实现方式 渐变的其他妙用 利用渐变,不仅仅只是能完成上述的效果。...,控制了元素的旋转中心 发现没,其实几乎大部分的有意思的 CSS 效果,都是运用了类似技巧: 简单的说就是,我们看到的动画只是原本现象的一小部分,通过特定的裁剪、透明度的变化、遮罩等,让我们最后只看到了原本现象的一部分
,先求出两个数的和,那么第二个数要换友第一个数的的值就是总的和减去第二个,也就是代码中的 num2 = num1-num2,同理,第一个数要换成第二个数的值,就是总的和减去第一个数的值,现在第一个数已经是赋值给第二个数...使用算术运算符*和/ *和/的原理与先前的方法相同,只是有一些微小的区别 ?。...如果你还记得你的数学课,我们总是被告知不要除以0因为它是未定义。原因在于极限是如何起作用的,还有一些其他的原因,我们不会涉及。...交换的值在哪里?我们只得到这个数的整数部分。这就是问题所在。异或假设输入是整数,因此执行相应的计算。...在数组中赋值 这是一个简单的技巧,只需要一行来执行交换,更重要的是不需要数学知识,只需要一个基本的数组知识即可。
除去 none,hidden,看看所有原生支持的 border 的样式: 基础的就这些,如果希望实现一个其他样式的边框,或者给边框加上动画,那就需要配合一些其他属性,或是脑洞大开。...OK,一起来看看一些额外的有意思的边框。 边框长度变化 先来个比较简单的,实现一个类似这样的边框效果: 这里其实是借用了元素的两个伪元素。...关于背景和边框的填充关系,可以看这篇文章:条纹边框的多种实现方式[4] 渐变的其他妙用 利用渐变,不仅仅只是能完成上述的效果。...利用了 transform-origin,控制了元素的旋转中心 发现没,其实几乎大部分的有意思的 CSS 效果,都是运用了类似技巧: 简单的说就是,我们看到的动画只是原本现象的一小部分,通过特定的裁剪...、透明度的变化、遮罩等,让我们最后只看到了原本现象的一部分。
,大部分人都是回答:「减少数据库的磁盘IO压力」。 但是MySQL真的有如此不堪吗? 每次增删改查都要去走磁盘IO吗? 今天就聊聊InnoDB对Buffer Pool的奇思妙想。...申请完毕后,会按照默认缓存页的16KB以及对应的800Byte的描述数据,在Buffer Pool中划分出来一个一个的缓存页和它们对应的描述数据。...MySQL数据库随着系统的运行会不停的把磁盘上的数据页加载到空闲的缓存页里去,因此free链表中的空闲缓存页会越来越少,直到没有,最后磁盘的数据页无法加载。...正常来说,淘汰缓存页时,应该把这个预读的淘汰,结果却把尾部的淘汰了,这是不合理的。 我们接着来看第二个场景全表扫描,如果表数据量大,大量的数据页会把空闲缓存页用完。...记住是按照某个比例将LRU链表分成两部分,不是某些节点固定是young区域的,某些节点固定是old区域的,随着程序的运行,某个节点所属的区域也可能发生变化。
好吧,看着平平无奇,但是基于这种布局,我们可以衍生出非常多有意思的图案。 改变元素大小 最简单的,就是我们可以改变元素的大小。...这样,我们就快速的实现了前面铺垫时候利用 HTML 代码和繁琐的 CSS 生成的图形效果。 CSS 艺术 接下来,就开始美妙的 CSS 艺术。...Wow,第一幅看上去还不错的作品出现了。 当然,每一个不同的角度,都能产生不一样的效果,通过 CSS-doodle,可以快速生成不同随机值,随机产生不同的效果。...这样的话,一些可能的 idea: 只利用单向的 border 会是怎么样的呢? 出现的 border 都是 solid,如果换成是虚线 dashed 呢?...上述的代码如下: ? OK,完美,这样一来,我们就极大极大的丰富了我们的线条库,再运用会上述的线条规则,一大波新的图案应运而生。 ? ?
一.选择压缩工具 首先是选择压缩工具的问题,在这之前先看下系统是如何做的。...android的aapt在编译阶段其实是会对png图片进行压缩的,用的则是libpng和zlib,这个可以用aapt的源码佐证: 用libpng对图片进行预处理 用zlib对预处理后的图片进行压缩生成新图片...可以看到aapt对图片的压缩等级使用了最高等级9,期间系统也会做颜色表转换,这样可以减少很大一部分图片的体积,但系统的压缩方案是不是完美无缺呢?...Quake的作者John都尊敬他,做游戏的肯定都知道John )写的。...三.总结 上面大概就是png无损压缩在android中应用的基本思路和遇到的问题,归纳为一句话便是:替换掉系统的压缩算法。如果你不嫌麻烦和喜欢折腾的话可以在你的apk使用一下,效果还是非常显著的。
经常能看到有关 CSS 绘图的文章,譬如使用纯 HTML + CSS 绘制一幅哆啦 A 梦图画。实现的方式就是通过堆叠 div,一步一步实现图画中的一块一块。...渐变不仅仅只能是单个的 linear-gradient 或者单个的 radial-gradient,对于 background 而言,它是支持多重渐变的叠加的,一点非常重要。...其实太极图就是由多个不同颜色的圆组成,这里堆叠多个不同的 div,并且把他们组合在一起肯定是 OK 的。但是我们的目标是使用单个标签完成。...乍一看,这个图形其实还是很复杂的,云朵、雨滴都不像是仅仅用一个标签或者一个伪元素能够实现的。 实则不然,首先我们看看这个云朵,虽然带有不规则的轮廓,但是实际上就是一个一个的圆。...有了上面的铺垫,其实多重的圆形使用多重径向渐变和多重阴影都是都是可以的,而中间的星星,使用字符或者 clip-path 也能非常轻松的实现: div { position: absolute;
题意 题目链接 Sol 长链剖分 又是一个用各种花式技巧优化的暴力 它的主要思想是:对于每个节点,把深度最深的子节点当做重儿子,它们之间的边当做重边 这样就会有一些非常好的轻质 所有链长总和是$O(n)...$级别的 任意一个点的$k$级祖先的子树深度$\geqslant k$ 首先我们维护出每一个重链头向上$len[i]$个节点是什么,沿着重链走向下$len[i]$个节点是什么 $len[i]$表示该节点所在重链的长度...同时预处理出找祖先的倍增数组 每次询问的时候,首先找到$k$的第一个二进制位(假设为$r$),利用倍增数组向上跳$2^r$次,然后结合之前处理好的重链头对应的数组特判一下即可 时间复杂度: 预处理倍增数组复杂度为...$O(nlogn)$ 预处理每个数的第一个二进制位复杂度为$O(n)$ 每次询问复杂度为$O(1)$ 总复杂度为$O(nlogn + m)$ #include using
实现倒影的两种方式 首先,快速过一下在 CSS 中,实现倒影的 2 种方式。...简单而言,使用 -webkit-box-reflec 可以做到: 不同方向的投影 投影的距离 投影的虚实,可叠加一层蒙版控制透明度 上面 3 点即是 -webkit-box-reflec 的特点,同时,...所以,如果,我们想实现更负杂一点的倒影效果。利用下面一种方式可能更好。 利用实现多一个反向元素实现 这个方法其实是更为普遍的。也就是我们实现一个反向的效果即可。通常会利用元素的伪元素。...实现各式倒影效果 下面,我们就基于上述的 DEMO,丰富我们的倒影效果。 我们核心要做的,就是通过改造伪元素,实现不同的效果,得到不一样的倒影。...,我们就能得到更为多样的不同的效果,下面是整体效果展示图: 完整的代码,你可以戳这里:CodePen Demo -- Text Reflect Effect Demo 最后 当然,倒影能做的效果远不止这些
通过本文,你能了解到 最基本的使用 CSS backdrop-filter 实现磨砂玻璃(毛玻璃)的效果 在至今不兼容 backdrop-filter 的 firefox 浏览器,如何利用一些技巧性的操作...,如果背景还是可以滚动的动态背景,通常 CSS 是无能为力的。...应用毛玻璃元素的背景只是一张静态背景图,其实方法是有很多的。...该图像值是实时的,这意味着如果被指定的 HTML 元素被更改,应用了该属性的元素的背景也会相应更改。...这种方案是我的 CSS 群中,风海流 同学提供的一种思路,非常的巧妙,并且,他自己也对这种方案进行了完整的阐述,你可以戳这里看看:在网页中实现标题栏「毛玻璃」效果,本文也是经过他的同意,重新整理发出。
在之前的这篇文章 -- 一行 CSS 代码的魅力 中,我们介绍了一种使用一行 CSS 代码就能够生成的一种美妙(也许奇怪更合适)的背景。...本文,将继续介绍背景的一些有意思的知识,利用一些极小的单位,只需要短短几行代码,就能够产生出美妙而又有意思的背景效果~ 数量级对背景图形的影响 本文的主角主要是: 多重径向渐变(repeating-radial-gradient...这里 0.1deg 非常关键,这里的角度越小(小于 1deg 为佳),图形越酷炫,也就是我们说的数量级对背景图形的影响。...同时,这个单位越小,图片的细节越多,具体的可以自己再尝试。...以下述代码为例子,其中的单次绘制图形的终止点 1px,也就是本文的重点,它究竟可以小到什么程度呢?
本文属于 CSS 绘图技巧其中一篇,系列文章: 在 CSS 中使用三角函数绘制曲线图形及展示动画 CSS奇思妙想 -- 使用 CSS 创造艺术 将介绍一些利用 CSS 中的 background、mix-blend-mode...在这个过程中,你会更好的掌握不同的渐变技巧,更深层次的理解各种不同的渐变。...我们使用上面的 DEMO,尝试其他的混合模式,可以得到不同的效果。 ? 可以看到,不同的混合模式的叠加,效果相差非常之大。当然,运用不同的混合模式,我们也就可以创造出效果各异的图案。...上述的叠加效果是基于大片大片的实色的叠加,当然 mix-blend-mode 还能和真正的渐变碰撞出更多的火花。 在不同的渐变背景中运用混合模式 在不同的渐变背景中运用混合模式?...借助了 CSS-Doodle,我们只设定大致的规则,辅以随机的参数,随机的大小。接着就是一幅幅美妙的背景图应运而生。 下面是运用上述规则的尝试的一些图案: ?
这个效果是我在业务开发的过程中遇到的一个类似的小问题。其实即便让我借助 Javascript ,我的第一反应也是,感觉很麻烦啊。所以我一直在想,有没有可能只使用 CSS 完成这个效果呢? ?...分析需求 第一眼看到这个效果,感觉这个跟随滚动动画,仅靠 CSS 是不可能完成的,因为这里涉及了页面滚动距离的计算。 如果想只用 CSS 实现,只能另辟蹊径,使用一些讨巧的方法。...Wow,黄色块的颜色变化其实已经很能表达整体的进度了。其实到这里,聪明的同学应该已经知道下面该怎么做了。...眼尖的同学可能会发现,这样之后,滑到底的时候,进度条并没有到底: ?...而 + 5px 则是滚动进度条的高度,预留出 5px 的高度。再看看效果,完美: ?
我必须也要让大家全面感受下其中所蕴含的那些奇思妙想! 所以这里我想写一篇超几儿通俗易懂解析ThreadLocal的文章,相关流程会使用大量图示解析,以证明:我是干货,不是水比!...,就实现了线程的数据隔离,也能得到几点结论 ThreadLocal对象本身是不储存数据的,它本身的职能是执行相关的set、get之类的操作 当前线程的实例,负责存储ThreadLocal的set操作传入的数据...[img] 取index值 上面代码中,用取得的hash值,与ThreadLocalMap实例中数组长度减一的与操作,计算出了index值 这个很重要的,因为大于长度的高位hash值是不需要的 此处会将传入的...key为null的Entry,以它为界限 向前探测的时候,未碰到key为null的Entry 而向后探测的时候,碰到的key为null的Entry 然后改变slotToExpunge的值,使其和staleSlot...ThreadLocal的源码虽然并不多,但是其中有很多奇思妙想,有种萝卜雕花的感觉,这就是高手写的代码吗?
本文只想唠唠EurekaServer中关于读写锁使用的一些思考。 对于我们正常逻辑思维来说,读锁就是在读的时候加锁,写锁就是在写的时候加锁,这似乎没有什么技巧也没有什么好探讨的?...我们在这里可以把读写锁理解为和ReentrantLock一样的锁,只是带了读写操作的区分。 读与读之间不互斥,读与写、写与写之间是互斥的,这样做的目的是能够提升读写操作的性能。...读写锁的使用很简单,JDK中都有现成的API供我们调用。往往一些牛叉的框架也都是使用这些JDK底层的API 构建起来的,接着我们就看EurekaServer是如何玩的吧。...** 读的时候必须要加全局锁防止新数据的写入更新,因为读的时候需要获取注册表的hash值,这里必须要加互斥锁 注册中心的**"写操作":** 注册中心的register/cancel/evict...等操作都是可以同步执行的...,配合缓存的时候可以减少写锁的使用频率 其他的对于「最近更新队列recentlyChangedQueue」或者「注册表registry」的写入更新操作都是线程安全的,他们不需要通过读写锁来保证 3、注册表
需求分析 在开发一个项目之前,要明确自己的目标。 我要做的很简单,就是一个精简的浏览器主页。...况且本身并不需要很大的工作量。 那么要给主页添加哪些功能呢?首先最重要的肯定是 搜索、然后是快捷链接,其他的功能都是锦上添花。 2....产品设计 确认目标和需求之后,要设计主页的页面布局,由于我是一名审美和设计能力低下的程序员,自己做的页面一直被说丑,因此我的整个设计参考了 KIM 主页,非常喜爱和佩服 KIM 主页的设计。 ?...也可以选择主流的前端框架,比如轻量的 Vue、React,搭配一个好看优雅的组件库,从而可以灵活地实现页面交互、省去自己开发组件的麻烦。...组件库上,我选择了蚂蚁金服的 Ant Design,比较流行,而且组件支持多端自适应,能够让主页在移动端下也能得到不错的浏览效果,提供的导航菜单、抽屉、按钮等组件也能够满足我的要求。 ?
我们在这里可以把读写锁理解为和ReentrantLock一样的锁,只是带了读写操作的区分。 读与读之间不互斥,读与写、写与写之间是互斥的,这样做的目的是能够提升读写操作的性能。...读写锁的使用很简单,JDK中都有现成的API供我们调用。往往一些牛叉的框架也都是使用这些JDK底层的API 构建起来的,接着我们就看EurekaServer是如何玩的吧。...注册中心的"读操作": 读的时候必须要加全局锁防止新数据的写入更新,因为读的时候需要获取注册表的hash值,这里必须要加互斥锁 注册中心的"写操作": 注册中心的register/cancel/evict...的更新是有Bug的,我在之前的文章中也有提到过,看下源码注释: ?...这里是注册中心故障感知时的一段代码,作者也在注释中说了:"renew()操作是有问题的,这里多加了一个duration的时间,但是我们又不会去修复这个问题,这里仅仅是影响故障被感知的时间而已,而我的系统就是最终一致的
马斯克一直被称为科技行业的奇才,他的天马行空的想象力和远见卓识帮助他实现了许多似乎不可能的任务,将许多科幻小说中的想法变成现实。在这篇文章中,我们将探索马斯克的奇思妙想,以及他如何将它们变成现实。...从电动汽车到太空旅行,马斯克一直在推动技术的边界。他对未来的愿景远远超越了当前的现实,通过将科学和技术带到新的高度,他试图改变我们对未来的看法。...这些举措加速了电动汽车的普及,推动了整个汽车行业的革新。 移民火星 马斯克的下一个目标是让人类成为一个多星球物种。他相信,只有通过太空探索,人类才能生存下去,并在更广泛的宇宙中繁荣发展。...他不断地推动技术和科学的边界,不断寻找新的方法来解决人类面临的问题。虽然有些人可能认为他的一些想法有些“疯狂”,但这些想法却激发了人们对未来的想象力,同时也引领了科技创新的发展方向。...虽然Hyperloop目前还没有商业化应用,但这一想法却已经引发了全球各地的探索和试验。 总的来说,马斯克的想法和努力一直在推动着世界的变革,他所创造的公司和产品也在改变着我们的生活。
与此同时,学习这个 API 的时候,又被 React 官方文档在案例中使用的奇思妙想给折服了。真的厉害。...该回调函数的具体执行内容由 fn 定义 fn 接收当前状态和当前提交的表单对象作为参数,它执行的返回值决定了新状态的值。...元素的子组件中拿到异步请求的状态,从而更新请求中 UI 的样式 但是,这个时候,在提交时,如果我们还有其他的状态,需要依赖于表单数据的变化而变化,那我们应该怎么办呢?...在 React 19 的设计理念中,尽可能的把异步操作的代码逻辑放到组件之外去,是最重要的一个原则性问题。我们之前花了很长时间学习的 use 就是在践行这一原则。...这样的好处就是能够极大的简化组件代码的逻辑,让代码看上去非常的整洁与干净。 除此之外,在项目结构组织上,也具有非常重要的意义。
领取专属 10元无门槛券
手把手带您无忧上云