Java集合框架

前言

  Java集合框架 (Java Collections Framework, JCF) 也称容器,这里可以类比 C++ 中的 STL,在市面上似乎还没能找到一本详细介绍的书籍。在这里主要对如下部分进行源码分析,及在面试中常见的问题。

  例如,在阿里面试常问到的 HashMap 和 ConcurrentHashMap 原理等等。深入源码分析是面试中必备的技能,通过本文的阅读会对集合框架有更深一步的了解。

阅读更多

java防止接口被篡改--接口签名(简单版本)续

一、前言

  • 此次来说一下另一种简单粗暴的签名方案。相对于之前的签名方案,对body、paramenter、path variable的获取都做了简化的处理。也就是说这种方式针所有数据进行了签名,并不能指定某些数据进行签名。

二、签名规则

  • 1、线下分配appidappsecret,针对不同的调用方分配不同的appidappsecret

  • 2、加入timestamp(时间戳),10分钟内数据有效

  • 3、加入流水号nonce(防止重复提交),至少为10位。针对查询接口,流水号只用于日志落地,便于后期日志核查。 针对办理类接口需校验流水号在有效期内的唯一性,以避免重复请求。

  • 4、加入signature,所有数据的签名信息。

  • 以上红色字段放在请求头中。

阅读更多

java防止接口被篡改--接口签名(Signature)

前言

  •  在为第三方系统提供接口的时候,肯定要考虑接口数据的安全问题,比如数据是否被篡改,数据是否已经过时,数据是否可以重复提交等问题。其中我认为最终要的还是数据是否被篡改。在此分享一下我的关于接口签名的实践方案。

签名规则

  • 1、线下分配appidappsecret,针对不同的调用方分配不同的appidappsecret
  • 2、加入timestamp(时间戳),10分钟内数据有效
  • 3、加入流水号nonce(防止重复提交),至少为10位。针对查询接口,流水号只用于日志落地,便于后期日志核查。 针对办理类接口需校验流水号在有效期内的唯一性,以避免重复请求。
  • 4、加入signature,所有数据的签名信息。以上红色字段放在请求头中。
阅读更多

jenkins

Jenkins 是 Devops 神器,本篇文章介绍如何安装和使用 Jenkins 部署 Spring Boot 项目

Jenkins 搭建、部署分为四个步骤;

  • 第一步,Jenkins 安装
  • 第二步,插件安装和配置
  • 第三步,Push SSH
  • 第四步,部署项目

第一步 ,Jenkins 安装

准备环境:

JDK:1.8
Jenkins:2.83
Centos:7.3
maven 3.5

Jdk 默认已经安装完成

阅读更多

SpringBoot是怎么在实例化时候将bean加载进入容器中

之前写过的很多spring文章,都是基于应用方面的,这次的话,就带大家来一次对spring的源码追踪,看一看spring到底是怎么进行的初始化,如何创建的bean,相信很多刚刚接触spring的朋友,或者没什么时间的朋友都很想知道spring到底是如何工作的。

首先,按照博主一贯的作风,当然是使用最新的spring版本,这次就使用spring4.2.5…其次,也是为了方便,采用spring-boot-1.3.3进行追踪,和spring 4.2.5是相同的。

不用担心框架不同,大家如果是使用的xml方式进行配置的话,可以去你的ContextListener里面进行追踪,spring-boot只是对 spring所有框架进行了一个集成,如果实在进行不了前面几个步骤的话,可以从文章第6步的AbstractApplicationContext开始看起, 这里就是spring最最重要的部分。

阅读更多

带你看懂分布式事务

  • 转自Java Geek Tech
  • 4月初在面试一家互联网公司的过程中就被问到了分布式事务问题。我又一次在没有好好整理的问题上吃了亏,记录一下,还是长记性!!!
阅读更多

Swagger使用指南

Swagger使用指南

现代化的研发组织架构中,一个研发团队基本包括了产品组、后端组、前端组、APP端研发、测试组、UI组等,各个细分组织人员各司其职,共同完成产品的全周期工作。如何进行组织架构内的有效高效沟通就显得尤其重要。其中,如何构建一份合理高效的接口文档更显重要。

接口文档横贯各个端的研发人员,但是由于接口众多,细节不一,有时候理解起来并不是那么容易,引起‘内战’也在所难免, 并且维护也是一大难题。

类似RAP文档管理系统,将接口文档进行在线维护,方便了前端和APP端人员查看进行对接开发,但是还是存在以下几点问题:

  • 文档是接口提供方手动导入的,是静态文档,没有提供接口测试功能;
  • 维护的难度不小

Swagger的出现可以完美解决以上传统接口管理方式存在的痛点。本文介绍Spring Boot整合Swagger2的流程,连带填坑。

阅读更多

什么是Servlet(原理,从访问到方法)

Servlet简介

Servlet是SUN公司提供的一门用于开发动态WEB资源的技术。SUN公司在其API中提供了一个Servlet接口,用户若想开发一个动态WEB资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:

  • 编写一个Java类,实现Servlet接口;
  • 把开发好的Java类部署到WEB服务器中。

那么我们不仅要问,写好的Servlet会在WEB应用中的什么位置上呢?位置如下如所示。

阅读更多

搞定JVM垃圾回收就是这么简单

写在前面

本节常见面试题:

问题答案在文中都有提到

  • 如何判断对象是否死亡(两种方法)。
  • 简单的介绍一下强引用、软引用、弱引用、虚引用(虚引用与软引用和弱引用的区别、使用软引用能带来的好处)。
  • 如何判断一个常量是废弃常量
  • 如何判断一个类是无用的类
  • 垃圾收集有哪些算法,各自的特点?
  • HotSpot为什么要分为新生代和老年代?
  • 常见的垃圾回收器有那些?
  • 介绍一下CMS,G1收集器。
  • Minor Gc和Full GC 有什么不同呢?
阅读更多

可能是把Java内存区域讲的最清楚的一篇文章

写在前面(常见面试题)

基本问题

  • 介绍下 Java 内存区域(运行时数据区)
  • Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么)
  • 对象的访问定位的两种方式(句柄和直接指针两种方式)

拓展问题

  • String类和常量池
  • 8种基本类型的包装类和常量池
阅读更多