聊聊Dubbo(一):为何选择

2020-07-15
阅读 6 分钟
1.4k
随着现在互联网行业的发展,越来越多的框架、中间件、容器等开源技术不断地涌现,更好地来服务于业务,实现业务并解决问题。然而面对众多的技术选择,我们要如何甄别出适合自己团队业务的技术呢?对于人来说,鞋子过大,可能影响奔跑的速度,鞋子过小,可能影响身体的成长。技术对于业务也是如此的关系。

java 后端博客系统文章系统——No5

2020-07-14
阅读 3 分钟
1k
工具 IDE为idea16 JDK环境为1.8 gradle构建,版本:2.14.1 Mysql版本为5.5.27 Tomcat版本为7.0.52 流程图绘制(xmind) 建模分析软件PowerDesigner16.5 数据库工具MySQLWorkBench,版本:6.3.7build 本期目标 根据WordPress的工作进行程序设计分析 完成文章保存和草稿保存相关程序流程分析 首先我们打开WordPress登录到...

啃碎并发(11):内存模型之重排序

2020-07-14
阅读 3 分钟
1.2k
在很多情况下,访问一个程序变量(对象实例字段,类静态字段和数组元素)可能会使用不同的顺序执行,而不是程序语义所指定的顺序执行。具体几种情况,如下:

啃碎并发(11):内存模型之重排序

2020-07-14
阅读 3 分钟
1.3k
在很多情况下,访问一个程序变量(对象实例字段,类静态字段和数组元素)可能会使用不同的顺序执行,而不是程序语义所指定的顺序执行。具体几种情况,如下:

java 后端博客系统文章系统——No4

2020-07-13
阅读 4 分钟
836
按照我们前面的设定,我们的后端博客系统需要完成最简单的博文发布,我们也得有后台管理界面,同时需要将用户权限这些都附带上,但是由于时间关系,我们后端默认账户就是管理员吧,毕竟这一期的重点是实现博客的发布。

啃碎并发(10):内存模型之内部原理

2020-07-13
阅读 6 分钟
1.2k
如上一篇文章所述,Java内存模型规范了Java虚拟机与计算机内存是如何协同工作的。Java虚拟机是一个完整计算机的模型,因此,这个模型自然会包含一个内存模型—又称为Java内存模型。

java 后端博客系统文章系统——No3

2020-07-11
阅读 2 分钟
956
工具 IDE为idea16* JDK环境为1.8 gradle构建,版本:2.14.1 Mysql版本为5.5.27 Tomcat版本为7.0.52 流程图绘制(xmind) 建模分析软件PowerDesigner16.5 数据库工具MySQLWorkBench,版本:6.3.7build 本期目标 1.文章阅读前端页面全部完成 2.根据页面框架进行解耦           页面附属信息            文章信息 文章系统...

啃碎并发(八):深入分析wait&notify原理

2020-07-10
阅读 3 分钟
1.1k
上一节讲了Synchronized关键词的原理与优化分析,而配合Synchronized使用的另外两个关键词wait¬ify是本章讲解的重点。最简单的东西,往往包含了最复杂的实现,因为需要为上层的存在提供一个稳定的基础,Object作为Java中所有对象的基类,其存在的价值不言而喻,其中wait&notify方法的实现多线程协作提供了保证。

Java 后端博客系统文章系统——No2

2020-07-10
阅读 3 分钟
1.1k
在上次我们已经看过了wordpress的数据库模型(有朋友问我什么是逆向分析,拿着别人的产品逆向推导这就是逆向分析),我们可以很清楚的看到数据库关于文章存储的两张表,它们分别存储了文章的主体信息和文章的其他信息,具体的我们再看看数据库模型:

啃碎并发(七):深入分析Synchronized原理

2020-07-09
阅读 13 分钟
1.8k
记得开始学习Java的时候,一遇到多线程情况就使用synchronized,相对于当时的我们来说synchronized是这么的神奇而又强大,那个时候我们赋予它一个名字“同步”,也成为了我们解决多线程情况的百试不爽的良药。但是,随着学习的进行我们知道在JDK1.5之前synchronized是一个重量级锁,相对于j.u.c.Lock,它会显得那么笨重,...

Java 后端博客系统文章系统——No1

