自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小小巴的博客

加油,学习

  • 博客(59)
  • 收藏
  • 关注

原创 震惊!java竟然catch不到异常?

震惊!Java竟然catch不到异常?Bug引入分析外围Try Catch分析通过模拟复现场景通过源码进行分析InflateException通过源码进行分析InvocationTargetException通过native源码进行分析InvocationTargetException通过native源码进行分析OutOfMemoryError总结Bug引入分析程序员的生活就是每天在挖坑,填坑...

2019-10-28 17:42:57 3037

原创 oc回调的几种方式

oc回调的几种方式春招也在找到实习后结束了,实习时候由于组内缺人,也被调整到了ios组,也是开始了ios的学习,虽然开始学习一门新的技术是困难的,而且还是从Java转到了oc语言,但是人生本来就是一个不断学习的过程,不是吗?这里总结一下oc语言中的回调机制。类似于Android中的interface callback回调的方式,oc中也有几种实现回调的方式,但是总的来说,实现都是我们会通过...

2018-07-04 10:52:46 3028 1

原创 Android AsyncTask源码解析

Android AsyncTask源码解析AsyncTask是一个google为开发者提供的一个实现的一个轻量级的类库。 AsyncTask是一个虚类,所以我们必须实现其中的doInBackground()方法。初始话的时候需要实现如下的泛型方法。public abstract class AsyncTask<Params, Progress, Result>Pa...

2018-02-26 16:43:23 330

原创 牛客网剑指offer

牛客网剑指offer把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。因为是旋转数组,考虑使用二分查找的方法,根据题目的意思,其实可以看作两个递增的数组,最开始旋转...

2018-02-26 15:51:00 668

原创 Okhttp3 源码解析(异步同步请求)

Okhttp3 源码解析(异步同步请求)本篇主要通过代码流程对Okhttp3的请求流程进行分析。相信okhttp3使用大家都已经掌握,这里就不再赘述。 基于okhttp3.9.1。同步请求实例:OkHttpClient client=new OkHttpClient(); //实例化一个OkHttpClient //Request request= n

2018-01-23 15:14:29 1193

原创 Java 线程同步

Java 线程同步综述我们知道,当不同的线程对同一个变量进行操作的时候,将会有可能出现数据不统一的情况。 为了解决这种问题,Java提供了几种方式:synchronized关键字,Lock锁机制,ThreadLocal线程副本的方式。synchronized关键字synchronized是一种互斥锁,如果对临界资源加上互斥锁,当一个线程在访问该临界资源时,其他线程便只能等待。...

2018-01-18 22:34:14 270

原创 Java 泛型解析

Java 泛型解析在Java中,泛型是通过不对list进行类型的检查,我们可以将任意的Object类型存入list中,当我们需要使用到的时候需要对其进行转换,相当的麻烦。List list=new ArrayList(); list.add("123"); list.add("234"); list.add(2);通过泛型来

2018-01-17 20:39:21 300

原创 Java异常机制

Java 异常机制说到Java异常,其实一直以来都没有认真的了解一下,都是在需要的时候进行try catch进行捕获,同时输出其信息,对于自定义异常,和异常的一些细节都没有详细的了解,这里来进行一篇总结。Java的异常综述在Java中,将不正常的情况分为Exception(异常)和错误(Error),他们都同样继承于Throwable父类,Error错误,一般是和虚拟机相关的错

2018-01-17 14:28:29 207

原创 java set集合解析

java set集合解析set这里我们首先看到set接口 public interface Set extends Collection注意一下官方对其的描述 * A collection that contains no duplicate elements. More formally, sets * contain no pair of elements e1

2018-01-11 17:21:49 1018

原创 Hashmap源码解析 keyset,entryset

Hashmap源码解析 keyset,entrysetHashMap 继承于AbstractMap, 同时实现了Map接口:属于Map的子类。 Cloneable接口:可以被复制。 Serializable:可以被序列化。HashMap是一个键值对的集合,通常通过 HashMap.put(K,V)添加单个元素。 本文主要讨论Hashmap中的实现细节,put函数,keyset和e

2018-01-10 17:14:43 1325

原创 java对象和变量踩坑集合

