越努力,越幸运

微信公众号:JoonWhee。专注于Java原创知识交流,优秀技术文章、职场人生、面试经验分享。...

排序:
默认
按更新时间
按访问量

0基础Java自学之路

前言最近逛知乎的时候,经常看到有人在问“0基础如何自学Java”、“干了几年**,想转行干Java靠谱吗”等问题。不禁让我回想起了自己当初自学Java的日子,因此在这个周末花了点时间,整理了这篇文章,希望对这些正打算自学Java的或者打算转行Java的人有点帮助。我的自学之路先告诉你们我的自学过程...

2018-03-25 23:52:08

阅读数:1184

评论数:3

Java集合:HashMap详解(JDK 1.8)

概述 JDK 1.8对HashMap进行了比较大的优化,底层实现由之前的“数组+链表”改为“数组+链表+红黑树”,本文就HashMap的几个常用的重要方法和JDK 1.8之前的死循环问题展开学习讨论。JDK 1.8的HashMap的数据结构如下图所示,当链表节点较少时仍然是以链表存在,当链表节点...

2018-01-07 18:00:41

阅读数:1785

评论数:4

两年Java开发工作经验面试总结

动机: 最近换了个公司,从三月底开始面,面到四月底,面了有快二十家公司。我是一个喜欢总结经验的人,每经过一场面试,我在回来的路上都会仔细回想今天哪些问题可以答的更好,或者哪些问题是自己之前没遇到过的,或者是哪个知识点今天又问了等等。四月中旬的时候,我就在构思要写一篇面经,主要是想着可能对那些跟我...

2017-05-08 23:45:41

阅读数:39459

评论数:31

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

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

2016-02-26 01:50:21

阅读数:54798

评论数:76

Eclipse中使用SVN

概述在我们的日常工作中,经常会用到SVN,大多数都是搭配Eclipse/MyEclipse使用。本文主要介绍SVN在Eclipse中的一些最长用的功能,包括SVN插件的下载使用、上传代码到服务器、从服务器下载代码、从服务器更新代码、解决代码冲突。本文链接:http://blog.csdn.net/...

2014-03-29 20:31:12

阅读数:191998

评论数:46

使用Guava实现限流器

为什么需要限流?在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。限流可以认为服务降级的一种,限流通过限制请求的流量以达到保护系统的目的。一般来说,系统的吞吐量是可以计算出一个阈值的,为了保证系统的稳定运行,一旦达到这个阈值,就需要限制流量并采取一些措施以完成限制流量的目的。比如:延迟处...

2018-06-17 13:39:09

阅读数:277

评论数:0

MyBatis根据表结构自动生成PO/Mapper代码的最佳实践

前言当我们新建一个表时,在项目中至少要新建3个文件:实体类*PO.java、接口类*POMapper.java、存放SQL的接口实现类*POMapper.xml。对于字段少的表来说,可能你不会在意,但是如果是一个字段超过几十个的表,那你可能要写的头昏眼花了。并且,当字段多了,手写错误的几率特别大。...

2018-06-04 23:10:42

阅读数:176

评论数:0

Log4j2与Slf4j的最佳实践

前言日志对于项目的重要性不言而喻,现在市面上的日志框架多种多样:Log4j、Log4j2、Slf4j、JDKLog、Logback等等,如果没有真正深入了解过,可能会被搞得眼花缭乱。本文将介绍目前Java项目中最常见的Log4j2 + Slf4j的使用组合,这也是我自己项目中目前使用的。另外,由于...

2018-05-07 21:38:30

阅读数:106

评论数:0

排序算法:快速排序

