自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(272)
  • 资源 (18)
  • 问答 (3)
  • 收藏
  • 关注

原创 Rust常用知识点积累

【代码】Rust常用知识点积累。

2024-04-10 16:12:37 254

原创 git 本地改动无法删除

记录下git遇到奇怪的问题,本地有些改动不知道什么原因无法删除git stash, git reset --hard HEAD 等都无法生效,最终通过强制拉取线上解决。

2023-12-04 18:18:03 243

原创 Ubuntu 安装常见问题

配置完后重启,稍等一会,右上角会有个小键盘图标,点击选择搜狗输入法就可以正常使用了。

2023-11-10 22:17:09 532

原创 Mac 远程 Ubuntu

参考:https://www.javatang.com/archives/2021/11/29/13063392.html。

2023-10-14 10:40:09 1105

原创 性能工具积累

1、Valgrind。

2023-07-16 12:57:33 178

原创 Rust积累1-常用点

【代码】Rust积累1-常用函数。

2023-07-16 09:54:41 159

原创 ELF文件修改-so文件修改

libtorch_cpu.so依赖的libmpi_cxx.so.20 在系统中不存在,系统中的版本是libmpi_cxx.so.40。替换后重新查看是可以找到的。

2023-06-08 09:59:53 409

原创 c++积累15-函数指针

2、定义函数指针变量

2023-05-24 18:49:37 48

原创 c++积累14-sizeof()

vptr指针=8。

2023-05-24 18:45:18 48

原创 c++积累13-static

当变量声明为static时,空间将在程序的生命周期内分配。即使多次调用该函数,静态变量的空间也只分配一次,前一次调用中的变量值通过下一次函数调用传递。这对于在C / C ++或需要存储先前函数状态的任何其他应用程序非常有用。

2023-05-24 18:03:23 38

原创 c++积累12-const

