自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(37)
  • 收藏
  • 关注

转载 Java程序员注意——审查Java代码的六种常见错误

代码审查是消灭Bug最重要的方法之一,这些审查在大多数时候都特别奏效。由于代码审查本身所针对的对象,就是俯瞰整个代码在测试过程中的问题和Bug。并且,代码审查对消除一些特别细节的错误大有裨益,尤其是那些能够容易在阅读代码的时候发现的错误,这些错误往往不容易通过机器上的测试识别出来。本文就常见的Java代码中容易出现的问题提出一些建设性建议,以便您在审查代码的过程中注意到这些常见的细节性错误。通常...

2019-07-25 17:19:43 257

转载 如何在JAVA中比较两个String对象

问题最近写程序的时候,遇到了需要比较两个 String 对象是否相等的情况,我习惯性的写了形如if(a == "a"){}的语句,IDEA 跳出警告,内容如下:String values are compared using '==', not 'equals()'.也就是说我刚刚那句话应该写成if(a.equals("a")){}才对,果然不再标红了。说明那么,为什么会这样呢?==和e...

2019-07-24 21:05:50 536

转载 细细讲述Java技术开发的那些不为人知的规则

本文介绍的Java规则的说明分为3个主要级别,中级是平时开发用的比较多的级别,在今后将陆续写出其他的规则。遵守了这些规则可以提高程序的效率、使代码又更好的可读性等。一、在finally方法里关掉input或者output资源方法体里面定义了input或者output流的话,需要在finally里面把它关掉。以下这几种调用不需要遵守这条规则,因为colse()方法不起作用:java.io.S...

2019-07-23 21:27:33 162

转载 Java程序员必知——基于微服务的软件架构模式

微服务(micro services)这个概念不是新概念,很多公司已经在实践了,例如亚马逊、Google、FaceBook,Alibaba。微服务架构模式 (Microservices Architecture Pattern)的目的是将大型的、复杂的、长期运行的应用程序构建为一组相互配合的服务,每个服务都可以很容易得局部改良。 Micro这个词意味着每个服务都应该足够小,但是,这里的小不能用代码...

2019-07-22 20:40:22 176

转载 新一代分布式任务调度框架:当当elastic-job开源项目的10项特性

一、为什么需要作业(定时任务)?作业即定时任务。一般来说,系统可使用消息传递代替部分使用作业的场景。两者确有相似之处。可互相替换的场景,如队列表。将待处理的数据放入队列表,然后使用频率极短的定时任务拉取队列表的数据并处理。这种情况使用消息中间件的推送模式可更好的处理实时性数据。而且基于数据库的消息存储吞吐量远远小于基于文件的顺序追加消息存储。但在某些场景下则不能互换:时间驱动 OR 事...

2019-07-22 15:58:36 362

转载 Java并发编程:线程及同步的性能——线程池

线程池和ThreadPoolExecutors虽然在程序中可以直接使用Thread类型来进行线程操作,但是更多的情况是使用线程池,尤其是在Java EE应用服务器中,一般会使用若干个线程池来处理来自客户端的请求。Java中对于线程池的支持,来自ThreadPoolExecutor。一些应用服务器也确实是使用的ThreadPoolExecutor来实现线程池。对于线程池的性能调优,最重要的参数...

2019-07-21 20:54:50 165

转载 Java程序员必备——Tomcat配置技巧Top10

一、配置系统管理(Admin Web Application)大多数商业化的J2EE服务器都提供一个功能强大的管理界面,且大都采用易于理解的Web应用界面。Tomcat按照自己的方式,同样提供一个成熟的管理工具,并且丝毫不逊于那些商业化的竞争对手。Tomcat的Admin Web Application最初在4.1版本时出现,当时的功能包括管理context、data source、user和...

2019-07-18 20:31:56 103

转载 Java千万级别数据生成文件思路和优化

