自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (5)
  • 问答 (2)
  • 收藏
  • 关注

原创 ChatGPT人工智能浪潮所带来的产业机会

相对应的,这一层的竞争壁垒是极其高的,不仅体现在人工智能的技术上,对数据、财力的要求也非常高,像AI芯片这种,是为大模型训练提供算力服务的,目前全世界也就只有英伟达的芯片才能Hold住这逆天的算力要求。因此,行业大模型的出现填补了这一空缺,它们通过对行业的深入研究和分析,将通用大模型的能力和行业应用紧密结合,可以为特定行业提供更精准的解决方案。目前,在中国最早推出通用大模型的公司是百度的文心一言,但阿里、腾讯等大公司也一定、也必须跟进人工智能这次科技革命,相信未来中国也会有几家通用大模型。

2023-04-07 18:10:15 2315

原创 细数和Chatgpt相似的开源模型

还记得我们上面说到的chatgpt3训练要经过预训练、强化学习和反馈学习三个步骤吧,LLaMA只有预训练的过程,而Alpaca相当于是用了LLaMA预训练完的模型,剩下需要人工的训练都通过gpt3.5来完成,所以Alpaca的表现看起来就和gpt3一样。Vicuna目前也是成本很低的一种模型,很适合个人开发和训练。所以chatgpt也是经过人工不断优化和调整出来的,不是一开始就这么强大,从这也能看到,为什么chatgpt的门槛这么高,不仅是算力要求高,后期的反馈和激励训练是需要人工花很多时间的。

2023-04-07 18:08:09 6895

原创 C判断是否是elf文件

【代码】C判断是否是elf文件。

2022-12-14 15:18:23 320

原创 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 638 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 4685

原创 Kotlin协程原理理解和思考

先来看一段很简单的kotlin协程代码:fun test4() { GlobalScope.launch { println("准备执行") val value = async { println("执行异步") 1024 }.await() println("执行完毕:${value}") }}就是中途有段异步执行,代码需要等待这段异步执行完毕才会继续执行下面的操作,现在

2020-12-31 21:55:12 260 1

原创 Android单元测试技巧

