自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

milovetingting的专栏

Android代码搬运工一枚,欢迎留言讨论交流! 个人主页:http://www.milovetingting.cn

  • 博客(129)
  • 收藏
  • 关注

原创 【Web】Hexo+Butterfly+Github+Coding搭建个人博客

Hexo+Butterfly+Github+Coding搭建个人博客背景之前用docsify搭建了一个简单的博客,但是docsify主题较少(也可能本人没有找到正确的设置方法⊙﹏⊙‖∣),没有自己很喜欢的主题。于是,在近期,利用空闲的时间,用Hexo重新搭建了一个博客。关于Hexo的具体介绍,可以在其官方网站查看具体的说明。搭建Hexo搭建Hexo比较简单,按照官方文档的步骤操作即可。这...

2020-01-06 23:25:42 822

原创 The Open Graph protocol(开放图谱协议)的介绍及应用

Open Graph 协议使任何网页都可以成为社交中的丰富对象。例如,用于Facebook以允许任何网页具有与Facebook上任何其他对象相同的功能。以下是把链接分享到钉钉。

2023-05-26 14:50:15 1057

原创 Webpack简单使用

1、在项目根目录安装2、创建一个配置文件 ,用于配置 Webpack 的各种选项。以下是一个基本的配置文件示例:在这个配置文件中,设置了入口文件 ,输出文件为 。3、在文件中引入打包后的 文件。4、运行打包命令。这将会运行 并使用配置文件打包应用程序。打包后的文件将会被输出到在配置文件中设置的输出目录中。以上为使用的基本步骤,下面以使用为例,展示简单的图片压缩功能1、导入2、编辑3、index.html

2023-03-29 17:52:39 109

原创 Flutter Plugin简单开发

创建完成后的目录如图所示,其中是测试工程,用来测试我们写的插件。目录下的文件,就是需要具体实现的。文件就是我们定义接口的地方,是对应、的文件,是对应平台。、平台要分别实现定义的方法。这里以和为例,实现接口中的方法。1、在目录上点击右键,选择菜单下的2、打开后的界面如下我们主要在这个文件的方法中做具体实现1、在类中增加方法2、在类中实现上面的方法3、在中调用4、端实现5、在中测试6、测试结果可以看出,成功调用到了端的方法1、在类中增加方法2、在类中实现上面的方法3、在中调用4、端实现5、在中

2023-03-20 10:13:55 1118

原创 Dart利用注解生成代码

Dart利用注解生成代码

2023-03-13 15:46:58 239

原创 Python制作简单的词云

个人博客http://www.milovetingting.cn背景图效果图代码from os import pathimport jiebafrom wordcloud import WordCloudfrom PIL import Imageimport numpy as npimport matplotlib.pyplot as pltdef handle_data(): """ 处理文本数据 :return: """ # 读取.

2021-09-17 17:40:55 336 1

原创 Mac 编译OpenCV

个人博客http://www.milovetingting.cn前言简单记录Mac下编译OpenCV,以便后续查看。使用HomeBrew安装cmakebrew install cmake获取OpenCV源代码官网地址:https://opencv.org/releases/选择Sources下载编译OpenCV解压文件,在解压后的目录中创建一个临时目录,名称不限,如build,在终端中执行mkdir build进入创建的目录cd build配置cmake .

2021-07-05 15:58:19 666

原创 Tesseract-OCR样本训练

个人博客http://www.milovetingting.cn下载Tesseracthttps://github.com/UB-Mannheim/tesseract/wiki下载jTessBoxEditorhttps://sourceforge.net/projects/vietocr/files/jTessBoxEditor/jTessBoxEditor-2.3.1.zip/download安装Tesseract一路Next,在选择组件界面,全选所有组件安装jTessBoxEdi.

2021-07-04 12:39:55 295 1

原创 NDK交叉编译及so库导入Android项目

前言记录NDK交叉编译及so库导入Android项目的简单步骤,以备后续用到时查看。环境在Linux和Mac环境下,分别编译输出so库。Red Hat Enterprise Linux 8 64 位 使用GCC编译(也可以用CLANG,这里演示用GCC)macOS Big Sur 11.3.1 使用CLANG编译(也可以用GCC,这里演示用CLANG)下载NDK这里只演示下载NDK17,项目中Mac用到的NDK版本为NDK21下载NDKwget https://dl.google.co

2021-05-12 14:54:11 433

原创 Artifactory搭建本地仓库(二)-通过Gradle上传AAR

个人博客http://www.milovetingting.cn前言在上一篇文章 Artifactory搭建本地仓库 中,已经搭建好了本地仓库,这一篇,主要介绍在Android Studio中通过Gradle上传AAR到本地仓库,以便其它项目引用。上传AAR在项目根目录下的gradle文件的dependencies节点增加classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.15.2"完整的gradle// Top.

