点滴记录
小猪快跑22
专注于Java以及Android
展开
-
FastJson序列化导致的 “$ref“
刚转后端没多久,在通过RPC调用其他组的服务的时候,其他组对接的同学说,你的入参是有问题的,然后他把入参发我,类似于下面的json"roomNumber" : "1002" , "street" : "上海市徐汇区田林街道" } , "age" : 10 , "brotherMO" : {"$ref" : "$.addressMO" } , "className" : "上海中学" , "name" : "我是哥哥" } , "name" : "我是弟弟" }这个对象包含一个addressMO和。原创 2023-05-05 17:37:39 · 1181 阅读 · 1 评论 -
Android集成微信SDK不回调 WXEntryActivity 中的 onResp方法
集成微信SDK后,WXEntryActivity 中无法收到 onResp 回调的原因原创 2022-07-13 08:28:57 · 1059 阅读 · 0 评论 -
深刻理解什么是数字签名
数字签名是用来核实发送消息方身份的,能够确保消息没被篡改。数字签名采用的是非对称加密。举个例子,小明要给小红发送一份邮件:小明生成密钥对,公钥和私钥,公钥自己保存,不让任何人知道;公钥给小红。小明将邮件的内容通过 hash 算法生成数字摘要。小明使用私钥加密数字摘要生成数字签名。小明将要发送的内容和数字签名一起发送给小红。小红收到内容和签名后,使用公钥解密数字签名得到数字摘要 — a1。小红使用相同的 hash 算法将内容生成数字摘要 — a2,比较 a1 和 a2 是否相等,如果相等则说原创 2022-04-13 20:20:45 · 1367 阅读 · 0 评论 -
Java中的String为什么是不可变的?—String源码分析
什么是不可变对象?众所周知, 在Java中, String类是不可变的。那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的。不能改变状态的意思是,不能改变对象内的成员变量,包括基本数据类型的值不能改变,引用类型的变量不能指向其他的对象,引用类型指向的对象的状态也不能改变。区分对象和对象的引用对于Java初学者, 对于St...转载 2019-03-12 14:02:03 · 188 阅读 · 0 评论 -
android canvas drawBitmap方法详解
之前自己在自定义view,用到canvas.drawBitmap(Bitmap, SrcRect, DesRect, Paint)的时候,对其中的第2和3个参数的含义含糊不清。看源码函数也没理解,然后看了一些其他的博客加上自己的理解,整理如下。首先,我们看一张图片,今天就要绘制这张图片。然后将图片用红色的线条分成4个部分,如下: 我们自定义一个View,代码如下:public class Pot原创 2016-01-12 16:35:13 · 5545 阅读 · 0 评论 -
android studio finished with non-zero exit value 3的解决方法
在应用的build.gradle中加入如下: android { …. dexOptions { javaMaxHeapSize “4g” } }测试可行。原创 2017-05-08 13:55:00 · 597 阅读 · 0 评论 -
Java 以post方式获取数据
之前一直是以GET的方式来请求数据,今天有个需求是以post的方式来获取数据,记录下。代码很简单,基本是一些流的操作和post格式设置。 代码如下:public void getDataByPost(String url, String jsonData){ InputStream inputStream = null; HttpURLConnection urlC原创 2017-05-10 17:30:22 · 4161 阅读 · 0 评论 -
Iterator主要有三个方法:hasNext()、next()、remove()详解
转载自:http://blog.csdn.net/scyatcs/article/details/9003295 一、Iterator的API 关于Iterator主要有三个方法:hasNext()、next()、remove() hasNext:没有指针下移操作,只是判断是否存在下一个元素 next:指针下移,返回该指针所指向的元素 remove:删除当前指针所指向的元素,一般和next方原创 2016-01-14 11:13:13 · 63953 阅读 · 18 评论 -
android studio 设置Eclipse Code Formatter的图文教程
先说下android studio中设置快捷键跟eclipse中快捷键一样的方法: File -> Setting ->keymap: 设置 Eclipse Code Formatter 的方法如下: File ->Setting->Plugins,在上面的搜索框里面输入 eclipse,会出现Eclipse Code Formatter,然后点击 右边的install.如下图所示: 我已安原创 2017-04-28 15:52:07 · 3266 阅读 · 0 评论 -
git 开发规范1--在工作分支上开发代码然后合并到主分支
由于我们一个项目通常是由几个人同时开发,所以我们直接在主分支上进行各自代码的开发并不是很合适,所以我们需要新建worker分支,开发完成后合并到主分支上。1.创建worker分支:git branch my_worker 2.切换到worker分支:git checkout my_worker // **进行代码的开发 // 3.开发完成后提交代码: git add …添加或修改的文件原创 2017-05-22 17:48:45 · 3465 阅读 · 0 评论 -
git bash中 中文显示为数字
今天让去做一个另外一个项目,导入项目后,git status 发现原本该显示中文名的地方都变成数字了,看着特么难受,如下图: 解决方法如下: git config –global core.quotepath false现在中文界面就能正常显示了,如下图:原创 2017-07-05 14:11:55 · 4783 阅读 · 6 评论 -
git commit --amend用法
什么情况下用? 比方说,你的代码已经提交到git库,leader审核的时候发现有个Java文件代码有点问题,于是让你修改,通常有2种方法: 方法1:leader 将你提交的所有代码 abandon掉,然后你回去 通过git reset …将代码回退到你代码提交之前的版本,然后你修改出问题的Java文件,然后 git add xx.java xxx.java -s -m “Porjec原创 2017-06-20 17:57:23 · 35289 阅读 · 3 评论 -
查看apk的versionCode的2种方式
1.使用adb来查询,前提是你已经安装到设备上了。 a. 连接设备: adb connect 172..xx.xxx.xxx b. adb shell dumpsys package com.example.test | findstr versionCode但是这样做有个局限是你的设备必须安装了该apk。方法2 :利用 aapt来查看a. cd 到你android sdk的aapt.e原创 2017-08-01 11:04:25 · 14207 阅读 · 1 评论 -
git 常用指令
这个只是给自己使用的,方便自己查找相应的指令。1.将本地的文件(可能冲突)更新为跟远程库一样: 比方说将本地 .classpath 更新为库上最新的 git checkout HEAD .classpath原创 2017-08-04 09:46:01 · 3174 阅读 · 1 评论 -
怎么写一个“完美”的单例模式
单例模式大家接触甚至都写过好多了,那么是不是所有的单例模式都堪称完美呢,呵呵····,不一定。我之前写的一个单例模式就很有问题,什么问题呢?大家请看我写代码:class SingleTon { private static SingleTon mSingleTon; private SingleTon() { } public static SingleTon getIn原创 2016-01-28 08:25:19 · 1049 阅读 · 3 评论 -
apk反编译
写这个的原因就是反编译用的不多,每次需要反编译的时候都不知道怎么去做,Google下有的还是错误的。所以记录下我自测可行的方法。 首先要准备2个工具,两个工具我都上传到csdn了,地址如下: http://download.csdn.net/download/zhujiangtaotaise/10125824使用方法: 1.首先解压刚刚下载的工具 dex2jar以及gui。 2.将需要反编译原创 2017-11-20 15:47:31 · 330 阅读 · 0 评论 -
OKHTTP3自定义CookieJar和及Cookie持久化
一、简介Cookie会包含如下信息:name expires domain path secure;name:cookie 的名字;expires:过期时间。值是一个日期,一个时刻,而不是一个时长。在OkHttp中,你可以使用该字段在端上建立逻辑,也可以忽略该字段依靠server实现过期的逻辑。domain:cookie的作用域,指定了cookie将要被发送至哪个域中。默认情况下,doma...原创 2019-03-04 18:00:44 · 9082 阅读 · 0 评论 -
finished with non-zero exit value 2
错误的信息:Process ‘command ‘C:\Program Files\Java\jdk1.8.0_60\bin\java.exe” finished with non-zero exit value 2解决方法:Adding multiDexEnabled true in gradle solved the issue for me.defaultConfig { ap原创 2017-04-28 08:58:17 · 418 阅读 · 0 评论 -
daemon not running. starting it now on port 5037
前言:今天连接了一台设备后,又 通过 adb 连接 另外一台设备(adb connect 172.16.xxx.xxx),然后点击adb shell,出现 more than one devices。然后我直接adb disconnect,再次 adb connect 172.16.xxx.xxx时,发现无反应,然后执行 adb start-server出现如下错误:* daemon not run原创 2017-03-15 11:50:25 · 1450 阅读 · 0 评论 -
内存溢出和内存泄漏的区别
内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。memory leak会最终会导致out转载 2017-03-07 09:27:52 · 784 阅读 · 0 评论 -
Java中的final关键字浅析
1、修饰类的成员变量 这是final的主要用途之一,和C/C++的const,即该成员被修饰为常量,意味着不可修改。 上面的代码对age进行初始化后就不可再次赋值,否则编译时会报类似上图的错误。 如果修饰的是引用类型的变量,那么初始化后就不能让他指向另一个对象,如下图所示2.修饰方法 用final关键字修饰的方法是不能被该类的子类override(原创 2015-12-09 15:33:25 · 630 阅读 · 0 评论 -
Android view 事件分发源码解读
在读到这篇view事件分发的时候觉得写的很好,故此转发。转载自:http://my.oschina.net/banxi/blog/187267?p=1一:前言View是Android中最基本的UI单元.当一个View接收到了触碰事件时,会调用其onTouchEvent方法.方法声明如下:/** * Implement this method to handle touch screen moti转载 2016-01-17 10:47:54 · 725 阅读 · 0 评论 -
android 利用一个TextView实现两行并且每行的字体大小和颜色各异
这个功能主要是利用 SpannableString来实现的。先来看看效果图:具体步骤如下: 1.在res/values/styles.xml文件中定义两个显示文本的style,分别给TextView中的第一行和第二行使用。代码如下: <style name="tv_style1"> <item name="android:textSize">45sp</item>原创 2016-01-05 16:38:16 · 6650 阅读 · 0 评论 -
自定义view模板,实现点击事件的回调
主要的目的就是仿老版QQ的一个界面做一个模板。然后实现点击事件的回调。先看效果图:步骤如下: 1.在res/values/目录下新建一个atts.xml文件 内容如下:<resources> <declare-styleable name="topbar"> <attr name="title" format="string"/> <attr name="原创 2015-12-22 14:28:12 · 850 阅读 · 0 评论 -
ViewPager实现微博引导页功能
最近做项目要用到ViewPager , 所以就去网上找博文看看,然后自己就动手做了个小demo,写这篇博文的目的是加深自己的印象吧。好了,废话不多说,先看看效果吧! 先来说下整理思路吧,基本上网上都有过了。 1. 从SharedPreferences中获取是否是第一次进入微博的flag。 2. 如果是第一次,则2秒后进入微博引导页,否则进入微博主页 3. 在微博引导页的最后一页显示进入微博的原创 2015-12-25 11:10:09 · 1014 阅读 · 0 评论 -
Android 进程间通信(IPC)---AIDL入门
AIDL简介 AIDL是 Android Interface Definition Language的缩写。AIDL 是一种IDL 语言,用于生成可以在Android设备上两个进程之间进行 IPC的代码。如果在一个进程中(例如Activity)要调用另一个进程中(例如Service)对象的操作,就可以使用AIDL生成可序列化的参数。 这里我们需要建立两个工程,一个作为客户端,另外一个作为服务端。一原创 2016-03-07 17:08:31 · 656 阅读 · 1 评论 -
如何在Eclipse中查看jdk类库的源码
在Eclipse中查看JDK类库的源代码!!! 方法如下:1.点 “window”-> “Preferences” -> “Java” -> “Installed JRES”。2.此时”Installed JRES”右边是列表窗格,列出了系统中的 JRE 环境,选择你的JRE,然后点边上的 “Edit…”, 会出现一个窗口(Edit JRE)。3.选中rt.jar文件的这一项:“c:\progr原创 2016-03-01 09:30:53 · 866 阅读 · 0 评论 -
深刻理解正则表达式的"组"以及"?:"
一、正则表达式组的概念: Groups Group是指里用括号括起来的,能被后面的表达式调用的正则表达式。Group 0 表示整个表达式,group 1表示第一个被括起来的group,以此类推。所以; A(B(C))D 里面有三个group:group 0是ABCD, group 1是BC,group 2是C。二、?:的理解—取消所在括号的组: 有点难以理解,直接通过小demo来讲解。pu原创 2016-08-16 20:00:18 · 708 阅读 · 0 评论 -
Java 读写本地文件中文乱码
问题:在用Java程序进行读写含中文的txt文件时,经常会出现读出或写入的内容会出现乱码。原因其实很简单,就是系统的编码和程序的编码采用了不同的编码格式。通常,假如自己不修改的话,windows自身采用的编码格式是gbk(而gbk和gb2312基本上是一样的编码方式),而IDE中Encode不修改的话,默认是utf-8的编码,这就是为什么会出现乱码的原因。当在OS下手工创建并写入的txt文件(gbk原创 2016-08-02 16:34:01 · 1385 阅读 · 0 评论 -
查找list中重复数据
需求: 查找一个List集合中所有重复的数据,重复的数据可能不止一堆,比如:aa, bb, aa, bb, cc , dd, aa这样的数据。如果有重复数据,则给这些重复数据加上编号,上述数据改为:aa1, bb1, aa2, bb2, cc, dd.算法如下:public static void same(List<String> list) { String [原创 2016-08-31 15:45:36 · 6709 阅读 · 0 评论 -
无ROOT权限获取应用中的文件
一、连接盒子的adb,连好之后adb shell进入 shell环境二、run-as 包名, //run-as com.xxx.android三、cd /data/data/包名/databases. //cd /data/data/com.xxx.android/databases四、修改要获取的.db文件的权限,chmod 666 xxx_data_release五、exit 退出到根目录六、将原创 2016-10-31 16:28:32 · 1306 阅读 · 0 评论 -
Cannot refer to a non-final variable i2 inside an inner class defined in a different method 的真正原因
为了说明这个问题,先得明白说明是局部内部类,局部内部类就是在外部类的方法中定义的类。那么标题中的错误指的是,内部类不能引用该方法中非 final 修饰的变量。该截图如下:该内部类的方法inner_f()引用外部类的方法f()的非final修饰的变量。到底是什么原因呢?因为生命周期的原因。方法中的局部变量,方法结束后这个变量就要释放掉,final保证这个变量始终指向一个对象。首先,内部类和外部类其实是原创 2017-02-28 10:28:17 · 991 阅读 · 0 评论 -
面试感悟---一名3年工作经验的程序员应该具备的技能
前言因为和同事有约定再加上LZ自己也喜欢做完一件事之后进行总结,因此有了这篇文章。这篇文章大部分内容都是面向整个程序员群体的,当然因为LZ本身是做Java开发的,因此有一部分内容也是专门面向咱们Java程序员的。简单先说一下,LZ坐标杭州,13届本科毕业,算上年前在阿里巴巴B2B事业部的面试,一共有面试了有6家公司(因为LZ不想请假,因此只是每个晚上去其他公司面试,所以面试的公司比较少),其中成功的转载 2017-02-20 09:49:40 · 661 阅读 · 0 评论 -
AnimationDrawable加载SD卡中图片实现帧动画的坑
前言,项目中遇到一个需求,首先将包含帧动画的zip包从服务器中下载,然后解压到SD卡,然后将这些图片作为帧动画的资源图片。然后就想当然的想到用AnimationDrawable来实现。 main布局的xml代码如下: <AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android" android:原创 2017-01-22 16:54:21 · 1927 阅读 · 1 评论 -
getIdentifier获取资源Id的踩坑之路
前提: 之前做项目遇到一个问题,就是关于帧动画来的,我是用Java来实现。实现该动画的工程作为另一个工程的引用。先来说下 getIdentifier 函数:int id= getResources().getIdentifier("pig", "drawable", "com.zjt.xxxxx");第一个参数表示放入drawable文件夹中图片的名称, 第二个参数表示资源属性是ID或者是Dra原创 2017-02-15 16:05:46 · 4753 阅读 · 7 评论 -
从源码的角度分析Android消息处理机制
我们都知道Android的UI线程是非安全的,如果要在子线程中更新UI界面,出现会报错”Only the original thread that created a view hierarchy can touch its views.“。我们通常的做法是在UI线程中创建一个Handler,然后在子线程中通过sendMessage来更新UI。为什么这样做就可以呢?今天我们就通过源码来解释下。And原创 2016-03-08 11:41:02 · 494 阅读 · 0 评论 -
userdata image already in use, changes will not persist!
我在用Android模拟器的时候经常出现下面的错误 userdata image already in use, changes will not persist!我的解决方法很简单。就是在cmd中输入adb kill-server 然后再输入adb start-server,然后cmd显示(http://img.blog.csdn.net/20151016154954057)然后你启动模拟器就o原创 2015-10-16 15:51:20 · 1768 阅读 · 0 评论