java
文章平均质量分 57
云水-禅心
淡看庭前花开花落,漫随天外云卷云舒。
展开
-
Android WebViewJavascriptBridge JS层调用Native层流程解释
在android开发中,存在Android的原生Native层与JS网页混合开发的需求,此时可以使用WebViewJavascriptBridge框架进行桥接,实现JS与Native层相互通信。下面对WebViewJavascriptBridge框架的实现流程做简单解释:原创 2024-05-11 19:26:37 · 476 阅读 · 1 评论 -
Android gradle编译错误OOM:java heap space的解决办法
android项目开发中gradle编译大项目出现OutOfMemeryError OOM:java heap space问题,探寻解决办法原创 2022-07-29 15:00:32 · 1731 阅读 · 0 评论 -
谷歌的json解析器Gson在Android/Java中的常用工具类
gson解析器,可实现子类和json字符串之间互转原创 2022-07-18 16:45:31 · 2838 阅读 · 0 评论 -
Socket通信java.io.IOException: Broken pipe问题分析和解决
场景android程序开发中,Java层与JNI层使用socket进行通信:java层提供服务 @Override public void run() { //.............省略一万行 while(true){ //.............省略一万行 try { //等待客户端请求 logi(TAG, "run: Rea..原创 2022-05-18 18:28:43 · 6030 阅读 · 0 评论 -
二维数组遍历方式(先行后列、先列后行)差异测试
package com.hulk.java.test;/** * 二维数组遍历 * 二维数组遍历耗时测试数量:5000 * 先行后列耗时1:46801759 * 先列后行耗时2:389399550 * 二维数组遍历耗时测试数量:50 * 先行后列耗时1:9087 * 先列后行耗时2:9482 * @author zhanghao * */public class DoubleArrayTest { public static final int COUNT = 5000; .原创 2022-04-21 16:45:59 · 1422 阅读 · 0 评论 -
Android 中编译运行java代码的方法
Android 中编译java代码的方法项目根目录 .idea/gradle.xml 文件 <GradleProjectSettings> 标签下增加如下标签<option name="delegatedBuild" value="false" /原创 2021-11-19 10:49:25 · 584 阅读 · 0 评论 -
Android Apk 反编译和重打包说明 定制资源替换
Android Apk 反编译和重打包说明可参考网站: https://ibotpeaches.github.io/Apktool/install/ 测试环境: Ubuntu 18.04按照上面网站的说明,下载了apktoolhe apktool.jar, 用法如下:反编译hulk@hulk-PC:~/byod/tools/repackage-tools$ apktool d -r demo-app-signed.apk -o testI: Using Apktool 2.5.0 o.原创 2021-07-26 21:28:32 · 712 阅读 · 0 评论 -
Java 版本的 InetAddress Inet4Address or Inet6Address 基本用法
直接通过demo判断地址类型IPv4和IPv6, demo如下:package com.hulk.http.util;import java.net.Inet4Address;import java.net.Inet6Address;import java.net.InetAddress;import java.net.UnknownHostException;import java.util.Arrays;/** * InetAddress单元测试 * @author: z.原创 2021-06-19 17:38:32 · 3215 阅读 · 0 评论 -
Git补丁简单用法介绍(打补丁.diff 和 .patch 和 git apply、git am应用)
git apply、git am打补丁.diff 和 .patch生成patchgit format-patch -M master生成指定patch,afc425592dc7dde9317d729d8c65206cfea749fc是commit id,-1是指从当前id开始,向下提交次数,包含此次且计数从1开始。也就是说,我想要打出afc425592dc7dde9317d729d8c65206cfea749fc当前的patch,则命令如下:git format-patch -1 afc4255原创 2021-05-21 23:48:10 · 1671 阅读 · 0 评论 -
Java数字摘要
Java数字摘要工具类public static class DigestUtils { /** * 把二进制数据转化为十六进制字符串 * @param text * @return */ public static String bin2hex(byte[] data) { return String.format("%0" + (data.length * 2) + "X", new BigInteger(1, data)); ...原创 2021-04-22 14:24:20 · 215 阅读 · 0 评论 -
Android中实现Dex和apk动态加载
Android中实现Dex和apk动态加载一. 原理: android中可实现dex动态加载功能, 通过反射机制,替换系统内部的类加载器,使用自定义的类加载器,可实现动态加载最新的class, 此方法主要用途: (1). 用于替换调系统内部实现内实现class; (2). 实现bug热修复,服务器下发一个dex文件,客户端重启进程事加载新的class,从而声不知鬼不觉的"偷偷"修复bug.二. Dex类动态加载 下面一使用自定义加载assets中的jar文件加以说明...原创 2021-04-01 12:18:20 · 1228 阅读 · 0 评论 -
Android开发okhttp+retrofit+rxJava 之文件上传下载
基于上一篇文章实现了基本的okhttp请求基本用法:https://mp.csdn.net/editor/html/115055910下面结合retrofit和rxJava实现文件上传下载, 带下载进度,.基本介绍.Retrofit是基于okhttp基础上进行高度封装或者包装的产物, 结合rxJava, 可以说是如鱼得水,天作之合, 可以很方便实现网络请求的同步异步切换, 摆脱了以前的AsyncTask和Handler机制. 直接链式写法实现网络切换;1. 基本实现 retrofit的...原创 2021-03-21 22:33:24 · 2068 阅读 · 2 评论 -
Android/Java中okhttp用法介绍
最近Android老项目改造, 之前老代码一直用AndroidHttpClient实现网络请求,存在以下问题1. 版本太老旧, 最近无更新;2. 网络请求模块代码太散乱,不好管理,3. 不支持SSL/TLS1.2以上版本反正就是旧时代的产物, 需要进行整改.于是就开始网络请求模块重构, 组训以下原则:1. 修改网络请求不能修改之前的业务到吗逻辑,包括其他人的代码, 避免引入bug;2.网络请求只能用一两个类实现, 统一管理整个http请求功能, 便于逻辑控制;选择用当...原创 2021-03-21 22:00:43 · 929 阅读 · 1 评论 -
按序打印代码实现举例
在网上无意间看到一个问题:我们提供了一个类:public class Foo {public void first() { print("first"); }public void second() { print("second"); }public void third() { print("third"); }}三个不同的线程 A、B、C 将会共用一个Foo实例。一个将会调用 first() 方法一个将会调用second() 方法还有一个将会调用 third...原创 2021-03-15 19:14:20 · 174 阅读 · 0 评论 -
Java版本Xpath解析Xml文件文本用法说明
java或者Android开发中进程使用到xml解析, 本文讲述Xpath解析方式用法.本文通过代码的方式呈现,不讲理论了. 每个函数和关键代码块都有注释,请看官们注意看即可类解释:XpathParser: Xpath核心解析类,通过该类可以实现xml,可以通过各种方式获取节点和条件查询XpathUtils: xpath解析工具类, 主要解析节点和节点列表信息为常用的对象NadeInfoNodeInfo: 节点信息类XpathTest: java版本的测试类XmlPrinter.原创 2020-09-28 18:31:32 · 397 阅读 · 0 评论 -
Java使用wait和notify实现线程同步
* Java使用wait和notify实现线程同步* wait、notify、notifyAll是Object对象的属性,并不属于线程。函数解释* wait:使持有该对象的线程把该对象的控制权交出去,然后处于等待状态(注:当调用wait的时候会释放锁并处于等待的状态)* notify:通知某个正在等待这个对象的控制权的线程可以继续运行(当前线程先获取锁,使自己的程序开始执行,完成任务后通过notify同样去释放锁,并唤醒正在等待的线程)* notifyAll:会通知所有等待这个对象控制权...原创 2020-09-22 12:31:58 · 922 阅读 · 0 评论 -
Android 11版本适配 API调整
记录android 11版本的API调整:1.SQLiteDatabase API变化:删除旧版本hide的接口:addCustomFunction(String name, int numArgs, CustomFunction function)如果采用技术手段骗过编译器或者使用反射调用给接口,就会出现崩溃异常, Android 11版本修改后的替换接口有两个:(1).设置自定义标量函数:setCustomScalarFunction(@NonNull String fun...原创 2020-09-17 17:27:50 · 1007 阅读 · 0 评论 -
Android多进程加载资源失败问题分析:android.content.res.Resources$NotFoundException: Resource ID #0x7f08XXXX
在Android开发中如果存在多进程共享资源用法时, 会出现资源到不到问题.真实碰到的问题, 记录下来提供同学们参考一, 崩溃信息崩溃日志如下--------- beginning of crash08-17 18:54:00.622 17167 17167 E AndroidRuntime: FATAL EXCEPTION: main08-17 18:54:00.622 17167 17167 E AndroidRuntime: Process: com.mobile.emm.trus原创 2020-09-08 18:18:28 · 1969 阅读 · 0 评论 -
Gradle编译混淆jar包流程说明和解决错误 lint 和 java.io.IOException: Please correct the above warnings first.
一. Gradle编译混销魂的jar包,流程:开发编译环境为Android studio 3.6.2,其他版本可能会有不一样的地方,1. 增加编译task在需要编译jar包的build.gradle文件的根中增加task ://app/build.gradle://apply plugin: 'com.android.application'apply plugin: 'com.android.library'.........................//自定义编译任.原创 2020-06-19 16:53:52 · 1127 阅读 · 0 评论 -
Android开发中content://与file://真实文件路径的转换
问题:最近在开发文件查看器中出现一个问题: 接收到一个uri:content://media/external/images/media/2283 获取到的getPath:/external/images/media/2283, 打开文件是出现异常:java.io.FileNotFoundException: open failed: ENOENT (No such file or ...原创 2020-04-08 16:10:10 · 38324 阅读 · 0 评论 -
HTTP 请求Apache错误码注释
HTTP请求Apache错误码注释 1xx - 信息提示这些状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应。100 - 继续101 - 切换协议2xx - 成功这类状态代码表明服务器成功地接受了客户端请求。200 - 确定。客户端请求已成功201 - 已创建202 - 已接受203 - 非权威性信息204原创 2014-04-25 10:39:16 · 3289 阅读 · 0 评论 -
常用的java正则表达式
常用的java正则表达式正则表达式是编程中的一个难点和重点,下面就列举一些JAVA中常用的正则表达式大全。供大家共同学习。 1整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$2只能输入数字:"^[0-9]*$"。3只能输入n位的数字:"^\d{n}$"。4只能输入至少n位的数字:"^\d{n,}$"。5只能输入m~n位的数字:。"^\原创 2014-05-21 21:32:09 · 1154 阅读 · 0 评论 -
Java实现约瑟夫算法问题
/** * Java约瑟夫问题: n个人(不同id)围成一个圈,从startId(任意数)个开始报数m(任意数)个数,数m的人出列排成新队列,m清零, * 然后又从下一个人开始数m个数开始,数到m就出列接在新队列尾部,如此重复,知道所有人都出列为止。 * 打印 出列后的新队列 * * eg * int n = 10;//总人数 int m = 3; //报数个数 int startIndex = 1; //起点位置 * @author Hulk 2014 03 20 *原创 2014-03-20 11:44:40 · 2837 阅读 · 1 评论 -
Java数据结构 遍历 排序 查找 算法实现
1. 遍历算法(遍历二叉树6种方法) 排序算法 查找算法原创 2014-06-27 23:43:15 · 5146 阅读 · 0 评论 -
数组正负元素前后移动算法的实现(以0为分界线)
数组正负元素前后移动算法的实现(以0为分界线) * 负数前移,放在数组前面部分,正数放在后面原创 2014-06-06 21:36:41 · 1627 阅读 · 0 评论 -
阿拉伯数字 转换为 汉字数字 算法实现
package test;public class NumberFormatTest {static String[] units = { "", "十", "百", "千", "万", "十万", "百万", "千万", "亿","十亿", "百亿", "千亿", "万亿" };static char[] numArray = { '零', '一', '二', '原创 2014-06-06 21:43:30 · 2215 阅读 · 0 评论 -
android实现 彻底退出应用/清除数据/卸载应用的方法
还在为不能完全退出Android应用而发愁吗?还在为不能彻底清除应用数据纠结吗?还在为无法停止后台Service而苦恼吗?不用了着急,试试我的办法。。原创 2014-10-28 13:53:46 · 30852 阅读 · 1 评论 -
java和Android文件下载断点续传和图片下载代码实现,可直接复制简单实现
java和Android文件下载断点续传和图片下载代码实现,可直接复制代码, 实现多种文件下载,原创 2015-04-24 16:23:43 · 1826 阅读 · 0 评论 -
Java文件读写操作具体代码实现
/** * 一、BufferedReader类 public class BufferedReader extends Reader * 从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。 可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值足够大。 * 通常,Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求。因此,建议用 BufferedReader包装所有其 read() * 操作可能开销很高的 Reader(如 FileReader原创 2015-04-27 19:29:16 · 3048 阅读 · 0 评论 -
数据库视图view简介
视图是一个虚拟表,其内容由查询定义。 同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。 对其中所引用的基础表来说,视图的作用类似于筛选,基于数据表(可为多个表)的查询结果来筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。分布式查询也可用于定义使用多个异类源数据的视图。 视图是存储在数据库中的查询的SQL 语句,它主要出于两种原因:安全原因原创 2016-08-25 10:36:37 · 1409 阅读 · 0 评论 -
Android系统启动过程简介
Linux内核启动之后就到Android Init进程,进而启动Android相关的服务和应用。 用android系统HomeLauncher启动整个过程转载 2017-09-07 18:00:33 · 570 阅读 · 0 评论 -
快速排序法(java 代码)
递归实现快速排序法: * 以一个值为基准值(通常第一个),把数组分成两部分: 前面部分的值都比基准值小, 后面部分的值都比基准值大. * 1.每一次递归循环以第一个值为分界点, * (1).先从后面开始检索,值比基准值大就略过,比之小就把此值移到左边指针位置 * (2).再从前面开始检索,值比基准值小就略过,比之大就把此值移到当前的右指针位置 * 如果左指针比右指针小,继续循环1和2,...原创 2018-05-02 22:54:36 · 588 阅读 · 0 评论 -
RAS非对称加密的Java实现及举例
RAS用来加密机密数据:密码/转账资金等等,数据不能呢个太大,否则会非常耗费资源. * 一般随机生成公钥和私钥,用户只需要保存好对应的密钥对,不用关心密码到底是什么. * RAS非对唱加密Java实现: * 1.采用分组加密的方式,明文可以比较长,理论上无线长,但是太耗费时间 * 2. 不采用分组加密,直接整个元数据加密的话,每次最多加 117 bytes, 否则:见下面例子:package co...原创 2018-06-09 13:48:41 · 1706 阅读 · 0 评论 -
Android版本的RSA非对称加密实现
* Android版本的RSA加密算法实现 Java也适用 * 1. 可生成密钥对 * 2. 解析X509格式的公钥私钥Activity中如下调用: // 由字符串公钥字符串生成公钥 PublicKey publicKey = ARSAUtils.keyStrToPublicKey(PUBLIC_KEY_STR); // 由字符串公钥字符串生成公钥私钥 PrivateKey pri...原创 2018-06-09 19:38:16 · 1741 阅读 · 0 评论 -
linux系统下svn服务器操作命令
linux系统下svn服务器操作命令1、将文件checkout到本地目录 svncheckout path(path是服务器 上的目录)例如:svncheckout svn://192.168.1.1/pro/domain简写:svnco2、往版本库中添加新的文件 svnadd file例如:svnadd test.php(添加test.php)svna原创 2013-09-18 15:00:14 · 7677 阅读 · 0 评论