自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序员囧辉

当你的才华还撑不起你的野心,你就应该静下心来学习

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

原创 面试必问的CAS,你懂了吗?

面试必问的CAS,你懂了吗?

2018-03-14 22:29:19 155589 80

原创 单例模式详解

概述单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,使用单例模式的类只有一个对象实例。单例应用场景Windows系统的任务管理器。Windows系统的回收站。操作系统的文件系统,一个操作系统只能有一个文件系统。数据库连接池的设计与实现。多线程的线程池设计与实现。Spring中创建的Bean实例默认都是单例。Java-Web中,一个Ser...

2018-03-10 19:31:17 5035 4

原创 Java并发:volatile关键字详解

概述volatile关键字可以说是Java虚拟机提供的最轻量级的同步机制,但是它并不容易完全被正确、完整地理解,以至于许多程序员都习惯不去使用它,遇到需要处理多线程数据竞争问题的时候一律使用synchronized来进行同步。了解volatile变量的语义对了解多线程操作的其他特性很有意义,在本文中我们将介绍volatile的语义到底是什么。由于volatile关键字与Java内存模型(Jav...

2018-03-04 17:18:49 14089 26

原创 Java并发:Condition详解

概述任意一个Java对象,都拥有一组监视器方法(定义在java.lang.Object上),主要包括wait()、wait(long timeout)、notify()以及notifyAll()方法,这些方法与synchronized同步关键字配合,可以实现等待/通知模式。Condition接口也提供了类似Object的监视器方法,与Lock配合可以实现等待/通知模式,但是这两者在使用方式以及功能...

2018-02-13 16:21:57 4104 2

原创 Java并发:AbstractQueuedSynchronizer详解(独占模式)

概述AQS(AbstractQueuedSynchronizer)是一个用于构建锁和同步器的框架,许多同步器都可以通过AQS很容易并且高效地构造出来。不仅ReentrantLock和Semaphore是基于AQS构建的,还包括CountDownLatch、ReentrantReadWriteLock、SynchronousQueue和FutureTask。AQS解决了在实现同步器时涉及的大...

2018-02-10 19:34:54 7403 9

原创 Java集合:LinkedList详解

概述本文就LinkedList的几个主要方法展开介绍,并结合几个图片来介绍几个重要操作。基础属性transient int size = 0; // 节点数量/** * Pointer to first node. * Invariant: (first == null && last == null) || * (first.prev == nul...

2018-02-03 16:27:52 4835 1

原创 Java集合:ArrayList详解

概述ArrayList是我们日常中最长用的集合之一,在使用列表时,除非特殊情况,我们一般都会选择使用ArrayList,本文就ArrayList的几个主要方法主要介绍,并结合几个图片来介绍几个重要操作。基础属性private static final int DEFAULT_CAPACITY = 10; // 初始容量10private static final Object[] EMPTY_...

2018-01-28 22:54:03 5295 1

原创 Java并发:性能与可伸缩性

概述编写正确的程序很难,而编写正确的并发程序则难上加难。与串行程序相比,在并发程序中存在更多容易出错的地方。那么,为什么还要编写并发程序?线程是Java语言中不可或缺的重要功能,它们能使复杂的异步代码变得更简单,从而极大地简化了复杂系统的开发。此外,要想充分发挥多处理器系统的强大计算能力,最简单的方式就是使用线程。随着处理器数量的持续增长,如何高效地使用并发正变得越来越重要。线程的最主要目的是提高...

2018-01-28 20:36:15 7864 1

原创 Java并发:同步工具类详解(CountDownLatch、CyclicBarrier、Semaphore)

概述同步工具类可以是任何一个对象,只要它根据其自身的状态来协调线程的控制流。阻塞队列可以作为同步工具类,其他类型的同步工具类还包括信号量(Semaphore)、栅栏(Barrier)以及闭锁(Latch)。本文就目前常用的3种同步工具类进行简单介绍。闭锁闭锁是一种同步工具类,可以延迟线程的进度直到其到达终止状态。闭锁的作用相当于一扇门:在闭锁到达结束状态之前,这扇门一直是关闭的,并且没有任何线程能...

2018-01-27 19:02:38 3478

原创 Java并发:线程池详解(ThreadPoolExecutor)

前言现在在实现异步时,基本都是使用线程池来实现,线程池在工作应用的还是比较频繁的,本文将就线程池的使用、相关原理和主要方法源码进行深入讲解学习。线程池的基本使用package com.joonwhee.concurrent;import java.util.ArrayList;import java.util.List;import java.util.concurre...

2018-01-21 23:40:01 11791 3

原创 Java并发:InheritableThreadLocal详解

概述最新看项目代码时, 发现有地方用到了InheritableThreadLocal,之前只用过ThreadLocal,于是就查了点资料,看了下源码,稍微学习一下。InheritableThreadLocal是ThreadLocal的子类,可以先了解下ThreadLocal:Java并发:ThreadLocal详解1.定义InheritableThreadLocal继承了ThreadLocal,此...

2018-01-20 22:48:01 12196 1

原创 如何养成学习的习惯

前言学如逆水行舟,不进则退。每天进步一点点,总有一天能完成蜕变。本文是自己一路上走来的一些心得体会,希望能帮助到一些人逐步养成学习的习惯。本文面向的人已经很勤奋的学习,但是觉得效率不高。偶尔心血来潮(可能是听到某个励志故事或者听了一首令人亢奋的歌曲)会进行学习,但无法长期坚持。基本没有在业余时间学习,但内心有一颗想学习的心/想变强的心/想证明自己的心/不想让人瞧不起自己的心/希望自己的工作能更上一...

2018-01-20 20:43:04 9513 17

原创 Java虚拟机:虚拟机类加载机制

概述虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。与那些在编译时需要进行连接工作的语言不同,在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略虽然会令类加载时稍微增加一些性能开销,但是会为Java应用程序提供高度的灵活性,Java里天生可以动态扩展的语言特性就...

2018-01-12 22:10:10 2607

原创 史上最详细的 JDK 1.8 HashMap 源码解析

可能是史上最详细的 HashMap 源码解析。

2018-01-07 18:00:41 117241 178

原创 Java并发:线程安全与锁优化

概述人们很难想象现实中的对象在一项工作进行期间,会被不停地中断和切换,对象的属性(数据)可能会在中断期间被修改和变“脏”,而这些事情在计算机世界中则是很正常的事情。有时候,良好的设计原则不得不向现实做出一些让步,我们必须让程序在计算机中正确无误地运行,然后再考虑如何将代码组织得更好,让程序运行更快。对于“高效并发”来说,首先需要保证并发的正确性,然后在此基础上实现高效。1.线程安全《Java Co...

2018-01-01 18:25:15 4143

原创 Java并发:Java内存模型(JMM)与线程

概述多任务处理在现代计算机操作系统中几乎已是一项必备的功能了。在许多情况下,让计算机同时去做几件事情,不仅是因为计算机的运算能力强大了,还有一个很重要的原因是计算机的运算速度与它的存储和通信子系统速度的差距太大,大量的时间都花费在磁盘I/O、网络通信或者数据库访问上。如果不希望处理器在大部分时间里都处于等待其他资源的状态,就必须使用一些手段去把处理器的运算能力“压榨”出来,否则就会造成很大的浪费,...

2017-12-31 17:15:11 3892 1

原创 Java虚拟机:内存分配与回收策略

概述Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决了两个问题:给对象分配内存以及回收分配给对象的内存。关于回收内存这一点,我们已经使用了大量篇幅去介绍虚拟机中的垃圾收集器体系以及运作原理,现在我们再一起来探讨一下给对象分配内存的那点事儿。对象的内存分配,往大方向讲,就是在堆上分配(但也可能经过JIT编译后被拆散为标量类型并间接地栈上分配),对象主要分配在新生代的Eden区上,如果...

2017-12-31 14:40:29 3663 2

原创 Java虚拟机:垃圾收集原理和垃圾收集器

概述垃圾收集需要完成的3件事情:哪些内存需要回收?什么时候回收?如何回收?目前内存的动态分配与内存回收技术已经相当成熟,一切看起来都进入了“自动化”时代,那为什么我们还要去了解GC和内存分配呢?答案很简单:当需要排查各种内存溢出、内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节。Java内存运行时区域的各个部分,其中程序计数器、虚拟机栈...

2017-12-30 18:00:47 4054 1

原创 Java虚拟机:Java内存区域

动机最近一段时间细读了周志明的《深入理解Java虚拟机》,加上近期自己要在组内进行知识分享,于是打算把分享的主题就定为JVM方面的,在制作PPT的过程,反复把此书翻了不少遍,于是想着顺便整理出一份笔记供大家学习。由于自己的水平有限加上为了保证内容的准确性,因此文章大部分内容取自此书的原内容,少部分内容为从知乎R大和其他对JVM有深入理解的人学习而来。文章地址:http://blog.csdn.ne...

2017-12-30 15:32:38 2921

原创 Java并发:ThreadLocal详解

前言ThreadLocal的作用是提供线程内的局部变量,这种变量在多线程环境下访问时能够保证各个线程里变量的独立性。ThreadLocal无论在项目开发还是面试中都会经常碰到,本文就ThreadLocal的使用、主要方法源码详解、内存泄漏问题展开讨论。1.基本使用package com.joonwhee.imp;/** * demo * @author joonwhee...

2017-12-02 22:20:19 18207 11

原创 Java集合:ConcurrentHashMap详解

前言近期深入学习了ConcurrentHashMap,便整理成一篇博文记录一下,请注意:此博文针对的是JDK1.6,因此如果你看到的源码跟我文中的不同,则可能是由于版本不一样。ConcurrentHashMap的锁分段技术HashTable容器在竞争激烈的并发环境下表现出效率低下的原因,是因为所有访问HashTable的线程必须竞争同一把锁。如果容器里有多把锁,每一把锁

2017-03-28 21:01:38 4318 2

原创 Linux上ftp命令行下载文件与上传文件命令应用

1、从远程ftp服务器下载文件的命令格式:首先,从本地的某个目录(/data/ftp/)登陆到远程服务器,并进入要下载文件的目录(/data/logs/),使用get命令从远程服务器的当前目录(/data/logs/)下载文件到本地登陆远程服务器时的目录(/data/ftp/)。get  远程ftp服务器上当前目录下要下载的文件名  [下载到本地机器上当前目录时的文件名],如:get 

2016-03-22 19:23:02 14279

原创 Spring事务配置及事务的传播性与隔离级别详解

1.Spring事务配置通过注解配置1.在Spring配置文件引入<tx:><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.s...

2016-03-10 15:37:05 13423 3

原创 SSM框架详细整合教程(Spring+SpringMVC+MyBatis)

动机使用maven已经有一段时间了,但项目是别人搭建好的,因此一直想着自己要学习搭建一下。网上找了些资料后,结合自己实验,花了点时间就搞好,老样子,写在博客上,免得日后忘记。本文链接:http://blog.csdn.net/v123411739/article/details/50742885博文中的MyEclipse链接:https://pan.baidu.com/s/1pMhiy...

2016-02-26 01:50:21 73803 81

原创 JAVA之NIO按行读写大文件,完美解决中文乱码问题

前言最近在开发的时候,接到了一个开发任务,要将百万行级别的txt数据插入到数据库中,由于内存方面的原因,因此不可能一次读取所有内容,后来在网上找到了解决方法,可以使用NIO技术来处理,于是找到了这篇文章http://www.sharejs.com/codes/java/1334,后来在试验过程中发现了一点小bug,由于是按字节读取,汉字又是2个字节,因此会出现汉字读取“一半”导致乱码的情况,于...

2016-02-01 20:46:20 21262 7

转载 Maven配置文件pom.xml详解

什么是POM?POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml。在Maven中,当谈到Project的时候,不仅仅是一堆包含代码的文件。一个Project往往包含一个配置文件,包括了与开发者有关的,缺陷跟踪系统,组织与许可,项目的URL,项目依赖,以及其他。它包含了所有与这个项目相关的东西。事实上,在

2015-10-30 15:00:03 9688

转载 Maven较完整教程

1. Maven介绍  1.1. 简介 java编写的用于构建系统的自动化工具。目前版本是2.0.9,注意maven2和maven1有很大区别,阅读第三方文档时需要区分版本。 1.2. Maven资源 见官方网站;The 5 minute test,官方简易入门文档;Getting Started Tutorial,官方入门文档;Build Cookbook,官方的cookbook;POM Ref...

2015-10-29 15:41:10 42336 3

转载 Spring 注解学习:@ResponseBody,@RequestBody,@PathVariable

SpringMVC层跟JSon结合,几乎不需要做什么配置,代码实现也相当简洁。再也不用为了组装协议而劳烦辛苦了! 一、Spring注解@ResponseBody,@RequestBody和HttpMessageConverter Spring 3.X系列增加了新注解@ResponseBody,@RequestBody @RequestBody 将HTTP请求正文转换为适

2015-07-13 21:29:00 11048 2

原创 Concise,一款为hexo设计的简约而漂亮的主题

前言您可以先进Demo网站来看看这个主题的样式。Concise概括Concise是一款为Hexo设计的主题。我最早使用的是light主题,因为我非常喜欢light主题简约明朗的风格,之后看到pacman主题,很喜欢pacman的头部和尾部的设计,之间甚至起过要换主题的念头(真是太可怕了)。但pacman的body部分我不是很感冒,还是更喜欢light主题的body部分,两难之下,便产生了将pacma

2015-04-23 21:14:28 43307 11

原创 Git的一次使用流程

1. 登陆github,并创建一个Repository2. 右键Git Init Here,在本地初始化git3. 右键Git Bash进入git命令行4. 创建SSH key:ssh-keygen -t rsa -C "youemail",后面的your_email@youremail.com改为你的邮箱,之后会要求确认路径和输入密码,我们这使用默认的一路回车就行。成功的话会在C盘用

2015-04-23 21:11:06 2289

原创 使用swiftype实现站内搜索

本人博客opiece.me,欢迎访问。前言首先,以下的内容是基于最新的swifytpe的教程,应该是2.0.0。 站内搜索顾名思义就是将范围限定在你的网站内,以此范围进行关键字搜索。 常见的站内搜索是google和baidu的,但是现在google需要翻墙,因此不予考虑,所以主要考虑百度的,我自己试过百度的站内搜索,感觉不是很好用,主要是新博客,收录的内容很少速度很慢。后来找到了一款名为swif

2015-04-17 09:48:09 6410

原创 半小时教你使用hexo建立一个漂亮的个人博客

动机前些天,自己刚刚接触hexo,并用hexo搭建了自己的博客,对hexo的强大搭建博客能力感到赞叹。用我的实际体验来说,你只要是有点计算机基础的人,完全可以轻松的使用hexo搭建起自己的博客。你要是用过github、oschina、gitcafe其中的一样,那对你来说,就可以分分钟上手了。其实网上使用hexo搭建博客的教程多的是,我自己也是跟着zippera的教程搭建的博客,那么我还写这篇博

2015-04-09 19:14:50 33618 2

原创 GIT常用的基础命令

1.起步用户信息配置你个人的用户名称和电子邮件地址。这两条配置很重要,每次 Git 提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记录:$ git config --global user.name “youname”$ git config --global user.email “12345@example.com”如果用了 --globa

2015-04-05 16:49:11 3261

原创 使用PLSQL Developer时中文乱码问题

现象:1.执行一些查询结果有中文的SQL语句,显示不了中文,显示???   2.执行select * from v$nls_parameters,结果的第1,2,4行为American解决方法:添加两个环境变量,第一个NLS_LANG,变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK,第二个NLS_LANGUAGE,变量值是SIMPLIFIED CHINESE

2015-03-30 15:46:46 10214

原创 Pro Git研读精选:分支介绍和分支合并

本文摘取自《Pro Git》第三章的第一节和第二节,由本人进行适当删减。何谓分支为了理解 Git 分支的实现方式,我们需要回顾一下 Git 是如何储存数据的。Git 保存的不是文件差异或者变化量,而只是一系列文件快照。在 Git 中提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存内容快照的指针,包含本次提交的作者等相关附属信息,包含零个或多个指向该提交对象的父对象指针

2015-03-06 23:21:25 3190

转载 从github下载项目到本地

在GitHub中通常使用fork操作,来从GitHub上获得代码。 首先,进入要下载的项目,并单击fork。 接下来需要将这个项目复制到您的本地机器上。通过在GitBash中执行如下的命令可以做到这一点。 Java代码  git clone git@github:username.com/JavaDemo.git  这里的Java

2015-03-05 19:20:31 14249

转载 【Github教程】史上最全github使用方法:github入门到精通

原文 http://www.eoeandroid.com/thread-274556-1-1.html【初识Github】首先让我们大家一起喊一句“Hello Github”。YEAH!就是这样。Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理。在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中。目前,

2015-03-05 00:52:00 7730

转载 告诉你掌握哪些才算掌握了Java基础

看到有人问相关的问题,本人不才,根据自己这些年的个人经验总结了一点 Java 基础方面的知识点。不管你往哪个方面发展(手机开发,网页开发,游戏开发),这些基础东西如果能熟悉的话,开发起来都会更加得心应手。下面把这些知识点列出来供大家参考,不全之处欢迎补充语法基础 如何将字符串转换为数字? 如何将数字转换为十六进制字符串? 如何将字节串转换为十六进制字符串? 如何对浮点数打印出指定小数位数?

2015-02-19 13:24:53 4164

原创 使用SVN检出或导入时出现错误:由于目标计算机积极拒绝,无法连接

今天在使用SVN时出现以下错误,查询了下资料后,发现是由于自己把SVN Server给关闭了,正常情况下是不会发生这种情况的。因为你安装完SVN 后,SVN是默认自动启动的,我自己由于觉得进程太多,所以把默认方式设置为手动,所以今天才碰到这个情况。解决办法:右键计算机 --> 服务 --> 服务和应用程序 --> 服务 --> 找到下面这个,启动即可。

2015-01-30 12:34:23 36520 8

转载 淘宝内部分享:怎么跳出MySQL的10个大坑

编者按:淘宝自从2010开始规模使用MySQL,替换了之前商品、交易、用户等原基于IOE方案的核心数据库,目前已部署数千台规模。同时和Oracle, Percona, Mariadb等上游厂商有良好合作,共向上游提交20多个Patch。目前淘宝核心系统研发部数据库组,根据淘宝的业务需求,改进数据库和提升性能,提供高性能、可扩展的、稳定可靠的数据库(存储)解决方案。 目前有以下几个方向:单机,提

2015-01-16 17:29:41 2766 1

空空如也

空空如也

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

TA关注的人

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