Java
9_Spring_JDK动态代理
9_Spring_JDK动态代理 代理模式 是通过代理对象访问目标对象,这样可以在目标对象基础上增强额外的功能,如添加权限,访问控制和审计等功能。 房产中介代替业主卖房 静态代理 静态代理中代理类与被代理类都需要实现同一个接口,这就说明我们的一个静态代理类只能代理一个类,并且还要事先知道我们要代理哪个类才能写代理类,如果我们有其他类还想使用代理那就必须再写一个代理类。然而在实际开发中我们是可能
7_Spring_使用外部属性配置文件
7_Spring_使用外部属性配置文件 spring容器可以读取.properties属性配置文件,可以将文件中的信息注入给bean 例如,引入Druid数据源,配置连接池信息 1 导入Druid依赖和mysql-connector依赖 2 准备属性配置文件 resources目录下准备一个jdbc.properties
12_Spring_AOP注解方式实现_掌握
12_Spring_AOP注解方式实现_掌握 AspectJ本身并不是spring框架中的组成部分, 是一个独立的AOP框架,一般把AspectJ和Spring框架的AOP依赖一起使用,所以要导入一个独立的依赖 实现的两种方式 1 基于注解方式实现 (熟练) 2 基于XML配置方式 (了解) 准备工作1 导入依赖
11_Spring_AOP概念和原理
11_Spring_AOP概念和原理 AOP切面编程一般可以帮助我们在不修改现有代码的情况下,对程序的功能进行拓展,往往用于实现 日志处理,权限控制,性能检测,事务控制等 AOP实现的原理就是动态代理,在有接口的情况下,使用JDK动态代理,在没有接口的情况下使用cglib动态代理 为Dao层所有的add方法添加一个性能记录功能 AOP中的术语辨析 1 连接点 Joint point
10_Spring_CGLIB动态代理
10_Spring_CGLIB动态代理 proxy 动态代理 面向接口 1必须有接口和实现类 2增强接口中定义的方法 3只能读取接口中方法的上注解 cglib动态代理模式 面向父类 package com.msb.testCglib; import org.junit.Test; import org.springframework.cglib.proxy.Enhancer; import
15_Spring_JDBCTemplate批操作
15_Spring_JDBCTemplate批操作 一次连接,操作表格里的多条数据,就是批量操作 1 批量增加 2 批量修改 3 批量删除 实体类 package com.msb.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.io.
14_Spring_JDBCTemplate的使用
14_Spring_JDBCTemplate的使用 JdbcTemplate概述 JdbcTemplate是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的 JdbcTemplate和,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等。 按如下项目结构准
17_Spring_事务环境搭建
17_Spring_事务环境搭建 通过张三给李四转账案例演示事务的控制 1 数据库中准备表格 applicationContext.xml jdbc.properties 见上节课 2 项目中准备实体类 package com.msb.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArg
20_Spring_零XML事务控制
20_Spring_零XML事务控制 创建配置类 package com.msb.config; import com.alibaba.druid.pool.DruidDataSource; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotati
Java之Stream流综合案例
Java之Stream流综合案例 需求: 某个公司的开发部门,分为开发一部和二部,现在需要进行年中数据结算。 分析: 员工信息至少包含了(名称、性别、工资、奖金、处罚记录) 开发一部有4个员工,开发二部有5个员工。 分别筛选出2个部门的最高工资的员工信息,封装成优秀员工对象。 分别统计出2个部门的平均月收入,要求去掉最高和最低工资 统计2个开发部门整体的平均工资去掉最低和最高
Java之Stream流的收集
Java之Stream流的收集 收集Stream流的含义: 就是把Stream流操作后的结果数据转到集合或者数组中去。 Stream流只是方便操作集合/数组的手段。 集合/数组才是开发中的目的。 Stream流的收集方法 名称 说明 R collect(Collector collector) 开始收集Stream流,指定收集器 Collectors工具类提供了具体的收集方式
SMB协议实现局域网之间文件传输
一、背景 为解决历史资料存储位置分散(局域网不同服务器),管理人员众多,资料管理仍保留在传统ftp管理阶段等问题,开展对历史资料管理功能,具体需求功能因为保密协议就不在阐述,本次只针对技术局域网之间传输技术进行讨论; 二、技术对比 访问局域网中共享信息有两种方式,网络映射、SMB协议访问,这两种都是比较成熟的技术了。 序号 指标 网络映射 SMB协议 1
MAC中Java实现多版本JDK并存并随时切换的解决方案
编辑SHELL配置文件,新版macOS默认使用的是zsh,打开终端,编辑zsh的配置文件.zshrc 在配置文件的末尾添加下面的内容: 当需要切换Java jdk版本时,输入java11切换到11版本,输入java17切换到17版本 切换是临时的,关闭终端重新打开时,再次回到默认的11版本
在同一个Java进程中连接多个RocketMQ集群
RocketMQ使用场景: 作为消费者:用户应用 --> MQ集群A --> 权益应用 消息内容:客户开户/销户相关消息 作为生产者:权益应用 --> MQ集群B --> 信贷应用 消息内容:卡券事件消息 问题现象: 一个Java进程要连接多个RocketMQ集群时,作为消费者功能无法正常使用,作为生产者功能可以正常使用 原因:RocketMQ Client
02:SpringBoot2 整合 Redis 详细步骤
1、pom文件中添加redis引用 2、配置application.properties 启动类 3、写测试类直接调用Redis 运行结果: 4、添加redis工具类 5、写Controller方法 调用结果:
Java学习-4.数组
一、数组类型 数组是存储多个变量(元素)的东西(容器),这多个变量的数据类型要一致。 定义一个数组类型的变量,使用数组类型“类型[]”,例如,int[]。和单个基本类型变量不同,数组变量初始化必须使用new int[5]表示创建一个可容纳5个int元素的数组。 Java的数组有几个特点: 数组所有元素初始化为默认值,整型都是0,浮点型是0.0,布尔型是false; 数组一旦创建后,大小就不可改
java学习前须知(笔记)
Path环境变量的配置 我的电脑单击右键选择属性,就进入了设置的关于选项,找到高级系统设置,高级里面选环境变量, 弹出窗口里面选系统变量下的新建,取名JAVA_HOME;路径选为jdk-8的根目录,即可得到一个系统变量; 选中系统变量里的Path,编辑即可,可新建%JAVA_HOME%bin,这样就可以直接在cmd里启动jdk-8路径下的bin文件夹里的程序。可以写多个JAVA_HOME,如JAV
go 进阶训练营 微服务可用性(上) 笔记
隔离 本质上是对系统和资源进行分割,从而实现当系统故障时能限定传播范围和影响范围,即发生故障后只有出问题的服务不可用,保证其他服务仍然可用。 服务隔离 动静隔离 mysql 表中的bufferpool 频繁过期,隔离动静表。如 稿件的基本信息,作者、封面等和稿件的播放、点赞 频繁变化的数据进行的隔离。 cdn 的静态资源和动态资源的隔离。动态api的时候还讲了一个case 如边缘计算,qps高的时
java基础上(笔记)
变量 变量:程序运行过程中,其值可以发生改变的量。 变量由三部分组成:变量名、变量值、数据类型。 格式:数据类型 变量名=变量值;如:int a=10;(定义变量) 变量的使用:取值与修改值。 取值格式:变量名 修改格式:变量名=变量值; 注意事项: 不能定义已存在的变量; 不能使用未定义的变量; 整数默认最大值取int最大值,浮点取double,如果定义long类型 可以在值后面加L,如:lon
读发布!设计与部署稳定的分布式系统(第2版)笔记26_安全性上
1. 安全问题 1.1. 系统违规并不总是涉及数据获取,有时会出现植入假数据,例如假身份或假运输文件 1.2. 必须在整个开发过程中持续地把安全内建到系统里,而不是把安全像胡椒面那样在出锅前才撒到系统上 2. OWASP 2.1. Open Web Application Security Project 2.2. 开放式Web应用程序
系统可扩展性的设计与实现
总体思路 系统可扩展性是指能够低成本、高质量地在现有系统中添加新功能和优化现有功能。 可扩展设计的核心原则是:开闭原则。对新增开放,对修改关闭。也就是说,后续有新的需求,只需要新增组件,而不需要修改现有组件或逻辑(除非实现有BUG)。 要保证一个大的业务模块的可扩展性,有效的策略是拆分和分层。 拆分: 将大的业务模块拆分为多个子模块,针对每个子模块进行可扩展设计; 分层: 自下而上进行可扩展设
log4j反序列化漏洞
Vulhub - Docker-Compose file for vulnerability environment 1、介绍 名称:nginx解析漏洞 编号: 原理: 应用:log4j 版本: 2、测试 2.1 靶场搭建 2.2 ysoserial: JAVA反序列化POC生成工具 (gitee.com)
jquery DOM型漏洞
1、漏洞介绍 漏洞编号:CVE-2016-7103、CVE-2015-9251、CVE-2014-6071、CVE-2012-6708、CVE-2011-4969 漏洞环境:jquery 影响范围: 1.x系列版本等于或低于1.12的jQuery 2.x系列版本等于或低于2.2的jQuery 漏洞原理:$(val)形式的jquery代码,由于某些版本的jquery的解析规则存在漏洞,导致将参
HTML5/CSS3学习——Canvas使用
什么是 Canvas? HTML5 的 Canvas 元素使用 JavaScript 在网页上绘制图像。 画布是一个矩形区域,你可以控制其每一像素。 canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。 创建 Canvas 元素 向 HTML5 页面添加 Canvas 元素。 规定元素的 id、宽度和高度: 通过 JavaScrip