3 程序人生dc

尚未进行身份认证

编程时要保持这种心态:就好象将来要维护你这些代码的人是一位残暴的精神病患者,而且他知道你住在哪。

等级
博文 74
排名 5w+

《JAVA与模式》之策略模式

《JAVA与模式》之策略模式在阎宏博士的《JAVA与模式》一书中开头是这样描述策略(Strategy)模式的:  策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模式的结构  策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象...

2019-05-15 11:49:29

并发编程的锁机制:synchronized和lock

1.锁的种类锁的种类挺多,包括:自旋锁、自旋锁的其他种类、阻塞锁、可重入锁、读写锁、互斥锁、悲观锁、乐观锁、公平锁、可重入锁等等,其余就不列出了。我们这边重点看如下几种:可重入锁、读写锁、可中断锁、公平锁。1.1可重入锁如果锁具备可重入性,则称作为可重入锁。synchronized和ReentrantLock都是可重入锁,可重入性在我看来实际上表明了锁的分配机制:基于线程的分配,而...

2019-05-05 14:52:39

JAVA内存模型概述

为什么要有内存模型在介绍Java内存模型之前,先来看一下到底什么是计算机内存模型,然后再来看Java内存模型在计算机内存模型的基础上做了哪些事情。要说计算机的内存模型,就要说一下一段古老的历史,看一下为什么要有内存模型。内存模型,英文名MemoryModel,他是一个很老的老古董了。他是与计算机硬件有关的一个概念。那么我先给你介绍下他和硬件到底有啥关系。CPU和缓存一致性我们应该...

2019-05-01 12:11:11

idea git 版本回退

idea中git远程版本回退2017年10月15日15:25:36 gomeplus 阅读数:19830工作中遇到git远程仓库需要回退到历史版本的问题,根据网上的搜索结果结合自己的实践,整理了如下步骤:1.在“ShowHistory”中找到当前版本(取名:newVersion)和想要回退到的版本(oldVersion) 2.选择newVersion和oldVersion点...

2019-01-25 17:40:11

Java8特性:Lambda表达式与Stream API

