大白话 Java 多线程,小白都能看的懂的哦

什么是线程 说到线程我们应该先了解下什么是进程,下面这个图片大家应该都比较熟悉吧。 我们看到的这些单独运行的程序就是一个独立的进程,进程之间是相互独立存在的。我们上面图中的360浏览器、百度云盘等等都是独立的进程。 那么什么是线程呢? 线程(英语:thread)是操作系统能够进行运算调度的最小单位。 ...

专注于java的程序员 @ 2020/07/01

Lambda初次使用很慢?从JIT到类加载再到实现原理

描述的话不多说,直接上图: 看到输出结果了吗?为什么第一次和第二次的时间相差如此之多?咱们一起琢磨琢磨,也可以先去看看结论再回过头看分析 注:并非仅第二次快,而是除了第一次,之后的每一次都很快 给与猜想 是否和操作系统预热有关? 是否和JIT(即时编译)有关? 是否和ClassLoader类加载有关 ...

专注于java的程序员 @ 2020/06/30

被面试官问懵B了,十亿级数据ES搜索怎么优化?

面试题 es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊? 面试官心理分析 这个问题是肯定要问的,说白了,就是看你有没有实际干过 es,因为啥?其实 es 性能并没有你想象中那么好的。很多时候数据量大了,特别是有几亿条数据的时候,可能你会懵逼的发现,跑个搜索怎么一下 510s,坑爹了。第一 ...

专注于java的程序员 @ 2020/06/30

策略模式、策略模式与Spring的碰撞

策略模式是GoF23种设计模式中比较简单的了,也是常用的设计模式之一,今天我们就来看看策略模式。 实际案例 我工作第三年的时候,重构旅游路线的机票查询模块,旅游路线分为四种情况: 如果A地-B地往返都可以直达,那么查询两张机票(往返) 如果A地-B地去程无法直达,需要中转,但是返程可以直达,那么查询 ...

专注于java的程序员 @ 2020/06/30

嘘!异步事件这样用真的好么?

为了方便大家理解我把之前方案的图片复制过来了,如下: 上图的方案存在一个问题,就是我们今天文章要聊的内容。 这个问题就是当 MQ Consumer 收到消息后,就直接发布 Event 了,如果是同步的,没有问题。如果某个 EventListener 中处理失败了,那么这条消息将不会 ACK。 如果是 ...

专注于java的程序员 @ 2020/06/30

SpringBoot2.x的依赖管理

主要梳理一下SpringBoot2.x的依赖关系和依赖的版本管理,依赖版本管理是开发和管理一个SpringBoot项目的前提。 SpringBoot其实是通过starter的形式,对spring-framework进行装箱,消除了(但是兼容和保留)原来的XML配置,目的是更加便捷地集成其他框架,打造 ...

专注于java的程序员 @ 2020/06/30

面试-并发编程之AQS及可重入锁

面试官:那我记得还有一个和CAS名字很像的叫AQS,你能说下吗? 我: 可以。 1、AQS(AbstractQueuedSynchronizer)即队列同步器,它是构建锁或者其他同步组件的基础框架(如ReentrantLock、ReentrantReadWriteLock、Semaphore等),J ...

专注于java的程序员 @ 2020/06/29

为什么建议你使用枚举?

枚举是 JDK 1.5 新增的数据类型,使用枚举我们可以很好的描述一些特定的业务场景,比如一年中的春、夏、秋、冬,还有每周的周一到周天,还有各种颜色,以及可以用它来描述一些状态信息,比如错误码等。 枚举类型不止存在在 Java 语言中,在其它语言中也都能找到它的身影,例如 C# 和 Python 等 ...

专注于java的程序员 @ 2020/06/29

阿里高级技术专家:如何结构化地思考、做事、成长?

引言 在每年自评、汇报、工作中总会感受到一些结构化带来的问题: 老板问我当前做的事情怎么样了,我讲了合作中的难点、视觉风格问题、业务情况、代码质量······工作的进展,说了半小时,老板还是 get 不到我做的事情的情况和价值,是老板不在意这件事、还是我语言表达能力不行? 我这一年做了很多事情,都有 ...

专注于java的程序员 @ 2020/06/29

Git工作使用笔记

