自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 收藏
  • 关注

原创 梳理一下常见的 JavaScript 数组操作

需要注意的是,reduce()方法会遍历数组的所有元素,并在每个元素上调用回调函数,进行累加或其他操作。最后,reduce()方法将返回最终累加的结果。如果数组为空,并且没有提供初始值,reduce()方法将抛出 TypeError。因此,在使用reduce()方法时,需要确保数组不为空或者提供初始值。方法是数组的一个高阶函数,用于对数组的所有元素进行累加计算,最终返回一个结果。reduce()方法接受一个回调函数作为参数,并且可以接受一个初始值作为累加的起始值。

2023-08-06 08:39:14 370

原创 HTTP协议各版本介绍

尽管HTTP的不同版本具有各自的特性和改进,但它们都遵循相同的基本原理和目标,即通过协议进行数据交换和通信。目前,HTTP/1.1和HTTP/2仍然是最常用的版本,而HTTP/3则在积极发展中,并为HTTP通信带来更多的优化和改进。

2023-07-26 22:48:34 1183

原创 Web Worker的概念、用法、使用场景

通过以上的示例,您创建了一个名为 worker.js 的 JavaScript 文件,并使用 new Worker() 方法在主线程中创建了一个 Web Worker。主线程通过 worker.postMessage() 向 Web Worker 发送消息,并通过 worker.onmessage 监听从 Web Worker 接收到的消息。在 Web Worker 的代码中,通过 self.postMessage() 将结果发送回主线程,并在主线程中处理和输出结果。​。

2023-07-23 22:58:21 10407 1

原创 TypeScript中Class Interface Type的定义和区别

Class是用于定义对象的结构和行为,它是数据和行为的封装。Interface是用于描述对象的结构和行为的规范,它是对类的抽象。Type是用于定义数据的形状和结构,它是对数据的抽象。它们之间的区别在于使用方式和目的不同。Class用于创建对象,Interface用于定义规范,而Type用于定义数据类型。在实际应用中,根据具体需求选择合适的工具。

2023-07-22 23:43:54 1029

原创 网络协议知识梳理

TCP/IP协议:是互联网的核心协议,其中TCP负责数据的可靠传输,IP负责数据的路由和寻址。HTTP协议:用于在Web浏览器和Web服务器之间传输超文本数据,是Web应用开发中最常用的协议。UDP协议:与TCP类似,用于数据的传输,但不提供可靠性和顺序性,适用于实时通信等场景。FTP协议:用于文件的上传和下载,支持文件的管理和权限控制。DNS协议:用于将域名转换为IP地址,实现域名解析功能。DHCP协议:用于自动分配IP地址和其他网络配置信息。

2023-06-28 22:48:58 3640

原创 外部H5页面打开微信小程序最新流程

当前时间2022年11月22日,记录一下外部H5如何打开指定微信小程序的指定页面最新流程。以上适用于短信、邮件、外部网页、微信内等拉起小程序的业务场景。建议这步由后端完成请求方式:POST(这个token后端根据微信接口可以生成,不做详细介绍,可参考)这里的即是微信小程序 scheme 码,注意:自 2022 年 4 月 11 日起,URL Scheme有效期最长 30 天,不再支持永久有效的URL Scheme、不再区分短期有效URL Scheme与长期有效URL Scheme。

2022-11-23 09:52:57 5710 1

原创 Android 自有App内部跳转到微信小程序的方法

3)com.android.tools.build:gradle 需要升级至 3.6.0 版本,建议升级至最新的 3.6.4 版本。1)Android Studio 需要升级至 3.3 及以上,建议升级至 4.0 及以上版本;2)Android SDK Build-Tools 需要升级至 30 及以上版本;2.需打包已签名成功的apk验证,否则调用api时会提示校验失败。以上完成,即可通过App跳转到指定的微信小程序了。,android11如果不申明,可能使用时报错。WXEntryActivity中。

2022-10-10 17:59:22 4993

原创 Android全局悬浮窗Dialog

