自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 问答 (3)
  • 收藏
  • 关注

原创 数据结构与算法 - 时间复杂度详解

时间复杂度详解我们可以使用著名的高斯定理来解释什么是时间复杂度,时间复杂度的重要性 也就是从小到大我们所熟悉的一个定理 1+2+3+4+5+6+….+100的结果使用高斯定理我们可以很轻松的算出答案sum = 1 + 2+ 3 + 4 + 5+….+99 + 100sum = 100 + 99+ 98 +97 +96+….+2 + 1sum

2018-01-26 21:56:46 1453

原创 android 为什么谷歌官方不建议在项目中使用 Enum

今天看到一个面试题 就是关于这个的 本来第一反应就是 占内存呀 ,,但是为什么占内存还是 自己也说不出个所以然来 还是太菜了呀 所以在这里详细记录一下 为什么占内存在日常开发中 我们都使用过 判断语句 没错判断语句但我们一般都会使用常量或者枚举(enum) 就像下面这样 示例代码 使用常量public class Main { private static final DEFA

2017-04-01 19:27:09 2682 1

原创 android 手把手教你打造属于自己的文件浏览器

前言相信很多朋友在项目开发中都需要用到选择文件浏览器,但是打开的的文件浏览器总有很多不是很满足的地方,比如说只显示特定的文件 还有就是只选择文件夹的路径,这种需求相信在实际开发中还是会遇到很多的,在这里就需要我们自己根据File这个类和android的ListView来完成一个简单的文件浏览器 ,所以让我们来打造属于自己的文件浏览器吧思路:其实很简单的 我们只需要根据获取到的手机的sd卡根目录来获

2016-10-23 17:43:24 6861 5

原创 Android MVP模式简单例子实战

概要 对于mvp模式,大家都知道是由mvc演变而来的,对于MVC大家都知道 M Model(用于存放实体模型与业务逻辑) V View(存放布局和资源文件) C Control(存放Activity) 对于mvc中的view在android中的功能就比较弱化了并且在Control中的activity中我们在实际开发中

2016-10-15 17:59:20 10815 10

原创 JVM 垃圾回收机制主要原理

对于垃圾JVM的垃圾回收机制这里我们称为GC,众所周知,java语言不需要像c++那样需要自己申请内存,自己释放内存,这些都是JVM帮我们做好了的,但是对于一名java程序员,想要更近自己的水平更上一层楼,就要去了解GC的工作原理,根据原理才能写出更好的更优的程序,这里我们先初步讲解一下GC的工作原理首先我们在讲解之前我们需要了解一下JVM内存运行时数据区的三个重要的地方 堆(heap)

2016-10-03 14:21:09 41664 6

原创 Java 设计模式 之 观察者模式

简介 : 观察者模式 用于监听一些对象的状态,如果被监听的对象的数据被改变了,那么他的观察者就会知道,并且根据被修改的数据进行一些操作。 问题的引出 :在这里拿老师与学生来举一个简单的例子教室里的学生正在听课,教室里面的老师正在上课,窗外的的班主任正在看着教室里面的学生,这个时候教室里面学生属于被观察的对象,而正在上课的老师和班主任则属于观察者,这个时候教室的里面属于听课状态的学生的

2016-09-24 21:59:52 1588 1

原创 Java 设计模式 之 工厂模式

简介前言:工厂模式主要是为了我们在创建对象提供过渡接口,这样就能将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。 所以对于比较常用的设计模式(工厂模式),这也是我们必须要掌握的分类 :工厂模式主要被分为三种 简单工厂模式(Simple Factory) 工厂方法模式(Factory Method) 抽象工厂模式(Abstract Factory) 对于工厂模式这

2016-09-11 22:02:21 816

原创 JVM 编译之指令重排

介绍 :所谓的指令重排指的就是jvm在编译代码的时候 ,为了提高程序运行效率,在不影响单线程程序执行结果的前提下,对指令进行的排序,当然我们这里的是单线程,如果是在多线程中就会影响程序的结果了可能你听了我的介绍 还是不明所以,到底什么是指令重排?,没关系,下面我们通过代码来理解到底什么是指令重排 1---> int a = 2 << 1; 2---> int b = 3 << 1

2016-09-06 09:54:10 1749 1

原创 Java 设计模式 之 单例模式

介绍 : 单例模式是一种在日常开发中比较常见的设计模式,在这个模式当中只能允许被实例化一次。 单例模式有两种构建方式,懒汉式与饿汉式,这两种构建方式会在后面详解 单例模式最初的定义出现于《设计模式》(艾迪生维斯理, 1994):“保证一个类仅有一个实例,并提供一个访问它的全局访问点。 对于那些还没有明白单例模式的朋友,我们可以用下面这张图来理解到底什么是单例模式如果你还是不懂

2016-09-05 20:59:28 1906

原创 J2se源码剖析 基本数据类型double

前言今天要分析的Double源码与我上一篇博客的 java源码剖析 Inteager都是属于 java.lang中的,并且都是继承于Number,都实现了Comparable,在上一篇博客中我没有详细说明实现这个Comparable的接口到底有什么用,在这篇博客我会为大家说明这个Comparable的接口到底在Double类中实现了什么东西,接下来我们看Double中的这一段代码,/*实现Comp

2016-08-27 16:01:44 1785

原创 Dijkstra算法详解

算法简介 用于计算从一个顶点到其余各顶点的最短路径算法 适用于权值为非负的图的单源最短路径,用斐波那契堆的复杂度O(E+VlgV) 主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止 算法思想这里我们以这组例子为列1 4 1 4 2 3 4 3 1 3 2 1在这里我们使用数组vis数组来标记未走过的节点以dis数组来存储从 1 到 到 1 2

2016-08-23 11:25:20 2840

原创 Floyd算法详解

简介 : Floyd算法是解决任意两点间的最短路径的一种算法 Floyd算法是一个经典的动态规划算法 Floyd算法的时间复杂度为O(N3),空间复杂度为O(N2) 算法描述与原理:首先我们的目标是寻找从点i到点j的最短路径。从一个节点 i 到 节点 j,无非就是两种情况 直接从 i 点 到 j 点 如 i 点出发经过若干个点到达 j 点 要找出最 i

2016-08-22 16:32:09 5647

转载 android xutil 使用详解

xUtils简介xUtils 包含了很多实用的android工具。xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响…xUitls 最低兼容android 2.2 (api level 8)目前xUtils主要有四大模块:DbUtils模块: android中的orm框架,一行代码就可以进行增删改查; 支

2016-08-20 17:58:14 1358 1

原创 J2se源码剖析 基本数据类型Integer

大家都知道int 是基本数据类型而Integer则是int的包装类,为什么要为基本数据类型提供包装类呢?这里我只说一个最基本的原因 “为了在各种类型间转化,通过各种方法的调用。否则 你无法直接通过变量转化”,这只是其一,其余的我就不一一赘述了,下面让我们来一下Integer的源码 public static final int MIN_VALUE = 0x80000000; //Inte

2016-08-19 20:31:56 1977 1

原创 android 手把手教你绘制圆形头像

自从腾讯QQ中的圆形头像,火了起来后,现在我们在一些应用中都能看到圆形头像的身影,在个人主页或者个人资料面板中使用圆形头像,会使整个布局变得更加优雅 现在我们来进行第一步,创建一个继承ImageView的抽象类MakeRoundImage。让他重写onDraw方法,并且声明一个画笔 import android.content.Context;import android.graphics.Ca

2016-08-19 14:55:35 4049 2

原创 HDU 1754

Description 很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。 这让很多学生很反感。不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。Input 本题目包含多组测试,请处理到文件结束。 在每个测试的第一行,有两个正整数 N 和 M ( 0import java.util.Sca

2016-08-15 20:16:45 976

原创 Java 虚拟机基本结构介绍

java虚拟机的基本结构如图所示:基本的结构有8个 类加载子系统: 主要负责负责加载Class信息,加载的类信息都存放在方法区的类存空间中。 当JVM使用类加载器装载某个类时,它首先要定位对应的class文件,然后读入这个class文件,最后,JVM提取该文件的内容信息,并将这些信息存储到方法区,最后返回一个class实例方法区:方法区主要存储的是方法,静态成员,常量。方法区中给每个类都规定了空

2016-08-10 10:33:14 2979 3

原创 android adb shell查看手机中项目的文件

在平时的项目开发中,尤其是关于文件存储我们往往需要,查看手机上的文件,但是由于权限问题 在自己手机上并不能看到自己项目的文件 ,所以这个时候就需要我们的 adb shell了,首先我们找到我们的sdk文件夹中的 platform-tools 然后我们可以找到我们的adb 然后我们将这里的路径复制下来,点击进入path环境变量,将这里的路径配置到path环境里面 我们就可以在cmd中输入adb

2016-07-20 09:30:52 17498 2

原创 android sqlite增删改查基本运用

在前面,我已经讲了,sqlite的创建具体过程android sqlite轻量级数据库的基本运用之创建数据库 ,现在就来学习一下sqlite是如何进行数据存储并且像其他数据库那样实现增删改查的相信并不是每个人都非常的熟悉sql语句,所以android也向我们对数据库的增删改查提供了一系列的辅助方法,使不懂sql语句的开发者也能对sqlite进行增删改查现在就让我们来创建一个数据库,使的这个数据库包含

2016-07-19 20:52:44 3088 1

原创 android sqlite轻量级数据库的基本运用之创建数据库

文件存储和SharedPreferences存储毕竟只适用于去保存一些简单的数据和键值对,当需要存储大量复杂的关系型数据的时候,你就会发现以上两种存储方式很难应,所以这个时候我们需要sqlite的帮助了*作为android内置的一个轻量级数据库它的运算速度非常快,占用资源很少, 通常只需要几百 K 的内存就足够了, 因而特别适合在移动设备上使用。 SQLite不仅支持标准的 SQL 语法,还遵循了数

2016-07-15 20:10:38 2290 1

原创 HDU 1087

DescriptionNowadays, a kind of chess game called “Super Jumping! Jumping! Jumping!” is very popular in HDU. Maybe you are a good boy, and know little about this game, so I introduce it to you now.

2016-07-15 14:56:30 1125

原创 Android 文件的存储

文件存储是 Android 中最基本的一种数据存储方式,它不对存储的内容进行任何的格式化处理,所有数据都是原封不动地保存到文件当中的,因而它比较适合用于存储一些简单的文本数据或二进制数据文件存储主要通过输入流 来把数据保存到手机中,通过context类中提供了一个 openFileOutput ()方法,可以用于将数据存储到指定的文件中。 这个方法接收两个参数,第一个参数是文件名,在文件创建的时候

2016-07-13 16:05:44 882

原创 POJ 2533

Description A numeric sequence of ai is ordered if a1 < a2 < … < aN. Let the subsequence of the given numeric sequence ( a1, a2, …, aN) be any sequence ( ai1, ai2, …, aiK), where 1 <= i1 < i2 < … < iK

2016-07-13 10:59:29 1212

原创 POJ 2081

Description The Recaman’s sequence is defined by a0 = 0 ; for m > 0, a m = a m−1 − m if the rsulting a m is positive and not already in the sequence, otherwise a m = a m−1 + m. The first few numbers

2016-07-12 08:44:49 309

原创 POJ 1159

Description A palindrome is a symmetrical string, that is, a string read identically from left to right as well as from right to left. You are to write a program which, given a string, determines the

2016-07-11 21:05:34 574

原创 POJ 1579

水题!Description We all love recursion! Don’t we?Consider a three-parameter recursive function w(a, b, c):if a <= 0 or b <= 0 or c <= 0, then w(a, b, c) returns: 1if a > 20 or b > 20 or c > 20, then w(

2016-07-11 20:19:07 352

原创 POJ 1163

初入dp,第一道dp题Description7 3 8 8 1 0 2 7 4 4 4 5 2 6 5(Figure 1)Figure 1 shows a number triangle. Write a program that calculates the highest sum of numbers passed on a route that

2016-07-11 19:06:01 368

原创 Android 广播接收器学习之监听网络变化

广播接收器可以自由地对自己感兴趣的广播进行注册,这样当有相应的广播发出时, 广播接收器就能够收到该广播,并在内部处理相应的逻辑。注册广播的方式一般有两种。 在代码中注册和在AndroidManifest.xml 中注册, 其中前者也被称为动态注册, 后者也被称为静态注册。我们要怎样监听手机的网络变化呢?只需要新建一个类, 让它继承自BroadcastReceiver,并重写父类的 onRecei

2016-07-09 11:46:38 3637 1

原创 Android 自定义ProgressBar样式

首先,在activity_main中定义个一个ProgressBar 控件<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"

2016-07-08 11:06:41 1497

原创 CodeForces - 557A Ilya and Diplomas

Ilya and Diplomas Time Limit: 1000MS Memory Limit: 262144KB 64bit IO Format: %I64d & %I64uSubmit StatusDescription 不久以后,一场信息学奥林匹克竞赛将在BERLAND举行,很多学生都要参加。赛事组委会决定,每一名参赛的选手都可以获得奖励,分别是一等奖或者二等奖或者

2016-07-07 17:03:45 515

原创 POJ 1017

Description A factory produces products packed in square packets of the same height h and of the sizes 1*1, 2*2, 3*3, 4*4, 5*5, 6*6. These products are always delivered to customers in the square parc

2016-07-07 16:56:56 322

原创 HDU 5210

Description WLD likes playing with numbers. One day he is playing with NN integers. He wants to delete KK integers from them. He likes diversity, so he wants to keep the kinds of different integers as

2016-07-07 16:43:09 390

原创 POJ 1862

Stripies Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 14292 Accepted: 6707Description Our chemical biologists have invented a new very useful form of life called stripies (

2016-07-07 16:15:41 664 1

原创 POJ 3069

DescriptionSaruman the White must lead his army along a straight path from Isengard to Helm’s Deep. To keep track of his forces, Saruman distributes seeing stones, known as palantirs, among the troops.

2016-07-07 15:15:23 825 3

转载 写给软件学院的本科生

本人今年北软研究生毕业,本科是35所示范性软院之一,在毕业之际,回顾软院的7年学习生活,很感慨,写点东西给软件学院的师弟师妹们。今年软件工程被提升至一级学科,没有挂在计算机科学之下了,而且软件学院开始招收工程博士生了,真是可喜可贺。我读软件学院本科的时候,软院才刚成立不久,35所示范性软院之一,那个时候想找个师兄问一问大学该怎么度过,软院第一届的师兄们都还没毕业呢,也很懵懂,咋给我经验呢。只好自己摸

2016-07-07 14:14:34 446

原创 Android基础之Menu菜单的创建与响应点击事件

总所周知,手机的屏幕空间有限,因此充分地利用屏幕空间在手机界面设 计中就显得非常重要了。如果你的活动中有大量的菜单需要显示,这个时候界面设计就会比 较尴尬,因为仅这些菜单就可能占用屏幕将近三分之一的空间,不用担心,这个时候我们可以使用android给我们提供的Menu了 首先建立一个xml文件<?xml version="1.0" encoding="utf-8"?><menu xmln

2016-07-06 21:07:44 7934 1

原创 java实现快速排序

快速排序是平均速度最快的排序算法,他的平均时间复杂度 n*log n)快速排序采用分治法来进行排序,首先先给出一个数组,在一开始随意选择一个数pivot,已pivot作为这个数组的分界点,把大于pivot的数放在右边,小于pivot的数放在左边,然后在已pivot的两边分界点,右进行一次上一次的操作,这样就能达到排序的目的了,好了,我们来看一下代码。private static void parti

2016-04-24 19:30:33 601

原创 java 实现二分归并排序

首先 解释一下什么是归并排序的精髓就是把一个乱序数组划分成小的数组来排序,然后再把小的数组合并成大的小组,下面的这张图能够明确说明什么是归并排序 虽然看图感觉二路归并排序很简单,但是实际操作起来还是有一点麻烦的这是主函数public static void main(String[] args) { int[] array = new int[] { 10, 9, 5, 11, 4

2016-04-10 17:23:51 6131

原创 java实现 堆排序

在实现堆排序之前 我们先来介绍一下什么是最大堆与最小堆最大堆 与最小堆 都是一个二叉树 也称为二叉堆二叉堆的定义 每个节点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)最大堆 : 当父节点的键值总是大于或等于每一个子节点 时被称为最大堆最小堆 : 当父节点的键值总是小于或等于每一个子节点 时被称为最小堆最小堆 : 1 2

2016-04-05 08:48:05 15084 2

原创 android 触摸手指动作放大和缩小图片

private RelativeLayout root;    private ImageView moveImage;    float lastDestance=-1;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanc

2016-03-29 17:11:07 2371

空空如也

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

TA关注的人

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