- 博客(69)
- 资源 (29)
- 收藏
- 关注
原创 ReentrantLock 加锁,解锁,加锁中断,公平锁,非公平锁源码分析
ReentrantLock 基本使用ReentrantLock lock = new ReentrantLock(true); // false 或无参非公平锁,true 公平锁lock.lock(); // 获取锁,如果获锁失败,线程进入阻塞(休眠)lock.tryLock(); // 尝试获取锁,失败不会阻塞lock.lockInterruptibly(); //获取锁,如果获锁失败,线程进入阻塞,支持获锁阻塞的中断退出 lock.unlock(); // 释放锁Reentran
2020-09-03 22:28:16
337
1
原创 HTTP 缓存策略(okHttp 的实现)
总流程代码// CacheInterceptor#interceptCacheStrategy strategy = new CacheStrategy.Factory(now, chain.request(), cacheCandidate).get();Request networkRequest = strategy.networkRequest;Response cacheResponse = strategy.cacheResponse;// CacheStrategy#Facto
2020-08-18 17:59:05
584
1
原创 解决升级 Android Studio 3.6.1 后无法运行 Java 代码的问题
问题最近升级了 Android Studio 到 V3.6.1 后发现之前创建的 Lib Module 无法运行纯 Java 代码了,部分错误信息如下:FAILURE: Build failed with an exception.* Where:Initialization script '/private/var/folders/q7/rlfldg551dx7_r90x2_1hcww...
2020-03-22 13:33:43
3417
原创 使用 Jenkins 优化打包提测流程
涉及知识点JenkinsAndroid Studio(Gradle)蒲公英Jenkins我的理解,就是可以帮我们减少重复工作的一个流程化执行工具。详见百度安装 Jenkins我使用了最简单方式,下载纯的 war 文件,然后使用 java -jar jenkins.war 的方式执行 我用的 macOs 系统,至于为什么不使用 dmg 安装的后面补充说明...
2018-05-17 14:36:09
3059
原创 解决 Android N requires the IDE to be running with Java 1.8 or later
最近升级了一下IDE,升级到了AS 2.1.1,打开Layout Editor的时候遇到这个问题:Android N requires the IDE to be running with Java 1.8 or laterAS里面我们需要两个JDK:Project JDK & IDE JDK前者用于编译Java代码后者用于启动运行AS自己Project JDK可以通过file-> othe
2016-06-03 12:03:36
12519
原创 Android ListView 第一次设置Adapter时候getView调用多次
之前遇到这个奇怪现象,记录一下:使用Listview并设置Adapter时, 会回调多次getView,比如我有4个items,按理说getView应该是调用一次(打出4个log),结果回调有4次(4*4个log)。原因:Listview的layout_height 为自适应:wrap_content,这个情况下,listview没办法确定用多少item的view来填充它自己,这迫使l
2013-11-11 11:04:52
6561
1
原创 状态模式(State Pattern)
状态模式:允许对象在内部状态改变时改变它的行为,对象看起来好像是修改了它的类类图本质上和策略模式一样差别就在于策略模式偏重于外部或者是对象本身对行为的改变,而状态模式是在于对象内部随着时间的变化,事件的发生,对象状态发生变化后而导致的行为发生变化更加简单的说,策略模式偏向于主动改变行为,而状态模式偏向于被动改变行为改自《Head First》课后:糖果贩卖机
2013-07-10 16:46:25
880
原创 组合模式(Composite Pattern)
组合模式:允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合本质上就是以树形的数据结构来完成数据的存储, 而对其的遍历就是对树形结构的遍历。案例:带有子菜单的菜单为了可以让客户以一致的方式处理,我们自然而然的就需要菜单和菜单项多继承同一个抽象基类代码:import java.util.Iterator;p
2013-07-09 15:14:50
807
原创 迭代器模式(Iterator Pattern)
迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不是暴露其内部的表示案例:菜单项目的打印代码:public interface Menu { public Iterator createIterator();}public interface Iterator { public boolean hasNext(); public Object
2013-07-08 17:30:30
962
原创 模板方法模式(Template Method Pattern)
模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤代码:public abstract class CaffeineBeverage { public void prepareRecipe() { boilWater(); brew(); pourInCup(); add
2013-07-07 15:14:10
2902
原创 适配器模式(Adapter Pattern)、外观模式(Facade Pattern)
适配器模式:将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类合作无间。本质很简单,用适配器类实现目标接口,然后在实现中用委托调用被适配者的子类的方法去实现目标接口的方法代码:public interface Target { public void request();}public interface Adaptee { public void
2013-07-05 16:50:02
965
原创 命令模式(Command Pattern)
命令模式:将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作案例:用户和多调节灯案例,并且用栈实现多撤销代码:图里面没有画出栈,我在User里加了记录命令执行的栈,然后Light里家里灯的几个状态public interface Command { public void execute(); public
2013-07-03 15:56:56
864
原创 单件模式(Singleton Pattern)
单件模式:确保一个类只有一个实例,并提供一个全局访问点这个模式在之前开发中已经用得相当多了,这个模式特点是可以延迟实例化的,并且针对资源敏感的对象。最简单的代码例子:public class Sigleton { private static Sigleton sInstance; private Sigleton() { } public static
2013-07-02 16:58:43
868
原创 工厂模式(Factory Pattern)之简单工厂,工厂方法模式(Factory Method Pattern),抽象工厂模式(Abstract Factory Pattern)
《Head First》介绍了工厂模式的3个内容:一、简单工厂简单工厂并非一个模式,反而像是一个编程习惯,其本质是抽出了对象复杂多变的实例化过程到另外一个单独的类,以保证其他代码的不变。通常是实例化的对象是拥有多类型的情况:案例:可以用实例化水果派的例子public class PatternDemo { public static void main(String[]
2013-07-02 16:43:03
1131
原创 装饰者模式(Decorator Pattern)
设计原理5:类应该对扩展开放,对修改关闭装饰者模式:动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案案例,根据《Head First》的例子,写一个茶与调味料- 糖和牛奶的例子:斜体文字的为虚类或虚函数。代码实现:public class PatternDemo { public static void ma
2013-07-01 14:25:43
873
原创 观察者模式(Observer Pattern)
设计原理4:为了交互对象之间的松耦合设计而努力观察者模式:定义了对象之间的一对多的依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。案例:类似于邮件主题和邮件订阅者的关系。订阅的主题有了新内容会及时的给订阅者“推”最新的邮件,有一点不同,观察者模式也可以是被“拉”的。注:这两种形式的观察者模式在JDK中广泛使用,是最多的模式之一实现
2013-06-30 17:18:30
943
原创 策略模式(Strategy Pattern)
设计原理1:找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起设计原理2:针对接口编程,而不是针对实现编程设计原理3:多用组合,少用继承选自《Head First 设计模式》:策略模式(Strategy Pattern):定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户案例: 如同《Hea
2013-06-28 15:32:15
1317
原创 Android Accessibility(辅助功能) 学习
Accessibility:许多Android使用者因为各种情况导致他们要以不同的方式与手机交互。这包括了有些用户由于视力上,身体上,年龄上的问题致使他们不能看完整的屏幕或者使用触屏,也包括了无法很好接收到语音信息和提示的听力能力比较弱的用户。Android提供了Accessibility功能和服务帮助这些用户更加简单地操作设备,包括文字转语音(这个不支持中文),触觉反馈,手势操作,轨
2013-06-24 10:46:06
66007
2
原创 Android 自定义控件属性,自定义Dialog定位
Android自定义控件的属性,网上文章已经很多,之前看了也照着写了,其中有一个就是要自定义一个xml的命名空间后然后再给自定义属性赋值,后来发现不知道什么时候开始Android把这个改了,统一用xmlns:app="http://schemas.android.com/apk/res-auto"然后在用app作为命名空间给自定义属性赋值,例如:app:myimage_sr
2013-05-23 14:41:32
11850
原创 Android 签名(手势)控件
项目里有时会有那些要签名啊,或者要手绘的要求,为此就会要求有这样的控件存在,这里介绍两个方法:一、Android 自带的 GestureOverlayView,添加于API-4,主要是用于识别手势的。对于签名也可以完成大部分工作,但是有个问题:多笔画的时候,两个笔画之间间隔太久会自动清空前面所有笔画。我还么有找解决方法。使用很简单:在你的xml文件里添加这个控件就可以(一个透明层)
2013-05-23 11:12:05
3459
原创 Android EditText 取消复制粘贴功能、取消横向全屏编辑功能
在做一些安全性的软件时候常常要考虑取消 EditText 上的复制粘贴功能以确保安全性。下面就记录了这个方法:首先在API-11以下的版本很简单,只需要在Xml布局文件或者用代码把长按属性设置成false就可以。editText.setLongClickable(false); // Xml layout file android:longClickable="false"但是如果在A
2013-05-21 15:06:41
10359
原创 Android HttpURLConnection 基础使用
最基本的使用代码:(访问baidu首页)HttpURLConnection urlConnection = null;try { URL url = new URL("http://www.baidu.com/"); urlConnection = (HttpURLConnection)url.openConnection(); InputStream in = new Buf
2013-05-20 15:35:57
23934
3
转载 HttpURLConnection 因Android版本不同而导致的Bad Request问题,在2.0+不行,4.0+可以
之前在这个问题上纠结了很久,也换httpClient试过,但是最后居然被细节打败了:原文出处:http://stackoverflow.com/questions/15030201/issues-with-httpurlconnection-with-post-on-android-2-2?rq=1其实原因很简单,在给HttpURLConnection 设置request属性的时候
2013-05-16 15:04:41
3192
1
转载 Excel2007 自定义函数
从别人那里看的,浓缩一下:1、打开Excel2007,按Alt+F11。出现VB的代码编辑界面2、左侧的ThisWorkbook点右键菜单插入-> 模块3、在新出的编辑器里编辑函数。关闭自动保存。4、关闭VB,回到主界面调用。(在上方的fx里输入=函数)。5、保存文件为xlsm。这个是启动宏的文件,只有这个才可以用自定义函数。6、保存时如果跳出“隐私问题警告:……”,可以到
2013-05-06 13:40:08
1548
原创 Android UI 利用Seekbar模拟Iphone滑块解锁
之前项目里涉及到的,网上找实现方案没找到。后来自己用SeekBar模拟出来了。原理很简单。注册SeekBarChangeListener,再回调函数里控制滑块的变化。当把滑块移到0-70的范围的时候,向下移动一个常量值,直到0。当在70-100范围,向上移动一个常量值,直到100。移动的代码用两个Runnable,在用Handler传递。直接贴代码:public class S
2013-05-03 13:42:25
2154
原创 Android UI 利用Drawable Shape给控件加边框/立体效果
在软开中,经常需要对原生的控件UI进行修改,最近项目由于UI没到位,所有有些带边框的有立体效果的UI要自己实现,实现方法是用XML写Shape。关于Drawable Shape XML的详细内容官方API doc提供的还是挺详细的:http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape
2013-04-18 11:20:42
7799
原创 Photoshop对称补图
实现效果:这里只有一半,把它补全成:方法:1、拖入第一张图片,改变画布大小,要可以容纳下两个图片大小:图像-》画布大小,宽度改成原来两倍。我这个是3.53 改成 7.06。拖动图片到左边缘。2、复制当前图层。图层-》复制图层。快捷键:ctrl+j3、选择图层后(默认是新图层),编辑-》自由变换。快捷键:ctrl+t4、图层右键菜单键-》旋转180度,把图层移到右边缘
2013-04-15 13:11:55
1730
原创 Android 自定义过滤搜索框
简单的说就是ListView上面有一个SearchBox,然后searchbox里输入内容后对下面listview进行过滤。涉及的控件:ListView必须有,EditText用来自定义SearchBox大概就是这样: 先看这个有图片的EditText,实现方法有两个,一是用相对布局RelativeLayout + ImageView + EditText。
2013-04-14 17:45:33
15139
原创 Android Twitter分享,即Twitter授权Oauth然后推文
最近接触的项目要实现Twitter,Facebook,Email的分享功能。当然Android可以简单的用Intent调用第三方App实现这些功能。但是如果需求变态需要你自己写一个分享功能呢?先介绍一下Twitter的分享:Twiter这里我使用了twitter4j-core-android-2.2.6.jar这个是给android用的twitter4j的精简包,体积小。授权(Oaut
2012-10-12 16:26:12
14618
原创 Android 通过samples\android-x\BluetoothChat学习蓝牙操作
最近帮别人写了一个东西需要用到蓝牙共享数据,发现Android SDK里的例子里的BluetoothChat——蓝牙聊天软件代码写得不错,就学习分析了一下。项目java文件3个:BluetoothChat:主界面,显示聊天信息BluetoothChatService:里面有3个主要线程类,AcceptThread:蓝牙服务端socket监听线程.。ConnectThread:蓝牙socke
2012-05-07 19:20:55
14396
2
原创 Android 开发技巧之Log发送UDP报文,Socket编程
和把Log写入文件的原因相同:http://blog.youkuaiyun.com/wyzxk888/article/details/7478152就是因为Android开发过程中会出现手机offline,为了达到更加实时的查看日志信息,可以使用Java提供的Socket相关类,通过不断的发送UDP包达到效果。手机端同样是一个单例类,用于发送日志消息:package org.test;im
2012-04-19 21:47:09
3186
原创 Android 开发技巧之Log写入文件
在Android开发的时候经常会遇到手机offline,影响日志的查看与分析。为此,我写了一个简单的类用于将日志写入文件中,便于以后调试的时候可以拿来使用:package org.test;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOExc
2012-04-19 16:51:09
16356
原创 Android AlarmManager
Android开发中除了使用Timer和TimerTask开发定时任务外,还可以使用系统自带的Alarm服务。之前有比较一下Timer和AlarmManager来刷新界面数字,发现用Timer的休眠了手机后时间会变慢,所以如果要开发时间精准比较高的手机程序还是使用系统自带的AlarmManager吧。使用AlarmManager一般代码: mAlarmManager =
2012-04-17 17:10:07
3915
转载 Eclipse 常用快捷键
最常用的(复制粘贴就不说了):Ctrl+D:删除当前行Ctrl+Alt+↓:复制当前行到下一行(复制增加) Ctrl+Alt+↑:复制当前行到上一行(复制增加) Alt+↓:当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了) Alt+↑:当前行和上面一行交互位置(同上) Alt+←:前一个编辑的页面Alt+→:下一个编辑的页面(当然是针对上面那条来说了)
2012-04-11 13:09:57
644
转载 Android 资源文件中的符号含义与说明
一、@ 代表引用资源1.引用自定义资源。格式:@[package]:type/nameandroid:text = "@string/hello"2.引用系统资源。格式:@android:type/nameandroid:textColor="@android:color/opaque_red"(@android:type/name 是 @[package:]type/
2012-04-10 16:17:33
4264
翻译 在Linux(Ubuntu)下安装Android设备的ADB/USB驱动
原文出处:http://esausilva.com/2010/05/13/setting-up-adbusb-drivers-for-android-devices-in-linux-ubuntu/如果你和我一样喜欢在Linux下开发,那么你会发现这篇指南是有用。当我为Android开发安装所需的东西时候,我遇到Linux不识别Android手机的问题,这花费了我一些时间找出如何使Linux识
2012-04-06 17:42:32
18758
1
原创 Java自定义jar库中加入第三方jar库
最近做的项目需要自己写个库供其他人使用,但是自己写的库又依赖于其他第三方库,因此在打包自己的库的时候需要将第三方库也导进去。网上看了很多方法,有些说需要自己编写manifest文件,如果懂那个文件的高手还好,但是不懂的就写不出来了。再后面我找到了一个eclipse的插件Fat Jar。Fat Jar其实就是把第三方Jar库里的.class文件都导出来后再导到你自己的Jar库中,不过不用我们
2012-04-06 15:44:24
5708
原创 Android 推送之Androidpn项目分析(一)
整个项目有如下一些java文件:由于项目是基于asmack.jar的,因此文件数量已经是不多了。随便一提的是asmack.jar 是用于android上实现聊天室的库虽然文件有这么多,但是类之间的调用关系,以及类的作用可以描述如下图:‘+’ 号处展开:以及
2012-04-05 20:08:08
17401
2
原创 Android 推送之原理与初触Androidpn(Android Push Notification)
由于最近项目中涉及到了android推送,所以看了一些关于android推送方面的东西,总结到后面我们知道android推送的实现可以归结为3种:1、POLL,拉。大致思路为向服务器定时的发送请求,然后自己让服务器返回信息。优点:实现简单。缺点:实时性差。如果定时间隔小连接数又多,对服务器会有高压力要求。据说还会费电……不知道是不是真的。2、SMS,彩信方式。据说是拦截彩信
2012-04-03 22:31:38
33714
1
SecurAble 用于检测CPU是否支持虚拟化技术的工具
2012-03-12
Android ActivtiyGroup和ViewFlipper实现Activity滑屏切换
2012-01-01
C#地址簿软件
2011-12-09
图标转换器和图标抽取器
2011-06-19
C#制作Foxmail里的地址簿(裁剪版)
2011-05-08
操作系统课程设计——基于DOS的多任务系统的实现
2011-01-19
JAVA多线程本地IP端口扫描器
2011-01-19
C#(.net)制作的备忘录软件
2010-10-03
Eclipse下编译CC++、JAVA
2010-09-08
本学期UML作业—C#(.net)自动贩卖机模拟软件(带界面)
2010-07-13
Desktops(windows模拟多桌面)
2010-06-10
HDOJ(杭州电子科技大学online jugle) 离线版题目
2010-05-23
mac苹果界面仿真器
2009-07-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人