<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[時を越える笑顔]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lp8800</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lp8800]]></copyright><item><title><![CDATA[对随机游走问题的分析特定行为模式的建模]]></title><link>https://blog.youkuaiyun.com/lp8800/article/details/142034904</link><guid>https://blog.youkuaiyun.com/lp8800/article/details/142034904</guid><author>lp8800</author><pubDate>Sun, 08 Sep 2024 22:57:46 +0800</pubDate><description><![CDATA[如果你的“特定行为模式”是已知的一个子序列，可以使用 DTW 来找出数据序列中与该模式最匹配的部分，即便模式出现时有速度或时间上的变动。如果你已经有一个明确的行为模式（比如一个子序列），可以使用滑动窗口的方式扫描整个序列，然后在每个窗口内应用简单的匹配算法，像是欧几里得距离或余弦相似度，找到与模式最相似的部分。如果你的行为模式表现为一组状态的有序转换，可以用马尔科夫链来分析随机游走的状态变化，并检测出符合特定状态转移规则的模式。适用场景：行为模式是已知的具体模式，且你想在整个序列中快速查找它的出现。]]></description><category></category></item><item><title><![CDATA[Flutter 中需要注意的一些问题]]></title><link>https://blog.youkuaiyun.com/lp8800/article/details/124034552</link><guid>https://blog.youkuaiyun.com/lp8800/article/details/124034552</guid><author>lp8800</author><pubDate>Fri, 03 Feb 2023 09:41:50 +0800</pubDate><description><![CDATA[Flutter中的一些布局本身存在一些隐性的约束

]]></description><category></category></item><item><title><![CDATA[android-加固方案对比]]></title><link>https://blog.youkuaiyun.com/lp8800/article/details/128861142</link><guid>https://blog.youkuaiyun.com/lp8800/article/details/128861142</guid><author>lp8800</author><pubDate>Fri, 03 Feb 2023 09:40:09 +0800</pubDate><description><![CDATA[网上，有一些安全论坛的大牛们，，使用打进包里面so文件，或者其他文件，进行二进制的读取，和寻找规律，如果不是全量数据的加密，而是使用基础结构变化的加固方案，还是有破解的风险的，还是那句那，复杂度往往会带来首次启动时间过长。所以个人还是比较偏爱360的。360的加固流程大体和阿里聚安全差不多，加固前选择项比较多，可以选择增强服务比如日志分析，X86架构，应用升级通知，对于签名的选择。但是首次启动的时间，往往和加密的复杂度相关，所以，有的时候，首次加密时间越长有的时候可以认为越安全，但是安全没有绝对的。]]></description><category></category></item><item><title><![CDATA[Dart语言var、dynamic、Object关键字的区别]]></title><link>https://blog.youkuaiyun.com/lp8800/article/details/124050409</link><guid>https://blog.youkuaiyun.com/lp8800/article/details/124050409</guid><author>lp8800</author><pubDate>Fri, 08 Apr 2022 20:58:26 +0800</pubDate><description><![CDATA[1、var关键字
Dart语言中var关键字可以接受任何类型的变量，但是一旦赋值，类型推断就会确定这个变量的类型 ，由于Dart是个强类型语言，不能在以后的赋值中变更其类型。
  var age = 10;
  age = "10"; //Error!
  print(age);

2、dynamic关键字
dynamic关键字顾名思义，动态类型，相比var关键字更加灵活多变，赋值不限制类型，且在后续赋值中可以改变类型。
要小心使用这个关键字，如果调用了不存在的方法或者变量，则无法在编译期报错，而会在运行期]]></description><category></category></item><item><title><![CDATA[使用Gson 2.8.9版本发生的编译期间问题]]></title><link>https://blog.youkuaiyun.com/lp8800/article/details/122228809</link><guid>https://blog.youkuaiyun.com/lp8800/article/details/122228809</guid><author>lp8800</author><pubDate>Thu, 30 Dec 2021 09:06:55 +0800</pubDate><description><![CDATA[android旧项目升级Gson版本到2.8.9以后，编译期间出现了以下问题：
java.lang.RuntimeException
    at org.objectweb.asm.ClassVisitor.visitModule(ClassVisitor.java:148)
    at org.objectweb.asm.ClassReader.readModule(ClassReader.java:731)
    at org.objectweb.asm.ClassReader.accept(Cl]]></description><category></category></item><item><title><![CDATA[WebView使用loadUrl和loadData的区别造成的问题]]></title><link>https://blog.youkuaiyun.com/lp8800/article/details/122151898</link><guid>https://blog.youkuaiyun.com/lp8800/article/details/122151898</guid><author>lp8800</author><pubDate>Sun, 26 Dec 2021 09:46:53 +0800</pubDate><description><![CDATA[在使用WebView时我们比较熟悉的加载html的两个方法，一个是loadUrl，另一个是loadData，这两个方法的函数签名分别是：