2021-01-29 17:11:17 446

原创 阿里云HttpDns接入

个人博客http://www.milovetingting.cn前言简单记录集成阿里云HTTPDNS服务的过程什么是HTTPDNSHTTPDNS是面向多端应用(移动端APP,PC客户端应用)的域名解析服务,具有域名防劫持、精准调度、实时解析生效的特性。以上来自阿里云HTTPDNS文档。接入流程服务开通HTTPDNS是移动研发平台提供的服务,请参考EMAS 快速入门开通服务。开通服务后,进入控制台,点击添加产品,如图所示完成添加产品后,点击添加应用,如图所示添加.

2020-12-29 23:33:42 1858

原创 Android电量优化-Battery Historian环境搭建及简单使用

个人博客http://www.milovetingting.cnAndroid电量优化-Battery Historian环境搭建及简单使用前言在Android5.0后,Batterystats已经内置在Android系统中,用于收集设备上的电池数据。可以使用adb将收集的电池数据导出,并生成可使用 Battery Historian 分析的报告。Battery Historian 会将报告从 Batterystats 转换为可在浏览器中查看的 HTML 直观视图。在Android8.0后,也.

2020-12-12 12:01:53 2298 1

原创 Crash监控的简单实现方案

个人博客http://www.milovetingting.cnCrash监控的简单实现方案前言本文从Java层及Native展开,简单记录Android中的Crash监控方案。Java层CrashJava层的crash监控,可以通过实现Thread.UncaughtExceptionHandler接口,重写uncaughtException方法来实现,简单示意代码如下:public class CrashHandler implements Thread.UncaughtExceptio.

2020-12-10 02:12:55 411 1

原创 KMM跨平台开发环境搭建

个人博客http://www.milovetingting.cnKMM跨平台开发环境搭建KMM是什么KMM即Kotlin Multiplatform Mobile ,是由Jetbrains提供的跨平台移动开发SDK,借助 Kotlin的跨平台能力,可以使用一个工程为多个平台编译。使用 KMM,具备灵活性的同时也保留了原生编程的优势。为 Android/iOS 应用程序的业务逻辑代码使用单一的代码库,仅在需要的时候编写平台特定代码,例如实现原生的 UI,使用平台特定 API 等等。KMM 可.

2020-12-05 00:53:15 1336

原创 IntelliJ-Idea导出可执行Jar

个人博客http://www.milovetingting.cnIntelliJ-Idea导出可执行Jar前言IntelliJ Idea 导出可执行Jar包,记录如下。创建Java文件,在里面添加main方法配置ArtifactsFile-Project Structure-Project Settings-Artifacts点击+号点击JAR-From modules with dependencies…选择Main Class点击Build-Build Artifac.

2020-12-05 00:49:30 196

原创 C++中的常量指针和指针常量

个人博客http://www.milovetingting.cnC++中的常量指针和指针常量常量指针 int a = 1; int b = 2; //定义一个常量指针 const int *p = &a; cout << *p << endl;//输出1 p = &b; cout << *p << endl;//输出2 //报错,常量指针不可以修改指针指向的值 .

2020-11-22 20:57:38 210

原创 C++函数的分文件编写

个人博客http://www.milovetingting.cnC++函数的分文件编写创建头文件创建一个后缀为.h的头文件,在头文件中声明函数//函数的声明void hello();创建源文件创建一个后缀为.cpp的源文件,在源文件里定义函数#include <iostream>using namespace std;//函数的定义void hello(){ cout << "hello,world" << endl;}调用.

2020-11-22 08:23:16 179

原创 CLion输出乱码的解决方法

个人博客http://www.milovetingting.cnCLion输出乱码的解决方法File->Settings->Editor->File Encodings然后设置

2020-11-22 08:18:42 381

原创 浅谈Java中的软引用

个人博客http://www.milovetingting.cn浅谈Java中的软引用前言Java中有四种引用类型:强引用、软引用、弱引用、虚引用。四种引用类型分别有不同的应用场景,本文主要演示软引用的简单使用、可能遇到的问题以及对应的解决方法。软引用的简单使用软引用的特点是:如果一个对象只存在软引用,那么当内存不足时,GC就会回收这个对象。设置JVM的最大内存为了模拟内存不足,这里通过-Xmx来设置JVM的最大可分配内存。-Xmx100m这里是使用IntelliJ IDEA来创建.

2020-10-11 00:29:00 2641 2

原创 Kotlin的协程

个人博客http://www.milovetingting.cnKotlin的协程协程是什么协程是一种并发设计模式,在 Android 平台上使用它来简化异步执行的代码。以上是官方文档对协程的简单定义。下面通过代码来展示协程的具体使用。假设有以下的需求:有一个耗时的任务要执行,在执行完成后,需要在主线程刷新UI。不使用协程在Activity的onCreate中分别调用以下方法io()ui()private fun io() { thread { .

