自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

林蛋凡的专栏

兵者,诡道也

  • 博客(34)
  • 资源 (2)
  • 问答 (2)
  • 收藏
  • 关注

原创 Android实现OCR文字识别并且转换为Excel、PDF格式输出

由于最近有一个项目有需要用到拍照识别字体,且将识别后的字体转换为对应的Excel,Word,PDF格式的文本输出,所以特地去网上搜集了很多资料来制作,但是网上的资料很少有写到如何在手机端实现OCR技术,即使有实现的人,也不会给出一个很全面的源码,所以小弟特地花了点时间去实现该技术,测试可用后记录下步骤,以备以后查看。 后面我会将我的Demo链接也给出,供大家下载互相交流前期准备因为使用的是文字

2015-05-23 00:50:43 5863 9

原创 GSON转换报错

关于GSON转换时的JsonSyntaxException错误com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $今天在做Android接收服务器回馈的数据转义的时候突然报了如下的错误:

2015-03-23 10:34:11 6361

原创 Android 之 TranslateAnimation类:位移动画类

Android中提供了4中动画: AlphaAnimation 透明度动画 ScaleAnimation 缩放动画 TranslateAnimation 位移动画 RotateAnimation 旋转动画因为这次有使用到TranslateAnimation,所以这次先讲TranslateAnimation。android.view.animation 类 Trans

2015-03-14 16:45:12 15256 2

转载 Java线程:新特征-障碍器

Java5中,添加了障碍器类,为了适应一种新的设计需求,比如一个大型的任务,常常需要分配好多子任务去执行,只有当所有子任务都执行完成时候,才能执行主任务,这时候,就可以选择障碍器了。障碍器是多线程并发控制的一种手段,用法很简单。下面给个例子:import java.util.concurrent.BrokenBarrierException; import java.util.concurrent

2015-03-13 14:59:50 428

转载 Java线程:新特征-原子量

所谓的原子量即操作变量的操作是“原子的”,该操作不可再分,因此是线程安全的。为何要使用原子变量呢,原因是多个线程对单个变量操作也会引起一些问题。在Java5之前,可以通过volatile、synchronized关键字来解决并发访问的安全问题,但这样太麻烦。 Java5之后,专门提供了用来进行单变量多线程并发安全访问的工具包java.util.concurrent.atomic,其中的类也很简单。

2015-03-13 14:56:38 367

转载 Java线程:新特征-条件变量

条件变量是Java5线程中很重要的一个概念,顾名思义,条件变量就是表示条件的一种变量。但是必须说明,这里的条件是没有实际含义的,仅仅是个标记而已,并且条件的含义往往通过代码来赋予其含义。这里的条件和普通意义上的条件表达式有着天壤之别。条件变量都实现了java.util.concurrent.locks.Condition接口,条件变量的实例化是通过一个Lock对象上调用newCondition()方

2015-03-13 14:53:18 436

转载 Java线程:新特征-阻塞栈

对于阻塞栈,与阻塞队列相似。不同点在于栈是“后入先出”的结构,每次操作的是栈顶,而队列是“先进先出”的结构,每次操作的是队列头。这里要特别说明一点的是,阻塞栈是Java6的新特征。、Java为阻塞栈定义了接口:java.util.concurrent.BlockingDeque,其实现类也比较多,具体可以查看JavaAPI文档。下面看一个简单例子:import java.util.concurren

2015-03-13 14:50:45 440

转载 Java线程:新特征-阻塞队列

阻塞队列是Java5线程新特征中的内容,Java定义了阻塞队列的接口java.util.concurrent.BlockingQueue,阻塞队列的概念是,一个指定长度的队列,如果队列满了,添加新元素的操作会被阻塞等待,直到有空位为止。同样,当队列为空时候,请求队列元素的操作同样会阻塞等待,直到有可用元素为止。有了这样的功能,就为多线程的排队等候的模型实现开辟了便捷通道,非常有用。java.util

2015-03-13 14:49:48 408

转载 Java线程:新特征-信号量