一年前写过一个百万级别数据库数据生成配置xml文件的程序,程序目的是用来把数据库里面的数据生成xml文件.程序可以配置多少文件生成到一个文件中去。程序刚开始设计的时候说的是最多百万级别数据,最多50W数据生成到一个xml文件里面去,所以在做测试的时候自己也只是造了100W的数据并没有做过多数据量的测试,然后问题就来了....由于程序使用的局点数据量巨大,需要生成xml文件的客户资料接近千万级别的...

2019-07-17 16:56:40 203

转载 Java程序员必须要掌握的13个集合类操作优化

本文首先针对 Java 集合接口进行了一些介绍,并对这些接口的实现类进行详细描述,包括 LinkedList、ArrayList、Vector、Stack、Hashtable、HashMap、WeakHashMap 等,然后对一些实现类的实现方式和使用经验进行讲解,同时重点介绍 WeakHashMap。希望通过本文介绍,可以让读者对集合的操作方式、注意事项等有一些了解。在实际的项目开发中会有很多...

2019-07-16 21:10:03 111

转载 Java程序员必须掌握Spring XML配置的12个技巧

Spring是一个强有力的Java程序框架,其被广泛应用于Java的程序中。它用POJO提供了企业级服务。Spring利用依赖注入可以获得简单而有效的测试能力。Spring beans,依赖关系,以及服务所需要的bean都将在配置文件中予以描述,配置文件一般采用XML格式。然而XML配置文件冗长而不易使用,在你进行一个使用了大量bean的大项目中它将变得难以阅读和控制。在这篇文章中我将给你展示1...

2019-07-16 16:50:15 83

转载 Java程序员编程性能优化必备的34个小技巧

1.尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:控制资源的使用,通过线程同步来控制资源的并发访问;控制实例的产生,以达到节约资源的目的;控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。2.尽量避免随意使用静态变量要知道,当某个对象被定义为sta...

2019-07-15 22:22:06 169

转载 阿里后端Java面试题:启动线程是start()还是run()?为什么?

面试官:请问启动线程是start()还是run()方法,能谈谈吗?应聘者:start()方法当用start()开始一个线程后,线程就进入就绪状态,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。但是这并不意味着线程就会立即运行。只有当cpu分配时间片时,这个线程获得时间片时,才开始执行run()方法。start()是方法,它调用run()方法.而run()方法是你必须...

2019-07-14 21:19:22 97

转载 技术迭代日益快速的时代下,技术人如何自处?

科技发展的迅速是一件令人兴奋的事情。但如果站在一个技术开发者的角度去看的话,反而是一件心累的事儿,因为想要跟上科技更新的脚步并不是一件容易的事。所以作为技术人,我们是紧跟技术发展的潮流还是深挖其中的一项技术,必然就会牵扯到我们的一个职业规划问题。我就简单的举个例子,我想大部分人职业生涯的初期,跳槽、换工作大都是为了薪资,哪个方向赚的多,我去干哪个,哪家公司给开的价高,福利待遇好,那我就去那家公...

2019-07-12 21:41:40 205

转载 面试的时候怎么和面试官讲解你对MySQL索引的理解

一、索引是什么?索引是帮助MySQL高效获取数据的数据结构。二、索引能干什么?索引非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发重要。索引能够轻易将查询性能提高好几个数量级,总的来说就是可以明显的提高查询效率。三、索引的分类?1、从存储结构上来划分:BTree索引(B-Tree或B+Tree索引),Hash索引,full-index全文索引,R-Tree索引。这里所描...

2019-07-11 21:20:18 96

转载 十分钟深入理解HashMap源码

十分钟就要深入理解HashMap源码,看完你能懂?我觉得得再多看一分钟,才能完全掌握!终于来到比较复杂的HashMap,由于内部的变量,内部类,方法都比较多,没法像ArrayList那样直接平铺开来说,因此准备从几个具体的角度来切入。桶结构HashMap的每个存储位置,又叫做一个桶,当一个Key&Value进入map的时候,依据它的hash值分配一个桶来存储。看一下桶的定义:t...

2019-07-10 22:06:44 87