1.AndroidManifest.xml中申请如下权限: 2.从Android6.0开始,不仅需要上述权限,还需要动态申请此权限,用户手动开启才行。3.当在使用中出现权限拒绝,类型是2003时,完整代码如下:

2022-10-09 16:12:32 1305

原创 Jetpack DataBinding使用--Jetpack系列

DataBinding是一种支持库,借助该库,可以使用声明性格式(而非程序化地)将布局中的界面组件绑定到应用中的数据源。布局通常是使用调用界面框架方法的代码在 Activity 中定义的。

2022-06-28 14:51:17 666

原创 Jetpack LiveData使用--Jetpack系列

LiveData 是一种可观察的数据存储器类。与常规的可观察类不同,LiveData 具有生命周期感知能力,意指它遵循其他应用组件(如 Activity、Fragment 或 Service)的生命周期。如果观察者(由 Observer 类表示)的生命周期处于 STARTED 或 RESUMED 状态,则 LiveData 会认为该观察者处于活跃状态。LiveData 只会将更新通知给活跃的观察者。为观察 LiveData 对象而注册的非活跃观察者不会收到更改通知。......

2022-06-27 16:19:06 130

原创 Jetpack Lifecycle使用--Jetpack系列

Jetpack Lifecycle

2022-06-20 15:33:10 191

原创 AIDL跨进程示例

1.创建服务端APP项目main包下创建aidl文件夹,new-->aidl 创建如IMyAidlInterface.aidl文件举例:// IMyAidlInterface.aidlpackage com.ktbase.app;interface IMyAidlInterface { String getName(); void setName(String name);}AS rebuild之后,在build文件夹中可以看到编译成功的java文件,服务

2022-03-24 14:11:16 131

原创 Taro webview中的h5页面如何使用原生小程序API

