自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java函数式(2)lambda表达式

Lambda表达式是用最少的句法来完成方法定义。在Java虚拟机上,所有的东西都是一个类,在背后有很多操作,让lambda表达式看起来像方法。但是在虚拟机上应该还是一个类! interface Description{ String brief(); } interface Body{ String detailed(String head); } interface Multi{ String twoArg(String head, Double d); } public

2021-09-22 16:06:17 155

原创 Java 函数式编程(1)

Introduction: 函数式编程语言操作一段代码和操作数据一样简单。尽管Java不是一个functional language,但是Java 8 的 Lambda 表达式 (Lambda Expression)和 方法引用 (Method Reference)允许你以一种函数式的方式编程。 从代码创造,维护和可靠性的角度来看,使用代码去操作其他代码是令人难以抗拒的。如果可以利用现有的,经过测试的,可靠的代码,而不是从0开始写代码。把你的新代码和现有的代码组合起来创造新的功能,那会使我们更加...

2021-09-18 16:10:08 78

原创 多线程基础(2)

Sleeping Sleeping Priority Yielding

2021-06-28 22:29:07 71

原创 多线程基础(1)

定义任务: 一个线程驱动一个任务,你需要一个方式来描述这种任务。可以通过实现Runnable接口的run方法来定义一个任务。 package concurrency; public class LiftOff implements Runnable { protected int countDown = 10; private static int taskCount = 0; private final int id = taskCount++; public

2021-06-12 23:23:52 61

原创 4.2 通过切点来选择连接点

切点用于准确定位应该在什么地方应用切面的通知。{通知,切点}是切面的最基本元素。 通知:做什么,什么时候做 切点:在哪里做(缩小使用切面的范围) AspectJ 指示器 描述 arg() 限制连接点匹配参数为指定类型的执行方法 execution 用于匹配时连接点的执行方法 this() 限制连接点匹配AOP代理的bean引用为指定类型的类 target 限制连接点匹配目标对象为指定类型的类 within 限制连接点匹配指定的类型

2021-03-24 00:02:22 109

原创 第四章:面向切面的Spring

4.1 什么是面向切面编程 在第二章,我么介绍了如何使用依赖注入管理和配置我们的应用对象。DI有助于应用对象之间的解耦,而AOP可以实现横切关注点与它们所影响的对象之间的解耦。 日志是切面编程常见的范例,还有声明式事务,安全,缓存等。。。 ...

2021-02-21 23:13:44 123

原创 3.5运行时值注入

讨论依赖注入的时候,我们通常所讨论的是将一个Bean的引用注入到另一个Bean的属性或构造器参数中。它通常来讲指的是将一个对象与另一个对象关联。 另一个方面,将一个值注入到Bean的属性或者构造器参数中! public class SgtPeppers implements CompactDisc, BeanNameAware { private String title = "Sgt. Pepper's Lonely Hearts Club Band"; private Strin

2021-02-17 23:49:46 438

原创 3.4.1会话和请求作用域

占坑

2021-02-15 20:50:08 66

原创 3.4Bean的作用域

默认情况下,Spring应用上下文中所有的Bean都是作为单例的形式创建的。 大多数情况下,单例都是很理想的方案。初始化和垃圾回收对象实例所带来的成本只留给一些小规模的任务,在这些任务中,让对象保持无状态并且在应用中反复重用可能不太合理。 有时候,你所使用的类是易变的,他们会保持一些状态,重用不太安全!!(多线程问题) Spring 定义了多种作用域 单例(Singleton):在整个应用中,只创建bean的一个实例 原型(Prototype):每次注入或者通过Spring应用上下文获取的时候,都

2021-02-15 20:49:25 65 2

原创 3.3处理自动装配的歧义性

在第二章中,我们使用自动装配让spring来负责将Bean引用注入到构造参数和属性中。自动装配能够提供很大的帮助。 但是仅有一个Bean匹配所需的结果时,自动装配才是有效的。 以下例子: @Component public class Menu { public Dessert dessert; @Autowired public void setDessert(Dessert dessert) { this.dessert = dessert;

2021-02-15 18:05:46 110

原创 3.2条件化的bean

3.2条件化的bean 如果你希望一个或者多个bean只有在应用的类路径夏包含特定的库的时候才创建。 或者希望某个bean只有当另外某个特定的bean也申明了之后才创建。 某个环境变量设置之后,才创建等等。。。 ...

2021-02-15 13:35:32 135

原创 P67 第三章 高级装配 spring 实战第四版

3.1 环境与profile 开发软件的时候,有一个很大的挑战就是将应用程序从一个环境迁移到另一个环境中。在开发的阶段有些做法可能不适合生产环境,UAT to PROD。数据库的配置,加密算法,和外部系统的集成。 public class DataSourceConfig { @Bean() public DataSource dataSource(){ return new EmbeddedDatabaseBuilder().build(); }

2021-02-10 23:49:21 73

原创 2.5导入和混合配置 P61 Spring实战 第四版

导入和混合配置: 在典型的spring应用当中,我们可能同时使用自动化和显示配置。(java config/ xml配置) 各有优势!! spring并不排斥这些配置方案,我们可以将java config/ 自动装配 autowired/ xml配置混合在一起,只需要一些显示配置来启动组件扫描和自动装配。 2.5.1在java config中引用xml配置 1. 拆分CDconfig @Configuration public class CDConfig { @Bean pub

2021-02-10 00:26:53 77

原创 设置属性,Spring实战第四版,P56

目前为止,我们所有的类都是通过构造器注入,没有使用setter方法。我们接下来要看如何使用Spring XML实现属性注入。 package soundSystem; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @Component public class CDPlayer implements MediaPlayer

2021-02-09 22:42:45 48

原创 使用xml来装配集合,Spring实战第四版P53

使用XML来装配集合 我们使用新的domain类来描述一张唱片,里面加入了track。 package soundSystem; import java.util.List; public class BlankDisc implements CompactDisc{ private String title; private String artist; private List<String> tracks; public BlankDisc(

2021-02-09 00:02:05 57

原创 Spring 实战 通过XML装配Bean

Spring从诞生之时就是使用XML来配置各个Bean。但是现在XML不再是配置的唯一选择,JavaConfig和AutoWired都是现在更加推荐的选择。这一章节主要是希望能够帮助我们维护现有的代码!!新写的代码还是比较推荐使用JavaConfig或者自动装配。 2.4.1 创建XML配置规范 以下就是一个标准的配置文件!<beans>标签内部可以声明所需要的Bean。用来装配Beans的最基本的XML元素包含在spring-beans模式中。 <?xml version="..

2021-02-08 23:48:59 137

原创 Spring 实战 P44 通过Java代码装配Bean

2.3 通过Java代码装配Bean 使用场景:自动化配置行不通的时候,(将第三方库中的组件装配到你的应用当中)不能在组件上面添加@Componet和@AutoWired,所以就不能使用自动化装配的方案了!! 特殊对待:可以将JavaConfig写在一个单独的文件当中,因为它虽然是用Java代码写的,但是并不含有业务逻辑和领域代码!!为了不混淆,建议放在一个单独的包里。 2.3.1 创建配置类: @Configuration //@ComponentScan 不需要组件扫描,手动Java配置 pu

2020-12-27 19:15:59 160

原创 Spring 实战 自动装配 @AutoWired

Intro: 在Spring中,对象无需自己查找或者创建与其所关联的其他对象。容器负责把需要相互协作的对象引用赋予各个对象。进行这种行为成为装配,也是依赖注入(DI)的本质! 三种主要装配方式:(可以混合使用) XML中进行显式配置。 (使用命名空间时推荐) 在Java中进行显式配置。(次推荐)类型安全性好。 隐式的bean发现机制和自动装配。(推荐)当有一些bean无法自动装配的时候,一些第三方的类,不能加@Compnent,就使用上面的两种方法。 自动化装配 组件扫描

2020-12-25 21:07:24 193

原创 Spring 实战 P16-P21 Bean的生命周期

消除模板式代码: 类似JDBC代码,需要很多重复的代码,Spring使用JDBCtemplate去消除重复代码。让代码更专注于逻辑!! 容纳你的bean: 在基于Spring的应用中,应用对象生存于Spring(容器)(container)中。Spring容器负责创建对象,装配他们,配置它们并管理它们的整个生命周期,从生存到死亡。 首先我们需要了解一下容器(有助于我们理解对象是如何管理的)。 Spring容器并不是只有一个。Spring自带了多个容器实现,可以归为两种不同的类型。 bean工 厂

2020-11-29 23:24:53 116

原创 Spring 实战 第四版 P11-P16 aop入门

1.1.3 应用切面 DI能够让相互协作的软件组件保持松散耦合,面向切面编程(AOP)允许你把遍布应用各处的功能分离出来形成可重用的组件。 除了实现自身核心的功能之外,这些组件还经常承担着额外的职责。诸如日志、事务管理和安全这样的系统服务经常融入到自身具有核心业务逻辑的组件中去,这些系统服务通常被称为横切关注点,因为它们会跨越系统的多个组件。 1. 这些横切关注点的问题,如果你想要改变比如(日志,或者安全如何实现)。如果他们被嵌在其他代码中,会非常麻烦,你需要重复改。 2. 即使你全部把关注点抽出来

2020-11-29 15:17:04 137

原创 Spring 实战第四版 DI 入门

工作了快一年的时间,感觉没有系统的学习过Spring,在这边开一个博客,记录一下Spring第四版的学习。 1 Spring 如何简化Java 开发的复杂性 基于pojo的轻量级和最小侵入性编程 DI和面向接口实现松耦合 AOP和惯例进行声明式编程 通过切面和模板减少样板式代码 1.1基于pojo的轻量级和最小侵入性编程 Spring不会强迫你实现Spring规范接口或继承Spring规范的类,没有任何痕迹表明你使用了Spring。 例子: spring在这个bean上面不会有任何不合理的请.

2020-11-28 09:56:51 214

原创 算法(二)栈,数组实现

P132-P142 栈,数组实现 Implementing Collections 定长栈(fixed-capacity stack) public class FixedCapacityStackOfStrings { private String[] a; // stack entries private int N; // size public FixedCapacityStackOfStrings(int cap) { a = new String[cap]; } //构造函数,需要指定长

2020-07-15 01:14:18 73

原创 算法学习(一)

算法第四版学习笔记–1.3 Bags, Queues and Stacks 前面120页都是Java基础,建议有Java基础的同学可以直接从120页开始学习,但是这里面的例子有用到algs4这个jar,需要稍微了解一下,影响不大,都是对JDK的一些封装。 Introduction 这一章,包括bag, queue, 和 stack。都是用来存东西,都有add,remove,examine,但是呢,他们有着一些区别,(哪一个对象是下一次remove或者examine)。 三个目标: 强调数据结构对效率的影响

2020-06-30 01:55:44 7511

空空如也

空空如也

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

TA关注的人

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