自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

鱼塘鱼汤的专栏

鱼塘的技术博客

  • 博客(49)
  • 资源 (15)
  • 收藏
  • 关注

原创 Pag的2D渲染执行流程

Pag 2D渲染执行流程

2023-03-03 14:42:47 1054

原创 Pag渲染过程 -- 背景知识

渲染是图形程序的核心,无论是我们在电子设备上看到的任何图形或者文字都是利用计算机图形渲染技术给我们呈现出来的结果

2023-02-25 14:06:38 804

转载 PAG 4.1 正式发布:新增支持微信小程序

PAG 4.1 版本新增支持微信小程序,新增支持多个常用 AE 特性,如图层样式-渐变叠加、蒙版-羽化和不透明度、 亮度轨道遮罩/亮度轨道反转遮罩等。经过 2 个多月 6 个版本的迭代,PAG 4.1 版本已经趋于稳定,目前广泛应用于 QQ、小红书等头部 APP,现正式发布,欢迎大家接入使用。

2022-12-17 08:04:53 619

原创 腾讯Libpag动画库研究2(Pag实现原理)

Pag,动画,Lottie,渲染

2022-08-23 20:53:43 4563

原创 腾讯Libpag研究1(扫盲和介绍)

Pag介绍PAG是腾讯在好几年前发布的一种动画文件格式,但是以前一直没开源,用的人也很少,也就一直没有关注。不过他们终于在今年1月份开源了,我也是这个时候开始去研究PAG,发现里面有不少值得学习的东西。动画库扫盲做应用开发的我们都知道,可以利用系统提供的动画API实现各种动效,但是这种办法效率很低,并且无法移植,多端都需要自己开发一遍。并且开发出来的效果和设计师需要的多多少少会有一些差异,一开始的方案是使用帧动画或者gif/webp的动图来播放,但是由于图片占用资源过大,所以没有广泛使用。16年起业界

2022-05-11 23:26:10 5187 2

原创 简单实现当天是否为工作日的判断程序

项目里需要实现一个在工作日往工作群里定时发送消息的机器人,如何判断当天是否为工作日呢?肯定不能简单的判断是否为周末吧,在网上搜了一圈也没搜到。不过想到平时自己都是通过百度来看哪一天是否为工作日的,这就给我提供了思路。百度日历接口思路一开始是想通过抓百度日历的请求API报文来看是否有现成的API接口给我们使用。不过只看到里面请求了一个类似这种接口:https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?query=%E6%B3%95%E5%AE%9A

2021-05-20 21:46:41 953

原创 我的一些感悟

前言现在的技术日新月异,对于一个IT从业者来说是一种机遇,也是一种挑战。机遇是我们有新的技术可以拥抱,有可能能够解决现有问题的方案。而如果这个新技术的变革型的,那我们的从业方向都有可能会发生改变。如果我们能够在这个时候抓住这个机遇,那我们就能够快速升值,获得更高的薪水甚至财务自由。但是新技术可能更多的给从业者带来的却是挑战。作为一个工作7年多的老程序员,自己最大的感悟就是抓住不变,拥抱变化。抓住不变底层看技术,高层看业务站在底层看技术现在无论是做移动开发,还是做服务器编程;无论软件是运行在类Uni

2020-10-18 19:58:50 250 2

原创 修复金山云KSYStreamer 在Android P以上机型Native Crash

问题在升级了Target API28之后,发现我们一直使用的金山云的推流SDK在部分Android 9以上的手机离开开播页的时候会不明的出现Crash,我的小米8上面是固定第二次的时候Crash,一些手机第一次就Crash了,崩溃日志如下:Abort message: 'FORTIFY: pthread_mutex_destroy called on a destroyed mutex (0x...

2020-04-02 21:34:22 6220 7

原创 RxJava2的Flowable observeOn线程调度顺序问题

在项目的下载库部分使用了PublishProcessor来实现支持有背压的Observable,向外提供数据变化状态,同时还对外提供了Single从数据库里面去获取数据。在下载界面我们会首先去subscribe PublishProcessor以监听数据变化,然后去拉取数据,填充到我们的界面里。流程大致如下:TD.downloader.observeTaskChange() .f...

2019-11-28 22:11:34 1001

原创 用Python实现一个简单的批量无水印快手抖音批量下载器