之前做单测是为了完成任务,现在实在地为了测试代码的正确性,就容易遇到坑,刚好之前也没写总结,现在记一些好的单测方法,还有踩过的坑。一.日志输出我觉得这个是最重要的,测试代码时肯定要根据输出的日志来判断代码走到哪,之前又太注重行覆盖率,对这块不重视,这块还花了挺多时间处理的。Log.xxx是不能输出日志到控制台的,只能是System.out.print才能看到,所以我们需要mock Log的静态方法,把它的输出转变为System.out.print:PowerMockito.mockStatic(Lo

2020-10-24 11:50:35 501

原创 PyMouse在mac上不起作用分析

之前有个python文件,能够用PyMouse实现自动化点击功能,但升了系统之后就发现不起作用了(现在是10.15.6)。仔细分析了下,是pymouse.click的时候不起作用了。试了安装其它依赖,也试了其它库,发现都不行。也试了用sudo python, 但还是不行,猜测应该是系统权限导致的。这个新版本的系统,打开麦克风啥的都会弹出系统提示,虽然运行python文件时没有弹出,估计也是同样的问题。于是去系统设置——> 安全性与隐私——>辅助功能,把Python和终端两个程序都勾上,

2020-09-05 20:12:57 1197 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 884

原创 对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 1388

原创 多点触控笔记

一.多点触控的事件类型单点触控可以用event.getAction() 获得触摸事件的类型:ACTION_DOWN、ACTION_UP、ACTION_MOVE对于多点触控呢?不能再用getAction获得事件类型,要通过getActionMask获得(getActionMask是通用的方法,也适用于单点触控),除了上面那三个事件,还有两个事件:ACTION_POINTER_DOWN: 除第一个指针以外进入屏幕的其他指针。ACTION_POINTER_UP: 除第一个指针以外退出屏幕的其他指针。

2020-06-12 11:42:25 243

原创 OpenGLES在内存和卡顿上的优化

我们知道OpenGLES里面有个函数叫GLES20.glReadPixels,可以帮助我们从FrameBuffer里面把纹理像素拷贝到数组里面,但是这个方法有几个弊端:①耗时,花费的时间和截图的大小成正比关系,在一些差的设备上耗时非常严重,如果是播放视频,有明显卡顿;②耗内存,一般截图就是为了把像素数据输出到文件,通常都用Bitmap,这里有个问题是,用Bitmap的话,需要消耗两份内存,创建Bitmap的时候一份,截图时还需要申请一份。接下来我就针对这两个弊端给出优化的方案。一.耗时问题的优化耗

2020-05-15 17:23:52 3417

原创 Android感知View的出现

最近在做一个播放组件端上防作弊的效果,播放的时候判断广告是否被部分或者完全遮挡了。比较重要的载体是Window,实际的表现形式是View,所以重点往监控Window和View的创建这样的思路出发。目前的话一共想到三种方案:①监控View的创建:通过给LayoutInflater 设置factory2来感知View的创建:LayoutInflater.from(context).setFa...

2019-11-24 10:38:14 411

原创 Kotlin的::语法和高阶函数遇坑记

大家都知道,Kotlin有高阶函数,每个函数的函数类型由函数的形参列表、->和返回值类型组成。比如:fun pow(base : Int, expo : Int) : String {}// 使用::将函数名称赋值给变量var myfun : (Int, Int)->String = ::pow 函数类型就像数据类型一样,既可用于定义变量,也可用作函数形参类型,还可作为函数的...

2019-09-10 21:13:33 229

原创 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 12541

原创 Android未捕获异常机制

一.Framework层的未捕获异常二.Framework层未捕获异常避免弹窗方案三.Native层的未捕获异常机制四.Native层收集crash原理五.Native层未捕获异常避免弹窗方案一.Framework层的未捕获异常:先说几个结论:①只要把异常传给了系统,进程和进程组就会被干掉,不管哪个线程出现异常;②如果异常不传给系统,主线程出现未捕获异常,进程也会死亡,但子线程不会...

2019-05-11 15:49:57 620

原创 Kotlin30分钟快速上手

探讨、补充,纠正。参考来源李刚的《疯狂Kotlin讲义》一.基本类型二.运算符三.流程控制四.函数和lambda表达式五.高级函数六.数组和集合七.面向对象八.泛型九.比较偏的语法一.基本类型 (1)每种类型都有一种扩展,比如Int还有另外一种Int?,区别在于**定义时后者能为null,**但是调用相关方法时需要?.fun()这样调用,或者强制调用!!.fun()。这一切都...

2019-03-10 16:20:10 476

原创 ubuntu使用virtualbox的xp系统记录

主机:Ubuntu 18.01 LTS虚拟机:Windows XP因为有些东西还是要在Windows系统处理才方便,比如下下电影啥的,之前也装过win7和win10,无奈发现太卡了,又换了XP系统,流畅很多,基本不卡顿,这其中也遇到一些问题,花了一下午才解决,网上也好像比较少人用XP作虚拟机,稍微记录下。一.安装增强功能:文件共享要安装增强功能,一开始的时候死活装不了,一直报下面的错误:...

2019-01-06 23:36:06 228

原创 Mac系统ping不用提权的原因

前几天在做udp嗅探的时候,发现一个问题,苹果系统的ping(ping6)是不用提权的,没有s位,引起了我的好奇,因为在我使用过的ubuntu系统或者是centos系统也好,这个ping都是带s位的。在解决主要问题的时候也顺便把这个问题给解决了。会创建s权限,是为了让一般用户在执行某些程序的时候,能够暂时具有该程序拥有者的权限,ubuntu系统或者centos系统下ping程序为了接收ICMP...

2018-12-31 13:40:44 1291 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 9486 1

原创 从native层去startService(非原生系统7.1保活)

上篇文章我们谈到了在Android7.1原生系统上保活《从native层去startService(原生系统7.1保活)》但是我们发现在非原生系统的手机上使用时不能保活成功,主要是参数错误,导致startService没能成功,针对这个问题,又再进行了一点研究。1.错误的原因:会触发“calling Package is null”的问题或者其他字符串为空的问题,本质上属于同一个问题。这个问题...

2018-11-03 16:37:06 1079 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 2492

原创 关于Parcel

关于Parcel1. 概念: Parcel是一个容器,他可以包含数据或者是对象引用,并且能够用于Binder的传输。同时支持序列化以及跨进程之后进行反序列化。在android系统中用途非常广泛,主要功能就是用来进行IPC的通信,用来序列化的Parcelable接口,还有aidl其实也就是封装了Parcel的数据传递。2. 数据结构: Parcel底层维护了一个用来存储数据的变量: ...

2018-11-03 10:24:15 954

原创 BroadcastReceiver的注意事项

一.动态注册优于静态注册1.静态注册生命周期长于动态注册: 官网开发手册有提到: 太多的BroadcastReceiver会影响手机的性能和电量(原因还没弄明白,估计跟跨进程通信有关),所以应该尽可能地缩短BroadcastReceiver的生命周期,减少我们自身app的电量消耗。2.动态注册优先级高于静态注册,能降低被拦截的风险。二.动态注册生命周期管理1.推荐在Activi...

2018-08-22 15:17:21 918

原创 ubuntu18.04LTS使用经历

(持续更新,最近修改:2018/08/06)最近换了台电脑联想y7000,还是喜欢Ubuntu,就先装了16.04LTS,无奈装好之后一直有开源驱动nouveau的问题,虽然能正常使用,但偶尔还是会发生问题,本来想干脆重新装14.04LTS,正好18.04LTS也出来了,就直接升级系统到18.04了,升级过程很顺利,升级完成之后安装nvidia显卡也非常顺利.回归正题。(一)ubuntu下...

2018-08-06 22:58:40 2952

原创 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 5549 18

原创 builder模式构建JavaBean

        这几天在看顾浩鑫的《Android高级进阶》,觉得这本书写得挺不错的,作为进阶一类,设计的知识面很多。在看的时候有一个知识点讲得很好,是关于Builder模式的,之前在学习设计模式的时候通常都是分析UML类图,学一些简单的接口和实现等,关于应用方面学习得比较少,看这本书的时候,刚好有一个章节专门对Builder模式进行讲解,以及它的变种在开发中的应用。学习完之后觉得受益颇多,故将此...

2018-05-09 16:22:24 1153

原创 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 2608

原创 android自定义编译注解器学习笔记(一)

            这几天在学习自定义注解器,好记性不如烂笔头,将相关学习作为笔记记下来,加深理解,同时也进一步探索butterknife的原理。一.注解器的配置            自定义编译注解器 主要是需要继承 AbstractProcessor这个类,这里有两点要注意:         ①这个类是javax扩展包下的类,它不在android提供的类里,如果直接在android app...

2018-05-07 16:49:46 372

原创 JNI动态加载so文件

最近在工作中遇到一个问题,就是一些c/c++工程师写好的代码要移植到移动端使用,但是这些函数本身不可能符合JNI规范,打包出来的so动态依赖库是没办法直接调用的。所以还是要写jni来动态加载so文件,把他们桥接起来,Jni怎么写这里就不说了,在c/c++文件里#include 这个头文件,写个函数指针,利用dlopen()函数就可以实现动态加载so文件。这里有如下几点心得体会:①打包成

2017-07-21 23:51:28 2115

原创 详解Handler机制和模拟Hangler

很多android开发者都赞叹Handler的方便和易用,这几天花了点时间仔细研究下,谈谈Handler的机制,刚开始写博客,写得不好还望大家多多指教。分4部分写吧:Handler的创建,Handler获得消息,发送消息,和模拟handler。1.new Handler()我们来看下Handler的构造方法:public Handler(Callback callback,

2016-11-24 18:21:00 309

原创 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 1500

understand5.0.953 for linux

understand5.0.953 for linux 64位。运行方式:解压后,进入bin/linux64/,然后运行 ./understand。破解的话自己去找个码就行了,亲测可用,

2018-08-08

understand for mac破解版

苹果电脑使用的代码查看器understand破解版,强大易用,里面有Licence,随便复制一个就可以使用了。

2018-08-01

mac for googlechrome

苹果电脑使用的谷歌浏览器google chrome,亲测可用。很好用。

2018-08-01

htmlunit最新版2.18含api文档

使用htmlunit模拟浏览器所需要的jar包都在里面,下载好了,全部解压,全部导入进去就行了

2015-08-04

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

TA关注的人

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