b 为常量,不可更改!i 为常量,必须进行初始化!(因为常量在定义后就不能被修改,所以定义时必须初始化。

2023-05-24 17:31:45 555

原创 电子基础入门资料简单整理

恩智浦:https://www.nxp.com.cn/applications/automotive:SECURE-CONNECTED-VEHICLE。英飞凌:https://www.infineon.com/cms/cn/applications/automotive/美信:https://www.stg-maximintegrated.com/cn.html。电阻、电容、开关、面包板、杜邦线、led灯、数码管、继电器等。可以淘宝买一个51单片机开发板,带有丰富的学习资料。画好可以直接淘宝制版,很便宜。

2023-05-18 12:38:10 184

原创 Android系统日志3-trace

主要追踪耗时,如上图所示,记录的是traceBegin和traceEnd之间的耗时,这些日志信息可以通过systrace查看。

2023-05-09 20:04:30 1165

原创 Android系统日志2-SLog

1、使用2、源码3、查看log

2023-05-09 09:35:55 256

原创 Android系统日志1-EventLog

通过查看Android系统源码,如 EventLogTags.BOOT_PROGRESS_PMS_SYSTEM_SCAN_START 这类tag信息并没有在java文件中定义,经查阅资料发现这些tag信息是在编译时生成的。android/build/tools 目录下有三个event_log相关的脚本event_log_tags.py //读取跟解析event_log_tags文件java-event-log-tags.py //把EventLogTags.logtags文件翻成java。

2023-05-08 22:12:19 347

原创 Android JVM系列1-JVM概述

一个java程序,受限经过javac编译成.class文件,然后JVM将其加载到方法区,执行引擎将会执行这些字节码。执行时,会翻译成操作系统相关的函数。JVM作为.class文件的翻译存在,输入字节码,调用操作系统函数。过程如下:Java文件->编译器->字节码->JVM->机器码。JVM全称Java Virtual Machine,它能识别.class后缀的文件,并解析其指令,最终调用操作系统函数,完成代码执行。

2023-04-28 22:58:33 150

原创 c++积累11-强制类型转换运算符(static_cast/reinterpret_cast/const_cast/dynamic_cast)

将类型名作为强制类型转换运算符的做法是C语言的老式做法,C++为保持兼容而予以保留。强制类型转换是有一定风险的,C++引入新的转换机制,主要为了客服C语言转换的三个缺点;1、没有从形式上体现转换功能和风险的不同。例如,将int转换位double是没有风险的,而将常量指针转换为非常量指针,将基类指针转换为派生类指针都是高风险的,而且后两者带来的风险不同(可能引发不同的类的错误),C语言的强制类型转换形式对这些不同并不加以区分。

2023-04-23 11:18:38 202

原创 c++积累10-隐式转换、explicit关键字

【代码】c++积累10-隐式转换、explicit关键字。

2023-04-22 22:07:53 55

原创 c++积累9-g++的编译参数 -fno-elide-constructors 参数

可以说在C++11右值引用出现之前,C++的临时对象问题带来了非常大的性能开销,而编译器的这种优化,大大减少了很多无谓的copy,感觉对不是很懂C++的人是一种福音吧。通过上面的结果,反向推论,编译器默认是会对构造做优化,上面例子中把两次的构造默认都优化掉了,而加上-fno-elide-constructors参数后则不会优化。程序代码中会先调用默认构造函数创建临时对象1,在调用拷贝构造函数创建临时对象2,再次调用拷贝构造函数构造对象o,总共2次copy构造,生成了3个对象。

2023-04-22 18:31:43 290

原创 c++积累8-右值引用、移动语义

右值引用就是给右值取个名字,右值有了名字之后就成了普通变量,可以像使用左值一样使用。语法:数据类型&& 变量名=右值public :// 3是右值,给它起个名字叫a int b = 8;// b 是左值, 8是右值 int && c = b + 5;// b+5是右值,给它取个名字叫c AA && aa = getTemp();// getTemp()返回值是右值(临时变量),给它起个名字叫aa cout

2023-04-22 18:02:12 1268

原创 c++积累7-引用

作用:1,取地址2,声明引用rodents 是 rats的别名。

2023-04-22 14:22:47 62

原创 c++积累6-内联函数

内联函数是c++为提高程序运行速度所做的一项改进。

2023-04-20 10:31:20 401 1

原创 android jni系列-java c++互相调用

这个直接使用Android studio创建的c++模版代码就可以看到使用方法了,简单步骤如下:1、gradle指定cmake2、cmake实现3、java代码4、c++代码实现。

2023-04-19 09:48:11 258

原创 c++积累5-lock_guard使用

在了解lock_guard之前,需要先学习下std:mutex,因为lock_guard内部就是使用的std:mutexstd:mutex:是一个用于保护共享数据不会同时被多个线程访问的类,它叫做互斥量。来看一个例子,两个线程共同访问一个全局变量输出:输出:我们可以看到加了锁之后呢,输出结果是正确的了。

2023-04-17 22:05:16 465

原创 c++积累4-线程启动方式

【代码】c++积累4-线程启动方式。

2023-03-30 15:41:15 46

原创 c++积累3-线程标识获取

【代码】c++积累3-现成标识获取。

2023-03-30 15:27:57 41

原创 c++积累2 -运行时决定线程数量

将一个数组中的元素进行累加计算,通过并行处理。

2023-03-30 15:14:32 176

原创 c++积累1 - 参数传值与引用的区别

在函数参数中传入func(int & i) ,在内部改变参数值,外部也会改变,因为传入的是地址如果传入的是值func(int i),在函数内部改变时,外部不会改变,因为传入时进行了复制,并不改变之前值。

2023-03-28 11:12:52 56

原创 Android framework系列6-view

代码调用流程如上图所示,整体来讲invalidate会沿着view树向上执行,一直到ViewRootImpl,然后由ViewRootImpl遍历执行绘制,调用了我们熟悉的onMeasure、onLayout、onDraw。2)通过矩形运算,找到真正需要重绘的矩形区,并将其保存到了ViewRootImpl类中的mDirty变量中。有了这两个信息,View树重绘就能决定通知哪些view进行重绘,并告诉他们应该重绘什么区域。1)给所有需要重绘的视图加了一个DIRTY或者DIRTY_OPAQUE标记。

2023-03-19 11:53:07 65

原创 Android framework系列5-应用UI&WMS

我们应用的UI结构如上图所示,主要包含了3要素,Activity、Window、View。所有的View都是通过window显示出来的,window则是通过wms来管理的。

2023-03-18 19:32:50 255

原创 Android framework系列3 -zygote

2)fork,app进程都是通过zygote进程fork出来的,fork的进程是复制的,在zygote注册了,那么app进程也就注册了JNI(如果zygote进程死了,那么所有的app进程都会挂掉)我们在启动的时候是传入了zygote 和start-system-server参数的,所以我们会启动zygote,这里看到对这个进程进行了命名。这里有创建虚拟机,可以看到虚拟机的参数都是在这里设置的,如果对系统虚拟机进行优化,我们可以在这里做相应的调整。接下来,我们看到注册jni的方法。zygote进程入口。

