![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 74
javarrr
分享者java菜
展开
-
科班出身程序员和培训出来的程序员区别在哪?
科班出身只是代表你要从事的职业和你的专业是一致的,代表着你具备了得天独厚的优势,至于是不是优势看你上班好不好学,平时逃课没,上班是认真听还是玩手机。一般而言科班出来的理论性比较强,实践能力稍微差点,毕竟学校主要引导的思路的学习,有些人觉得学校就应该上来实践化的学习和社会接轨,那不就成职业学院了,如果学校都变成了社会了,请问大家心目中是不是还有象牙塔,其实上大学很多时候就是留下一个美好的念想,让自己...原创 2018-12-19 13:50:24 · 8737 阅读 · 0 评论 -
Java程序员学习Spring Boot,先看看这16条实践总结吧~
Spring Boot是最流行的用于开发微服务的Java框架。在本文主要分享的是在专业开发中使用Spring Boot所采用的最佳实践。这些内容是基于个人经验和一些熟知的Spring Boot专家的文章。在本文中重点介绍Spring Boot特有的实践(大多数时候,也适用于Spring项目)。以下依次列出了最佳实践,排名不分先后。1、使用自定义BOM来维护第三方依赖Spring Boot项目...原创 2018-12-20 12:20:59 · 456 阅读 · 0 评论 -
Java程序员月薪30K和月薪3K差别在哪?
开工作经验,项目经验,学历背景,单从技术点分析,哪些方面可以判断一个java程序员的技术扎实程度,怎样才能知道他值多少月薪?凭啥人家月薪30000,你月薪3000?月薪30K的Java程序员怎样判断一个程序员的技术是否扎实?除了项目实战外,在面试等情况下,最好能给被考核人一台可以上Google的电脑,然后给其一段自己的空间和时间,比如一个人在小会议室里10-20分钟。然后,另接一台显示器,...原创 2018-12-21 11:37:19 · 554 阅读 · 1 评论 -
比Hive快800倍!大数据实时分析领域黑马开源ClickHouse
一. 概述随着物联网 IOT 时代的来临,IOT 设备感知和报警存储的数据越来越大,有用的价值数据需要数据分析师去分析。大数据分析成了非常重要的环节。当然近两年开启的开源大潮,为大数据分析工程师提供了十分富余的工具。但这同时也增加了开发者选择合适的工具的难度,尤其对于新入行的开发者来说。学习成本,框架的多样化和复杂度成了很大的难题。例如 Kafka,Hdfs,Spark,Hive 等等组合才能...原创 2018-12-27 12:36:11 · 885 阅读 · 0 评论 -
下一代的微服务架构基础是ServiceMesh?
今年,ServiceMesh(服务网格) 概念在社区里头非常火,有人提出 2018 年是 ServiceMesh 年,还有人提出 ServiceMesh 是下一代的微服务架构基础。作为架构师,如果你现在还不了解 ServiceMesh 的话,是否感觉有点落伍了?那么到底什么是 ServiceMesh?它的诞生是为了解决什么问题?企业是否适合引入 ServiceMesh?通过这篇文章,将为你一一...原创 2018-12-27 16:54:16 · 224 阅读 · 0 评论 -
玩转不同业务场景,这些RabbitMQ特性会是得力助
我是在解决分布式事务的一致性问题时了解到的RabbitMQ,当时主要是要基于RabbitMQ来实现我们分布式系统之间对有事务可靠性要求的系统间通信。 提到RabbitMQ,不难想到的几个关键字:消息中间件、消息队列。当时在大学学习操作系统这门课,消息队列不难想到生产者消费者模式。(PS:操作系统这门课程真的很好也很重要,其中的一些思想在我工作的很长一段时间内给了我很大帮助和启发,给我提...原创 2018-12-22 11:13:49 · 313 阅读 · 0 评论 -
清清楚楚地搭建MongoDB数据库(以搭建4.0.4版本的副本集为例)
数据的目录文件层次设计 我们一般采用多实例的方式,而不是将所有的数据库尽可能地放在一个实例中。主要基于以下考虑:1:不同业务线对应的数据库放在不同的实例上,部分操作的运维时间容易协调等到。2:相互独立,减少相互干扰。不会因为某个业务的激增或某个开发Team的代码问题,拖累太多的数据库。3:实例资源容易控制,例如内存等。从上图可以知道,mongo二进制文件是多个实例公...原创 2018-12-22 14:23:36 · 877 阅读 · 0 评论 -
JVM之ParNew和CMS日志分析
今天这篇文章主要是对生产环境中(Java7)常用的两种垃圾收集器(ParNew:年轻代,CMS:老年代)从日志信息上进行分析,做一下总结,这样当我们在排查相应的问题时,看到 GC 的日志信息,不会再那么陌生,能清楚地知道这些日志是什么意思,GC 线程当前处在哪个阶段,正在做什么事情等。ParNew 收集器ParNew 收集器是年轻代常用的垃圾收集器,它采用的是复制算法,youngGC 时一...原创 2018-12-28 11:17:51 · 292 阅读 · 0 评论 -
微服务生命周期的9个任务事项
微服务实施需要明确每一步怎么做,可能存在的问题和解决思路、方法。如果能有相应的经验和理论指导,将会大大有助于我们设计和构建微服务体系。但由于目前大部分人员都是关注微服务开发框架或工具,甚少讨论微服务架构方法论。因此,进行微服务规划,在一个相对较高的层次来探讨、研究微服务的设计和实现显得尤为重要。理论方法论就象灯塔、导航,为我们指明了方向,虽然也会有这样那样的问题,但只要方向对了,就不会南辕北辙,总...原创 2018-12-18 11:05:59 · 554 阅读 · 0 评论 -
利用Docker容器的不安全部署获取宿主机权限
前言滥用容器( container)及逃逸的方法有多种,本文将讨论最基本的一种,即滥用docker socket来逃逸容器并在宿主机上以root身份执行代码。实验环境设置由于我们将使用容器,因此你必须安装docker。创建网络首先,我们在创建容器的地方创建一个docker网络:docker network create pwnage启动易受攻击的容器在本示例中...原创 2018-12-24 11:04:27 · 579 阅读 · 1 评论 -
你所不知道的库存超限做法
在互联网企业中,限购的做法,多种多样,有的别出心裁,有的因循守旧,但是种种做法皆想达到的目的,无外乎几种,商品卖的完,系统抗的住,库存不超限。虽然短短数语,却有着说不完,道不尽,轻者如释重负,重者涕泪横流的架构体验。 但是,在实际开发过程中,库存超限,作为其中最核心的一员,到底该怎么做,如何做才会是最合适的呢?今天这篇文章,我将会展示给大家库存限购的五种常见的做法,并对其利弊一一探讨,由于这五...原创 2019-01-03 16:17:28 · 397 阅读 · 0 评论 -
像调试java一样来调试Redis lua
高并发的系统中,redis的使用是非常频繁的,而lua脚本则更是锦上添花。因为lua脚本本身执行的时候是一个事务性的操作,不会掺杂其他外部的命令,所以很多关键的系统节点都会用redis+lua来实现一致性的操作请求。但是在实际开发过程中,由于redis lua脚本调试难的问题,导致大量的时间耗费在了这上面。如果有什么方案能够让我们像利用IDEA调试java一样简便去调试redis lua脚本,那该...原创 2018-12-29 11:10:50 · 329 阅读 · 0 评论 -
常被问到的十个 Java 面试题
在这篇文章中,我试图收录最有趣和最常见的问题。此外,我将为您提供正确的答案。接下来,就让我们来看看这些问题。 1. 以满分十分来评估自己——你有多擅长 Java?如果你并不完全确信你自己或是你对 Java 的熟练程度,那么这会是一个非常棘手的问题。如果有这种情况,你应该把打分调低一点。之后,你大概会得到与你承认的水平相符的问题。因此,假如你给自己满分,却不能回答一个有点难的问题,那...原创 2018-12-25 11:00:22 · 123 阅读 · 0 评论 -
微服务架构下的监控需要注意哪些方面?
微服务架构在带来灵活性、扩展性、伸缩性以及高可用性等优点的同时,其复杂性也给运维工作中最重要的监控环节带来了很大的挑战,从用户的角度看,微服务架构下的监控应该注意哪些方面?微服务架构虽然诞生的时间并不长,却因为适应现今互联网的高速发展和敏捷、DevOps 等文化而受到很多企业的推崇。微服务架构在带来灵活性、扩展性、伸缩性以及高可用性等优点的同时,其复杂性也给运维工作中最重要的监控环节带来了很大...原创 2018-12-30 11:04:29 · 178 阅读 · 0 评论 -
JVM基础面试题及原理讲解
本文从 JVM 结构入手,介绍了 Java 内存管理、对象创建、常量池等基础知识,对面试中 JVM 相关的基础题目进行了讲解。写在前面(常见面试题)基本问题介绍下 Java 内存区域(运行时数据区) Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么) 对象的访问定位的两种方式(句柄和直接指针两种方式)拓展问题String类和常量池 8种基本类型的...原创 2019-01-04 14:25:34 · 779 阅读 · 0 评论 -
java类实例化内存过程与面向对象特征
在谈到类实例化的内存过程时先说说几个概念:对象:内存上来说是分配在堆上面的一块内存区域类:把一类具体事物相同特征,功能/行为抽象为属性与方法过程。类是对象的模板,对象是类的具体表现。构造函数:与类名同名的函数,用来实例化对象并初始化成员变量。注意:构造器、构造函数不能称为构造方法。类的结构:静态块:当对应的class文件被首次加载到虚拟机时执行。代码块构造函数...原创 2019-01-05 11:45:31 · 312 阅读 · 0 评论 -
优秀Java程序员应该了解的GC工作原理
一个优秀的Java程序员必须了解GC的工作原理、如何优化GC的性能、如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理效率 ,才能提高整个应用程序的性能。一个优秀的Java程序员必须了解GC的工作原理、如何优化GC的性能、如何与GC进行有限的交互,因为有一些应用程序对性能要求较高,例如嵌入式系统、实时系统等,只有全面提升内存的管理效...原创 2018-12-26 11:12:09 · 173 阅读 · 0 评论 -
Docker Compose 引用环境变量
在项目中,往往需要在 docker-compose.yml 文件中使用环境变量来控制不同的条件和使用场景。本文集中介绍 docker compose 引用环境变量的方式。说明:本文的演示环境为 ubuntu 16.04。Compose CLI 与环境变量Compose CLI(compose command-line 即 docker-compose 程序)能够识别名称为 COMPOSE...原创 2019-01-11 15:21:15 · 2338 阅读 · 0 评论 -
网络传输数据序列化工具Protostuff
一直在物色比较好用的网络传输数据序列化工具,看了诸如marshalling,protobuff等,但是均有一个共同特点,使用起来异常繁杂,有没有比较好用同时性能又不会太差的组件呢?答案当然是有的,那就是基于protobuff改造的protostuff,它拥有良好性能的同时,又免去了生成描述文件的烦恼,可谓是趁手利器。来看看具体的使用方式吧。首先,引入maven依赖如下:<dep...原创 2019-01-02 11:29:41 · 200 阅读 · 0 评论 -
mac上配置java开发环境
项目在mac上跑起来的步骤:1. 访问,https://brew.sh/ 装上这个然后 brew install git brew install maven, settings.xml需要放到目录位置/usr/local/Cellar/maven/<version>/libexec/confbrew install switchhosts (按照提示更改安装目录)...原创 2019-01-02 11:40:08 · 3339 阅读 · 0 评论 -
SpringCache实战遇坑
1. SpringCache实战遇坑1.1. pom主要是以下两个<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></depen...原创 2019-01-17 11:02:17 · 1282 阅读 · 0 评论 -
jvm疯狂吞占内存,罪魁祸首是谁?
导读JVM是Java Virtual Machine的缩写,中文名为Java虚拟机。它是一种用于计算设备的规范,是一个虚构出来的计算机,主要通过在实际的计算机上仿真模拟各种计算机功能来实现的。在实际运用过程中,易观技术人员注意到一台开发机上各个微服务进程占用内存很高,随即便展开了调查...... 现象:前段时间发现某台开发机上各个微服务进程占用内存很高,这里记录下解决思路,仅供参考。...原创 2019-01-07 12:01:26 · 4647 阅读 · 0 评论 -
使用 SpringAOP 获取一次请求流经方法的调用次数和调用耗时
引语作为工程师,不能仅仅满足于实现了现有的功能逻辑,还必须深入认识系统。一次请求,流经了哪些方法,执行了多少次DB操作,访问了多少次文件操作,调用多少次API操作,总共有多少次IO操作,多少CPU操作,各耗时多少 ? 开发者应当知道这些运行时数据,才能对系统的运行有更深入的理解,更好滴提升系统的性能和稳定性。完成一次订单导出任务,实际上是一个比较复杂的过程:需要访问ES 来查询订单,调用批...原创 2019-01-13 14:45:18 · 1005 阅读 · 0 评论 -
一文快速了解Java集合框架
1. 简介JDK1.2 引入了 Java 集合框架,包含一组数据结构。与数组不同,这些数据结构的存储空间会随着元素添加动态增加。其中,一些支持添加重复元素另一些不支持,一些支持 null,一些能自动升序打印元素。所有这些数据结构在 java.util 包里,包含了 Collection、List、Set、Map、SortedMap 接口。这些接口的实现类有 LinkedList、TreeS...原创 2019-01-08 14:24:56 · 120 阅读 · 0 评论 -
Medium 架构实践:避免微服务综合症
微服务架构的目标是帮助工程师团队更快、更安全、更高质量地交付产品。解耦服务使团队能够快速迭代,并尽可能降低对系统其余部分的影响。在 Medium,我们的技术栈始于 2012 年的单体 Node.js 应用程序。我们已经构建了几个卫星通讯服务,但还没有系统地制定一个采用微服务架构的策略。随着系统变得越来越复杂并且团队不断发展,我们在 2018 年初转向了微服务架构。在这篇文章中,我们希望分享关于...原创 2019-01-14 10:51:39 · 247 阅读 · 0 评论 -
一文详解微服务架构的数据设计
微服务是一个软件架构模式,对微服务的讨论大多集中在容器或其他技术是否能很好的实施微服务这些方面。 本文将从以下几个角度来和大家分享在微服务架构下进行数据设计需要关注的地方,旨在帮助大家在构建微服务架构时,提供一个数据方面的视角: 什么是微服务 微服务的优势及架构特点 微服务架构下的数据设计 一个适合微服务架构的数据库 什么是微...原创 2019-01-19 11:29:44 · 328 阅读 · 0 评论 -
Java 性能调优的 11 个实用技巧
大多数开发人员认为性能优化是个比较复杂的问题,需要大量的经验和知识。是的,这并不没有错。诚然,优化应用程序以获得最好的性能并不是一件容易的事情,但这并不意味着你在没有获得这些经验和知识之前就不能做任何事。下面有几个很容易遵循的建议和最佳实践能够帮你创建一个性能良好的应用程序。这些建议中的大多数都是基于Java的,但是也不一定,也有一些是可以应用于所有的应用程序和编程语言的。在我们分享基于Jav...原创 2019-01-24 14:14:36 · 99 阅读 · 0 评论 -
深入分析Java I/O的工作机制 (一)
1.Java的I/O类库的基本架构先说一下什么是类库:可以说是类的集合,类库包括接口、抽象类、具体类等。I/O是机器获取和交互信息的主要渠道。 java在I/O上也一直在做持续的优化,在1.4版开始引入了NIO,提升了I/O的性能。java的I/O操作类在包java.io下,大概有80个类左右,这些类大概可以分为如下4组: 基于字节操作的I/O接口:InputStream和Out...原创 2019-01-19 17:03:51 · 152 阅读 · 0 评论 -
Spring IOC核心源码学习
1. 初始化大致单步跟了下Spring IOC的初始化过程,整个脉络很庞大,初始化的过程主要就是读取XML资源,并解析,最终注册到Bean Factory中:在完成初始化的过程后,Bean们就在BeanFactory中蓄势以待地等调用了。下面通过一个具体的例子,来详细地学习一下初始化过程,例如当加载下面一个bean: 1 2 3 4 5 ...原创 2019-01-09 11:31:12 · 234 阅读 · 0 评论 -
Java8内存模型—永久代(PermGen)和元空间(Metaspace)
一、JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。 1、虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法会创建一个栈帧,栈帧中存放了局部变量表(基本数据类型和对象引用)、操作数栈、方法出口等信息。栈的大小可以固定也可以动态扩展。当栈调用深度大于JVM所允许的范围,会抛...原创 2019-01-15 10:59:18 · 192 阅读 · 0 评论 -
2019年顶级微服务面试解析
36%的企业目前正在使用微服务,另有26%的企业正在研究如何实施这些服务。1.什么是Spring Cloud? 在微服务中,Spring Cloud是一个提供与外部系统集成的系统。它是一个轻框架,可以快速构建应用程序。与有限数量的数据处理相关联,它在微服务架构中起着非常重要的作用。对于典型用例,Spring Cloud提供了开箱即用的体验以及下面提到的一系列广泛功能: 版本化和...原创 2019-01-25 15:47:18 · 741 阅读 · 0 评论 -
基于 SpringCloud 的微服务治理架构落地实践
一 概述关于微服务的介绍目前已经有很多文章做了介绍,本文不再对微服务的概念再做进一步阐述,重点将介绍微服务架构具体开发运维方面的经验总结,侧重于落地实践。目前业界比较热门的微服务开发框架是SpringCloud和dubbo,由于前期一些项目已经使用了SpringBoot进行快速开发,自然就平滑地升级到SpringCloud进行微服务实践。另外,按照微服务不断演进的思路,我们首先对非核心业务...原创 2019-01-10 11:42:31 · 682 阅读 · 0 评论 -
Kafka是如何解决常见的微服务通信问题的
微服务自成立以来就以不同的方式相互沟通。有些人更喜欢使用HTTP REST API,但这些API有自己的排队问题,而有些则更喜欢较旧的消息队列,比如RabbitMQ,它们带有扩展和操作方面的问题。以Kafka为中心的架构旨在解决这两个问题。在本文中,我将解释Apache Kafka如何改进微服务中使用的历史HTTP REST API /消息队列体系结构以及它如何进一步扩展其功能。两个阵...原创 2019-01-21 19:33:17 · 408 阅读 · 0 评论 -
20 分钟教你搞懂 Git!
尽管每天你都会用到Git,常用的命令可能不到5个,但你可能现在还搞不懂它的工作原理。为什么Git可以管理版本?基本命令git add和git commit到底在干什么? 在这篇文章中,我将用一个例子来解释Git的运行过程,帮助你理解Git的工作原理。 1. 初始化 让我们创建一个项目的目录,然后进入该目录。 $ mkdir git-demo-pr...原创 2019-01-26 16:31:41 · 227 阅读 · 1 评论 -
从 JVM 分析 hibernate-validator NoClassDefFoundError
最近排查一个spring boot应用抛出hibernate.validator NoClassDefFoundError的问题,异常信息如下:Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.internal.engine.ConfigurationIm...原创 2019-01-16 11:05:27 · 656 阅读 · 0 评论 -
全面对比 Redis 和 Memcached 的 6 点区别
说到redis就会联想到memcached,反之亦然。了解过两者的同学有那么个大致的印象:redis与memcached相比,比仅支持简单的key-value数据类型,同时还提供list,set,zset,hash等数据结构的存储;redis支持数据的备份,即master-slave模式的数据备份;redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用等等,这似...原创 2019-01-27 14:30:01 · 132 阅读 · 0 评论 -
完了!生产事故!几百万消息在消息队列里积压了几个小时!
一、面试题如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?二、面试官心里分析你看这问法,其实本质针对的场景,都是说,可能你的消费端出了问题,不消费了,或者消费的极其极其慢。接着就坑爹了,可能你的消息队列集群的磁盘都快写满了,都没人消费,这个时候怎么办?或者是整个这就积压了几个小时,你这个时候怎么办?或者是你积压的时间太长了,...原创 2019-02-01 14:47:01 · 1401 阅读 · 0 评论 -
Java异常处理的9个最佳实践
无论你是新手还是资深程序员,复习下异常处理的实践总是一件好事,因为这能确保你与你的团队在遇到问题时能够处理得了它。在 Java 中处理异常并不是一件易事。新手觉得处理异常难以理解,甚至是资深开发者也会花上好几个小时来讨论是应该抛出抛异常还是处理异常。这就是为何大多数开发团队都拥有一套自己的异常处理规范。如果你初进团队,你也许会发现这些规范和你曾使用的规范大相径庭。尽管如此,这里还是有一...原创 2019-01-22 16:48:28 · 138 阅读 · 0 评论 -
如何修复Java中的VirtualMachineError
即使是最好的代码也会抛出错误,对开发人员而言这意味着需要知道如何修复它们。在这篇文章中,Ram Lakshmanan 介绍了许多不同类型的 VirtualMachineError 以及如何解决这些问题,在应用程序不崩溃的前提下回到正常状态。 当 Java 虚拟机遇到内部错误或资源限制无法运行时,就会抛出 Java.lang.VirtualMachineError。它是 JVM 的一种自我防...原创 2019-01-28 19:36:13 · 2349 阅读 · 0 评论 -
避过这8个坑,2019必得心仪offer!
在过去的2018年中,你都犯了哪些错误?本文囊括了大家常见的八大误区: 找工作层面: 时间精力分配错误 求职时间点踏错 面试准备失误 心态变化与侥幸心理:总会有公司招聘的Bar不高,例如startup 不知道哪些公司可以投递 技术层面: 知识面过窄/过宽 工业界的项目开发流程 工业界日常使用的工具 ...原创 2019-02-14 18:45:55 · 367 阅读 · 1 评论