自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

传a奇—学习博客

我喜欢程序员,单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战;面对困难,能够迎难而上挑战自我。他们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属自己的事业“

  • 博客(53)
  • 资源 (1)
  • 收藏
  • 关注

转载 CentOS7修改网卡名

Linux 操作系统的网卡设备的传统命名方式是 eth0、eth1、eth2等,而 CentOS7 提供了不同的命名规则,默认是基于固件、拓扑、位置信息来分配。这样做的优点是命名全自动的、可预知的,缺点是比 eth0、wlan0 更难读,比如 ens33 。一、命名规则策略规则1:对于板载设备命名合并固件或 BIOS 提供的索引号,如果来自固件或 BIOS 的信息可读就命名,比如e

2017-10-15 18:03:20 928

原创 GitHub的注册与使用(详细图解)

首先,你需要注册一个 github账号,最好取一个有意义的名字,比如姓名全拼,昵称全拼,如果被占用,可以加上有意义的数字.本文中假设用户名为 chuaaqi(我的博客名的全拼)1. 注册账号:地址: https://github.com/输入账号、邮箱、密码,然后点击注册按钮.2. 初始设置注册完成后,选择Free免费账号完成设置。

2016-05-09 15:31:04 137875 24

原创 maven安装

一、解压    解压maven-3.2.5到任一盘我的是在D盘二、配置环境变量M2_HOME—>D:\apache-maven-3.2.5path—>%M2_HOME%\bin;三、验证DOS下输入 maven -version 显示安装版本,表示安装成功

2016-05-09 12:27:04 599

原创 dbunit之org.dbunit.dataset.DataSetException: java.net.MalformedURLException解决方法

