自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yuanyl的专栏

伪文艺,专注于技术和运动

  • 博客(40)
  • 资源 (3)
  • 收藏
  • 关注

原创 写文件

// File file = new File(mAppContext.context.getExternalFilesDir(null), "original.txt");//    try {//     String data = currentLocation.getLatitude()+","+currentLocation.getLongitude()+","+curren

2016-03-28 10:33:30 443

原创 android.net.http.AndroidHttpClient Android6.0 API23以后失效

在android 6.0(API 23)中,Google已经移除了Apache HttpClient相关的类推荐使用HttpUrlConnection,如果要继续使用需要Apache HttpClient,需要在eclipse下libs里添加org.apache.http.legacy.jar,android studio里在相应的module下的build.gradle中加入:android

2016-03-23 14:53:16 4007

原创 android应用程序中对于ANR主线程超时不响应导致强制关闭的解决方案

ANR(Application Not Responding)定义在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。所以一个流畅的合理的应用程序中不能出现anr,而让用户每次都要处理这个对话框

2016-03-11 14:50:49 3720

原创 xxx.so has text relocations. This is wasting memory and is a security risk. Please fix

最近使用jni编译so文件,发现在android M中将之前一直视为warning的text relocation升级为了error ,直接导致system.load so文件的时候失败。翻了网上各种资料,关于text relocation的解决办法总结了一下:这个错误的主要原因是加载.so文件的代码段时,代码段引用的数据对象需要重定位, 重定位会修改代码段的内容,这就造成每个使用这个

2015-09-02 10:42:10 8603

原创 Android中创建Message两种方法比较,new Message和obtainMessage

