自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 嵌入式开发环境配置

安装成功后需要使用内置的Pack Installer工具下载stm32相关的Pack。FlashDownloadTool,旧版已经不能正常使用,目前只能下载最新版。MDK532.exe,安装成功后就是一个keil5。

2024-04-01 06:56:46 317

原创 简单的maven仓库

gradle同时即会从https://repo1.maven.org/maven2/com/squareup/okhttp3/okhttp/3.8.0/okhttp-3.8.0.jar下载组件,可以看出gradle下载依赖时,根据组件信息组装成对应的下载地址,从maven服务器下载对应的组件。将相关的组件上传到自己的maven仓库,再从自己的仓库中拉取,速度会快很多。在项目中引用了okhttp3的3.8.0版本组件,maven仓库为https://repo1.maven.org/maven2/,如下。

2023-10-30 22:09:35 135

原创 项目缓存目录快速清除

一个gradle或pom项目有很多模块,想要删除编译产物,需要执行相关的clean指令,但速度相对较慢,手动删除会更麻烦。此脚本用来快速清除gradle、pom、npm项目缓存文件。1、gradle项目。

2023-10-30 21:32:07 208

原创 ArkUI项目打包

打包工具:ets2bundle工具仓库:https://gitee.com/openharmony/developtools_ace_ets2bundle依赖仓库:https://gitee.com/openharmony/interface_sdk-js。

2023-10-21 22:05:09 344

原创 Flutter渲染流程分析

同步过程,如果发现属性值有变化,则会调用RenderObject.markNeedsPaint()方法,标记当前RenderObject为脏元素,需要刷新。在VSYNC信号到来时,即可取得脏元素进行重新绘制。继承ComponentElement的元素(组合Element),会调用Widget/State的build()方法,重新创建一个Widget对象,来更新当前Element的child,或更新当前child.widget(Widget的build方法就是用来创建子Widget的)。

2023-09-23 12:10:36 166

原创 Flutter框架分析

UI框架与操作的联系。

2023-09-14 22:51:54 190

原创 红黑二叉树

前两种场景,导致的结果都是左子树比右子树层级高超过1,产生不平衡,为解决不平衡问题,需要将当前节点的左子树上浮一个层级,当前节点下沉一个层,使得二叉树变平衡。这种操作称为左旋,把左子树旋转上来,当前节点下沉为左子树的右子树,并左子树的右子树挂载到当前节点的左子树。3- 节点:节点有2个值,3个子树。2- 节点:节点只有1个值,2个子树。左子树所有节点都小于当前节点;右子树所有节点都大于当前节点。特点:左子树节点比父节点小,右子树节点比父节点大。2-3树的特点是:树的节点可能有2到3个子树。

2023-09-13 08:25:22 42

原创 动态库导出问题

其他项目引用动态库时,直接引用导入库即可,导入库相关的信息会被编译到引用方产物中,但最终的打包产物中只有动态库,而没有导入库。导入库并不是必须的,在没有导入库的情况下,可以使用动态加载的方式来加载动态库,通过指定的函数名来引用函数。动态库引用动态库没有问题,但动态库引入静态库场景,可能会产生以下两种问题。在ubuntu或mac编译好的动态库,放到windows上编译出现了大量“无法解析的外部符号”错误,对Windows编译不太了解的同学一定感觉到特别困惑,这主要是不同系统关于动态库定义之间的差异。

2023-08-12 14:41:58 110

原创 msvc编译相关问题

编译环境:使用gn构建工具,msvc编译器对源码编译。

2023-08-12 13:17:46 559

原创 MinGW-w64编译Windows程序

MinGW(Minimalist GNU for Windows)可以理解为Windows版本的gcc编译器。作为编译器不但要能编译源码,还需要为源码提供依赖支持,如使用到的标准C++ API、系统API。在C++标准库里,MinGW还提供了一些类Unix API,如socket、file、动态库加载等。MinGW只能编译32程序,目前演变为MinGW-w64,可以编译64或32程序。C++项目源码结构项目源码C++标准库(编译器提供)系统API(编译器提供)三方库MinGW安装目录结构。

2023-08-12 12:50:29 1127

原创 GIT工具小技巧

1、项目从ubuntu复制到Windows,使用git status查看发现有大量文件变动,使用git diff查看发现是文件权限变化。

2023-08-12 12:38:18 34

原创 MinGW编译相关问题

在mac、ubuntu上编译只有几处报错,而使用MinGW编译时全部报错,而且是针对模板类型的构造函数。根据警告信息重新声明需要添加dllimport,使用dllimport标记后,出现警告信息2:重新声明方法不能使用dllimport。使用动态库引用静态库,而静态库使用的是dllexport函数导出,动态库使用visibility(“default”)导出,导出动态库中所有函数均不能正常导出。4、constexpr变量的值需要在编译时就要确定,对于构造函数也需要使用constexpr进行修饰才行。

2023-08-12 12:22:04 449

原创 gn静态库编译问题

