自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 资源 (4)
  • 问答 (8)
  • 收藏
  • 关注

原创 leetcode 93. Restore IP Addresses

题目Given a string containing only digits, restore it by returning all possible valid IP address combinations.For example: Given “25525511135”,return [“255.255.11.135”, “255.255.111.35”]. (Order ...

2017-12-20 10:47:05 398

原创 LeetCode3. Longest Substring Without Repeating Characters

题目Given a string, find the length of the longest substring without repeating characters.Examples:Given “abcabcbb”, the answer is “abc”, which the length is 3.Given “bbbbb”, the answer is “b”, with the

2017-11-28 17:40:24 592

原创 Hadoop Yarn初探

前言经过多年的发展形成了Hadoop1.X生态系统,其结构如下图所示: 其mapReduce的结构如下: 从上图中可以清楚的看出原 MapReduce 程序的流程及设计思路: 1. 用户程序 (JobClient) 提交了一个 job,job 的信息会发送到 Job Tracker 中,Job Tracker 是 Map-reduce 框架的中心,他需要与集群中的机器定时通信 (heart

2017-10-06 15:21:50 1062 1

原创 mahout学习之聚类(1)——向量的引入与距离测度

聚类的基本概念聚类就是将一个给定的文档集中的相似项目分成不同簇的过程,可以将簇看作一组簇内相似而簇间有别的项目的集合。 对文档集的聚类涉及以下三件事: 1. 一个算法:将文档集阻止到一起的算法 2. 相似性与不相似的概念 3. 停止的条件聚类数据的表示mahout将输入数据以向量的形式保存,在机器学习领域,向量指一个有序的数列,有多个维度,每个维度都有一个值。比如在二维空间,一个坐标就是一个

2017-10-03 15:04:00 708

原创 mahout学习之推荐算法

推荐的定义推荐算法可以分为三大类,基于用户的,基于物品的和基于内容的,前两者均属于协同过滤的范畴,仅仅通过用户与物品之间的关系进行推荐,无需了解物品自身的属性。而几乎内容的推荐技术很有用,但是必须与特定领域相结合,比如推荐一本书就必须了解书的属性,作者,颜色,内容等等。但是这些知识无法转移到其他领域,比如基于内容的图书推荐就对推荐哪道菜比较好吃毫无用处。 所有mahout对基于内容的推荐涉及很少。

2017-10-02 23:14:55 4147

原创 room的使用-以demo为例

前言本文是以demo为例介绍,所以部分内容和解释会在demo里以注释的形式给出。 下载链接数据库的构建环境配置在app模块的build.gradle添加以下内容: compile 'android.arch.lifecycle:extensions:1.0.0-alpha5' compile 'android.arch.lifecycle:runtime:1.0.0-alpha5'

2017-08-08 10:28:46 2105

原创 微信热修复tinker初探

前言Tinker简介Tinker是微信官方的Android热补丁解决方案,它支持动态下发代码、So库以及资源,让应用能够在不需要重新安装的情况下实现更新。当然,你也可以使用Tinker来更新你的插件。Tinker已知问题1) Tinker不支持修改AndroidManifest.xml,Tinker不支持新增四大组件; 2) 由于Google Play的开发者条款限制,不建议在GP渠道动态更新

2017-07-11 17:08:57 522

原创 Android 点击屏幕其他位置隐藏Floating Action Button

功能要求当用户点击fab的时候,屏幕上的其他区域应该是不可点击的,如果用户点击其他区域,那么就应该收缩fab回到初始状态。 观察一下其他应用: 发现实质点击按钮之后启动了新的fragment,并将背景设置为半透明。具体实现首先,随便找一个fab的开源库:compile 'net.i2p.android.ext:floatingactionbutton:1.9.0'然后,activity里的f

2017-06-28 18:02:27 1056

原创 android7.0下retrofit框架不断GC的问题

问题描述android7.0 环境下启动应用就卡死,日志显示不断的在执行gc操作。 打印栈帧如下: 解决方法由上图可以看到GSON不断的在进行内存分配操作,因为gson是用于json数据转换为类实体的,所以很有可能是转换流程出了问题。找了好久才发现另一个小伙伴往类实体里加了这个成员。。。private FileInputStream response;//获取录音文件流很明显Gson是无法转换这