文中介绍的方法仅限学习使用,切勿做非法用途结合上一篇说了一个通过在手机上面搭建Http服务去破解App的密钥,如何真正的实现一个批量下载视频的功能呢?我们用Python3简单的写了一个脚本,可以搜索特定用户,选择用户后,下载这个用户所有的视频。项目地址:https://github.com/tbruceyu/AppCaller , 欢迎Star关键接口搜索用户的接口:http://...

2019-10-28 20:21:07 3950 2

原创 利用沙盒技术破解APP的API协议加密

偶然无聊的需求项目地址:前段时间闲的没事,经常刷某视频App。里面有很多有才的人,偶然把他们的视频都给下载下来在电脑上面存起来慢慢看。作为一个主要工作在客户端上的码农,第一时间想到了去抓包看一下他们的App协议。可以看到,通过调用http://103.107.217.65/rest/n/feed/profile2这个接口就可以去获取到这个主播的视频了。然后通过分页加载即可下载所有的视频。...

2019-10-14 20:12:33 7025 6

原创 一道面试题重新拾起C语言

今天一个群里一个别人发了一个脉脉上的面试题,如下:这个题如果只用大学的C语言知识肯定无法解决的。还好我以前看过《深入理解计算机系统》这本书,知道一个程序其实就是一堆地址和一堆指令组成,这个提明显需要在子函数里面修改父函数的栈地址。我们知道栈地址是从高地址往的地址分配内存的,如下图所示:在做函数跳转的时候,有两个很关键的寄存器,ebp(64位是rbp)和esp(64位是rsp)。ebp是保存...

2018-12-25 14:00:12 289 1

原创 颜色格式简介

RGBARGBA是代表Red(红色)Green(绿色)Blue(蓝色)和Alpha的色彩空间。红绿蓝又被称为三原色。Alpha通道虽然有的时候被描述为一个颜色空间,但是它其实仅仅是RGB模型的附加了额外的信息。采用的颜色是RGB,可以属于任何一种RGB颜色空间。现在的显示器一般都是使用的这种色彩模式。颜色空间图如下:通常现在用得最多的是RGB888,也就是红,绿,蓝各占8个位,取值范围从0~...

2018-11-16 14:59:23 5379

原创 一种比较好的JNI Java和C++相互传递参数和返回值的方法

序言以前在Android上做移动多媒体开发的时候,有很多需要在Java和C++相互传递参数的Case,以前因为时间卡的紧,一直没有去修复这一类的问题,因为能用,没有出什么问题,也就没有想什么优化方案。最近自己有一些闲暇时间折腾点小玩意儿,也需要从Java和C++之间相互传递参数。想到以前曾经有JNI方法20多个参数的情况,于是准备把这块好好优化一下。思路数组封装法我想到的第一种思路是把各种...

2018-11-04 22:46:08 1513

原创 Vivo/Oppo手机安装app时自动输入密码以及点击安装

Vivo手机和Oppo等手机在安装App的时候总是会有一个讨厌的弹窗让我们输入密码或者点击继续安装,严重的影响了开发效率。如下图所示这简直是无法忍受。于是想着写一个软件帮我自动点击。第一是想到的用辅助功能在界面上点。这样是可以,但是经常服务在后台被莫名其妙的停止了,而且在密码窗界面设置了安全窗口,无法获取任何界面信息。于是我想到了在电脑上面写一个shell脚本,帮我实现自动点击。脚本比较简单,...

2018-10-09 10:35:53 9512 2

原创 最简单的让IjkPlayer自动旋转带有rotation视频的方法

问题在项目里面我们使用了ijkplayer0.8.8版本去播放网络视频,发现有一些视频播放时被拉伸了。如下图: 把视频抓下来查明原因,发现是视频metadata里面带了rotation信息,而视频的宽高被调换了。解决方法官方的解决方法是给一个ROTATION_CHANGE的回调给上层,然后上层去把View做旋转。这样实在是太麻烦。我但是很奇怪的是ijkplayer本身是基于ffp...

2018-09-13 16:24:21 6644 6

原创 放弃了std::list,自己实现了一个简单的list

原因在项目中前人使用了std::list来做一个队列式,支持头或者尾的push操作。使用场景是视频的录制: 生产者:从摄像头采集数据,然后push_front到队列头,如果超过了最大限制,则pop_back队列尾的元素,实现丢帧操作 消费者:从队列里面back拿到桢,然后pop_back删除末尾桢。 所有的list的操作均加入了互斥锁。理论上应该是没有多线程访问的问题的。然而在线上表现却...

