java
yanglongyyl
Coding
展开
-
解决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 · 702 阅读 · 0 评论 -
实现一个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 · 881 阅读 · 0 评论 -
给定一个正整数数组,返回这个数组元素拼接起来所能组成的最大数
由于最大数可能超过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 · 3857 阅读 · 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 · 2479 阅读 · 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 · 1877 阅读 · 0 评论 -
两个字符串或者多个字符串中有哪些相同字符的算法
例如当前有两个字符串String s 和String t,找出这两个字符串中含有相同的字符并返回,算法一(效率最差的):/** * * @param s * @param t * @return 返回值未去重 */ static char []solution(char[] s,char[] t) { char[] c...原创 2019-05-09 01:49:30 · 3467 阅读 · 1 评论 -
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 · 1844 阅读 · 0 评论 -
c语言实现rsa nopadding非对称加密算法(openssl api方式),匹配java后端 bouncycastle
c语言和java语言的rsa非对称加解密算法,RSA/NONE/NoPadding方式原创 2017-12-01 16:15:48 · 7004 阅读 · 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 · 4190 阅读 · 0 评论 -
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 · 1328 阅读 · 0 评论 -
双重检验锁定单例模式的优化写法(非volatile,全版本jvm通用)
首先介绍下普通的双重检查锁定: 图中这样的代码是有问题的,因为jvm存在无序写入,在代码sInstance = new TestSingleTon() 这一处,有可能在构造函数执行前sInstance变为非null,这时的sInstance指向是一个尚未构造完成的对象,这时其他线程可能会得到一个尚未初始化完成的对象,对这个对象进行操作是会出现问题的; 针对可能出现上述无序写入问题,原创 2017-01-07 00:37:19 · 400 阅读 · 0 评论 -
JAVA死锁的写法(实际工作中要避免)
在java开发中,避免不了要加锁控制程序逻辑,但加锁有可能导致死锁,造成线程永远卡死在等待释放锁,后面的代码得不到执行; 在java里,一般是通过synchronized关键字加锁,在jdk1.5版本中新增了Lock接口显示的加锁,本文讨论用这两种方式实现死锁; 方式一:public static void main(String[] args) { Object lock1 =原创 2017-02-28 16:03:34 · 865 阅读 · 0 评论 -
删除链表中重复的元素
有序链表:输入: 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 · 216 阅读 · 0 评论