- 博客(33)
- 资源 (5)
- 问答 (2)
- 收藏
- 关注
原创 Centos7安装chrome的问题
启动chrome的时候报错:undefined symbol: ippvalidateattributes。用chrome-driver使用了python3.9, 需要。这个没有报libxxx.so not found。大概就是依赖的so库版本太低了,查了下这个函数在。chrome是129版本的,很新。重新拉了最新的代码并编译。
2024-09-21 23:18:23
525
原创 ChatGPT人工智能浪潮所带来的产业机会
相对应的,这一层的竞争壁垒是极其高的,不仅体现在人工智能的技术上,对数据、财力的要求也非常高,像AI芯片这种,是为大模型训练提供算力服务的,目前全世界也就只有英伟达的芯片才能Hold住这逆天的算力要求。因此,行业大模型的出现填补了这一空缺,它们通过对行业的深入研究和分析,将通用大模型的能力和行业应用紧密结合,可以为特定行业提供更精准的解决方案。目前,在中国最早推出通用大模型的公司是百度的文心一言,但阿里、腾讯等大公司也一定、也必须跟进人工智能这次科技革命,相信未来中国也会有几家通用大模型。
2023-04-07 18:10:15
2372
原创 细数和Chatgpt相似的开源模型
还记得我们上面说到的chatgpt3训练要经过预训练、强化学习和反馈学习三个步骤吧,LLaMA只有预训练的过程,而Alpaca相当于是用了LLaMA预训练完的模型,剩下需要人工的训练都通过gpt3.5来完成,所以Alpaca的表现看起来就和gpt3一样。Vicuna目前也是成本很低的一种模型,很适合个人开发和训练。所以chatgpt也是经过人工不断优化和调整出来的,不是一开始就这么强大,从这也能看到,为什么chatgpt的门槛这么高,不仅是算力要求高,后期的反馈和激励训练是需要人工花很多时间的。
2023-04-07 18:08:09
7932
原创 MacOS Qt应用打包
一.简介在MacOS上打包带图形的界面,一定是从Bundle创建的,这个Bundle就像是Apk,里面包含了代码,包含库和资源文件等等。如果自己创建一个QT工程,用的是.pro文件,这个文件会自带这个Bundle属性,保险起见也可以这样加上:CONFIG+=app_bundle如果没有Bundle,会编译不出后面要用到的.app。用CMakeLists.txt 需要自行配置Bundle:add_executable(example # 重要的是下面这行 .
2021-09-21 17:36:21
886
1
原创 Kotlin注解遇到的一些问题
(1)kotlin an annotation argument must be a compile-time constant。这个问题很常见,出现这种情况的原因大多是kotlin语法和原来Java用法有冲突导致的。比如要注入一些属性的时候:这个问题是"$“符号的问题,会被识别为字符串的一部分,所以要给”$“转义,变成”\$project"就好了;(2)还遇到过这种,在Java注解里面用{}代表数组,但在kotlin 里面 {} 其实是闭包,这个时候就得换个写法:用arrayOf或者[]都是可
2021-01-03 07:55:14
5447
原创 Kotlin协程原理理解和思考
先来看一段很简单的kotlin协程代码:fun test4() { GlobalScope.launch { println("准备执行") val value = async { println("执行异步") 1024 }.await() println("执行完毕:${value}") }}就是中途有段异步执行,代码需要等待这段异步执行完毕才会继续执行下面的操作,现在
2020-12-31 21:55:12
325
1
原创 Android单元测试技巧
之前做单测是为了完成任务,现在实在地为了测试代码的正确性,就容易遇到坑,刚好之前也没写总结,现在记一些好的单测方法,还有踩过的坑。一.日志输出我觉得这个是最重要的,测试代码时肯定要根据输出的日志来判断代码走到哪,之前又太注重行覆盖率,对这块不重视,这块还花了挺多时间处理的。Log.xxx是不能输出日志到控制台的,只能是System.out.print才能看到,所以我们需要mock Log的静态方法,把它的输出转变为System.out.print:PowerMockito.mockStatic(Lo
2020-10-24 11:50:35
652
原创 PyMouse在mac上不起作用分析
之前有个python文件,能够用PyMouse实现自动化点击功能,但升了系统之后就发现不起作用了(现在是10.15.6)。仔细分析了下,是pymouse.click的时候不起作用了。试了安装其它依赖,也试了其它库,发现都不行。也试了用sudo python, 但还是不行,猜测应该是系统权限导致的。这个新版本的系统,打开麦克风啥的都会弹出系统提示,虽然运行python文件时没有弹出,估计也是同样的问题。于是去系统设置——> 安全性与隐私——>辅助功能,把Python和终端两个程序都勾上,
2020-09-05 20:12:57
1281
2
原创 对binder_proc的一个思考
最近学习Binder,必然少不了Binder相关的数据结构,其中最重要的就是binder_proc结构体:struct binder_proc { struct hlist_node proc_node; // 根据proc_node,可以获取该进程在"全局哈希表binder_procs(统计了所有的binder proc进程)"中的位置 struct rb_root threads; // binder_proc进程内用于处理用户请求的线程组成的红黑树(关联binder_t
2020-07-15 19:56:26
980
原创 对YUV像素格式的理解
一.YUV简介YUV编码采用明亮度和色度表示每个像素的颜色,Y表示亮度,UV表示色度,一个Y是1个字节,就是一个黑白像素,UV可以是多个Y共享。YUV采样的格式有很多,每种格式按存储方式又还有比较细的区分,如YUV4:4:4,YUV 4:2:0,YUV 4:0:2,其中最常用的就是YUV420,而YUV420按存储的方式又可以分为YU12、YU21、NV12、NV21。我们只需要看YUV420就行了,其中NV12和NV21是ios和安卓摄像头的采样格式,它们都是先存储所有的Y分量,区别在于NV12是U
2020-06-19 16:31:32
1536
原创 多点触控笔记
一.多点触控的事件类型单点触控可以用event.getAction() 获得触摸事件的类型:ACTION_DOWN、ACTION_UP、ACTION_MOVE对于多点触控呢?不能再用getAction获得事件类型,要通过getActionMask获得(getActionMask是通用的方法,也适用于单点触控),除了上面那三个事件,还有两个事件:ACTION_POINTER_DOWN: 除第一个指针以外进入屏幕的其他指针。ACTION_POINTER_UP: 除第一个指针以外退出屏幕的其他指针。
2020-06-12 11:42:25
297
原创 OpenGLES在内存和卡顿上的优化
我们知道OpenGLES里面有个函数叫GLES20.glReadPixels,可以帮助我们从FrameBuffer里面把纹理像素拷贝到数组里面,但是这个方法有几个弊端:①耗时,花费的时间和截图的大小成正比关系,在一些差的设备上耗时非常严重,如果是播放视频,有明显卡顿;②耗内存,一般截图就是为了把像素数据输出到文件,通常都用Bitmap,这里有个问题是,用Bitmap的话,需要消耗两份内存,创建Bitmap的时候一份,截图时还需要申请一份。接下来我就针对这两个弊端给出优化的方案。一.耗时问题的优化耗
2020-05-15 17:23:52
4361
原创 Android感知View的出现
最近在做一个播放组件端上防作弊的效果,播放的时候判断广告是否被部分或者完全遮挡了。比较重要的载体是Window,实际的表现形式是View,所以重点往监控Window和View的创建这样的思路出发。目前的话一共想到三种方案:①监控View的创建:通过给LayoutInflater 设置factory2来感知View的创建:LayoutInflater.from(context).setFa...
2019-11-24 10:38:14
490
原创 Kotlin的::语法和高阶函数遇坑记
大家都知道,Kotlin有高阶函数,每个函数的函数类型由函数的形参列表、->和返回值类型组成。比如:fun pow(base : Int, expo : Int) : String {}// 使用::将函数名称赋值给变量var myfun : (Int, Int)->String = ::pow 函数类型就像数据类型一样,既可用于定义变量,也可用作函数形参类型,还可作为函数的...
2019-09-10 21:13:33
282
原创 Android主流开源视频播放器对比
播放器/对比维度库大小年限热度(git star)issues数开发组织适配版本ijkplayerlite(4M),all(8.2M)6年23647+2226+bilibiliandroid2.3以上Exoplayerlite(1.7M),all(2M)5年13273+337+googleandroid4.1以上GSYVideoPl...
2019-06-21 20:42:00
13517
原创 Android未捕获异常机制
一.Framework层的未捕获异常二.Framework层未捕获异常避免弹窗方案三.Native层的未捕获异常机制四.Native层收集crash原理五.Native层未捕获异常避免弹窗方案一.Framework层的未捕获异常:先说几个结论:①只要把异常传给了系统,进程和进程组就会被干掉,不管哪个线程出现异常;②如果异常不传给系统,主线程出现未捕获异常,进程也会死亡,但子线程不会...
2019-05-11 15:49:57
742
原创 Kotlin30分钟快速上手
探讨、补充,纠正。参考来源李刚的《疯狂Kotlin讲义》一.基本类型二.运算符三.流程控制四.函数和lambda表达式五.高级函数六.数组和集合七.面向对象八.泛型九.比较偏的语法一.基本类型 (1)每种类型都有一种扩展,比如Int还有另外一种Int?,区别在于**定义时后者能为null,**但是调用相关方法时需要?.fun()这样调用,或者强制调用!!.fun()。这一切都...
2019-03-10 16:20:10
618
原创 ubuntu使用virtualbox的xp系统记录
主机:Ubuntu 18.01 LTS虚拟机:Windows XP因为有些东西还是要在Windows系统处理才方便,比如下下电影啥的,之前也装过win7和win10,无奈发现太卡了,又换了XP系统,流畅很多,基本不卡顿,这其中也遇到一些问题,花了一下午才解决,网上也好像比较少人用XP作虚拟机,稍微记录下。一.安装增强功能:文件共享要安装增强功能,一开始的时候死活装不了,一直报下面的错误:...
2019-01-06 23:36:06
359
原创 Mac系统ping不用提权的原因
前几天在做udp嗅探的时候,发现一个问题,苹果系统的ping(ping6)是不用提权的,没有s位,引起了我的好奇,因为在我使用过的ubuntu系统或者是centos系统也好,这个ping都是带s位的。在解决主要问题的时候也顺便把这个问题给解决了。会创建s权限,是为了让一般用户在执行某些程序的时候,能够暂时具有该程序拥有者的权限,ubuntu系统或者centos系统下ping程序为了接收ICMP...
2018-12-31 13:40:44
1461
1
原创 Android8.0绕过后台启动服务的限制
Android8.0绕过后台启动服务的限制看完startService的源码之后发现,只要我们的targetSDK设置成小于26的依然还是可以在8.0的手机上后台启动service的。来简单看下源码吧:ContextImpl$startServiceCommon:private ComponentName startServiceCommon(Intent service, boolean ...
2018-11-15 15:46:26
9946
1
原创 从native层去startService(非原生系统7.1保活)
上篇文章我们谈到了在Android7.1原生系统上保活《从native层去startService(原生系统7.1保活)》但是我们发现在非原生系统的手机上使用时不能保活成功,主要是参数错误,导致startService没能成功,针对这个问题,又再进行了一点研究。1.错误的原因:会触发“calling Package is null”的问题或者其他字符串为空的问题,本质上属于同一个问题。这个问题...
2018-11-03 16:37:06
1148
11
原创 从native层实现startService(android7.1原生系统保活)
一.准备工作:因为我们的工程会包含binder库和binder间接依赖的cutils库,但这些库都不在Ndk里面,直接在native层去编译会找不到,所以要放在源码环境下编译。#include <binder/MemoryHeapBase.h>#include <binder/ProcessState.h>#inclu
2018-11-03 15:03:43
2729
原创 关于Parcel
关于Parcel1. 概念: Parcel是一个容器,他可以包含数据或者是对象引用,并且能够用于Binder的传输。同时支持序列化以及跨进程之后进行反序列化。在android系统中用途非常广泛,主要功能就是用来进行IPC的通信,用来序列化的Parcelable接口,还有aidl其实也就是封装了Parcel的数据传递。2. 数据结构: Parcel底层维护了一个用来存储数据的变量: ...
2018-11-03 10:24:15
1032
原创 BroadcastReceiver的注意事项
一.动态注册优于静态注册1.静态注册生命周期长于动态注册: 官网开发手册有提到: 太多的BroadcastReceiver会影响手机的性能和电量(原因还没弄明白,估计跟跨进程通信有关),所以应该尽可能地缩短BroadcastReceiver的生命周期,减少我们自身app的电量消耗。2.动态注册优先级高于静态注册,能降低被拦截的风险。二.动态注册生命周期管理1.推荐在Activi...
2018-08-22 15:17:21
983
原创 ubuntu18.04LTS使用经历
(持续更新,最近修改:2018/08/06)最近换了台电脑联想y7000,还是喜欢Ubuntu,就先装了16.04LTS,无奈装好之后一直有开源驱动nouveau的问题,虽然能正常使用,但偶尔还是会发生问题,本来想干脆重新装14.04LTS,正好18.04LTS也出来了,就直接升级系统到18.04了,升级过程很顺利,升级完成之后安装nvidia显卡也非常顺利.回归正题。(一)ubuntu下...
2018-08-06 22:58:40
2991
原创 CRNN端到端文本识别复现实践
原文:An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition作者是华中科技大学的白翔老师,这个老师还是很厉害的。论文提出的CRNN模型比较简单,并且泛化能力强,在这里进行模型的复现(使用Tensorflow)和训...
2018-05-31 19:38:43
5705
16
原创 builder模式构建JavaBean
这几天在看顾浩鑫的《Android高级进阶》,觉得这本书写得挺不错的,作为进阶一类,设计的知识面很多。在看的时候有一个知识点讲得很好,是关于Builder模式的,之前在学习设计模式的时候通常都是分析UML类图,学一些简单的接口和实现等,关于应用方面学习得比较少,看这本书的时候,刚好有一个章节专门对Builder模式进行讲解,以及它的变种在开发中的应用。学习完之后觉得受益颇多,故将此...
2018-05-09 16:22:24
1223
原创 openGLES使用:RGBA转ARGB
使用openGLES的时候,可以使用readPixesl方法读取framebuffer里面的像素值,但是在android里面,bitmap四个通道的只有ARGB,而openGLES读取的图像颜色排列是RGBA,所以这里需要进行一下转换: int len=width*height;RGBA->ARGBfor(int i=0;i<len/2;i++){ i...
2018-05-07 19:27:52
2753
原创 android自定义编译注解器学习笔记(一)
这几天在学习自定义注解器,好记性不如烂笔头,将相关学习作为笔记记下来,加深理解,同时也进一步探索butterknife的原理。一.注解器的配置 自定义编译注解器 主要是需要继承 AbstractProcessor这个类,这里有两点要注意: ①这个类是javax扩展包下的类,它不在android提供的类里,如果直接在android app...
2018-05-07 16:49:46
420
原创 JNI动态加载so文件
最近在工作中遇到一个问题,就是一些c/c++工程师写好的代码要移植到移动端使用,但是这些函数本身不可能符合JNI规范,打包出来的so动态依赖库是没办法直接调用的。所以还是要写jni来动态加载so文件,把他们桥接起来,Jni怎么写这里就不说了,在c/c++文件里#include 这个头文件,写个函数指针,利用dlopen()函数就可以实现动态加载so文件。这里有如下几点心得体会:①打包成
2017-07-21 23:51:28
2162
原创 详解Handler机制和模拟Hangler
很多android开发者都赞叹Handler的方便和易用,这几天花了点时间仔细研究下,谈谈Handler的机制,刚开始写博客,写得不好还望大家多多指教。分4部分写吧:Handler的创建,Handler获得消息,发送消息,和模拟handler。1.new Handler()我们来看下Handler的构造方法:public Handler(Callback callback,
2016-11-24 18:21:00
363
原创 aapt.exe已停止工作以及无法生存R.java文件
捣鼓了一下午,eclipse一直遇到aapt.exe停止工作的问题,然后就没办法生存R.java文件。百度了很多,大多是说自身xml文件有问题,但我的console又一直没有错误显示出来,后来再慢慢想了一下,是由于aapt.exe没办法工作才导致R.java文件没办法生成的,那么问题就可能是出现在aapt.exe这个程序上。进入了sdk下的build-tools,找了一个版本进去,运行一下aapt
2016-10-16 21:17:43
1545
understand5.0.953 for linux
2018-08-08
Jtable设置指定行的背景颜色
2015-08-17
java jtable数据排序问题
2015-08-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人