2023-03-06 22:08:28 202

原创 Android framework系列2 - Init进程

入口在init.cpp下,这个阶段主要来解析init.rc并执行此文件下的命令。可以看到这个文件下有很多命令,这里查找下我们关注的内容。主入口共三步,如流程图所示,我们主要看下最后一步。这里我们看到在解析init.rc,文件内容如下。serviceManager 服务进程。这里我们看到了循环执行,空闲则等待。解析后放到了am、sm下。

2023-03-05 19:56:02 93

原创 Android framework系列4 -SystemServer分析

SystemServer是通过zygote fork出来的进程,在zygote.java中我们可以看到如下代码。

2023-02-14 14:53:46 66

原创 Android framework系列1 - Android架构&系统启动流程

此处copy aosp官方文档中的两个图,从这两个图中可以看到整个Android系统的架构设计思想,具体每一层的分层说明可以参考官方文档说明:https://source.android.com/docs/core/architecture?hl=zh-cn。

2023-02-14 14:43:48 100

原创 Android驱动-hello驱动

创建文件夹hello,新建三个文件。

2023-01-17 17:22:21 116

原创 Android编译可执行c程序

将可执行文件push到安卓板子中,此处使用的时nanopc-t4。结果如下,到此编译运行成功。

2023-01-17 16:42:14 635

原创 Ubuntu18.04安装clang9

【代码】Ubuntu18.04安装clang9。

2022-11-05 21:04:57 441

原创 ubuntu-开机自动挂载硬盘

查看磁盘的UUID和文件格式(唯一标识符号,不同的文件格式则对应的长度不一样)

2022-11-04 22:33:42 131

原创 Ubuntu-拼音输入法安装

上述这些步骤在输入法文档中都有,可能有些顺序不一致,此处做了调整。此处已经添加了,所以没有,在未添加时直接搜索baidu,然后添加即可,添加后就能够正常使用百度输入法了。在终端中输入im-config进行配置。等待安装完成后重启。

2022-10-30 15:27:48 1332 1

原创 android 技巧积累

【代码】android 技巧积累。

2022-10-12 12:55:27 546

好用的Android 录屏软件,能够录制声音

好用的Android 录屏软件,能够录制声音

2022-09-05

好用的Android 录屏软件,能够录制声音

好用的Android 录屏软件,能够录制声音

2022-09-05

python_grpc demo

python grpc demo,可以对应博客文章去查看,自己本地写的学习demo,清晰简单明了,方便入门

2020-12-13

POSIX多线程程序设计

POSIX多线程程序设计

2017-09-06

smalidea-0.05.zip

用于android studio 识别smali代码

2017-07-31

signapk.jar

android apk 签名工具

2017-07-27

ShakaApktool

Android 反编译工具 ShakaApktool

2017-07-27

android 缓动函数库

http://easings.net/zh-cn,参考此网址选择相应缓动函数

2017-02-20

Android receiver 多次启动相同Activity

2017-02-06

android反编译apktool、dex2jar-0.0.9.15、jd-gui-0.3.5.windows

用于android反编译并查看代码的工具

2016-11-01

安卓简单验证码demo

简单的随机验证码实现,自定义view中ondraw绘制文字线条点

2016-10-13

android 悬浮窗 代码,引用

2016-09-22

android HandlerThread 使用demo

通过一个demo说明HandlerThread 的使用

2016-08-11

android jni demo

亲自写了一个Android jni 的demo,已测试成功,环境 windows + eclispe

2016-08-08

leakcanary for eclipse

leadcanary 内存泄漏工具 在eclipse使用工程

2016-05-27

Android animation_list demo,imageview实现动画效果

Android 使用animation_list 实现imageview 动画效果

2016-04-22

Android 自定义view,自定义属性demo

Android 自定义view,自定义属性demo

2016-04-22

Android两个Fragment之间通信Demo

Android两个Fragment之间通信Demo

2016-04-09

安卓引导界面实现代码

实现安卓第一次启动引导界面的实现,使用大众点评的三个界面,采用viewpager 和fragment技术实现

2015-08-06

windows下java注册为服务的工具

对应csdn中的博客介绍:博文标题为:windows环境下将java注册成为开机自启动服务,本想在博客中直接上传,没找到上传地方,只好放到这边了

2015-07-27

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

TA关注的人

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