一、问题定位   在使用dbunit做DAO的单元测试时,抛出了一个org.dbunit.dataset.DataSetException: java.net.MalformedURLException异常,如下图,可以看到问题出现在我写的TestDbUnit的49行,再看源代码第49行是这一句 IDataset ds = new FlatXmlDataSet(file

2016-04-23 13:19:18 4534

原创 实现阻塞队列

阻塞队列是Concurrent包下的类,常用的包括ArrayBlockingQueue和LinkedBlockingQueue,阻塞队列中put()和take()两个方法的实现从源码中华可以看出是用消费者-生产者模式实现的,下面就是自己实现的简单的ArrayBlockingQueue废话诗少说,直接上代码:/** * 一个简单的阻塞队列 */ class MyBlock

2016-01-26 11:50:30 941

原创 实现自己的HashMap

参考源码,实现了一个简单的HashMap。。。。。。package test;import java.util.Map;import test.MyHashMap.Entry;public class MyHashMap { private Entry[] table;//Entry数组表 static final int DEFAULT_INITIAL_

2016-01-09 15:12:22 595

原创 CountDownLatch与CyclicBarrier

CountDownLatch      直译过来就是倒计数(CountDown)门闩(Latch)。倒计数不用说,门闩的意思顾名思义就是阻止前进。在这里就是指 CountDownLatch.await() 方法在倒计数为0之前会阻塞当前线程。当计数器count变为0时,所有线程不再等待,同时运行。          CountDownLatch的作用和 Thread.join()方

2016-01-06 12:20:45 412

原创 CAS自旋锁

昨天写了篇关于AtomicInteger的博客,感觉觉还是不太完整,所以又把自旋锁的知识整理了一下。。。。。。。。。什么是自旋锁       说道自旋锁就要从多线程下的锁机制说起,由于在多处理器系统环境中有些资源因为其有限性,有时需要互斥访问(mutual exclusion),这时会引入锁的机制,只有获取了锁的进程才能获取资源访问。即每次只能有且只有一个进程能获取锁,才能进入自己的临界区

2016-01-05 15:03:20 4438 3

原创 Workspace in use or cannot be created, choose a different one.错误的解决办法

Myeclipse 闪退后重启,有时有会提示错误 Workspace Unavailable:如下图原因:出现这种情况一般是workspace的配置文件中出现了.lock文件(workspace/.metadata/.lock),锁定了workspace。解决方法:     把.lock文件删除即可。     如果该文件不能删除,可能是因为javaw.exe

2016-01-05 11:35:02 676

原创 Java中的静态单多分派与动态单分派

什么是单分派,什么是多分派呢???   先看定义:根据一个宗量的类型进行方法的选择称为单分派                  根据多于一个宗量的类型对方法的选择称为多分派那么宗量又是个什么东东呢?????   再看定义:方法的接受者与方法的参数统称为方法的宗量。定义看着确实有点儿晕,还是直接上例子吧!!!!!!!!!package test;pub

2016-01-04 15:27:20 3831

原创 静态分派与动态分派

静态分派       先看定义:所有依赖静态类型来定位方法执行版本的分派动作成为静态分派。      静态分派典型的应用方法重载你能看出下面代码的输出什么吗????????????class Dog{}class WhiteDog extends Dog{}class BlackDog extends Dog{}public class Person { public

2016-01-04 14:45:14 586

原创 AtomicInteger

AtomicInteger 是一个支持原子操作的 Integer 类,就是保证对AtomicInteger类型变量的增加和减少操作是原子性的,不会出现多个线程下的数据不一致问题。通常情况下,在Java里面,++i或者--i不是线程安全的,这里面有三个独立的操作:或者变量当前值,为该值+1/-1,然后写回新的值。在没有额外资源可以利用的情况下,只能使用加锁才能保证读-改-写这三个操作时“原子性”的。

2016-01-04 12:00:32 1481

原创 一致性Hash算法

基本场景    工程师常使用服务器集群来设计和实现数据缓存,以下是常见的策略:     1、无论是添加、查询、还是删除数据,都先将数据id通过海西函数转换成一个哈希值,记为key。     2、如果目前机器有N台,则计算key%N的值,这个值就是该数据所属的机器编号,无论是添加、删除还是查询操作,都只在这台机器上进行。存在问题    上面场景中的缓存策略的潜在问题是如果增加或删

2016-01-03 14:49:16 596

原创 双亲委派模型

说道双亲委派模型,就要从类加载器说起。。。。。。。。。。。Java虚拟机类加载过程是把Class类文件加载到内存,并对Class文件中的数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型的过程。在加载阶段,java虚拟机需要完成以下3件事:a.通过一个类的全限定名来获取定义此类的二进制字节流。b.将定义类的二进制字节流所代表的静态存储结构转换为方法区的运行时数据结构。c.在...

2016-01-02 15:34:17 18965 16

原创 Java语言中的线程状态转换

Java语言定义了五种线程状态,在任意时间点,一个线程只能有且只有其中一种状态。新建(New)    创建后尚未启动的线程处于这种状态。运行(Runable)    Runable包括操作系统线程状态中的Running和Ready,也就是出于此种状态的线程可能正在运行,也可能正在等待着CPU为它分配执行时间。无限期等待(Waiting)     处于该状态的线程不会被分配C

2016-01-02 14:49:59 458

原创 join()方法

join()方法是多线程编程中常用的方法,那么它的适用场合到底是怎样的呢?首先看一下官方解释。    很多情况下,主线程创建并启动子线程,如果子线程中要进行大量耗时运算,主线程往往将早于子线程结束之前结束。这时,如果主线程想等待子线程执行完成后在结束,比如子线程处理的数据,主线程要取得在这个数据中的值,就要使用join()方法了,方法join()的作用是等待县城对象销毁。    官方解

2016-01-02 13:59:59 446

原创 单例的DoubleCheck

说道DoubleCheck(双重检查锁),就要从懒汉单例模式说起。为了解决懒汉模式出现多例的情况,我们最容易想到的就是使用synchronized关键字。看下面代码:public class Myobject{ private static Myobject myobject; private Myobject(){} synchronized public st

2015-12-28 15:34:07 605

原创 volatile能实现多线程同步吗???NO

Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了同步块 和 volatile 关键字机制。用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最的值。但是volatile并不能进行原子性操作。举个例子:package com.blog.fenye;public class Counts { public static int c

2015-12-28 14:50:43 998

原创 clone方法的深复制和浅复制

clone()方法是Object类中的一个方法,clone是穿件对象的四大方法之一(另外三个 new ,反射,发序列化),通过调用该方法,可以新建一个对象。那什么是深复制什么是浅复制呢?还是举例子来说比较直观。首先是浅复制,反下面代码:public class Student implements Cloneable{ private String studentName;

2015-12-28 12:13:52 589

原创 Myeclipse 闪退后无法打开Tomcat

Myeclipse发生闪退,之后在进入重启Tomcat发现报出以下错误:错误显示8005端口已经被占用,原因可能是上次闪退的时候没有关闭占用8005端口的进程。于是在dos中出入 netstat -ano 回车发现端口确实被占用。然后,打开资源管理器,删除javaw.exe 进程最后重启Tomcat,问题解决。

2015-12-28 12:10:02 542

原创 工厂模式

在所有的开发模式中,平常用的最多的恐怕就是工程模式,我个人感觉,工厂模式实际上就是面向接口编程的一种实现方式,使用的时候没有必要去严格的区分其究竟是是简单工程模式还是抽象工厂模式还是工厂方法模式。    下面我用实例来描述一下工厂模式的三种方式:1.简单工厂模式简单工厂模式(simple factory)是类的创建模式,又叫静态工厂方法(staticfactory method)模

2015-12-20 16:23:20 365

原创 Java语言中的四种引用

最近在看JVM的垃圾回收机制,就复习一下java中的四大引用吧。Java有四引用:强引用、软引用(SoftReference)、弱引用(WeakReference)和虚引用(PhantomReference),与引用密切相关的,还有一个引用队列ReferenceQueue。     引用和引用队列的关系,对于垃圾回收来说非常重要,学习垃圾回收机制,必须要先了解引用和引用队列的使用方法。1、

2015-12-20 15:44:40 581

原创 IOC实现完全接口编程

接触Spring框架也比较久了,用的做多的自然是IOC(控制反转),IOC作为Spring中的核心技术之一到底有什么好处呢???作为菜鸟的我,在使用IOC时最大的一个感触就是,使用它可以实现完全的面向接口编程。为什么????还是让例子来说话。首先来看一下再不用IOC的时候,如何实现接口编程的的。  public interface Office{ public void show

2015-12-20 15:34:19 1957

原创 Hash冲突解决方法

最近在看HashMap的源码,那就再把hash函数和hash冲突总结一下。。。。。。。。。。。1.哈希法简介    哈希法又称散列法、杂凑法以及关键字地址计算法等,相应的表称为哈希表。这种方法的基本思想是:首先在元素的关键字k和元素的存储位置p之间建立一个对应关系f,使得p=f(k),f称为哈希函数。创建哈希表时,把关键字为k的元素直接存入地址为f(k)的单元;以后当查找关键字

2015-12-20 14:25:22 1201

原创 query did not return a unique result: 3 错误

在使用Hibernate时出现下面的错误警告:query did not return a unique result (直译:查询没有返回一个唯一的结果)说明从数据库中查询数据的时候符合条件的结果不是唯一的全部错误:Struts Problem ReportStruts has detected an unhandled exception:M

2015-12-20 14:19:33 23192 1

原创 java中PriorityQueue优先级队列的使用

PriorityQueue是在Java SE 5.0中,引入了的Collection API,他与传统queue不同的是,PriorityQueue并非是FIFO的队列,PriorityQueue会对里面的元素按照优先级进行排序。他是如何按优先级排序的呢?PriorityQueue队列按照在构造时所指定的顺序对元素排序,既可以根据元素的自然顺序来指定排序(参阅 Comparable),也可

2015-12-13 17:52:11 909

原创 Synchroniazed和Lock实现生产者--消费者

使用Synchroniazed、wait、notify()实现代码如下:public class Test { private int queueSize = 10; private PriorityQueue queue = new PriorityQueue(queueSize); public static void main(String[] ar

2015-12-13 17:27:27 519

原创 共享锁与排它锁

共享锁【S锁】又称读锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。排他锁【X锁】又称写锁。若事务T对数据对象A加上X锁,事务T可以读A也可以修改A,其他事务不能再对A加任何锁,直到T释放A上的锁。这保证了其他事务在T释放A上的锁之前不

2015-12-13 15:11:15 2766

原创 Java transient关键字

最近看JDK源码,发现很多的变量用transient修饰,竟然不知道这个transient到底是什么意思,不觉让我这个自认为精通Java的人惊出一身冷汗,赶紧查了一下有关transient的只是,总是又长知识了,活到老学到老,我还只是个菜鸟(还挺押韵!!!)。。。。。。 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式

2015-12-13 14:36:54 348

原创 当singlon遇到Serializable

上面一篇文章中提到了单例模式,那么当单例模式遇到了序列化,会怎样呢?首先我们看一下,要生成一个新的对象有几种方式:1.       通过new 创建实例2.       调用clone()3.       通过反射4.       反序列化下面再看一个静态内置类的单例模式:public class Myobject{ private static class

2015-12-13 14:28:51 529

原创 Comparator 与 Comparable

说道Comparator 与 Comparable接口,就不得不说一下Collections和Arrays这两个类,他们分别为集合和数组提供一些查找、排序的操作。那么就以Collections为例,它有一个sort(),方法可以试下集合元素的排序。比如一个集合 ArrayList  arr,我们可以通过Collections.sort(arr),对其进行排序,那么问题来了,Integer类型是数字

2015-12-09 17:09:35 361

原创 'Building workspace' has encountered a problem.

每次MyEclipse工作空间报错如下:'Building workspace' has encountered a problem. 解决方法:删除工程目录下\.metadata\.plugins\org.eclipse.core.runtime\.settings\下面删除文件com.genuitec.eclipse.ast.deploy.core.prefs即可我一般工程是在

2015-12-09 17:01:56 568

原创 有意思的位运算

笔试的时候遇到的几个比较有意思的关于位运算的题。 问题一请编写一个算法,不用任何额外变量交换两个整数的值。给定一个数组num,其中包含两个值,请不用任何额外变量交换这两个值,并将交换后的数组返回。测试样例:[1,2]返回:[2,1]   解法一:常规解法import java.util.*;public class Compare {

2015-12-06 17:29:09 488

原创 动态规划算法(后附常见动态规划为题及Java代码实现)

一、基本概念    动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思想与策略    基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通...

2015-12-06 16:52:52 20133 5

原创 JAVA多态的实现方式

多态从实现的角度分为:静态多态和动态多态      静态多态也叫做编译时多态      动态多态也叫做运行时多态  1.静态的多态:函数重载是静态的多态的一种实现形式:举例说明:class MethodOverloading { viod receive(int i) { System.out.println("Received one

2015-12-06 16:22:55 1979

原创 单例模式

单例模式,顾名思义就是在内存中只有一个类的对象实例,对于要占用重要系统资源的对象,我们常采用单例模式,比如Web中的Servlet,Hibernate中的sessionFectory等都是采用的单例模式。单例模式有多重实现方式,但这些实现方式中都有一下共同点:有一个私有的无参构造函数,这可以防止其他类实例化它,而且单例类也不应该被继承,如果单例类允许继承那么每个子类都可以创建实例,这就

2015-12-06 15:49:08 373

转载 Spring中的AOP配置

Spring中的配置文件,一般情况下命名为applicationContext.xml,myeclipse会自动用spring编辑器进行编辑。加载顺序:1、首先读取配置配置文件,扫描所有的配置的bean对象,将其实例化。(因为懒加载的原因,某些情况下如果客户端没有getbean的话不会为该bean实例化)2、然后读取aop切面配置,为目标类创建代理对象。3、然后将所有注入信息的

2015-12-06 15:30:36 3596

原创 Struts2 框架的简单实现——轻松理解Struts原理

Struts2因该算是目前JavaWeb中MVC框架中最火的一个了,我第一次接触框架是在大学时期,那时候第一次学的还是Struts1框架,当时想的是:既然有1和2那就从低版本的开始学吧!当时自己想当然的将Struts2当成了Struts1的升级版本。可直到后来才发现自己大错特错,Struts2和Struts1虽然只有一字之差,但从实现原理到编程风格都是天壤之别。以至于我在很长一段时间都不能适应St

2015-12-03 16:13:52 2180

原创 数据库之三大范式

第一范式(1NF):属性不可分在前面我们已经介绍了属性值的概念,我们说,它是“不可分的”。而第一范式要求属性也不可分。那么它和属性值不可分有什么区别呢?给一个例子:nameaddressage小明山东省济宁市13小红辽宁省大连市12表中的address属性实际上的可分的这种情况不满足第一范式。不

2015-12-03 10:53:28 407

原创 并发之事务隔离

1.数据库的并发问题  数据库带来的并发问题包括:   (1)丢失更新    (2)脏读    (3)非重复读    (4)覆盖更新     (5)幻象读1.1 丢失更新    撤销一个事务时,把其他事务已提交的更新数据覆盖(A和B事务并发执行,A事务执行更新后,提交;B事务在A事务更新后,B事务结束前也做了对该行数据的更新操作,然后回滚,则两次更新操作都丢失了)。

2015-12-03 10:27:36 348

python帮助文档

适合初学者的python帮助文档

2016-07-05

空空如也

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

TA关注的人

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