自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 收藏
  • 关注

原创 RESTful介绍和使用教程

REST(Representational State Transfer)表象化状态转变(表述性状态转变),在2000年被提出,基于HTTP、URI、XML、JSON等标准和协议,支持轻量级、跨平台、跨语言的架构设计。是Web服务的一种新的架构风格(一种思想)代码不被侵入(正例:SpringMVC中不用接口和继承,仅用注解完成。反例:Struts中每一个Action都要继承核心控制器),轻量级跟包大小无关。耦合性越低,越轻量。符合上述REST原则的架构方式称为RESTfulURI:http://exampl

2022-06-07 11:08:00 596 1

原创 什么是乐观锁、悲观锁

锁生活中:锁在我们身边无处不在,比如我出门玩去了需要把门锁上,比如我需要把钱放到保险柜里面,必须上锁以保证我财产的安全。代码中:比如多个线程需要同时操作修改共享变量,这时需要给变量上把锁(syncronized),保证变量值是对的。数据库表:当多个用户修改表中同一数据时,我们可以给该行数据上锁(行锁)。悲观锁(悲观并发控制)当我们要对数据库中的一条数据进行修改的时候,为了避免同时被其他人修改,最好的办法就是直接对该数据进行加锁以防止并发的发生。为什么叫做悲观锁呢?因为这是一种对数据的修改抱有悲观态度的并发控

2022-06-06 11:19:25 423

原创 Maven 基础环境搭建 项目依赖jar包导入

一、创建一个Maven工程  不清楚的话请查阅其它文档。二、引入项目依赖的jar包  1、Spring  2、SpringMvc  3、Mybatis  4、 数据库连接池,驱动  5、其它(jstl、servlet-api、junit)三、方法  Maven工程jar包库:http://mvnrepository.com/2、Mybatis为例,选择对应的版本;3、复制如下图所示的配置代码; 4、粘贴到自己Maven工程文件下的pom.xml中(后面会附完整示例配置);附:完整pom.xml配置信息。..

2022-06-04 14:33:57 591

原创 AtomicInteger如何保证线程安全?