public void loadUrl(String url) 
public void loadData(String data, String mimeType, String encoding) 

这两个WebView函数由于加载时loadData方法实现存在一些问题，它无法支持一些特殊的标点符号进行判断处理，其实现和loadUrl差别巨大，因此会有一些很奇怪的问]]></description><category></category></item><item><title><![CDATA[如何让Kotlin类成员具备动态访问性]]></title><link>https://blog.youkuaiyun.com/lp8800/article/details/121827742</link><guid>https://blog.youkuaiyun.com/lp8800/article/details/121827742</guid><author>lp8800</author><pubDate>Thu, 09 Dec 2021 17:36:46 +0800</pubDate><description><![CDATA[问题
对于Kotlin的默认的类对象来说，一个数据类访问成员的方法仍然是传统的点运算符来访问成员变量。
例如以下类定义：
class LegacyUser(){
    var name: String? = null
    var age: Int? = null
}

或者
//数据类
data class LegacyUser(var name: String, var age: Int)

我们访问时仍然只能按域成员访问方式去访问
 val legacyUser = LegacyUser()
 p]]></description><category></category></item><item><title><![CDATA[理论突破提升数据存储效率（转载）]]></title><link>https://blog.youkuaiyun.com/lp8800/article/details/121418047</link><guid>https://blog.youkuaiyun.com/lp8800/article/details/121418047</guid><author>lp8800</author><pubDate>Fri, 19 Nov 2021 11:02:57 +0800</pubDate><description><![CDATA[包括 MIT 计算机科学博士生 William Kuszmaul 在内的三名研究人员的发现可以提高计算机数据存储和检索的效率。这项发现与“线性探测哈希表（linear-probing hash tables）”有关，于 1954 年引入，是当今可用的最古老、最简单和最快的数据结构之一。数据结构提供了在计算机中组织和存储数据的方法，哈希表是最常用的方法之一。在线性探测哈希表中，可存储信息的位置位于一个线性数组中。
