自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

转载 JAVA设计模式

1.1. 什么是模式 个人感觉模式更多的是项目经验的提炼,是某种特定场景下的经验之谈。模式是典型场景的解决方案,所谓某典型场景,为有相似目标,有相似约束,且场景具有重复性。所以设计模式往往是发现,而不是发明。你的设计不自觉地落入到某种设计模式中,无论你事先了解这种模式与否。但若你事先了解,你则可站在巨人的肩膀上,借鉴前人的经验,设计更合理更简单的方案。1.2. 主要模式简记 1.2.1.

2016-09-23 11:53:01 558

原创 关于 23 种设计模式的有趣见解

1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。

2016-09-23 11:44:37 398

转载 AndroidKeyStore的使用

密码算法使用: 关于对称加密:Google推荐使用使用的GCM模式,但是我司代码中大量使用的CBC模式,两个模式的代码,华为代码进行修改的时候,必然会考虑兼容性问题,因此把两段自己写的代码案例都贴出来供开发人员参考,便于产品的修改。1 对称加密:本地随机的密钥 方案:直接使用androidstore生成随机数,随机数做密钥1.1 AES_CBC android 实现 函数主体:public c

2016-09-22 17:57:03 7990 3

转载 数字签名

通俗易懂的数字签名解析链接: http://www.cnblogs.com/1-2-3/archive/2007/09/17/colloquialism-digital-certificate-part1.html http://www.cnblogs.com/1-2-3/archive/2007/09/19/colloquialism-digital-certificate-part2.htm

2016-09-22 17:18:37 2162

转载 RSA

RSA加密原理超经典解析链接: http://www.ruanyifeng.com/blog/2013/06/rsa_algorithm_part_one.html http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html 密码算法应用规范 规则:使用RSA算法时要选取合适的公共指数e说明:公共指数e位长越小,RS

2016-09-22 15:44:53 1611

转载 AES 代码实现

1 分组加密 首先了解下什么是分组加密:分组密码是将明文消息编码表示后的数字(简称明文数字)序列,划分成长度为n的组(可看成长度为n的矢量),每组分别在密钥的控制下变换成等长的输出数字(简称密文数字)序列。 3 ECB的加密方式 http://zh.wikipedia.org/wiki/%E5%9D%97%E5%AF%86%E7%A0%81%E7%9A%84%E5%B7%A5%E4%BD%9C

2016-09-22 15:04:09 1828

转载 AES原理

在有些技术文献和资料里常用Rijndael代之AES算法。AES是一个对称的、块加密算法,什么意思?“对称”的意思是:(1)甲方选择某一种加密规则,对信息进行加密;(2)乙方使用同一种规则,对信息进行解密。这种加密模式有一个最大弱点:甲方必须把加密规则告诉乙方,否则无法解密。“块”的意思是:如果待加密数据太长,则需要按固定长度分割后,对每段明文数据依次单独加密。AES算法数据分组的长度和秘钥长度相互

2016-09-22 11:40:59 2874

原创 Java单例模式

