自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Sam Blog

姑苏城外,技术一枚

  • 博客(93)
  • 资源 (6)
  • 收藏
  • 关注

原创 Java异常:Throwable

一、概述1、Throwable接口1)Error 类2)Exception 类编译期问题:不是 RuntimeException 的异常必须进行处理的,因为你不处理,编译就不能通过。运行期问题:RuntimeException 异常这种问题我们也不处理,因为是你的问题,而且这个问题出现肯定是我们的代码不够严谨,需要修正代码的。二、异常的处理: (一)异常的处理方式1、JVM的默认处理:报错。把异常的名称,原因,位置等信息输出在控制台,程序不能继续执行了。2、自己处理1)方式1:

2022-05-31 21:58:01 1760

原创 集合详解(四):Map

一、Map(一)Map概述1、Map集合:将键映射到值的对象。1)一个映射不能包含重复的键;2)每个键最多只能映射到一个值。 2、Map集合和Collection集合的区别1)Map集合存储元素是成对出现的,Map集合的键是唯一的,值是可重复的。可以把这个理解为:夫妻对 。2)Collection集合存储元素是单独出现的,Collection的儿子Set是唯一的,List是可重复的。可以把这个理解为:光棍(11.11)3、注意: 1)Map集合的数据结构只针对键有效,跟值无关 ,Ha

2022-05-31 21:57:08 1022

原创 集合详解(三):Set

一、概述1、无序,存储顺序和取出顺序不一致2、不能重复,唯一二、HashSet(一)特点:1、不保证 set 的迭代顺序,特别是它不保证该顺序恒久不变。虽然Set集合的元素无序,但是,作为集合来说,它肯定有它自己的存储顺序, 而你的顺序恰好和它的存储顺序一致,这代表不了有序,你可以多存储一些数据,就能看到效果。2、不能重复,唯一性。3、HashSet底层是HashMap实现的,而数据结构为哈希表

2022-05-31 21:56:47 705

原创 集合详解(二):List

一、List概述(一)概述1、List特点1)有序(存储和取出的元素顺序一致),对每个位置可以精确控制。2)可重复的,不唯一。2、List的子类特点1)ArrayList:查询快底层数据结构是数组(定长),查询快,增删慢。线程不安全,效率高。2)Vector:不推荐底层数据结构是数组,查询快,增删慢。线程安全,效率低。

2022-05-31 21:56:21 981

原创 集合详解(一):Collection以及简单数据结构

一、Collection 概述二、三、

2022-05-31 21:56:01 1901

原创 时间日历:Date、Calendar