public class AtomicInteger extends Number implements java.io.Serializable {private static final long serialVersionUID = 6214790243416807050L;/** This class intended to be implemented using VarHandles, but there* are unresolved cyclic startup dependencies.*

2022-06-03 17:09:00 1861

原创 SpringBoot整合Flowable

flowable-spring-boot-starter-basicorg.flowableflowable-spring-boot-starter-basic${flowable.version}完整pomorg.springframework.boots

2022-06-02 16:43:24 1082

原创 Spring boot 配置整合RabbitMq

Spring boot 配置整合RabbitMq这篇文章是在使用rabbit时,自己创建的demo,一些简单的介绍内含消息推送实例,消费实例,Direct、Fanout的使用;首先是为什么使用RabbitMq,说下Rabbit的优缺点:优点:应用异步将需要同步处理的并且耗时的操作由消息队列来进行一步操作,提高了程序的响应时间应用解耦系统的耦合度越高,容错率就越低,可维护行越低,Mq可以使应用间解耦,提升容错率和可维护性流量削峰根据系统的存储速度来定制每秒可接受数量,高并发下,数据堆积在Mq中,并发结束后,继

2022-06-01 10:58:19 841

原创 FastDFS快速实现和SpringBoot的整合开发

FastDFS客户端操作1.Fastdfs-java-client首先我们来看下如何实现FastDFS中提供的JavaAPI来直接实现对应的文件上传和下载操作。1.1 文件上传先来看下文件上传的流程上传流程的文字梳理为:客户端访问Tracker Tracker 返回Storage的ip和端口 客户端直接访问Storage,把文件内容和元数据发送过去。 Storage返回文件存储id。包含了组名和文件名首先创建一个普通的maven项目,然后引入对应的依赖 1&lt

2022-05-31 11:05:34 316

原创 要掌握的Java核心技术

在JVM这个大类中,我认为需要掌握的知识有:JVM内存模型和结构 GC原理,性能调优 调优:Thread Dump, 分析内存结构 class 二进制字节码结构, class loader 体系 , class加载过程 , 实例创建过程 方法执行过程 Java各个大版本更新提供的新特性(需要简单了解)2. Java的运行这条可能出看很简单,java程序的运行谁不会呢?不过很多时候, 我们只是单纯通过IDE去执行java程序,底层IDE又是如何执行java程序呢?很多人并不了解。这

2022-05-30 10:57:03 173

原创 HashMap的死循环

问题最近的几次面试中,我都问了是否了解HashMap在并发使用时可能发生死循环,导致cpu100%,结果让我很意外,都表示不知道有这样的问题,让我意外的是面试者的工作年限都不短。由于HashMap并非是线程安全的,所以在高并发的情况下必然会出现问题,这是一个普遍的问题,虽然网上分析的文章很多,还是觉得有必须写一篇文章,让关注我公众号的同学能够意识到这个问题,并了解这个死循环是如何产生的。如果是在单线程下使用HashMap,自然是没有问题的,如果后期由于代码优化,这段逻辑引入了多线程并发执行,在一

2022-05-29 10:59:19 2364 1

转载 Java学习路线总结

本文整理了java开发的学习路线和相关的学习资源,非常适合零基础入门java的同学,希望大家在学习的时候,能够节省时间。良心推荐!第一阶段:Java基础重点知识点:数据类型、核心语法、面向对象、数组、集合、IO流、String/StringBuffer/StringBuilder、线程、并发、反射、泛型学习Java开发,首先要学习java基础知识,尤其是校招的时候非常注重基础,即使没有项目也没关系,基础一定要打好,一般笔试以及面试的第一轮,对基础的考察是比较多的。Java面向对

2022-05-28 11:54:28 495

原创 Java中间件-Kafka

Kafka的介绍Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。Kafka 有如下特性:以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能。高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息的传输。支持Kafka Server间的消息分区,及分布式消费,同时保证每个Partition内的消息顺序传输。同时支持离线数据处理和实时数据处理。Scale out:支持

2022-05-27 11:08:09 256

原创 Java中间件-RabbitMQ

一. RabbitMQ 简介MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过 队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现。A

2022-05-27 11:07:24 519

原创 Java中间件-shiro

1. 什么是shiroshiro是apache的一个开源框架,是一个权限管理的框架,实现 用户认证、用户授权。spring中有spring security (原名Acegi),是一个权限框架,它和spring依赖过于紧密,没有shiro使用简单。shiro不依赖于spring,shiro不仅可以实现 web应用的权限管理,还可以实现c/s系统,分布式系统权限管理,shiro属于轻量框架,越来越多企业项目开始使用shiro。2. 在应用程序角度来观察如何使用Shiro完成工作(图01)

2022-05-27 11:06:45 650

原创 Java中间件-springsecurity

1.springsecurityspringsecurity底层实现为一条过滤器链,就是用户请求进来,判断有没有请求的权限,抛出异常,重定向跳转。2.登录页springsecurity自带一个登录页。从登陆入手,登录页替换成我们自己的,对输入的账号密码进行验证*** 表单登陆security* 安全 = 认证 + 授权*/@Configurationpublic class SecurityConfig extends WebSecurityConfigurerA

2022-05-25 16:31:23 432

原创 Java中间件-JWT

一、简介1、JWTJWT为Json Web Token,是一种令牌生成算法。使用JWT能够保证Token的安全性,且能够进行Token时效性的检验。2、JWT结构JWT共由三部分组成,分别是数据头(Header)、Payload(数据体)、验证签名(Verify Signature)组成。其中,Header中的内容为加密信息以及Token的类别,Payload为用户数据、Verify Signature为校验数据。二、依赖JWT需要两个依赖java-jwt、jjwt&l.

2022-05-24 11:29:54 1782

原创 Java中间件-zookeeper

一、zookeeper的基本原理数据模型,如下:ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。每个ZNode都可以通过其路径唯一标识,比如上图中第三层的第一个ZNode,它的路径是/app1/c1。在每个ZNode上可存储少量数据(默认是1M, 可以通过配置修改,通常不建议在ZNode上存储大量的数据),这个特性非常有用。另外,每个ZNode上还存储了其Acl信息,这里需要注意,虽说ZNode的树形结构跟Unix文件系统很类似,

2022-05-24 11:28:24 557

原创 Java中间件-Eureka

Eureka(注册中心)eureka为服务注册,分为服务端和客户端,客户端注册进服务端,服务端可配置集群互相守望。服务端不处理业务,只负责服务注册,客户端才负责数据处理 ;服务者和消费者都需要注册。在openfeign之后都是用openfeign访问。关键注解启动类@EnableEurekaServer // 服务端注册@EnableEurekaClient // 消费端注册@EnableDiscoveryClient // 可获取当前服务的相关信息(可选)一、服务端pom:

2022-05-24 11:27:34 1146

原创 Java中间件-Resilience4j

核心组建组件名称 功能resilience4j-circuitbreaker Circuit breakingresilience4j-ratelimiter 频率控制resilience4j-bulkhead 依赖隔离&负载保护resilience4j-retry 自动重试resilience4j-cache 应答缓存resilience4j-timelimiter 超时控制Resilience4j是一个轻量级、易于使用的容错库,其灵感来自Netflix Hystr

2022-05-23 11:17:42 341

原创 Java中间件-Hystrix

一、背景介绍1、服务雪崩分布式系统环境下,服务间类似依赖非常常见,一个业务调用通常依赖多个基础服务。如下图,如果各个服务正常运行,那大家齐乐融融,高高兴兴的,但是如果其中一个服务崩坏掉会出现什么样的情况呢?如下图,当Service A的流量波动很大,流量经常会突然性增加!那么在这种情况下,就算Service A能扛得住请求,Service B和Service C未必能扛得住这突发的请求。此时,如果Service C因为抗不住请求,变得不可用。那么Service B的请求也

2022-05-23 11:17:09 738

原创 Java中间件-solr

solr在java程序中的应用1.导入jar包org.apache.solrsolr-solrj程序代码//增加索引库@Testpublic void addDocument() throws Exception{//创建连接SolrServer solrServer = new HttpSolrServer("http://192.168.21.198:8080/solr/");//创建文档对象SolrInputDocument doucument= new S

2022-05-23 11:16:28 635

原创 Java中间件-Elasticsearch

Elasticsearch 是一个非常强大的搜索引擎。它目前被广泛地使用于各个 IT 公司。Elasticsearch 是由 Elastic 公司创建。它的代码位于 GitHub - elastic/elasticsearch: Free and Open, Distributed, RESTful Search Engine。目前,Elasticsearch 是一个免费及开放(free and open)的项目。同时,Elastic 公司也拥有 Logstash 及 Kibana 开源项目。这个三个项目组

2022-05-22 11:45:50 2373

原创 Java中间件-ehcache

1、什么是ehcache?ehcache是用来管理缓存的一个工具,其缓存的数据可以放在内存里面,也可以放在硬盘上。ehcache的核心是cacheManager,一切的ehcache的应用都是从cacheManager开始的。2、ehcache、cacheManager和cache三者之间的关系?ehcache的核心是cacheManager,cacheManager是用来管理cache(缓存)的。一个应用下可以有多个cacheManager,而一个cacheManager下又可以有多个

2022-05-22 11:44:44 1361

原创 Java的中间件-OSCache

使用OSCache进行简单的缓存在目前流行的三种开源的缓存工具中,OSCache的配置和使用应给是最简单的了,它主要是针对页面级的配置,EHCache主要针对对象级的缓存,MemCached应该是比较完整的了。接下来我们简单的讲一下在你的系统中怎样快速的应用上OSCache。只需简单的两步。第一步:加载oscache.properties文件,默认放到src目录下。下面是oscache.xml的默认配置。你只需简单的去掉一些注释就可以用了。# CACHE IN MEMORY## If y

2022-05-22 11:42:58 523

原创 Java中间件-Zuul

一、zuul简介1、作用zuul使用一系列的filter实现以下功能认证和安全 - 对每一个resource进行身份认证追踪和监控 - 实时观察后端微服务的TPS、响应时间,失败数量等准确的信息日志 - 记录所有请求的访问日志数据,可以为日志分析和查询提供统一支持动态路由 - 动态的将request路由到后端的服务上去压力测试 - 逐渐的增加访问集群的压力,来测试集群的性能限流 - allocating capacity for each type of request an

2022-05-21 12:26:38 478

原创 Java中间件-Memcached

一、知识结构及面试题目分析缓存技术的大规模使用是互联网架构区别于传统 IT 技术最大的地方,是整体高并发高性能架构设计中是重中之重的关键一笔,也是互联网公司比较偏好的面试题目。按照在软件系统中所处位置的不同,缓存大体可以分为三类:客户端缓存、服务端缓存、网络中的缓存;根据部署方式大体可分为:本地缓存和分布式缓存。专栏将以分布式缓存为重点,挑选其中应用最广的 memcached、redis 分别予以介绍,同时兼顾其他缓存方案,从部署、设计、应用场景等方面展开。二、典型面试例题及思路分析问题 1:m

2022-05-21 12:25:49 716

原创 Java知识点归纳

主要内容为J2SE相关的部分,经过这么多年的Java开发,以及结合平时面试Java开发者的一些经验,我觉得对于J2SE方面主要就是要掌握以下的一些内容。JVM相关(包括了各个版本的特性)对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解即可。不过对于一个有着3年以上Java经验的资深开发者来说,不会JVM几乎是不可接受的。JVM作为java运行的基础,很难相信对于JVM一点都不了解的人可以把java语言吃得很透。我在面试有超过3年Java经验的开发者的

2022-05-20 10:56:59 155

原创 2022教你如何快速打好Java基础

随着现代经济济和科技的发展,中国Java编程开发语言行业已经步入了一个高速发展的时代。大家有目共睹了Java编程语言发展的迅猛,每年的Java人才缺口人数都高达百万以上。在我们的工作中、学习中、生活中无不存在和使用着互联网信息技术。既然Java前景如此之好,零基础小白要如何系统的学习Java呢?要如何打好Java基础呢?1、准备学习之路是一项很逆人性的差事,并不是每个人都能够坚持下来,尤其是打基础的阶段,过于强求的话可能就会适得其反,没入门先放弃了。1)对 Java 感兴趣,对互联网的高薪感兴趣