2018-03-16 18:24:41 641 4

原创 记录下Gradle化Android Gallery3D应用的过程

意义Android系统里面有很多优秀的应用。Gallery3D就是十分优秀的一个。里面包含了renderscript图像处理,OpenGL特效渲染等一系列的功能。很多同学以为它是在Android源码里面,所以一直敬而远之。但实际上它几乎没有使用什么私有的API,完全可以独立出来用SDK编译成app放到其他版本的手机上面运行。我在一年前研究滤镜的时候做过一个版本的Gallery3D应用,但是一年过去了

2017-03-03 13:51:59 1285 2

原创 用Python BeautifulSoup写的一份多线程图片抓取的脚本

最近一个做设计的妹子需要从一个素材的网站(https://www.goodfon.su)下载各种图片原图作为设计的素材,但是苦于境外网站,而且只能单张下载,而且单张图片需要两个路径才能到达原图的下载地址。 几年没写过Python的我决定从操就业帮她写一份批量下载的脚本。由于是国外网站, 访问速度很慢,所以得用多线程批量下载。 输入特定关键字,还有图片数量,轻松批量下载。由于时间仓促脚本质量并不高

2017-02-10 11:19:15 1796

原创 Mac El Capitan(10.11.6) 编译以及烧制Nexus6P(6.0.1-MTC20F)的曲折经历

下载Android源码由于以前有过Android源码相关的开发经验,所以这一关倒是难不倒,重新参考官方的文档即可(http://source.android.com/source/downloading.html)搭建Mac下的编译环境Android官方有Mac的源码编译环境搭建介绍(https://source.android.com/source/initializing.html#settin

2016-11-28 17:01:15 1184

原创 去掉CSDN博客右边讨厌的二维码浮层

经常在CSDN看博客,但是最近CSDN右边的移动客户端的推广二维码严重的影响了阅读体验,所以需要想办法把它去掉。 使用一个叫做stylish的chrome插件就可以搞定了。这个插件可以很方便的修改网页里面的CSS。这里通过chrome的debug工具,查询到了广告的class id为tracking-ad,于是加入一个只运用到http://blog.csdn.net/的规则隐藏掉这个广告栏就可

2016-04-07 00:12:08 694 2

原创 Gradle化的Android Gallery3D App

花了点时间把Android源码里面的Gallery3D拷贝出来做了一个能够用Gradle编译的版本,其中有so库是直接从系统拉取出来的,兼容性不一定十分完美,但是我身边的机型都支持。阅读它的实现对我们学习Android的render script以及一些3D特效和图片滤镜处理十分有帮助。源码地址https://github.com/tbruceyu/GradleAndroidGallery3D效果

2016-01-14 00:47:49 667

原创 使用Android Studio调试内存问题

前言内存问题对于Android开发者是永远的痛。如果一个Android程序员说他没有遇到过OutOfMemory,那只能说他绝对不是做Android的。以往在ADT年代,都是使用eclipse的Mat(http://www.eclipse.org/mat/)插件来做内存分析。在使用了Android Studio开发后,发现AS不仅带来了不少编码上的便利,同时还带来了很多有用的工具。其中的内存分析工具

2015-11-26 14:38:22 13927 2

原创 VIM的一些自己的使用tips(5年前整理的,看到后热泪盈眶)

高效利用 VIM,成为编码高手(环境 VIM7.2)很久以前,接触了 Linux 系统,并且开始在 Linux 系统上开始了我的 C 语言学习历程。最先一般都 是在 gedit 里面像高亮版本的记事本一样写程序。后来知道原来 Linux 下有 2 个历史上很有名的编辑器, 一个是 VIM,一个是 Emacs。而且还有人说过一句话:世界上分为 3 种程序员,一种是用 VIM 的,一种是用 Ema

2015-11-15 00:47:07 1752 1

原创 Mac Retina解决gitk模糊的问题

Mac Retina解决gitk模糊的问题个人是gitk和git gui的忠实用户,但是在MAC下安装后,发现极其模糊git在Mac下其实早就适配了高分辨率了,Patch如下:https://gist.githubusercontent.com/cynthia/5f2355a87c2f15d96dbe/raw/6727e73a007b0efabf55dd065e588467ffccc016/wish

2015-11-14 23:52:38 3815 3

原创 Python使用urllib2 POST数组

经常会需要写脚本来模拟HTTP请求,python再适合不过了,但是今天突然需要模拟HTTP发送数组(也就html里面发送checkbox数据的那种格式)。由于需要上传文件,我用了poster这个库来方便做multipart上传。但是发现poster居然不支持上传数组,于是自己在其加上了这个功能。需要的可以到https://github.com/tbruceyu/python-poster下载试试使用

2015-11-01 17:52:15 5017 2

原创 看一手的有字幕的Google Android开发视频

作为一个Android开发者,肯定希望能够第一首的获得官方的一些新闻以及视频,Google在Youtube有一个叫Android Developers的公众号,专门提供有用的Android视频地址如下: https://www.youtube.com/channel/UCVHFbqXqoYvEWM1Ddxl0QDg 但是由于没有字幕,英文听力不好的同学看起来十分费劲。偶然发现Youtube竟然提

2015-10-09 21:24:15 906

原创 Android APP去除启动页出现的黑色闪现

Android APP在启动的时候,会有默认的一个黑色预启动背景,如果启动页是亮色的,十分影响视觉。我们只需要设置SplashActivity的Theme就可以了。方案有三种:设置一张图<style name="Theme.AppStartLoad" parent="android:Theme.NoTitleBar.Fullscreen"> <item name="android:windo

2015-10-08 14:16:16 3530 1

原创 检查网页的不规范

有时候会遇到一些因为网页接口不规范,导致浏览器兼容问题,这个时候可以先把接口或者网页放到http://validator.w3.org/去做一次verification,使用方法极其简单。但是说不定能够获取到一些极其有用的信息。能够预防一些因为编码没有指定或者HTML开口问题造成的奇怪的兼容性Bug。

2015-08-30 14:11:50 556

原创 自己编译运行Fresco

介绍Fresco(https://github.com/facebook/fresco) 是Facebook出的一个高性能的ImageLoader。内存占用方面表现得十分优秀。但是由于一些特殊要求,需要修改一些源代码,满足我们自己系统的要求。比如如果自己公司的图片服务器加入了防盗链的机制,需要再HTTP头里面加入referer这个header。准备工作1、安装Android Stu

2015-08-27 00:06:39 1471

原创 Android Studio多个module导入AAR库

介绍有时候由于需要一些自定义之后的开源库,无法使用jCenter里面的官方库,又懒得自己搭建Maven仓库,所以我们想要自己在项目里面直接导入本地的AAR库。通用方法和问题网上通用的AAR导入Gradle的方法很简单:repositories { flatDir { dirs 'libs' } } dependencies { compile

2015-08-26 23:54:52 12427 3

原创 Fiddler实现App前后端隔离开发

需求现在基本的一个App开发流程都是在定好需求后,就开始Agile development。需要客户端与服务端共同商量一套协议之后,服务端和客户端开始并行开发。原则上客户端应该相信服务端,但是事与愿违,经常会出现服务端返回一些并非客户端想要的数据,造成上线后App的各种异常。为了让服务端对客户端造成的影响最小,我们可以借助一些工具来协助我们开发。今天要说的就是Fiddler(http://www.t

2015-08-20 00:38:45 1902

翻译 Fresco介绍: 一个全新的Android图片加载库

Displaying images quickly and efficiently on Facebook for Android is important. Yet we have had many problems storing images effectively over the years. Images are large, but devices are small. Each p

2015-08-13 00:12:41 1803

原创 Android圆角Tag控件的另类实现

项目需要实现圆角的标签功能,按照日常的实现,用一个ShapeDrawable就可以搞定。但是如果我们是想要有图片背景的圆角标签呢?这个就需要把背景先设置成图片,然后再把这个图片处理成圆角的,最后再设置成背景。如下步奏:

2015-08-07 11:50:22 1256

原创 Android4.2蓝牙Enable完全分析

这应该只会是唯一的一篇从头到尾的调用关系都分析一遍的文章,目的是为了帮助初学者从上往下一层一层分析代码,对大量的代码不再害怕。如果是对阅读Android代码很熟悉的人可以略过这一篇。蓝牙EnableAndroid的蓝牙Enable是由BluetoothAdapter提供的。只需要调用BluetoothAdapter.enable()即可启动蓝牙。下面我就分析这一个过程。由于Andr

2013-10-14 23:31:53 18952 7

原创 关于堆排序(参考自算法导论)

堆排序是一种很有用的排序算法,有用的并不是在排序上的用处,而是那个大根堆和小根堆的建立,在平时的运用中,举足轻重!一个最有用的实例就是操作系统的进程的最大优先权调度算法。从很多进程中,找到优先级最大的进程,然后分配CPU资源。堆排序的主要步骤也就是创建堆。一旦最大堆(最小堆)创建好了,排序也是十分简单的事情了。下面的我们全部以大根堆来做讲解堆是一种数据结构,可以理解成为一种完全二叉树,但是有个

2012-05-30 13:51:37 1012

原创 关于SLEEP函数

以前很喜欢用sleep和usleep函数来做定时器。确实方便啊。但是昨天在公司用这个函数写了个东西,被说这2个函数最好别在多线程里面使用。然后叫我改一个定时器方案。查看了man文档。发现sleep还真有问题。里面就写得有BUG:BUGSsleep() may be implemented using SIGALRM; mixing calls to alarm() and slee

2012-02-19 17:18:08 2185

原创 PHP关于的数组的一个小笔记

今天写PHP的时候,因为写好的一个库接受的一个数组参数中,第一个元素不符合那个函数的要求,所以要unset掉。于是我unset(0);但是这个操作之后发现数组中的0号位置的元素是删除了,但是数组的排列顺序依然是没变的,只是0号元素消失了,以前的下标顺序没变,不想自己写函数,我觉得PHP应该是有这方面的库函数的,于是首先想到了reset函数,但是用了这个函数之后发现完全没任何变化,后来查资料说---

2012-02-12 13:33:38 596

转载 imagemagick用法

imagemagick是一个很高效的命令行图片处理工具,可以结合shell编程实现批量处理,加快处理效率。一般我用来批量处理的工作有:批量改变大小、批量改变添加水印等。imagemagick用法:命令格式如下:convert [+/-命令和命令的参数]* 常用的命令有:-crop 宽x高+起点横坐标+起点纵坐标:裁剪图[]-resize 宽x高[!]:改变尺寸,如果使用惊

2011-06-11 14:37:00 1775

原创 基于Linux系统调用使用php实现一个在线编译运行C语言程序的系统

<br />     前段时间给学校做一个在线练习C语言程序和C语言考试的系统,服务器架构是LAMP的。因为其他的都没什么好多的,要实现在线编译只要exec()函数直接调用gcc进行编译就行了,$compile_str = "gcc ".$filename." -o ".$prog_name." 2>"."compile_result.txt;iconv -f UTF-8 -t GB2312 "."compile_result.txt -o compile_res.txt"; <br />    这里解释一

2011-04-11 21:42:00 5659 8

Android Studio多moduleAAR示例

http://blog.csdn.net/yutao52shi/article/details/48015125的示例代码

2015-08-26

Android强制控件圆角实现

Android圆角Tag控件的另类实现 http://blog.csdn.net/yutao52shi/article/details/46995591

2015-08-07

蓝牙的一些有用官方文档以及Bluez详解

A2DP_SPEC_V13.pdf bluez.pdf HFP15_SPEC_V10r01.pdf HSP_SPEC_V12.pdf PBAP_SPEC_V11r00(Phone_Book_Access_Profile).pdf Simultaneous Use of HFP A2DP and AVRCP_WP_V11.pdf 蓝牙驱动及Bluez使用流程分析.pdf

2013-06-17

sqlExplorer插件for Eclipse

Eclipse插件。sqlExplorer。。你懂的……

2011-08-11

gtk+2.0中文教程

不错的GTK入门+参考文献~~学习学习图形~毕竟现在Linux还是GTK用得多……而且手机很多也是用的这个

2011-03-06

mysql5.0中文参考手册chm

一本不错的参考书,学习学习~~呵呵~~~~~

2011-03-06

C语言深度剖析--PDF

这本书确实写得很好!把其他基本好书里面看到的游泳的东西都写进去了~值得看

2011-03-06

linux宝典电子书全版+读书工具

《Linux宝典》美国Linux经典入门图书,涵盖了几乎所有的Linux知识,必备!全书下载

2010-08-02

Vim用户中文版全教程

一个很好的VIM全教程。呵呵。大幅度增加我们的编程速度哦

2010-04-29

空空如也

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

TA关注的人

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