转载 京东后端Java高级架构师面经+面试题:Spring+多线程+NIO+MySQL

之前面了腾讯的提前批,不过没走流程。同期还面了阿里的两轮面试,被告知不走流程就不能面了,所以也没面完。后来走了京东这边的流程。前几天刚刚面完HR。正好今天分享一下面经,大家可以多交流交流哈。京东面经第一轮:电话初面第二轮:技术面谈第三轮:高管复试第四轮:HR最后确认第一轮电话初面:首先确认对京东的意向度(如果异地更会考虑对工作地点(北京)的意向度!京东很看重这个);其次面试官...

2019-07-09 21:01:18 374

转载 联想高级Java研发面经+面试题:Spring+多线程+MySQL+设计模式

上个礼拜,之前的一个同事突然联系我说他去面了联想的JAVA开发工程师,想分享一下面试经历和面试题。我当时就拍板说,好啊!然后就整理了一下,写了这篇文章;和大家分享一下这次面试经验和面试题。薪资还可以啊,年薪40W+啊!多少人的梦想啊!言归正传,和大家分享一下这次联想的面经和面试题:联想面经:第一轮:电话初面第二轮:技术面谈第三轮:高管复试第四轮:HR最后确认No.1:第一...

2019-07-09 15:56:44 169

转载 总结软件开发过程中最常犯的10个问题

先总结一下Top10吧Array转ArrayList判断一个数组是否包含某个值在循环内部删除List中的一个元素HashTable与HashMap使用集合原始类型(raw type)访问级别ArrayList和LinkedList可变与不可变父类和子类的构造方法“”还是构造方法这个列表总结了10个Java开发人员最常犯的错误。1、Array转ArrayList当需要...

2019-07-08 22:40:45 303

转载 Java程序员注意——扼杀性能的 10 个常见 Hibernate 错误

你有没有想过如果你能解决Hibernate问题,那么你的应用程序可以更快?那么请阅读这篇文章!我在很多应用程序中修复过性能问题,其中大部分都是由同样的错误引起的。修复之后,性能变得更溜,而且其中的大部分问题都很简单。所以,如果你想改进应用程序,那么可能也是小菜一碟。这里列出了导致Hibernate性能问题的10个最常见的错误,以及如何修复它们。错误1:使用Eager FetchingFe...

2019-07-08 20:32:37 137

转载 面试官:你是如何使用JDK来实现自己的缓存(支持高并发)?

需求分析项目中经常会遇到这种场景:一份数据需要在多处共享,有些数据还有时效性,过期自动失效。比如手机验证码,发送之后需要缓存起来,然后处于安全性考虑,一般还要设置有效期,到期自动失效。我们怎么实现这样的功能呢?解决方案使用现有的缓存技术框架,比如redis,ehcache。优点:成熟,稳定,功能强大;缺点,项目需要引入对应的框架,不够轻量。如果不考虑分布式,只是在单线程或者多线程间作数据...

2019-07-06 21:04:48 117

转载 网易Java研发面试官眼中的Java并发——安全性、活跃性、性能

