自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 问答 (1)
  • 收藏
  • 关注

原创 android笔记之碎碎念

1.主线程又被成为UI线程,只有在主线程中才能刷新UI主线程有一个消息队列、消息轮询器和消息处理器,消息处理器需要开发人员自己编写,在子线程需要调用UI时就往消息队列添加消息,主线程的轮询器就会查询消息队列,并调用消息处理器处理消息当子线程获取网络资源时,主线程还会继续执行,这时子线程也许还没有获得所请求的资源,这时主线程如果需要用到子线程的所获得的资源,就有可能得不到,报空指针错误。 所以在子线

2017-12-24 17:18:31 279

原创 android笔记之activity生命周期和启动模式

Activity生命周期void onCreate()Activity已经被创建完毕void onStart()Activity已经显示在屏幕,但没有得到焦点void onResume()Activity得到焦点,可以与用户交互void onPause()Activity失去焦点,无法再与用户交互,但依然可见void onStop()Activity不可见,进入后台void on

2017-12-24 16:45:13 216

原创 android笔记之adb&页面布局&琐碎

在配置文件中指定字符串id 在Java代码中指定字符串id R.layout.wmj第三方应用的保存路径是:data/app 系统应用的保存路径是:system/app Data/data/包名文件夹:系统为每个应用分配一个专属空间Adb指令: Adb start -server:启动adb进程 Adb kill -server:杀死adb进程 Adb install F:/

2017-12-24 16:34:27 1102

原创 android笔记之项目结构

Android模拟器参数说明:         Device模拟真实设备分辨率 Target 模拟机使用的Android系统版本 Cpu Android模拟机使用的CPU类型 Keyboard手机上的物理键 Skin物理键的皮肤,不选不显示按钮 Ram手机内存 Vm heap 手机堆内存 Internal storage 内部存储空间 Sd card sd卡创建Androi

2017-12-24 16:20:15 256

原创 Spring基础之Bean的生命周期

无论学习什么,了解它的生命周期是十分重要的。通过了解bean的生命周期,我们就可以在它的生命中做些什么,让它不虚度光阴。       No image no truth:        talk is cheap,show me the code:<?xml version="1.0" encoding="utf-8"?><!-- - Application context definiti

2017-12-23 22:36:28 149

原创 Spring基础之AOP

AOP,即面向切面编程,SpringAOP是在SpringIoC上做的扩展,是面向某一个切面或关注点,例如所有模块都用到日志功能,就可以看作将日志嵌入各个模块,这些很多模块都通用的功能就可以看作是切面,把它定义为“横切关注点”,其代码可以为各个模块复用。       AOP具有源码无关性,它可以通过预编译方式或者运行期动态代理的方式来实现。       AOP核心概念连接点(JoinPoint):

2017-12-20 00:04:20 166

原创 Spring基础之IoC

IoC(控制反转)就是将原来应用程序要做的事情,交给IoC容器去做。组件不是由应用程序来创建和配置,而是交给IoC容器去做。       DI(依赖注入)IoC的具体实现,就是将调用者需要用到的类,交给容器去创建和配置,在运行期间,动态的自动填充给调用者。(军区主建,战区主战。)       上面提到的交给IoC容器去创建和配置的对象,就是“bean”,“bean”可以是pojo,dao,servi

2017-12-10 23:14:33 222

原创 基数排序

基数排序,又称为桶排序,就是将数字从高位到低位(最高位优先法),或者从低位到高位(最低位优先法),依次根据数据相应位置的数字的大小,将其放到相应的”桶”中,然后按照顺序收集这些数据,然后再使用同样的方法按照下一位置上的数字的大小进行比较、收集,直到比较完最后一个位置,此时数据就是有序的。        下面以最低位优先法为例:       待排序数据为:73,56,22,13,48,66,25,8

2017-11-30 23:45:52 916

原创 快速排序

