- 博客(12)
- 收藏
- 关注
原创 Github Page和域名解绑
此时需要实现Github Pages和域名解绑,解绑方式许多博客已经说过,核心就是要删除CNAME,然而,使用这种方法还是会跳转,后面发现是因为配置了Hexo,需要删除掉hexo目录下的。:当域名过期后,通过username.github.io访问Github Pages会自动跳转到原过期域名,从而无法访问。文件后再提交,才能删除掉CNAME。接下来再清除浏览器缓存应该就可以正常访问github Page了。
2023-09-06 16:43:17
249
1
原创 Android中跨程序共享数据-ContentProvider
Android中跨程序共享数据-ContentProvider之前介绍的持久化技术保存的数据只能在当前应用程序中访问,虽然也提供了操作模式如MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE,但由于安全性问题被弃用。现在Android官方更推荐使用ContentProvider技术。8.1 ContentProvider简介ContentProvider主要用于不同应用程序之间实现数据共享功能。它提供了一套完整的机制,允许一个程序访问另一个程序的数据,且能保证安全性。不同
2022-02-16 15:50:46
6247
原创 第一行代码Kotlin笔记
基础语法when条件语句Kotlin中的when语句类似于Java中的switch语句,但好用的多。when语句允许传入一个任意类型的参数,然后在结构体中定义一系列条件,格式是:匹配值 -> {执行逻辑},当执行逻辑只有一行时,{}可以省略fun getScore(name: String) : Int = when(name) { "Tom" -> 86 "Jim" -> 77 else -> 0}when语句还可以进行类型匹配// Num
2022-02-13 19:10:40
1304
原创 Android中的数据存储——持久化技术
前面我们在登录界面输入的账号密码等数据,在程序关闭或者其他原因导致内存被回收后,就会丢失,这些数据成为瞬时数据,其存储在内存中。但对于某些关键数据我们想要保存起来,这就需要用到持久化技术了。7.1 持久化技术简介持久化技术就是将数据保存到存储设备中,持久化技术提供了一种机制,可以让数据在瞬时状态和持久状态间进行转换,Android中提供了三种方式用于简单地实现数据持久化功能:文件存储、SharedPreferences存储以及数据库存储。7.2 文件存储文件存储比较适合存储一些简单的文本数据或者二进
2022-02-13 19:08:50
1963
原创 Android中的广播机制
6.1 广播机制简介Android中的广播分为两种类型:标准广播和有序广播。标准广播:完全异步执行的广播,在广播发出后,所有的BroadcastReceiver几乎会在同一时刻接收到该广播,因此是无序的,效率会比较高有序广播:是一种同步执行的广播,在广播发出后,同一时刻只有一个BroadcastReceiver接收到这条广播消息,当这个BroadcastReceiver中的逻辑执行完毕后,才能继续传给其他接收者,此时的BroadcastReceiver是有先后顺序的,优先级高的先收到消息,并且前面的还
2022-02-13 19:08:07
2026
原创 Android UI控件和布局
4.1 如何编写程序界面编写XML,这是传统的方法ConstraintLayout,Google推出的新方法,可以在可视化编辑器中拖动控件操作这里使用的是编写XML方法4.2 常用控件4.2.1 TextView修改activity_main.xml的代码如下:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/
2022-02-13 19:06:45
1072
原创 Android中的Activity
说明: 本文是郭霖《第一行代码-第3版》的读书笔记Activity是包含用户界面的组件,主要用于和用户交互,一个应用程序中可以包含一个或多个Activity3.2 基本用法创建一个Empty Activity,之后自己来添加Activity手动创建Activityproject模式下,在app/src/main/java/com.example.projectname目录下新建一个Activity。项目的任何Activity都应该重写OnCreate()方法。创建和加载布局Android程序
2022-02-13 19:05:39
1652
原创 C++ extern关键字用于修饰变量时的作用
extern关键字用于修饰变量时的作用在看extern用于修饰变量的作用之前,让我们先看看变量的声明和定义。变量声明和定义变量的声明为变量规定了类型和名字,定义除了声明的功能外,还会申请内存空间,可能会为变量赋一个初始值。变量可以被声明多次,但只能定义一次。int j; //这是变量的定义!extern int j; //变量的声明如果我们想声明一个变量,需要在前面加上extern一个包含了对变量的显式初始化赋值操作的声明其实是定义extern int j = 1024; //变量的定义
2021-11-28 20:03:05
742
原创 C++ float强制类型转换需注意的小Bug
C++ float强制类型转换需注意的小Bug假设现在有这样一个需求,将double类型的数据转成float,由于C++并不会执行隐式类型转换,因此一般的做法是用float强制转换。示例如下:float b = (float) a; //a是double类型看上去这个转换人畜无害,但请见下面示例:可以看到,a原来是463440.620,而转成float类型,变成了463440.625,损失了相当的精度。究其原因,其实是float用32位存储,只能保证6 ~7位的有效数字,而double是64
2021-11-27 10:37:32
2539
原创 流畅的Python读书笔记-第2章-序列类型(list、tuple等)
第2章 序列构成的数组2.1 序列类型概述Python标准库用C实现了丰富的序列类型:容器序列list、tuple、collections.deque这些序列能存放不同类型的数据扁平序列str、bytes、bytearray、memoryview、array.array这些序列只能容纳一种类型容器序列存放的是对象的引用,而扁平序列里存放的是对象的值而不是引用。即,扁平序列其实是一段连续的内存空间,但它里面只能存放诸如字符、字节和数值这种基本类型。从序列类型是否能被修改,可以分为:
2021-09-25 18:35:34
98
原创 Eigen中norm、normalize、normalized的区别
# Eigen中norm、normalize、normalized的区别#### norm()对于Vector,norm返回的是向量的二范数,即$ \|\mathbf{x}\|_{2}=\sqrt{\sum_{i=1}^{N} x_{i}^{2}}$例如:```c++Vector2d vec(3.0,4.0);cout << vec.norm() << endl; //输出5```对于Matrix,norm返回的是矩阵的弗罗贝尼乌斯范数(Frobe...
2021-05-29 16:03:54
25203
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人