最简单的实现首先,能够想到的最简单的实现是,把类的构造函数写成private的,从而保证别的类不能实例化此类,然后在类中提供一个静态的实例并能够返回给使用者。这样,使用者就可以通过这个引用使用到这个类的实例了。public class SingletonClass { private static final SingletonClass instance = new SingletonCla

2016-09-21 15:38:33 221

原创 JVM、GC的一些事

JVM的基本结构一般如下图所示: JVM主要包括四个部分: 1.类加载器(ClassLoader):在JVM启动时或者在类运行时将需要的class加载到JVM中。(右图表示了从java源文件到JVM的整个过程,可配合理解。 关于类的加载机制,可以参考http://blog.csdn.net/tonytfjing/article/details/47212291) 2.执行引擎:负责执行clas

2016-09-19 14:56:12 378 1

原创 ClassLoader

ClassLoader,即java类加载器,主要作用是将class加载到JVM内,同时它还要考虑class由谁来加载。在说java的类加载机制之前,还是像前面的博客一样,先说说为什么要知道java的类加载机制。个人认为主要有以下几个原因:按需加载。JVM启动时不能确定我要加载哪些东西,或者有些类非常大,我只希望用到它时再加载,并非一次性加载所有的class,所以这时候了解了加载机制就可以按需加载了。

2016-09-19 10:36:13 442 1

原创 Java 同步锁

Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。二、然而,当一个线程访问object的一个synchronized(this)同步代码块时

2016-09-18 16:14:14 2273

原创 CompletionService + Callable实现线程动态返回结果

一般情况下,我们使用Runnable作为基本的任务表示形式,但是Runnable是一种有很大局限的抽象,run方法中只能记录日志,打印,或者把数据汇总入某个容器(一方面内存消耗大,另一方面需要控制同步,效率很大的限制),总之不能返回执行的结果;比如同时1000个任务去网络上抓取数据,然后将抓取到的数据进行处理(处理方式不定),我觉得最好的方式就是提供回调接口,把处理的方式最为回调传进去;但是现在我们

2016-09-18 11:52:03 302

原创 Http的多线程下载的实现

a、对于网络上的一个资源,首先发送一个请求,从返回的Content-Length中回去需要下载文件的大小,然后根据文件大小创建一个文件。 b、根据线程数和文件大小,为每个线程分配下载的字节区间,然后每个线程向服务器发送请求,获取这段字节区间的文件内容。 c、利用RandomAccessFile的seek方法,多线程同时往一个文件中写入字节。package com.zhy.mutilthread_

2016-09-14 16:39:18 3616

原创 Excutor的使用

为每一个请求开辟一个线程,首先我得承认我也经常用这样的写法~但是我们还是要吐槽下这样写法的不足: a、线程的生命周期的开销还是相当高的,大量的线程的创建将消耗大量的计算机资源 b、可创建线程的数量存在一个限制值(这个值由平台觉得,且受很多因素的制约),如果超过这个限制,可能会报OOM错误 c、在一定范围内,增加线程可以提高系统吞吐量,但是超过了这个范围,就物极必反了,只会降低程序的执行速度。

2016-09-14 15:22:23 1351

原创 CyclicBarrier的使用

CyclicBarrier把所有的线程都阻塞在一个阀门位置cyclicbarrier.awaite(),然后等到等待的线程数到达预设的值,就打开这个阀门。记得是阻塞线程,不是阻塞操作,在同一个线程使劲掉await是没什么效果的。public class CyclicBarrierTest{ private final int STUDENT_COUNT = 10; private

2016-09-14 14:48:36 324

原创 FutureTask的使用

FutureTask 有点类似Runnable,都可以通过Thread来启动,不过FutureTask可以返回执行完毕的数据,并且FutureTask的get方法支持阻塞。 由于:FutureTask可以返回执行完毕的数据,并且FutureTask的get方法支持阻塞这两个特性,我们可以用来预先加载一些可能用到资源,然后要用的时候,调用get方法获取(如果资源加载完,直接返回;否则继续等待其加载完

2016-09-14 10:07:15 435

原创 Semaphore信号量的使用

public class ConnectPool { private ArrayList<Conn> pool = new ArrayList<Conn>(); private Semaphore semaphore = new Semaphore(3); class Conn { } ConnectPool() { pool.add(new Conn

2016-09-14 09:18:40 743

原创 ImageView中的android:src和android:background的区别

下面是两个官方的描述: android:background setBackgroundResource(int) A drawable to use as the background. android:src setImageResource(int) Sets a drawable as the content of this ImageView. 有下面几个不同点: 1.

2016-09-09 15:04:04 1855

转载 Fragment的生命周期

自从Fragment出现,曾经有段时间,感觉大家谈什么都能跟Fragment谈上关系,做什么都要问下Fragment能实现不~哈哈,是不是有点过~ 本篇博客力求为大家说明Fragment如何产生,什么是Fragment,Fragment生命周期,如何静态和动态的使用Fragment,Fragment回退栈,Fragment事务;以及Fragment的一些特殊用途,例如:没有布局的Fragment有

2016-09-02 17:48:39 215

原创 android:configChanges属性

1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次2、设置Activity的android:configChanges=”orientation”时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次3、设置Activity的android:configChanges=”orientation|keybo

2016-09-02 16:26:22 201

转载 Android layout属性大全

第一类:属性值 true或者 false android:layout_centerHrizontal 水平居中    android:layout_centerVertical 垂直居中    android:layout_centerInparent 相对于父元素完全居中    android:layout_alignParentBottom 贴紧

2016-09-02 11:53:29 265

原创 Android ImageView 图片等比缩放问题

android:adjustViewBounds 是否保持宽高比。需要与maxWidth、MaxHeight一起使用,单独使用没有效果。 android:cropToPadding 是否截取指定区域用空白代替。单独设置无效果,需要与scrollY一起使用 android:maxHeight 定义View的最大高度,需要与AdjustViewBounds一起使用,单独使用没有效果。如果想设置图片

2016-09-02 11:10:23 5729

原创 Eclipse中堆内存的设置

进入eclipse程序文件夹,打开名称为eclipse.ini的配置文件进行编辑,按需添加或修改如下两项设置:当堆内存的余量小于40%时,JVM会将内存扩大到-Xmx的值 当堆内存的余量大于70%时,JVM会将内存缩小到-Xms的值 jvm初始堆内存,默认是物理内存的1/64 -Xms256m jvm最大堆内存,默认是物理内存的1/4 Xmx2048m在用eclipse开发的时候,特别是启

2016-09-01 09:47:29 5945

原创 Android UI长度单位和内外边距

px 像素 它表示的是一个单位像素,我们经常说我们手机或者电脑的分辨率,例如手机的分辨率是 800*480,表示的是手机的屏幕宽有480个像素,高邮800个像素。 dpi 每英寸上的像素 dp 虚构单位 与px 换算为 px=dp*(dpi/160)  在dpi为160的屏幕上,1px=1dp sp sp这个单位通常我们用来设置字体的大小,并且如果我们设置字体显示大小用sp做单位的话

2016-08-31 15:36:55 853

原创 Application类

源码中对其的描述: * Base class for those who need to maintain global application state. You can * provide your own implementation by specifying its name in your * AndroidManifest.xml’s <appl

2016-08-30 10:59:14 285

转载 Hoeffding不等式

引入 在上一小节”理解为什么机器可以学习——PAC学习模型”中,我们主要讨论了假设的错误率问题和如何说一个学习器是可学习的,并给出了PAC学习理论。这一小节,我们将沿着这个方向,讨论一下,有限假设空间的样本复杂度,并用Hoeffding不等式来界定概率边界。假设空间的样本复杂度 PAC可学习性很大程度上由所需的训练样本数量决定。随着问题规模的增长所带来的所需训练样本的增长称为学习问题的样本复杂度

2016-02-15 16:59:48 1378

原创 MachineLearning Practice: CART

regTrees.pyfrom numpy import *def loadDataSet(fileName): #general function to parse tab -delimited floats dataMat = [] #assume last column is target value fr = open(fileName

2016-01-31 18:04:02 515

原创 MachineLearning Practice: linear regression

00'''Created on Jan 8, 2011@author: Peter'''from numpy import *def loadDataSet(fileName): #general function to parse tab -delimited floats numFeat = len(open(fileName).readline().split('\t'

2016-01-31 17:56:32 408

原创 MachineLearning Practice: Adaboost

from numpy import *def loadSimpData(): datMat = matrix([[ 1. , 2.1], [ 2. , 1.1], [ 1.3, 1. ], [ 1. , 1. ], [ 2. , 1. ]]) classLabels = [1.0, 1.0, -1.0, -1.

2016-01-29 10:49:07 617

原创 MachineLearning Practice: decision tree

1.K-NN算法可以完成很多分类任务,但是其中的一个较大的缺点是其无法给出数据的内在含义,决策树能在数据形式上能对数据产生很好的解读。决策树能够挖掘数据中蕴含的信息,因此决策树可以应用于不熟悉的数据集,从中提取一系列的规则,而这个过程也是机器学习的过程。2.构建决策树时,如果该数据集的分类还不是同一类,计算该数据集的信息熵和不同特征条件下的信息熵,选择信息增益(information gain)最大

2016-01-16 20:30:21 417

原创 DataStructures:algorithm analysis

1.算法是解决问题的指令集。单算法给定时,可以计算算法所用的时间或者空间资源。算法分析就是计算算法的时间和空间复杂度,并对算法做出优化,获取对问题更有效的计算方法。2.当T(N)=O(f(N))(念大O),f(N)是T(N)的上界,也就是T(N)在以不快于f(N)的速度增长。f(N)=Ω(T(N))(念omega),则T(N)是f(N)的下界,T(N)=Θ(h(N))(念theta)是T(N)的增长

2016-01-15 14:07:29 415

原创 MachineLearning Practice:K-NN

1.存在一个样本数据集,作为样本数据集,该样本集的每一条数据都存在标签也就是说每条样本集的类别已知。输入一个没有标签的新数据集,将新数据的特征和样本集的数据特征进行比较,然后提取与新数据最相似的样本数据的标签作为新数据的标签。一般来说,选择样本集中前K个出现次数最多的标签作为新数据的标签。2.一般步骤:收集数据(文本/其他程序收集)–>准备数据(归一化,格式化数据,是数据使用于距离计算)–>分析数据

2016-01-11 21:36:34 408

原创 DataStructures:Introduction

public class Test { public static void main(String[] args) { person[] ps = new employee[5]; ps[0]=new student(); System.out.println("ok"); }}class perso

2016-01-11 11:05:01 336

原创 Numpy:使用Matplotlib绘图

matplotlib tutorial1.Matplotlib是python中非常有用的绘图库,与numpy结合得很好,同时Matplotlib也是独立的开源项目。 2. # -----------------------------------------------------------------------------# Copyright (c) 2015, Nicolas P.

2016-01-08 10:15:32 724

转载 卷积的意义

原文链接卷积最近总是和卷积打交道,工作需要,每天都要碰到它好几次,不胜烦恼,因为在大学时候学信号与系统的时候就没学会,我于是心想一定要把卷积完全搞明白。正好同办公室的同学也问我什么是卷积,师姐昨天也告诉我说:”我也早就想把这个问题搞明白了!”经过一段时间的思考之后,有一些很有趣的体会和大家分享。听说卷积这种运算式物理学家发明的,在实际中用得不亦乐乎,而数学家却一直没有把运算的意义彻底搞明白。仔细品以

2016-01-07 20:03:44 416

转载 大牛讲解信号与系统以及数字信号处理

转载链接 第一课 什么是卷积 卷积有什么用 什么是傅利叶变换 什么是拉普拉斯变换引子 很多朋友和我一样,工科电子类专业,学了一堆信号方面的课,什么都没学懂,背了公式考了试,然后毕业了。先说”卷积有什么用”这个问题。(有人抢答,”卷积”是为了学习”信号与系统”这门课的后续章节而存在的。我大吼一声,把他拖出去枪毙!)讲一个故事: 张三刚刚应聘到了一个电子产品公司做测试人员,他没有学过”信号与系统”

2016-01-07 19:45:35 5302 2

原创 Numpy:常用函数

1.写入文件可以使用numpy.savetxt(‘filename’,array)可以把数组写入到文件filename中。使用numpy.loadtxt(‘filename’,delimiter=’,or something’,usecls=sequence,unpack=True/False)读取文件。这两个函数也能对大部分数据存储使用的csv格式文件进行操作。2.使用numpy.average(

2016-01-04 10:10:42 1647

转载 2分钟读懂大数据框架Hadoop和Spark的异同

这里写链接内容 谈到大数据,相信大家对Hadoop和Apache Spark这两个名字并不陌生。但我们往往对它们的理解只是提留在字面上,并没有对它们进行深入的思考,下面不妨跟我一块看下它们究竟有什么异同。解决问题的层面不一样首先,Hadoop和Apache Spark两者都是大数据框架,但是各自存在的目的不尽相同。Hadoop实质上更多是一个分布式数据基础设施: 它将巨大的数据集分派到一个由普通计

2016-01-02 12:49:39 558

原创 Numpy:基础

1.Numpy中的ndarray是一个多维数组对象,其包含了数组中的实际数据和描述该数组的元数据。大部分数组的操作仅仅改变元数据的部分,而不改变实际的数据。>>> #维度元素大小不同的情况m=numpy.array([numpy.arange(2),numpy.arange(3)])>>> marray([array([0, 1]), array([0, 1, 2])], dtype=obj

2016-01-02 10:36:55 1443

原创 Python:模块

1.需要把模块导入到编译环境中才可以使用模块的代码。模块是对代码的组织,而包是对模块的组织。模块的文件名就是模块的名字加上扩展名.py。使用import导入加载到编译环境中。命名空间就是函数或者变量或者模块是属于哪个包、哪个模块的变量或者函数,可以使用完整授权名称(full quanlified name)指定变量或者函数,以防止名称的重名。2.搜索路径和路径搜索问题。搜索路径是对特定的文件查找该文

2015-12-29 14:39:25 373

空空如也

空空如也

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

TA关注的人

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