/ Posts / 总共348篇

给博客增加自动变化的工作年限

在我博客的关于页面有一段自我介绍,其中有一个工作年限,每过一年就需要增加一次,这样比较麻烦,所以我准备使用 js 来实现自动计算。

本科 应用物理学 专业,目前主要使用 Java / Kotlin 两门语言,从事 Android ,略懂一些 C / C++ / Python / JavaScript / Nodejs 等其他语言,目前没有什么特别大的成就,在一边工作的同时维持着本站的正常运行。

首先使用 <span> 标签替换要更改的内容部分,然后定义一个标签 id.

1
从事Android <span id="development_years"></span>,略懂一些......

然后使用 <script> 标签来写日期计算相关方法:

阅读更多

Android TelephonyManager 信号强度

手机网络信号强度的单位是 dBm (毫瓦分贝),一般用负数表示。

正常手机信号变化范围是从 -110dBm (差)到 -50dBm (好)之间,如果比 -50dBm 还小的话,说明你就站在基站的附近。

2G,3G,4G 获得信号强度的方式都是重写 PhoneStateListener 的 onSignalStrengthsChanged() 方法,当信号强度发生改变的时候就会触发这个事件,我们可以在这个事件里获取信号强度。

关于 dBm,还有一个定公式:

1
2
dBm = -113 + 2 * asu  #2G
dBm = -140 + asu      #4G

阅读更多

Android Studio 配置阿里云镜像地址

背景

平时安卓项目编译较慢,其中一个原因就是要下载依赖资源包比较慢。为了解决这个问题,可以配置阿里云镜像,加速下载。

配置方法

全局配置

这种配置对所有项目默认都会生效,会自动替换默认的链接为阿里云镜像链接。

用户目录/.gradle 目录下新增文件 init.gradle.

在用户目录下新增文件示意 在用户目录下新增文件示意

init.gradle 文件添加内容,下面代码直接复制粘贴进去:

阅读更多

Google Fonts 国内使用方案

概述

当前 WordPress 等许多开源网站大部分的主题都在使用 Google 的在线字体方案 —— Google Fonts,Google 服务在大陆的崩溃情况使得大量的独立网站字体无法加载,大大影响到了国内相关网站的网页响应速度,现将解决方案总结如下:

Google Fonts 国内使用方案概览图 Google Fonts 国内使用方案概览图

解决方案一:本地加载字体包(推荐)

  1. 在 CSS 中找到被导入的 Google Fonts
