自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小白成长记录

春风十里不如你

  • 博客(38)
  • 收藏
  • 关注

原创 基于Google的zxing生成和解析QR Code

基于Google的zxing生成和解析QR Code介绍二维码的技术在当今应用相当的的广泛,其中以QR Code应用最为广泛和流行。 在二维码发展之前还有一维码即条形码,相比条形码二维码存储容量更大,并且容错性也更好。优点1、高密度编码,信息容量大(大概能存储几百上千个汉字)2、编码范围广3、容错能力强,具有纠错功能4、译码可靠性高5、可引入加密措施6、成本低,易制作,持久耐用缺点1、

2016-08-30 09:55:10 918

原创 Java关键字之private、default、protected、public

Java关键字之private、default、protected、public介绍对于public修饰符,它具有最大的访问权限。它往往用于对外的情况,也就是对象或类对外的一种接口的形式比如:静态方法、静态成员变量,常和静态修饰一起使用对于protected修饰符,它主要的作用就是用来保护子类的。它的含义在于子类可以用它修饰的成员,常出现在继承关系体系中对于default来说,它是针对本包访问

2016-08-24 21:26:41 741

原创 并发编程之:Java内存模型

并发编程之:Java内存模型介绍Java内存模型在分析并发问题时是非常重要的。硬件处理模型绝大多数的运算任务都不可能只靠处理器就能完成,处理器至少要与内存交互,比如读取数据、存储运算结果等。 这个I/O操作是很难消除的(无法仅靠寄存器来完成所有的运算任务)。由于计算机存储设备与处理器的运算速度存在几个数量级的差距,所以现代计算机系统都不得不一层高速缓存作为内存和处理器之间的缓冲。 将运算需要使用

2016-08-24 21:04:22 420

原创 Java关键字之static、final、transient

Java关键字之static、final、transientstatic关键字static关键字,通常用来修饰变量和方法以及静态代码块。被修饰的变量表示为类所有对象所共有的,被修饰的方法表示类的方法。掌握好static关键字很重要一点就是,static的作用域是类而非某个具体对象。举例静态属性和静态方法/** * @author xuyi * @Time 2016年8月23日 下午9:28:3

2016-08-23 21:50:29 3331

原创 并发编程之ThreadLocal

并发编程之ThreadLocal首先说明一下啊,ThreadLocal其实不应该放在并发编程系列,只是在不知道放到哪合适介绍ThreadLocal翻译为"本地线程",但是这个类的取名似乎词不达意了。也许使用ThradLocalVariable(线程本地变量)可能更合适。JDK源码描述:ThreadLocal类用来提供线程内部的局部变量。这种变量在多线程环境下访问(通过get或set方法访问)时能

2016-08-18 21:50:41 292

原创 MySQL安装

MySQL 安装介绍windows下MySQL提供两种安装方式,一种是msi安装包,一种是zip压缩包安装。msi安装就是普通的exe可执行文件安装方式zip安装包需要自己配置一些配置参数zip压缩包安装1、解压压缩到到指定目录,假如为d:\mysql5.62、配置mysql的path路径,path=%path%;d:\mysql5.6\bin3、添加配置my.ini配置文件 bas

2016-08-17 11:02:49 286

原创 MySQL主从同步/复制

MySQL主从同步/复制介绍当网站对数据库的访问量很大时候,如果单靠一台数据库服务器是无法承载那么大的压力的。因此往往会使用主从分离(Master/Slave),主数据库负责更新数据,从数据库负责查询数据。备注:有时候对查询要求及时性很高的也在主数据库中查询主从同步原理主从复制的基本流程1、当主库有数据变更时,会将相应的信息写入到binary log(又称binlog),这些操作是在clie

2016-08-17 10:41:27 398

原创 MySQL查询处理过程分析

MySQL查询处理过程分析介绍查询操作是关系型数据库中使用最为频繁的操作,也是构成其它SQL语句(如:Delete、Update)的基础。要删除或更新某些记录时,首先要查询出这些记录,然后对其进行相应的操作。查询处理SQL语言不同于其它编程语言(C、Java等),最明显的不同体现在其处理代码顺序上。在SQL语句中,第一个被处理的字句总是from字句。举例(8)SELECT (9)DISTINCT

2016-08-16 23:14:55 1384

原创 Apache Commons BeanUtils组件介绍使用

Commons BeanUtils

2016-08-16 20:35:09 456

原创 Apache Commons Codec组件介绍使用

散列算法apache commons codec

2016-08-16 20:14:05 807

原创 MySQL之常用数据类型

MySQL数据类型

2016-08-15 23:54:22 999

原创 Java多线程七:线程池应用

java线程池应用概述当有多个请求到服务器需要新建线程来执行任务时,如果为每个请求都新建线程的话,那么服务器资源开销比较大, 因此使用一个容器来管理线程,当请求到来的时候就从容器中取出空闲线程来处理。线程池和数据库连接池很类似,都是为了解决频繁创建比较耗资源的对象。在执行并发任务时,我们可以把任务传递给一个线程池,来替代为每个并发执行的任务都启动一个新的线程, 只要池里有空闲的线程,任务就会分配一个

2016-08-15 22:41:43 390

原创 并发编程八:volatile关键字

并发编程之volatile关键字介绍使用volatile关键字修饰的变量会对所有线程具有可见性。简单理解就是每当线程要访问该变量时,首先会对该变量值同步到主存,然后再访问该变量值。如果明白java内存模型就能够更好的理解上面说的意思了。volatile常被误用当作原子操作,其实volatile最常用的是修饰标识符。使用volatile关键字必须具备以下两个条件1、运算结果不依赖变量的当前值,或者

2016-08-15 21:19:41 258

原创 并发编程七:线程通信

线程通信介绍线程间通信的目标是为了让线程能够互相知道对方的情况.线程间通信应用通过共享对象通信线程间可以通过共享对象的变量来进行互相通信,比如设置一个标识位使用boolean值表示,false/true表示一种操作。例如:public class Resource { /** 标识位 */ private boolean flag = false; /** 资源名称 */