概述 手写排序算法几乎是程序员面试必问的题目,大多数人都会选择写冒泡排序,如果此时你写的是其他改进过的排序算法,相信会让面试官眼前一亮。本文将介绍常见的排序算法中的“快速排序”。   基本思想 快速排序(QuickSort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1...

2018-04-24 22:02:57

阅读数:117

评论数:2

排序算法:选择排序

前言 上一次,我们介绍了排序算法中“龟速三兄弟”的二哥“插入排序”。今天,我们继续介绍“龟速三兄弟”中的小弟——“选择排序”。和二哥“插入排序”一样,由于同样是“龟速三兄弟”中的一员,但是处理过程没有大哥“冒泡排序”那么简单明了,因此有不少人可能都没接触过“选择排序”,本文将通过例子来介绍“选择...

2018-04-12 23:04:49

阅读数:62

评论数:0

排序算法:插入排序

前言 上一次,我们介绍了排序算法中“龟速三兄弟”的大哥“冒泡排序”。今天,我们继续介绍“龟速三兄弟”中的二哥——“插入排序”。“冒泡排序”的过程和代码相信大多数人都比较熟悉,但是“插入排序”就不见得了。由于同样是“龟速三兄弟”中的一员,但是处理过程没有“冒泡排序”那么简单明了,因此有不少人可能都...

2018-04-06 18:09:58

阅读数:77

评论数:0

排序算法:冒泡排序

前言 对于Java程序员来说,一般对于算法没有什么要求,但是有一个算法除外——排序算法。排序算法不仅在日常开发中经常用到,还是面试中几乎必问的题目,并且通常是以“手写代码”的形式出现,因此掌握好排序算法是对每一个程序员的最基本要求。   谈到排序算法,第一个浮现在我们脑中的一定是“冒泡排序”...

2018-04-05 00:45:55

阅读数:89

评论数:2

关于自增操作,你真的懂了吗?

最近看见一道有意思的面试题,是关于自增操作的,让我回想起以前自己也遇到过,并且曾经也让我困惑过,今天拿出来跟大家分享,希望对大家有帮助。题目我相信有不少人会认为输出是100,但实际运行输出是0。为什么了?要知道其中的原理,我们需要先了解下栈中的局部变量表(本地变量表)和操作数栈。局部变量表和操作数...

2018-03-30 19:34:50

阅读数:195

评论数:0

Java虚拟机面试题精选(二)

概述现在面试Java开发时,基本都会问到Java虚拟机的知识,根据职位不同问的内容深浅又有所区别。本文整理了10道面试中常问的Java虚拟机面试题,希望对正在面试的同学有所帮助。11.介绍下垃圾收集机制(在什么时候,对什么,做了什么)?在什么时候?在触发GC的时候,具体如下,这里只说常见的Youn...

2018-03-25 23:47:37

阅读数:66

评论数:0

Java虚拟机面试题精选(一)

概述现在面试Java开发时,基本都会问到Java虚拟机的知识,根据职位不同问的内容深浅又有所区别。本文整理了10道面试中常问的Java虚拟机面试题,希望对正在面试的同学有所帮助。1.介绍下Java内存区域(运行时数据区)。Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为以下6个运行...

2018-03-23 19:30:49

阅读数:128

评论数:0

一道有意思的“初始化”面试题

概述今天向大家分享一道Java面试题目,这道题是我自己设计的题目。题目原型来自于《Thinking in Java》中的“初始化与清理”一章,本来是一道简单的考察“初始化”题目,我在上面添加了其他与初始化相关的东西,最后变成一道比较综合的考察“初始化”题目。在很多笔试题中都会考察初始化方面的知识,...

2018-03-18 14:07:55

阅读数:62

评论数:0

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

概述CAS(Compare-and-Swap),即比较并替换,是一种实现并发算法时常用到的技术,Java并发包中的很多类都使用了CAS技术。CAS也是现在面试经常问的问题,本文将深入的介绍CAS的原理。案例介绍CAS之前,我们先来看一个例子。上面这个例子在volatile关键字详解文中用过,我们知...

2018-03-14 22:29:19

阅读数:1492

评论数:0

单例模式详解

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

2018-03-10 19:31:17

阅读数:102

评论数:0

Java并发:volatile关键字详解

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

2018-03-04 17:18:49

阅读数:187

评论数:0

欢迎关注我的微信公众号

在CSDN写第一篇文章的日期是2012-08-28,到今天已经有5年多的时间了。博客访问量也已经超过91万,评论超过210条,很高兴自己的文章能帮助到一些人。最近,我决定搞一个公众号,主要原因是:CSDN无法推送,文章送达率低,流量转化率低。CSDN的移动端使用频率低,而现在很多人都习惯在移动端看...

2018-02-24 18:06:54

阅读数:139

评论数:0

Java并发:Condition详解

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

2018-02-13 16:21:57

阅读数:143

评论数:0

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

概述AQS(AbstractQueuedSynchronizer)是一个用于构建锁和同步器的框架,许多同步器都可以通过AQS很容易并且高效地构造出来。不仅ReentrantLock和Semaphore是基于AQS构建的,还包括CountDownLatch、ReentrantReadWriteLoc...

2018-02-10 19:34:54

阅读数:150

评论数:0

Java集合:LinkedList详解

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

2018-02-03 16:27:52

阅读数:138

评论数:0

Java集合:ArrayList详解

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

2018-01-28 22:54:03

阅读数:114

评论数:0

Java并发:性能与可伸缩性

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

2018-01-28 20:36:15

阅读数:442

评论数:0

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

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

2018-01-27 19:02:38

阅读数:161

评论数:0

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

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

2018-01-21 23:40:01

阅读数:777

评论数:0

Java并发:InheritableThreadLocal详解

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

2018-01-20 22:48:01

阅读数:194

评论数:0

如何养成学习的习惯

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

2018-01-20 20:43:04

阅读数:560

评论数:0

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

概述虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。与那些在编译时需要进行连接工作的语言不同,在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略虽然会令类加载时...

2018-01-12 22:10:10

阅读数:139

评论数:0

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

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

2018-01-01 18:25:15

阅读数:125

评论数:0

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

概述多任务处理在现代计算机操作系统中几乎已是一项必备的功能了。在许多情况下,让计算机同时去做几件事情,不仅是因为计算机的运算能力强大了,还有一个很重要的原因是计算机的运算速度与它的存储和通信子系统速度的差距太大,大量的时间都花费在磁盘I/O、网络通信或者数据库访问上。如果不希望处理器在大部分时间里...

2017-12-31 17:15:11

阅读数:202

评论数:0

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

概述Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决了两个问题:给对象分配内存以及回收分配给对象的内存。关于回收内存这一点,我们已经使用了大量篇幅去介绍虚拟机中的垃圾收集器体系以及运作原理,现在我们再一起来探讨一下给对象分配内存的那点事儿。对象的内存分配,往大方向讲,就是在堆上分配...

2017-12-31 14:40:29

阅读数:166

评论数:0

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

概述垃圾收集需要完成的3件事情:哪些内存需要回收?什么时候回收?如何回收?目前内存的动态分配与内存回收技术已经相当成熟,一切看起来都进入了“自动化”时代,那为什么我们还要去了解GC和内存分配呢?答案很简单:当需要排查各种内存溢出、内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就需要...

2017-12-30 18:00:47

阅读数:294

评论数:0

Java虚拟机:Java内存区域

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

2017-12-30 15:32:38

阅读数:198

评论数:0

Java并发:ThreadLocal详解

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

2017-12-02 22:20:19

阅读数:1906

评论数:0

jstat命令详解

Jstat是JDK自带的一个轻量级小工具。全称“Java Virtual Machine statistics monitoring tool”,它位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监...

2017-11-24 20:11:13

阅读数:186

评论数:0

Java集合:ConcurrentHashMap详解

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

2017-03-28 21:01:38

阅读数:702

评论数:0

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

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

2016-03-22 19:23:02

阅读数:7266

评论数:0

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

Spring事务配置 通过注解配置 1.在Spring配置文件引入 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XM...

2016-03-10 15:37:05

阅读数:5641

评论数:0

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

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

2016-02-01 20:46:20

阅读数:12272

评论数:5

Maven配置文件pom.xml详解

什么是POM? POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml。在Maven中,当谈到Project的时候,不仅仅是一堆包含代码的文件。一个Project往往包含一个配置文件,包括了与开发者有关的,缺...

2015-10-30 15:00:03

阅读数:6043

评论数:0

Maven较完整教程

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

2015-10-29 15:41:10

阅读数:37897

评论数:1

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

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

2015-07-13 21:29:00

阅读数:9136

评论数:2

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

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

2015-04-23 21:14:28

阅读数:33444

评论数:9

Git的一次使用流程

1. 登陆github,并创建一个Repository 2. 右键Git Init Here,在本地初始化git 3. 右键Git Bash进入git命令行 4. 创建SSH key:ssh-keygen -t rsa -C "youemail",后面的your_emai...

2015-04-23 21:11:06

阅读数:666

评论数:0

使用swiftype实现站内搜索

本人博客opiece.me,欢迎访问。前言首先,以下的内容是基于最新的swifytpe的教程,应该是2.0.0。 站内搜索顾名思义就是将范围限定在你的网站内,以此范围进行关键字搜索。 常见的站内搜索是google和baidu的,但是现在google需要翻墙,因此不予考虑,所以主要考虑百度的,我...

2015-04-17 09:48:09

阅读数:3697

评论数:0

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

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

2015-04-09 19:14:50

阅读数:27440

评论数:0

GIT常用的基础命令

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

2015-04-05 16:49:11

阅读数:1573

评论数:0

使用PLSQL Developer时中文乱码问题

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

2015-03-30 15:46:46

阅读数:6448

评论数:0

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