Kuszmaul 表示，假设一个数据库旨在存储 10,000 个人的社会保障号码。“我们获取你的]]></description><category></category></item><item><title><![CDATA[Android OpenGL ES 知识总览2——坐标系]]></title><link>https://blog.youkuaiyun.com/lp8800/article/details/121222460</link><guid>https://blog.youkuaiyun.com/lp8800/article/details/121222460</guid><author>lp8800</author><pubDate>Tue, 09 Nov 2021 12:27:35 +0800</pubDate><description><![CDATA[坐标变换
在3D坐标空间中，用于表示图形的数据一定包含位置信息(x,y,z)(x,y,z)(x,y,z)，但是除此之外，还要有一个量用于标定用户视角与被观测物体的距离关系，用户视角由成为摄像机Camera，因此需要增加一个维度取名叫www，那么着色器的坐标gl_Position就会多增加一个量成为一个四维向量(x,y,z,w)(x,y,z,w)(x,y,z,w)。 这套OpenGL的坐标系统被称为归一化设备坐标。既然www分量定义了视角关系，那么它相当于定义了一个距离空间，这个空间要求(x,y,z)(x,y]]></description><category></category></item><item><title><![CDATA[Android OpenGL ES 知识总览1]]></title><link>https://blog.youkuaiyun.com/lp8800/article/details/121163405</link><guid>https://blog.youkuaiyun.com/lp8800/article/details/121163405</guid><author>lp8800</author><pubDate>Sat, 06 Nov 2021 17:22:10 +0800</pubDate><description><![CDATA[OpenGL ES是在Android, iOS等移动平台上使用的3D图形绘制引擎，其本身是一套API标准，khronos组织负责这套API的设计规范，具体实现交由硬件厂商、模拟器厂商与操作系统厂商来完成，只要求符合其API标准的要求，就可以在不同的硬件上使用相同的API来达到平台一致的显示要求。
着色器(Shaders)
什么是着色器？
着色器就是OpenGL用于指定界面绘制元素的一系列属性和方法的一种控制屏幕上的像素的程序，这个程序运行在不同厂商的GPU处理器或者模拟处理程序中，它控制着每个像素的颜色、位]]></description><category></category></item><item><title><![CDATA[Jetpack支持库CameraX使用入门——相机预览]]></title><link>https://blog.youkuaiyun.com/lp8800/article/details/121088414</link><guid>https://blog.youkuaiyun.com/lp8800/article/details/121088414</guid><author>lp8800</author><pubDate>Mon, 01 Nov 2021 22:17:48 +0800</pubDate><description><![CDATA[概览
CameraX是一个Jetpack支持库，用来帮助开发者简化相机应用的开发和适配工作，它将一系列旧的Camera和新的Camera2的相机API进行统一适配，将两套设计迥异的相机API进行适配设计，并且作为androidX并作为Jetpack的一部分再发布，用来简化开发者开发相机功能时的大量重复适配的工作。最低可以适配到API Level 21。
由于加入到了Jetpack组件当中，它也增加了一部分功能用来绑定到LifecycleOwner等API来适配到生命周期接口的能力，使得开发者无需再重复编写生]]></description><category></category></item><item><title><![CDATA[为红米2 redmi 2 (wt88047) 编译Lineage 15.1时遇到供应商文件缺失]]></title><link>https://blog.youkuaiyun.com/lp8800/article/details/120413984</link><guid>https://blog.youkuaiyun.com/lp8800/article/details/120413984</guid><author>lp8800</author><pubDate>Wed, 22 Sep 2021 14:17:29 +0800</pubDate><description><![CDATA[在Lineage 官网上下载Lineage OS  15.1 源码后，通过breakfast wt88047切换到设备下，下一步使用brunch wt88047命令开始完全构建时出现文件缺失。
编译Lineage 15.1时遇到供应商vendor文件缺失
ninja: no work to do.
[1/2] glob device/*/*/Android.bp
ninja: no work to do.
Environment variable BUILD_NUMBER was modified (763]]></description><category></category></item><item><title><![CDATA[如何使用ddd+gdb+qemu搭建开源的裸板arm汇编调试环境]]></title><link>https://blog.youkuaiyun.com/lp8800/article/details/120155681</link><guid>https://blog.youkuaiyun.com/lp8800/article/details/120155681</guid><author>lp8800</author><pubDate>Tue, 07 Sep 2021 13:45:53 +0800</pubDate><description><![CDATA[arm汇编在学习和开发过程中，免不了需要通过arm模拟器来进行一些调试，以及查看寄存器、查看汇编、单步调试等等操作，以下介绍一种全开源工具来调试arm汇编的方法。
1、预装环境
首先需要一个Ubuntu 18.04 + 的操作系统
我们需要安装一下必要的组件：

ddd
arm-none-eabi-gcc
QEMU

我们可以通过apt命令安装ddd作为可视化的汇编调试工具。
sudo apt install ddd qemu-system-arm 

我们不可以使用apt去安装arm-none-eabi交]]></description><category></category></item><item><title><![CDATA[Ubuntu下编译最新版本全志开源FEL模式工具sunxi-tools]]></title><link>https://blog.youkuaiyun.com/lp8800/article/details/119877808</link><guid>https://blog.youkuaiyun.com/lp8800/article/details/119877808</guid><author>lp8800</author><pubDate>Mon, 23 Aug 2021 23:09:23 +0800</pubDate><description><![CDATA[1、sunxi-tools介绍
sunxi-tools是一组用于全志SoC系列芯片的开源命令行工具，全志的SoC一般以sun开头，x为数字，以i结尾。对于sun4i，sun5i，sun6，sun8i，sun9i.等等系列都可以使用这个工具。比如手上的这个板子是H616，它的名字是sun50i-H616。
sunxi-tools是一组工具集，这组工具可以用于对全志SoC进行片上程序的封装、FEX和二进制转换、PIO配置、FEL工厂工程模式等等一系列有用的工具。
比如我们这次要用到的这个工具集中的sunxi-f]]></description><category></category></item><item><title><![CDATA[使用Eclipse搭建C语言开发并通过SSH运行到ARM开发板上]]></title><link>https://blog.youkuaiyun.com/lp8800/article/details/119789358</link><guid>https://blog.youkuaiyun.com/lp8800/article/details/119789358</guid><author>lp8800</author><pubDate>Thu, 19 Aug 2021 17:29:32 +0800</pubDate><description><![CDATA[在ARM嵌入式开发环境中，我们大多数见到所使用的工具一般是ARM Development Studio, 或者Developer Suite 5等等付费的开发工具包，而对于我们在学习和工程环境中，有时候并不想购买昂贵的工具包，我们可以使用开源的工具链搭建一套开发环境，这就用不着购买昂贵的ARM官方的ADS、Keil等开发工具了。
实际上我们可以从arm官网上去下载ARM Development Studio，安装起来并且申请一个30 天trial 的license使用，实际上对于熟悉Eclipse的人来说这]]></description><category></category></item><item><title><![CDATA[香橙派Zero 2(H616)使用ffmpeg进行音频播放测试]]></title><link>https://blog.youkuaiyun.com/lp8800/article/details/119730301</link><guid>https://blog.youkuaiyun.com/lp8800/article/details/119730301</guid><author>lp8800</author><pubDate>Mon, 16 Aug 2021 12:55:27 +0800</pubDate><description><![CDATA[近期入手了一块Orange Zero 2，该开发板的配置是Allwinner(全志) H616 CPU,Mali G31 GPU，RAM 1G，首先我在SD卡上刷写的是

]]></description><category></category></item><item><title><![CDATA[Redmi AC2100上使用Hiboy Padavan固件进行子网IPv6分配，Padavan子网无法获取IPv6地址]]></title><link>https://blog.youkuaiyun.com/lp8800/article/details/119606548</link><guid>https://blog.youkuaiyun.com/lp8800/article/details/119606548</guid><author>lp8800</author><pubDate>Wed, 11 Aug 2021 15:15:51 +0800</pubDate><description><![CDATA[1、基础设置
默认情况下Padavan连接到光猫以后，会自动获取并为默认eth3分配WAN口的IP地址，支持IPv6的光猫会获取IPv6地址给WAN口，但是不会继续对LAN中子网设备进行IPv6地址的分配了。

