![](https://img-blog.csdnimg.cn/20190130142853718.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java知己
专注于Java,推送技术文章、热门开源项目等。致力成为你的编程知己。
淡定的蜗牛
发1024领取惊喜,公众号:Java知己
展开
-
程序员必备神器,脑洞不是一般大!
原文链接:http://blog.kotom.cn/programmer-imagination-greater.html程序员自制按摩椅[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cw99O9O5-1576806107692)(http://blog.kotom.cn/wp-content/uploads/2019/12/01.jpg)]程序员专属“零...转载 2019-12-20 09:42:53 · 1877 阅读 · 0 评论 -
阿里巴巴为什么能抗住90秒100亿?看完这篇你就明白了!
1. 概述本文以淘宝作为例子,介绍从一百个到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。特别说明:本文以淘宝为例仅仅是为了便于说明演进过程可能遇到的问题,并非是淘宝真正的技术演进路径2. 基本概念在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念进...转载 2019-12-18 14:59:04 · 501 阅读 · 0 评论 -
Intellij IDEA神器居然还有这些小技巧
概述Intellij IDEA真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜。出于对Intellij IDEA的喜爱,我决定写一个与其相关的专栏或者系列,把一些好用的Intellij IDEA技巧分享给大家。本文是这个系列的第一篇,主要介绍一些你可能不知道的但是又实用的小技巧。我最爱的【演出模式】我们可以使用【Presentation Mode】,将IDEA弄到最...转载 2019-12-06 10:53:43 · 479 阅读 · 0 评论 -
Java 学习之路让我帮助很大的书籍
笔主目前从事Java工作已经5年,满打满算下来,从大二上学期接触 Java 到现在也快走过了 7 个年头。在学习 Java 过程中,网上的一些视频还有一些书籍对我帮助都很大。下面就我自己看过的一些书籍,来分享一些对我帮助比较大的书籍。1《Head First Java. 第二版》[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fnPHeqD6-1575423102...原创 2019-12-04 09:50:32 · 230 阅读 · 0 评论 -
分库分表就能无限扩容吗,解释得太好了!
前言像我这样的菜鸟,总会有各种疑问,刚开始是对 JDK API 的疑问,对 NIO 的疑问,对 JVM 的疑问,当工作几年后,对服务的可用性,可扩展性也有了新的疑问,什么疑问呢?其实是老生常谈的话题:服务的扩容问题。正常情况下的服务演化之路让我们从最初开始。单体应用 每个创业公司基本都是从类似 SSM 和 SSH 这种架构起来的,没什么好讲的,基本每个程序员都经历过。RPC 应用...转载 2019-11-26 11:04:55 · 222 阅读 · 0 评论 -
五年经验程序员告诉你,如何确定自己是否适合做程序员
在知乎上看到一个问题,如何确定自己是否适合做程序员?好多答主都说需要智商高,对计算机有兴趣爱好,抽象能力要好。……啊呸,也不知道这些刚下飞机的答主是不是程序员。我在 it 行业工作了三年,换了几家公司,所以就以我三年程序员的经历,来说说做一名程序员需要什么。1、喜欢运动,保持良好的身体去扛住 9962、极强的心理素质,看着每天洗脸盆里的头发丝毫不慌看,老师从来不慌3、强...原创 2019-11-25 09:55:08 · 638 阅读 · 0 评论 -
你的编程能力从什么时候开始突飞猛进?
1、学习一门新的编程语言的时候我的第一份工作是 Android 攻城师,做了有两年左右,发现自己平时的工作几乎都是在设计页面布局,这不是我理想的工作(我的理想工作是不上班 [/ 坏笑])。因为经常和 Java 后端人员接触,感觉他们工作挺炫酷的,敲几行代码,在浏览器输入一个地址,就能打开一个自己设计的网页,简直太牛 P 了。因此决定向 Java 后端发展。之后又有爬取数据的需求,有利用业余时间学...原创 2019-11-20 10:56:29 · 5964 阅读 · 6 评论 -
10 个提升效率的Linux小技巧
您是否曾经惊讶于看到某人在 UNIX 中非常快速地工作,触发命令并快速地执行操作?是的,我碰到过几次,并且我一直都在向那些超级巨星开发者学习。在本文中,我想分享一些 UNIX 命令实践,这些实践是我在Linux 中快速,快速或有效地工作所遵循的。我在金融服务行业工作,我的工作涉及电子交易,衍生工具等领域中在线股票和期货交易应用程序的开发和支持。我们的所有服务都在 Linux 服务器上运行,因此我需...翻译 2019-11-19 10:18:05 · 473 阅读 · 0 评论 -
8 种经常被忽视的 SQL 错误用法,你有没有踩过坑?
1、LIMIT 语句分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引。这样条件排序都能有效的利用到索引,性能迅速提升。SELECT * FROM operation WHERE type = 'SQLStats' AND name = 'S...转载 2019-11-18 13:37:55 · 773 阅读 · 1 评论 -
十大优秀编程项目,让你的简历金光闪闪
全文共 3241 字,预计学习时长 6 分钟被问到如何学习编程时,最常听到的问题就是:“有没有什么新项目的好点子?”一些老套的答案有:“做一个象棋游戏” 或者 “命令行界面”。这些答案没有错,但这些例子不符合现代编程的需要。现代软件编写需要经常使用软件服务化(SaaS)和网络应用,这意味着程序员需要了解如何在线编程。用户网站或应用程序的编程需要服务器、身份验证和数据库,这个过程十分复杂。...转载 2019-11-15 14:38:30 · 616 阅读 · 0 评论 -
Java 8:一文掌握 Lambda 表达式
本文将介绍 Java 8 新增的 Lambda 表达式,包括 Lambda 表达式的常见用法以及方法引用的用法,并对 Lambda 表达式的原理进行分析,最后对 Lambda 表达式的优缺点进行一个总结。1. 概述Java 8 引入的 Lambda 表达式的主要作用就是简化部分的写法。能够使用 Lambda 表达式的一个重要依据是必须有相应的函数接口。所谓函数接口,是指内部有且仅有一个...转载 2019-11-08 10:14:05 · 140 阅读 · 0 评论 -
一文详解微服务架构(一)
本文将介绍微服务架构和相关的组件,介绍他们是什么以及为什么要使用微服务架构和这些组件。本文侧重于简明地表达微服务架构的全局图景,因此不会涉及具体如何使用组件等细节。要理解微服务,首先要先理解不是微服务的那些。通常跟微服务相对的是单体应用,即将所有功能都打包成在一个独立单元的应用程序。从单体应用到微服务并不是一蹴而就的,这是一个逐渐演变的过程。本文将以一个网上超市应用为例来说明这一过程。最初的需...转载 2019-11-07 09:58:09 · 224 阅读 · 0 评论 -
Java的参数传递是「按值传递」还是「按引用传递」?
Java 编程语言中最大的困惑之一就是: java 是按值传递还是按引用传递。我在面试中经常会问面试者这个问题,但还是有很多面试者对这个问题的理解不是很正确。有很多面试者是这样理解的:如果传递类型为基础数据类型,则按值传递,如果传递类型为类,则按引用传递。这样的理解正确吗?他们甚至还可以写出示例代码来验证他们的想法,让我们来一起看一看大多数人是如何验证“基础类型按值传递,非基础类型按...原创 2019-11-05 12:21:17 · 210 阅读 · 0 评论 -
Java堆空间Vs栈内存
之前我写了几篇有关Java垃圾收集的文章之后,我收到了很多电子邮件,请求解释Java堆空间,Java栈内存,Java中的内存分配以及它们之间的区别。您可能在Java,Java EE书籍和教程中看到很多有关堆和变量内存的参考,但是几乎没有就程序而言完全解释堆和栈的内存分配的。Java堆空间Java运行时使用Java堆空间为对象和JRE类分配内存。每当我们创建任何对象时,它总是在堆空间中创建。...转载 2019-11-04 10:48:39 · 136 阅读 · 0 评论 -
Java 异常面试问题与解答
Java 提供了一种健壮且面向对象的方法来处理称为 Java异常处理的异常情况。1. Java中的异常是什么?异常是在程序执行期间可能发生的错误事件,它会破坏其正常流程。异常可能源于各种情况,例如用户输入的错误数据,硬件故障,网络连接故障等。每当执行 Java 语句时发生任何错误,都会创建一个异常对象,然后 JRE尝试查找异常处理程序来处理该异常。如果找到了合适的异常处理程序,则将异常对象传...原创 2019-11-01 11:04:41 · 336 阅读 · 0 评论 -
Java中Array与ArrayList的10个区别
Array和ArrayList都是Java中两个重要的数据结构,在Java程序中经常使用。并且ArrayList在内部由Array支持,了解Java中的Array和ArrayList之间的差异对于成为一名优秀的Java开发人员也至关重要。如果您知道相似点和不同点,则可以明智地决定何时在AraryList上使用数组,反之亦然。在本文中,我将帮助您了解ArrayList和Java中的数组之间的区别。如...原创 2019-10-31 11:18:05 · 771 阅读 · 0 评论 -
Java 程序员应在2019年学习的10条面向对象(OOP)设计原则
面向对象的设计原则 是 OOP 编程的核心,但是我看到大多数 Java 程序员都在追求诸如 Singleton 模式,Decorator 模式或 Observer 模式之类的设计模式,而对学习面向对象的分析和设计没有给予足够的重视。了解诸如抽象,封装,多态和继承之类的面向对象程序设计的基础很重要。但是,与此同时,了解面向对象的设计原则也同样重要。它们将帮助您创建简洁的模块化设计,将来可以轻松...转载 2019-10-30 11:12:28 · 179 阅读 · 0 评论 -
避免Java中NullPointerException的Java技巧和最佳实践
Java应用程序中的NullPointerException是解决它的最佳方法,这也是编写可以立即运行的健壮程序的关键。而是它说的“预防胜于治疗”,讨厌的NullPointerException也是如此。值得庆幸的是,通过应用一些防御性编码技术并遵循应用程序多个部分之间的约定,您可以在一定程度上避免Java中的NullPointerException。顺便说一下,在本文中,我们将学习一些Jav...原创 2019-10-29 10:36:37 · 356 阅读 · 0 评论 -
21个Java Collections面试问答
Java Collections框架是Java编程语言的核心API之一。这是Java面试问题的重要主题之一。在这里,我列出了一些重要的Java集合面试问题和解答,以帮助您进行面试。这直接来自我14年以上的Java编程经验。1、Java 8中与Collections相关的功能是什么?Java 8对 Collection API 进行了重大更改。一些更改是:Java Stream API 用...原创 2019-10-28 14:32:14 · 575 阅读 · 1 评论 -
为什么不允许使用 Java 静态构造函数?
不允许使用 Java 静态构造函数,但是为什么呢?在深入探讨不允许使用静态构造函数的原因之前,让我们看看如果要使 构造函数静态化 会发生什么。Java 静态构造函数假设我们有一个定义为的类:public class Data { private int id; public static Data() {}}如果您尝试编译此类,则会在 Data 类型的构造函数中收到一条错误消...转载 2019-10-28 10:07:27 · 360 阅读 · 0 评论 -
Java 泛型示例 - 泛型方法,类,接口
Java Genrics 是 Java 5 中引入的最重要的功能之一。如果您一直在使用Java Collections并使用版本 5 或更高版本,那么我确定您已经使用过它。Java 中具有集合类的泛型非常容易,但是它提供了比仅创建集合类型更多的功能。我们将在本文中尝试学习泛型的功能。如果我们使用专业术语,对泛型的理解有时会变得混乱,因此,我将尽量保持其简单易懂。1. Java 中的泛型J...转载 2019-10-25 11:06:48 · 353 阅读 · 0 评论 -
Java中的集合-您必须知道的13件事
Java Collections Framework是Java编程语言的核心部分之一。集合几乎用于任何编程语言中。大多数编程语言都支持各种类型的集合,例如List, Set, Queue, Stack等。1.什么是Java Collections Framework?集合就像容器一样,将多个项目组合在一个单元中。例如,一罐巧克力,一组名称等。某个编程语言都使用了Collections,当Ja...转载 2019-10-25 11:05:15 · 194 阅读 · 0 评论 -
Java多线程并发面试问答
Java并发面试问答什么是原子操作?Java并发API中的原子类是什么?原子操作在单个任务单元中执行,而不受其他操作的干扰。在多线程环境中,原子操作是必需的,以避免数据不一致。int++不是原子操作。因此,当一个线程读取其值并将其递增1时,另一线程读取了较早的值,从而导致错误的结果。为了解决这个问题,我们必须确保对count的增量操作是原子的,我们可以使用Synchronization做到...转载 2019-10-24 09:35:48 · 169 阅读 · 0 评论 -
Java多线程面试问答
今天,我们将讨论Java 多线程面试问答。线程是Java面试问题中的热门话题之一。在这里,我从面试的角度列出了大多数重要的Java多线程面试问题,但是您应该对Java线程有足够的知识来处理后续问题。Java多线程面试问答1、Process和Thread有什么区别?进程是一个独立的执行环境,可以将其视为程序或应用程序,而线程是进程中执行的对应任务。Java运行时环境作为交替运行,其中包含不同...转载 2019-10-23 10:01:02 · 185 阅读 · 0 评论 -
Java字符串面试问答
字符串是使用最广泛的Java的类之一。在这里,我列出了一些重要的Java的字符串面试问答。这将有助于您全面了解String并解决面试中与String有关的任何问题。Java基础面试问题Java中的字符串是什么?字符串是数据类型吗?String是Java中的一个类,并在java.lang包中定义。它不是像int和long这样的原始数据类型。字符串类表示字符串。几乎所有Java应用程序都使用S...转载 2019-10-22 10:22:16 · 195 阅读 · 0 评论 -
14个Java并发容器,你用过几个?
不考虑多线程并发的情况下,容器类一般使用 ArrayList、HashMap 等线程不安全的类,效率更高。在并发场景下,常会用到 ConcurrentHashMap、ArrayBlockingQueue 等线程安全的容器类,虽然牺牲了一些效率,但却得到了安全。上面提到的线程安全容器都在 java.util.concurrent 包下,这个包下并发容器不少,今天全部翻出来鼓捣一下。仅做简单介绍,...转载 2019-10-15 09:49:46 · 265 阅读 · 0 评论 -
6种微服务RPC框架,你知道几个?
开源 RPC 框架有哪些呢?一类是跟某种特定语言平台绑定的,另一类是与语言无关即跨语言平台的。跟语言平台绑定的开源 RPC 框架主要有下面几种。Dubbo:国内最早开源的 RPC 框架,由阿里巴巴公司开发并于 2011 年末对外开源,仅支持 Java 语言。Motan:微博内部使用的 RPC 框架,于 2016 年对外开源,仅支持 Java 语言。Tars:腾讯内部使用的 RPC 框架,...转载 2019-10-14 17:19:45 · 2255 阅读 · 1 评论 -
Java中Set与Set<?>到底区别在哪?
您可能知道,无界通配符 Set<?> 可以容纳任何类型的元素,而原始类型Set也可以容纳任何类型的元素。那它们之间有什么区别呢?1.关于Set<?>的两个事实关于Set<?>有两个事实:Item 1:?代表任何类型。Set<?> 可以容纳任何类型的元素。_Item 2:因为我们不知道?的类型,所以不能将任何元素放入Set<?>。...转载 2019-10-14 17:18:04 · 370 阅读 · 0 评论 -
如何在Java的Map中存储重复键?
1.概述在本教程中,我们将探讨用于处理具有重复键的Map的可用选项,或者换言之,允许为单个键存储多个值的Map。2.标准MapJava有几个接口Map的实现,每个都有自己的特殊性。但是,现有的Java核心Map实现都不允许Map处理单个键的多个值。我们可以看到,如果我们尝试为同一个键插入两个值,则将存储第二个值,而第一个值将被删除。它也将被返回(通过*put(K键,V值)*方法的每个...原创 2019-01-31 09:30:19 · 9858 阅读 · 0 评论 -
Java中Runnable与Callable的那些事
1.概述自Java早期以来,多线程一直是该语言的一个主要方面。Runnable是用于表示多线程任务的核心接口,Callable是在Java 1.5中添加的Runnable的改进版本。在本文中,我们将探讨两种接口的差异和应用。2.执行机制两个接口都旨在表示可由多个线程执行的任务。Runnable的任务都可以使用运行线程类或ExecutorService的,而可调用只能用后者来运行。3.返回...原创 2019-01-30 10:01:49 · 382 阅读 · 0 评论 -
你真正了解Java中的wait()和notify()吗?
1.简介在本文中,我们将介绍Java中最基本的机制之一 - 线程同步。我们将首先讨论一些基本的并发相关术语和方法。我们将开发一个简单的应用程序 - 我们将处理并发问题,目的是更好地理解wait()和notify()。2. Java中的线程同步在多线程环境中,多个线程可能会尝试修改同一资源。如果未正确管理线程,这当然会导致一致性问题。2.1 Java中的守卫块我们可以用来协调Java中...原创 2019-01-28 10:25:51 · 2794 阅读 · 1 评论 -
我应该实现Runnable还是扩展Thread类?
1.简介“我应该实现Runnable还是扩展Thread类”?是一个很常见的问题。在本文中,我们将看到哪种方法在实践中更有意义以及为什么。2.使用Thread让我们首先定义一个扩展Thread的SimpleThread类:public class SimpleThread extends Thread { private String message; // st...原创 2019-01-28 10:20:53 · 246 阅读 · 0 评论 -
你真正了解Java中的TreeMap吗?
1.概述在本文中,我们将从Java Collections Framework(JCF)探索Map接口的TreeMap实现。TreeMap是一个Map实现,它根据其键的自然顺序对其条目进行排序,或者如果用户在构造时提供比较器,则更好地使用比较器。2. TreeMap中的默认排序默认情况下,TreeMap根据其自然顺序对其所有条目进行排序。对于整数,这将表示升序和字符串字母顺序。让我们看一...原创 2019-01-25 10:02:02 · 1691 阅读 · 0 评论 -
如何优雅的杀死Java线程?
1.简介在这篇简短的文章中,我们将介绍如何在Java中停止一个Thread - 这不是那么简单,因为不推荐使用Thread.stop()方法。如Oracle在更新中所述, stop()可能导致受监视的对象被破坏。2.使用标志让我们从创建和启动线程的类开始。这个任务不会自行结束,所以我们需要一些方法来停止该线程。我们将使用原子标志:public class ControlSubThrea...原创 2019-01-24 09:55:23 · 12700 阅读 · 0 评论 -
Java中HashSet那点事
1.概述在本文中,我们将深入研究HashSet。它是最流行的Set实现之一,也是Java Collections Framework的一个组成部分。2. HashSet简介HashSet是Java Collections API中的基本数据结构之一。让我们回顾一下这个实现的最重要方面:它存储唯一元素并允许空值它由HashMap支持它不保持插入顺序它不是线程安全的请注意,在创建...原创 2019-01-23 13:37:03 · 544 阅读 · 0 评论 -
Java中ThreadLocal那点事
1.概述在本文中,我们将从java.lang包中查看ThreadLocal 构造。我们能够用它为当前线程单独存储数据 - 并将其简单地包装在特殊类型的对象中。2. ThreadLocal API该TheadLocal结构使我们能够存储数据,这将是访问只通过一个特定的线程。假设我们想要一个与特定线程捆绑在一起的Integer值:ThreadLocal&lt;Integer&gt; thre...原创 2019-01-22 10:50:17 · 401 阅读 · 0 评论 -
Java中TreeSet那点事,不是事
1.概述在本文中,我们将介绍Java Collections Framework的一个组成部分,以及最受欢迎的Set实现之一 TreeSet。2. TreeSet简介简而言之,TreeSet是一个有序集合,它扩展了AbstractSet类并实现了NavigableSet接口。以下是此实现最重要方面的快速摘要:它存储唯一的元素它不保留元素的插入顺序它按升序对元素进行排序它不是线程安...原创 2019-01-19 09:08:24 · 2356 阅读 · 0 评论 -
你了解Java中的Future吗?
1.概述在本文中,我们将了解Future。自Java 1.5以来一直存在的接口,在处理异步调用和并发处理时非常有用。2.创建Future简单地说,Future类表示异步计算的未来结果 - 这个结果最终将在处理完成后出现在Future中。让我们看看如何编写创建和返回Future实例的方法。Future接口是长时间运行方法异步处理的理想选择。这使我们能够在等待Future封装的任务完成时执行...原创 2019-01-17 19:20:27 · 1552 阅读 · 1 评论 -
你知道Java中有不可变ArrayList吗?
1.概述本快速教程将展示如何使用核心JDK 创建一个ArrayList不可变,使用Guava,最后使用Apache Commons Collections 4。2.使用JDK首先,JDK提供了一种从现有集合中获取不可修改集合的好方法:Collections.unmodifiableList(list);此时新集合不再可修改:@Test(expected = UnsupportedOp...原创 2019-01-16 10:20:04 · 658 阅读 · 0 评论 -
Java中CopyOnWriteArrayList
1.概述在这个快速文章中,我们将看的CopyOnWriteArrayList 来自java.util.concurrent的包。这是多线程程序中非常有用的包 - 当我们想要以线程安全的方式迭代列表而没有显式同步时。2. CopyOnWriteArrayList APICopyOnWriteArrayList的设计使用一种有趣的技术使其成为线程安全的,无需同步。当我们使用任何修改方法时 - ...原创 2019-01-16 10:17:35 · 2515 阅读 · 0 评论