2020-07-09
阅读 4 分钟
1.5k
这一章我们主要介绍文章系统。毕竟博客系统的核心就是文章的发布和阅读。闲话不多说,老规矩走起来。 工具 IDE为idea16 JDK环境为1.8 gradle构建,版本:2.14.1 Mysql版本为5.5.27 Tomcat版本为7.0.52 流程图绘制(xmind) 建模分析软件PowerDesigner16.5 首先我们需要先了解我们这个文章系统的整个功能模块组合,也就是...

啃碎并发(六):Java 线程同步与实现

2020-07-08
阅读 6 分钟
980
为何要使用Java线程同步?Java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时,将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用,从而保证了该变量的唯一性和准确性。

啃碎并发(五):Java线程安全特性与问题

2020-07-08
阅读 7 分钟
1.1k
在单线程中不会出现线程安全问题,而在多线程编程中,有可能会出现同时访问同一个 共享、可变资源 的情况,这种资源可以是:一个变量、一个对象、一个文件等。特别注意两点:

啃碎并发(四):Java线程Dump分析

2020-07-07
阅读 7 分钟
3.1k
Thread Dump是非常有用的诊断Java应用问题的工具。每一个Java虚拟机都有及时生成所有线程在某一点状态的thread-dump的能力,虽然各个 Java虚拟机打印的thread dump略有不同,但是大多都提供了当前活动线程的快照,及JVM中所有Java线程的堆栈跟踪信息,堆栈信息一般包含完整的类名及所执行的方法,如果可能的话还有源代码...

啃碎并发(三):Java线程上下文切换

2020-07-07
阅读 5 分钟
1.3k
在过去单CPU时代,单任务在一个时间点只能执行单一程序。之后发展到多任务阶段,计算机能在同一时间点并行执行多任务或多进程。虽然并不是真正意义上的“同一时间点”,而是多个任务或进程共享一个CPU,并交由操作系统来完成多任务间对CPU的运行切换,以使得每个任务都有机会获得一定的时间片运行。

啃碎并发(二):Java线程的生命周期

2020-07-06
阅读 8 分钟
1.1k
当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)5种状态。尤其是当线程启动以后,它不可能一直"霸占"着CPU独自运行,所以CPU需要在多条线程之间切换,于是线程状态也会...

啃碎并发(一):Java线程总述与概念

2020-07-06
阅读 8 分钟
1.3k
在JDK5之前,Java多线程以及其性能一直是个软肋,只有synchronized、Thread.sleep()、Object.wait/notify这样有限的方法,而synchronized的效率还特别地低,开销比较大。

Java架构-Apache POI Excel

2020-07-04
阅读 2 分钟
1.6k
相信在项目中,对数据进行动态导出这是一个比较常见的功能。对于数据导出我们可以使用Apache-POI这个框架来帮我来进行Excel的写入与读取。下面就用代码来实现Apache POI写入与读取excel文件。

面试中必问的JVM应该怎么学(面试题含答案)

2020-07-04
阅读 4 分钟
1.3k
方法区与Java堆一样,是各个线程共享的区域,它用于存储已被虚拟机加载的类信息,常量,静态变量,即时编译(JIT)后的代码等数据。对于JDK1.8之前的HotSpot虚拟机而言,很多人经常将方法区称为我们上图中所描述的永久代,实际上两者并不等价,因为这仅仅是HotSpot的设计团队选择利用永久代来实现方法区而言。同时对于其他...

解读 java 并发队列 BlockingQueue

2020-07-04
阅读 9 分钟
912
最近得空,想写篇文章好好说说 java 线程池问题,我相信很多人都一知半解的,包括我自己在仔仔细细看源码之前,也有许多的不解,甚至有些地方我一直都没有理解到位。

java架构-一些设计上的基本常识

2020-07-03
阅读 5 分钟
971
最近给团队新人讲了一些设计上的常识,可能会对其它的新人也有些帮助, 把暂时想到的几条,先记在这里。 1、API与SPI分离 框架或组件通常有两类客户,一个是使用者,一个是扩展者。 API(Application Programming Interface)是给使用者用的, 而SPI(Service Provide Interface)是给扩展者用的。 在设计时,尽量把它们隔离...

猿灯塔:疫情冲击,去体验远程面试被怼10分钟,今年Java开发找工作真难

