- 博客(38)
- 资源 (4)
- 收藏
- 关注
转载 java中的各种锁详细介绍
转自:https://blog.csdn.net/axiaoboge/article/details/84335452Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。下面给出本文内容的总体分类目录:.
2020-11-12 09:36:27
94
原创 android连接打印机打印
google有自己提供的api支持手机和打印机链接同一个局域网来打印东西,非常的方便1、打印网页PrintManager printManager = (PrintManager)mContext.getSystemService(Context.PRINT_SERVICE);//打印任务的名字String jobName = getString(R.string.app_name) + " 处方打印";PrintDocumentAdapter printAdapter = webVi.
2020-06-02 11:19:36
2919
原创 应用涉及访问境外IP 被下架 问题如何解决
这次好多app 被应用宝强制下架 说是app涉及访问境外ip[warning]【体验问题】经核实,应用涉及访问境外IP,请整改后提交版本至平台更新,再提交工单申请外显收到应用宝的这封邮件心里哇凉哇凉的 什么鬼那么如何解决这个问题呢 ?我也是问了应用宝客服好久终于问出了解决方案。下面就是具体的解决方案。承诺函下载模板1 承诺函下载下来之后,填写说明下具体功能...
2020-01-10 18:00:02
6741
49
原创 mqtt 的 文档
MQTT官网:http://mqtt.org/MQTT介绍:http://www.ibm.comMQTT Android github:https://github.com/eclipse/paho.mqtt.androidMQTT API:http://www.eclipse.org/paho/files/javadoc/index.htmlMQTT Android API: h...
2020-01-02 16:51:09
483
原创 如何利用循环数组构建队列
队列(FIFO)也就是一种先进先出的数据结构,它有很多种实现方式,链表、数组,下面讲的就是如果利用循环数组来实现队列。如果利用单纯的利用数组 它的出队 (后面的数组都要向前移动)时间复杂度是O(n),但是如果把数组实现成一个循环的数组出队时 front加一就好了 后面的数组不必一一向前移动,那么他的时间复杂度就可以变为O(1),下面就直接撸代码public class LoopQue...
2019-10-22 17:31:36
449
转载 线程 interrupt问题解析
在java中,线程的中断(interrupt)只是改变了线程的中断状态,至于这个中断状态改变后带来的结果,那是无法确定的,有时它更是让停止中的线程继续执行的唯一手段。不但不是让线程停止运行,反而是继续执行线程的手段。对于执行一般逻辑的线程,如果调用它的interrupt()方法,那么对这个线程没有任何 影响,比如线程a正在执行: while(条件) x ++; 这样的语句,如果其它线程调...
2018-11-30 13:41:32
563
原创 Google Play App Signing问题
前几天 才上传了一个app到googole play store,上传的时候遇到一个大坑,加入什么鬼签署计划,当时很认真的研读了他们的文档好处说了一大堆“Google Play 应用签名”可通过 Google 强大的安全基础架构确保应用安全无虞。 了解详情点击“继续”将为您的应用永久注册“Google Play 应用签名” 这个是总体的好处 点击了解详情之后管理应用签名密钥借...
2018-07-31 16:48:50
2385
1
原创 Failed resolution of: Lcom/growingio/android/sdk/agent/VdsAgent;删除growingio引发的问题
删除了 growingio之后 项目一直报这个错误Failed resolution of: Lcom/growingio/android/sdk/agent/VdsAgent;真是讨厌解决方案 在as 的 Terminal 分别执行这两个命令./gradlew cleanBuildCache ./gradlew clean如果在使用上面两个命令的时候出现 权限拒绝 使用如下命令chmod +x...
2018-05-28 10:29:56
2821
转载 悲观锁与乐观锁
1. 悲观锁与乐观锁我们都知道,cpu是时分复用的,也就是把cpu的时间片,分配给不同的thread/process轮流执行,时间片与时间片之间,需要进行cpu切换,也就是会发生进程的切换。切换涉及到清空寄存器,缓存数据。然后重新加载新的thread所需数据。当一个线程被挂起时,加入到阻塞队列,在一定的时间或条件下,在通过notify(),notifyAll()唤醒回来。在某个资源不可用的时候,就...
2018-05-10 15:04:55
126
转载 Java内存区域与虚拟机类加载机制
1、程序计数器 “线程私有”的内存,是一个较小的内存空间,它可以看做当前线程所执行的字节码的行号指示器。Java虚拟机规范中唯一一个没有OutOfMemoryError情况的区域。 字节码解释器工作时就说通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。2、Java虚拟机栈 Java 虚拟栈,线程私有的,它的生命...
2018-04-03 17:33:52
167
转载 synchronized同步机制
Java多线程的同步机制(synchronized)一段synchronized的代码被一个线程执行之前,他要先拿到执行这段代码的权限,在 java里边就是拿到某个同步对象的锁(一个对象只有一把锁); 如果这个时候同步对象的锁被其他线程拿走了,他(这个线程)就只能等了(线程阻塞在锁池 等待队列中)。 取到锁后,他就开始执行同步代码(被synchronized修饰的代码);线程执行完同步代码后马上就...
2018-03-29 15:40:05
159
转载 建造者模式
目录1. 介绍1.1 定义将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示1.2 主要作用在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。用户只需要给出指定复杂对象的类型和内容;建造者模式负责按顺序创建复杂对象(把内部的建造过程和细节隐藏起来)1.3 解决的问题方便用户创建复杂的对象(不需要知道实现过程)代码复用性 & 封装性(将对象构建过程和细节...
2018-03-24 15:01:33
179
转载 栈帧、局部变量表、操作数栈
1.定义 栈帧(stack frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。 每一个方法从调用开始到执行完成的过程,就对应着一个栈帧在虚拟机栈里面从入栈到出栈的过程。 对于执行引擎来说,活动线程中,只有栈顶的栈帧是有效的,称为当前栈帧,这
2017-09-14 15:11:20
298
1
原创 jvm 运行时数据区域问题
java虚拟机在执行程序的过程中会把它管理的内存划分为不同的区域。他们每个区域都有自己的用途,创建及销毁时间。有的会随着虚拟机进程的创建而创建,有的会随着线程的启动和结束而创建及销毁。运行时数据区将划分为一下几个部分-->线程共享部分(堆,方法区)线程隔离部分(虚拟机栈,本地方法栈,程序计数器,)
2017-09-14 13:57:40
236
原创 点击返回键 不退出切换到后台
现在有很多的应用双击返回键之后都是 弹出一个对话框 退出 或者继续 或者给一句话 再次点击将要退出,但是有一些视频 音频类的app 需要后台播放,当你点击返回之后 你需要切换到后台 而不是退出 , 如果退出 那音频将不能继续播放了,那如何实现这个功能呢,只需要当你点击返回按键之后 添加如果几行代码Intent intent = new Intent(Intent.ACTION_MAI
2017-09-05 10:18:32
1244
转载 java 内存模型
Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的。如果我们要想深入了解Java并发编程,就要先理解好Java内存模型。Java内存模型定义了多线程之间共享变量的可见性以及如何在需要的时候对共享变量进行同步。原始的Java内存模型效率并不是很理
2017-08-12 15:15:50
211
原创 顶部状态栏改变颜色
package com.example.lib.common.util;import android.annotation.TargetApi;import android.app.Activity;import android.content.Context;import android.graphics.Color;import android.os.Build;
2017-08-03 10:08:13
929
原创 Retrofit 实现图片文字一起上传
在上传图片的过程中 我们经常上传一张图片的同时还要上传 其他一些附加信息 这里我是使用Retrofit 进行图片上传的 这里我就 已经认为你会Retrofit的基本使用了现在上关键代码 1.MultipartBody.Builder form = new MultipartBody.Builder();form.setType(MultipartBody.FORM);//设置
2017-07-18 10:32:42
483
原创 orecal 中的trim
trim一般都是用在删除字符串两边的空格。实际上,trim也可以用来删除字符串两边的指定字符。并且trim指定删除的字符串只能是单个字符。如 trim('字符1' from '字符串2') ,字符1只能是单个字符。1. trim()删除字符串两边的空格。2. ltrim()删除字符串左边的空格。3. rtrim()删除字符串右边的空格。4. trim('字符1' from '字
2017-07-14 09:49:16
321
原创 fragment懒加载问题
public class LazyBaseFragment extends BasePermissionFragment { private boolean mHasLoadedOnce = false;//子类重写该方法 进行懒加载 public void onLazyLoad() { } private boolean isLazy; /**
2017-07-14 09:43:22
230
转载 事件分发二
本文原创作者:谷哥的小弟 http://blog.csdn.net/lfdfhl在上一篇中已经分析完了View对于Touch事件的处理,在此基础上分析和理解ViewGroup对于Touch事件的分发就会相对容易些。 当一个Touch事件发生后,事件首先由系统传递给当前Activity并且由其dispatchTouchEvent()派发该Touch事件,源码如下:pu
2017-07-13 14:51:47
268
转载 事件分发
在之前的几篇文章中结合Andorid源码还有示例分析完了自定义View的三个阶段:measure,layout,draw。 在自定义View的过程中我们还经常需要处理View的Touch事件,这就涉及到了大伙常说的Touch事件的分发。其实,这一部分还是有些复杂的,而且有的地方不是很好理解,尤其是对于刚上路的新司机来说经常理不清楚,欲求不满,欲罢不能——想搞懂却又觉得难,想放弃又觉得舍不得。
2017-07-13 14:48:33
187
原创 如何解决滑动冲突
下面的方法 就是嵌套滑动时 解决滑动冲突的一个简单的方案 当你已经很熟悉 了 view的事件传播机制的话 那就 很容易看懂这个代码了下面的代码 只是重写了 内部嵌套View的disPatchToucheEvent下面这段代码只是解决横向滑动冲突 不过你可以自己改动 纵向 private PointF downP = new PointF();private PointF
2017-07-13 14:38:05
221
原创 RecyclerView 实现轮播图
有的同学很想实现自己的轮播图 但是却弄了一通放弃了 现在RecyclerView出现之后 很多同学就可以放心了 他有个非常棒的方法 能够像ViewPager一样 单页横向切换,且滑动到一半 或者一部分 自动滑动回去 或者 滑向下一页Support RecyclerView 24.2.0中增加一个非常重要的类SnapHelper,他的作用是让RecyclerView滑动视
2017-07-13 14:30:30
1126
原创 几个很好的安卓开源项目
jp.wasabeef:recyclerview-animators:2.2.5recycleview 删除 添加 等等 动画com.yqritc:recyclerview-flexibledivider:1.4.0recyleview 分割线 库http://www.jianshu.com/p/fda7a0f1f756 各种 刷新 viewpa
2017-07-13 14:03:08
2659
原创 RecyclerView 添加 Header 和 Footer
RecyclerView并不像listView 那样有方法可以直接添加 footer或者header 所有我们只能通过另一种方式来添加了下面看代码public class HeaderAndFooterAdapterT extends RecyclerView.Adapter> extends RecyclerView.Adapter { private final T mB
2017-07-10 16:04:55
374
原创 gradle 文件读取签名 信息 多渠道打包
利用gradle能够很方便的帮助我们 多渠道 打包 签名 String[] getSigningProperties(boolean isDebug) { File propFile = new File('sign_info.properties') if (propFile.exists()) { def Properties props = new
2017-05-17 09:35:31
599
原创 Rerofit的使用
Retrofit是square公司的一个安卓网络请求框架,它对okhttp做了进一步的封装。这篇主要是介绍如果使用Retrofit,它的的优点暂时不做介绍。首先需要加入相应的jar包我这里使用的是as在项目app目录下的build.gradle添加这个就可以添加相应的jar包,接下来就是如何使用了1.创建一个接口类Api用它返回Call对象,它包含了从服务器返回的所有数据。如下图
2016-11-30 15:54:24
715
原创 js 和 安卓互相调用
今天写的是安卓中调用html中的js,如果安卓中和js想要相互调用,首先要代码设置webview能够执行javaScript 默认是不执行的代码如下图然后像webview注册一个对象onfire ,同样也传递一个JavaScriptCallBack实例给webview,通过window.onfire就可以调用javaStcritpCallBack中的方法。接下来看JavaScrip
2016-11-30 11:50:17
458
原创 Dagger如何使用
用过spring的肯定知道,当你创建一个对象的时候肯定不会自己手动去创建一个,而是由Spring帮你注入一个,当然dagger也是一样的,对象的创建无需自己创建,低耦合。 下面先简单说下dagger的使用 1.需要apt插件2.添加相应的jar依赖做完上面的两步,接下来你还需要了解几个基本注解的使用@Inject 这个注解就是在你需要注入某对象的地方使
2016-11-29 15:53:35
396
原创 fresco
fresco 脸书一个强大的图片加载工具,能够帮助你处理各种图片需求。 当你一个页面加载过多的图片的时候,且图片并不是你想要的大小,图片宽高过大,这个时候容易造成oom,这个时候你就要使用 fresco 给你准备好的类 做一些事情了。这样 可以有效的避免oomImageRequest request = ImageRequestBuilder.newBuilderWit
2016-07-01 16:51:26
259
原创 listview 中item 加入 其他触发点击事件的widtget 冲突
今天工作 遇到了 listview item中加入button 结果button能够触发点击事件 但是 item死活不触发 原来 button将item的事件给屏蔽了 需要在自己的视图文件中加入1个属性 仅仅一个属性就够了 android:layout_width="match_parent" android:layout_height="match_
2015-08-07 15:38:47
416
原创 欢迎使用CSDN-markdown编辑器
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl
2015-07-31 10:01:55
280
原创 安卓中文字高亮 且有点击事件
项目中遇到了这样一个需要 一个textview中的文字 一部分文字既要有颜色 又要有点击事件 操 当时就头疼 然后各种百度 但是百度上都是给了一半 给了一半已经不错了 剩下的一半自己琢磨 开始上代码 首先写类 继承clickablespanclass Clickable extends ClickableSpan{ View.OnClickListener liste
2015-07-31 09:50:50
1017
原创 自定义圆角dialog
最近项目要做一个圆角的弹出框 本以为很快就搞定了 但是却遇到了困难 整圆角的时候 始终整不好 老是有一点点点白的东西作怪 百度了好久 好多都不好使 什么重写dialog了 乱七八糟的,还是要自己来,废话不说 上主要的代码final Dialog dialog=new Dialog(mContext, R.style.Dialog_Fullscreen);dialog.se
2015-07-30 10:08:35
393
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人