- 博客(79)
- 资源 (5)
- 收藏
- 关注
原创 如何判断单链表是否有环
方法一快慢节点的方式,如果快节点与慢节点相遇证明有环 public int hasLoop(Node node) { int hasLoop = 0; Node node1 = node; Node node2 = node; while(node2 != null && node2.next != null) {
2017-10-24 19:01:28
339
原创 二分查找
二分查找体现了分治的思想方法一递归的方式 public static int binarySearch(int[] datas,int begin,int end,int data) { int i = begin; int j = end; int middle = -1; if(i>j) {
2017-10-24 16:54:50
235
原创 链表逆转的两种方法
方法一递归的方式(体现了递归的思想) public Node reverseList(Node node) { if(node.next == null) {//当最后一个节点的时候返回 return node; } Node temp = node.next;//得到当前节点的下一个节点 Node ret
2017-10-24 16:36:03
842
原创 java的锁机制,synchronize与Lock比较
以前线程同步只知道synchronize关键字,后来才知道还有个lock,为什么还要有个lock来实现同步呢synchronized的局限性占有锁的线程等待IO或者其他原因被阻塞,没有释放锁的情况下,其他线程一直阻塞多个线程同时读写文件的时候,读和读操作也会发生冲突我们没有办法知道当前我们的线程是否成功获取了锁,只能傻傻的等待有这些限制所有其他的同步机制来解决,所以就有了lock,lock常
2017-10-11 10:46:46
5364
原创 Java语言synchronized与lock实现生产者消费者
这个配合生产者,消费者问题来看最适合不过了,上代码package test;import java.util.LinkedList;import java.util.Queue;import java.util.Random;public class ProducerConsumer { public static void main(String args[]) { Q
2017-10-10 11:42:05
577
原创 现有三个线程T1,T2,T3 三个线程依次执行
直接上代码package test;public class ThreadJoin { public static void main(String[] args) { thread3.start(); thread2.start(); thread1.start(); } static Thread thread1 = new
2017-10-09 17:52:55
1241
原创 自定义view绕不开的OnMeasure
工作一段时间,我们肯定会接触到自定义view,因为并不是每一种酷炫的效果都可以用系统自定义的控件来完成,所以只能自己动手了,自己定义view怎么也绕不开的就是OnMeasure首先我们来看看OnMeasure方法,什么是OnMeasure(啥?别告诉我你不知道,真不知道请绕道走吧)@Overrideprotected void onMeasure(int widthMeasureSpec, int
2016-12-07 22:24:19
410
原创 自定义view中文字位置的确定
自定义view 中绘制文字是非常常见的操作,但是如果不知道文字的绘制锚点就没有办法让文字绘制到我们想要绘制的位置,这篇文章就为大家具体讲解一下怎么让文字显示到我们想要显示的位置,首先上代码和代码运行后的截图/** * 文字 * @param canvas */private void drawText(Canvas canvas) { Rect rect = new Rect((int
2016-12-03 19:38:48
1471
转载 普通Android工程转换为C/C++工程之后 再还成Android工程的解决方案
我们在调试android程序时,可能会把android工程转换成C/C++工程,或者Add Native Support。但是,我们怎么把C/C++工程还原成普通的android工程呢?下面跟大家分享我的经验。第一步:打开工程目录下的.project文件,我是用UltraEdit打开的。删除如下三幅图中蓝色区域的代码:保存并关闭.project文
2015-06-08 18:50:32
1030
转载 类图
1、什么是类图 类图(Class diagram)主要用于描述系统的结构化设计。类图也是最常用的UML图,用类图可以显示出类、接口以及它们之间的静态结构和关系。2、类图的元素 在类图中一共包含了以下几种模型元素,分别是:类(Class)、接口(Interface)、依赖(Dependency)关系、泛化(Generalization)关系、关联(Association)
2015-05-18 15:58:22
1392
原创 android分辨率与尺寸适配,UI切图方法
1.android怎样做适配第一图片资源的适配一般图片资源文件下包含下列五个图片资源文件夹drawable-xxhdpi,drawable-xhdpi,drawable-hdpi,drawable-mdpi,drawable-ldpidrawable-xxhdpi,drawable-xhdpi,一般作为pad的图片资源,但也有例外小米4手机的分辨率较高应该用的就是drawable-xh
2015-01-27 16:04:40
5393
转载 android 适配深入研究
理论基础:1.,dp可以自适应屏幕的密度。不管屏幕密度怎样变化,只要屏幕的物理尺寸不变,实际显示的尺寸就不会变化。2. px和dp的转换公式: px = dp * (dpi / 160)3. 其中dpi是归一化后的dpi,可能值只有120(low)、160(medium)、240(high)、 320(xhigh)四种,而我之前理解的竟然是实际设备真实的dpi!
2015-01-23 15:37:42
467
转载 APP字体大小,不随系统的字体大小变化而变化的方法
从android4.0起系统设置的”显示“提供设置字体大小的选项。这个设置直接会影响到所有sp为单位的字体适配,所以很多app在设置了系统字体后瞬间变得面目全非。下面是解决方案[java] view plaincopyprint?Resources res = super.getResources(); Configuration conf
2015-01-23 10:17:33
544
转载 Java 的静态变量和实例变量
类的成员变量有两种:一种是被static关键字修饰的变量,叫类变量或静态变量,一种是没有被static修饰的,叫做实例变量 静态变量和实例变量的区别在于: 类静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享,静态变量可以通过类名直接访问。静态变量的生命周期取决于类的生命周期,当类被加载的时候,静态变量被创建并
2014-09-16 11:55:43
449
转载 java 内存管理
首先我们要明白一点,我们所使用的变量就是一块一块的内存空间!!一、内存管理原理:在java中,有java程序、虚拟机、操作系统三个层次,其中java程序与虚拟机交互,而虚拟机与操作系统间交互!这就保证了java程序的平台无关性!下面我们从程序运行前,程序运行中、程序运行内存溢出三个阶段来说一下内存管理原理!1、程序运行前:JVM向操作系统
2014-09-16 10:57:02
333
原创 Android jni 可变参数 宏 __VA_ARGS__
#pragma once#include #ifndef LOG_TAG#define LOG_TAG "wanghj"#endif#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)#define LOGV(...) __android_log_print(A
2014-08-23 17:39:30
1547
原创 android jni Android.mk文件详解
LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE := hello-jni
2014-08-23 16:24:06
487
原创 C++指针和引用
1.Java中的传值和传址的问题java中基本数据类型传递的是值,也就是一份copy对函数体本身的值的改变是没有什么影响的Java中对象传递的就是地址了,对对象属性的操作会影响会影响函数体内本身的对象String是一个特殊的对象,他是存在内存中的栈区,所以String a = "a",String b = "b" a==b才会输出true2.C++的指针和引用,引用只是一个别名
2014-05-16 17:07:13
410
转载 android sqllte增删改查
插入数据有两种方法:①SQLiteDatabase的insert(String table,String nullColumnHack,ContentValues values)方法,参数一是表名称,参数二是空列的默认值,参数三是ContentValues类型的一个封装了列名称和列值的Map;②编写插入数据的SQL语句,直接调用SQLiteDatabase的execSQL()方法来
2014-04-27 17:48:42
580
转载 Android横竖屏切换
1.锁定屏幕方向,禁止切换:在AndroidManifest.xml中的Activity参数中加上android:screenOrientation="landscape" 保持横屏ORandroid:screenOrientation="portrait" 保持竖屏2.每次横竖屏切换时,会重启Activity,所以还要禁止切换屏幕时重启Activity,同样在在Android
2014-04-23 12:58:39
384
转载 startActivityForResult
在Android中startActivityForResult主要作用就是:A-Activity需要在B-Activtiy中执行一些数据操作,而B-Activity又要将,执行操作数据的结果返回给A-Activtiy//看效果//看代码[java] view plaincopypackage s
2014-03-28 10:46:49
404
转载 Activity启动模式
Activity启动模式设置: Activity的四种启动模式: 1. standard 模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。 2. singleTop 如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,否者就会
2014-03-28 10:07:23
269
原创 Android 手电筒设计
下面是主要代码,基本上就是这个逻辑,其实挺简单的boolean isOpenCamera = false;private android.hardware.Camera camera;//开启或者关闭手电筒private void OpenLight(){if ( isOpenCamera){camera.stopPreview(); // 关掉亮灯came
2014-03-27 16:47:16
424
原创 AlarmManager
private static AlarmManager getAlarmManager(Context ctx){return (AlarmManager) ctx.getSystemService(Context.ALARM_SERVICE);}public static void startGpsService(Context ctx){AlarmManager am
2014-03-26 15:08:02
479
转载 Application生命周期的学习
application生命周期的学习:1、onCreate 在创建应用程序时创建2、onTerminate 当终止应用程序对象时调用,不保证一定被调用,当程序是被内核终止以便为其他应用程序释放资源,那么将不会提醒,并且不调用应用程序的对象的onTerminate方法而直接终止进 程3、onLowMemory 当后台程序已经终止资源还匮乏时会调用这个方法。好的应用程序一般会在这个方法里面
2014-03-24 18:31:08
469
原创 Android 主线程和子线程的关系
在Activity开启的子线程并不会自动随Activity的destroy而关闭,所以必须手动去关闭子线程或者通过boolean的方式让子线程结束运行。开启的子线程有for循环或者while循环的要更加注意。
2014-03-24 10:19:18
584
原创 The file does not exist for the external tool
我发生这个问题的原因是,引入了jni的编译工具,但是我的Eclipse中只有SDK环境而没有NDK环境,把不用的build去掉就可以了
2014-03-20 10:12:28
5034
原创 java private friendly protected public
位置 private 默认 protected public同一个类 是 是 是 是 同一个包内的类 否 是 是 是 不同包内的子类
2014-03-13 22:01:37
324
转载 java中参数的传递
Java中函数参数的传递是值传递还是引用传递? Java中参数传递时传递到函数中的参数都是原变量的一份拷贝,对于非类类型如int,float等,这份拷贝自然和原变量脱离了关系,这不难理解;而对于类的实例而言,这份拷贝恰巧是实例引用的拷贝,它(参数)指向的实例地址和原实例引用指向的实例地址都是一样的,因此对参数的修改有时也会影响到实例本身,故此造成了Java传递类实例是传递的引用即地址的
2014-03-06 22:22:11
411
转载 java堆和栈
Java的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等 指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时 动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取
2014-03-06 21:01:45
422
原创 IOS语言Object-c语言随笔(四)
1.IOS消息机制消息能够接受参数消息可以嵌套调用消息可以发送给Objective-C对象,也可以发送给类(1)消息的参数一个没有参数的消息是这样的[object methodWithoutParamerer]若带有参数[object methodWithOneParameter:value]若带有多个参数[object methodWithFirstPa
2014-03-03 22:36:31
383
原创 IOS语言Object-c语言随笔(三)
Objective-C面向对象的特性面向对象最重要的概念就是类,通过类可以实现面向对象两个主要的特性:继承和聚合NSObject是所有类的根类1.类的定义都在 .h文件中进行,典型的定义如下@interface FirstViewController : UIViewController{ NSString *name; NSArray *array;
2014-03-02 23:15:11
480
原创 IOS语言Object-c语言随笔(二)
1.常量、变量、和宏Object-C的变量声明和C完全相同:类型,声明对象需使用指针符号*,比如:NSDate *date;NSString *string;NSArray *array;常量可以用static关键字声明static NSString *string = @"abc";预定义宏#define PATH @"ssss"2.#include和#imp
2014-03-02 11:05:56
517
原创 IOS语言Object-c语言随笔(一)
1.基本数据类型C语言中有5种基本类型:char、int、float、double、void,Object-C中仍然可用,并且这些基本类型可以用修饰符unsigned、signed、short、long进行修饰。整型的每一种都有无符号(unsigned)和有符号(signed)两种类型,在默认情况下声明的整型变量都是有符号的类型,如果需声明无符号类型的话就需要在类型前加上unsigned。
2014-03-02 09:59:38
959
原创 IOS语言object_c语言
在项目模版中选择MAC OS X——Application——Command Line Utility——FoundationType选择Foundation打开其中生成的HelloWorld.m代码如下所示#import int main(int argc, const char * argv[]){ @autoreleasepool {
2014-02-26 23:42:51
489
从assets获取图片和文档
2013-10-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人