2017-06-07 20:09:28 802

原创 NDK学习笔记(2)——C与java之间的互相调用

Java调用C在上一篇博文中,我们完成了一个NDK项目的基本配置以及各个文件的功能,现在来写一下其他功能,demo下载在文章末尾。字符串的传递老样子,在MainActivity写一个native方法:public native String stringTransfer(String s);然后鼠标放在方法上按住alt+enter,自动添加了C的相关函数,然后我们改改://需要加这句,表明以下代码是

2017-06-01 15:50:22 556

原创 NDK学习笔记(1)——第一个jni程序

环境配置以Android studio 2.2为例,点击tools->Android->SDKManager。 勾选并下载 CMake、LLDB、NDK: CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性; LLDB:调试本地代码工具; NDK:Andro

2017-05-30 20:24:02 392

原创 JNI所需的C语言知识小结

介绍作为Android开发人员,会java是必须的,但是一般从事android业务逻辑开发的对C/C++的了解估计仅限于大学里不走心的课程。。。所以参考视频和资料小结一下JNI所需的c语言知识~基本数据类型 数据类型 boolean byte char short int long double float void signed unsigned

2017-05-26 14:31:52 334

原创 JNI简介

什么是JNIJNI(java native interface)java本地开发接口,本质上是一种协议,相当于桥梁的作用,通过jni就可以调用C/C++代码,当然也可以用C调用java的代码。 为什么要调用JNI通过jni技术,可以扩展android手机的功能,比如wifi热点比如NFC技术。native coder执行高效,很明显c语言比java语言更节省内存:比如需要大量运算的游戏(极品飞

2017-05-22 17:07:04 377

原创 StringBuilder,String与StringBuffer 的异同

引言根据我在网上查到的资料显示,这三者的区别主要是: String:字符串常量 StringBuffer:字符创变量(多线程) StringBuilder:字符创变量(单线程) 对String的操作表面上看是对同一个变量的操作,但实际上是新建了一个常量,然后修改对象的引用。基于这样的机制,需要不停的GC旧的对象,其效率也很低下。 而StringBuffer与StringBuilder就不一

2017-05-15 20:39:11 317

原创 leetcode110 Balanced Binary Tree

题目Given a binary tree, determine if it is height-balanced.For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ b

2017-05-06 15:35:15 278

原创 leetcode257 Binary Tree Paths

题目Given a binary tree, return all root-to-leaf paths.For example, given the following binary tree: 1 / \2 3 \ 5All root-to-leaf paths are: [“1->2->5”, “1->3”] 需要得到所有从根到叶子结点的路径。解题思路既然是得到路

2017-05-05 21:01:24 239

原创 leetcode118 Pascal's Triangle

题目Given numRows, generate the first numRows of Pascal’s triangle.For example, given numRows = 5, Return[ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1]]生成给定行数的帕斯卡三角形。解题思路利用帕斯卡三角形的性质即可很简单的

2017-05-05 15:27:51 234

原创 java多线程——线程的状态