但,在该项目中,可执行文件配置依赖demo_static1或demo_static2都是可以正常运行的,demo_static2.a只是编译过程的中间产物,最终会根据demo_static2.a中的信息找到其他依赖项打包到最终产物中。demo_static1.ninja文件中关于生成libdemo_static2.a的规则,由demo_sources.stamp生成,demo_sources.stamp内部为空。demo_static2依赖的是源码生成的source_set配置,生成的静态库文件88B。

2023-08-09 01:00:00 391 1

原创 glfw库不能正常输入中文

UI框架底层使用的glfw框架,但独对glfw框架进行中文输入测试,发现输入法也不能正常返回unicode字符。后在mac系统上测试glfw,发现可以正常输入中文,这几乎就证实了输入法输入中文的规则,就是要发送一个unicode字符到UI框架。在glfw代码中判断未定义X_HAVE_UTF8_STRING宏时进行语言的设置,代码全局搜索发现未定义此宏,认为此代码已执行,最终通过打印宏值,发现此宏已定义,猜测可能是在x11库相关的头文件已经定义好了此宏。分析整个输入流程没有什么问题,发现。

2023-07-07 08:17:15 232

原创 flutter 文字大小测量

测试flutter项目下txt库是否能正常工作,本demo测试文本测量功能。

2023-05-29 20:12:22 172

原创 linux coredump分析

默认不生成coredump文件,在命令行执行如下命令,再在命令行执行程序即可在当前目录下生成core文件,此文件即coredump文件。2、使用在gdb的命令行下,执行bt查看堆栈信息。1、加载coredump文件。

2023-05-21 14:45:37 143

原创 Google依赖管理DEPS

DEPS进行依赖管理在Google系统项目中大量存在,如flutter、skia、v8等。因网络的原因要想编译这些项目,还是需要了解一些DEPS相关的知识,否则遇到些问题就不知道如何处理了。

2023-05-14 21:30:10 1051

原创 Windows编译Flutter引擎

总结:编译出现的各种问题,几乎全是第一步的编译工具下载及环境配置没有正常完成引起。一般来说源码下载不会出现什么问题,但编译工具往往不能成功下载,以及DEPS配置的hooks任务未能正常执行,导致编译过程提示各种缺失及其他异常,如package_config.json文件不存在等。

2023-05-14 19:32:49 761

原创 Class信息及操作

因为Java语言的泛型采用擦除法实现的伪泛型,在字节码中,泛型信息在编译之后通通被擦除,如运行期做反射时无法获取泛型信息,Signature属性就是为了弥补这个缺陷而增设,可以让Java反射API能够获取反射类型。对于使用者来说相对比较友好,但它执行效率低,另外它需要全量的代码参与编译,如果要编译的class文件依赖的其他class文件不存在的话,会报错,导致编译失败。方法的代码包含在一个类型为Code的属性中。描述字段的详情信息,包括访问权限、字段名、描述信息在常量池中的索引、属性数量和具体的属性信息。

2023-04-22 22:15:57 84

原创 Pod依赖管理

iOS是使用pod管理依赖,使用到的相关命令皆是Ruby内置命令,出现版本不一致的情况,只需要使用rvm切换一下Ruby版本到对应版本即可。pod工具管理的是项目依赖、bundle管理的是Ruby程序的gem包,gem包可类型jar包、aar等。

2023-04-19 07:19:00 658

原创 ubuntu编译gcc9.4

编译新项目发现很多异常,新项目很多语法使用C++17,ubuntu16.04自带的gcc版本为5.3.1,虽设置了-std=c++17,依然有许多不支持的特性,需要安装新版本gcc进行代码编译。但使用apt安装不了,出现各种依赖问题无法,遂选择使用源码进行编译。

2023-04-01 10:56:11 424

原创 Windows使用cmake编译dll

cmake mingw makefile

2023-01-14 14:34:41 1264

原创 单片机固件下载方式总结

JTAG/SWD/SWB/UART/固件下载

2022-12-24 19:42:22 2430

原创 PHP源码编译安装

目录编译环境编译过程运行配置运行环境1. 创建php.ini文件2. 创建 php-fpm.conf文件3. 创建 www.conf文件4. 配置连接socket为文件(可选)5. 配置nginx启动phpphp与php-fpm的关系phpphp-fpm小技巧遇到的问题编译环境编译机器Ubuntu 18.04源码包https://www.php.net/distributions/php-8.1.5.tar.gz源码包从何获取?https://www.php.net/releas

2022-05-14 13:16:33 2027

原创 Android图片压缩及加载总结

目录一、前言二、图片加载减少图片像素增大采样率inSampleSize局部加载减小每个像素占用字节数RGBYUVYUV444YUV422YUV420YUV与RGB的关系三、图片压缩四、图片压缩与图片加载的关系一、前言图片是一个神奇的东西,它不像普通文件一样,在磁盘是占用5KB,加载到内存中也占用5KB,它往往是远超5KB的内存的。为什么会出现这种现象呢?这主要是因为图片是用来展示的,它的每个像素点都是要占用内存空间的。在网络上会经常见到先压缩再加载图片的代码,比如使用图片质量压缩法,通过加载出来的图片