一、Labmda表达式Lambda表达式,也可称为闭包,它是推动Java8发布的最重要新特性。Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用Lambda表达式可以使代码变的更加简洁紧凑。1.1语法lambda表达式的语法格式如下:(parameters)->expression或(parameters)->{...

2018-11-28 15:31:23

Mac HomeBrew安装以及常用命令

一,安装brew1,安装brewcurl-LsSfhttp://github.com/mxcl/homebrew/tarball/master|sudotarxvz-C/usr/local--strip12,安装完成后执行brew提示:Pleaserunbrewupdate!3,按照提示更新,执行brewupdate报错:Error:...

2018-11-13 14:48:17

git常用命令

git常用命令:gitinit//初始化本地git环境 gitcloneXXX//克隆一份代码到本地仓库 gitpull//把远程库的代码更新到工作台 gitpull--rebaseoriginmaster//强制把远程库的代码跟新到当前分支上面 gitfetch//把远程库的代码更新到本地库 gitadd.//把本地的修改加到stage中 git...

2018-11-05 19:39:23

Java BigDecimal详解

1.引言  float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。但是,商业计算往往要求结果精确,这时候BigDecimal就派上大用场啦。先看下面代码 publicstaticvoidmain(Str...

2018-11-02 14:13:25

熟悉synchronized锁机制

由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问。需要明确的几个问题:synchronized关键字可以作为函数的修饰符,也可作为函数内的语句,也就是平时说的同步方法和同步语句块。如果再细的分类,synchronized可作用于instance变量、object...

2018-10-24 20:43:14

Java并发编程volatile关键字详解

Java并发编程:volatile关键字解析  volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java5之后,volatile关键字才得以重获生机。  volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模...

2018-10-09 23:52:46

Java中常用垃圾回收算法

Java中常用的垃圾收集算法:(1).标记-清除算法:最基础的垃圾收集算法,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成之后统一回收掉所有被标记的对象。标记-清除算法的缺点有两个:首先,效率问题,标记和清除效率都不高。其次,标记清除之后会产生大量的不连续的内存碎片,空间碎片太多会导致当程序需要为较大对象分配内存时无法找到足够的连续内存而不得不提前触发另一...

2018-10-05 22:30:32

Java虚拟机判断对象存活的两种方案:引用计数法与可达性分析算法

java堆和方法区主要存放各种类型的对象(方法区中也存储一些静态变量和全局常量等信息),那么我们在使用GC对其进行回收的时候首先要考虑的就是如何判断一个对象是否应该被回收。也就是要判断一个对象是否还有其他的引用或关联使得这个对象处于存活的状态。我们需要将不在存活状态的所有对象标记出,以便于GC进行回收。判断对象是否存活有两种比较常见的方法:引用计数法与可达性分析算法。引用计数法引用计数...

2018-10-05 20:03:19

Java虚拟机方法区介绍

JAVA虚拟机方法区介绍1、JVM内存模型  大多数JVM将内存分配为MethodArea(方法区)、Heap(堆)、ProgramCounterRegister(程序计数器)、JAVAMethodStack(JAVA方法栈)、NativeMethodStack(本地方法栈)。1.1MethodArea  线程共享,存储已经被虚拟机加载的类信息、常量、静态变量、即...

2018-10-04 21:29:56

java虚拟机内存区域的划分以及作用简介

一、运行时数据区       什么叫运行时数据区呢,看下图就知道了,今天的重点就围绕这张图讲。                      1、程序计数器(寄存器)                       当前线程所执行的字节码行号指示器            字节码解释器工作依赖计数器控制完成            通过执行线程行号记录,让线程轮流切换各条线程之间计数器...

2018-10-04 20:38:49

了解RESTful接口设计风格

1、RESTful发展背景及简介网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备......)。因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信。这导致API构架的流行,甚至出现"APIFirst"的设计思想。RESTfulAPI是目前比较成熟的一套互联网应用程序的API设计理论。REST(Representati...

2018-10-03 21:20:13

MySQL数据类型详解

MySQL中数据类型介绍一、MySQL的数据类型主要包括以下五大类:整数类型:BIT、BOOL、TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT浮点数类型:FLOAT、DOUBLE、DECIMAL字符串类型:CHAR、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT、TINYBLOB、BLOB、MED...

2018-09-27 19:13:27

MySQL数据库设计总结

MySQL数据库设计总结规则1:一般情况可以选择MyISAM存储引擎,如果需要事务支持必须使用InnoDB存储引擎。注意:MyISAM存储引擎B-tree索引有一个很大的限制:参与一个索引的所有字段的长度之和不能超过1000字节。另外MyISAM数据和索引是分开,而InnoDB的数据存储是按聚簇(cluster)索引有序排列的,主键是默认的聚簇(cluster)索引,因此MyISAM虽然...

2018-09-27 18:24:27

了解分布式事务

微服务–分布式事务的实现方法及替代方案这两天正在研究微服务架构中分布式事务的处理方案,做一个小小的总结,作为备忘.如有错误,欢迎指正!概念澄清事务补偿机制:在事务链中的任何一个正向事务操作,都必须存在一个完全符合回滚规则的可逆事务. CAP理论:CAP(Consistency,Availability,PartitionTolerance),阐述了一个分布式系统...

2018-09-27 12:06:13

使用MyBatis-generator 自动生成MyBatis代码

IntellijIDEA 作为JavaIDE神器,接触后发现,非常好用,对它爱不释手,打算离开eclipse和myeclipse,投入IntellijIDEA的怀抱。    然而在使用的过程中会发现IntellijIDEA也有一些不尽如意的地方,难免会有些不爽:IntellijIDEA的插件库远不及eclipse的丰富。mybatis-generator在eclipse中有...

2018-09-20 16:12:19

Mybaits一级缓存

0.写在前面       MyBatis是一个简单,小巧但功能非常强大的ORM开源框架,它的功能强大也体现在它的缓存机制上。MyBatis提供了一级缓存、二级缓存这两个缓存机制,能够很好地处理和维护缓存,以提高系统的性能。本文的目的则是向读者详细介绍MyBatis的一级缓存,深入源码,解析MyBatis一级缓存的实现原理,并且针对一级缓存的特点提出了在实际使用过程中应该注意的事项。 ...

2018-09-20 15:54:13
奖章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得