- 博客(275)
- 资源 (18)
- 问答 (3)
- 收藏
- 关注
原创 Android启动uiautomatorviewer报错-Djava.ext.dirs is not supported. Use -classpath instead.
➜ ~/Android/Sdk/tools/bin uiautomatorviewer-Djava.ext.dirs=/home/lixiang/Android/Sdk/tools/lib/x86_64:/home/lixiang/Android/Sdk/tools/lib is not supported. Use -classpath instead.Error: Could not create the Java Virtual Machine.Error: A fatal exceptio
2024-08-11 19:09:34
422
原创 git 本地改动无法删除
记录下git遇到奇怪的问题,本地有些改动不知道什么原因无法删除git stash, git reset --hard HEAD 等都无法生效,最终通过强制拉取线上解决。
2023-12-04 18:18:03
515
原创 Mac 远程 Ubuntu
参考:https://www.javatang.com/archives/2021/11/29/13063392.html。
2023-10-14 10:40:09
1894
原创 ELF文件修改-so文件修改
libtorch_cpu.so依赖的libmpi_cxx.so.20 在系统中不存在,系统中的版本是libmpi_cxx.so.40。替换后重新查看是可以找到的。
2023-06-08 09:59:53
663
原创 c++积累13-static
当变量声明为static时,空间将在程序的生命周期内分配。即使多次调用该函数,静态变量的空间也只分配一次,前一次调用中的变量值通过下一次函数调用传递。这对于在C / C ++或需要存储先前函数状态的任何其他应用程序非常有用。
2023-05-24 18:03:23
76
原创 电子基础入门资料简单整理
恩智浦: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
230
原创 Android系统日志3-trace
主要追踪耗时,如上图所示,记录的是traceBegin和traceEnd之间的耗时,这些日志信息可以通过systrace查看。
2023-05-09 20:04:30
1654
原创 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
608
原创 Android JVM系列1-JVM概述
一个java程序,受限经过javac编译成.class文件,然后JVM将其加载到方法区,执行引擎将会执行这些字节码。执行时,会翻译成操作系统相关的函数。JVM作为.class文件的翻译存在,输入字节码,调用操作系统函数。过程如下:Java文件->编译器->字节码->JVM->机器码。JVM全称Java Virtual Machine,它能识别.class后缀的文件,并解析其指令,最终调用操作系统函数,完成代码执行。
2023-04-28 22:58:33
219
原创 c++积累11-强制类型转换运算符(static_cast/reinterpret_cast/const_cast/dynamic_cast)
将类型名作为强制类型转换运算符的做法是C语言的老式做法,C++为保持兼容而予以保留。强制类型转换是有一定风险的,C++引入新的转换机制,主要为了客服C语言转换的三个缺点;1、没有从形式上体现转换功能和风险的不同。例如,将int转换位double是没有风险的,而将常量指针转换为非常量指针,将基类指针转换为派生类指针都是高风险的,而且后两者带来的风险不同(可能引发不同的类的错误),C语言的强制类型转换形式对这些不同并不加以区分。
2023-04-23 11:18:38
255
原创 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
428
原创 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
1301
原创 android jni系列-java c++互相调用
这个直接使用Android studio创建的c++模版代码就可以看到使用方法了,简单步骤如下:1、gradle指定cmake2、cmake实现3、java代码4、c++代码实现。
2023-04-19 09:48:11
334
原创 c++积累5-lock_guard使用
在了解lock_guard之前,需要先学习下std:mutex,因为lock_guard内部就是使用的std:mutexstd:mutex:是一个用于保护共享数据不会同时被多个线程访问的类,它叫做互斥量。来看一个例子,两个线程共同访问一个全局变量输出:输出:我们可以看到加了锁之后呢,输出结果是正确的了。
2023-04-17 22:05:16
566
原创 c++积累1 - 参数传值与引用的区别
在函数参数中传入func(int & i) ,在内部改变参数值,外部也会改变,因为传入的是地址如果传入的是值func(int i),在函数内部改变时,外部不会改变,因为传入时进行了复制,并不改变之前值。
2023-03-28 11:12:52
88
原创 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
110
原创 Android framework系列5-应用UI&WMS
我们应用的UI结构如上图所示,主要包含了3要素,Activity、Window、View。所有的View都是通过window显示出来的,window则是通过wms来管理的。
2023-03-18 19:32:50
278
原创 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
248
原创 Android framework系列2 - Init进程
入口在init.cpp下,这个阶段主要来解析init.rc并执行此文件下的命令。可以看到这个文件下有很多命令,这里查找下我们关注的内容。主入口共三步,如流程图所示,我们主要看下最后一步。这里我们看到在解析init.rc,文件内容如下。serviceManager 服务进程。这里我们看到了循环执行,空闲则等待。解析后放到了am、sm下。
2023-03-05 19:56:02
136
原创 Android framework系列4 -SystemServer分析
SystemServer是通过zygote fork出来的进程,在zygote.java中我们可以看到如下代码。
2023-02-14 14:53:46
100
原创 Android framework系列1 - Android架构&系统启动流程
此处copy aosp官方文档中的两个图,从这两个图中可以看到整个Android系统的架构设计思想,具体每一层的分层说明可以参考官方文档说明:https://source.android.com/docs/core/architecture?hl=zh-cn。
2023-02-14 14:43:48
163
Android receiver 多次启动相同Activity
2017-02-06
android 悬浮窗 代码,引用
2016-09-22
windows下java注册为服务的工具
2015-07-27
Android之ndk开发,使用ant自动创建头文件 出错
2015-08-03
jdbc 如何 设定local 端口
2015-07-24
Struts2 commons-lang3-3.2 作用
2015-07-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人