1
2
#此处以该字体为例#
@import url(https://fonts.googleapis.com/css?family=Raleway:400,300,800|Lora:400italic|Playfair+Display:700);

阅读更多

Dart 语法游历记【下】「译」

Dart 是一种面向对象语言,包含类和基于 mixin 的继承两部分。每个对象是一个类的实例,并且 Object 是所有类的父类。基于 mixin 的继承指的是每个类(除了 Object )都只有一个父类,类体还可以在多个类继承中被重用。

要创建一个对象,你可以使用 new 关键词并在其后跟上一个构造函数。构造函数可以写成类名,或者类名.标识符形式。例如:

1
2
3
4
5
6
7
var jsonData = JSON.decode('{"x":1, "y":2}');

//用 Point() 创建一个点。
var p1 = new Point(2, 2);

// 用 Point().fromJson() 创建一个点。
var p2 = new Point.fromJson(jsonData);

对象的成员分为函数和数据两类(各自的方法和实例变量)。当你调用一个方法时,你是通过一个对象来调用它的:该方法可访问该对象的方法和数据。用 . 指向对象的方法和数据成员。

阅读更多

Dart 语法游历记【上】「译」

说明

从今天起我计划看一下 Flutter ,既然要学习 Flutter 势必要先看看 Dart 的语法了,于是就找到了官网的一篇文章 《A tour of the Dart language》,接下来几篇也算是对这篇文章的翻译吧,希望我能从中学到东西,也希望对大家有所帮助。

接下来会向大家展示 Dart 语言的语法特征,从变量和操作符到类和库,这里已经假设你掌握了一门计算机语言,熟悉计算机编程。关于更多 Dart 知识建议你参考语法示例 《Language samples》

启动 DartPad

DartPad 会在顶栏显示当前实例的状态,方便进行查看。打开 DartPad

Dart 中的默认入口函数是 main 函数,可以省略 void 返回声明和 String[] args 参数,例如可以这样写:

阅读更多

Hugo 配置文章内容标题索引导航

前提条件

在 Hugo 0.60.0 后我们可以方便的实现文章内标题索引了,因为从这个版本开始引入了 Goldmark MarkDown 生成引擎,基于该引擎在此版本引入了 TableOfContents 配置。

因此,你在尝试此文章的后续内容的前提是确保你的 Hugo 版本是 0.60.0 以上,查看版本命令如下:

1
2
$ hugo version
Hugo Static Site Generator v0.70.0-7F47B99E windows/amd64 BuildDate: 2020-05-06T11:17:50Z

如果你的 Hugo 版本过低,建议先升级版本。

配置文件

1
2
3
4
5
[markup]
    [markup.tableOfContents] #文章导航设置
        endLevel = 3      #3级标题以后不建立索引
        ordered = false   #是否采用有序列表
        startLevel = 2    #2级标题开始建立索引

在你的配置文件中加入上面配置,这里需要注意的是你的配置文件可能不是 toml 格式的,有可能是 yaml 格式或者 json 格式。

阅读更多

Hugo 实现复制剪贴板添加@版权信息

大致介绍

我们经常会在简书、CSDN 等这些博客平台看到复制别人的文章内容在粘贴的时候出现几行版权信息,大致内容如下:

1
2
3
4
5
6
7
8
上面查询,我的版本是 v0.70.0 如果你的版本低于 v0.65.0 则不支持我们今天要设置的代码高亮,请先升级版本。

Hugo 在 v0.65.0 版本之后使用了 Chroma 代码高亮插件,它是一个 Go 语言实现的非常漂亮并能快速生成的代码高亮工具。
---------------------
著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:水寒 源地址:https://dp2px.com/2020/05/29/hugo-highlighting/
来源:DP2PX.COM © 水寒版权声明:本文为水寒原创文章,转载请附上博文链接!

今天我们在 Hugo 博客中实现这种剪贴板,并做到如下三点:

  1. 可以过滤指定文章,也就是说部分文章不自动添加版权信息。
  2. 根据复制的字数过滤,低于一定字数不自动添加版权信息。
  3. 自动链接到原始文章路径。

阅读更多

设置 Hugo 的代码高亮

前提条件

首先我们要保证 Hugo 的版本是高于 v0.65.0 的,查询方法如下:

1
2
$ hugo version
Hugo Static Site Generator v0.70.0-7F47B99E windows/amd64 BuildDate: 2020-05-06T11:17:50Z

上面查询,我的版本是 v0.70.0 如果你的版本低于 v0.65.0 则不支持我们今天要设置的代码高亮,请先升级版本。

Hugov0.65.0 版本之后使用了 Chroma 代码高亮插件,它是一个 Go 语言实现的非常漂亮并能快速生成的代码高亮工具。

阅读更多

git pull --rebase 命令「转」

有一种场景是经常发生的。

大家都基于 develop 拉出分支进行并行开发,这里的分支可能是多到数十个。然后彼此在进行自己的逻辑编写,时间可能需要几天或者几周。在这期间你可能需要时不时的需要 pull 下远程 develop 分支上的同事的提交。这是个好的习惯,这样下去就可以避免你在一个无用的代码上进行长期的开发,回头来看这些代码不是新的代码。甚至是会面临很多冲突需要解决,而这个时候你可能还需要对冲突的部分代码进行测试回归,这就很麻烦了。

那么我们来看一下你在 pull 时候需要习惯性的加上 --rebase 参数,这样可以避免很多问题。--rebase 的本意是想让事情的发展看起来很连续和优美,而不是多出很多无用的 merge commit

阅读更多

Justified Gallery 使用中文文档

Justified Gallery 是一个方便你创建瀑布流照片的 JavaScript 库,它可以帮助你优雅的排列图片显示,使用它的网站有 500px、Flickr 和 Google.

官网地址:https://miromannino.github.io/Justified-Gallery/

如何使用

下载地址:https://github.com/miromannino/Justified-Gallery/releases

这个库使用的前提是引入 jQuery 如果你的浏览器不是旧的很离谱它都可以很好的工作。

1
2
<link rel="stylesheet" href="css/justifiedGallery.css" />
<script src="js/jquery.justifiedGallery.js"></script>

阅读更多

Android 查看内存指令

问题

最近在项目中遇到一个 Low on memory 内存过高导致应用退出问题,其中使用了一些内存查看命令,这里做一个记录,错误日志如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
I/ActivityManagerService(  443): Low on memory:
I/ActivityManagerService(  443):   ntv   N     4118 kB: zygote (pid 161) native
I/ActivityManagerService(  443):   ntv   N     2814 kB: surfaceflinger (pid 142) native
I/ActivityManagerService(  443):   ntv   N     1986 kB: logd (pid 136) native
I/ActivityManagerService(  443):   ntv   N     1925 kB: mediaserver (pid 157) native
I/ActivityManagerService(  443):   ntv   N     2749 kB: (Other native)
I/ActivityManagerService(  443):   sys   P    24827 kB: system (pid 443) fixed
I/ActivityManagerService(  443):   pers  P    37707 kB: com.android.systemui (pid 612) fixed
I/ActivityManagerService(  443):   pers  P    13423 kB: com.android.phone (pid 819) fixed
I/ActivityManagerService(  443):   pers  P     8760 kB: com.android.inputmethod.latin (pid 706) fixed
I/ActivityManagerService(  443):   pers  P     5996 kB: android.process.media (pid 575) fixed
I/ActivityManagerService(  443):   pers  P     3577 kB: com.cghs.stresstest (pid 796) fixed
I/ActivityManagerService(  443):   fore  T   153394 kB: com.dlc.huishouxiang (pid 24324) top-activity
I/ActivityManagerService(  443):             261276 kB: TOTAL
I/ActivityManagerService(  443):   MemInfo: 25032 kB slab, 140 kB shmem, 379704 kB vm alloc, 7532 kB page el stack
I/ActivityManagerService(  443):            132 kB buffers, 86556 kB cached, 42500 kB mapped, 180476 kB free
I/ActivityManagerService(  443):   ZRAM: 5652 kB RAM, 520908 kB swap total, 503928 kB swap free
I/ActivityManagerService(  443):   Free RAM: 224664 kB
I/ActivityManagerService(  443):   Used RAM: 677980 kB
I/ActivityManagerService(  443):   Lost RAM: 1158732 kB
I/ActivityManagerService(  443): Start proc 3350:com.android.smspush/u0a43 for service com.android.smspush/.WapPushManager

从日志上 18 ~ 20 行看 Lost RAM 占用太大了,而 Used RAM 占用并不大。

Free RAM:为剩余内存。

Used RAM:为用户态使用总内存。

Lost RAM:为内核态使用内存,比如 OpenGL 纹理内存、GPU 占用内存、图形显示 ION buffer 都包含在 Lost RAM 里,从字面意思是理解它是丢失的内存,也就是说它是操作系统无法解释和正常利用的内存。

其中 Lost RAM = TotalRAM - FreeRAM - UsedRAM 也可以理解为其他内存。

阅读更多