Taro小程序开发过程中,往往会遇到h5页面与原生页面互相通讯的过程,而微信小程序为webview组件提供了JSSDK,使用方式:1.在h5项目的入口文件(即index.html)中与meta标签同一层级下,添加远程依赖<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>以上即在整个项目全局引入了JSSDK(这里不得不吐槽一下微信小程序开发

2021-09-01 16:40:28 4713 1

原创 Taro小程序webview使用API及避坑指南

Taro小程序webview组件是一个可以用来承载网页的容器,会自动铺满整个小程序页面。注意:个人类型的小程序暂不支持使用。客户端 6.7.2 版本开始,navigationStyle: custom 对 webview组件无效,小程序插件中不能使用。以上意味着:webview的页面无法自定义导航栏,无法自定义高度、样式等,去加载了webview,那么webview中的h5页面将具备最高控制权,所以小程序开发者如果想在webview组件上做任何修改,只能建议自定义组件。小程序开发者可以做哪些?1.可

2021-08-31 10:53:59 7355 1

原创 解决Taro小程序windows下自定义导航栏无法生效的兼容性问题

背景及发现的问题:小程序在手机、Mac下布局样式UI显示正常,但在windows下PC版微信上的小程序显示导航栏却出现了两个,自定义导航栏无法盖过默认导航栏生效,当前windows版微信版本3.3.5.42(已反馈此问题至微信,但当前版本仍未解决),此问题不仅仅出现于本人的小程序中,观察了如京东小程序、饿了么小程序等,都有同样的问题,页面会整体下移,导致部分功能可能无法正常显示及使用。原因:windows版微信客户端对小程序设置自定义导航栏无法生效,即 navigationStyle=“custom

2021-08-30 10:46:43 1857

原创 Taro小程序Uncaught SyntaxError: Unexpected identifier报错解决方案

运行小程序时,如遇到Uncaught SyntaxError: Unexpected identifier报错信息,请检查是否在*.config.js文件中 import引入了es6写法的文件A,注意所有带后缀为 .config.js 的文件是否有引入,如必须要引入,则需要将文件A中es6写法 export改为 module.exports即可如有帮助,记得点赞三连,谢谢~...

2021-08-01 18:11:20 876

原创 Taro小程序分享功能

Taro小程序分享onShareAppMessage (Object)功能使用1.配置指定页面可分享(默认菜单栏分享按钮为灰色,不可分享)找到page.config.js,配置如下export default { enableShareAppMessage: true}2.Class类的页面添加如下:export default class Index extends Component { onShareAppMessage (res) { i

2021-08-01 17:57:58 8856

原创 Taro小程序 Input组件focus属性失效解决方案

Taro小程序开发在使用Input组件时,会遇到一个问题,设置了Input组件自动聚焦,但是在iPhone X与部分android机型上无法生效,此为官方组件的一个bug,截止Taro v3.2.7版本目前仍未解决此问题,使用方式如下:<Input type='text' placeholder='将会获取焦点' focus={true}/>解决方案:修改为微信小程序原生组件input即可<input type='text' placeholder='将会获取焦点' foc

2021-08-01 17:40:12 4728 1

原创 Taro小程序开发之自定义导航栏页面如何设置不可滑动

设置当前页面自定义导航栏之后,当页面滑动时,导航栏部分的view会上移至状态栏,如何固定页面不可滑动,如我们的A页面是index.js文件,则在同一层级添加index.config.js文件,配置如下即可:export default { navigationStyle:'custom', disableScroll:true }如有帮助,记得点赞三连,谢谢~...

2021-08-01 17:17:56 1270

原创 小程序开发之Taro环境搭建

目录1.node环境安装2.CLI 工具安装3.项目初始化4.编译运行5.小程序开发者工具预览、上传1.node环境安装Taro 项目基于 node,请确保已具备较新的 node 环境(>=12.0.0),下载地址:http://nodejs.cn/download/,根据自身使用系统去下载对应版本,一般下载最新版本即可,安装完成使用node -v 查看安装的版本是否符合,windows系统还需设置全局变量(此处不再赘述)。node -v2.CLI 工...

2021-08-01 16:49:03 1640 1

原创 Android 获取Keystore的MD5 SHA1 SHA256等信息

1、使用keytool.exe 这个工具获取,这个工具在jdk的bin目录下面.例如我机器的目录是C:\Users\xxx\jdk1.8.0_171\bin。那么打开cmd 进入到该目录,也可以将这个目录配置到环境变量Path下面,这样就可以直接keytool命令。2、keytool -list -v -keystore D:\Android\keystore\xxx.keystore D:\Android\keystore\xxx.keystore 就是你的keystore的文件路径。...

2021-03-29 11:14:35 721

原创 java Object类浅析

在Java中Object是所有类的父类,任何类都默认继承Object,其提供的方法主要有以下几种:package java.lang;/** * JDK1.8 */public class Object { // native关键字表示此方法通过JNI(java native interface)接口调用C/C++ 语言实现对底层的访问 private static native void registerNatives(); static { regis

2021-03-25 15:31:14 124 1

原创 lottie-react-native动画无法播放的解决方法

当前使用的版本号:"lottie-ios": "^3.1.8","lottie-react-native": "^3.5.0"遇到的情况:1.动画在手机上无法播放,官网上可以播放;2.动画资源切换之后,动画无法执行;3.android、iOS平台差异,在android可以播放,iOS平台无法播放;4.三星某手机,动画无法播放;(之前一直动画可以执行,某天突然无法执行了,手机恢复出厂设置又好了..)针对以上四种情况:使用方法:<LottieView ref={a...

2021-03-15 14:38:46 1036 2

原创 代理模式之静态代理、动态代理

代理模式,常用的一种设计模式。优点:1.Client端通过使用代理对象ProxySubject来间接的控制另外一个对象RealSubject,从而使Client端与具体实现类RealSubject解耦,扩展性更好;2.Client端不用关心具体实现类RealSubject的方法实现,只需要关系代理对象中提供的方法;3.代理ProxySubject也起到了控制安全访问的目的。缺点:1.由于增加了代理对象,所以有可能会造成请求的处理速度变慢;2.实现代理模式需要额外的工作,相同的方法需要在代理对象与

2021-02-02 15:38:09 138 1

原创 Handler中Looper死循环为什么不会导致应用卡死?

先来列举一下一般出现ANR的情况:1.键盘输入事件、触摸无响应5s;2.Receiver广播接收器10s超时无响应;3.Service服务20s超时无响应;...再简单介绍一下Handler会在应用启动之后,在ActivityThread的main 方法中启动:public static void main(String[] args) { Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "ActivityThreadMai

2021-01-31 16:20:06 539

原创 android蓝牙频繁断、连之后,无法发现蓝牙服务的解决方案

android蓝牙频繁断、连之后,某次在发现蓝牙服务的回调结果中,特征值服务列表为Null或者长度为0,BluetoothGattCallback gattCallback = new BluetoothGattCallback() { @Override public void onConnectionStateChange(BluetoothGatt gatt, int status,int newState) { if (status ==...

2020-12-28 19:39:18 5674 1

原创 android studio打包aar遇到的坑

先简单介绍一下前景,由于我们的sdk内部实现不想暴露出来,所以考虑到打成jar包的形式1.android sdk 一般分为两种:.jar(仅包含编译生成的class文件),.aar(包含jar和资源文件),这个根据个人的项目需求可以决定使用哪一种;2.如果我们的sdk内部不包括任何三方库,那么直接在android studio的gradle 自己module的Task-->build-->assemble 执行即可.。然后就可以在build文件夹中的outputs文件中

2020-12-21 15:57:56 2414

原创 python pandas excel文件如何一次性读取全部sheet,并重新一次性写入多个sheet?

关于如何一次性读取全部sheet,可看我之前写的一篇博客;本文重点讲述如何对同一个excel文件一次性写入多个sheet数据代码示例: import pandas as pd writer = pd.ExcelWriter("新数据.xlsx") sheet1Data = [] # 这个为要向Sheet1写入的数据 pd_look1 = pd.DataFrame(sheet1Data) pd_look1.to_excel(writer, sheet_name=...

2020-11-25 10:40:02 4936 1

原创 java 注解(Annotation)

java 注解(Annotation)Java 注解用于为 Java 代码提供元数据,是从JDK5.0引入的一种注释机制。先举几个我们常见的注解例子:@Override - 检查该方法是否是重写方法。如果发现其父类,或者是引用的接口中并没有该方法时,会报编译错误。@Deprecated - 标记过时方法。如果使用该方法,会报编译警告。@SuppressWarnings - 指示编译器去忽略注解中声明的警告。再来了解一下元注解:元注解可以理解为注解的注解,它是作用在注解中,方便我们使用注解实现想要

2020-11-23 16:36:31 119

原创 设计模式六大原则

设计模式六大原则1.单一职责原则(Single Responsibility Principle)一个类只负责一项职责,并且引起它变化的原因应该只有一个(尽可能少)。如果职责过多,代码可读性及维护性都会变差。2.里氏代换原则(Liskov Substitution Principle)任何基类可以出现的地方,子类一定可以出现。LSP 是继承复用的基石,只有当派生类可以替换掉基类,且软件单位的功能不受到影响时,基类才能真正被复用,而派生类也能够在基类的基础上增加新的行为。里氏代换原则是对开闭原

2020-11-10 17:47:33 96

原创 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.vick.myapp/com.vick.mya

项目之前运行正常,但是当引入一些三方库时,在sync同步时,会报如下错误:java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.vick.myapp/com.vick.myapp.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.vick.myapp.MainActivity" on path: DexPathLis

2020-10-28 14:09:07 427

原创 apktool反编译apk,并重新打包

反编译的工具有很多,本文暂时只介绍apktool:1.先下载apktool,下载地址: https://ibotpeaches.github.io/Apktool/install/ (我当前下载的版本是apktool_2.4.1.jar);2.修改文件名为"apktool.jar";3.执行java -jar apktool.jar 如果出现版本号,说明运行成功;4.将需要反编译的test.apk 文件放在和apktool.jar 同一层级;5.cd到apktool.jar所在..

2020-10-27 17:37:54 5450

原创 Unable to create call adapter for rx.Observable<java.lang.String> retrofit2+rxjava3配置运行报错

当retrofit2与rxjava3连用时(截止发博客时间,很多搜索结果还是retrofit2+rxjava2,而retrofit2+rxjava3的还是比较少的,所以特此记录一下),按照常规的写法,在运行时会报错:Unable to create call adapter for rx.Observable<java.lang.String>先看一下发生错误的配置是:dependencies { implementation fileTree(dir: "libs", incl

2020-10-26 16:43:45 992 1

原创 Invoke-customs are only supported starting with Android O (--min-api 26)

项目之前运行正常,但是当引入一些三方库时,在sync同步时,会报如下错误:Invoke-customs are only supported starting with Android O (--min-api 26)这是由于你引入的库中代码包含了Java8中的新特性,比如使用了Lambda 表达式、Stream API、默认方法(默认方法就是一个在接口里面有了一个实现的方法)等;所以我们需要在build.gradle(app module层级,不是project层级)文件中的 android 节点下添

2020-10-23 10:49:43 2872

原创 SectionList与mobx不兼容的解决方案:Attempt to read an array index (4) that is out of bounds (4).

前几天在使用SectionList与mobx合用的时候,遇到了这个warning警告:"Attempt to read an array index (4) that is out of bounds (4). Please check length first. Out of bound indices will not be tracked by MobX"项目使用的版本号如下:"mobx": "^4.3.1","mobx-react": "^5.1.0","react": "16.9.0",

2020-10-20 15:35:32 1817

原创 webview内存泄漏解决方案

1.运行app,先用AS自带的Profiler分析我们的WebViewActivity,频繁进出,看内存占用情况,会发现内存在不断的上升,而且退出当前页面内存只是下降一点,一直持续下去,肯定会OOM;2.引入leakcanary内存泄漏分析工具由于只运行debug模式来检测,所以只需在build.gradle中引入:debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.6.1'然后在自定义的Application的O

2020-09-29 13:38:01 3027

原创 Python 如何将视频文件的语音转换为文字,良心之作!

如何将视频文件的语音转换为文字,这里先大致介绍一下本文会用到的知识点:python3、 moviepy、multipart/form-data请求、requests_toolbelt、md5。1.首先需要把视频文件转化为音频文件这里我们以MP4文件转MP3文件为例,先下载moviepy库,然后:from moviepy.video.io.VideoFileClip import VideoFileClip# 将mp4文件转为mp3音频文件并返回其文件路径,生成路径仍在原路径中(需要先下载m

2020-09-27 16:16:45 13839 32

原创 react native Android App当内存不足或者部分Activity被系统回收之后,重启出现的问题

如果你的项目使用的是react native,比如APP MainActivity运行在后台或者手动kill进程之后,这里需要注意的是AndroidManifest.xml文件中当前activity的启动模式就很重要了,不同的启动模式就会让上层RN出现不同的问题:1.如果启动模式是 android:launchMode="standard" 标准启动模式,当应用重启时,那么会重新生成新的MainActivity,同时由于项目中react native 的入口是由MainActivity进入的,所以也会导

2020-09-24 15:26:10 932

原创 Android ClassLoader源码浅析

从源码的角度(基于Android9.0,API 28)记录一下Android类加载的机制,Android中的ClassLoader主要分为:BootClassLoader、BaseDexClassLoader、PathClassLoader、DexClassLoader、InMemoryDexClassLoader。特点:双亲委托机制(留在下一篇介绍,本篇只介绍几个ClassLoader及常见的方法)1.BootClassLoader:用于加载Android Framework层class文件Bo.

2020-09-17 14:36:21 380

原创 python字符串查找、替换、移除空格字符

假设我们有一个关键词“智能音箱”,我们想通过这个关键词来查询它在'智能音箱!#@@#我非常喜欢用智能音箱,#$#%智能音箱棒棒的,非常好用的,智能音箱真好玩#$%^^^智能音箱'这样一段文字中相关联的文字,比如要截取出当前关键词出现的位置前后的五个字(去除标点符号),这里我们就会想到,需要用到哪些知识点:1.字符串查找:用法: str.find(str, beg=0, end=len(string))参数:str -- 指定检索的字符串,当只传入此参数时,默认查找在字符串里第一个出现的子...

2020-09-15 11:35:16 2882

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除