Java
文章平均质量分 60
OpenLD
金融圈程序员,目前从事Android客户端开发
展开
-
Java/Android中URL地址合法性的判断
今天在Android开发中遇到这样一个问题,在输入一个url地址后,如何判断该url地址是否合法。在网上找了很多相关的博客,大多是从正则表达式或者HttpURLConnection的角度解决,试了下,效果并不好,且不够方便。最终找到了解决方法。使用Apache Commons Validator第三方库能够很方便地解决。原创 2017-06-01 23:47:03 · 9219 阅读 · 0 评论 -
Android 6.0指纹识别App开发demo
在Android 6.0中google终于给android系统加上了指纹识别的支持,这个功能在iPhone上早就已经实现了,并且在很多厂商的定制的ROM中也都自己内部实现这个功能了,这个功能来的有点晚啊。在google全新发布的nexus设备:nexus 5x和nexus 6p中都携带了一颗指纹识别芯片在设备的背面,如下图(图片来自网络): 笔者手中的设备就是图上的那台黑色的nexus转载 2016-11-05 19:03:45 · 1614 阅读 · 0 评论 -
手机支付宝密码存储机制分析
作者:非虫随着电子商务在国内的迅猛发展,网上购物也成为了时下流行的消费方式。就我个人来说,每年在淘宝上也会购物上百起。这足不出户的购物方式的确给我们的生活带来了不少实惠与方便,但同时,购物安全也成为了广大网购消费者担心的一个问题。每年在新闻中爆光的网银被盗、被骗的事件也屡见不鲜。长期使用网络客户端软件的朋友都有一个习惯,为了避免每次使用时输入帐号名和密码,都习惯使用软件的自动保存密转载 2016-09-27 20:55:04 · 3478 阅读 · 2 评论 -
java排序算法三(归并排序算法)
归并排序 递归可以用来开发亚平方时间的算法。具体的,分治算法把问题拆分为两个一半规模的问题递归解决,每个自问题的开销是O(N),结果整个算法就是O(NlogN)的。归并排序就是这样的算法。至少在理论上,归并算法提供了比谢尔排序算法生成的限度更好的限度值。 归并排序算法包括三个步骤:1.如果待排序的项数为0或1,返回2.对等分的两部分分别递归排序3原创 2016-09-24 19:28:18 · 354 阅读 · 0 评论 -
java排序算法二(谢尔Shell排序法)
谢尔排序 第一个对插入排序做了充分改进的算法是谢尔排序(ShellSort),尽管谢尔排序算法在已知的排序算法中不是最快的,但是其是平方时间的算法,代码只比插入排序的代码长一点。 谢尔排序的思想是避免大量的数据移动,先比较那些距离稍远的元素,然后比较那些距离较近的元素,以此类推,逐步逼近基本的插入排序。谢尔排序使用称为增量序列(increment seque原创 2016-09-24 18:33:31 · 632 阅读 · 0 评论 -
java排序算法一(插入排序法)
插入排序算法 比如下面的一个数组: 12,8,2,7,15,6,4,11 假如从小到大进行排序,从第二个元素开始,比较其与前面子列中元素的大小,如果找到第一个比它小的元素那么就将它插入到该元素之后,以此类推。第一次的结果:8,12,2,7,15,6,4,11对应的操作:8与12进行过比较,8小于12,于是将8放到原创 2016-09-24 17:34:56 · 1254 阅读 · 2 评论 -
repo下载国内链接android源码
刚好碰到要下载一个指定版本的android源码,在网上没有找到,所以只能自己去下载,看了谷歌官方下载帮助但是苦于墙抽风,下载速度也奇慢,所以找了几个国内的源头下载,那么跟着我动起来,在这之前你需要一台装有linux的电脑或者是虚拟机上装有linux也是可以的. (一).科普一下git与repo的区别 1. Git:Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非转载 2016-09-07 20:26:22 · 10314 阅读 · 2 评论 -
Android有序广播OrderedBroadcast
Broadcast被分成两种:1.Normal Broastcast(普通广播) Normal Broadcast是完全异步的,可以在同一时刻(逻辑上)被所有接收者收到,消息传递的效率比较高。但缺点是接收者不能将处理结果传递给下一个接收者,并且无法终止Broadcast Intent的传播。 2.Ordered Broadcast(有序广播) Ordered Bro原创 2016-09-06 10:49:39 · 5269 阅读 · 3 评论 -
绑定本地Service并与之通信
当程序通过startService()和stopService()启动、关闭Service时,Service与访问者之间基本上不存在太多的关联,一次Service和访问者之间无法进行通信和数据传递。 如果Service和访问者之间需要进行方法调用或数据传递,则使用bindService()和unbindService()方法启动、关闭服务。 Context的bindSe原创 2016-09-05 14:09:10 · 831 阅读 · 0 评论 -
创建、配置、启动、停止Service
一.创建、配置Service 开发Service需要两个步骤: 1.定义一个继承Service的子类。 2.在AndroidManifest.xml中对Service进行配置。 Service定义了系列生命周期的方法: 1.abstract IBinder onBind(Intent intent):该方法必须实现,该方法返回一个IB原创 2016-09-05 12:53:57 · 695 阅读 · 0 评论 -
java映射Map
映射 Map用于存储一个由关键字(key)和它们的值(value)组成的条目集合。Map把关键字映射到相应的值,关键字必须是独一无二的,但是不同的关键字也可以对应相同的值。因此,值不需要独一无二。 HashMap中的关键字是无序的,TreeMap中的关键字是有序的。 Map可以作为一个序偶(pair)的Set实例来实现,它的比较器或者equals/hashCode的实原创 2016-09-17 12:35:12 · 3031 阅读 · 0 评论 -
Android TextToSpeech多国语言自动朗读
实现的效果如下:彩色圆角按钮的实现可以参考我的这篇文章http://blog.csdn.net/ldld1717/article/details/52314344工程的结构见下图:AutoSpeech.java代码见下:package com.example.leidong.autospeech;import android.app.Ac原创 2016-08-25 14:53:44 · 4412 阅读 · 6 评论 -
android禁止截屏
在Activity的onCreate方法中加上如下代码: //禁止截屏Window win = getWindow();win.addFlags(WindowManager.LayoutParams.FLAG_SECURE);即可。原创 2016-08-31 19:32:22 · 1860 阅读 · 0 评论 -
Android数据加密DES、3DES、AES
在Android开发中,可能会遇到对数据进行加密的情况。典型的对称加密算法有DES、3DES、AES等。一.DES DES算法的入口参数有三个:Key、Data、Mode。其中Key为7个字节共56位,是DES算法的工作密钥;Data为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。 DES设计中使用了分组密码设计的两个原则:混淆(原创 2016-11-09 20:46:11 · 3393 阅读 · 0 评论 -
密钥交换算法DH(Java实现)
密钥交换算法——DH1.简述 1976年,W.Diffie和M.Hellman在发表的论文中提出了公钥加密算法思想,但当时并没有给出具体的实施方案,原因在于没有找到单向函数(也就是消息摘要算法),但在该论文中给出了通信双方通过信息交换协商密钥的算法,即Diffie-Hellman密钥交换算法(简称为DH算法)。该算法的目的在于让消息的收发双方可以在安全的条件下交换密钥,以备后续加密/原创 2016-11-10 15:47:36 · 16307 阅读 · 14 评论 -
AES加密JAVA
一.简介 AES是一种分组密码,用以取代DES的商业应用,其分组长度为128位,秘钥长度为128位、192位或256位。 AES采用Feistel结构,每轮由四个单独的运算组成:字节代替、置换、有限域上的算术运算以及与秘钥的异或运算。 二.下面给出AES的实现1.工程结构: 2.下面是java实现AES对称加密并进行测试的全部代码:AE原创 2016-10-30 10:57:56 · 561 阅读 · 0 评论 -
深入理解java垃圾回收机制
Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存。转载 2017-06-06 20:33:46 · 299 阅读 · 0 评论 -
AES算法的Java实现,直接对String操作
今天用Java写了一下AES算法,该算法完全对String进行操作,不需要在工具类之外对byte[]和String进行互转。大大方便了使用。原创 2017-05-09 11:52:22 · 945 阅读 · 0 评论 -
java.lang.ClassNotFoundException(MyEclipse引入jar包找不到类的解决)
java.lang.ClassNotFoundException(MyEclipse引入jar包找不到类的解决)原创 2017-05-08 16:55:02 · 5955 阅读 · 2 评论 -
RSA算法的Java实现及Base64的正确使用
遇到的问题: 今天参考他人代码实现了一下RSA算法。遇到一个问题,网上的RSA工具类中的核心方法大多是需要传入byte[]数组进行处理,而不能直接传入String进行处理,这里对byte[]的处理部分进行了完全的封装,使用户的传入参数完全String化。大大简化了工具类的使用。 这其中关键是需要用到Base64对String和byte[]进行互转。Base64的jar包原创 2017-05-08 15:22:35 · 8033 阅读 · 9 评论 -
【LeetCode】{Reverse Words in a String} 单词间只留一个空格
问题:刷LeetCode第151题(Reverse Words in a String)时,遇到这样一个问题。字符串中首尾存在若干空格且单词之间空格数不定时怎样去除首尾的多余空格并且使得单词之间的空格数始终为1。发现使用正则表达式能够很轻松地解决。解决方法:String s = " Stay hungry, stay foolish原创 2017-04-18 15:37:22 · 535 阅读 · 0 评论 -
Java中的各种锁
在Java程序中有时候我们可能需要推迟一些高开销的对象初始化操作,等到使用到这些对象时再去初始化。但要正确实现线程安全的延时初始化需要一些技巧,否则可能会出现问题。比如下面使用双重校验锁实现的演示加载的单例模式就是存在线程安全问题的:/** * 使用双重校验锁 */class Single4 { private static Single4 single = null;转载 2017-03-04 15:10:54 · 1230 阅读 · 0 评论 -
Android五种实现数据存储技术详解
第一种: 使用SharedPreferences存储数据SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长 整形、Int整形、String字符串型的保存。转载 2017-02-20 10:15:40 · 486 阅读 · 0 评论 -
Android创建自定义系统键盘
原文标题:Create A Custom Keyboard on Android原文链接:http://code.tutsplus.com/tutorials/create-a-custom-keyboard-on-android–cms-22615大部分Android设备没有物理键盘,作为代替,这些设备使用软键盘来接受用户输入,如果你对Android的个性化开发感兴趣,相转载 2016-12-19 13:51:32 · 2721 阅读 · 0 评论 -
Java开发中的23种设计模式详解
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式转载 2016-11-28 14:04:25 · 562 阅读 · 0 评论 -
Android中跨进程通讯的4种方式
由于android系统中应用程序之间不能共享内存。因此,在不同应用程序之间交互数据(跨进程通讯)就稍微麻烦一些。在android SDK中提供了4种用于跨进程通讯的方式。这4种方式正好对应于android系统中4种应用程序组件:Activity、Content Provider、Broadcast和Service。 其中Activity可以跨进程调用其他应用程序的Activity;转载 2016-11-14 20:34:35 · 529 阅读 · 0 评论 -
典型非对称加密算法RSA(Java)
典型非对称加密算法RSA DH算法的诞生为后续非对称加密算法奠定了基础,较为典型的对称加密算法(如EIGamal、RSA、ECC算法等)都是在DH算法提出后相继提出的,而且其算法核心都源于数学问题。 RSA算法基于大数因子分解难题,而EIGamal算法和ECC算法则是基于离散对数难题。1.简述 1978年,美国麻省理工学院(MIT)的Ron Rivest、Adi原创 2016-11-10 20:01:47 · 1380 阅读 · 0 评论 -
jdk重新安装后报错,Error:opening registry key 'Software/JavaSoft/Java Runtime Environment...'
出现的问题:之前安装了好几个版本的JDK,直接在安装路径的位置删除了文件夹,然后重装就提示没卸载干净重装不了。之后在控制面板的位置删除了JDK之后又删除了注册表中的JavaSoft,这下子可以重新安装JDK了,但是问题来了。cmd中java -version后报错,错误原因见图1图1/*******************************************原创 2016-08-07 20:50:49 · 30443 阅读 · 14 评论 -
【android开发】自定义数字软键盘的设计与实现(1)
相信很多情况下我们看到过一些数字的输入,弹出来的并不是系统自带的键盘。这就是自定义的软键盘,软键盘的一个好处就是简单,操作方便。如何实现一个自定义的软键盘呢??其实这个过程是比较简单的,只要把几个关键的原理搞明白了,你就会发现真的很简单,很方便!看一下效果图:这篇博客主要介绍一下实现的相关原理,下一节就会把具体实现的步骤和大家分享一下!实现软键盘主要用到了系统的两个类K转载 2016-08-30 11:39:52 · 1461 阅读 · 0 评论 -
【android开发】自定义数字软键盘的设计与实现(2)
上一篇我们说了关于自定义软键盘实现的相关原理,把两个主要的类介绍了一下,并看了一下源码的内容,那么今天实现起来就不会有什么疑惑了,每一步都会清晰了。 好了,下面我们就把实现的具体步骤给大家介绍一下:首先在res下新建xml文件夹,在xml文件夹中新建symbols.xml文件,这个布局文件重要是实现软键盘的布局,每一个按键都有一个codes值,在类中就是通过code转载 2016-08-30 11:38:06 · 1891 阅读 · 0 评论 -
Android Studio Gradle 缓存文件夹设置
======================================================== 作者:qiujuer 博客:blog.csdn.net/qiujuer 网站:www.qiujuer.net 开源库:github.com/qiujuer/Genius-Android 转载请注明出处:http://blog.csdn.net/qiujuer/art转载 2016-06-28 11:01:07 · 659 阅读 · 0 评论 -
Android-Studio 缓存文件夹配置
======================================================== 作者:qiujuer 博客:blog.csdn.net/qiujuer 网站:www.qiujuer.net 开源库:github.com/qiujuer/Genius-Android 转载请注明出处:http://blog.csdn.net/qiujuer/art转载 2016-06-28 10:30:35 · 381 阅读 · 0 评论 -
Android开发中graphic layout看不到预览问题的解决
问题:Android开发时,打开layout下的activity_main.xml后,Graphic Layout看不到预览界面,如下图所示。解决方法:右上角那个绿色的Android小机器人(别告诉我你没看到)选的API版本太高了,换一个低版本的就好啦!原创 2016-06-27 11:17:20 · 4474 阅读 · 0 评论 -
ADB server didn't ack * failed to start daemon及unable to obtain result of 'adb versio错误
前言想想搞点开发真心不容易,今天早上起来打开AS就遇到ADB server didn’t ack * failed to start daemon 的错误。解决网上大致都是说端口占用问题,然后参考这篇博客解决了一下。 http://blog.csdn.net/xiaanming/article/details/9401981 但是从端口占用来看,确实adb.ex转载 2016-06-27 10:58:29 · 1160 阅读 · 0 评论 -
解决新建Android Application Project报错以及R.java未生成的问题
首先,说说我遇到的问题: 新建了一个Android Application Project,命名为Demo1(生成该Project时Minimum Required SDK选的4.0版本,如果选默认的2.2版本则会导致MainActivity.java中各种各样的错误很多,后来发现选4.4版本时MainActivity.java中只出现R.java未生成的问题)。 以下是遇原创 2016-06-27 10:37:01 · 4169 阅读 · 0 评论 -
Android project的结构
从上到下进行解释。src:存放java源代码。gen:存放系统自动生成的配置文件。Android 6.0:该文件夹下包含android.jar文件,这是一个java归档文件,其中包含构建应用程序所需的所有的Android SDK库(如Views、Controls)和APIs。assets文件:存放资源文件不会自动生成ID且不会自动占用空间。bin文件:存放应用被编译后生成的可执原创 2016-06-26 20:00:53 · 363 阅读 · 0 评论 -
Java实现一个简单的租车系统
问题描述已知:租车公司汽车的序号、品牌、单日租金、载客量、载货量自行设定:租车方案(租车的数量及对应序号和租车的天数)输出:总租金、该方案的总载客量、该方案的总载货量代码请见http://download.csdn.net/detail/ldld1717/9522169原创 2016-05-16 23:37:17 · 6187 阅读 · 0 评论 -
Leetcode第9题Palindrome Number
Question:Determine whether an integer is a palindrome. Do this without extra space./************************************************************************************/package Palidrome;i原创 2016-05-05 15:39:55 · 320 阅读 · 0 评论 -
自己用java写的快速排序
自己用java寫的快排程序,隨機輸入一個定長數組,從小到大輸出,沒有涉及之後的分治原创 2016-05-05 10:18:30 · 447 阅读 · 0 评论 -
volatile、native、synchronized
1、volatile 用volatile修饰的成员变量称为易失变量,通常这个变量同时被几个线程控制和修改,也就是说,这个成员变量不仅被当前程序所掌握,在运行过程中可能存在其他未知的程序操作来影响和改变该变量的取值。通常volatile用来修饰接收外部输入的变量。如表示当前的时间变量,由系统后台线程随时修改,以确保程序中总能取到最新的系统时间,可以把它定义为易失变量。原创 2016-05-14 10:21:58 · 633 阅读 · 0 评论