代码改变世界

随笔分类 -  Java

CountDownLatch 和 CyclicBarrier 的基本使用

2019-01-29 21:40 by hduhans, 341 阅读, 收藏, 编辑
摘要: CountDownLatch 和 CyclicBarrier 是并发编程中常用的辅助类,两者使用上有点类似,但又有不同。 一、CountDownLatch CountDownLatch 可是实现类似计数器的功能,比如一个线程 A 需要等待其余多个任务执行完毕后才能执行,此时可以使用这个工具类。 构造 阅读全文

使用 JRebel 进行远程热部署

2018-11-07 15:11 by hduhans, 4206 阅读, 收藏, 编辑
摘要: JRebel支持热部署,和远程热部署,本文我们来搭建一下远程热部署。 一、服务器安装 JRebel 1、官网下载最新的 JRebel 安装包,下载链接:https://zeroturnaround.com/software/jrebel/download/prev-releases/ 2、将下载好的 阅读全文

持续集成工具-Jenkins 使用介绍

2018-05-22 20:16 by hduhans, 809 阅读, 收藏, 编辑
摘要: Jenkins 是一个可扩展的持续集成引擎,可以为我们提供代码自动编译、打包和发布工作,减少部署成本。 一、安装与启动 Jenkins 提供了多种便捷的安装方式,比较推荐使用执行 war 包的方式。 1、基本资料 官网地址:https://jenkins.io/ 下载地址:https://jenki 阅读全文

基于spring的aop实现读写分离与事务配置

2016-11-11 19:23 by hduhans, 1770 阅读, 收藏, 编辑
摘要: 项目开发中经常会遇到读写分离等多数据源配置的需求,在Java项目中可以通过Spring AOP来实现多数据源的切换。 一、Spring事务开启流程 Spring中通常通过@Transactional来声明使用事务,我们先来研究一下Spring是如何开启事务的。调试代码,可以发现进入事务方法体内前,会 阅读全文

使用mybatis-generator自动生成映射配置

2015-11-01 21:08 by hduhans, 946 阅读, 收藏, 编辑
摘要: 使用mybatis时,编写实体类与数据库的映射是一项繁琐的工作,很容易出错,而mybatis-generator工具很好地解决了这个问题。一、工具下载与配置 下载地址:①https://github.com/mybatis/generator/releases; ②http://pan.bai... 阅读全文

Java反射与动态代理

2015-05-07 20:45 by hduhans, 4884 阅读, 收藏, 编辑
摘要: Java反射机制可以动态地获取类的结构,动态地调用对象的方法,是java语言一个动态化的机制。java动态代理可以在不改变被调用对象源码的前提下,在被调用方法前后增加自己的操作,极大地降低了模块之间的耦合性。这些都是java的基础知识,要想成为一名合格的程序猿,必须掌握!Java反射机制 JA... 阅读全文

使用maven来管理您的java项目

2015-05-01 21:48 by hduhans, 1979 阅读, 收藏, 编辑
摘要: maven是一个项目管理工具,使用maven可以自动管理java项目的整个生命周期,包括编译、构建、测试、发布和报告等。在大型项目开发中,使用maven来管理是必不可少的。 一、安装maven 1、Windows安装 1) 从官网(http://maven.apache.org/download.c 阅读全文

Java基础必备 -- 堆栈、引用传值、垃圾回收等

2015-03-16 14:59 by hduhans, 997 阅读, 收藏, 编辑
摘要: 在Java中,对象作为函数参数的传递方式是值传递还是引用传递?String str = "abc" 与 String str = new String("abc")在存储上有何区别?想成为一名合格的搬砖工,掌握吧,颤抖吧! 堆(heap)和栈(stack) 在数据结构中存在堆和栈,在内存分配中也有堆 阅读全文

如何编写常见语言带默认参数值的函数

2015-03-03 20:49 by hduhans, 944 阅读, 收藏, 编辑
摘要: 我们在定义函数时,有时候需要让参数带默认值,在各种语言中,带默认值的参数写法也不尽相同。C#函数默认值 public void DemoMethod(String name, String job="programmer", String address="Hangzhou") { }1、赋值... 阅读全文

设计模式之 -- 单例模式(Singleton)

2014-04-22 20:16 by hduhans, 385 阅读, 收藏, 编辑
摘要: 单例模式是一种常用的软件设计模式,通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问。 使用说明 1、使用场景 在某些系统中某些对象最多只能存在一个,例如Windows中只能打开一个任务管理器,一个系统只能有一个计时工具或序号生成器,此时,建议使用单例模式。 2、要点 1) 单例模式 阅读全文

Java常用锁机制简介

2014-03-02 18:06 by hduhans, 12157 阅读, 收藏, 编辑
摘要: 在开发Java多线程应用程序中,各个线程之间由于要共享资源,必须用到锁机制。Java提供了多种多线程锁机制的实现方式,常见的有synchronized、ReentrantLock、Semaphore、AtomicInteger等。每种机制都有优缺点与各自的适用场景,必须熟练掌握他们的特点才能在J... 阅读全文

Java定时任务Timer、TimerTask与ScheduledThreadPoolExecutor详解

2014-01-19 21:41 by hduhans, 7387 阅读, 收藏, 编辑
摘要: 定时任务就是在指定时间执行程序,或周期性执行计划任务。Java中实现定时任务的方法有很多,本文从从JDK自带的一些方法来实现定时任务的需求。一、Timer和TimerTask Timer和TimerTask可以作为线程实现的第三种方式(前两种详见《Java多线程基础》),JDK1.5之后定时任... 阅读全文

Java多线程基础

2014-01-13 11:43 by hduhans, 2639 阅读, 收藏, 编辑
摘要: 在一个程序中,能够独立运行的程序片段叫做“线程”,利用它进行编写的程序叫做多线程处理程序。通常情况下,多线程程序能够更好低利用计算机资源,提高程序执行的效率。多线程编程具有重要的意义,每个程序猿都应该掌握。 一、线程生命周期 1、新建状态:用Thread的new语句创建了线程对象,此时对象只在对内存 阅读全文