2022-05-19 08:36:53 233

原创 Java语法

Java基础语法一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。 类:类是一个模板,它描述一类对象的行为和状态。 方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。 实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。 简单的方

2022-05-19 08:22:31 99

原创 Spring详解(六)

spring对jdbc的支持<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http:/

2022-04-01 12:35:23 80

原创 Spring详解(五)

事务的四个特性(ACID)①、原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。  ②、一致性(Consistency):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部分失败。在现实中的数据不应该被破坏。  ③、隔离性(Isolation):可能有许多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏。  ④、持久性(Durability):一旦事务

2022-04-01 12:34:34 453

原创 Spring详解(四)

AOP 关键术语1.target:目标类,需要被代理的类。例如:UserService  2.Joinpoint(连接点):所谓连接点是指那些可能被拦截到的方法。例如:所有的方法  3.PointCut 切入点:已经被增强的连接点。例如:addUser()  4.advice 通知/增强,增强代码。例如:after、before  5. Weaving(织入):是指把增强advice应用到目标对象target来创建新的代理对象proxy的 过程.  6.proxy 代理类:通知+切入

2022-04-01 12:33:46 248

原创 Spring详解(三)

DI依赖注入spring动态的向某个对象提供它所需要的其他对象。这一点是通过DI(Dependency Injection,依赖注入)来实现的。比如对象A需要操作数据库,以前我们总是要在A中自己编写代码来获得一个Connection对象,有了 spring我们就只需要告诉spring,A中需要一个Connection,至于这个Connection怎么构造,何时构造,A不需要知道。在系统运行时,spring会在适当的时候制造一个Connection,然后像打针一样,注射到A当中,这样就完成了对各个对象之间