线程的状态转换如下图所示: 可以参考我的另一篇博客线程状态转换的内容。线程的创建实现Runnable接口这个接口非常简单:@FunctionalInterfacepublic interface Runnable { /** * When an object implementing interface <code>Runnable</code> is used

2017-04-09 15:53:26 588

原创 leetcode413 Arithmetic Slices

题目A sequence of number is called arithmetic if it consists of at least three elements and if the difference between any two consecutive elements is the same.For example, these are arithmetic sequence:1

2017-04-08 15:15:41 517

原创 leetcode538 Convert BST to Greater Tree

题目Given a Binary Search Tree (BST), convert it to a Greater Tree such that every key of the original BST is changed to the original key plus sum of all keys greater than the original key in BST.Example

2017-04-05 20:31:24 734

原创 JVM学习笔记——线程安全与锁优化

线程安全定义:当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的。java语言中的线程安全讨论线程安全有一个前提,即多个线程之间存在共享数据访问。按照线程安全的“安全程度”由强至弱来排序,可以将Java语言中各种操作共享的数据分为以下5类:不可变、 绝

2017-03-20 19:37:25 561

原创 JVM学习笔记——java内存模型与线程(2)

Java与线程并发不一定要依赖多线程(如PHP中很常见的多进程并发),但是在Java里面谈论并发,大多数都与线程脱不开关系。线程的实现线程是比进程更轻量级的调度执行单位,线程的引入,可以把一个进程的资源分配和执行调度分开,各个线程既可以共享进程资源(内存地址、 文件I/O等),又可以独立调度(线程是CPU调度的基本单位)。 对java而言,每个已经执行start()且还未结束的java.lang.

2017-03-17 21:14:54 592

原创 JVM学习笔记——java内存模型与线程(1)

概述多任务处理出现的重要原因是计算机的运算速度与存储及通信子系统的速度差距太大,大量的时间花费在磁盘I/O,数据库访问或者数据库访问上。除了充分利用计算机处理器的能力外,一个服务端同时对多个客户端提供服务则是另一个更具体的并发应用场景,对于计算量相同的,程序并发协调的越有条不紊,效率自然就高,反之线程之间频繁的阻塞甚至死锁,将会大大降低程序的并发能力。硬件的效率以及一致性由于计算机的处理器的运算速度

2017-03-17 20:44:13 650

原创 JVM学习笔记——垃圾收集器与内存分配策略(2)

垃圾收集器java虚拟机规范中并没有对垃圾收集器如何实现有任何规定,因此,不同的厂商,不同版本的虚拟机所提供的垃圾收集器可能会有很大差别,这里只讨论基于JDK1.7之后的HotSpot虚拟机。这个虚拟机包括的收集器如下图所示: 上图展示了7种不同的垃圾收集器,如果两个垃圾收集器中存在连线,就证明这两种垃圾收集器可以搭配使用。它们所处的区域,代表了他们是在新生代还是老年代中使用。Serial收集

2017-03-14 18:29:09 279

原创 JVM学习笔记——垃圾收集器与内存分配策略(1)

概述上一篇文章介绍了java运行时内存的各个区域,其中虚拟机栈,程序计数器,本地方法栈三个区域随线程而生,随线程而灭。栈中的栈帧随着方法的进入和退出有条不紊的执行着出栈与入栈的操作,每一个栈帧分配多少内存基本是类结构确定下来就已知的。因此,这几个区域的内存回收都具有确定性,在这几个区域不必过多的考虑回收的问题,因为方法结束或者线程结束时,内存自然也跟着回收了。 而java堆与方法区不一样,一个接口

2017-03-11 14:21:28 453

原创 JVM学习笔记——Java内存区域与内存溢出异常

运行时数据区域其中,其中Method Area 和 Heap 是线程共享的 ,VM Stack,Native Method Stack 和Program Counter Register 是非线程共享的。JVM初始运行的时候都会分配好 Method Area(方法区) 和Heap(堆) ,而JVM 每遇到一个线程,就为其分配一个 Program Counter Register(程序计数器)

2017-03-08 16:06:57 664

原创 LeetCode202 Happy Number

题目Write an algorithm to determine if a number is “happy”.A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of

2017-02-20 21:50:48 201

原创 LeetCode13 Roman to Integer

题目Given a roman numeral, convert it to an integer.Input is guaranteed to be within the range from 1 to 3999.解题思路罗马数字的规则参考这个。 总结起来就是如果前一位数字大于后一位,就加上其值,小于就减去其值,前提是数字长度大于一。public int romanToInt(String s)

2017-02-19 14:55:37 255

原创 LeetCode409 Longest Palindrome

题目Given a string which consists of lowercase or uppercase letters, find the length of the longest palindromes that can be built with those letters.This is case sensitive, for example “Aa” is not consid

2017-02-16 21:27:26 254

原创 LeetCode169 Majority Element

题目Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.You may assume that the array is non-empty and the majority element alway

2017-02-16 19:51:09 237

原创 LeetCode242 Valid Anagram

题目Given two strings s and t, write a function to determine if t is an anagram of s.For example, s = “anagram”, t = “nagaram”, return true. s = “rat”, t = “car”, return false.Note: You may assume the

2017-02-16 12:58:49 227

原创 LeetCode171 Excel Sheet Column Number

题目Given a column title as appear in an Excel sheet, return its corresponding column number.For example:A -> 1B -> 2C -> 3...Z -> 26AA -> 27AB -> 28方法一可以看作把一个26进制的数转化为十进制,根据公式即可。public int titleT

2017-02-15 21:40:05 266

原创 LeetCode387 First Unique Character in a String

题目Given a string, find the first non-repeating character in it and return it’s index. If it doesn’t exist, return -1.Examples:s = “leetcode” return 0.s = “loveleetcode”, return 2. Note: You may assu

2017-02-15 17:19:35 250

原创 LeetCode349 Intersection of Two Arrays

原题Given two arrays, write a function to compute their intersection. Example: Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2]. Note: Each element in the result must be unique. The result can

2017-02-14 21:27:36 286

原创 Android使用token维持登陆状态

什么是tokentoken(令牌)是一串唯一的字符串,通常由服务端生成,在注册完成时返回给客户端,用来标识此用户,客户端将此字符串存储在本地。在以后的网络请求时,客户端先查询本地的token,如果有则直接使用此令牌进行网络请求,没有则提示未登录,转到登陆注册界面。 此外,还可以在服务端或者客户端添加过期判别机制。token的作用token可以显著减少服务端对用户表的查询,同时使用户不必每次都登陆,

2017-01-19 15:45:39 18098

原创 命题逻辑几道题

题目一一个疯狂的科学家有1000瓶酒,其中一瓶是有毒的。他也有数量有限的试纸,毒酒将永久改变试纸的颜色,但是只在十天后显示出来。这位科学家想在第十一天举行一个聚会,为此需要筛选出有毒的酒。他怎样使用最低数量的试纸找出那瓶毒酒?解题思路看到这个题目的第一眼我在想2^10=1024>1000,那答案是不是10张试纸?好吧答案确实是10,不过需要知其所以然。 我们只需要将瓶子从0编号到1000,然后将十

2017-01-18 22:35:10 917

原创 在viewPager里使用高德地图

在进行一个安卓项目的时候,本想实现一个滑动侧边栏的效果加上一个顶部菜单栏,在网上找到两个源码,结果整合的时候发现无论怎么调整侧边栏始终显示在顶部菜单栏下面,我的本意是想要覆盖掉顶部菜单栏。无奈,百度解决方案。 在stackoverflow看到有位仁兄遇到了和我一样的问题,而上面的人是这么解释的。 Switch away from action bar tabs, perhaps to ViewP

2017-01-17 21:51:42 2693

原创 Android拍照或者选取本地图片

总体流程 从selectPhotoActivity中启动图册或者相机,再根据获取的uri进行裁剪,返回uri,再对这个uri执行一系列操纵。从相册选取图片private void pickPhoto() { Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaSto

2017-01-17 17:41:19 3238 1

翻译 分配问题与匈牙利算法

分配问题与匈牙利算法例1假如你是个玩具工厂的销售经理,你现在有三个销售人员要去不同城市见买家。你的销售人员分别在在奥斯丁,得克萨斯州;波士顿、马里兰州;和芝加哥,伊利诺伊州。你想让他们飞往其他三个城市:丹佛,埃德蒙顿,法戈。下面的表格显示了这些城市之间飞机票的费用.。 From \ To Denver Edmonton Fargo Austin 250 400 350

2017-01-17 16:13:28 19514 2

原创 隐藏某一控件结果多个控件隐藏的原因

从事安卓开发,往往需要切换页面时yin

2014-11-05 21:32:11 679

room数据库框架的demo

room数据库框架的demo

2017-08-08

roomTestDemo

room ORM框架的小demo

2017-08-07

floating action button的demo

floating action button的demo

2017-06-28

JNITestDemo

自己写的Android JNI开发的示例demo

2017-06-01

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

TA关注的人

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