2020-09-26 00:23:53 380 1

原创 使用BinderPool管理AIDL

使用BinderPool管理AIDL个人博客:http://www.milovetingting.cn前言平时我们用到AIDL,一般的流程可能是这样:定义AIDL接口定义服务,在onBind方法中返回实现了AIDL接口的Stub类的实例调用bindService方法,在ServiceConnection的onServiceConnected回调中获取到Binder对象通过Binder对象调用接口中的方法如果我们只是用到比较少的AIDL调用,那么上面的方法的确是可行的

2020-06-28 15:53:08 178

原创 Flutter开发环境搭建

个人博客:http://www.milovetingting.cnFlutter开发环境搭建前言参考链接:https://flutterchina.club/Windows系统下Flutter开发环境搭建使用镜像由于在国内访问Flutter有时可能会受到限制,Flutter官方为中国开发者搭建了临时镜像,可以将如下环境变量加入到环境变量中:变量名值PUB_HOSTED_URLhttps://pub.flutter-io.cnFLUTTER_STORAGE_.

2020-06-27 18:16:03 179

原创 Android自定义View-圆形图片控件

个人博客http://www.milovetingting.cnAndroid自定义View-圆形图片控件前言在日常开发中,圆形的图片效果还是很常见的。可以通过给Paint设置Xfermode来实现,这里简单记录如下。实现实现圆形效果的核心是PorterDuffXfermode,对于PorterDuffXfermode,这里不展开,可以查询相关资料。核心代码//绘制背景canvas.drawCircle(mSize / 2, mSize / 2, mSize / 2, mPaint);.

2020-06-09 11:19:29 390 3

原创 浅析对象的创建过程

个人博客http://www.milovetingting.cn浅析对象的创建过程前言我们平时在创建对象时,可能都会这样创建:Object object = new Object();看起来很简单的一个过程,那么这个new操作的背后,有哪些相关的知识点,是需要我们掌握的,本文针对这些来展开介绍。对象的创建过程类都是由JVM加载到内存中的,类加载采用双亲委派机制,双亲委派机制具体信息,这里不作展开。类加载包含以下几个过程:加载加载Class信息到内存中,可以从Class文件读取,也.

2020-05-21 16:12:30 191

原创 Java对象占用内存大小--Java对象的内存结构分析

个人博客http://www.milovetingting.cnJava对象占用内存大小–Java对象的内存结构分析前言本文主要介绍Java对象的内存结构。Java对象的内存结构Java对象的内存结构包括:对象头实例数据对齐填充普通对象和数组对象,在内存结构上有一些不同,主要体现在对象头中。普通对象的对象头由Mark Word和Klass Pointer组成,而数组对象,对象头还包括一个数组长度。具体结构如下图:对象头普通对象:Mark Word:包含H.

2020-05-20 15:45:37 365

原创 对AQS的简单理解及自定义锁的实现

个人博客http://www.milovetingting.cn对AQS的简单理解及自定义锁的实现AQSAQS,即AbstractQueuedSynchronizer,意为队列同步器,是用来构建锁或者其它同步组件的基础框架。AQS使用一个int类型的state表示同步状态。AQS使用了模版方法的设计模式,子类继承AQS后,通过实现抽象方法来管理同步状态。AQS在ReentrantLock、ReentrantReadWriteLock、Semaphore、CountDownLatch等类中都.

2020-05-19 16:38:46 220

原创 IntelliJ IDEA插件开发的简单流程

个人博客http://www.milovetingting.cnIntelliJ IDEA插件开发的简单流程前言平时用Android Studio开发项目时,我们都会或多或少接触到一些插件,这些插件能帮助我们提高开发效率。如果我们有一些特定的需求,但还没有插件可以满足这些需求,那么可以通过自定义插件来实现。自定义插件创建插件工程File-New-Project,在创建工程的界面,选择IntelliJ Platform Plugin,右侧选择SDK,这里需要选择IntelliJ IDEA安.

2020-05-08 22:55:23 349

原创 IOC之运行时注入-实现Activity的布局注入+控件注入+事件绑定

个人博客http://www.milovetingting.cnIOC之运行时注入-实现Activity的布局注入+控件注入+事件绑定前言本文主要介绍基于IOC的设计原则,实现以下功能:布局注入控件注入事件注入其实这些功能,在之前也有零散地介绍过,这里再做一个统一的整理。这里暂时不考虑运行时反射的效率问题,只是展示一种实现方案。IOC的定义IOC,即Inv...

2020-05-08 11:28:20 173

原创 动态代理+注解+反射实现View的点击事件绑定

个人博客http://www.milovetingting.cn动态代理+注解+反射实现View的点击事件绑定代理模式是给对象提供一个代理对象,由代理对象来控制原对象的引用。代理模式分为静态代理和动态代理。静态代理定义接口public interface Player { void play();}定义具体的实现类public class PlayerImpl ...