2016-08-14 20:48:04 286

原创 并发编程六:线程安全与共享资源

线程安全与共享资源介绍允许被多个线程同时执行的代码称作线程安全的代码。线程安全的代码不包含竞态条件。弄清楚Java线程执行时共享了哪些资源非常的重要共享资源局部变量局部变量存储在线程自己的栈中.也就是说,局部变量永远也不会被多个线程共享。所以,基础类型的局部变量是安全的.public int fun(){ int a=10; return a;}这个方法就是线程安全的局部的

2016-08-14 15:36:10 468

原创 并发编程五:竞态条件与临界区

并发编程:竞态条件与临界区介绍当两个线程竞争同一资源时,如果对资源的访问顺序敏感,就称存在竞态条件。导致竟态条件发生的代码称作临界区。备注:以下这段代码就存在竞态条件,其中return ++count就是临界区。public class Obj{ private int count; public int incr() { return ++count;

2016-08-14 14:59:49 1645

原创 并发编程四:Synchronized关键字

并发编程之:Synchronized介绍由于Java对多线程编程的支持,因此在编写多线程代码时是会出现对资源共享导致不安全操作的. 因此Java提供了Synchronized关键字来保证同步操作,所谓同步操作指的是:同一时刻只有一个线程能够访问的操作。Java同步关键字SynchronizedJava中的同步块用synchronized标记。同步块在Java中是同步在某个对象上。 所有同步在一

2016-08-14 09:45:16 313

原创 并发编程三:读写锁

并发编程之读写锁介绍所谓读写锁指的是,对待读操作是一种逻辑对待写实另一种判断逻辑。读写锁的场景通常是读大于甚至远大于写的请求,此时使用读写锁就非常的合适。举例:比如数据库存有一个用户信息的表记录,如果多个线程都来读取某个用户的信息,那么我们应该是允许多个线程同时操作的, 但是当有一个用户来进行更新操作时,那么这条记录就会对其它线程不可见即对该记录上锁,直到更新线程结束才释放锁资源。这也很好理解,符

2016-08-13 16:13:28 292

原创 并发编程二:普通锁

并发编程之普通锁介绍锁是一种线程同步机制,和synchronized同步代码块一样,但是锁具备一些更高级和细粒度的对同步的控制。锁和syncronized同步方法/代码块本质上市相同的,它们的目的都是为了保证共享资源被安全的访问。 锁(lock)作为用于保护临界区(critical section)的一种机制,被广泛应用在多线程程序中。无论是 Java 语言中的 synchronized 关键

2016-08-13 09:46:02 443

原创 并发编程:ReentranLock和Condition

并发编程:ReentranLock和Condition问题描述synchronized关键字是JVM层提供的同步机制,我们无需对其异常或它行为做处理(比如释放资源),可以说使用synchronized作同步是最简单但是同时也是比较粗粒度的。JDK1.5开始提供了更细粒度的同步控制,即提供了Lock锁机制和Condition对象,为同步做操作。ReentranLock就像增强版的Synchronize

2016-08-11 21:41:40 1267

原创 并发编程一:并发概念和基础

并发编程:并发概念和基础介绍当我们烧水的时候我们往往不是在旁边等着它烧开,而是在它烧开之前我们也许会做些其它的事情比如看书、看会儿电视, 一旦水烧开了我们就去处理烧开的水(比如泡茶)。这也体现出我们做事的效率,计算机也是如此。当计算机在进行磁盘IO或网络IO时,由于比较耗时,CPU此时是出于空闲状态的,这无疑是对CPU的一种浪费没有充分利用CPU资源。 所以通常都是当进行磁盘IO或网络IO等比

2016-08-11 21:25:09 2921 1

原创 网站架构演变

网站架构演变大型网站介绍与传统企业应用系统相比,大型互联网网站系统具有以下特点1、大流量、高并发这一点往往是传统企业应用系统根本就不会遇到的问题,比如Goole每日访问量都是几十亿,如果服务器端处理不好早就被压的宕机了。2、高可用由于其面向的受众用户很多,所以对其要求也高,系统7 x 24小时运转。3、海量数据需要存储和管理的数据非常的庞大,facebook天上传图片量就达到数亿张。4、用户

2016-08-10 23:42:56 982

原创 Java多线程六:生产者和消费者模型(多对多)

多线程协同任务之:生产者和消费者模型介绍在上一篇中介绍了多线程的等待和唤醒机制,这一篇我们就实践一下,多个生产者和多个消费模型。假如有一个资源类Resouce,其有一个属性name属性和我们赋予的一个标识为flag属性。现在通过启动多线程,来达到一边赋值一边取值打印的效果。Resource类定义public class Resource { /** 标识位 */ private bo

2016-08-10 23:00:22 2051

原创 Java多线程五:生产者和消费者模型(单个对单个)

多线程协同任务之:生产者和消费者模型介绍在上一篇中介绍了多线程的等待和唤醒机制,这一篇我们就实践一下,单个生成这和单个消费模型。假如有一个资源类Resouce,其有一个属性name属性和我们赋予的一个标识为flag属性。 现在通过启动多线程(其实就是两个线程生产线程和消费线程),来达到一边赋值一边取值打印的效果。Resource类定义public class Resource { /**

2016-08-10 22:30:29 615

原创 Java多线程四:线程间通信/等待唤醒机制

多线程等待唤醒机制介绍线程间通信方式1、全局变量(基于内存共享)2、Message消息机制备注:基于内存共享比较容易实现如果多线程只是处理完全相同的任务时,那么事情就简单了,似乎也不需要线程之间相互协同。如果多线程处理的业务需要相互协同的话,那么线程之间就要进行协同和通信了。最典型的例子就是生产者和消费者模型。Java在Object对象中就定义了几个关于等待唤醒机制的方法1、publi

2016-08-10 21:45:31 885

原创 Java多线程三:Runnable接口

Java多线程Runnable接口介绍Runnable接口只定义了一个run()方法,任何实现类该接口的实例对象都应该实现run方法。Runnable从字面意思上来看,表示其具备可运行能力。The Runnable interface should be implemented by any class whose instances are intended to be executed by

2016-08-09 21:33:21 402

原创 Java多线程二:Thread类

Java多线程:Thread深入研究介绍Thread类由其名字可知其是一个线程类,java创建线程可以通过该类.A thread is a thread of execution in a program. The Java Virtual Machine allows an application to have multiple threads of execution running conc

2016-08-09 21:13:07 391

原创 Java多线程一:基础概念

Java多线程一:基础概念介绍由于在语言级提供了线程支持,在 Java 语言中使用多线程要远比在 C 或 C++ 中来得简单,java对线程提供了强健的支持.Java is a multi threaded programming language which means we can develop multi threaded program using Java. A multi threa

2016-08-08 22:24:01 350

原创 Java nio之内存映射

Java nio之内存映射介绍内存映射文件非常特别,它允许Java程序直接从内存中读取文件内容,通过将整个或部分文件映射到内存,由操作系统来处理加载请求和写入文件,应用只需要和内存打交道,这使得IO操作非常快。加载内存映射文件所使用的内存在Java堆区之外。Java编程语言支持内存映射文件,通过java.nio包和MappedByteBuffer 可以从内存直接读写文件。支持内存映射IO的操作系统大

2016-08-07 22:57:34 1096 4

原创 Java RandomAccessFile随机访问类

Java RandomAccessFile随机访问类介绍Java的RandomAccessFile提供对文件的读写功能,与普通的输入输出流不一样的是RamdomAccessFile可以任意的访问文件的任何位置。RandomAccessFile的对象包含一个记录指针,用于标识当前流的读写位置,这个位置可以向前移动,也可以向后移动。RandomAccessFile类最大的特点在于其具有可读与可写的功能并

2016-08-07 22:30:22 880 4

原创 Java NIO之Selector

Java NIO之Selector介绍Selector选择器是java nio中能检测多个Channel通道,并能够知晓通道是否为诸如读写时间做好准备的组件。即Selector相当于监控着注册在其上的所有Channel通道,主要是为了减少新建线程占用资源。Selector必须要和非阻塞的管道结合使用,比如SocketChannel/ServerSocketChannel.不能和FileChann

2016-08-04 23:09:56 356

原创 java中四种读取文件方式

java中四种读取文件方式介绍读取文件有多种方式,基于传统的输入流方式或基于nio的Buffer缓冲对象和管道读取方式甚至非常快速的内存映射读取文件。四种读取方式介绍RandomAccessFile 随机读取,比较慢优点就是该类可读可写可操作文件指针FileInputStream io普通输入流方式,速度效率一般Buffer缓冲读取 基于nio Buffer和FileCha

2016-08-04 23:04:31 2288

原创 Java NIO 之对文件锁支持

Java NIO之对文件锁支持介绍通常在我们打开一个文件时,其他用户是无法对这个文件进行修改操作的。我们可以定义不同的锁机制,来达到不同的控制。如果我们使用的是独占锁那么其他用户是无法对该文件进行读写操作的,如果我们使用的是共享锁那么其他用户可以对其进行读操作但是不能进行写操作。在Java nio中提供了文件锁的功能,这样当一个线程将文件锁定之后,其他线程就无法操作此文件了,除非其获得锁资源。可

2016-08-04 22:28:14 1678

原创 Java NIO之Charset类字符编码对象

Charset类字符编码对象介绍java中使用Charset来表示编码对象This class defines methods for creating decoders and encoders and for retrieving the various names associated with a charset. Instances of this class are immutab

2016-08-04 21:54:30 10713

原创 Java NIO之Channel

Java NIO之Channel介绍定义Channel(管道):A channel represents an open connection to an entity such as a hardware device, a file, a network socket, or a program component that is capable of performing one or mo

2016-08-03 23:06:25 820

原创 Python 14:Python网络请求模块

Python网络请求模块介绍Python标准库中自带了网络请求模块urllib,这个库比较好用,还有一个第三方网络请求模块requests也非常的人性化设计,值得学习一下。个人比较喜欢使用requests函数库,因为简单人性化标准库urllib使用python2.x标准库下的网络请求模块比较散乱有两个包urllib和urllib2使用起来并不方便,所以不推荐。Python3.x标准库下的网络请

2016-08-02 23:45:11 2791

原创 Python 12:Python 文件io操作模块

Python 文件io操作模块介绍IO操作是每种程序设计语言都会设计的模块,python的io操作设计的和C语言很类似,比较简便实用.反观Java语言对于io操作设计的模块就比较抽象和灵活,这也导致java的io学习成本远比Python语言的io操作高很多。但是java io框架的设计确实是非常优雅的,值得我们去学习其源码实现。io操作通常指定就是输入和输出,通常载体为文件,即io操作也很多时候是

2016-08-02 22:11:45 3434

原创 Java NIO 之Buffer

Java NIO 之Buffer介绍就速度而言CPU>内存>磁盘,而Buffer扮演的就是内存角色。为了能够提高IO操作的性能,java定义了一个Buffer对象来表示内存块,其实本质上就是一个字节数组,但是其有更加简便的方法读取和写入数据操作方法。在Java NIO中所有读取和写入数据操作都是基于Buffer完成的,在使用nio过程中请忘记输入流/输出流概念。在java io中流是分方向的输入/输

2016-08-02 21:48:53 813

空空如也

空空如也

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

TA关注的人

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