2022-03-31 12:00:53 648

原创 Spring详解(二)

传统的创建对象的方法是直接通过new 关键字,而 spring 则是通过 IOC 容器来创建对象,也就是说我们将创建对象的控制权交给了 IOC 容器。我们可以用一句话来概括 IOCIOC 让程序员不在关注怎么去创建对象,而是关注与对象创建之后的操作,把对象的创建、初始化、销毁等工作交给spring容器来做Spring 容器创建对象的三种方式//这是测试对象,我们通过 IOC 来创建对象 publicclassHelloIoc{ publicvoidsayHello(){ S...

2022-03-31 11:59:54 64

原创 Spring详解(一)

Spring是一个开源框架,框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)Spring 特点①、方便解耦,简化开发  通过Spring提供的IoC容器,我们可以将对象

2022-03-31 11:59:03 128

原创 mybatis详解(五)

分页插件1)添加分页插件的jar包依赖<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>4.1.0</version></dependency>UserServices需要添加如下代码 public PageInfo<User> qu

2022-03-30 11:19:44 332

原创 mybatis详解(四)

spring与mybatis的集成1,新建maven的quickstart项目2,导入需要的坐标,pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apac

2022-03-30 11:18:20 175

原创 mybatis详解(三)

一,动态sql,where,trim,set和foreachparameterType的属性可以不用写xml文件sql的书写<select id="queryByParams" parameterType="string" resultMap="usermap" resultType="user"> select id, <choose> <when test="realname!=null and rea

2022-03-30 11:17:10 243

原创 MyBatis详解(二)

在使用mybatis框架时,首先导入其对应的jar包,并进行相应的配置,所以得对配置文件的每个参数都得了解。一个完全的mybatis配置文件结构如下:<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><!--

2022-03-29 12:02:04 212

原创 MyBatis详解(一)

一. 什么是Mybatis官方说明: Mybatis是一款优秀的持久层框架,它支持制定化SQL,存储过程以及高级映射。Mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。Mybatis可以使用简单的XML或注解来配置和映射原生信息,将接口和java的pojo映射成数据库中的记录。个人理解:Mybatis是一个半ORM(对象关系映射)框架,对jdbc的操作数据库库的过程进行封装,使开发者只需关注SQL本身,提高开发效率。它是一个可以自定义SQL,存储过程和高级映射的持久层框架。

2022-03-29 12:00:53 261

原创 Java监听器详解

一.监听器的定义是指专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生变化时,立即采取相应的行动。Web应用当中监听器是什么?web监听器由servlet规范提供的,它可以监听客户端的请求,服务端的操作,监听的对象包括ServletContext,HttpSession,ServletRequest三个预对象(内置对象),分别对应aplication,session,request内置对象JSP中一共预先定义了9个这样的内置对象,分别为

2022-03-29 11:59:25 12101

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除