Android精确测量文本宽高及基线位置的方法
前言笔者最近在做一款弹幕控件,里面涉及到绘制文本,以及文本边框。而绘制文本边框需要知道文本的左边位置,上边位置,以及文本的宽高。通常来说,使用 Canvas 绘制文本,可以通过画笔 Paint 来设置文字的大小。但是画笔的大小与文字的宽高并无直接关系。大家应该能说上几种测量文字宽高...
2024-01-10浅谈Android的Lifecycle源码分析
1. 简介很早就听说了Google的Lifecycle组件,因为项目没有使用过,所以并没有过多的接触。不过最近看到了一篇文章,其中的一条评论提到了LiveData。恰巧这两天工作内容不多,所以赶紧研究一波!不过在看LiveData之前,我觉得还是先看下Lifecycle吧(Lifecycle更像是LiveData的基础)。2. Lifecycle的简单介绍L...
2024-01-10Sass 基础 颜色函数
色彩是设计的一个美妙元素和一个至关重要的工具,同时他能帮助你更好的抓住您的客户。更为重要的是,色彩能帮你表达某些特定的情感,把用户视线带到特点的地方或者帮助你传达信息。在 Web 设计中,主要依靠颜色来表达你的色彩。如果你只是直接丢一堆颜色给用户,他们也不会集中注意力在你的...
2024-01-10使用 Sass 制作倾斜角度
最近,我不得不在一个网站大量使用倾斜角度作为其设计指南的一部分。倾斜角,是指一个区域它的顶部或底部边缘不是完全水平而是倾斜的。实现这种效果有很多种方法。例如可以将base64编码的图片应用为背景,但这会使得它很难自定义(颜色,角度等)。另一种方法是倾斜或旋转绝对定位的伪元...
2024-01-10通过唯一索引S锁与X锁来了解MySQL死锁套路
在初学者从源码理解MySQL死锁问题中介绍了使用调试 MySQL 源码的方式来查看死锁的过程,这篇文章来讲讲一个常见的案例。这次我们讲一段唯一索引 S 锁与 X 锁的爱恨情仇我们来看一个简化过的例子# 构造数据CREATE TABLE `t1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(10), `level` int(11), PRIMARY KEY (`id...
2024-01-10linux exa命令(比ls更好的展示文件体验)
安装跟随README进行安装文档中提到,exa是用Rust实现的,必须安装1.17.0或更高的Rust版本安装Rust尝试傻瓜式安装$ curl -sf -L https://static.rust-lang.org/rustup.sh | sh安装exaexa 是用 Rust 语言实现的,安装前你的系统必须支持 Rust 1.17.0 或更高的版本。exa 目前已经支持了一些常用发行版本通过软件包安装,...
2024-01-10PHP的垃圾回收机制代码实例讲解
PHP可以自动进行内存管理,清除不需要的对象,主要使用了引用计数在zval结构体中定义了ref_count和is_ref , ref_count是引用计数 ,标识此zval被多少个变量引用 , 为0时会被销毁is_ref标识是否使用的 &取地址符强制引用为了解决循环引用内存泄露问题 , 使用同步周期回收算法比如当数组或对象循环的引用自身 ,...
2024-01-10原生JS实现音乐播放器的示例代码
本文主要介绍了原生JS实现音乐播放器的示例代码,分享给大家,具体如下:效果图音乐播放器播放控制播放进度条控制歌词显示及高亮播放模式设置播放器属性归类按照播放器的功能划分,对播放器的属性和DOM元素归类,实现同一功能的元素和属性保存在同一对象中,便于管理和操作const c...
2024-01-10elementui实现预览图片组件二次封装
起因在elementui组件库中,el-image组件有个预览图片功能,比较简洁,但是和图片绑定在一起,我们只想要一个单纯的预览组件,传递一个图片,通过事件方式,显示大图分析通过查看elementui的代码,发现在image(el-image组件)目录中里面有一个image-viewer组件, el-image组件的预览功能也是通过这一个组件...
2024-01-10jdk安装及环境变量配置简介
1.JDK下载官网搜索合适版本下载点击进入或者 链接:https://pan.baidu.com/s/1rau9h1ce7vHAzxWDzIeedA 提取码:ynkx2.打开安装包,点击下一步,选择存储路径,选择下一步,再点击下一步,安装完成就OK了。3.鼠标右击这台电脑,点击属性,点击高级系统设置。4.点击环境变量,新建变量名字为java_home,变量值为JDK安...
2024-01-10CentOS安装solr 4.10.3详细教程
Solr是什么?Solr是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化。Solr是一个全文检索服务器,只需要进行配置就可以实现全文检索服务。bin:solr的运行脚本contrib:sol...
2024-01-10详解java WebSocket的实现以及Spring WebSocket
开始学习WebSocket,准备用它来实现一个在页面实时输出log4j的日志以及控制台的日志。首先知道一些基础信息:1.java7 开始支持WebSocket,并且只是做了定义,并未实现2.tomcat7及以上,jetty 9.1及以上实现了WebSocket,其他容器没有研究3.spring 4.0及以上增加了WebSocket的支持4.spring 支持STOMP协议的WebSocket通...
2024-01-10java基本教程之多线程基本概念 java多线程教程
多线程是Java中不可避免的一个重要主体。下面我们将展开对多线程的学习。接下来的内容,是对“JDK中新增JUC包”之前的Java多线程内容的讲解,涉及到的内容包括,Object类中的wait(), notify()等接口;Thread类中的接口;synchronized关键字。注:JUC包是指,Java.util.concurrent包,它是由Java大师Doug Lea完成并在JDK...
2024-01-10Java类加载原理解析
1 基本信息摘要:每个java开发人员对java.lang.ClassNotFoundExcetpion这个异常肯定都不陌生,这背后就涉及到了java技术体系中的类加载。Java的类加载机制是java技术体系中比较核心的部分,虽然和大部分开发人员直接打交道不多,但是对其背后的机理有一定理解有助于排查程序中出现的类加载失败...
2024-01-10字节可寻址内存和字可寻址内存之间的差异
内存是计算机中用于存储应用程序的存储组件。内存芯片分为相等的部分, 称为”细胞”。每个单元格由称为”地址”。例如, 存储芯片配置表示为‘64 K x 8’如下图所示。可以从上面显示的存储芯片表示中获得以下信息:1.芯片中的数据空间=64K X 82.单元中的数据空间=8位3.芯片中的地址空间== 16...
2024-01-10一行代码逃逸 Safari 沙箱
作者:CodeColorist微博:https://weibo.com/ttarticle/p/show?id=230940435411232086698410.13.6 和更早版本的 mac 存在一个低级 bug,只要一行代码即可完成 Safari 沙箱逃逸简述这个 CoreFoundation 中的漏洞影响直到 macOS High Sierra 10.13.6 (17G65),在 Mojave 中无意中被重构代码“修复”掉了。复现只要一行。在 10.13.6 的系统中先...
2024-01-10angular项目编译失败
实习项目,用的angular,把代码拉回宿舍看。结果编译失败,不知道哪里出了问题,依赖那些都放进去了,npm install 也运行过了.这个是angular/cli.json的内容后来又出现这个问题回答:基本上可以断定 npm 依赖包部分安装失败倒置的。见文章...
2024-01-10vs code怎么去掉装饰器的警告
如图 因为使用了装饰器 vs code产生了兼容警告现在希望去掉警告于是我这样设置了:在工作区中设置为true后也没作用用户设置中设置了 重启还是没用在jsconfig中设置 无用到底要如何设置才能去除警告呢?回答:同样遇到了这个问题,VS Code版本是1.24.1,解决办法是在菜单 文件->首选项->设置,用...
2024-01-10如图,在手机上打开的h5页面,带有阻尼效果,如何把最下面的div(文字输入框)固定在屏幕的最下方?
回答:1.外层容器设置box-sizing:border-box,高度100vh,然后设置上下padding空出头和底部,设置内部滚动2.fixed头和底部回答:使用 fixed 将元素固定在屏幕上让 native 端配合一下,关闭 webview 弹性滑动的 feature回答:https://www.bram.us/2016/05/0...html,body { position: fixed; overflow: hidden;}...
2024-01-10