java
Java_No2
这个作者很懒,什么都没留下…
展开
-
Java多线程-Callable和Future
Callable和Future出现的原因创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕之后得到任务执...原创 2019-06-12 21:36:17 · 178 阅读 · 0 评论 -
高性能Java代码的最佳实践
介绍在这篇文章中,我们将讨论几个有助于提升Java应用程序性能的方法。我们首先将介绍如何定义可度量的性能指标,然后看看有哪些工具可以用来度量和监控应用程序性能,以及确定性能瓶颈。我们还将看到一些常见的Java代码优化方法以及最佳编码实践。最后,我们将看看用于提升Java应用程序性能的JVM调优技巧和架构调整。请注意,性能优化是一个很宽泛的话题,而本文只是对JVM探索的一个起点。性能指标在...原创 2019-06-13 21:16:32 · 318 阅读 · 0 评论 -
Java面试题:类加载器
1. Java类加载器Java源代码.java文件通过编译成字节码.class文件后,需要被加载到Java虚拟机的内存空间中使用,这个过程就是类加载。类加载依靠的是Java类加载器Java类加载器是Java运行时环境的一部分,负责动态加载Java类到Java虚拟机的内存空间中。类通常是按需加载的,即第一次使用该类时才加载。由于有了类加载器,Java运行时系统不需要知道文件的位置与文件系...原创 2019-06-13 21:17:40 · 430 阅读 · 0 评论 -
如何做高可用的架构设计?
定义目标既然我们的目标是做到高可用,那么我们就有必要先明确清楚高可用的含义,并通过拆解目标,让目标可以被量化。按照我的理解,可以将目标按照以下三条进行拆解:1. 保持业务高稳定性系统稳定性是高可用的根本目的,通俗的说,系统能持续可用,不会无故宕机,在高压下仍然能正常工作。2. 支持快速定位故障从实际工程的角度看,不出故障的服务是不存在的,所以出了故障要能够快速发现和定位,在外部用户发现前...原创 2019-06-13 21:30:12 · 658 阅读 · 0 评论 -
如何从 Java 8 升级到 Java 12,升级收益及问题处理技巧
核心要点从 Java 8 之后,Java 引入了很多有用的新语言特性,以及新工具和性能改善(尤其是垃圾收集相关的优化)。在选择升级时,我们所面临的选择是升级到最新的 Java(12)并准备每六个月升级一次,还是升级到最新的 LTS(11)版本,这样能够给自己三年的时间再去考虑下一次升级;不要忽略编译器警告。在现代 Java 领域中,废弃的功能要被更严肃地对待,Java 10 和 Java ...原创 2019-06-13 21:30:59 · 3161 阅读 · 0 评论 -
走java架构师为何要先成为Java高级工程师
前言:架构师还要根据业务发展阶段,提前预见发展到下一个阶段系统架构的解决方案,并且设计当前架构时将架构的升级扩展考虑进去,做到易于升级;否则等系统瓶颈来了,出问题了再去出方案,或现有架构无法扩展直接扔掉重做。优秀的Java架构师掌握了哪些必备基础!Java架构师,应该算是一些Java程序员们的一个职业目标吧。很多码农码了五六年的代码也没能成为架构师。那成为Java架构师需要掌握哪些技术呢,总...原创 2019-06-02 21:22:24 · 703 阅读 · 0 评论 -
Quarkus:一个 Kubernetes 原生 Java 框架
Red Hat 发布了 Quarkus,这是一个为 GraalVM 和 OpenJDK HotSpot 量身定制的 Kubernetes 原生 Java 框架。Quarkus 的目标是使 Java 成为 Kubernetes 和无服务器环境中的领先平台,为开发人员提供统一的反应式和命令式编程模型。Quarkus 利用 Java 开发人员使用的一系列库,如 Eclipse MicroProfile...原创 2019-06-02 22:02:06 · 760 阅读 · 0 评论 -
来自一位架构师的分享,学习Java多线程的一些总结
Java多线程的应用复杂性之如jvm有限的几个内存方面的操作和规范,就像无数纷繁复杂的应用逻辑建立在有限的指令集上。如何写出线程安全的程序,有各种各样需要遵循的规则,如果硬是去记忆这些写法或者规则,就事倍功半了,最好是先学习原理,抓住问题的主干,再拓展细节,这也是大家公认的学习某种技术的方式。对于多线程的问题,java使用java内存模型 JMM来保证多个线程可以有效地,正确地工作。学习...原创 2019-06-14 16:55:07 · 234 阅读 · 0 评论 -
面试这样回答Java调优,至少加1000块!!!
Java 应用性能优化是一个老生常谈的话题,典型的性能问题如页面响应慢、接口超时,服务器负载高、并发数低,数据库频繁死锁等。尤其是在“糙快猛”的互联网开发模式大行其道的今天,随着系统访问量的日益增加和代码的臃肿,各种性能问题开始纷至沓来。Java 应用性能的瓶颈点非常多,比如磁盘、内存、网络 I/O 等系统因素,Java 应用代码,JVM GC,数据库,缓存等。笔者根据个人经验,将 Java ...原创 2019-06-14 16:56:43 · 300 阅读 · 0 评论 -
一线互联网常见的14个Java面试题,你颤抖了吗程序员
跳槽不算频繁,但参加过不少面试(电话面试、face to face面试),面过大/小公司、互联网/传统软件公司,面糊过(眼高手低,缺乏实战经验,挂掉),也面过人,所幸未因失败而气馁,在此过程中不断查缺补漏,养成了踏实、追本溯源、持续改进的习惯,特此将自己经历过、构思过的一些面试题记录下来,如果答案有问题,欢迎拍砖讨论,希望能对找工作或者感兴趣的同学有所帮助,陆续整理中。一、 synchroniz...原创 2019-06-14 21:08:03 · 209 阅读 · 0 评论 -
面试京东Java架构师,竟然被问这些题,学到了!
前言其实收到jd的面试邀请的时候,我真心有点小激动。因为在地理位置上,jd应该是最合适我也是最想去的。但是我在看到方向的时候其实心里有很多的问题,也做好了被拒的准备。面试过程及感受因为是开车去,所以到亦庄的时候第一个问题是找车位,但是京东周边的马路上是基本不可能找到的了,还看到一个司机因为倒车慢了一点,被另外的小车司机迅速停入,吵吵了半天。最后在一个角落找到一个停车场,需要预约码才能停,门口...原创 2019-06-13 21:09:22 · 917 阅读 · 1 评论 -
15款Java程序员必备的开发工具
如果你是一名Web开发人员,那么用膝盖想也知道你的职业生涯大部分将使用Java而度过。这是一款商业级的编程语言,我们没有办法不接触它。对于Java,有两种截然不同的观点:一种认为Java是最简单功能最强大的编程语言之一,另一种则表示这种编程语言既难用又复杂。下面这些工具或许功能和作用不同,但是有着一个共同的主旨,那就是——它们都是为了给Java编码和开发提供卓越的支持。1. JDK(Jav...原创 2019-06-13 21:01:41 · 1290 阅读 · 0 评论 -
关于Netty我们都需要知道什么?
1.BIO、NIO和AIO的区别?BIO:一个连接一个线程,客户端有连接请求时服务器端就需要启动一个线程进行处理。线程开销大。伪异步IO:将请求连接放入线程池,一对多,但线程还是很宝贵的资源。NIO:一个请求一个线程,但客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。AIO:一个有效请求一个线程,客户端的I/O请求都是由...原创 2019-06-13 21:00:43 · 220 阅读 · 0 评论 -
Java后端开发三年,你不得不了解的JVM
JAVA程序员,三年是个坎,如果过了三年你还没有去研究JVM的话,那么你这个程序员只能是板砖的工具了。下面来个JVM的解析可好?JVM是Java Virtual Machine(Java虚拟机)的缩写,也就是指的JVM虚拟机,属于是一种虚构出来的计算机,在我们实际的电脑上来进行模拟各种计算机的功能的这么个东西。因为有了JVM的存在,搞JAVA的不再需要去关心什么时候去释放内存,也不会像C++程...原创 2019-06-06 20:50:02 · 224 阅读 · 0 评论 -
Java中package的概念及实践(不使用IDE)
一、package 在 Java 中是什么作用?为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。包的作用:把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。包...原创 2019-05-29 16:32:52 · 339 阅读 · 0 评论 -
最受欢迎的100个Java库
谁拔得头筹?谁又落于人后?我们分析了 GitHub 中 47,251 条依赖关系,得出最受欢迎的100个 Java 库。漫长的周末里,我们最喜欢的消遣方式是遍历 GitHub,找出最受欢迎的 Java 库。我们决定,将其中的乐趣与所得分享给大家。谁拔得头筹?谁又落于人后?我们分析了 GitHub 中 47,251 条依赖关系,得出最受欢迎的100个 Java 库。漫长的周末里,我们最喜欢的消...原创 2019-05-29 16:37:44 · 943 阅读 · 1 评论 -
彻底理解Spring容器和应用上下文
有了Spring之后,通过依赖注入的方式,我们的业务代码不用自己管理关联对象的生命周期。业务代码只需要按照业务本身的流程,走啊走啊,走到哪里,需要另外的对象来协助了,就给Spring说,我想要个对象——于是Spring就很贴心的给你个对象。听起来似乎很简单,使用起来也不难,但是如果仅仅是这样的拿来主义,倒也洒脱,不用费什么脑子。。。可是,你就真的不关心,Spring是从哪里把对象给你的吗?如果...原创 2019-06-13 16:03:28 · 182 阅读 · 0 评论 -
Java架构的-高并发解决方案
1. 应用和静态资源分离刚开始的时候应用和静态资源是保存在一起的,当并发量达到一定程度的时候就需要将静态资源保存到专门的服务器中,静态资源主要包括图片、视频、js、css和一些资源文件等,这些文件因为没有状态所以分离比较简单,直接存放到响应的服务器就可以了,一般会使用专门的域名去访问。通过不同的域名可以让浏览器直接访问资源服务器而不需要再访问应用服务器了。架构图如下:2.页面缓存页面缓存...原创 2019-05-29 21:03:19 · 608 阅读 · 0 评论 -
设计模式-----Builder模式
1、什么是Builder模式?(1)对于复杂的对象,如果只是用构造方法创建的话,构造方法中会存在很多的逻辑,那么我们可以一步步有秩序构建它,从而降低复杂度;(2)对于复杂的对象,使用者不必知道其内部是如何实现的清下,逐步构造需要的实例对象;2、什么情况下使用Builder模式? (1)将一个复杂对象的构建与它的表示分离,即相同的构造过程可以有不同表示; (2)当有多个构造器且需要传入...原创 2019-05-29 21:26:40 · 98 阅读 · 0 评论 -
Java架构-不要成为项目风险的奴隶
一个项目经理如果一直在项目中处于救火状态,那他就不是一个好项目经理。我所接触到的项目经理中,大家最常犯的一个错误,就是低估项目难度导致进度不可控制。由此,我今天想和大家讨论的主题,就是项目风险管理了。项目中不可能没有风险,正如理财一样,没有风险就没有收益。低风险低收益,高风险高收益。而我们都知道著名的墨菲定律,既有可能出错的事就一定会出错。项目中也一样,风险如果存在,就代表他一定会发生。项目...原创 2019-05-29 21:27:23 · 376 阅读 · 0 评论 -
Java后端避坑——Spring Boot整合Shiro
Shiro 是一个比较常用的安全认证框架,简单又实用。在Spring Boot中整合Shiro有两种方式:将传统的SSM+Shiro中的配置用Java实现使用Shiro官方提供的自动化配置依赖本文选择实用第二种方式进行整合,但是在使用Postman进行测试的时候却出现了如下错误:org.apache.shiro.UnavailableSecurityManagerException: ...原创 2019-05-29 21:28:33 · 264 阅读 · 0 评论 -
Java学习总结——多线程编程
Java多线程编程一、创建线程的方法一:继承:extends Thread 重写run()方法举个栗子原创 2019-06-13 20:39:18 · 184 阅读 · 0 评论 -
Java并发 -- 线程生命周期
1. 初始状态线程已经被创建,但还不允许分配CPU执行该状态属于 编程语言 所特有,仅仅在编程语言层面被创建,在操作系统层面,真正的线程还没有创建2. 可运行状态线程可以分配CPU执行,该状态下真正的操作系统线程已经被创建3. 运行状态当有空闲的CPU时,操作系统会将其分配给处于 可运行状态 的线程,被分配到CPU的线程的状态就转换为 运行状态休眠状态处于 运行状态 的...原创 2019-06-14 21:09:04 · 187 阅读 · 0 评论 -
Java对象在内存的结构
一、内存布局对象在内存中存储的结构由三部分组成:对象头、实例数据、对齐填充。对象头MarkWord(标记字段) :哈希码、分代年龄、锁标志位、偏向线程ID、偏向时间戳等信息。Mark Word被设计成了一个非固定的数据结构以便在极小的空间内存储尽量多的信息,它会根据对象的状态复用自己的存储空间。例外:如果是数组的话,还需要有一块区域存放数组大小,因为没办法从元数据确认数组大小,所以要存...原创 2019-06-14 21:10:01 · 285 阅读 · 0 评论 -
Java和操作系统交互细节
结合 CPU 理解一行 Java 代码是怎么执行的根据冯·诺依曼思想,计算机采用二进制作为数制基础,必须包含:运算器、控制器、存储设备,以及输入输出设备,如下图所示。我们先来分析 CPU 的工作原理,现代 CPU 芯片中大都集成了,控制单元,运算单元,存储单元。控制单元是 CPU 的控制中心, CPU 需要通过它才知道下一步做什么,也就是执行什么指令,控制单元又包含:指令寄存器(IR ),指...原创 2019-06-14 21:11:02 · 328 阅读 · 0 评论 -
Java虚拟机必学之四大知识要点
作为一位 Java 程序员,在尽情享受 Java 虚拟机带来好处的同时,我们还应该去了解和思考“这些技术特性是如何实现的”,去了解最底层的原理。只有熟悉 JVM,你才能在遇到 OutOfMemory 等异常时,不会束手无策,不会一脸懵逼地上网找解决办法,最后就算改了几个启动参数解决了问题,也还是云里雾里。这次,我会从我专栏里提取了学习 Java 虚拟机的 X 大知识要点,助力大家深入理解 JVM...原创 2019-06-15 21:52:35 · 261 阅读 · 0 评论 -
深入浅出Spring Boot 起步依赖和自动配置
我们知道 Spring Boot 能快速的搭建起一个应用,简化了大量的配置过程,那到底有多”简”呢?我们通过一个例子来说明,平时我们通过 Spring 和 Spring MVC 搭建一个 helloword 的 Web 应用,需要做以下工作:配置 pom.xml 添加 Spring 、 Spring MVC 框架的依赖,同时还需要考虑这* 些不同的框架的不同版本是否存在不兼容的问题。配置 ...原创 2019-06-04 16:04:25 · 584 阅读 · 0 评论 -
java23种设计模式-门面模式(外观模式)
1 介绍外观模式(Facade),他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口。这种类型的设计模式属于结构性模式。为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用。2 角色和使用场景简单来说,该模式就是把一些复杂的流程封装成一个接口供给外部用户更简单的使用。这个模式中,设计到3个角色。门面角色:外观模式的核心。它被客户角色调用,它熟...原创 2019-06-04 21:19:57 · 198 阅读 · 0 评论 -
Java工程师搞懂分布式与高并发,看这篇就够了!
当提起这三个词的时候,是不是很多人都认为分布式=高并发=多线程?当面试官问到高并发系统可以采用哪些手段来解决,或者被问到分布式系统如何解决一致性的问题,是不是一脸懵逼?确实,在一开始接触的时候,不少人都会将三者混淆,误以为所谓的分布式高并发的系统就是能同时供海量用户访问,而采用多线程手段不就是可以提供系统的并发能力吗?实际上, 他们三个总是相伴而生,但侧重点又有不同。什么是分布式?分布式...原创 2019-06-04 21:24:34 · 1077 阅读 · 0 评论 -
谈谈Java任务的并行处理 原 荐
前言谈到并行,我们可能最先想到的是线程,多个线程一起运行,来提高我们系统的整体处理速度;为什么使用多个线程就能提高处理速度,因为现在计算机普遍都是多核处理器,我们需要充分利用cpu资源;如果站的更高一点来看,我们每台机器都可以是一个处理节点,多台机器并行处理;并行的处理方式可以说无处不在,本文主要来谈谈Java在并行处理方面的努力。无处不在的并行Java的垃圾回收器,我们可以看到每一代版本的...原创 2019-06-04 21:25:24 · 608 阅读 · 0 评论 -
Java高效并发
一段时间没有回顾多线程相关知识了,虽然工作中会用到一些多线程的内容,但都偏向于基础,今天重读多线程相关内容,发现有些东西还是需要注意下。这些一般是面试高频问题奥。了解并发的内幕是一个高级程序员不可缺少的课程Java内存模型注意,Java内存模型(JMM)和JVM运行时数据区不是同一个概念,还有一个概念是Java对象模型下次可以单独拿出来说。JMM都是围绕着原子性,可见性,有序性来讲的J...原创 2019-06-04 21:26:35 · 183 阅读 · 0 评论 -
是时候深入了解JAVA虚拟机了!
垃圾回收Java 语言中一个显著的特点就是引入了内存自动回收机制,使 c++ 程序员最头疼的内存管理的问题迎刃而解,它使得 java 程序员在编写程序的时候不再考虑内存管理(委托给 JVM 管理)。由于有个垃圾回收机制, java 中的对象弱化了作用域的概念,只有对象的引用才有作用域。垃圾回收可以有效防止内存泄露,有效地使用空闲的内存。程序计数器、 虚拟机栈、 本地方法栈 3 个区域随线程而生...原创 2019-06-04 21:32:59 · 179 阅读 · 0 评论 -
系统学习Java高并发
Java服务端或者后端需要大量的高并发计算,所以高并发在JAVA服务端或者后端编程中显的格外重要了。首先需要有几个概念:1. 同步和异步同步异步是来形容方法的一次调用的,同步必须等等方法调用结束后才可以继续后续的操作,而异步方法调用就会返回(真正的执行一般在另外一个线程中)就可以继续后续操作了。2. 并发和并行这两个概念都是表示2个或者多个任务一起执行,而并发侧重的是多任务交替执行,就是...原创 2019-06-04 21:33:55 · 254 阅读 · 0 评论 -
知海匠库:Java程序员必备的10个框架
Java程序员方向太多,比如:移动开发、大数据、区块链、人工智能等等这些,大部分Java程序员都是JavaWeb/后端开发。那作为一名JavaWeb开发程序员必须需要熟悉哪些框架呢?1.Spring毫无疑问,Spring框架现在是Java后端框架家族里面最强大的一个,其拥有IOC和AOP两大利器,大大简化了软件开发复杂性。并且,Spring现在能与所有主流开发框架集成,可谓是一个万能框架,Sp...原创 2019-06-03 21:32:12 · 419 阅读 · 0 评论 -
Java 12 发布了,决定Java未来的三大主要项目!
Java 12 发布了,没有引起很大的讨论。对于 Java 这样一门成熟的语言来说,每一次更新似乎都无法满足庞大的 Java 开发群体与生态圈。再加上 Oracle 对 Java 耐人寻味的态度,Java 的未来会如何?Java 的变化速度从未如此之快——如今,该语言的新版本每六个月就会发布一次。而之所以能够实现如此重大的转变,自然离不开一系列专注于提高其性能与添加新功能的协作性项目的贡献...原创 2019-06-03 21:31:20 · 299 阅读 · 0 评论 -
Spring Boot中如何干掉if else
需求这里虚拟一个业务需求,让大家容易理解。假设有一个订单系统,里面的一个功能是根据订单的不同类型作出不同的处理。订单实体:service接口:传统实现根据订单类型写一堆的if else:策略模式实现利用策略模式,只需要两行即可实现业务逻辑:可以看到上面的方法中注入了HandlerContext,这是一个处理器上下文,用来保存不同的业务处理器,具体在下文会讲解。我们从中获取一...原创 2019-06-03 21:29:45 · 380 阅读 · 0 评论 -
java写入文件的几种方法分享
这篇文章主要介绍了java写入文件的几种方法,需要的朋友可以参考下一、FileWritter写入文件FileWritter, 字符流写入字符到文件。默认情况下,它会使用新的内容取代所有现有的内容,然而,当指定一个true (布尔)值作为FileWritter构造函数的第二个参数,它会保留现有的内容,并追加新内容在文件的末尾。替换所有现有的内容与新的内容。new FileWriter(f...原创 2019-06-14 21:15:26 · 3195 阅读 · 0 评论 -
如何提高使用Java反射的效率?
难道反射真的很慢?那跟我们平时正常创建对象调用方法比慢多少? 估计很多人都没去测试过,只是“道听途说”。下面我们就直接通过一些测试用例来直观的感受一下“反射”。前言在我们平时的工作或者面试中,都会经常遇到“反射”这个知识点,通过“反射”我们可以动态的获取到对象的信息以及灵活的调用对象方法等,但是在使用的同时又伴随着另一种声音的出现,那就是“反射”很慢,要少用。难道反射真的很慢?那跟我们平时...原创 2019-06-14 21:17:08 · 437 阅读 · 0 评论 -
Java异常处理最佳实践及陷阱防范
前言不管在我们的工作还是生活中,总会出现各种“错误”,各种突发的“异常”。无论我们做了多少准备,多少测试,这些异常总会在某个时间点出现,如果处理不当或是不及时,往往还会导致其他新的问题出现。所以我们要时刻注意这些陷阱以及需要一套“最佳实践”来建立起一个完善的异常处理机制。正文异常分类首先,这里我画了一个异常分类的结构图。在JDK中,Throwable是所有异常的父类,其下分为”Erro...原创 2019-06-14 21:21:14 · 275 阅读 · 0 评论 -
一位资深Java的阿里系公司实战面试经验,套路还是面试官的多
马老师说过,员工的离职原因很多,只有两点最真实:1、钱,没给到位2、心,受委屈了项目经验面试官在一开始会让你进行自我介绍,主要是想让你介绍一下自己做过的一些项目,看看你对这些项目的了解程度。因为很多人简历上写的项目并非都是从头到尾都参与的,有些只是参与并实现了其中的一些模块而已,或是接手维护别人的项目,所以在你简历上所写的和面试过程中所说的项目经验,你自己必须能够了解来龙去脉。之后,面试...原创 2019-06-03 20:51:26 · 424 阅读 · 0 评论