通过ifconfig命令可以得到：小米路由器迷你的WAN接口是eth2.2，红米AC2100的WAN接口是eth3。

我们要对路由器本身进行一些设置。
首先我们要确保关闭所有硬件加速功能。
如果配置硬件加速，则以下很多设置将无法生效，无法获取IP地址等等，导致数据无法正常转发。

我们可以通过无状]]></description><category></category></item><item><title><![CDATA[每次新建的maven项目修改国内镜像加速pom.xml中的依赖下载]]></title><link>https://blog.youkuaiyun.com/lp8800/article/details/116451471</link><guid>https://blog.youkuaiyun.com/lp8800/article/details/116451471</guid><author>lp8800</author><pubDate>Thu, 06 May 2021 13:09:23 +0800</pubDate><description><![CDATA[如果不希望修改系统中maven的settings.xml，可以通过修改POM来加速下载jar包。
在节点对中，添加阿里云镜像仓库，以达到加速下载jar包的目的。
    &lt;repositories&gt;
        &lt;repository&gt;
            &lt;id&gt;aliyun-public&lt;/id&gt;
            &lt;name&gt;Spring Milestones&lt;/name&gt;
            &lt;url&g]]></description><category></category></item><item><title><![CDATA[通过uni-app使用阿里云OSS的nodejs sdk遇到的一个坑]]></title><link>https://blog.youkuaiyun.com/lp8800/article/details/115895180</link><guid>https://blog.youkuaiyun.com/lp8800/article/details/115895180</guid><author>lp8800</author><pubDate>Tue, 20 Apr 2021 10:48:21 +0800</pubDate><description><![CDATA[问题：
通过uni-cloud云函数去访问阿里云OSS时，调用list函数[1] 并且使用prefix参数来模拟目录访问时，出现某些前缀下的prefixes和objects均为undefine的问题。
背景：
近期有个小需求，通过unicloud托管在阿里云serveless的js函数，去调用OSS接口，以便于获得类似只读网盘的效果。
由于OSS是对象存储，不存在目录这个概念。所有的文件实际上是平面化管理，但是我们可以通过list函数的两个参数prefix和delimiter去获得模拟目录分组的效果。pre]]></description><category></category></item><item><title><![CDATA[Android 11/12 前台服务启动限制]]></title><link>https://blog.youkuaiyun.com/lp8800/article/details/114311475</link><guid>https://blog.youkuaiyun.com/lp8800/article/details/114311475</guid><author>lp8800</author><pubDate>Mon, 08 Mar 2021 17:03:21 +0800</pubDate><description><![CDATA[Android 12 系统下的应用程序将不会在后台服务状态下启动前台服务。

不过有几种情况可以例外，如果不满足例外的情况下，当应用从后台服务要启动一个前台服务，系统就会抛出一个IllegalStateException异常。



关于前台服务



对于应用在后台启动的服务

在android 11或更高的版本中，如果你的应用从后台服务启动了一个前台服务，那么服务会有以下的访问限制：

1、除非用户给你的应用允许了ACCESS_BACKGROUND_LOCATION 权限，否则服务不可以访问定位;
..]]></description><category></category></item></channel></rss>