Java的信号量实际上是一个功能完毕的计数器,对控制一定资源的消费与回收有着很重要的意义,信号量常常用于多线程的代码中,并能监控有多少数目的线程等待获取资源,并且通过信号量可以得知可用资源的数目等等,这里总是在强调“数目”二字,但不能指出来有哪些在等待,哪些资源可用。因此,本人认为,这个信号量类如果能返回数目,还能知道哪些对象在等待,哪些资源可使用,就非常完美了,仅仅拿到这些概括性的数字,对精确控制

2015-03-13 14:47:02 341

转载 Java线程:新特征-锁(下)

在上文中提到了Lock接口以及对象,使用它,很优雅的控制了竞争资源的安全访问,但是这种锁不区分读写,称这种锁为普通锁。为了提高性能,Java提供了读写锁,在读的地方使用读锁,在写的地方使用写锁,灵活控制,在一定程度上提高了程序的执行效率。Java中读写锁有个接口java.util.concurrent.locks.ReadWriteLock,也有具体的实现ReentrantReadWriteLock

2015-03-12 23:04:50 373

转载 Java线程:新特征-锁(上)

在Java5中,专门提供了锁对象,利用锁可以方便的实现资源的封锁,用来控制对竞争资源并发访问的控制,这些内容主要集中在java.util.concurrent.locks 包下面,里面有三个重要的接口Condition、Lock、ReadWriteLock。 col 3 is Condition 将 Object 监视器方法(wait、notify 和 notifyAll)分解成截

2015-03-12 23:03:10 376

转载 Java线程:新特征-有返回值的线程

在Java5之前,线程是没有返回值的,常常为了“有”返回值,破费周折,而且代码很不好写。或者干脆绕过这道坎,走别的路了。现在Java终于有可返回值的任务(也可以叫做线程)了。可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口。执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了。下

2015-03-12 22:54:36 326

转载 Java线程:新特征-线程池

Sun在Java5中,对Java线程的类库做了大量的扩展,其中线程池就是Java5的新特征之一,除了线程池之外,还有很多多线程相关的内容,为多线程的编程带来了极大便利。为了编写高效稳定可靠的多线程程序,线程部分的新增内容显得尤为重要。有关Java5线程新特征的内容全部在java.util.concurrent下面,里面包含数目众多的接口和类,熟悉这部分API特征是一项艰难的学习过程。目前有关这方面的

2015-03-12 22:52:42 362

转载 Java线程:volatile关键字

Java线程:volatile关键字Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时它更简单并且开销更低),而且其使用也更容易出错。谈及到volatile关键字,不得不提的一篇文章是:《Java 理论与实践: 正确使用 Volatile 变量》,这篇文章对volatile

2015-03-12 22:46:41 381

转载 Java线程:并发协作-死锁

Java线程:并发协作-死锁线程发生死锁可能性很小,即使看似可能发生死锁的代码,在运行时发生死锁的可能性也是小之又小。发生死锁的原因一般是两个对象的锁相互等待造成的。在《Java线程:线程的同步与锁》一文中,简述死锁的概念与简单例子,但是所给的例子是不完整的,这里给出一个完整的例子。/** * Java线程:并发协作-死锁 * * @author Administrator 2009-11-4

2015-03-12 22:43:38 377

转载 Java线程:并发协作-生产者消费者模型

Java线程:并发协作-生产者消费者模型对于多线程程序来说,不管任何编程语言,生产者和消费者模型都是最经典的。就像学习每一门编程语言一样,Hello World!都是最经典的例子。实际上,准确说应该是“生产者-消费者-仓储”模型,离开了仓储,生产者消费者模型就显得没有说服力了。 对于此模型,应该明确一下几点: 1、生产者仅仅在仓储未满时候生产,仓满则停止生产。 2、消费者仅仅在仓储有产品时候才

2015-03-12 22:41:45 394

转载 Java线程:线程的同步-同步块

Java线程:线程的同步-同步块对于同步,除了同步方法外,还可以使用同步代码块,有时候同步代码块会带来比同步方法更好的效果。追其同步的根本的目的,是控制竞争资源的正确的访问,因此只要在访问竞争资源的时候保证同一时刻只能一个线程访问即可,因此Java引入了同步代码快的策略,以提高性能。在上个例子的基础上,对oper方法做了改动,由同步方法改为同步代码块模式,程序的执行逻辑并没有问题。/** * Ja

2015-03-12 22:35:21 333

转载 Java线程:线程的同步-同步方法

Java线程:线程的同步-同步方法线程的同步是保证多线程安全访问竞争资源的一种手段。 线程的同步是Java多线程编程的难点,往往开发者搞不清楚什么是竞争资源、什么时候需要考虑同步,怎么同步等等问题,当然,这些问题没有很明确的答案,但有些原则问题需要考虑,是否有竞争资源被同时改动的问题?在本文之前,请参阅《Java线程:线程的同步与锁》,本文是在此基础上所写的。对于同步,在具体的Java代码中需要完

2015-03-12 22:33:35 344

转载 Java线程:线程的调度-守护线程

Java线程:线程的调度-守护线程守护线程与普通线程写法上基本么啥区别,调用线程对象的方法setDaemon(true),则可以将其设置为守护线程。守护线程使用的情况较少,但并非无用,举例来说,JVM的垃圾回收、内存管理等线程都是守护线程。还有就是在做数据库应用时候,使用的数据库连接池,连接池本身也包含着很多后台线程,监控连接个数、超时时间、状态等等。setDaemon方法的详细说明:public

2015-03-12 22:32:18 348

转载 Java线程:线程的调度-让步

Java线程:线程的调度-让步线程的让步含义就是使当前运行着线程让出CPU资源,但是然给谁不知道,仅仅是让出,线程状态回到可运行状态。线程的让步使用Thread.yield()方法,yield() 为静态方法,功能是暂停当前正在执行的线程对象,并执行其他线程。/** * Java线程:线程的调度-让步 * * @author leizhimin 2009-11-4 9:02:40 */ p