2020-07-03
阅读 2 分钟
890
年前很多企业一波裁员,2020年又受疫情影响,延长了假期,各大企业复工时间拉长,招聘需求也可能缩减,对于已经离职和打算跳槽的朋友无疑是雪上加霜,目前更是暂停现场招聘活动,加强了网上就业服务,大力推进网上就业服务。

猿灯塔:最详细Dubbo相关面试题

2020-07-03
阅读 4 分钟
1.7k
1、Dubbo是什么? Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架,现已成为 Apache 基金会孵化项目。 面试官问你如果这个都不清楚,那下面的就没必要问了。 官网:[链接] 2、为什么要用Dubbo? 因为是阿里开源项目,国内很多互联网公司都在用,已经经过很多线上考验。内部使用了 Netty、Zookeeper,保证...

猿灯塔:Java程序员月薪三万,需要技术达到什么水平?

2020-07-01
阅读 3 分钟
911
最近跟朋友在一起聚会的时候,提了一个问题,说Java程序员如何能月薪达到二万,技术水平需要达到什么程度?人回答说这只能是大企业或者互联网企业工程师才能拿到。也许是的,小公司或者非互联网企业拿二万的不太可能是码农了,应该已经转管理。还有区域问题,这个不在我的考虑范围内,因为除了北上广深杭,其他地方也很...

猿灯塔:关于Java面试,你应该准备这些知识点

2020-06-30
阅读 4 分钟
820
自天子以至于庶人,壹是皆以修身为本 《礼记·大学》 马老师说过,员工的离职原因很多,只有两点最真实: 钱,没给到位 心,受委屈了 当然,我是想换个平台,换个方向,想清楚为什么要跳槽,如果真的要跳槽,想要拿到一个理想的offer,除了运气,基本功也要足够的扎实,希望下面的面试经验能给你们能够提供一些帮助。 项...

一份还热乎的蚂蚁金服面经(已拿Offer)!附答案!!

2020-06-29
阅读 6 分钟
1.2k
经历了漫长一个月的等待,终于在前几天通过面试官获悉已被蚂蚁金服录取,这期间的焦虑、痛苦自不必说,知道被录取的那一刻,一整年的阴霾都一扫而空了。

JVM源码分析之堆内存的初始化

2020-05-22
阅读 4 分钟
1.1k
原创申明:本文由公众号【猿灯塔】原创,转载请说明出处标注 “365篇原创计划”第十五篇。 今天呢!灯塔君跟大家讲: JVM源码分析之堆内存的初始化 堆初始化 Java堆的初始化入口位于Universe::initialize_heap方法中,实现如下: 其中UseParallelGC、UseG1GC、UseConcMarkSweepGC都可以通过启动参数进行设置,整个初始化过...

JVM源码分析之JVM启动流程

2020-05-21
阅读 4 分钟
1k
​“365篇原创计划”第十四篇。 原创申明:本文由公众号【猿灯塔】原创,转载请说明出处标注 今天呢!灯塔君跟大家讲: JVM源码分析之JVM启动流程 前言: 执行Java类的main方法,程序就能运行起来,main方法的背后,虚拟机究竟发生了什么?如果你对这个感兴趣,相信本文会给你一个答案,本文分析的openjdk版本为openjdk-7-f...

JVM源码分析之synchronized实现

2020-05-20
阅读 6 分钟
2.5k
“365篇原创计划”第十二篇。 原创申明:本文由公众号【猿灯塔】原创,转载请说明出处标注 今天呢!灯塔君跟大家讲: JVM源码分析之synchronized实现 java内部锁synchronized的出现,为多线程的并发执行提供了一个稳定的环境,有效的防止多个线程同时执行同一个逻辑,其实这篇文章应该写在JVM源码分析之Object.wait/notify...

JVM源码分析之Java对象头实现

2020-05-18
阅读 5 分钟
2.4k
原创申明:本文由公众号【猿灯塔】原创,转载请说明出处标注 “365篇原创计划”第十一篇。 今天呢!灯塔君跟大家讲: JVM源码分析之Java对象头实现 HotSpot虚拟机中,对象在内存中的布局分为三块区域:对象头、实例数据和对齐填充。 对象头 对象头包括两部分:Mark Word 和 类型指针。 Mark Word Mark Word用于存储对象自...