自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Linroid的博客

Talk is cheap,show me the code.

  • 博客(45)
  • 资源 (15)
  • 收藏
  • 关注

原创 Windows环境使用CMake编译 opencv3.3.0 && opencv_contrib3.3.0

opencv 从3.0.0开始不在提供合并的库,而是将原先合并的库分开为两个库,分别是:核心功能库和拓展功能库。而核心库依然提供Android开发所需要的静态库支持,但是如果需要用到最近大红大紫的人工智能相关功能,必然用到扩展功能库提供的诸如人脸识别等功能,所以需要我们手动CMake生成Android所需要的静态库,这里主要讲如何生成操作,生成我们需要的静态库。 这里顺便吐槽一下,使用ca

2017-09-05 15:19:10 3108 2

原创 Ubuntu 16.0.4 配置Caffe 图文记录

Ubuntu 16.0.4 配置Caffe 图文记录工具准备sudo apt-get updatesudo apt-get upgrade sudo apt-get install -y build-essential sudo apt-get install -y cmake sudo apt-get install -y git sudo apt-get install -y pkg-conf

2017-09-01 19:39:46 730

原创 TensorFlow 搭建mnist项目

TensorFlow 搭建mnist项目 每当学习一种编程语言,总是从HelloWord开始,TensorFlow的HelloWord就是经典的MNIST项目。项目准备下载训练数据和测试数据THE MNIST DATABASE of handwritten digits 这个官网上面给出了训练数据和测试数据集,请分别把下面的四个文件下载到本地。train-images-idx3-ubyte

2017-08-30 19:17:41 583

原创 TensorFlow 教程入门