分离头指针 当前分支图 切换到之前的某一次提交 执行命令 $ git checkout de11fa87ea 复制代码 提示,当前位于“分离头指针”状态 分支图 注意 在分离头指针状态下没有绑定分支 产生的commit不会被保存 分支切换后在分支图中看不到该commit 一段时间后会被git自动清除 ...

专注于java的程序员 @ 2020/06/28

Spring Boot 使用 AOP来防止重复提交

思路 自定义注解 @NoRepeatSubmit 标记所有Controller中的提交请求 通过AOP 对所有标记了 @NoRepeatSubmit 的方法拦截 在业务方法执行前,获取当前用户的 token(或者JSessionId)+ 当前请求地址,作为一个唯一 KEY,去获取 Redis 分布式 ...

专注于java的程序员 @ 2020/06/28

阿里巴巴即将没落?未来互联网的竞争将会是腾讯和字节跳动的?

前言 ok,今天就有一个网友说预测说阿里巴巴可能是要步入百度的后尘,3年到5年后阿里巴巴就会像百度一样没落,未来互联网的竞争将会是腾讯和字节跳动的,然后引发网友各种各样的声音和问题。 随后确实有很多人都打了1,表示认同楼主的说法。 尤其是阿里内部这位网友,那是挺实在的一小伙啊。打了几个1,鬼知道他经 ...

专注于java的程序员 @ 2020/06/25

Spring Boot数据校验

数据校验是一个相当重要的环节,使用Spring Boot 进行数据校验。 添加校验依赖 全部依赖文件如下 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:x ...

专注于java的程序员 @ 2020/06/23

Spring Security 基于数据库的认证

介绍 之前使用的全是基于内存的认证,这里使用基于数据库的认证。 设计数据表 这里设计数据表 创建项目 这里使用Mybatis作为项目。 添加如下依赖 添加driud连接池依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid< ...

专注于java的程序员 @ 2020/06/23

Java8 LocalDate 取缔Date,哎呀是真香啊!

简介 伴随lambda表达式、streams 以及一系列小优化,Java 8推出了全新的日期时间API。 Java处理日期、日历和时间的不足之处:将java.util.Date 设定为可变类型,以及 SimpleDateFormat 的非线程安全使其应用非常受限。然后就在 java8 上面增加新的特 ...

专注于java的程序员 @ 2020/06/23

Amazon Deep Java Library——Java 机器学习工具箱

近年来,人们对机器学习的兴趣稳步增长。具体来说,现在,企业在各种各样的场景中使用机器学习进行图像识别。它在汽车工业、医疗保健、安全、零售、仓库、农场和农业的自动化产品跟踪、食品识别,甚至通过手机摄像头进行实时翻译等方面都有应用。借助机器学习和视觉识别,机器可以从MRI 和CT 扫描结果中发现癌症和 ...

专注于java的程序员 @ 2020/06/23

Java构造器就是这么简单!

前言 理解构造器之前,首先我们需要了解Java中为什么要引入构造器,以及构造器的作用。 在很久之前,程序员们编写C程序总会忘记初始化变量(这真的是一件琐碎但必须的事),C++引入了 构造器(constructor) 的概念,这是一个在创建对象时被自动调用的特殊方法。Java也采用了构造器。 一、构造 ...

专注于java的程序员 @ 2020/06/23

新手小白该怎么学习Java,附学习路线和学习资料

在知乎上经常碰到这种问题:“我刚毕业,怎么入门java?”;“我是初中生、高中生可不可以自学java?”作为一个已经工作八年多的老鸟,我想说: 如果你是一个遇到困难就望而却步的人,大可不必浪费时间接着把这篇文章看下去,真的不用因为java就业前景好,上升空间大,工资高就去学他。如果你热爱技术,耐得住 ...

专注于java的程序员 @ 2020/06/22

2020年的秋招已经开始了!最新Java面试题大全(文末附参考答案)送给大家

包含的模块 本文分为十九个模块,分别是:Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、 ...

专注于java的程序员 @ 2020/06/22

Java反射是什么?看这篇绝对会了!

一.概念 反射就是把Java的各种成分映射成相应的Java类。 Class类的构造方法是private,由JVM创建。 反射是java语言的一个特性,它允程序在运行时(注意不是编译的时候)来进行自我检查并且对内部的成员进行操作。例如它允许一个java的类获取他所有的成员变量和方法并且显示出来。Jav ...

专注于java的程序员 @ 2020/06/22