java base
茅坤宝骏氹
语言:Java、C/C++、C#、Python、Linux Shell。
框架:Spring、Spring MVC、Spring Boot、Spring Cloud、Hibernate、Mybatis、Freemarker、Velocity。
前端:HTML5、CSS3、JavaScript、Bootstrap、JQuery、Vue、React。
数据库:oracle、mysql、MongoDB、HBase。
缓存:Memcache、Redis。
消息队列:kafka。
大数据:Hadoop、Hive、Sqoop、Flume、Spark、Strom、OpenTSDB、Druid。
展开
-
java的for循环
一、普通for循环(1)for循环语法for(initialization; condition; update){ statements; } (2)语法解释 1、for语句执行时,首先执行初始化操作(initialization),然后判断终止条件表达式( condition)是否满足,如果满足终止条件,则退出循环。否则执行循环体中的语句,接着执行迭代部分(原创 2017-11-26 17:55:58 · 365 阅读 · 0 评论 -
Java中的增强for循环的实现原理与坑
转载自 Java中的增强for循环的实现原理与坑在JAVA中,遍历集合和数组一般有以下三种形式:for (int i = 0; i < list.size(); i++) { System.out.print(list.get(i) + ",");}Iterator iterator = list.iterator();while (iterator.hasNext(...转载 2018-07-22 12:23:39 · 704 阅读 · 1 评论 -
为什么说Java中只有值传递(另一种角度)
转载自 为什么说Java中只有值传递对于初学者来说,要想把这个问题回答正确,是比较难的。在第二天整理答案的时候,我发现我竟然无法通过简单的语言把这个事情描述的很容易理解,遗憾的是,我也没有在网上找到哪篇文章可以把这个事情讲解的通俗易懂。所以,就有了我写这篇文章的初衷。这篇文章中,我从什么是方法的实际参数和形式参数开始,给你讲解为什么说Java中只有值传递。辟谣时间关于这个问题,在Sta...转载 2018-07-22 12:24:00 · 207 阅读 · 0 评论 -
[初级]Java中的switch对整型、字符型、字符串的具体实现细节
转载自 [初级]Java中的switch对整型、字符型、字符串的具体实现细节Java 7中,switch的参数可以是String类型了,这对我们来说是一个很方便的改进。到目前为止switch支持这样几种数据类型:byteshort int char String 。但是,作为一个程序员我们不仅要知道他有多么好用,还要知道它是如何实现的,witch对整型的支持是怎么实现的呢?对字符型是怎么实现的呢?...转载 2018-05-19 08:46:33 · 276 阅读 · 0 评论 -
switch case 支持的 6 种数据类型
转载自 switch case 支持的 6 种数据类型那么今天就讲一下 Java 中的 switch case 语句吧,有忘记的同学正好可以温习一下。Java 中 switch case 语句用来判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。语法格式如下:switch(expression){ case value : //语句 break; /...转载 2018-05-26 08:39:40 · 2551 阅读 · 0 评论 -
Java程序员最常犯的 10 个错误
转载自 Java程序员最常犯的 10 个错误这个列表总结了Java开发人员经常犯的10个错误。一 、把数组转成ArrayList为了将数组转换为ArrayList,开发者经常会这样做:List list = Arrays.asList(arr); 使用Arrays.asList()方法可以得到一个ArrayList,但是得到这个ArrayList其实是定义在Arrays类中的一个私有的静态...转载 2018-06-03 07:48:14 · 465 阅读 · 0 评论 -
深入浅出 JIT 编译器
转载自 深入浅出 JIT 编译器JIT 简介JIT 是 just in time 的缩写, 也就是即时编译编译器。使用即时编译器技术,能够加速 Java 程序的执行速度。下面,就对该编译器技术做个简单的讲解。首先,我们大家都知道,通常通过 javac 将程序源代码编译,转换成 java 字节码,JVM 通过解释字节码将其翻译成对应的机器指令,逐条读入,逐条解释翻译。很显然,经过解释执行,其执行...转载 2018-06-17 08:45:14 · 278 阅读 · 0 评论 -
Java 中的伪共享详解及解决方案
转载自 Java 中的伪共享详解及解决方案1. 什么是伪共享CPU 缓存系统中是以缓存行(cache line)为单位存储的。目前主流的 CPU Cache 的 Cache Line 大小都是 64 Bytes。在多线程情况下,如果需要修改“共享同一个缓存行的变量”,就会无意中影响彼此的性能,这就是伪共享(False Sharing)。2. 缓存行由于共享变量在 CPU 缓存中的存储是以缓存行为...转载 2018-06-17 08:45:24 · 247 阅读 · 0 评论 -
java8 hash算法
一、hash算法 哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数据的哈希值可以检验数据的完整性。一般用于快速查找和加密算法。 二、对象hash总结Integer、原创 2017-11-26 17:58:25 · 1388 阅读 · 0 评论 -
Java架构师必须知道的 6 大设计原则
转载自 Java架构师必须知道的 6 大设计原则在软件开发中,前人对软件系统的设计和开发总结了一些原则和模式, 不管用什么语言做开发,都将对我们系统设计和开发提供指导意义。本文主要将总结这些常见的原则,和具体阐述意义。开发原则面向对象的基本原则(solid)是五个,但是在经常被提到的除了这五个之外还有 迪米特法则和合成复用原则等, 所以在常见的文章中有表示写六大或七大原则的;...转载 2018-07-28 09:14:27 · 279 阅读 · 0 评论 -
equals 和 hashCode 到底有什么联系?一文告诉你
转载自 equals 和 hashCode 到底有什么联系?一文告诉你写在前面Java的基类Object提供了一些方法,其中equals()方法用于判断两个对象是否相等,hashCode()方法用于计算对象的哈希码。equals()和hashCode()都不是final方法,都可以被重写(overwrite)。本文介绍了2种方法在使用和重写时,一些需要注意的问题。equal()...转载 2018-07-27 19:07:20 · 211 阅读 · 0 评论 -
Java代码到底是如何编译成机器指令的。
转载自 Java代码到底是如何编译成机器指令的。在《Java代码的编译与反编译》中,有过关于Java语言的编译和反编译的介绍。我们可以通过javac命令将Java程序的源代码编译成Java字节码,即我们常说的class文件。这是我们通常意义上理解的编译。但是,字节码并不是机器语言,要想让机器能够执行,还需要把字节码翻译成机器指令。这个过程是Java虚拟机做的,这个过程也叫编译。是更深层...转载 2018-10-20 11:12:51 · 5110 阅读 · 0 评论 -
所有和Java中代理有关的知识点都在这了
转载自 所有和Java中代理有关的知识点都在这了对于每一个Java开发来说,代理这个词或多或少都会听说过。你可能听到过的有代理模式、动态代理、反向代理等。那么,到底什么是代理,这么多代理又有什么区别呢。本文就来简要分析一下。代理技术,其实不只是Java语言特有的技术,其实在互联网早期就已经出现了这种技术。在计算机网络层面,常用的代理技术有:正向代理、反向代理和透明代理。最常用到的就是...转载 2018-10-24 12:48:23 · 220 阅读 · 0 评论 -
深入理解Java中的逃逸分析
转载自 深入理解Java中的逃逸分析在Java的编译体系中,一个Java的源代码文件变成计算机可执行的机器指令的过程中,需要经过两段编译,第一段是把.java文件转换成.class文件。第二段编译是把.class转换成机器指令的过程。第一段编译就是javac命令。在第二编译阶段,JVM 通过解释字节码将其翻译成对应的机器指令,逐条读入,逐条解释翻译。很显然,经过解释执行,其执行速度必...转载 2018-10-24 12:41:22 · 182 阅读 · 0 评论 -
服务器性能指标(二)——CPU利用率分析及问题排查
转载自 服务器性能指标(二)——CPU利用率分析及问题排查平常的工作中,在衡量服务器的性能时,经常会涉及到几个指标,load、cpu、mem、qps、rt等。每个指标都有其独特的意义,很多时候在线上出现问题时,往往会伴随着某些指标的异常。大部分情况下,在问题发生之前,某些指标就会提前有异常显示。在上一篇文章中,我们介绍了一个重要的指标就是负载(Load),其中我们提到Linux的负载高,...转载 2018-10-23 12:53:44 · 755 阅读 · 0 评论 -
你必须掌握的 21 个 Java 核心技术
转载自 你必须掌握的 21 个 Java 核心技术写这篇文章的目的是想总结一下自己这么多年来使用java的一些心得体会,希望可以给大家一些经验,能让大家更好学习和使用Java。这次介绍的主要内容是和J2SE相关的部分,另外,会在以后再介绍些J2EE相关的、和Java中各个框架相关的内容。经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验,我觉得对于J2SE方面主要就...转载 2018-11-23 19:17:00 · 217 阅读 · 0 评论 -
高并发场景下的限流策略
转载自 高并发场景下的限流策略在高并发的场景下,我们的优化和保护系统的方式通常有:多级缓存、资源隔离、熔断降级、限流等等。今天我们来聊聊限流。 为什么需要限流举个比较简单的例子,正常来说,一个员工A他每天能够处理的工作是10个,突然某一天来了100个工作量,这时候,如果员工A还处理100个,只有一种可能,这个员工被压垮。如果我们能预先知道会有100个任务会来,我们通过增...转载 2018-11-18 11:04:37 · 332 阅读 · 0 评论 -
Unicode与UTF-8的区别
转载自 Unicode与UTF-8的区别要弄清Unicode与UTF-8的关系,我们还得从他们的来源说起,下来我们从刚开始的编码说起,直到Unicode的出现,我们就会感觉到他们之间的关系 ASCII码我们都知道,在计算机的世界里,信息的表示方式只有0和1,但是我们人类信息表示的方式却与之大不相同,很多时候是用语言文字、图像、声音等传递信息的。那么我们怎样将其转化为二进制存储到计...转载 2018-11-24 21:28:26 · 396 阅读 · 0 评论 -
小知识 | Java中的“魔数”
转载自 小知识 | Java中的“魔数”在编程过程中,我们可能经常听到“魔数”这个词,那么这个词到底指的是什么呢?什么数叫做魔数呢?一、标识文件类型的“魔数”大多数情况下,我们都是通过扩展名来识别一个文件的类型的,比如我们看到一个.txt类型的文件我们就知道他是一个纯文本文件。但是,扩展名是可以修改的,那一旦一个文件的扩展名被修改过,那么怎么识别一个文件的类型呢。这就用到了我们提到的“魔数”。很多...转载 2018-05-23 09:17:24 · 4216 阅读 · 1 评论 -
你真的了解Java中的三目运算符吗
转载自 你真的了解Java中的三目运算符吗三目运算符是我们经常在代码中使用的,a= (b==null?0:1);这样一行代码可以代替一个if-else,可以使代码变得清爽易读。但是,三目运算符也是有一定的语言规范的。在运用不恰当的时候会导致意想不到的问题。本文就介绍一个我自己曾经踩过的坑。一、三目运算符对于条件表达式b?x:y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果...转载 2018-05-23 09:15:50 · 1731 阅读 · 0 评论 -
java静态导入
一、静态导入 在Java 5中,import语句得到了增强,以便提供甚至更加强大的减少击键次数功能,虽然一些人争议说这是以可读性为代价的。这种新的特性成为静态导入。当你想使用static成员时,可以使用静态导入(在API中的类和你自己的类上,都可以使用该特性)。静态导入前代码实例:public class Static { public static void main原创 2017-11-26 17:55:55 · 257 阅读 · 0 评论 -
java导出javadoc文档
一、注释(1)文档注释的格式化 生成的文档是 HTML 格式,而这些 HTML 格式的标识符并不是 javadoc 加的,而是我们在写注释的时候写上去的。比如,需要换行时,不是敲入一个回车符,而是写入 <br>,如果要分段,就应该在段前写入 <p>。 因此,格式化文档,就是在文档注释中添加相应的 HTML 标识。 文档注释的正文并不是直接复制到输出文件原创 2017-11-26 17:55:50 · 1209 阅读 · 0 评论 -
Java编程规范
一、常见命名规则(1)匈牙利命名法比 较著名的命名规则是匈牙利命名法,但这种命名法对于跨平台移植简直是灾难。这种命名方法是由Microsoft程序员查尔斯·西蒙尼(Charles Simonyi) 提出的。其主要思想是“在变量和函数名中加入前缀以增进人们对程序的理解”。匈牙利命名法关键是:标识符的名字以一个或者多个小写字母开头作为前缀;前缀 之后的是首字母大写的一个单词或多个单词组合,该单词要原创 2017-11-26 17:55:48 · 335 阅读 · 0 评论 -
java变量作用域Scope
一、变量Scope作用域同时决定了它的“可见性”以及“存在时间”。在C,C++和Java里,作用域是由花括号的位置决定的。变量的作用域分为四个级别:类级、对象实例级、方法级、块级。 二、类级Scope类级变量又称全局级变量或静态变量,需要使用static关键字修饰。类级变量在类定义后就已经存在,占用内存空间,可以通过类名来访问,不需要实例化。package testdemo;/**原创 2017-11-26 17:55:45 · 5872 阅读 · 0 评论 -
java入门配置
一、下载安装JDKJDK下载路径:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html点击 Accept License Agreement ,选择自己的系统类型JDK下载,然后安装JDK。 二、安装JDK双击JDK运行,选择安装路径(一般默认),一直按next直到安装完成原创 2017-11-26 17:55:42 · 221 阅读 · 0 评论 -
java之常用方法
一、数学函数 在System.Math类里面的函数I、三角函数sin(radians) 正弦函数cos(radians) 余弦函数tan(radians) 正切函数toRadians(degree) 角度转为弧度toDegree(radians) 弧度转为角度asin(a) 反正弦函数原创 2017-11-26 17:53:13 · 348 阅读 · 0 评论 -
java中的break与continue用法
注意:JAVA中的标签必须放在循环之前,且中间不能有其他语句。例如:for或while或do-while; 1.使用break退出一层循环(与C/C++中的break用法一样) 1 public static void main(String args[]) 2 { 3 int i=0; 4 while(i)原创 2017-11-26 17:52:40 · 658 阅读 · 0 评论 -
System.gc()调用 - 适用的场景
一、System.gc()调用 System.gc()用于调用垃圾收集器,在调用时,垃圾收集器将运行以回收未使用的内存空间。它将尝试释放被丢弃对象占用的内存。然而System.gc()调用附带一个免责声明,无法保证对垃圾收集器的调用。我们习惯了从现实世界的经验中获得的“条件适用”。一切都附有免责声明! JVM实现者可以通过System.gc()调用来决定JVM的行为。一般来说,我们在编写J翻译 2017-11-26 18:00:09 · 770 阅读 · 0 评论 -
Java中的6颗语法糖
转载自 Java中的6颗语法糖语法糖(Syntactic Sugar),也称糖衣语法,指在计算机语言中添加的某种语法,这种语法对语言本身功能来说没有什么影响,只是为了方便程序员的开发,提高开发效率。说白了,语法糖就是对现有语法的一个封装。Java作为一种与平台无关的高级语言,当然也含有语法糖,这些语法糖并不被虚拟机所支持,在编译成字节码阶段就自动转换成简单常用语法。一般来说Java中的语法糖主要有...转载 2018-04-24 11:16:43 · 306 阅读 · 0 评论 -
Java父类强制转换子类原则
转载自 Java父类强制转换子类原则最近,微信群友在讨论子类父类的转换问题,其实不难,给大家用实例来说明一下就很明了了。我们知道Java中子类转换成父类是没有任何问题的,那父类可以转换成子类吗?来看下面这段程序:public class TestObjectConvert { public static void main(String[] args) { test1()...转载 2018-04-24 11:17:06 · 636 阅读 · 0 评论 -
8张图带你轻松温习Java知识
转载自 8张图带你轻松温习Java知识1字符串不变性下面这张图展示了这段代码做了什么 [code ]String s = "abcd"; s = s.concat("ef");[/code] 2equals()方法、hashCode()方法的区别HashCode被设计用来提高性能。equals()方法与hashCode()方法的区别在于:如果两个对象相等(equal),那么他们一定有相同的哈希值。...转载 2018-04-24 11:12:07 · 242 阅读 · 0 评论 -
关于Java你不知道的10件事
转载自 关于Java你不知道的10件事作为 Java 书呆子,比起实用技能,我们会对介绍 Java 和 JVM 的概念细节更感兴趣。因此我想推荐 Lukas Eder 在 jooq.org 发表的原创作品给大家。你是从很早开始就一直使用 Java 吗?那你还记得它的过去吗?那时,Java 还叫 Oak,OO 还是一个热门话题,C++ 的 folk 者认为 Java 是不可能火起来,Java 开发的...转载 2018-04-24 11:12:21 · 707 阅读 · 0 评论 -
Java Jar包的压缩、解压使用指南
转载自 Java Jar包的压缩、解压使用指南什么是jar包JAR(Java Archive)是Java的归档文件,它是一种与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。如何打/解包使用jdk/bin/jar.exe工具,配置完环境变量后直接使得jar命令即可。jar命令格式jar {c t x u f }[ v m e 0 M i ][-C 目录]文件名...{ctxu},这四个参数...转载 2018-04-25 09:57:43 · 468 阅读 · 0 评论 -
作为架构师,你必需要搞清楚的概念:POJO、PO、DTO、DAO、BO、VO
转载自 作为架构师,你必需要搞清楚的概念:POJO、PO、DTO、DAO、BO、VOPOJO、PO、DTO、DAO、BO、VO这些概念作为Java开发来说应该全部或者部分遇到过,作为架构师的你想必更是清楚这些概念在不同场景的应用。下面我逐一介绍一下,想必你会更深刻。POJO全称为:Plain Ordinary Java Object,即简单普通的java对象。一般用在数据层映射到数据库表的类,类的...转载 2018-05-06 14:31:45 · 400 阅读 · 0 评论 -
hashCode到底有什么用?
转载自 hashCode到底有什么用?hashCode概念hashCode是jdk根据对象的地址算出来的一个int数字,即对象的哈希码值,代表了该对象在内存中的存储位置。我们都知道hashCode()方法是顶级类Object类的提供的一个方法,所有的类都可以进行对hashCode方法重写。我们也知道在比较一个类是否相同时往往会重写equals方法,值得注意的是,重写equals方法的同时必须也要重...转载 2018-05-05 09:55:38 · 2178 阅读 · 0 评论 -
神奇,教你用随机数打印hello world
转载自 神奇,教你用随机数打印hello world下面是一段随机数程序。public static void main(String[] args) { System.out.println(randomString(-229985452) + " " + randomString(-147909649));}public static String randomString(in...转载 2018-04-28 09:56:54 · 377 阅读 · 0 评论 -
Java开发必会的反编译知识
转载自 Java开发必会的反编译知识编程语言 在介绍编译和反编译之前,我们先来简单介绍下编程语言(Programming Language)。编程语言(Programming Language)分为低级语言(Low-level Language)和高级语言(High-level Language)。 机器语言(Machine Language)和汇编语言(Assembly Langua...转载 2018-05-07 10:54:54 · 356 阅读 · 0 评论 -
jar包天天见,可是你知道它的运行机制吗
转载自jar包天天见,可是你知道它的运行机制吗今天介绍两个大家每天都在用但是却很少去了解它的知识点:spi 和 jar 运行机制,废话不多说,开始正题。spispi 是 Java 提供的一套用来被第三方实现或者扩展的 API ,它可以用来启用框架扩展和替换组件。spi 机制是这样的:读取 META-INF/services/ 目录下的元信息,然后 ServiceLoader 根据信...转载 2019-07-27 13:12:34 · 359 阅读 · 0 评论