Spring2-IOC 和 DI 的注解开发模式
Spring2-IOC 和 DI 的注解开发模式目标
掌握IOC/DI配置管理第三方bean
掌握IOC/DI的注解开发
掌握IOC/DI注解管理第三方bean
完成Spring与Mybatis及Junit的整合开发
1,IOC/DI配置管理第三方bean前面所讲的知识点都是基于我们自己写的类,现在如果有需求让我们去管理第三方jar包中的类,该如何管理?
1.1 案例:数据源对象管理在这一节中,我们将通过一个案例来学习下对于第三方bean该如何进行配置管理。
以后我们会用到很多第三方的bean,本次案例将使用咱们前面提到过的数据源Druid(德鲁伊)和C3P0来配置学习下。
1.1.1 环境准备学习之前,先来准备下案例环境:
创建一个Maven项目
pom.xml添加依赖
1234567<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId> ...
Spring-1 IOC 和 DI 详解
Spring IOC和DI 详解
前言:这是一个系列,主要讲解Spring的核心部分,包括IOC、AOP等。这一部分讲解的是IOC和DI,内容如下。
这一篇包括的内容有:
Spring核心概念
IOC 和 DI 的案例;
IOC的Bean详解;
DI的几种注入方式;
Spring核心概念Spring我们常讲的是它的两个核心,即IOC和AOP,这两个分别是什么意思呢?怎么体现的呢?这就是我们要学习的。所以我们主要学习四个方面:(1)IOC,(2)整合Mybatis(IOC的具体应用),(3)AOP,(4)声明式事务(AOP的具体应用)。
Spring家族Spring其实是一个广泛的体系:
我们主要关注Spring Framework (Spring的核心)、Spring Boot、Spring Cloud像什么SpringSecurity也会用到的。
Spring Framework4的体系如下:
IOC、IOC容器、DI、BeanIOC、DI这一部分相当于是一种设计模式,一种设计思想,Spring实现了这种思想;
IOC:控制反转,原来我们创建对象都是直接new,而控制反转就 ...
Git关键点速记
前言:最近又重温了下廖雪峰老师的Git教程,实在是通俗易懂、醍醐灌顶,想记录一下这个Git教程的关键点,便于以后查看。
Git的主要作用是版本管理和分支管理,对个人开发者来说,可能版本管理会比较重要,分支管理在协作开发中会比较有作用。
Git初始化初始化一个Git仓库,首先得下载Git Git - Downloads然后进入一个目录,最好是非英文执行命令
1git init
创建完仓库之后,会有隐藏的.git目录,这里面就存放git的版本信息等。
Git管理是文本文件,对于二进制文件,只能知道其创建还是删除了,对于修改的操作是不知道的,像图片、视频、docx文档等都是二进制文件。
Git的版本管理先看Git版本库模型:
我们在Git管理的目录中对文件进行修改(增删改)之后,可以执行以下git命令以readme.txt为例:
12git add readme.txtgit commit -m "XXX"
add添加到暂存区,commit提交到本地仓库。
可以多次add,一次commit,这样暂存区中的所有修改都会提交到本地仓库中去。
Git的回退操作可以分为两种: ...
强烈推荐!2024年最新开源Java项目脚手架
强烈推荐!2024年最新开源Java项目脚手架最近实习做项目,在研究Java项目相关的脚手架。今天推荐几个 Java 项目快速开发脚手架。以下项目来自于码云Gitee以及Github,大家可以参考一下这些脚手架的代码,我觉得风格迥异,但是整体质量都很不错。
概览
ruoyi-vue
Snowy
ruoyi-vue-pro
pig
eladmin
ruoyi-vue 若依简介
一直想做一款后台管理系统,看了很多优秀的开源项目但是发现没有合适的。于是利用空闲休息时间开始自己写了一套后台系统。如此有了若依。
若依是作者的女儿名字,这也是一个非常出名的项目了,用来自己做项目和外包快速开发是没有问题的。
相关网站
若依官网:http://ruoyi.vip(opens new window)
演示地址:http://demo.ruoyi.vip(opens new window)
代码下载:https://gitee.com/y_project/RuoYi-Vue
推荐理由
完善的文档:ruoyi-vue提供了详细的开发文档,对新手友好,易于上手。
丰富的功能:内置多种常用功能,减少重复开 ...
再出后续!多媒体实验之宽幅和选做篇
再出后续!多媒体实验之宽幅和选做篇软件设备Visual Studio2022
修改内容3、设计实现一个视频特效程序,能够将两个(或多个)视频拼接成一个宽幅视频。
4、试将水波纹模拟程序和YUV视频显示程序结合起来,实现在视频中叠加水波纹(选做)。
内容1:宽幅视频之前的版本中您可以看到我是直接再创建了一个det_image2来存储第二张图片,然后同时显示det_image和det_image2。但是这样的做法似乎不符合内容的要求。再思考了一下,真正的做法应该是构建一个两倍宽的背景图,再将det_image2的宽度设为原来的2倍,然后在放置像素点时,将两张图片的像素都放进去,直接显示det_image2。
构建2倍宽的背景图
设置det_image2的宽度为2倍宽,我们用这个变量来显示,无论用det_image还是det_image2都是一样的:
关键代码如下:
123456det_image2[288 - i - 1][j].r = r;det_image2[288 - i - 1][j].g = g;det_image2[288 - i - 1][j].b = b;det ...
最终卷!实验三!2024 CSU 多媒体技术与应用实验三(详细版)
软件设备Visual Studio2022
实验内容1、YUV视频文件显示程序为基础,结合图像融合原理与方法,设计并实现一个给YUV视频添加动态字幕的程序(类似卡拉OK动态字幕)。
2、设计实现一个视频特效程序,能够将两个视频实现淡入淡出。
3、设计实现一个视频特效程序,能够将两个(或多个)视频拼接成一个宽幅视频。
4、试将水波纹模拟程序和YUV视频显示程序结合起来,实现在视频中叠加水波纹(选做)。
内容1:添加动态字幕
首先,创建一个WIN32项目,如何创建项目?请参考这篇文章:https://blog.csdn.net/cds008/article/details/137749511?spm=1001.2014.3001.5501
导入我们的素材:
(附:如果您感兴趣的话,可以做一下视频文件的显示内容,跟实验部分没关系,但是可以显示多种类型的视频格式,具体请参考教材中的代码,效果如下,当然我不是为了放我们gege的视频)
回到实验部分,接下来我们要完成的是如何显示一个YUV的视频格式;首先,在framework.h最下面添加一个头文件。
然后,回到主函数,在最前面添加如下宏定 ...
全新超详细!实验二来袭!2024 CSU 多媒体技术与应用实验二(详细版)
软件设备Visual Studio2022
实验内容1.向内存加载两个或多个 BMP位图文件
2.利用像素操作实现单色(R、G、B)、灰度图像的显示
3.通过操作像素实现图像的倒立和正立显示
4.实现两个图像的叠加(一张风景照 一张自己的人物照)
5.改变教材给出的波纹模拟程序中石头大小(stonesize)、石头重量(stoneweight)和显示帧频率等参数,观察模拟效果,并分析所看到现象的原因。
内容1:加载多个位图文件
首先,创建一个WIN32项目,如何创建项目?请参考这篇文章:https://blog.csdn.net/cds008/article/details/137749511?spm=1001.2014.3001.5501
接下来,我们按照教材中的步骤进行操作,首先添加全局变量,位置注释里有写,创建的代码模板中是会有的:
添加图片显示的代码,这段代码是添加在wWinMain函数中的,你也可以自己写一个函数封装这个代码,然后在wWinMain中去调用,并做好前置声明。代码的内容如下,这里是两张图片的添加:
也可以封装这两个代码,再放到wWinMain函数中:
...
全新超详细!2024 CSU 多媒体技术与应用实验一(详细版)
软件设备Visual Studio2022
实验内容1.设计一个程序,利用三个Media Session同时播放三个音频文件。
2.打开两个音频文件(限Wav文件,并具有相同的采样频率和量化深度),然后用第二个音频文件左声道代替第一个音频文件左声道,但保留第一个音频文件的右声道,最后播放第一个音频文件,并观察结果。
3.设计实现静音效果。
实验前置内容如何用VS2022创建一个WIN32项目创建项目->选择windows桌面应用程序即可,里面会有一些示例代码,项目是可以直接运行的(直接无脑下一步就行)。
如何获取免费的音频老师的代码中只提供了TheClassic.wav文件,而我们的实验中是需要更多的wav文件的,这里我是去https://www.ear0.com这个网站中下载的,建议最好下载wav格式的文件,因为mp3可能会出现一些问题。
如何让你的程序播放音频有两种方式,一种是使用playSound组件,一种是使用MediaSession组件,实验用的是第二种,我们都介绍一下。你也可以按照我的步骤去添加一遍代码,因为我的项目中包含了这两种方式。
playSound组件播放音 ...
跟练代码随想录之链表篇
跟练代码随想录之链表篇
写在前面,这个系列是跟着B站的代码随想录跟练算法的部分。算法还是比较薄弱,慢慢打基础吧,这篇文章很久以前就写好了,只是发布的时间比较晚了,最近也是打算迁移一下自己的文章。
友链到卡哥https://www.programmercarl.com/
1.移除链表元素(leetcode203)这题算是链表里比较基础的了,构建了链表的基本思想。
两种方法,1:头节点和中间节点分开处理,这样要先用一个while循环,找到第一个不为val 的节点,充当头节点;
2:声明一个虚拟节点dummyNode,其next指向头节点,然后直接一个while循环来判断,相等则删,不等则next;注意,判断的是当前节点的next,因为这是单向链表,我们想删next,需要有cur,我们想删cur,却没有cur的前一个节点。
12345678910111213141516171819202122/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNod ...
跟练代码随想录之哈希表篇
跟练代码随想录之哈希表篇
写在前面,这个系列是跟着B站的代码随想录跟练算法的部分。算法还是比较薄弱,慢慢打基础吧,这篇文章很久以前就写好了,只是发布的时间比较晚了,最近也是打算迁移一下自己的文章。
友链到卡哥https://www.programmercarl.com/
1.有效的字母异位词(leetocde242)有效的字母异位词,就是两个字符串是由相同个数的字母组成的,比如abbc和bbac。这题一看就是用哈希来做。
一般的哈希结构我们有三种,用哈希数组、哈希set、哈希map来做。
个数小的时候可以用数组,大的时候可以用set,有明确k-v值的话可以用map。
这里我们可以用最简单的数组来做。
123456789101112131415//这个是用哈希数组来做:O(n)的复杂度:class Solution { public boolean isAnagram(String s, String t) { int[] hash = new int[26]; if (s.length()!=t.length()) return ...