2022-02-09 22:19:12 1696

原创 Android内存相关知识点总结

目录一、内存模型新生代老年代二、内存回收对象是否存活引用计数法可达性分析对象自我拯救对象引用强引用(Strong Reference)软引用(Soft Reference)弱引用(Weak Reference)虚引用(Phantom Reference)回收算法标记-清除算法复制算法标记-整理算法分代集算法三、内存泄漏泄漏场景解决方法检测工具检测原理四、内存溢出内存溢出场景排查方法内存溢出与内存泄漏的关系一、内存模型Java的内存模型大致可以分为5个部分,分别是堆、方法区、虚拟机栈、本地方法栈、程序计数

2022-01-15 18:05:40 1801

原创 android动画总结

目录一、帧动画(FrameAnimation)二、补间动画(TweenAnimation)使用差值器估值器差值器与估值器关系三、属性动画(PropertyAnimation)四、转场动画参考一、帧动画(FrameAnimation)通过播放一帧一帧的图片组成动画。可以在xml添加每一帧的图片,也可能通过代码来添加每一帧的图片。帧动画只针对ImageView对象。使用xml添加帧图片<?xml version="1.0" encoding="utf-8"?><animation

2022-01-15 14:48:42 1698

原创 并发相关知识点整理

当一个代码块同时被多个线程执行时就产生了并发,代码块中的变量可能会同时被不同线程修改成不同的值,造成数据错乱、运行结果错误现象产生。如何来避免这一问题产生,就产生了锁机制,通过对代码块加锁,来保证同一时刻只能有一个线程来操作数据,这样就能保证数据的一致性。一、锁机制重入锁/不可重入锁共享锁/互斥锁乐观锁/悲观锁自旋锁重入锁/不可重入锁在同一个线程中,可重复进入的锁,就可重入锁。如,一个线程中进入了一个带锁的方法,再次进入使用同一个锁的其他方法时,不需要再获取锁,可直接进入。可重入锁R

2022-01-09 22:11:37 276

原创 Mysql允许远程访问

目录远程访问条件配置1、配置绑定地址2、授权用户改表授权远程访问条件mysql允许远程访问有两个必要条件外部能访问到mysql开启的端口用户有权限访问配置1、配置绑定地址mysql配置绑定的地址是127.0.0.1,只允许本机连接。为使其他主机可以访问mysql服务,需要绑定非本地ip,或0.0.0.0即可。2、授权用户用户访问信息在mysql数据库的user中设定,可通过修改user表,来授权用户访问。改表修改已有用户的host字段修改mysql的user表,host字段为

2021-12-25 23:38:18 32579 2

原创 如何配置定时任务

Linux Crontab

2021-12-25 12:58:13 2219

原创 SpringBoot 404问题汇总

目录问题现象问题根源资源不存在配置错误消息转发配置错误项目配置错误1. RestController注解与Controller混用2. Controller不在Application的同级或子级3. 项目中有多个SpringBootServletInitializer子类问题排查思路开发测试阶段线上部署阶段问题现象访问SpringBoot服务指定url时,提示404,页面找不到。问题根源404的错误就是服务器的资源找不到。而找不到资源可能的原因可分为两个方面资源不存在配置错误资源不存在此

2021-12-25 11:22:07 24137 3

原创 风火轮 树莓派3 android系统编译

目标源码:Android4.2源码 编译环境: 1.ubuntu 16.04 内存1G 磁盘40G 出现问题:编译Android时内存不足 2.ubuntu 17.04,12G内存,128G固态硬盘+1T移动硬盘$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu D

2017-11-26 00:31:57 1359

原创 关于Volley知识点整理

Volley在2013年Google I/O大会上被推出,被大家广泛使用,虽然目前Google已经不在更新它,但作为Google推崇的网络请求框架就必有它的优点,我们可以去发现它的优化来为已用.优点:1.使用标准的HTTP缓存机制,在服务器返回304时,使用本地的缓存数据,减少了网络传输的流量,同时也加快了网络访问速度2.使用了byte[]数组池技术,在大量访问网络数据时,避免了多次开

2017-07-15 20:58:39 228

原创 使用HttpURLConnnection访问接口返回乱码

自己写了一个网络访问框架,使用了一段时间也没有发现什么问题,昨天使用时居然使程序崩溃了,查看日志是解析失败的问题,返回的数据是乱码。接口是:http://120.26.201.66/mobile1/prepare.php在浏览器上打开完全没有问题,但我调试时发现也是乱码的,怀疑是编码的问题,在我试过各种编码格式转换后发现问题依然存在,而且不是说中文出现乱码,接口返回的都是ASCII码。抓包

2015-10-13 15:54:37 2175

空空如也

空空如也

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

TA关注的人

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