java对象和变量static修饰符由static修饰的变量称为静态变量或者类变量,当类被初始化时候就会被创建。这里通过一个例子来说明他的特点。public class Test { int i=j+1; //非法前向引用 int j=2;}当我们编写如上的代码时候,编译器会提示非法的前向引用,是因为i被初始化的时候还找不到j的值,但是我们将j改为st

2018-01-09 14:57:54 320

原创 java基础数组

java基础数组最近开始补java基础,记录一下。数组是静态的 数组是有初始值的 数组中对象存在于堆中,栈中仅仅存放着其对象的引用 java 中数组的表达方式 数组是静态的数组必须经过初始化才能使用,一旦被初始化,长度就确定了,所以是静态的,虽然我们平时使用的集合LinkedList,ArrayList都是动态的,但是他们都是通过内部封装实现了动态的操作,ja

2018-01-08 21:40:07 216

原创 Android gradle解析

Android  gradle解析相信接触了Android studio的都对gradle构建模式不陌生,刚开始的时候只是照着网上的配置,在build.gradle中配置,但是为什么,还是一头雾水,这里来通过具体的项目查看一下Android的gradle机制。gradle是什么gradle是目前Android主流的编译工具,和Android studio关系密切,虽然目前还出现了一

2018-01-06 15:19:47 327

原创 通过Android studio 3.0.1监测内存泄露

通过Android studio 3.0.1监测内存泄露内存泄露在java中有gc垃圾回收机制,但是由于我们在编写代码的时候,变量申请内存后,但是一直得不到回收的时候,就会产生内存泄露。Android studio 3.0.1监测内存泄露本文主要通过Android studio 3.0.1工具来进行内存泄露的检测。先编写如下例子。public

2018-01-05 11:45:33 2421

原创 Android Handler机制和ThreadLocal的应用

Android  Handler机制和ThreadLocal的应用  Handlerhandler是Google参考了windows的消息机制处理机制,在Android系统中实现的一套类似的消息处理机制。相信大家在平时使用的时候都有过,thread+handler的使用经历,handler作为将信息回调回主线程的工具,为我们更新ui线程的数据信息提供了可能。Handler,Mess

2018-01-04 17:50:39 589

原创 牛客网-猜数游戏

链接:https://www.nowcoder.com/questionTerminal/0a5b316cfe9d4c4ba89c6c57a1ee516e 来源:牛客网牛牛和羊羊在玩一个有趣的猜数游戏。在这个游戏中,牛牛玩家选择一个正整数,羊羊根据已给的提示猜这个数字。第i个提示是”Y”或者”N”,表示牛牛选择的数是否是i的倍数。 例如,如果提示是”YYNYY”,它表示这个数使1,2,4,5的倍

2017-12-05 14:00:16 464

原创 堆排序

#include<iostream>using namespace std;void duisort(int a[],int parent,int lenth){ int temp = a[parent]; //取父节点的值 int child = parent * 2 + 1; //取第一个子节点,这里默认取左边值 while (child<lenth)

2017-11-28 17:24:33 205

原创 百度校招笔试-有趣的排序

度度熊有一个N个数的数组,他想将数组从小到大 排好序,但是萌萌的度度熊只会下面这个操作: 任取数组中的一个数然后将它放置在数组的最后一个位置。 问最少操作多少次可以使得数组从小到大有序? 输入描述: 首先输入一个正整数N,接下来的一行输入N个整数。(N <= 50, 每个数的绝对值小于等于1000)输出描述: 输出一个整数表示最少的操作次数。输入例子1: 4 19 7 8 25输出例

2017-11-26 22:32:44 536

原创 百度校招笔试-度度熊回家

一个数轴上共有N个点,第一个点的坐标是度度熊现在位置,第N-1个点是度度熊的家。现在他需要依次的从0号坐标走到N-1号坐标。 但是除了0号坐标和N-1号坐标,他可以在其余的N-2个坐标中选出一个点,并直接将这个点忽略掉,问度度熊回家至少走多少距离? 输入描述: 输入一个正整数N, N <= 50。接下来N个整数表示坐标,正数表示X轴的正方向,负数表示X轴的负方向。绝对值小于等于100输出描述

2017-11-26 22:27:29 264

原创 字典序排序

输出所有的字典序排序includeusing namespace std;int main() { int n; cin >> n; int a[100]; for (int i = 1; i <= n; i++) { a[i] = i; cout << a[i]; //输出第一个排序 }

2017-11-26 11:49:57 1013

原创 Error building SqlSession.

Error building SqlSession. The error may exist in sqlmap/user.xml Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderExce

2017-11-21 11:39:05 17778 4

原创 android.database.sqlite.SQLiteConstraintException: NOT NULL constraint failed: GROUP_FILE.FILE_NAME

android.database.sqlite.SQLiteConstraintException: NOT NULL constraint failed: GROUP_FILE.FILE_NAME错误在最近的项目中遇到了如上了错误,开始不知道怎么回事,检索了代码,也百度了下,都写的不详细,这里记录下这个错误。在项目中 用到了greendao数据库,这里有一个Group类,需要存在数据库中,当时编写

2017-11-14 23:20:24 4904

原创 Android lanunmode

Android lanunmode继续上次的模拟面试的查漏补缺, Android 的lanunmode,也就是Android的启动模式。 activity的启动模式一共有四种1.standard 2.singleTop 3.singleTask 4.singleInstance通过在Mainfest种指定,或者设定intent的启动模式都可以更改lanunmode。st

2017-10-24 13:11:55 298

原创 Android activity的生命周期 详述 以及fragment嵌套周期

Android activity的生命周期 详述 以及fragment嵌套周期说到activity生命周期,也是基础中的基础,上次模拟面试就问到这个,尴尬的是竟然忘了,抽个时间好好的复习一下贴一张网上找的图 oncreatactivity的创建函数,这个时候activity还不可见,可以将activity的初始化函数放在这里。onstart当oncreat执行后会执行...

2017-10-24 11:08:24 1314

原创 快速排序

快速排序快速排序是一种基于分治思想实现的优秀的排序算法,通过递归查找一个基准(理论上可以任意选择),然后遍历数组将不大于基准的放在基准的左边,不小于基准的放在基准的右边(如果是从大到小则放在左边),通过不断的递归调用,直到所有的数字都在正确的位置为止。public static void quickSort(int arr[],int _left,int _right){ ...

2017-10-21 21:55:50 388

原创 归并排序

归并排序归并排序是一种通过递归,将数组进行划分,在进行排序,最后在归并在一起的算法。 该算法是采用分治法的一个非常典型的应用。void meargeSort(int arr[],int head,int mid,int tail){ int i=head; int j=mid+1; int arr2[]; //这里是复制的临时数组 for(int k=

2017-10-19 22:11:16 231

原创 选择排序,冒泡排序,插入排序,交换排序,shell排序

基本的排序算法是很直观的算法算法(1)选择排序,冒泡排序,插入排序,交换排序选择排序选择排序就像他的名字一样,每一次的遍历选择其中最大或者最小的数值将其放在数组首部或者尾部。 这里选择最小的数字放在数组首部public void selectSort(int[] arr) { for (int i = 0; i < arr.length - 1; i++) {

2017-10-19 14:13:09 282

原创 java设计模式-(一)工厂模式

java设计模式-(一)工厂模式简单工厂模式一个专门用来创建其他类的模式,也叫做静态工厂模式,因为这种方式的获取方法都是静态的,使用时候无需new处对象。public interface Animal { void sound();}这里定义一个Animal接口来实现animal的基本方法。public class Pig implements Animal{ //实现animal

2017-09-28 18:41:34 234

原创 java 集合解析(一)collection和Iterable

java 集合解析(一)collection和Iterable先上一张从网上找的图,将集合也是概括的挺详细的 从图里可以看出collection是java中的一个顶层接口,list,queue和set继承了collection接口。 既然要说的是collection,我们打开源码collection看一下。public interface Collection<E> extends Iterab

2017-09-28 14:49:14 1881

原创 数据结构-树

数据结构-树树的定义树是由n(n>=0)个节点组成的有限集合 如果n=0,这是一颗空树;如果n>0,这n个节点有且只能存在一个节点作为树的根节点(root)。树的每一个节点可以有零个或者多个后继节点,但是有且只有一个前驱节点(根节点没有前驱节点),反映了数据元素之间的层次关系。树中某个节点的子数的个数称为该节点的度,树中节点最大的度称为该树的度。度不为0的节点称为非终端节点,为0 的节点称

2017-09-28 13:35:14 211

原创 动态数组的实现-ArrayList

动态数组的实现-ArrayList说完了LinkedList,来谈下另外一种常用的数组ArrayList。 可以看到他们同时实现了List接口,但是ArrayList和LinkedList的区别是LinkedList利用了双向链表的方法来进行创建,ArrayList利用了动态数组的方法,进行创建,类似于c中的动态数组申请。从他们的创建方法也可以看出来,当数据较大时候,从中间插入,从头部插入,和在尾

2017-09-26 20:35:05 2413

原创 双向链表在java中的应用举例-LinkedList

双向链表在java中的应用举例-LinkedList复习了链表,作为一种高效的存储数据的方式public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable这里LinkedList 继承于AbstractS

2017-09-26 20:08:23 1588 1

原创 数据结构队列

数据结构队列队列也是一种操作受限的限制表,其仅允许在表的一端进行插入,在表的另外一边进行删除 ,就像我们平时排队一样,总是后面插入,前面的人买好东西离开。简单的基本数据队列实现 c/c++实现Quene *quene;#define Max_Size=5;struct Quene{ int data[Max_Size]; int front; //设置出

2017-09-26 13:31:01 251

原创 数据结构(栈)c/c++/java实现

数据结构(栈)c/c++/java实现栈是一种只能在一端进行插入或删除的线性表,表中能够进行删除和插入的一段称为栈顶。比如插入数字1,2,3,4。栈顶元素就为4,从栈顶向栈底看下去,数字依次是4,3,2,1。java基本实现通过在类中进行基本的数据操作public class Stack{ private int count; private int[] data;

2017-09-25 21:23:03 460

原创 双链表(java c/c++)

双链表中每一个节点有两个指针域,一个指向前驱结点,一个指向后续节点。因此可以通过访问前置节点,更加的方便。c/c++实现照例建立一个结构体,但是拥有两个指针域struct Node{ Node *head; //指向前置节点 int data; Node *next;//指向后置节点};照例添加5个数字void getDoubleNodeHead()

2017-09-25 19:39:59 249

原创 java值传递

java值传递接触java也有一段日子了,说来惭愧,最近才想起要看下java的参数传递情况,也是一个困扰了我一段日子的问题。要搞清楚java的值传递,首先要分清楚什么是引用和对象。例如下面的例子Person person=new Person();当我们声明了Person person过后能不能直接拿来用呢,答案是否定的,肯定是不可以的,只有在为其申请了地址空间过后才能使用,Person pe

2017-09-24 21:46:52 520

原创 数据结构单链表创建(头插法,尾插法)java/c/c++

单链表在单链表中,每一个节点都有一个指针域指向后继节点,从而形成一种链接的作用。 在c/c++中可以通过结构体的形式,通过指针形成链表,在java中可以通过类的形式来实现。附上c/c++的单链表struct Link{ int data; Link *next;};头插法顾名思义就是从头开始插入,插入的顺序会和链表中的数据发生颠倒。//单链表头Link* creatSingle

2017-09-24 21:07:12 4234

原创 Android 一个简单的adil例子

adil,跨进程通信,一个简单的例子,来理解一下adil。创建一个项目,名字随意,既然要跨进程,我们就创建一个service ,依照onprocess方法让他运行在一个单独的线程中 <service android:process=":service_new" android:name=".RemoteService" andr

2017-09-19 18:36:33 645

原创 Android多进程应用

Android多进程应用通常情况下,当应用启动后,将会运行进程名为AndroidManifest.xml文件中指定的应用包名,所有的基本组件都会在这个进程中运行,但是我们可以通过在AndroidManifest.xml中指定android :process 来指定该组件(例如activity,service)会运行在一个独立的进程中。我们知道当每一个应用启动的时候,Android 系统会为应用启动一

2017-09-17 19:00:48 408

原创 慕课网javascript入门篇学习

慕课网javascript入门篇学习最近接触了react native,感觉是一种全新的编程体验,不需要编译的特性,更改了过后直接摇一摇reload的特性真的让人欲罢不能,但是全新的体验也是有着问题,需要javascript的支持,对我来说也算是一种全新的语言,所以最近的时间准备速度的入门JavaScript,也在这里记录一下自己的学习。和java一样JavaScript每行也需要一个;来进行结束。

2017-09-11 20:44:56 657

空空如也

空空如也

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

TA关注的人

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