一. 安全性问题线程安全的本质是正确性,而正确性的含义是程序按照预期执行理论上线程安全的程序,应该要避免出现可见性问题(CPU缓存)、原子性问题(线程切换)和有序性问题(编译优化)需要分析是否存在线程安全问题的场景:存在共享数据且数据会发生变化,即有多个线程会同时读写同一个数据针对该理论的解决方案:不共享数据,采用线程本地存储(Thread Local Storage,TL...

2019-07-05 22:13:22 69

转载 字节跳动Java研发面试99题(含答案):JVM+Spring+MySQL+线程池+锁

JVM的内存结构根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。1. Java虚拟机栈:线程私有;每个方法在执行的时候会创建一个栈帧,存储了局部变量表,操作数栈,动态连接,方法返回地址等;每个方法从调用到执行完毕,对应一个栈帧在虚拟机栈中的入栈和出栈。2. 堆:线程共享;被所有线程共享的一块内存区域,在虚拟机启动时创建,用于存放对象实例。3. 方...

2019-07-04 15:58:57 2141

转载 JAVA后端面试必知——ListIterator和Iterator的异同

在使用Java集合的时候,都需要使用Iterator。但是java集合中还有一个迭代器ListIterator,在使用List、ArrayList、LinkedList和Vector的时候可以使用。这两种迭代器有什么区别呢?下面我们详细分析。这里有一点需要明确的时候,迭代器指向的位置是元素之前的位置。首先看一下Iterator和ListIterator迭代器的方法有哪些。Iterator迭代器...

2019-07-02 22:12:46 92

转载 Java程序员面试必备——kafka的专业术语

主题 + 客户端发布订阅的对象是主题(Topic)向主题发布消息的客户端应用程序称为生产者(Producer),生产者可以持续不断地向多个主题发送消息订阅这些主题消息的客户端应用程序称为消费者(Consumer),消费者能够同时订阅多个主题的消息生产者和消费者统称为客户端服务端Kafka的服务端由被称为Broker的服务进程构成,一个Kafka集群由多个Broke...

2019-07-01 20:59:30 240

转载 招Java程序员的最佳方式是这样的?

那天晚上,我正在回想面试中间我最出彩的表现。让我那次表现特别有趣的,不是我做得『有多么好』,而是我『如何做得很好』。以及对自己以及整个过程不满意的地方。我那时正在应聘一个软件开发的职位,这个公司的面试流程先是电话面试,再到编程测试,最后才正式面试。我在电话面试中表现得很棒,那位招聘人员也说公司对我很感兴趣 —— 我心想有戏了,一切努力都没有白费。虽不知那位招聘人员的具体评估是怎样的,但那个公...

2019-06-28 20:24:25 71

转载 玩转redis持久化,阿里架构师给你来一篇方案介绍

一、基本介绍本次演示使用的redis版本是3.2.100,操作系统是win10。redis支持两种持久化方案,RDB和AOF,前者是默认打开的,后者需要手动开启。我们通过配置文件可以验证这一点,RDB默认开启save 900 1save 300 10save 60 10000这三条配置是RDS触发快照的条件,它们的意思分别是:900秒内如果有一条写入,则产生快照300秒内如果...

2019-06-27 21:45:27 51

转载 阿里P7架构师是如何解决跨域问题的!你有遇到吗?

现在越来越多的项目就算是一个管理后端也偏向于使用前后端分离的部署方式去做,为了顺应时代的潮流,一前后端分离就产生了跨域问题,所以许多同学把跨域和前后端分离项目联系在了一起,其实跨域产生的原因并不是前后端分离导致的,那我们一起来看一下,希望可以靠这一篇文章解答大家所有的跨域问题一、跨域产生的条件使用xmlHttpRequest,即我们通常说的ajax请求浏览器做了这个事访问的域名不同,即...

2019-06-27 21:15:40 71

转载 面试点:Java 中 hashCode() 和 equals() 的关系

Java 中 hashCode() 和 equals() 的关系是面试中的常考点,如果没有深入思考过两者设计的初衷,这个问题将很难回答。除了应付面试,理解二者的关系更有助于我们写出高质量且准确的代码。一.基础:hashCode() 和 equals() 简介在学习 hashCode() 和 equals() 之间的关系之前, 我们有必要先单独地了解他俩的特点.equals()equal...

2019-06-26 21:59:42 99

转载 一文详解Spring Cloud Feign重试机制

前言Feign组件默认使用Ribbon的重试机制并增加了根据状态码判断重试机制,默认情况下是不启用的。Feign使用的是Spring Retry组件,需要引入依赖才能启用。一、POM引入Spring Retry<dependency> <groupId>org.springframework.retry</groupId> ...

2019-06-25 20:33:55 601

转载 Java面试问题——线程全面详解总结

一、多线程是什么?为什么要用多线程?介绍多线程之前要介绍线程,介绍线程则离不开进程。首先进程 :是一个正在执行中的程序,每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元;线程:就是进程中的一个独立控制单元,线程在控制着进程的执行。一个进程中至少有一个进程。多线程:一个进程中不只有一个线程。为什么要用多线程:为了更好的利用cpu的资源,如果只有一个线程,则第二...

2019-06-25 16:27:07 84

转载 阿里P8架构师详解Java性能调优策略

一、性能测试Ⅰ.测试方法微基准性能测试可以精准定位到某个模块或者某个方法的性能问题,例如对比一个方法使用同步实现和非同步实现的性能差异宏基准性能测试宏基准性能测试是一个综合测试,需要考虑到测试环境、测试场景和测试目标测试环境:模拟线上的真实环境测试场景:在测试某个接口时,是否有其他业务的接口也在平行运行,进而造成干扰测试目标可以通过吞吐量和响应时间来衡量系统是否达...

2019-06-24 20:50:01 69

转载 Java并发——阿里架构师是如何巧用线程池的!

一、创建线程1.创建普通对象,只是在JVM的堆里分配一块内存而已2.创建线程,需要调用操作系统内核的API,然后操作系统需要为线程分配一系列资源,成本很高线程是一个重量级对象,应该避免频繁创建和销毁,采用线程池方案二、一般的池化资源// 假设Java线程池采用一般意义上池化资源的设计方法class ThreadPool { // 获取空闲线程 Thread acq...

2019-06-24 16:22:00 66

转载 三年半Java后端面试鹅厂,三面竟被虐的体无完肤

经过半年的沉淀,加上对MySQL,redis和分布式这块的补齐,终于开始重拾面试信心,再次出征。鹅厂面试职位: go后端开发工程师,接受从Java转语言都知道鹅厂是cpp的主战场,而以cpp为背景的工程师大都对os,network这块要求特别高,不像是Java这种偏重业务层的语言.之前面试Java的公司侧重还是在数据结构、网络、框架、数据库和分布式。所以OS这块吃的亏比较大一面:基础技...

2019-06-22 22:09:57 80

转载 单实例redis分布式锁的简单实现

redis分布式锁的基本功能包括, 同一刻只能有一个人占有锁, 当锁被其他人占用时, 获取者可以等待他人释放锁, 此外锁本身必须能超时自动释放. 直接上java代码, 如下: package com.test;import org.apache.commons.pool2.impl.GenericObjectPoolConfig;import redis.clients.jedis.J...

2019-06-21 21:21:11 50

转载 面试官:聊聊你对分布式锁技术方案的理解

前言由于在平时的工作中,线上服务器是分布式多台部署的,经常会面临解决分布式场景下数据一致性的问题,那么就要利用分布式锁来解决这些问题。第一步,自身的业务场景:在我日常做的项目中,目前涉及了以下这些业务场景:场景一:比如分配任务场景。在这个场景中,由于是公司的业务后台系统,主要是用于审核人员的审核工作,并发量并不是很高,而且任务的分配规则设计成了通过审核人员每次主动的请求拉取,然后服务端从任...

2019-06-20 20:39:34 151

转载 Spring 团队开源 nohttp,尽可能不用 HTTP

Spring 团队开源 nohttp 项目,用以查找、替换和阻止 http:// 的使用。项目是为了在可能使用 https:// 的情况下不使用到 http://,确保不会发生中间人***。Spring Security、Session 和 LDAP 项目负责人 ROB WINCH 指出,Spring 团队竭尽全力更新所有 URL 以使用 HTTPS,包括项目 Maven 存储库 URL、Ap...

2019-06-19 21:30:04 110

转载 掌握分布式事务锁,这个大厂实战订单锁你一定要会

分布式趋势目前几乎很多大型网站及应用都是分布式部署的,分布式场景中我们也都会遇到一个非常重要的问题:数据一致性。正如分布式的CAP理论说的一样:“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance),最多只能同时满足两项。”所以,很多系统在设计之初就要对这三者进行取舍。在互联网领域的绝大多数...

2019-06-19 21:28:05 66

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除