Java

16 篇文章

Victory
Program

在 Maven 中央仓库发布自己的开源项目

写代码久了,一直在用别人提供的第三方包依赖,有时是不是也会想着有一天别人能够使用自己的开源出去的项目。让我们从最简单的开始,提取一个小项目,将其开源并发布到中央仓库让大伙可以直接通过配置 Maven 依赖来使用。 我相信应该是有不少人都有过开源并发布自己项目的想法的,但是其中最大的一个问题可能就是不...

Victory
Program

Java 多线程

本次本章从线程的基础讲到线程的相关实现类,每个章节算是一小块知识点,在每个知识点中,穿插地讲对应的知识原理,以及对应的常见面试题及其解答。多数面试题是前后环环相扣的。 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个...

Victory
Program

Kafka 概览

Apache Kakfa 是一个分布式流处理平台,既可以当做普通的消息中间件用于消息发布订阅,也可以存储并处理流式数据,其分布式设计使得其有较好的容错性,水平拓展性等。 通常可以用于当做消息订阅发布用于业务系统中,或者用于大数据方向,接受存储大量的流式数据并和对应的大数据处理框架结合使用,eg. K...

Victory
Program

RocketMQ 概览

Apache RocketMQ 是阿里开源的一款高性能、高吞吐量的分布式消息中间件。相比于 Kafka,其拥有更好的实时性和消息可靠性。更适用于和 Money 相关的系统。它支持如下特性: - 订阅/发布模式的消息 > 支持消费组模式的消费,即一个消费组集群内只有一个实例会收到那一条消息。 - 延时...

Victory
Program

记一次 Gradle Build 问题分析

一次项目更新后,发现项目无法正常 build 了,出现如下报错: 1. Review 代码更新,寻找可疑点 这一步 review 没有发现什么特殊的改动,只是更改了几个 proto 文件的定义。但是回退代码后却又能正常 build,所以说明构建失败的确是此次更新引入的问题。 2. 根据报错信息寻找问...

Victory
Program

请求响应慢问题排查

简要说明下,系统是一个微信第第三方平台,用于托管微信公众号和小程序的。 在一个普普通通的晚上,19 点开始有公众号管理员向我们反馈,托管在我们平台的公众号一直提示 "**该公众号提供的服务出现异常,请稍后再试**"。 自己去对应的公众号验证,发送消息,确确实实提示"**该公众号提供的服务出现异常,请...

Victory
Program

Jasperreports OOM问题处理

项目使用Jasperreports来转换导出PDF,不过在转换过程中有时会出现OOM的异常。将直接导致线上系统不可使用。主要导致OOM的问题有如下两种: 1. jasper模板文件设计不合理导致Jasperreports进入死循环 2. 需要转换的文件确实很大,超过了系统所支持的内存范围 此前就有遇...

Victory
Side Project

微信公众平台SDK JAVA实现WeChat-SDK

最近有做一些涉及到微信公众平台和第三方平台开发的工作。需要使用微信提供的接口。然而微信只提供了基于基本的 HTTP 接口,并没有对应各语言的 SDK 实现。所以如果自己开发的话需要封装一套 SDK。不过,微信公众平台出来几年了,市面上早就有不少 JAVA 实现的微信 SDK 了。于是便收集了一些开源...

Victory
Program

线上程序CPU过高问题排查

工作中负责的有一个项目是使用iReport+JasperReport实现的一个打印系统。最近这个线上程序经常无响应,重启后恢复正常,但是时不时还是会出现类似的问题。 最后发现是JasperReport的一个问题。有个JasperReport的转换任务内存占用特别高,当新对象需要分配内存时就会内存不够...

Victory
Side Project

JAVA开源B2C系统

最近有人想面向境外销售商品,但是又不想依托于亚马逊这些平台,于是找我来帮忙想弄个B2C系统。因为刚开始只是打算试试水,也就不打算投入多少成本了。所以这边就考虑使用开源的B2C系统来直接使用了。 --- 由于自己的主语言是JAVA,平时工作也都是用的JAVA。考虑到以后需要对系统进行二开、部署维护等。...

Victory
Program

Feign基础教程

Feign使得 客户端编写更方便。 灵感来源于Retrofit、JAXRS-2.0和WebSocket。 最初是为了降低统一绑定Denominator 到 的复杂度,不区分是否支持 。 Maven依赖: --- 你可以使用 和 这些来写一个 或 服务的java客服端。你也可以直接使用 来实现。但是...

Victory
Program

HashMap源码解析

其实之前也有看过HashMap的源码,觉得自己对其中的实现原理什么的都还算是比较了解了。其实当初看的时候就没有看的多仔细,只是应付面试的问题罢了。 这不,最近有人提出个问题自救就没法回答了。 > 问: 我们知道,初始化 的时候,可以使用默认的构造函数,也可以使用一个带 参数的构造函数用于构造一个已知...

Victory
Program

JAVA并发编程: CAS和AQS

说起JAVA并发编程,就不得不聊聊CAS(Compare And Swap)和AQS了()。 --- > CAS(Compare And Swap),即比较并交换。是解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数——内存位置(V)、预期原值(A)和新值(B)。如果内存位置...

Victory
Program

Lock 和 synchronized

Java多线程编程中,保证线程安全通常会使用到和。那么合适该使用,什么时候该使用呢。这个就需要我们对和有个清晰的了解。 --- **** 是JAVA提供的强制原子性的内置锁机制。一个有两部分:锁对象的引用 ( 方法的锁,就是该方法所在对象本身),以及这个锁保护的代码块。每个Java对象都可以作为一个...

Victory
Interview

面试复习整理

**资料:** 1. Java 集合学习指南 2. Java NIO 系列教程 **常见问题:** 1. ConcurrentHashMap的实现实现原理,是如何实现高并发和同步的探索 ConcurrentHashMap高并发性的实现机制 2. 集合类中线程安全的集合有哪些(HashTable,Ve...