2020-04-29 17:23:15 354

原创 Java中的注解和反射

个人博客http://www.milovetingting.cnJava中的注解和反射注解Java注解(Annotation)又称Java标注,是JDK5.0引入的一种注释机制。注解定义通过@interface来声明一个注解public @interface Anno { }元注解对注解进行注解的类就是元注解(meta-annotation),在自定义时,一般需要...

2020-04-27 11:02:24 113

原创 Jetpack学习-WorkManager

个人博客http://www.milovetingting.cnJetpack学习-WorkManagerWorkManager是什么WorkManager可以轻松调度即使在应用退出或设备重启时仍应运行的可延迟异步任务,不适用于应用进程结束时能够安全终止的运行中的后台工作,也不适用于需要立即执行的任务。简单使用引入WorkManager在需要引入WorkManager的模块的bu...

2020-04-20 21:00:13 195

原创 Jetpack学习-Paging

个人博客http://www.milovetingting.cnJetpack学习-PagingPaging是什么分页库可一次加载和显示一小块数据。按需载入部分数据会减少网络带宽和系统资源的使用量。简单使用引入Paging在需要引入Paging模块的build.gradle中配置 def paging_version = "2.1.0" implementatio...

2020-04-18 17:13:03 192

原创 Jetpack学习-Navigation

个人博客http://www.milovetingting.cnJetpack学习-NavigationNavigation是什么Navigation翻译过来就是导航。导航是指支持用户导航、进入和退出应用中不同内容片段的交互。Android Jetpack 的导航组件可帮助您实现导航,无论是简单的按钮点击,还是应用栏和抽屉式导航栏等更为复杂的模式,该组件均可应对。导航组件还通过遵循一...

2020-04-17 23:10:30 762

原创 Jetpack学习-Room

个人博客http://www.milovetingting.cnJetpack学习-RoomRoom是什么Room 持久性库在 SQLite 的基础上提供了一个抽象层,让用户能够在充分利用 SQLite 的强大功能的同时,获享更强健的数据库访问机制以上内容来自官方文档。用一句话总结下:Room是基于SQLite封装的一个框架。简单使用引入Room在需要使用的模块的build...

2020-04-16 20:37:41 184

原创 Jetpack学习-DataBinding

个人博客http://www.milovetingting.cnJetpack学习-DataBinding简单使用在需要使用DataBinding的模块的build.gradle中增加android { //... defaultConfig { //... dataBinding{ enabled true ...

2020-04-15 23:18:16 199

原创 Jetpack学习-LiveData

个人博客http://www.milovetingting.cnJetpack学习-LiveDataLiveData是什么LiveData是一种可观察的数据存储器类,具有生命周期的感知能力。简单使用LiveData一般都是和ViewModel一起使用。定义一个类继承自ViewModel:public class LiveDataSub extends ViewModel { ...

2020-04-14 21:48:08 107

原创 Jetpack学习-Lifecycle

个人博客http://www.milovetingting.cnJetpack学习-LifecycleLifecycle是什么Lifecycle是Jetpack提供的一个组件,可以感知Activity,Fragment的生命周期变化。简单使用定义一个类继承自LifecycleObserver,根据业务需要,在这个类中重写相应的方法public class LifecycleObs...

2020-04-14 21:45:17 132

原创 Jetpack学习-初识Jetpack

个人博客http://www.milovetingting.cnJetpack学习-初识Jetpack前言本篇介绍Jetpack,内容来自官方文档。(我是搬运工#_#)Jetpack是什么Jetpack 是一套库、工具和指南,可帮助开发者更轻松地编写优质应用。这些组件可帮助您遵循最佳做法、让您摆脱编写样板代码的工作并简化复杂任务,以便您将精力集中放在所需的代码上。Jetpack...

2020-04-14 21:42:17 231

原创 基于Netty实现服务端与客户端通信

个人博客http://www.milovetingting.cn基于Netty实现服务端与客户端通信前言本文介绍基于Netty实现的服务端与客户端通信的简单使用方法,并在此基础上实现一个简单的服务端-客户端指令通信的Demo。Netty是什么Netty是一个NIO客户端-服务器框架,可以快速轻松地开发网络应用程序,例如协议服务器和客户端。它极大地简化了网络编程,例如TCP和UDP...

2020-04-13 03:00:02 1013

原创 Gradle自定义插件发布到Maven

个人博客http://www.milovetingting.cnGradle自定义插件发布到Maven前言日常开发中,我们可能会用到一些别人开发的插件,通常我们是这样引入插件的:在项目根目录下的build.gradle增加配置:buildscript { repositories { //... maven { url 'https://d...

2020-04-05 17:17:59 423

空空如也

空空如也

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

TA关注的人

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