java基础
lmdsoft
一个北漂的码农!希望在世外桃园里,静静的DEBUG
展开
-
怎样优化代码中那么多的if else
if else 是我们写代码时,使用频率最高的关键词之一,然而有时过多的 if else 会让我们感到脑壳疼。例如下面这个伪代码:是不是很崩溃?虽然他是伪代码,并且看起来也很夸张,但在现实中,当我们无数次 Review 别人代码时,都会发现类似的场景。那么我们本文就来详细聊聊,有没有什么方法可以让我们避免来写这么多的 if else 呢?我们本文提供了 9 种...原创 2020-04-25 09:22:56 · 9893 阅读 · 3 评论 -
Netty RPC 实现
一. 概念RPC,即 Remote Procedure Call(远程过程调用),调用远程计算机上的服务,就像调用本地服务一样。RPC 可以很好的解耦系统,如 WebService 就是一种基于 Http 协议的 RPC。这个 RPC 整体框架如下:二. 关键技术1. 服务发布与订阅:服务端使用 Zookeeper 注册服务地址,客户端从 Zookeeper 获取可用的服...原创 2020-04-19 17:54:03 · 16783 阅读 · 0 评论 -
Netty 介绍
1.1. Netty 原理Netty 是一个高性能、异步事件驱动的 NIO 框架,基于 JAVA NIO 提供的 API 实现。它提供了对TCP、UDP 和文件传输的支持,作为一个异步 NIO 框架,Netty 的所有 IO 操作都是异步非阻塞的,通过 Future-Listener 机制,用户可以方便的主动获取或者通过通知机制获得 IO 操作结果。1.2. Netty 高性能...原创 2020-04-19 17:06:29 · 87581 阅读 · 11 评论 -
JVM基本概念
JVM是可运行Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没有直接的交互。下面是JVM的一张思维导图:JVM的运行过程:我们都知道Java 源文件,通过编译器,能够生产相应的.Class 文件,也就是字节码文件,而字节码文件又通过Java 虚拟机中的解释器,编译成特定机...原创 2019-07-09 10:23:43 · 22738 阅读 · 0 评论 -
JVM 内存区域
下面中jvm内存的思维导图:一、JVM 内存区域主要分为线程私有区域【程序计数器、虚拟机栈、本地方法区】、线程共享区域【JAVA 堆、方法区】、直接内存。线程私有数据区域生命周期与线程相同, 依赖用户线程的启动/结束 而 创建/销毁(在HotspotVM 内, 每个线程都与操作系统的本地线程直接映射, 因此这部分内存区域的存/否跟随本地线程的生/死对应)。线程共享区域随虚拟机的...原创 2019-07-09 11:22:13 · 15268 阅读 · 0 评论 -
垃圾回收与算法
下面是JVMGC导图1、如何确定垃圾 1.1引用计数法 在 Java 中,引用和对象是有关联的。如果要操作对象则必须用引用进行。因此,很显然一个简单的办法是通过引用计数来判断一个对象是否可以回收。简单说,即一个对象如果没有任何与之关联的引用,即他们的引用计数都不为 0,则说明对象不太可能再被用到,那么这个对象就是可回收对象。 1.2可达性分析为了...原创 2019-07-09 11:39:10 · 24941 阅读 · 2 评论 -
JAVA 四中引用类型
常见的java引用有四种:强引用、软引用、弱引用、虚引用;下面分别来介绍一下各种引用:1、强引用在Java 中最常见的就是强引用,把一个对象赋给一个引用变量,这个引用变量就是一个强引用。当一个对象被强引用变量引用时,它处于可达状态,它是不可能被垃圾回收机制回收的,即使该对象以后永远都不会被用到JVM也不会回收。因此强引用是造成Java 内存泄漏的主要原因之一。2、软引用软引用需...原创 2019-07-09 12:22:12 · 69970 阅读 · 0 评论 -
常见JAVA IO/NIO模型
我们常见的IO模型有:阻塞 IO 模型、非阻塞 IO 模型、多路复用 IO 模型、信号驱动 IO 模型、异步 IO 模型;下面我们就简单介绍一下以上IO模型。1、阻塞 IO 模型最传统的一种IO 模型,即在读写数据过程中会发生阻塞现象。当用户线程发出IO 请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线程就会处于阻塞状态,用户线程交出CPU。当数据就绪之后,内核...原创 2019-07-09 12:33:28 · 95175 阅读 · 0 评论 -
IntelliJ IDEA必备插件,提高编码效率
首先说一下idea引入外部插件的方式:1.打开settings配置面板2.选择plugins--》install pluginfrom disk 选择相应插件包==》点击ok最后,“Restart”重启idea 让它加载一下新加入的插件!!!常用插件:下面的所有插件都使用上面外部引用方式集成相应的插件包即可1. FindBugs-IDEA作...转载 2019-07-05 10:19:05 · 1072 阅读 · 0 评论 -
java 常见集合
一、接口继承关系和实现集合类存放于Java.util 包中,主要有3 种:set(集)、list(列表包含Queue)和map(映射)。1. Collection:Collection 是集合List、Set、Queue 的最基本的接口。2. Iterator:迭代器,可以通过迭代器遍历集合中的数据3. Map:是映射表的基础接口二、ListJava 的List 是...原创 2019-07-17 15:30:12 · 96703 阅读 · 2 评论 -
idea 配置 阿里巴巴 代码规范检查插件
为了提高大家的编码规范,需要在我们的开发工具idea中集成阿里巴巴的java编码规范插件来完成,如下是具体的插件配置方法:阿里巴巴代码规范插件安装:打开IDEA,点击File->Settings->Plugins,如下图查找alibaba插件并安装重启IDEA 安装完成后,就可以开始体验了 首先如果你想把老的项目统统检查一遍,那么可以使用【编码规约扫描】,...原创 2019-06-26 20:07:17 · 6784 阅读 · 0 评论 -
idea Java doc生成 配置
为了我们编码规范注释习惯,可以通过Doc进行注释检查以及作为项目文档。接下来简单介绍一下javaDoc导出。以我们的开发工具 IDEA2018为例-encoding utf-8 -charset utf-8最后生成的目录...原创 2019-06-26 19:57:52 · 6234 阅读 · 2 评论 -
Idea配置热部署
JRebel 是一款热部署插件。写的过程中我们需要不断调试,如果没有热部署,则我们每修改一次项目要重启一次,验证问题有没有得到解决。如果项目很小,启动只要几秒或十几秒,可能感觉影响不是很大;但当项目变大了,重启一次需要几十秒,几分钟,甚至十几分钟,每次修改后都需要重启无疑会严重影响我们的工作效率。 正常情况下,我们使用IDEA(或Eclipse等IDE)+tomcat部署web项...原创 2019-06-26 19:30:19 · 7957 阅读 · 0 评论 -
Java堆内存的10个要点
我刚开始学习Java编程时,可不知道什么是堆内存或堆空间(heap space),甚至根本不管对象创建时都放在哪里去了。正式了写一些程序后,经常会遇到java.lang.outOfMemoryError等错误,我才开始关注堆内存。对大多数程序员都经历过这样的过程,因为学习一种语言是非常容易来的,但是学习基础是非常难的,因为没有什么特定的流程让你学习编程的每个基础,使你发觉编程的秘诀。对于程...原创 2018-09-11 20:03:14 · 1886 阅读 · 0 评论 -
代码质量管理平台SONAR分析代码质量
介绍Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd、checkstyle、findbugs、Jenkins。通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。同时 Sonar 还对大量的持续...原创 2018-09-10 09:39:21 · 42641 阅读 · 0 评论 -
IntelliJ IDEA 乱码解决方案
最近IDE从Myeclipse改成IntelliJ IDEA 了,遇到了哪个IDE都会遇到的乱码问题,耗费了好多时间最终解决了,因此在这边记录一下解决方案,以供后面参考。总共有下面几种乱码的解决方案:运行tomcat时,控制台乱码 工程乱码 执行main函数时,控制台乱码 PS: 如果下面方案不生效时,打开IDEA安装目录找到 idea.exe.vmoptions(64位为i...原创 2018-09-19 13:17:11 · 1753 阅读 · 0 评论 -
JAVA -----RSA加密解密签名及校验
由于项目要用到非对称加密解密签名校验什么的,于是参考《Java加密解密的艺术》写一个RSA进行加密解密签名及校验的Demo,代码很简单,特此分享!RSA加密解密类: package com.ihep; import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader...转载 2018-11-07 13:54:43 · 20623 阅读 · 0 评论 -
MyEclipse打包可执行的Jar包
具体步骤: Export... -> java -> Runnable JAR file Launch configuration:选择main方法所在的文件/类 Export destination:选择或填写jar包的名字,如:C:\test.jar Library Handling: Extract required lib...原创 2018-11-07 16:12:27 · 1340 阅读 · 0 评论 -
JVM 运行机制及其原理
JVMJVM是Java Virtual Machine(Java虚拟机)的缩写,是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机主要由字节码指令集、寄存器、栈、垃圾回收堆和存储方法域等构成。 JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM在执行字节码...转载 2018-12-26 13:38:58 · 19793 阅读 · 0 评论 -
上传本地代码上传到GitHub教程
先你需要一个github账号,所有还没有的话先去注册吧!1、先去github注册一个帐号:https://github.com/2、在windows操作系统上安装 git工具,这里给出下载地址,下载后一路直接安装即可: https://git-for-windows.github.io/3、.进入Github首页,点击New repository新建一个项目Reposi...原创 2018-12-21 17:33:30 · 1001 阅读 · 0 评论 -
IntelliJ IDEA下配置git教程
IntelliJ IDEA下配置git本地安装好git,并配置合理的SSH key,具体配置可以参考 https://blog.csdn.net/hustpzb/article/details/8230454注:截图中有很多地方被打码了,打码的地方换成自己对应的目录和git地址即可。IntelliJ IDEA->Performance->Version Control...原创 2019-06-25 12:49:49 · 3338 阅读 · 0 评论 -
java中几种JSON库的解析速度对比
java中哪个JSON库的解析速度是最快的?JSON已经成为当前服务器与WEB应用之间数据传输的公认标准,不过正如许多我们所习以为常的事情一样,你会觉得这是理所当然的便不再深入思考 了。我们很少会去想用到的这些JSON库到底有什么不同,但事实上它们的确是不太一样的。因此,我们运行了一个基准测试来对常用的几个JSON库进行了测 试,看看在解析不同大小的文件时哪个库的速度是最快的。下面我会把结翻译 2016-04-19 18:45:02 · 43280 阅读 · 1 评论