尽管Message的构造器是公开的,但是获取Message对象的最好方法是调用Message.obtain()或者Handler.obtainMessage(), 这样是从一个可回收对象池中获取Message对象。让我们来看一下Message中obtain的源码:/** * Return a new Message instance from the global pool.

2015-09-02 09:51:55 1600

原创 反射调用android系统级API函数

try { Class mClass = Class.forName("com.android.server.wifi.WifiSettingsStore"); Constructor con=mClass.getDeclaredConstructor(Context.class); if(!con.isAccessible()){ con.setAccessible(t

2015-08-19 14:13:32 3162 3

原创 【笔记,待修改】关于设计模式的总结

1、抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。比如我创建一个cache接口,要求实现序列化和反序列化方法。2、桥接模式将抽象部分与它的实现部分分离,使它们都可以独立地变化。比如我发布一个aidl的接口,其实现都有service的stub去实现。3、适配器模式将一个类的接口转换成客户希望的另外一个接口。比如日历提供一个管理类

2015-04-20 15:08:32 361

原创 指数退避算法exponential back-off algorithm

在很多场景下,我们都需要解决一些诸如轮训这样的问题。如果这样的算法出现在app上,这种轮训对于app性能和电量的消耗都是个巨大的灾难,那如何解决这种问题呢?app在上一次更新操作之后还未被使用的情况下,使用指数退避算法exponential back-off algorithm来减少更新频率。这里我们介绍下指数退避算法。SharedPreferences sp = context.ge

2015-04-20 15:03:00 2474

原创 java集合包List、Set、Map总结

1、List  List包含ArrayList、LinkedList、Vector、Stack 需要注意到是Vector是基于synchronized实现的线程安全的arrayList,Stack继承自Vector,提供了LIFO的弹出和压入操作,提供了push、pop和peek操作。2、Set    Set 包含HashSet和TreeSet。Set是不允许重复元素的,因为Has

2015-04-18 16:55:16 581

原创 多个线程同时开始启动计时框架的设计与实现

在DEMO测试中,我有个需求描述如下:线程A、B、C、D,我需要他们同时开始运行,并记录这四个线程全部完成所需要的时间。这个借助synchronizer可轻松完成。这里我们使用CountDownLatch来实现,该方法的详细描述参见我的上篇博文:点击打开链接核心代码如下:demo请参见github /** * @param args * @throws Inte

2015-04-17 16:41:27 772

转载 线程使用中的暂停,建议优先使用TimeUnit类中的sleep()

TimeUnit是什么?TimeUnit是java.util.concurrent包下面的一个类,TimeUnit提供了可读性更好的线程暂停操作,通常用来替换Thread.sleep(),在很长一段时间里Thread的sleep()方法作为暂停线程的标准方式,几乎所有Java程序员都熟悉它,事实上sleep方法本身也很常用而且出现在很多面试中。如果你已经使用过Thread.sleep(),

2015-04-17 16:06:46 3697

原创 Java中合理的停止掉一个线程thread

1、第一种也是最常用的一种就是使用状态位public class Task extends Thread {    private volatile boolean flag= true;        public void stopTask() {        flag = false;    }    @Override    public void run

2015-04-08 11:45:58 1246

转载 java 多线程之CountDownLatch用法

public class CountDownLatchDemo { final static SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static void main(String[] args) throws InterruptedException { CountDown

2015-04-06 21:03:55 668

原创 java object的wait和Thread的sleep方法区别

一、这里先来介绍下object的wait、notify和notify all方法wait、notify和notifyAll方法是Object类的final native方法。所以这些方法不能被子类重写,Object类是所有类的超类,因此在程序中有以下三种形式调用wait等方法。wait();//方式1:this.wait();//方式2:super.wait();//方

2015-04-06 20:50:13 733

转载 Lock与synchronized 的区别

原博文来自   http://houlinyan.iteye.com/blog/1112535我参考该blog并做了整理总结1、ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候     线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定,     如果使用

2015-04-03 13:51:57 516

原创 android中的内存泄露查找与常见的内存泄露案例分析

常见的内存泄露查找方法请参见:http://hukai.me/android-performance-patterns/这篇文章是google发布的android性能优化典范示例,对于渲染、内存GC与电量消耗都做了好的示范。这里我总结了下,android中常见的内存泄露1、类中调用registerReceiver后未调用unregisterReceiver().在调用reg

2015-04-03 11:40:29 1219 1

原创 android中强行停止(forceStopPackage)对alarmManager、Receiver的影响

背景之前给手机淘宝做了个准点提醒的中间件,类似闹铃提醒,使用sqlite和alarmManager两个组件实现,最近发现在MIUI上大量用户反馈提醒收不到,所以查了两天原因,把这个问题总结下以备后人参考。场景再现在说这个问题之前,先来说下MIUI奇葩的清理机制,没错,MIUI用户长按home键的那个清理过程,执行的是forceStopPackage操作。那么执行forcestop之后,

2015-03-11 17:23:04 5904

原创 【IOS】无缝桥接

Foundation框架定义了各种collection对应的Object-C类,相似的是CoreFoundation同样定义了一套C语言的API。NSArray与CFArray,这两种创建数组的方式可能有差别,但是有种强大的功能可以在两个类型之间平滑切换,这就是今儿要讲到的无缝桥接  toll-free bridgingARC的诞生大大简化了我们针对内存管理的开发工作,但是只支持管

2015-02-12 19:29:04 716

原创 【IOS中的系统框架】

在讲系统框架之前,我们先来普及下基础知识:1、动态库与静态库的区别:静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。2、ios中的框架将一系列代码封装成 动态库,在其中放入描述其接口的头文件,这样做出来的东西叫做框架。有时为ios平台构建的第三方

2015-02-12 19:10:10 372

原创 android中通用拒绝服务漏洞

该漏洞的描述见链接文章:http://www.cnxhacker.com/2015/01/07/5603.html主要的原因是使用了Intent中getSerializableExtra() 的API,如果攻击程序使用了app未定义的序列化类,该方法抛出异常,如果未捕获该异常,则导致应用不断crash。如果Activity不需要对外暴漏,则将exported置为false即可。此外,就是针对A

2015-02-10 14:41:03 1693

原创 ios中frame与bounds区别

在iOS开发中经常遇到两个词Frame和bounds,本文主要阐述Frame和bound的区别,尤其是bound很绕,很难理解。一、首先,看一下公认的资料先看到下面的代码你肯定就明白了一些:-(CGRect)frame{ return CGRectMake(self.frame.origin.x,self.frame.origin.y,self.frame.size

2015-02-03 14:29:05 724

原创 关于CALayer的学习笔记

这篇博文写的非常好,我就不重复造轮子了!http://www.cnblogs.com/wendingding/p/3800010.html这里只把重要的笔记记录一下。1、在ios中所有看的见摸得着的都是UIView,比如按钮、Lable、图标等,UIView之所以能显示在屏幕上,是因为内部的一个图层,创建UIView对象时,会自动创建一个CALayer对象。@property(no

2015-02-02 16:34:21 344

转载 iOS开发UI篇—CAlayer层的属性

iOS开发UI篇—CAlayer层的属性一、position和anchorPoint1.简单介绍CALayer有2个非常重要的属性:position和anchorPoint@property CGPoint position;用来设置CALayer在父层中的位置以父层的左上角为原点(0, 0) @property CGPoint anchorPoint;称为“定

2015-01-30 15:55:53 286

原创 object-c基于块的遍历方式

NSArray *anArray=/*...*/;[anArray enumerateObjectUsingBlock]: ^(id object,NSUInter idx,BOOL *stop){ // do something if(shouldStop){ *stop = yes; } }];在当前

2015-01-29 21:14:12 569

转载 __bridge,__bridge_retained和__bridge_transfer的意思,区别与使用

使用ARC能帮我们减轻不少内存管理方面的负担,尤其是对用惯了Java的程序员来说。但是像我这种Java基础本身就不牢固,做了两年的iOS已经习惯手动管理内存的半吊子,使用ARC还是经常碰壁。最近碰到了CFObject和NSObject转换的问题,由于ARC不能管理Core Foundation Object的生命周期,所以在Core Foundation和ARC之间,我们需要使用到__br

2015-01-26 15:21:19 463

原创 nonatomic,assign,copy,retain的区别

nonatomic:非原子性访问,不加同步,多线程并发访问会提高性能。如果不加此属性,则默认是两个访问方法都为原子型事务访问。                    (atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写未完成的时候被另外一个线程读取,造成数据错误。而这种机制是耗费系统资源的,所 以在iPhone这种小型设备上,如果没有使用多线程间的通讯编程,那么nonatom

2015-01-26 14:24:24 455

翻译 HTTP Header 详解

HTTP(HyperTextTransferProtocol)即超文本传输协议,目前网页传输的的通用协议。HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应。就整个网络资源传输而言,包括message-header和message-body两部分。首先传递message-header,即httpheader消息 。http header 消息通常被分为4个部分:g

2015-01-12 15:09:49 375

原创 Volly代码阅读笔记(一)

趁着最近有时间,读了下volly的代码,记录下学习笔记,待后来者参考。一、RequestQueue

2015-01-12 15:07:53 346

原创 id ,NSObject, id<NSObject>区别

我们经常会混淆以下三种申明(我是没有留意过):    1. id foo1;    2. NSObject *foo2;    3. id foo3;    第一种是最常用的,它简单地申明了指向对象的指针,没有给编译器任何类型信息,因此,编译器不会做类型检查。但也因为是这样,你可以发送任何信息给id类型的对象。这就是为什么+alloc返回id类型,但调用[[Foo alloc]

2014-12-04 11:42:03 282

原创 做了多年java以后,还是决定兼做ios开发了,从此开始啃oc

fighting

2014-12-04 11:40:27 456 2

原创 关于android·图片处理的集锦贴

A1、ndroid高效加载大图、多图解决方案,有效避免程序OOM

2014-10-23 19:12:34 385

转载 你了解Java中String的substring函数吗?

Java中的substring函数是我们经常使用的一个函数,用来截取当前字符串的子串,定义如下:public final class String{ public String substring(int beginIndex); public String substring(int beginIndex, int endIndex);}使用及声明都非常简单

2014-10-22 15:47:43 459

原创 android文件与java IO

在操作系统级别,android运行在Linux内核之上,所以文件系统类似linux系统

2014-10-14 10:42:21 597

原创 sharedpreference中putStringSet和getStringSet的问题

今儿发现了诡异bug,新的api中z

2014-10-11 15:01:35 2761

原创 关于git中使用gitignore创建过滤规则的使用方法

在进行协作开发代码管理的过程中,常常会遇到某些临时文件、配置文件、或者生成文件等,这些文件由于不同的开发端会不一样,如果使用git add . 将所有文件纳入git库中,那么会出现频繁的改动和push,这样会引起开发上的不便。Git可以很方便的帮助我们解决这个问题,那就是建立项目文件过滤规则。git中提供两种过滤机制,一种是全局过滤机制,即对所有的git都适用;另一种是针对某个项目

2014-10-08 10:59:20 1107

转载 图解TCP-IP协议

本文通过两个图来梳理TCP-IP协议相关知识。TCP通信过程包括三个步骤:建立TCP连接通道,传输数据,断开TCP连接通道。如图1所示,给出了TCP通信过程的示意图。图1 TCP 三次握手四次挥手图1主要包括三部分:建立连接、传输数据、断开连接。1)建立TCP连接很简单,通过三次握手便可建立连接。2)建立好连接

2014-09-25 11:06:54 385

原创 android中的线程使用与通信机制

1、android的所有应用程序组件,包括Activity、Service和BroadcastReceiver都在应用程序的主线程中执行,所有的耗时处理都可能阻塞其他组件,所以所有的耗时处理和IO操作都应该从主线程移到一个子线程中。常见的如:文件操作、网络查找、数据库事务和耗时复杂计算。2、关于Android ANR,Activity对于一个输入事件(例如,按下一个按键)在5s的时间内没有

2014-09-17 09:57:35 554

翻译 从JVM并发看CPU内存指令重排序(Memory Reordering)

这两天,我拜读了 Dennis Byrne 写的一片博文?Memory Barriers and JVM Concurrency (中译文?内存屏障与JVM并发)。文中提到:对主存的一次访问一般花费硬件的数百次时钟周期。处理器通过缓存(caching)能够从数量级上降低内存延迟的成本这些缓存为了性能重新排列待定内存操作的顺序。也就是说,程序的读写操作不一定会按照它要求处理器的顺

2014-09-14 14:17:31 355

原创 android NDK 使用JNI实现与原生代码通信

1、关于原生代码的声明/*静态native方法声明*/public static native String stringFromJni();/*native方法声明*/public native String stringFromJni();2、原生方法实现这两种方式在实现上会有略微不同用javah的命令行工具生成的头文件,分别为jString Java_com_example_h...

2014-09-11 18:58:29 811

原创 effective java中的单例模式创建实例

public classSynWithServer {private ScheduledExecutorServicescheduler = null;privatestatic classSingletonClassInstance { privatestatic finalSynWithServer instance =new SynWith

2014-06-19 14:23:30 461

用初学者的思路来引导初学者 一天学好Linux下的软件安装

一天学好Linux下的软件安装以图解示例介绍了基本软件的安装方法、使用Yum和显卡的安装方法。 安装Linux,是要“用”的!不要求一开始学习Linux就能像XP下有N多各种各样的软件,但是听歌看电影,登录通讯软件比如QQ,MSN,要有一个迅速上手的办公软件,使用类似紫光和搜狗的输入法提高效率,这些基本的总不能少吧!   所以刚用上Linux我就对自己说只要能解决这几个问题,就准备长期使用Linux!不然。。。还是回到XP怀抱吧。经过一番上窜下跳,左查右问,总算是达到了温饱水平。   Linux下安装软件比在XP安装软件复杂多了,但是学校图书馆什么不多就是书多,借了基本教程照着书上说的做,现在rpm软件包,tar格式的软件等安装对我来说不是问题了,又解决了一个难题,哈哈!

2009-09-27

操作系统概念英文第七版答案

真正课后习题答案完整版 适合计算机专业本科生,考研者

2009-09-27

VC++MFC教程全解

VC++MFC教程 第一部分 基础知识 第1章 窗口 2 1.1 窗口和API环境 2 1.1.1 三种类型窗口 2 1.1.2 客户区和非客户区 3 1.2 窗口和MFC环境 4 1.3 怎样应用MFC创建一个窗口 5 1.4 怎样使用MFC销毁一个窗口 9 1.4.1 捆绑到一个已有的窗口 9 1.4.2 窗口类 10 1.4.3 窗口进程 10 1.5 怎样使用MFC创建一个窗口类 11 1.5.1 使用AfxRegisterWndClass () 函数注册一个窗口类 11 1.5.2 使用AfxRegisterClass ()函数 创建一个窗口类 12 1.6 怎样销毁一个MFC窗口类 14 1.7 厂商安装的窗口类 14 1.8 其他类型窗口 15 1.9 桌面窗口 16 1.10 小结 16 第2章 类 18 2.1 基类 18 2.1.1 CObject 18 2.1.2 CCmdTarget 19 2.1.3 CWnd 19 2.2 应用程序、框架、文档和视图类 19 2.2.1 CWinApp(O/C/W) 20 2.2.2 CView (O/C/W) 21 2.3 其他用户界面类 22 2.3.1 通用控件类 23 2.3.2 菜单类 23 2.3.3 对话框类 24 2.3.4 控制条类 24 2.3.5 属性类 25 2.4 绘图类 25 2.4.1 设备环境类 25 2.4.2 图形对象类 25 2.5 文件类 26 2.6 数据库类 26 2.6.1 ODBC类 26 2.6.2 DAO类 27 2.7 数据集类 27 2.8 其他数据类 27 2.9 通信类 28 2.10 其他类 29 2.11 小结 31 第3章 消息处理 32 3.1 发送或寄送一个消息 32 3.1.1 发送一个消息 32 3.1.2 寄送一个消息 32 3.1.3 发送一个消息与寄送一个消息 的比较 32 3.2 怎样使用MFC发送一个消息 33 3.3 怎样用MFC寄送一个消息 33 3.4 三种类型的消息 34 3.4.1 窗口消息 34 3.4.2 命令消息 34 3.4.3 控件通知 34 3.5 MFC怎样接收一个寄送的消息 36 3.6 MFC怎样处理一个接收到的消息 36 3.7 处理用户界面的对象 44 3.8 创建自定义窗口消息 45 3.8.1 静态分配的窗口消息 45 3.8.2 动态分配的窗口消息 46 3.9 重定向消息 47 3.9.1 子分类和超分类 47 3.9.2 用MFC子分类窗口 48 3.9.3 重载OnCmdMsg ( ) 49 3.9.4 使用SetWindowsHookEx ( ) 49 3.9.5 使用SetCapture ( ) 49 3.9.6 专有的消息泵 50 3.10 小结 50 第4章 绘图 51 4.1 设备环境 51 4.2 在MFC环境中创建一个设备环境 52 4.2.1 屏幕 52 4.2.2 打印机 53 4.2.3 内存 54 4.2.4 信息 54 4.3 绘图例程 55 4.3.1 画点 55 4.3.2 画线 55 4.3.3 画形状 55 4.3.4 形状填充和翻转 55 4.3.5 滚动 56 4.3.6 绘制文本 56 4.3.7 绘制位图和图标 56 4.4 绘图属性 56 4.4.1 设备环境属性 57 4.4.2 画线属性 58 4.4.3 形状填充属性 58 4.4.4 文本绘制属性 58 4.4.5 映像模式 59 4.4.6 调色板属性 62 4.4.7 混合属性 62 4.4.8 剪裁属性 63 4.4.9 位图绘制属性 64 4.5 元文件和路径 65 4.5.1 元文件 65 4.5.2 路径 66 4.6 颜色和调色板 66 4.6.1 抖动色 67 4.6.2 未经抖动色 67

2009-03-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除