快速排序的基础是划分:划分就是在一组数据中,选择一个数作为枢轴,利用枢轴把小于枢轴的数排在枢轴的左边,大于枢轴的数排在枢轴右边。                如上图所示,枢轴将数据划分为小于枢轴的部分和大于枢轴的部分,这就是划分。talk is cheap,show me the code:public class Partition { private int[] array;

2017-11-23 23:50:44 472

原创 希尔排序

希尔排序,故名思议是由希尔提出的排序算法(卖个萌,哈哈)。希尔排序基于插入排序,而插入排序需要大量的移动复制,标记的元素左边都是有序的,而右边都是无序的,要把标记符所指的元素插入左边的有序数据中,就需要将中间数据依次右移一位,这样就会移动复制太多次。而我们可不可以通过增量来进行插入排序呢?答案是可以的。我们可以先取一个最大增量作为间隔,把以增量大小为间距的数据划为一组,在组内进行直接插入排序,这样数

2017-11-21 23:55:26 4417 2

原创 归并排序

归并排序用到了递归,归并就是两两合并,然后在此基础上再两两合并,直到合并为一列有序的数据为止。归并排序的时间复杂度为O(N*logN),而冒泡排序、插入排序和选择排序都需要O(N*2)的时间。不过归并排序需要另外一个和待排序数组相同空间大小的数组。       假设归并进行到了最后一步,那么就变成了合并两个有序数组的问题了:        上图显示了合并两个有序数组的示意图,上下两个数组依次从

2017-11-21 23:09:50 188

原创 递归

递归就是调用自己,直到满足一定的基值条件,就退出递归。三角数字        人们得出三角数字的一个解法是:第n项的值等于前1+2+3+…+n;我们当然可以使用公式直接计算它的值,但我们可以把第n项的三角数字的值看作n加上第n-1项三角数字,同时第n-1项三角数字可以看作第n-1叫上第n-2项三角数字,直到n=1终止。public class TriangleDemo { public

2017-11-19 23:08:32 386

原创 java链表

数组的大小是不可变的而且数组的地址是连续的,通过下标访问,查询的速度快,但是插入和删除的速度慢,这是因为它需要移动大量元素。链表就可以解决数组的上述弊端,链表由一个个结点组成,每一个结点包括自己的数据和指向下一结点的引用,而这个引用同样指向的是一个结点。这样链表就不需要像数组一样使用连续的地址,而是使用引用和自身一样的结点(也就是某个类的对象),这样就好像珍珠链一样将一个个珍珠串起来,而这些珍珠的地

2017-11-15 23:38:41 230

原创 原型模式

是什么:用原型实例指定创建对象的种类, 并通过拷贝这些原型创建新的对象。通俗点说就是复制对象。       为什么:原型模式一般用作克隆相同的对象,因为有些对象的创建十分耗费资源,例如从数据库查询数据后封装成对象,这时如果每次都去查询数据库的时候就会很耗费资源,运行时,如果数据库数据不发生变化,每次请求时,我们就可以克隆这个对象,返回给客户端。原型模式一般使用在创建对象需要耗费大量的资源、运行时创建

2017-11-09 00:06:50 180

原创 建造者模式

定义:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。      使用场景:构建复杂的产品时,产品的各个组成部分可能发生变化,但产品组合起来具有一定的规律,通过导演者(Director)来将产品的各个部分组合,指导整个生产过程。      与工厂模式的区别:建造者模式中的建造者相当于工厂模式,但多出来了一个导演者(Director),他相当于工厂里来了个牛逼的工程指导者,这样就

2017-11-07 23:35:41 155

原创 单例模式

单例模式属于创建型设计模式。单例模式是指类只拥有自己的一个实例,并且自己创建自己的这个实例,同时提供给其他对象使用。单例模式一般用于一个类被全局使用,经常的创建和销毁,这样就只需要实例化一个实例,供别人调用,这样即节省了系统资源,也避免了资源的多重占用。       下面是单例模式的几种实现方式:1. 懒汉式,线程不安全public class Singleton { private sta

2017-11-01 23:08:32 168

原创 工厂模式

一般情况下,我们使用new来创建对象,这种调用者和创建者是同一个,耦合度高,另外有些对象很复杂,只使用new很难满足要求。       工厂模式,属于创建型设计模式,生产的对象叫产品,生产产品的场所叫工厂。使用工厂模式不会向客户端暴露创建逻辑,而且可以进行复杂的初始化操作,并将创建工作延迟到子类。工厂模式实现了对象的创建过程统一管理。       工厂模式分为简单(静态)工厂、普通工厂、抽象工厂三类

2017-11-01 22:19:29 154

原创 队列

队列,顾名思义,就是好像我们过年去售票处买票,大家有秩序的排成一列,谁先到,谁就排在前面,就先买到票离开。即先进先出(FIFO)原则。队列可以看成打通栈的栈底,继而从栈的先进后出,变为队列的先进先出。像我现在写这篇博客,先输入的文字在前面,后输入的文字在后面一样。        下面用数组实现队列:public class Quene { private int maxSize;

2017-10-13 00:23:48 257

原创

栈是什么?举个例子,小时候家里烧的煤球,大人总是把煤球一个个放进炉子里,当最下层的煤球烧完时,也是用夹子从最上面的开始,一个一个将煤球拿出来,这就是栈,先进后出,后进先出(除非底漏了,那是队列,哈哈)。大部分微处理器都是基于栈的原理,还有一些老式的计算器。        将元素插入栈中,叫入栈,将元素从栈中取出,叫出栈。       下面我们用数组来实现栈:public class Stack {

2017-10-12 00:07:55 295

原创 简单排序

排序的应用十分广泛,例如数据库中某个字段的排序(从小到大),二分查找也是基于已经排好顺序的数据序列。本篇博客介绍简单的三种排序,即冒泡排序、选择排序和插入排序。 1.冒泡排序 冒泡排序,顾名思义,就是像气泡一样,按从左到右顺序比较相邻的两个数据的大小,如果左边的数值大,就交换两个数据,否则就什么也不做,然后依次比较后面的数值,这样经过一轮交换,最大的数据移动到了最右边。然后进行下一轮的比较交换

2017-10-09 22:57:13 233

原创 顺序查找和二分查找

使用顺序查找适用于没有顺序的数据序列,执行速度效率为:O(N)。public class ArrayOrderSearch { private long[] data; private int num; public ArrayOrderSearch(int length){ num = 0 ; data = new long[length];

2017-10-09 20:43:51 840

原创 设计模式初探

设计模式是经过大量实践,根据使用场景分门别类,经过前任在实际的软件开发过程中摸索总结出的一系列解决特定场景和问题的有规律和经验的解决方案。       设计模式可以分为创建型、结构型和行为型三种类型:1.创建型设计模式:工厂模式抽象工厂模式创建者模式单例模式原型模式2.结构型模式适配器模式桥接模式过滤器模式组合模式装饰器模式外观模式享元模式代理模式3.行为型模式责任链

2017-10-02 22:22:43 176

原创 redis初见

redis是remote dictionary server 的缩写,她是使用ANSI C编写,支持网络,基于内存并可持久化,日志型和key-value的存储型数据库,并提供多种语言的API支持。特点:支持多种数据类型,包括string、set、list、hash、zset等。可以将内存的数据持久化到磁盘 。支持原子化操作支持数据库主从备份下载及安装:从网上下载redis,解压后目录如下:

2017-09-11 00:41:57 262

原创 Spring简介

Spring是一个开源框架,是为了解决企业应用开发的复杂性而创建的。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。Spring 框架是一个分层架构,由 7 个定义良好的模块组成。 分层架构是指可以选择只用它的一部分,而不影响其他。它的构架体系是内部相容的。所以,将使学习曲线大大降低。例如,可以选择只用Spring 的JDBC 单一应用或者用Spring管理

2017-08-31 00:50:12 223

原创 java科学计数法转换为数字型字符串

很多童鞋遇到过将科学技术发转换为数字型字符串的问题,一般通过BigDecimal来转换,但这样变量为科学计数法的可以正常转换,但变量为正常类型就会出现问题(会出现很长的数值),为保证科学计数法和普通数值可以通用,此时可以通过setScale保留相应的位数来实现。public class T { public static void main(String[] args) {

2017-07-04 00:14:28 59647 1

原创 Java I/O流

一、I/O流概述 1、流的概念      为进行数据的输入/输出操作,Java中把不同的输入/输出源(键盘、文件、网络连接等)抽象表述为“流”(Stream)。 2、Java中流的分类(1)按照流的方向:输入流 – >只能从中读取字节数据,而不能向其写出数据输出流 – >只能向其写入字节数据,而不能从中读取数据(2)按照流处理数据类型:字节流 – >用于(原始的二进制byte流)处理字节

2016-11-30 00:29:22 364

原创 Java线程的同步

一、线程的同步对共享对象的访问必须同步,叫做条件变量.Java语言允许通过监视器(有的参考书称其为管程)使用条件变量实现线程同步.监视器阻止两个线程同时访问同一个条件变量.它的如同锁一样作用在数据上.线程1进入withdrawal方法时,获得监视器(加锁);当线程1的方法执行完毕返回时,释放监视器(开锁),线程2的withdrawal方能进入. 二、多线程问题—资源协调用synchroni

2016-11-24 23:47:07 320

原创 Java线程之进阶篇

一、线程的调度在Java中,线程通常是抢先式的,而不是按需分配时间片式的。在抢先式中,有多个线程是“可运行的”,但只有一个线程是实际运行的。这个线程会一直运行,直到它暂停并成为“可运行态”,或者有更高优先级的线程变为“可运行的”。一个正在运行的线程暂停并成为“可运行态”的这个过程称为“被阻塞”。被阻塞有许多不同原因。例如执行Thread.sleep()。可使用静态方法Thread.curre

2016-11-17 23:55:45 366

原创 Java内部类

内部类就是指在一个类的内部去定义一个类,举个例子就是人的身体相当于一个外部类,它有自己的各种器官(相当于各种成员、属性),心脏相当于内部类,当然它也有自己的属性和行为,心脏可以通过血管通往人体的各个器官,就好像内部类可以访问外部类的成员一样。      内部类的属性类名称只能用在定义过的范围中,除非用限定的名称来引用它。内部类的名称必须与所嵌套的类不同。内部类可以使用所嵌套类的成员变量。内部

2016-11-17 00:29:27 250

原创 集合(collection API)

一个集合(collection)是一个简单对象,他表示一群对象的集合。集合中的每个对象称为元素,并且集合中的元素可以不同Collection API提供了一个广泛的类和接口的集合。它们可分为四个基本类型:Collection:有无顺序都可以,允许重复元素。Collection接口支持添加、删除、汇总和检验集合中项的方法。List:有序的,允许重复元素。顺序可以是自然排序或按对象加入到集合的顺序排

2016-11-08 23:14:54 2290

原创 String和StringBuffer类

概述Java中使用String和StringBuffer类来处理字符串。String类支持静态(不变的)的字符串。StringBuffer类则支持可修改的字符串。String和StringBuffer都支持16位的Unicode字符。String类用String类创建的字符串是只读的。当使用“+”运算符将一些字符加到某String对象上时,结果产生了新的对象,而不是原来String对象的一个修改值。

2016-09-20 23:25:55 379

原创 java Math类

java.lang.Math类是有关数学计算的类两个静态常数: static double E static double PI常用的静态方法有: abs() ceil() floor() max() min() random() round() sin() cos() tan() sqrt() pow()abs():返回某个数字的绝对值 参数可以是float,doub

2016-09-20 23:04:29 333

原创 java包装类

Java包装类主要用来将基本数据类型元素转化为对象,从而进行一些操作      Java中每一个基本类型都有其对应的包装类: 基本数据类型 包装类 boolean Boolean byte Byte char Character short Short int Integer long Long float Float double

2016-09-19 23:29:11 356

原创 java线程之基本概念

线程是什么      进程是分配资源的基本单位,而线程是执行调度的基本单位,线程可以共享进程的资源(数据和代码),一个进程中至少有一个线程。为什么需要线程      进程之间的切换是很耗费资源的,而线程之间的切换比较节省资源,因为线程的开销比较小。怎么创建线程      有两种方法可以创建线程。一个方法是通过建立一个实现Runnable接口的类来创建线程;另一种方法是通过继承线程类Thread的类来

2016-09-18 22:55:19 290

原创 Struts1的执行过程

用户通过提交jsp表单,表单中的action的路径就是所请求的action的地址(假设是a/b/c.do),通过http请求,交给ActionServlet来处理。查找Web.xml文件,找到action-mapping文件,根据后缀.do找到相应的action-name(假设叫做action)。通过action-name(action)找到具体的配置文件所在,比较大的工程通常不止一个配置文件,

2016-08-09 22:54:40 1511

原创 java异常

java异常的定义      不要指望你的程序永远不会出错。Java程序运行过程中所发生的异常事件,比如除数为零、文件找不到等,就叫做java异常。Java把异常当作一个对象来处理,使用Throwable类及其子类来描述异常。java异常体系结构      Thorwable类所有异常和错误的超类,有两个子类Error和Exception,分别表示错误和异常。 Exception又分为Runtime

2016-07-12 21:28:35 364

原创 抽象类和接口

抽象类      有时在库开发中,要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该行为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。       声明方法的存在,而不去实现它的类叫作“抽象类”。用abstract关键字修饰抽象类。public abstract class People { public abstract void eat(

2016-07-11 15:38:49 254

原创 java初始化顺序

本类中的初始化顺序public class A { private int a = show(1); static{ System.out.println("static A"); } public A(){ System.out.println("A--无参构造器"); } private int show(int i

2016-07-10 17:25:58 248

原创 Java构造器

构造器定义      构造器是用来初始化类实例。在对象编程语言中,一般在定义了一个类型之后,为了能使用它,必须把这个类型具体化,也就是指定为一个具体的对象。而构造函数就是从定义出发,建立与定义相对应的对象。用计算机语言来说,光有定义是不能使用,必须通过构造函数来分配内存空间给可使用的对象。构造器的声明语法<作用域> <类名> (<参数列表>){ <方法体>}构造器的使用规则构造

2016-07-09 11:03:00 387

原创 java重载和重写

重载      重载是指在同一个类中,使用相同的名字来定义多个方法。编译时可以根据具体的参数要求,选择不同类型的方法。由于重载对同一方法名有不同的表现形式,有些地方也把它当作不同于运行时绑定的动态多态的实现的编译时确定的静态多态的实现。 重载方法的规则重载的方法名字必须相同参数列表必须不同:参数的数量或参数的类型要求不同返回值不能用来区分方法方法抛出的异常也不能用来区分方法重载的分类普

2016-07-06 12:08:55 254

空空如也

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

TA关注的人

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