自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (4)
  • 收藏
  • 关注

原创 macbook m1 JDK环境与AndResGuard编译遇到的Gradle同步报错

一.背景入手了apple macbook m1芯片版本,迫不及待的想配置开发环境进行开发调试,但是却遇到了如下Android Studio同步报错问题:二.复现步骤2.1.配置jdk首先下载jdk:https://cdn.azul.com/zulu/bin/zulu11.50.19-ca-jdk11.0.12-macosx_aarch64.dmg(这里为什么要用zulu jdk呢,因为zulu提供了m1芯片版本的openjdk,如果使用oracle jdk或者其他的openjdk,则是int

2021-09-12 21:53:29 3407 2

原创 macOS zsh git 自动补全和显示分支配置

1.自动补全git命令1.1clone git源码git clone https://github.com/git/git.git1.2 新建~/.zsh/目录mkdir ~/.zsh1.3拷贝git-completion.bash将git源码下的.git-completion.bash拷贝到~/.zsh目录下cp git-completion.bash ~/.zsh/.git-completion.bash1.4 新建~/.zshrc 文件新建~/.zshrc文件,输入如下内容z

2021-05-10 00:49:15 2764 15

原创 删除链表中重复的元素

有序链表:输入: 1->2->3->3->4->4->5输出: 1->2->5public ListNode deleteDuplicates(ListNode head) { if (head == null || head.next == null) { return head; } ...

2019-08-12 00:53:07 228

原创 线上环境定位ARouter+Tinker+多渠道打包导致java.lang.IncompatibleClassChangeError问题

由于模块化开发,项目引入了阿里ARouter路由组件,由于需要动态修复线上环境app某些异常问题,项目引入了腾讯tinker热修复组件,但是在项目上线这些组件后,出现了一个难以置信的bug,如下图所示:累计单个版本发生了上万次闪退,单个版本影响用户数千个,但是本地却没法复现,一到线上就有问题,这时就只能依赖bugly记录的线程栈来定位问题了;闪退方法栈如下:可以看到是ARouter在执行...

2019-06-27 12:38:43 707

原创 实现一个byte[]复用工具类

题目出自qq音乐Android现场笔试题,原题要求记得不太清楚,大概要求如下:public class ByteArrayCache { private int mMaxBytes; private List<byte[]> mBuffers = new ArrayList<>(64); public ByteArrayCache(int c...

2019-06-24 11:46:18 894

原创 记一次google cloud platform云服务器sshd服务挂掉如何恢复

由于云服务器默认ssh登入端口号是22,会有很多扫描器在互联网上扫描默认的22端口号,通过云主机的/var/log/secure文件可以看到:Jun 16 05:02:46 instance-1 sshd[13736]: input_userauth_request: invalid user admin [preauth]Jun 16 05:02:46 instance-1 sshd[137...

2019-06-21 23:56:30 4281 3

原创 给定一个正整数数组,返回这个数组元素拼接起来所能组成的最大数

由于最大数可能超过Integer.MAX_VALUE,返回值用String返回: //正整数数组组成最大数 static String maxNum(int [] array) { for (int i = 0;i < array.length;i ++) { for (int j = i;j < array.length;j ++) ...

2019-05-16 11:48:33 3870 1

原创 计算数组里面有多少对数之和等于指定的数,数组元素可以相等(同一个元素重复出现),配对过的index不能再次配对

用例:输入{1,1,99},100;返回1输入{1,1,99,99},返回2输入{5,8,1,9,10,99,2,3,98,98},100,返回2static int countSum(int[] items, int sum) { //key item元素,value 元素的index HashMap<Integer, Integer> has...

2019-05-16 00:01:46 2489 2

原创 快速找出一个数组中是否存在两个数字之和等于一个给定的值

给定一个数组和一个值例如int []array = {5,1,3,8,4}和10,首先算法一:public static boolean solution1(int array[],int num) { for (int i = 0;i < array.length;i ++) { for (int j = 0;j < array.lengt...

2019-05-10 03:37:53 1887

原创 两个字符串或者多个字符串中有哪些相同字符的算法

例如当前有两个字符串String s 和String t,找出这两个字符串中含有相同的字符并返回,算法一(效率最差的):/** * * @param s * @param t * @return 返回值未去重 */ static char []solution(char[] s,char[] t) { char[] c...

2019-05-09 01:49:30 3479 1

原创 腾讯mars xlog源码解析

前言  之前由于公司发展需要,app网络请求日志始终没有一个良好的分析手段,故公司成立了apm项目小组,通过AOP编程获取app网络请求日志并上报到服务端,然后通过网页多维度分析用户网络请求数据,类似听云博睿那样的工具,而日志模块通过调研最终选用了mars xlog,而xlog原有的日志格式并不符合业务需求,故需要通读xlog源码才能在其基础上进行修改,而且为什么选型xlog作为日志存储模块,接...

2019-04-11 17:06:59 2902 1

原创 编译ollvm4.0

首先下载ollvm源码 git clone -b llvm-4.0 https://github.com/obfuscator-llvm/obfuscator.git 然后命令行进入源码目录 cd obfuscator 建立build文件夹 mkdir build 进入build文件夹 cd build 配置cmake编译参数 cmake -DCMAKE_BUILD_TYPE=R...

2018-06-05 10:14:50 427

原创 Android应用内截图,解决ImageView不能截取问题

LinearLayout view = findViewById(R.id.root);ImageView mIvPreview = view.findViewById(R.id.iv);BitmapDrawable drawable = (BitmapDrawable) mIvPreview.getDrawable();Bitmap bm = drawable.getBitmap();...

2018-04-12 15:53:39 1422

原创 linux下编译opencv3.3.0 for android

环境:ubuntu 1604,ndk12b,androidsdk 首先下载源码,https://opencv.org/releases.html里面有很多版本的源码,本次使用3.3.0这个版本,所以复制图中的source超链接: 得到https://github.com/opencv/opencv/archive/3.3.0.zip源码地址,在linux的命令行窗口...

2018-04-01 11:30:55 1473

原创 android app内动态获取apk签名md5,与keytool获取的一致

首先使用keytool命令行获取: cmd中使用命令行:keytool -list -keystore D:\Desktop\app_key 根据提示输入keystore的密码,回车就可以看到签名的md5,sha1,sha256等信息 然后在app中使用次keystore编译app并打log,app代码:/** * MD5加密 * @param byteStr

2018-01-23 10:47:57 15970 5

原创 c语言(openssl)实现rsa/none/pcks1padding算法,匹配java后端

前一篇文章:http://blog.csdn.net/qq372848728/article/details/78687876int rsa_key_encrypt(EVP_PKEY *key, const unsigned char *orig_data, size_t orig_data_len, unsigned char *enc_data, size_t &enc_data_len

2017-12-01 16:26:14 1854

原创 c语言实现rsa nopadding非对称加密算法(openssl api方式),匹配java后端 bouncycastle

c语言和java语言的rsa非对称加解密算法,RSA/NONE/NoPadding方式

2017-12-01 16:15:48 7012 2

原创 jni使用openssl AES256位加解密(cbc模式),匹配java后端服务器算法,解决末尾乱码问题

前言:以下代码中统一的AES加密方式为”AES/CBC/PKCS7PADDING”,IV参数为”0102030405060708”(java中转为了byte数组,具体值看代码),之所以用CBC是因为它比ECB更安全 在使用openssl编写AES加解密算法代码时,发现c语言的AES加解密和JAVA的加解密并不能匹配,也就是说c语言加密的用c语言能解密,但是用java却解密不了,反之亦然;仔细对比发

2017-11-22 16:17:25 4201

原创 windows编译64位openssl给64位java jni调用(vs2017)

1,首先clone openssl代码,仓库:https://github.com/openssl/openssl.git 2,然后切换到分支:git checkout OpenSSL_1_0_2-stable 3,配置环境,下载并安装ActivePerl。 下载地址:http://www.activestate.com/activeperl/downloads ,我现在 的是64位的

2017-10-03 22:45:50 1334

原创 利用openssl crypto进行RSA非对称加密签名

最近公司升级app与后端通信安全机制,需要用到非对称加密RSA算法,需要在native层进行RSA签名,故采用ndk编译openssl的crypto目录下的算法,调用openssl相关函数进行签名。 首先,需要秘密保存私钥,这里在native层读到私钥后由于是在内存中,固需要用到openssl内存相关读取私钥的函数,openssl提供的bio接口读取字符串私钥,在内存中读取私钥有个坑,对私钥的内容

2017-08-05 15:29:25 1084

原创 android直播app礼物连击动画效果

最近在做公司的直播项目,需要实现一个观看端连击送礼物的控件: 直接上代码:

2017-07-12 03:28:50 4332 2

原创 编译ijkplayer,并添加rtsp、rtmp支持,解决无法播放、unknown、延迟问题

最近在研究利用ndk技术,实现FFmpeg解码解码视频文件、视频流,发现了B站的开源播放框架ijkplayer,真是太强大了,基于ijkplayer开发减少了许多移植FFmpeg的步骤。首先当然是配置好环境,我的环境是ubuntu_1604+ndk12e+git,按照官方的步骤,在terminal里输入回车ruby -e "$(curl -fsSL https://raw.githubuserc

2017-03-15 02:40:52 24351 10

原创 SimpleGif,一款使用方法类似Glide但更省cpu、memory的Android ndk gif解码库,cmake方式,android studio项目

Gif文件是由多张静态图片组合而成,每张图片都有自己的显示时间,屏幕通过连续显示这些图片,以达到动态图的目的,由于这些特性,导致如果用java去解码,可能效率不是那么高,因为java能运行速度始终无法匹敌c/c++,所以用jni技术,通过c/c++代码解码gif文件,再将解析得到的单张图片以及对应的显示时间返回到java层,再呈现到view上是比较好的方式。 我通过学习github上一些开源代码,

2017-03-01 14:00:16 2833

原创 JAVA死锁的写法(实际工作中要避免)

在java开发中,避免不了要加锁控制程序逻辑,但加锁有可能导致死锁,造成线程永远卡死在等待释放锁,后面的代码得不到执行; 在java里,一般是通过synchronized关键字加锁,在jdk1.5版本中新增了Lock接口显示的加锁,本文讨论用这两种方式实现死锁; 方式一:public static void main(String[] args) { Object lock1 =

2017-02-28 16:03:34 872

原创 git忽略某文件夹,但保留文件夹内的其它文件夹

需求:在构建Android Studio项目时,由于不需要把build文件夹内的文件track到仓库,但想track build文件夹内的outputs文件夹,故而需要修改.gitignore文件,在修改过程中遇到了很多坑;首先需要了解.gitignore一些通配符: 以斜杠“/”开头表示目录; 以星号“*”通配多个字符; 以问号“?”通配单个字符 以方括号“[]”包含单个字符的匹配列表;

2017-02-24 00:18:28 7937

原创 双重检验锁定单例模式的优化写法(非volatile,全版本jvm通用)

首先介绍下普通的双重检查锁定: 图中这样的代码是有问题的,因为jvm存在无序写入,在代码sInstance = new TestSingleTon() 这一处,有可能在构造函数执行前sInstance变为非null,这时的sInstance指向是一个尚未构造完成的对象,这时其他线程可能会得到一个尚未初始化完成的对象,对这个对象进行操作是会出现问题的; 针对可能出现上述无序写入问题,

2017-01-07 00:37:19 405

原创 解决Android与Java web的rsa加密算法的方法

最近想使用Android进行RSA非对称加密,但是发现加解密代码在android与pc上的运行结果不一样,后再发现是因为android的jvm与jdk的jvm实现的rsa不一样导致的,所以在创建Cipher对象时需要指定参数,android代码与标准java代码都用同样的参数:RSA/ECB/PKCS1Padding,

2016-12-06 00:38:43 709

原创 超简单上传开源项目到Github教程

1.首先肯定要有属于自己的GitHub账号啦,没有的就需要要申请,这里就不叙述申请账号的方法了,网上有随处可见 2.然后呢,需要生成ssh密钥,通过git bash cd到你的项目主目录,如果没有初始化成git的项目则需要先执行git init, 然后 执行ssh-keygen -t rsa -C “yout email”,双引号里填写你的github账户,一般都是邮箱作为账户的,执行完上面

2016-11-17 00:21:03 315

原创 Android Studio cmake方式jni开发,在c层使用其它动态链接库*.so

最近在研究Google推荐的cmake方式的ndk开发,遍寻网络居然很难找到如何在c层调用其它动态链接库函数(cmake方式),经过不懈努力,终于找到了可行的方法;本人初次涉及ndk开发,如有失误之处,请指教;

2016-11-16 01:30:46 1925

原创 AndroidStudio常用快捷键整理

1.ctrl+shift+n/ctrl+n:前一个是用来快速打开任意文件,后一个用来快速打开class文件 2.ctrl+e:列出最近修改的文件列表 3.alt+q:快速查看当前方法或者类的定义,貌似方法头不在视野内才会是查看方法的定义 4.ctrl+f12:查看当前文档结构,包括xml,java文件等 5.ctrl+alt+b:快速打开抽象方法的实现

2016-10-09 22:33:48 364

原创 单击AutoCompleteTextView后自动提示,无需输入字符,提示信息通过SQLite查询获得

单击AutoCompleteTextView后自动提示,无需输入字符,提示信息通过SQLite查询获得用到的方法 showDropDownAdded in API level 1 void showDropDown () Displays the drop down on screen.

2016-10-08 17:57:37 507

支持rtsp的ijkplayer配置文件

c文件放到ijkplayer\ijkmedia\ijkplayer目录下替换原来的,sh文件放到ijkplayer\config下,cd到ijkplayer\config执行 rm module.sh ln -s module-lite-rtsp-rtmp-hevc.sh module.sh 两条语句即可 http://blog.csdn.net/qq372848728

2017-03-15

android cmake方式的libjpeg项目

Android Studio cmake方式jni开发,在c层使用其它动态链接库*.so

2016-11-16

lpc1114 - 11xx 比较全的例程源代码

lpc1114 lpc11xx系列 mdk keil例程

2016-05-26

希捷硬盘坏掉专修工具STComTools

修9 10代很好用,这个软件实用,好用,只是备份7200.7的ROM不容易。以前修ST的盘一直用效率源修,前几天下来Stcomtools感觉维修起来也比较方便,尤其是加载F级的速度.请配合串口线可用,这个比较强悍,还可以,我的硬盘已经修复了,很不错的工具,修复ST 11以下盘都OK!

2014-10-10

空空如也

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

TA关注的人

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