一、Date(一)概述1、Date:表示特定的瞬间,精确到毫秒。2、构造方法:Date():根据当前的默认毫秒值创建日期对象Date(long date):根据给定的毫秒值创建日期对象(注意时区,这边是东8区) /* * Date:表示特定的瞬间,精确到毫秒。 * * 构造方法: * Date():根据当前的默认毫秒值创建日期对象 * D

2022-05-31 21:55:39 1038

原创 数组Array及其工具类的使用

一、一维数组(一)初始化1、静态初始化:给出初始值,系统决定长度int[] sArr = {1,2,3};String[] sArrStr = {"a","b","c"};2、动态初始化:只指定长度,系统给出初始值int[] dArr = new int[3];//分配空间dArr[0] = 1;dArr[1] = 2;dArr[2] = 3; Strin

2022-05-31 09:48:38 2460

原创 String 和 StringBuffer详解

一、概述1、字符串:就是由多个字符组成的一串数据。也可以看成是一个字符数组。2、通过查看API,我们可以知道字符串字面值"abc"也可以看成是一个字符串对象。字符串是常量,一旦被赋值,就不能被改变。3、构造方法:public String():空构造public String(byte[] bytes):把字节数组转成字符串public String(

2022-05-31 09:48:05 4795

原创 超类Object和键盘类Scanner

一、构造方法1、无参的构造方法二、常用方法(一)hashCode1、特点返回该对象的哈希码值。针对不同的对象返回不同的整数,通过将该对象的内部地址转换成一个整数来实现。(二)equals1、特点:指示其他某个对象是否与此对象“相等”,内部是使用“==”实现,看源码。默认情况下比较的是地址值。比较地址值一般来说意义不大,所以我们要重写该方法

2022-05-31 09:47:33 482

原创 面向对象(三):常用知识下

十一、抽象类1、抽象类的特点:抽象类和抽象方法必须用abstract关键字修饰抽象类一般会有一个 public 的方法,作为访问的入口。抽象方法,一般使用 protected 关键字修饰,用于子类重写。内部使用的方法,为 private 修饰。抽象类中不一定有抽象方法,但是有抽象方法的类必须定义为抽象类。抽象类不能实例化 ,但是抽象类有构造方法,作用在于子类访问

2022-05-26 22:17:21 852

原创 面向对象(二):常用知识上

一、成员变量和局部变量1、区别 1)在类中的位置不同成员变量:在类中方法外局部变量:在方法定义中或者方法声明上 2)在内存中的位置不同成员变量:在堆内存局部变量:在栈内存 3)生命周期不同成员变量:随着对象的创建而存在,随着对象的消失而消失局部变量:随着方法的调用而存在,随着方法的调用完毕而消失 4)初始化

2022-05-26 22:16:57 603

原创 面向对象(一):基础分析

Java 程序在运行时,需要在内存中分配空间。为提高运算效率,对内存空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式与内存管理方式。1、Class Loader 类加载器类加载器的作用是加载类文件到内存,比如编写一个HelloWord.java程序,然后通过javac编译成class文件, Class Loader承担的就是这个责任,Class Loader加载的class文件是有格式要求。2、STACK 栈:存放局部变量。数据用完就释放,一定是脱离了它的作用域。Java中,栈的大

2022-05-26 22:16:33 580

原创 SpringMVC学习笔记(二): 日常使用功能

七、@RequestBody 和 @ResponseBody (一)@RequestBody:1、作用: 1)该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上。2)再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。2、使用时机:1)GET、POST方式提时, 根据request header Content-Type的值来判断:①、ap

2022-05-25 09:51:53 1584 2

原创 SpringMVC学习笔记(一): 基础知识

spring-mvc的主要结构:1、DispatcherServlet:中央控制器。1)把请求给转发到具体的控制类(即具体的Controller)。2)需要在web.xml 中配置,类似于struts2需要配置的 StrutsPrepareAndExecuteFilter 。2、Controller:具体处理请求的控制器。1)类似于struts2的action ,处理具体请求与返回的信息。2)日常功能都在Controller 中处理。可以使用xml实现(继承AbstractController

2022-05-25 09:51:16 2121

原创 Spring笔记(五): spring 整合jdbc、hibernate、jpa

一、简介(一)需要的jar包1、需要的jar包:spring、hibernate、mysql、xml、apache-commons等等的jar包。2、以上jar包,如spring、xml和commos都是冗余的。(二)分析1、涉及到的实体、service、dao接口、jdbc配置文件以及service实现类都可以通用,只需要实

2022-05-25 09:50:50 2950

原创 Spring笔记(四): spring的编程式事务与声明式事务

事务管理对于企业应用而言至关重要。它保证了用户的每一次操作都是可靠的,即便出现了异常的访问情况,也不至于破坏后台数据的完整性。就像银行的自助取款机,通常都能正常为客户服务,但是也难免遇到操作过程中机器突然出故障的情况,此时,事务就必须确保出故障前对账户的操作不生效,就像用户刚才完全没有使用过取款机一样,以保证用户和银行的利益都不受损失。在 Spring 中,事务是通过 TransactionDefinition 接口来定义的。该接口包含与事务属性有关的方法。在 Spring 中,事务是通过 Transa

2022-05-25 09:50:28 2782 2

原创 Spring笔记(三):Aop详解

1、需要的包:spring的包,还需要 aspectjweaver.jar,aopalliance.jar ,asm.jar 和cglib.jar 。2、Aop的实现方式:Spring 接口方式,schema配置方式和注解的三种方式3、概念1)切面(aspect):用来切插业务方法的类。2)连接点(joinpoint):是切面类和业务类的连接点,其实就是封装了业务方法的一些基本属性,作为通知的参数来解析。3)通知(advice):在切面类中,声明对业务方法做额外处理的方法。4)切入点(po

2022-05-25 09:50:02 3355 1

原创 Spring笔记(二):Ioc 之注入与装配

1)控制反转(IOC):以前传统的java开发模式中,当需要一个对象时我们,我们会自己使用new或者getInstance等直接或者间接调用构造方法创建一个对象,而在Spring开发模式中,Spring容器使用了工厂模式为我们创建了所需要的对象,我们使用时不需要自己去创建,直接调用Spring为我们提供的对象即可,这就是控制反转的思想。实例化一个java对象有三种方式:使用类构造器,使用静态工厂方法,使用实例工厂方法,当使用spring时我们就不需要关心通过何种方式实例化一个对象,spring通过控制反转机

2022-05-25 09:49:31 808

原创 Spring笔记(一):Ioc 之 Bean的管理

2、Spring主要核心是:1)控制反转(IOC):以前传统的java开发模式中,当需要一个对象时我们,我们会自己使用new或者getInstance等直接或者间接调用构造方法创建一个对象,而在Spring开发模式中,Spring容器使用了工厂模式为我们创建了所需要的对象,我们使用时不需要自己去创建,直接调用Spring为我们提供的对象即可,这就是控制反转的思想。实例化一个java对象有三种方式:使用类构造器,使用静态工厂方法,使用实例工厂方法,当使用spring时我们就不需要关心通过何种方式实例化一个对

2022-05-25 09:46:06 1928

原创 SpringMVC4.x 笔记(4):控制器(Controller)功能实现

文章目录使用 `@RequestMapping` 映射请求通过请求URL进行映射使用 URI Template Patterns 风格通过请求参数、请求方法/请求头进行映射`@RequestMapping`请求方法组合注解请求处理方法参数绑定(参数获取)使用`@RequestParam`绑定请求参数使用`@CookieValue`绑定请求中的Cookie值使用 `@RequestHeader` 绑...

2020-02-06 21:30:50 518

原创 SpringMVC4.x 笔记(3):使用JavaConfig配置实现开发

文章目录一、配置Spring MVC(一)Xml配置(二)JavaConfig配置(Servlet3.x)(三)Servlet3.x 配置实现分析二、JavaConfig配置实现解析(一)配置实现分析(二)扩展实现的功能列表参考一、配置Spring MVC(一)Xml配置配置 DispatcherServlet<web-app> <display-name&g...

2020-02-06 21:24:56 347

原创 SpringMVC4.x 笔记(2):Spring MVC中MVC设计

文章目录请求流程请求流程图流程分析Control 设计处理器映射 HandlerMappingHandlerMapping 概述HandlerMapping 初始化常用`HandlerMapping`了解BeanNameUrlHandlerMappingSimpleUrlHandlerMappingRequestMappingHandlerMappingHandlerMapping 的使用处理器适...

2019-10-13 11:16:50 156

原创 SpringMVC4.x 番外(1):Spring MVC 上下文容器初始化

文章目录MVC 应用配置实现Web.xml 配置实现Servlet3.x 容器实现MVC 容器初始化DispatcherServlet 创建DispatcherServlet 初始化参考MVC 应用配置实现在目前的实现中Spring的上下文容器可以称之为RootApplicationContext,而MVC的上下文容器称之为WebApplicationContext或者ServletApp...

2019-09-26 10:10:45 210

原创 Spring4.x 番外(1):Spring 上下文容器(WebApplicationContext)初始化

文章目录WebApplicationContext 配置实现使用 Web.xml 配置启动使用 SpringServletContainerInitializer 配置启动容器初始化监听器对象的创建监听器初始化监听器销毁参考WebApplicationContext 配置实现Spring 框架提供了用于启动 ApplicationContext上下文容器的监听器:ContextLoaderL...

2019-09-25 13:27:18 466

原创 SpringMVC4.x 笔记(1):框架体系概述

文章目录简单使用核心类DispatcherServlet 初始化上下文容器初始化内部组件初始化核心组件扩展注解 @EnableWebMvc内部组件扩展核心类 WebMvcConfigurationSupport请求流程请求流程图流程分析总结简单使用使用 Spring MVC 方式有多种,刚开始接触一般为 Web.xml 和 dispatcherServlet-servlet.xml 配置实现。...

2019-09-25 09:40:21 238

原创 Spring4.x 笔记(14):Spring 声明式 Aop

文章目录声明式 Aop 实现基于AspectJ注解实现基于Schema标签实现基于注解的 Advice注解Advice详解说明前置- @Before后置- @AfterReturning环绕- @Around异常抛出- @AfterThrowingFinal- @After引介- @DeclareParentsAdvice 的顺序切点表达式函数详解常用函数以及用法@annotationexecut...

2019-05-17 16:02:02 357

原创 Spring4.x 笔记(13):Spring 编程式 AOP

文章目录问题回顾Spring Advice 增强Advice 类型具体Advice 使用介绍前置 Advice后置 Advice环绕 Advice异常 Advice引介 AdviceSpring Pointcut 切点切点概述切点类型Spring Advisor 切面切面 Advisor 类型切面类型概述切点切面 PointcutAdvisor具体切面用法介绍静态普通方法名匹配切面- Static...

2019-05-17 15:51:33 577

原创 Spring4.x 笔记(12):Spring Aop 基础

文章目录AOP概述AOP 场景概述AOP 实现者AOP 术语Spring AOP 原理JDK 动态代理动态代理详解使用动态代理改造CGLib 实现总结参考AOP概述AOP 场景概述在OOP面对对象以及软件重构的理念,如果多个类中出现相同的代码,则应该考虑定义父类。如Pig、Horse这些对象都有run()和eat()方法,则可以通过定义一个包含着两个方法的Animal父类,Pig、Hor...

2019-05-17 15:46:40 176

原创 任务调度框架(6)番外:使用 SpringBoot2.X 实现 Quartz 动态任务的分布式调度

文章目录SpringBoot2 集成 Quartz集成简单实现Pom依赖编码功能实现自动配置实现分析自动化配置分析 `QuartzAutoConfiguration`支持功能配置 `QuartzProperties`小结Quartz 实现分布式调度回顾分析配置简单实现Quartz 的任务动态实现数据使用数据库保存任务计划的动态管理手动配置实现的原理动态管理:创建计划任务引擎类任务状态与计划依赖小结...

2019-05-09 16:47:54 3522 1

原创 JDK多线程基础(16):锁的性能与优化

文章目录避免死锁减少锁持有时间减小锁粒度:缩小锁定对象的范围锁分离读写锁:读锁、写锁的分离锁分离:独占锁也可以分离重入锁与内部锁锁粗化自旋锁锁消除与逃逸分析锁偏向参考避免死锁死锁问题是多线程特有的问题。在死锁时,线程间相互等待资源,而不释放自身的资源,导致无穷尽的等待,其结果是系统任务永远无法执行完成。死锁出现的条件互斥条件:一个资源每次只能被一个进程使用请求与保持条件:一个进程因...

2019-04-21 10:51:03 197

原创 JDK多线程基础(15):并行程序设计模式

文章目录FutureMaster-Worker原理实现模式结构代码实现Guarded Suspension 保护暂停、漏斗模型原理简单实现不变模式 final不变模式使用场景不变模式实现JDK中的实现Producer-Consumer 生产者-消费者原理分析简单实现参考FutureFuture 模式的核心在于去除了主函数中的等待时间,并使得原本需要等待的时间段可以处理其他的业务逻辑从而充分利...

2019-04-21 08:42:35 195

原创 JDK多线程基础(14):同步工具

文章目录Semaphore简介源码示例CountDownLatch简介源码API示例CyclicBarrierExchanger参考Semaphore简介无论是内部锁synchronized 还是 ReentrantLock ,一次都只允许一个线程访问一个资源Semaphore 是对锁的扩展,允许多个线程同时访问某一资源源码构造函数public Semaphore(int ...

2019-04-21 08:11:46 162

原创 JDK多线程基础(13):并发数据结构(队列)

文章目录并发 QueueConcurrentLinkedQueue 非阻塞队列简介源码分析简单示例BlockingQueue 阻塞队列常用队列常用方法LinkedBlockingQueue 与 ArrayBlockingQueue 区别简单示例Deque(Double-Ended-Queue)双向队列(JDK1.6 以后)简介LinkedBlockingDeque参考并发 QueueConcu...

2019-04-21 07:59:14 215

原创 JDK多线程基础(12):并发数据结构(集合)

文章目录ConcurrentModificationException 异常并发 List简介详解SynchronizedListCopyOnWriteArrayListVector并发 Set并发 Map简介ConcurrentHashMap (JDK7、8 设计差别较大)JDK7源码JDK7设计: 使用`Segment`分段锁,减小锁粒度JDK8设计JDK8源码参考ConcurrentMod...

2019-04-16 16:52:09 359

原创 JDK多线程基础(11):无锁并行,JDK原子操作

文章目录非阻塞同步/无锁并行简介CAS 算法JDK 的原子操作原子操作类(java.util.concurrent.atomic)原子类的核心方法,以 AtomicInteger 为例getAndSet 方法为例性能比较Amino 框架(TODO)参考非阻塞同步/无锁并行简介基于锁的同步方式,也是一种阻塞的线程间的同步方式,无论是信号量(Semaphore)、CountDownLatch、...

2019-04-13 15:34:49 388

原创 JDK多线程基础(10):锁等待与唤醒 Condition

文章目录简介`Condition`接口接口方法简单示例应用阻塞队列JDK 阻塞队列实现:ArrayBlockingQueue参考简介线程间的协调工作光有锁是不够的,在业务层,需要复杂的线程间协作逻辑。Condition 对象可以实现线程间的复杂协作Condition 是与锁相关的。通过lock.newCondition()方法可以生成一个与锁绑定的Condition对象Condition...

2019-04-13 15:23:45 338

原创 JDK多线程基础(9):读写分离锁 ReadWriteLock

文章目录读写锁 ReadWriteLock简介简单实现参考读写锁 ReadWriteLock简介读写分离锁是减少锁粒度的一种特殊情况,是对系统功能点的分割,其分割了读与写两种操作适合场景:读多写少的场合。交互逻辑如下:读锁之间是相容的,读锁在读读操作是不需要相互等待,提升多线程读数据的性能写锁的占用是独占的读锁写锁读锁可访问不可访问写锁不可访...

2019-04-13 15:20:36 273

原创 JDK多线程基础(8):重入锁 ReentrantLock

文章目录重入锁 ReentrantLock重入锁`ReentrantLock` 和 内部锁`synchronized`重入锁 `ReentrantLock` 方法详解获取锁的方法其他方法参考重入锁 ReentrantLock重入锁ReentrantLock 和 内部锁synchronized重入锁ReentrantLock 相对于 内部锁synchronized,功能更加强大,使用较为复杂...

2019-04-13 15:17:44 196

原创 JDK多线程基础(7):有返回的线程Callable接口以及 Future 模式

文章目录Callable 接口Runnable 与 CallableJDK 的 Future 实现Future 模式Future 接口FutureTask 类`ExecutorService` 执行一个 Callable任务Future 使用执行一个任务执行多个任务Guava 的实现使用 ListenableFuture 提交任务使用 FutureTask 提交任务提交一组任务其他功能(具体见 G...

2019-04-13 15:13:13 431

原创 JDK多线程基础(6):线程池(ThreadPoolExecutor)详解

文章目录线程池 ThreadPoolExecutor`Executors` 工厂本质ThreadPoolExecutor 详解构造方法详解任务队列拒绝策略自定义线程池实现优化线程池大小扩展 ThreadPoolExecutor:经验如何确定合适数量的线程spring应用中线程池使用参考线程池 ThreadPoolExecutorExecutors 工厂本质Executors 线程池工厂类提供...

2019-04-13 14:47:56 443

RabbitMQ实战指南.zip

RabbitMQ实战指南 PDF 下载 RabbitMQ实战指南 PDF 下载,高清

2019-06-06

抓包工具:Wireshark-win64-3.0.0 和 FiddlerSetup

抓包工具:Wireshark-win64-3.0.0 和 FiddlerSetup

2019-03-19

大型网站系统与JAVA中间件实践-曾宪杰

大型网站系统与JAVA中间件实践-曾宪杰

2019-01-30

大型网站技术架构:核心原理与案例分析-李智慧.pdf

大型网站技术架构:核心原理与案例分析-李智慧.pdf

2019-01-30

大规模SOA系统中的分布式事务处理_程立

大规模SOA系统中的分布式事务处理_程立 经典中的经典,蚂蚁CTO 分享的分布式事务解决方案

2019-01-30

rabbitmq-server-windows-3.7.9.zip

rabbitmq 的 window 版本 rabbitmq-server-windows-3.7.9.zip

2019-01-29

空空如也

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

TA关注的人

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