2015-03-12 22:28:34 333

转载 Java线程:线程的调度-合并

Java线程:线程的调度-合并线程的合并的含义就是将几个并行线程的线程合并为一个单线程执行,应用场景是当一个线程必须等待另一个线程执行完毕才能执行时可以使用join方法。join为非静态方法,定义如下:void join() 等待该线程终止。 void join(long millis) 等待该线程终止的时间最长为 millis 毫秒。 void jo

2015-03-12 22:28:17 297

转载 Java线程:线程的调度-优先级

Java线程:线程的调度-优先级与线程休眠类似,线程的优先级仍然无法保障线程的执行次序。只不过,优先级高的线程获取CPU资源的概率较大,优先级低的并非没机会执行。线程的优先级用1-10之间的整数表示,数值越大优先级越高,默认的优先级为5。在一个线程中开启另外一个新线程,则新开线程称为该线程的子线程,子线程初始优先级与父线程相同。/** * Java线程:线程的调度-优先级 * * @autho

2015-03-12 22:25:22 331

转载 Java线程:线程的调度-休眠

Java线程调度是Java多线程的核心,只有良好的调度,才能充分发挥系统的性能,提高程序的执行效率。这里要明确的一点,不管程序员怎么编写调度,只能最大限度的影响线程执行的次序,而不能做到精准控制。线程休眠的目的是使线程让出CPU的最简单的做法之一,线程休眠时候,会将CPU资源交给其他线程,以便能轮换执行,当休眠一定时间后,线程会苏醒,进入准备状态等待执行。线程休眠的方法是Thread.sleep(l

2015-03-12 22:23:53 290

转载 Java线程:线程的交互

线程交互是比较复杂的问题,SCJP要求不很基础:给定一个场景,编写代码来恰当使用等待、通知和通知所有线程。一、线程交互的基础知识SCJP所要求的线程交互知识点需要从java.lang.Object的类的三个方法来学习:void notify() 唤醒在此对象监视器上等待的单个线程。 void notifyAll() 唤醒在此对象监视器上等待的所有

2015-03-12 22:22:32 289

转载 Java线程:线程的同步与锁

一、同步问题提出线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏。 例如:两个线程ThreadA、ThreadB都操作同一个对象Foo对象,并修改Foo对象上的数据。public class Foo { private int x = 100; public int getX() { return x; } public int

2015-03-12 22:15:16 330

转载 Java线程:线程状态的转换

一、线程状态线程的状态转换是线程控制的基础。线程状态总的可分为五大状态:分别是生、死、可运行、运行、等待/阻塞。用一个图来描述如下:1、新状态:线程对象已经创建,还没有在其上调用start()方法。2、可运行状态:当线程有资格运行,但调度程序还没有把它选定为运行线程时线程所处的状态。当start()方法调用时,线程首先进入可运行状态。在线程运行之后或者从阻塞、等待或睡眠状态回来后,也返回到可运行状态

2015-03-12 22:11:17 336

转载 Java线程:线程栈模型与线程的变量

要理解线程调度的原理,以及线程执行过程,必须理解线程栈模型。 线程栈是指某时刻时内存中线程调度的栈信息,当前调用的方法总是位于栈顶。线程栈的内容是随着程序的运行动态变化的,因此研究线程栈必须选择一个运行的时刻(实际上指代码运行到什么地方)。下面通过一个示例性的代码说明线程(调用)栈的变化过程。这幅图描述在代码执行到两个不同时刻1、2时候,虚拟机线程调用栈示意图。当程序执行到t.start();时候

2015-03-12 22:03:36 324

转载 Java线程:创建与启动

一、定义线程1、扩展java.lang.Thread类。此类中有个run()方法,应该注意其用法: public void run() 如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。Thread 的子类应该重写该方法。 2、实现java.lang.Runnable接口。void run() 使用实

2015-03-12 21:59:44 447

转载 Java线程:概念与原理

一、操作系统中线程和进程的概念现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。线程是指进程中的一个执行流程,一个进程中可以运行多个线程。比如java.exe进程中可以运行很多线程。线程总是属于某个进程,进程中的多个线程共享进程的内存

2015-03-12 21:54:59 350

原创 Android和Java各种线程的区别和认识

线程是程序中一个单一的顺序控制流程。进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。在单个程序中同时运行多个线程完成不同的工作,称为多线程。那么线程有哪几种呢? 我整理出来有关于Java和Android线程的大概是这些:守护线程(DaemonThread)用户线程(UserThread)HandlerHandlerThreadAsync

2015-03-09 22:38:47 612

转载 Handler sendMessage 与 obtainMessage (sendToTarget)比较

话说在工作中第一次接触android 的Handler 的时候,不知道怎么去关注性能。记得当时这么写的:Message msg = new Message()msg.what = xxx;msg.arg1 = xxx;msg.arg2 = xxx;handler.sendMessage(msg);这样写也没有绝得不好,反正当时项目的功能实现了。(性能上还可以)后来没事的时候看了看hand

2015-03-05 09:28:48 437

转载 程序猿也需要提高情商

提高情商的8种方法我们无法预定智商,却可以提高情商,一个杰出的人未必有着高智商,却一定有着高情商。提高情商其实有着简而易行的方法,你需要的就是坚持。1. 学会划定恰当的心理界限,这对每个人都有好处。 你也许自认为与他人界限不明是一件好事,这样一来大家能随心所欲地相处,而且相互之间也不用激烈地讨价还价。这听起来似乎有点道理,但它的不利之处在于,别人经常伤害了你的感情而你却不自知。 其实仔

2015-03-04 13:04:19 719

转载 Callable,Runnable比较及用法

编写多线程程序是为了实现多任务的并发执行,从而能够更好地与用户交互。一般有三种方法,Thread,Runnable,Callable.Runnable和Callable的区别是, (1)Callable规定的方法是call(),Runnable规定的方法是run(). (2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值得 (3)call方法可以抛出异常,run方法

2015-03-04 11:25:02 303

原创 GridView 重复渲染问题

GridView 重复渲染问题在使用GridView的时候由于本身机制问题,经常在加载的时候会多渲染一些内容,而这些这些内容又不是我们需要的,解决起来又很麻烦,在网上搜了很多方法都不管用,所以整理结合网上自己写出一段代码来解决:代码块在适配器Adapter中代码如下: public boolean mFlag = false; //标识器 public int mCount = 0

2015-03-02 14:34:40 677

xmlworker-5.5.13.1.jar

Android 下 itext-tool所需要的jar包, 仅仅是itext中的tool包,不包含itextpdf包及字体包,如有需要可联系我单独下载

2020-08-10

Android OCR文字扫描Demo,结果转换成Excel,Pdf

Android Ocr文字扫描,附带图像二值化处理,结果转换Excel,Pdf格式输出,支持Excel,Pdf内容读取,OCR带的是中文字库,但是识别率很低,请自行训练字库提高识别率

2015-05-23

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

TA关注的人

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