TensorFlow 教程入门前一节TensorFlow cpu only 安装记录完成,接下来带你尝鲜TensorFlow,本文也是学习TensorFlow的入门文章。 运行环境:PyCharm 类库: numpy tensorflow OS: Ubuntu 16.0.4栗子的简要说明:给定两组行向量,x1 x2,由这两个行向量x1,x2组成的2*100数组x = ( x1 x

2017-08-30 19:16:17 4500

原创 TensorFlow cpu-only 安装记录

TensorFlow cpu only 安装记录这里简单记录一下安装TensorFlow的步骤,环境为Ubuntu16.0.4,以供参考。基础工具准备Python安装完Ubuntu16.0.4以后,python默认已经安装好了,验证一下是否安装,如果没有安装需要自己手动安装一下即可python -V如果已经安装,会显示当前的python版本,这里使用的是2.7版本,如果没有安装可以通过以下命令安装s

2017-08-30 19:11:23 2482

转载 深入理解Java序列化

什么是Java对象序列化Java平台允许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长。但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java对象序列化就能够帮助我们实现该功能。使用Java对象序列化,在保存对象时,会把其状态保存为一组字节

2016-06-16 16:51:20 484

原创 Protocol Buffers 浅析

简介 Protocol Buffers(简称protobuf)是谷歌的一项技术,用于将结构化的数据序列化、反序列化,经常用于网络传输。 这货实际上类似于XML生成和解析,但protobuf的效率高于XML,不过protobuf生成的是字节码,可读性比XML差。类似的还有json、Java的Serializable等。 详细了解可以参考Protocol Buffers,接下类将介绍一些

2016-05-27 15:32:27 574

原创 MVX Android设计架构浅析

MV“X”基本概念 M:Model —— 模型:数据存取、处理 V:View —— 视图:UI界面显示、交互 C: Controller——控制器:逻辑控制、处理 P: Presenter——引荐者:逻辑处理、视图更新 VM:ViewModel——视图模型:逻辑处理、双向绑定MV“X”历史MVC 80年代Smalltalk-80出现的一种软件设计模式,后来得到了广泛

2016-04-26 11:45:11 1443

原创 MVX Android设计架构浅析-MVC

简述在Android开发中,比较流行的开发框架模式采用的是MVC框架模式,采用MVC模式的好处是便于UI界面部分的显示和业务逻辑,数据处理分开。那么Android项目中哪些代码来充当M,V,C角色呢?Module层:适合做一些业务逻辑处理,比如数据库存取操作,网络操作,复杂的算法,耗时的任务等都在model层处理。View层:应用层中处理数据显示的部分,XML布局可以视为V层,显示Model层的

2016-04-26 11:44:36 736

原创 MVX Android设计架构浅析-MVP

简介MVX Android设计架构浅析-MVC 读过这篇文章以后,应该对MVC框架有个大概的了解,这也是大部分Android应该的常用框架,但是这种框架给人的感觉更像是 View-Module框架,因为View层的确没有显现出来,而且View和Module的耦合度较高,到最后会像下图一样,业务逻辑和View展现紧密耦合在一起,相互交错,随着项目的壮大以后很难维护。这么复杂的交互基本集中在Activi

2016-04-26 11:43:58 865

原创 MVX Android设计架构浅析-MVVM

简介读过MVX Android设计架构浅析的童鞋应该还记得2005年微软工程师John Gossman在自己的博客上首次公布了MVVM模式。时隔10年之久才在Android活跃起来,究其原因是之前Android并不支持Data-binding,所以在了解MVVM之前很有必要对Data-binding有个充分的认识。当然这里不是重点,所以不再深究。那么MVVM和前篇博客中介绍的MVX Android设

2016-04-26 11:43:17 1326

原创 Android 在线热修复框架 AndFix 初步

AndFix工作流程关于AndFix的基本使用和使用流程在AndFix官方Github上已经说的比较详细,这里提取一下基本的修复流程,帮助初次使用者快速的使用AndFix,下面是简要流程图。上面的流程不细说,接下来看看github上Download下来的代码导入Eclipse,对于Android Studio导入不再给出。AndFix Demo导入Android工程 解压,导入Android工程

2016-03-03 10:03:04 887

原创 Android Dex 64k Method Size Limit

问题Android 开发一年以上或者更久,大部分会遇到如下问题:64K Unable to execute dex: method ID not in [0, 0xffff]: 65536 Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536 Lin

2015-11-04 15:58:30 922

原创 Android 绘制虚线

简单需求先来看看这么一个需求 水平虚线如果需要完成上面的水平虚线,可以这样处理。声明shape,其中dashGap是虚线的间隔宽度,dashWidth是实线的间隔宽度,stroke翻译过来是名词,画<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/and

2015-10-26 15:20:11 3422

原创 Android 多渠道打包方案问题记录及解决方案

[Android 多渠道打包方案][1] 中已经介绍了基本的思路和基本的源代码,这里给出实践过程出现的问题和解决思路。首先如果你没有使用上篇博客中给出的Python脚本,而是自己写了shell脚本或者其他脚本,如果实现思路如下:

2015-09-10 20:57:20 1871

原创 Java设计模式 - 装饰器模式

前一节已经介绍了Java设计模式 – 适配器/装饰器模式 ,因为一笔带过,所以这里再补充一下。关于装饰器模式,在具体的Android源码中 比较常见,一般都是以Wrapper作为结尾比较典型的是ContextWrapper,这里篇幅有限,暂不做解析,文章后面会出给UML图做个简单理解。我们不从最基本的装饰器模式概念入手,先来看问题好了。提出问题假如 有以下海关入关通用处理方法public class

2015-09-07 09:15:30 608

原创 Java设计模式 -- 适配器模式

我们先来明确一下 适配器模式有三种,分别是 类适配器模式、对象适配器模式、接口适配器模式。接下来不打算直接看这些模式的定义以及实例源码,我们直接从问题出发。假如有如下类public class ViewController { public void getView() { System. out.println("This is Original getView() met

2015-09-07 09:13:08 478

原创 Android 热更新——非侵入AOP框架

Android 客户端应用上线以后,一旦出现Bug,一般的解决思路是发修复包升级应用,这种方式不仅耗时,更重要的是用户需要频繁的升级版本,体验不好,所以优化的思路是在不发版本的情况下热更新,以期提高用户体验。近期GitHub新出一种非侵入运行期AOP框架Dexposed, 下面简单了解一下这个框架,GitHub地址。简要说明:该框架基于AOP思想,支持经典的AOP使用场景,可应用于日志记录,性能统

2015-08-29 15:49:33 1533

原创 Java设计模式 -- Singleton模式

我们先来看看网上比较流行的几种单例模式:非线程安全public class Singleton { private Singleton() {} private static Singleton single=null; public static Singleton getInstance() { if (single == null) {

2015-08-26 15:29:46 722

翻译 Fragment Commit 异常处理

自从Honeycomb发布后,像下面这个栈信息经常会在StackOverFlow中出现java.lang.IllegalStateException: Can not perform this action after onSaveInstanceStateat android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentMa

2015-08-24 22:27:24 1898

原创 Android requestLayout 和 invalidate

这两个方法很多人 搞不太清楚,这里小结一下:View的流程图 对于标题提及的两个方法 调用invalidate()或者requestLayout()会触发哪些方法,一图道破天机。源代码现在来看看具体的代码: android.view.ViewRootImpl@Overridepublic void requestLayout() { if (!mHandlingLayoutInLayou

2015-07-20 21:54:05 2025 1

原创 Android Image Loader 第三方库对比测试

预热知识测试前,我们需要先明白这样一个问题 Java Heap / Native Heap 各自代表什么? Bitmap 到底是分配在Java heap上 还是分配到了Native heap上 Java Heap 大小一般是多大,有限制吗? Native Heap大小一般是多大,有限制吗? Java OOM 一般是发生在什么时候,和Java Heap有关还是和 Nativ

2015-07-19 23:00:30 2421 1

原创 Android ListView 多种布局--初步

提出问题先看下面这个ListView该如何实现上面这个需求?解决问题我们知道ListView数据绑定类BaseAdapter有个getItemViewType,这个方法完全满足上面的要求,下面写个简单的Demo实现上面的需求。定义主UI R.layout.activity_listview_type<?xml version="1.0" encoding="utf-8"?><LinearLay

2015-06-29 23:15:07 1738

原创 Handler 详解

这个详解基本小结了Handler的使用和相关的知识,在了解这些知识前,我们先来看看这些问题.Handler 是什么?子线程更新UI有几种典型方式,这些方式本质上是什么样的?子线程真的不能更新UI吗?HandlerThread是什么?主线程和子线程之间如何相互通信?好了,如果上面的问题,你能对答如流,并且深知其中的原理那么没有必要继续看下去了,反之,就该好好补补了(^o^)/~。Handle

2015-06-22 13:41:55 6671 2

原创 Android 坐标常识

大部分Android开发人员都对View的坐标感到有点迷茫,尤其是初学自定义View的同学,这里博主和同学们一起来学习一下自定义View开发中用到的必不可少的Android坐标问题:View 坐标废话少说,先上图:上面这个图就是Android的系统坐标,它和笛卡尔坐标Y轴方向正好是反的,而X轴方向相同,当屏幕内容显示不下的时候,会超出一屏,于是就出现了ScrollView,在该类的父类View中有个

2015-06-14 22:29:56 1139

原创 Android 获取View的高度和宽度

View宽高值为什么是0如果我们想获取View的高度和宽度,通过在onCreate()或者onStart()或者onResume()等生命周期中直接获取,像下面这样处理会获取到View的高度吗?package com.wjj.imagepull;import android.app.Activity;import android.os.Bundle;import android.util.Log

2015-06-14 15:43:31 2094

原创 Java 并发编程框架(一)

Java 并发编程框架(一)在Java1.5之前,编写多线程并非易事,那么编写多线程为啥不想想象的那么简单,为什么需要线程池?先来回答这个问题。Why Thread Pool在Java中,如果每当一个请求到达就创建一个新线程,开销是相当大的。在实际使用中,每个请求创建新线程的服务器在创建和销毁线程上花费的时间和消耗的系统资源,甚至可能要比花在实际处理实际的用户请求的时间和资源要多的多。除了创建和销毁

2015-06-02 10:42:38 955

原创 Java 排序算法

Java 排序算法在讨论排序算法之前,先来看一个问题:从根目录查找某个文件,要用非递归的方式 (为神马不用递归方式?),下面给出程序截图: 图片来自博客:http://blog.csdn.net/wangchun8926/article/details/8680219接下来我们不打算详细的讨论典型的排序算法,比如快速排序、归并排序、堆排序、插入排序、冒泡排序等等,对于这些排序算法已经有很好的博客可

2015-06-02 10:42:29 722

原创 Java 并发编程框架(二)

Java 并发编程框架(二)在基本了解了并发线程的主要类以后(如果你对这些类没有基本的概念,请阅读Java 并发编程框架(一)) 这篇文章会对前一篇文章提及的主要类做进一步说明CompletionServiceCompletionService究竟是什么,如果一开始很难理解它,那么我们可以通过一个Demo来模仿一下ExecutorCompletionService这个实现类Case.Java 测试

2015-06-02 10:41:43 639

转载 Java 序列化

Java 序列化标记接口 public interface Serializable{}正如你看到的,序列化就是这么简单,这个简单的外观,却隐藏着巨大的知识点什么是序列化Java的”对象序列化”能让你将一个实现了Serializable接口的对象转换成byte流,这样日后要用这个对象时候,你就能把这些byte数据恢复出来,并据此重新构建那个对象了。为什么要序列化简单说就是为了保存在内存中的各种对象的

2015-06-02 10:40:02 514

转载 JavaScript 闭包初步

JavaScript 闭包初步内部类我们先从一个基本的内部类开始function outerFn() { document.write("Outer function<br/>"); function innerFn() { document.write("Inner function<br/>"); }}假如我们想在outerFn()外调用innerFn(

2015-06-02 10:38:35 480

原创 String 算法

String 算法题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 分析:这道题是2006年google的一道笔试题。#include <stdio.h>#include <stdlib.h>int main(int argc, char *argv[]){ int i = 0; char* str = "abaccdeff"; int ch[25

2015-06-02 10:35:01 589

转载 树的层序遍历

树的层序遍历我们先来看一下这道面试题目二叉树结点的定义如下:struct BinaryTreeNode{ int m_nValue; BinaryTreeNode *m_pLeft; BinaryTreeNode *m_pRight;};从上到下打印二叉树的规律: 每一次打印一个结点的时候,如果该结点有子结点,则把该结点的子结点放到一个队列的末

2015-06-02 10:34:18 620

翻译 Android 代码优化

Android 代码优化有这样一个话题在 StackOverflow: 上提起过: What is the best way to retain active objects—such as running Threads, Sockets, and AsyncTasks—across device configuration changes?简单的说: AnsyncTask & Socket

2015-06-01 21:34:42 683

原创 Android BroadCast (一)

Android BroadCast (一)我们先来看看网络上对BroadCast较为普遍的看法:到底怎么看待BroadCast 如果需要完成一项比较耗时的工作 , 应该通过发送 Intent 给 Service, 由 Service 来完成 . 这里不能使用子线程来解决 , 因为 BroadcastReceiver 的生命周期很短 , 子线程可能还没有结束 BroadcastReceiv

2015-06-01 21:29:20 487

原创 Android BroadCast (二)

Android BroadCast (二)Android BroadCast (一) 揭开了关于BroadCast网络上普遍的误解,这里进一步对BroadCast发送的两种方式做基本的介绍:Application”广域网”广播先看代码:getActivity().sendBroadcast(new Intent("Action")); 假如这个是在Fragment中的一处代码,我们顺着这个代码

2015-06-01 21:27:04 545

翻译 Android 序列化比对

Android 序列化比对 在Android中使用序列化,无非两种途经: Parcelable 和 Serializable两者区别Serializable的作用是为了保存对象的属性到本地文件、数据库、网络流、rmi以方便数据传输,当然这种传输可以是程序内的也可以是两个程序间的。Parcelable的设计初衷是因为Serializable效率过慢,为了在程序内不同组件间以及不同Androi

2015-06-01 21:26:42 675

转载 Android 进程间通信IPC_AIDL

Android 进程间通信IPC_AIDLAIDL概念 AIDL (Android Interface Definition Language) 是一种IDL 语言,用于生成可以在Android设备上两个进程之间进行进程间通信(interprocess communication, IPC)的代码。如果在一个进程中(例如Activity)要调用另一个进程中(例如Service)对象的操作,就可以

2015-06-01 21:26:06 501

原创 Android 启动模式

Android 启动模式首先我们来认识一下App和进程的关系 众所周知,Android下有四大组件:Activity、Service、Receiver、ContentProvider。一般开发一个应用程序,会包含多个Android组件,所以应用程序是一组组件的集合,而进程则是运行这些组件的载体。由上面的描述,我们知道,App仅仅是静态的概念,它把Android的四大组件打包在一起,而事实上Ap

2015-06-01 21:24:15 743

原创 Android View 分析(上)

Android View 分析(上)Set ContentView做Android开发,在Activity中最熟悉的莫过于这么一个方法:@Overridepublic void onActivityCreated(Bundle savedInstanceState){ setContentView(R.layout.activity_main);}不妨追踪setContentView下

2015-06-01 21:19:22 716

知识图谱构建工具Protege

https://protege.stanford.edu/products.php#desktop-protege 官网不容易下载,这里提供一个,方便下载不了的同学。

2018-12-10

word2vec-中的数学原理详解.pdf

word2vec 中的数学原理详解,由于CSDN上的文章作者仅仅贴了图片,不方便读者打印查阅,这里给出了可以直接打印的pdf文档,供读者查阅和收藏。 CSDN上文章链接:http://www.cnblogs.com/peghoty/p/3857839.html 最后,再次感谢这篇文章的作者,使我们小白少走弯路,可以说是目前最好的word2vec入门教材。

2018-09-30

THE MNIST DATABASE of handwritten digits

The MNIST database of handwritten digits, available from this page, has a training set of 60,000 examples, and a test set of 10,000 examples. It is a subset of a larger set available from NIST. The digits have been size-normalized and centered in a fixed-size image. It is a good database for people who want to try learning techniques and pattern recognition methods on real-world data while spending minimal efforts on preprocessing and formatting.

2017-09-29

opencv&&opencv_contrib3.3.0-armeabi

opencv _contrib 3.3.0 编译好的静态文件。可以供Android arm 平台直接使用。这里是opencv core和contrib 合并的静态文件。

2017-09-05

xfeatures2d 编译需要的依赖文件

xfeatures2d 编译需要的依赖文件, 这些文件原则上,cmake配置好以后,可以在本地cache目录中找到,如果没有的话,可以将上面的压缩包下载以后解压,将前缀去掉,并复制到对应的xfeatures2d/src目录下即可解决编译出错问题。

2017-09-05

apache-ant-1.10.1

CMake编译环境搭建Ant工具,压缩包,直接解压后,添加path环境变量即可。如果不明白如何添加环境变量,可以自行百度。

2017-09-05

JsonCpp解析\u中文乱码_修改源码_完美解决

jsoncpp解析\u中文解析不出来,修改源码jsoncpp-0.6.0-rc2 完美解决问题。

2014-03-15

智能电话本管理SPBMA程序

使用Microsoft VC2010[注1]等开发工具以C或C++为基础,在X86 PC机平台上开发智能电话本管理程序SPBMA(Smart Phone Book Manager Application),该程序需要在PC机平台上模拟出手机电话本(名片夹、通讯录)中的用户界面和功能。

2011-06-25

智能电话本管理SPBMA

基于MFC开发的智能电话本管理程序SPBMA(Smart Phone Book Manager Application)

2011-06-25

和我一起做Linux静态库

在Linux系统中,静态库以一种称为archive的特殊文件格式存放在磁盘中,静态库对于链接十分重要,其重要性对于编译器开发人员无疑显而易见,下面以一个及其简单的程序为例,和大家一起来初始Linux下的静态库。

2011-06-25

和我一起做Linux动态库

在Linux系统中,静态库以一种称为archive的特殊文件格式存放在磁盘中,静态库简化了我们的工作,在编译程序员工作中 十分重要,虽然静态库有其自身的重要性,但是与动态库相比,还是存在许多缺点,比如:静态库和所有的软件一样,需要定期维护和更新。如果一个应用程序员想要使用一个库的最新版本,他们必须以某种方式了解到该库的更新情况,然后显示的将他们的程序与新的库重新链接。当然缺点还有许多,所以接下来我们来一起看看Linux的动态库如何。

2011-06-25

跟我一起自动生成Makefile

在较大项目中, 如果手动维护Makefile, 那将是一件复杂并痛苦的事情. 那么, 有没有一种轻松的手段生成Makefile呢? autotools系列工具正是在这样的呼声中诞生的. 它只需用户输入简单的目标文件, 依赖文件, 文件目录等就可以轻松地生成Makefile了. 另外, 这些工具还可以完成系统配置信息的收集, 从而可以方便地处理各种移植性问题.

2011-06-25

Linux配置tftp服务器

在配置Linux服务器之前,需要首先安装tftp-sever,这里一步一步教你如何配置tftp—several。

2011-06-25

Linux 内核配置与编译

Linux & ARM 嵌入式开发内核配置与编译,全部测试通过。

2011-06-25

Win7 下如何配置android开发环境

这是本人实战的宝贵经验,网络上关于xp下如何配置android的开发环境非常的多,可是对于win7下却少的可怜,并且大部分都是没有针对性,本文十分详细的介绍了 如何在win7下配置android开发环境,具有十分高的借鉴价值

2011-06-25

空空如也

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

TA关注的人

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