当前位置: 首页 > news >正文

网站怎么做json数据/网络安全

网站怎么做json数据,网络安全,苏州网站建设公司书生商友,江西省美丽乡村建设公布网站二十一、Spring事务详解 &#xff08;一&#xff09;、Spring基于XML的事务配置 1.环境搭建 1.1 构建maven工程&#xff0c;添加相关技术依赖 <dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context…

二十一、Spring事务详解

(一)、Spring基于XML的事务配置

1.环境搭建

1.1 构建maven工程,添加相关技术依赖
<dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.18</version></dependency><!--导入Jdbc模块依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.18</version></dependency><!--mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.29</version></dependency><!--c3p0的连接依赖--><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.4</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version></dependency><dependency><groupId>commons-dbutils</groupId><artifactId>commons-dbutils</artifactId><version>1.7</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.3.18</version></dependency><!--添加AOP的依赖--><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.7</version></dependency></dependencies>
1.2 创建 spring 的配置文件并导入约束
<?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:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsd"><!--创建容器时扫描的包--><context:component-scan base-package="com.jn"></context:component-scan><!--加载properties配置文件--><context:property-placeholder location="classpath:dbconfig.properties"></context:property-placeholder><!-- 连接数据库的核心配置文件   以及数据源--><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="${jdbc.driver}" /><property name="jdbcUrl" value="${jdbc.url}" /><property name="user" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /></bean><!--jdbcTemlpate--><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource"></property></bean></beans>
1.3 沿用转账业务的代码

copy Account AccountDao AccountDaoImpl AccontService AccountServiceImpl 代码:

注意: AccountDaoImpl 具体使用使用Spring提供的JdbcTemplate模板对象实现

2.事务管理配置步骤

2.1 配置事务管理器
<!--事务管理器的配置--><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"></property></bean>
2.2 配置事务的通知引用事务管理器
<!--配置事务的通知引用事务管理器--><tx:advice id="txAdvice" transaction-manager="transactionManager"></tx:advice>
2.3 配置事务的属性
<!--配置事务的通知引用事务管理器--><tx:advice id="txAdvice" transaction-manager="transactionManager"><!--配置事务的属性isolation:设置事务的隔离级别。timeout:设置事务的超时时间。 -1 永不超时propagation:设置事务的传播行为read-only:设置事务是否为只读。   查询操作: 设置为只读。  写操作: 非只读。rollback-for=""  指定一个异常类型。 如果遇到了该异常,就进行事务的回滚操作。 否则事务不回滚no-rollback-for="" 指定一个异常类型。 如果遇到了该异常,不进行事务的回滚。 否则回滚--><tx:attributes><tx:method name="*" isolation="DEFAULT" timeout="-1" propagation="REQUIRED" read-only="false" /></tx:attributes></tx:advice>
2.4 配置 AOP 切入点表达式
<!--配置AOP--><aop:config><aop:pointcut id="myPointcut" expression="execution(* com.jn.service.impl.*.*(..))"/></aop:config>
2.5 配置切入点表达式和事务通知的对应关系
<!--配置AOP--><aop:config><aop:pointcut id="myPointcut" expression="execution(* com.jn.service.impl.*.*(..))"/><!--在aop内部使用事务通知--><aop:advisor advice-ref="txAdvice" pointcut-ref="myPointcut"/></aop:config>

3.测试 

package com.jn;import com.jn.service.AccountService;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class XmlTransactionTest {@Testpublic void test(){ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");AccountService accountService = (AccountService) context.getBean("accountService");accountService.transfer("王思梦","铁头",100.0);}
}
3.1成功转账
3.2转账失败回滚

(二) 、Spring基于注解的事务配置

1.环境搭建

1.1 构建maven工程,添加相关技术依赖
<?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.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.jn</groupId><artifactId>SpringFrameWorkProject10</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.18</version></dependency><!--导入Jdbc模块依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.18</version></dependency><!--mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.29</version></dependency><!--c3p0的连接依赖--><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.4</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.3.18</version></dependency><!--添加AOP的依赖--><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.7</version></dependency><!--添加注解相关的依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>5.3.18</version></dependency></dependencies>
</project>
1.2 创建 Spring 的配置文件并导入约束
<?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:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/aop https://www.springframework.org/schema/aop/spring-aop.xsd"><!--创建容器时扫描的包--><context:component-scan base-package="com.jn"></context:component-scan><!--加载properties配置文件--><context:property-placeholder location="classpath:dbconfig.properties"></context:property-placeholder><!-- 连接数据库的核心配置文件   以及数据源--><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="${jdbc.driver}" /><property name="jdbcUrl" value="${jdbc.url}" /><property name="user" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /></bean><!--jdbcTemlpate--><bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource"></property></bean></beans>
1.3 沿用转账业务的代码:dao实现类和service实现类采用注解的形式,添加到容器中管理

copy Account AccountDao AccountImpl AccountService AccountServiceImpl 到工程当中复用

2 .事务管理配置步骤

2.1 配置事务管理器并注入数据源
<!--事务管理器的配置--><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"></property></bean>
2.2 在业务层使用@Transactional 注解
package com.jn.service.impl;
import com.jn.dao.AccountDao;
import com.jn.entity.Account;
import com.jn.service.AccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;@Service("accountService")
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
public class AccountServiceImpl implements AccountService {//获取accountDao对象@Autowiredprivate AccountDao accountDao;@Transactional(readOnly = false, propagation = Propagation.REQUIRED)@Overridepublic void transfer(String sourceAccountName, String targetAccountName, Double money) {// 定义来源账户以及目标账户Account sourceAccount = accountDao.findByName(sourceAccountName);Account targetAccount = accountDao.findByName(targetAccountName);// 实现转账业务sourceAccount.setMoney(sourceAccount.getMoney() - money);targetAccount.setMoney(targetAccount.getMoney() + money);// 持久化到数据库accountDao.update(sourceAccount);int i=1/0;accountDao.update(targetAccount);}
}
2.3 在配置文件中开启 Spring 对注解事务的支持
<!--开启对事务的支持--><tx:annotation-driven transaction-manager="transactionManager"/>

3.测试

package com.jn;import com.jn.service.AccountService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.PropertySource;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class AnnotationTransactionTest {@Autowiredprivate AccountService accountService;@Testpublic void testTransacyion(){accountService.transfer("王思梦","铁头",100d);}}
3.1转账成功
3.2转账失败回滚 

二十二、Spring整合Mybatis实现用户的CRUD

(一)整合思路分析

        Mybatis框架是一个持久层ORM框架,而Spring则是一个综合性一站式框架。所以整合是Mybatis往Spring上整合。就是让Spring框架接管Mybatis的组件。

        Mybatis单独运行时,数据源的管理,事务的管理, SqlSessionFactory 以及接口的实现类都是Mybatis管理的,整合后以上组件交给Spring管理。

(二)构建maven工程,添加技术依赖

<?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.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.jn</groupId><artifactId>SpringFrameWorkProject11</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.3.18</version></dependency><!--导入Jdbc模块依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.18</version></dependency><!--mysql--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.29</version></dependency><!--c3p0的连接依赖--><dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.4</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.3.18</version></dependency><!--添加AOP的依赖--><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.7</version></dependency><!--Mybatis-Spring的适配包--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.0.6</version></dependency><!--Mybatis orm框架--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.9</version></dependency></dependencies></project>

(三)构建数据库表并创建实体User

package com.jn.entity;import java.io.Serializable;
import java.util.Date;public class User implements Serializable {private   Integer id;private   String name;private   Integer age;private   String gender;private Date birthday;public User() {}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}public User(String name, Integer age, String gender, Date birthday) {this.name = name;this.age = age;this.gender = gender;this.birthday = birthday;}public User(Integer id, String name, Integer age, String gender, Date birthday) {this.id = id;this.name = name;this.age = age;this.gender = gender;this.birthday = birthday;}@Overridepublic String toString() {return "User{" +"id='" + id + '\'' +", name='" + name + '\'' +", age=" + age +", gender='" + gender + '\'' +", birthday=" + birthday +'}';}
}

(四)编写dao层的接口UserMapper

package com.jn.dao;import com.jn.entity.User;import java.util.List;public interface UserMapper {int insert(User record);int update(User record);int delete(Integer id);User findById(Integer id);List<User> findAll();
}

(五)构建mapper接口对应的sql配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jn.dao.UserMapper"><!--insert--><insert id="insert" parameterType="com.jn.entity.User">insert into users(name,age,gender,birthday) values(#{name},#{age},#{gender},#{birthday})</insert><!--update--><update id="update" parameterType="com.jn.entity.User">update users set name=#{name},age=#{age},gender=#{gender},birthday=#{birthday} where id=#{id}</update><!--delete--><delete id="delete" parameterType="java.lang.Integer">delete from users where id=#{id}</delete><!--selectById--><select id="findById" parameterType="java.lang.Integer" resultType="com.jn.entity.User">select * from users where id=#{id}</select><!--findAll--><select id="findAll" resultType="com.jn.entity.User">select * from users</select></mapper>

(六)构建服务层接口UserService

package com.jn.service;import com.jn.entity.User;import java.util.List;public interface UserService {int insert(User record);int update(User record);int delete(Integer id);User findById(Integer id);List<User> findAll();
}

(七)构建服务层实现类UserServiceImpl

package com.jn.service.impl;import com.jn.dao.UserMapper;
import com.jn.entity.User;
import com.jn.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserMapper userMapper;@Overridepublic int insert(User record) {return userMapper.insert(record);}@Overridepublic int update(User record) {return userMapper.update(record);}@Overridepublic int delete(Integer id) {return userMapper.delete(id);}@Overridepublic User findById(Integer id) {return userMapper.findById(id);}@Overridepublic List<User> findAll() {List<User> users = userMapper.findAll();return users;}
}

(八)构建Spring框架的配置文件applicationContext.xml,配置IOC管理的对象

<?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:context="http://www.springframework.org/schema/context"xmlns:tx="http://www.springframework.org/schema/tx"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsdhttp://www.springframework.org/schema/aophttps://www.springframework.org/schema/aop/spring-aop.xsd"><!--创建容器时扫描的包--><context:component-scan base-package="com.jn"></context:component-scan><!--加载properties配置文件--><context:property-placeholder location="classpath:dbconfig.properties"></context:property-placeholder><!-- 连接数据库的核心配置文件   以及数据源--><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><property name="driverClass" value="${jdbc.driver}" /><property name="jdbcUrl" value="${jdbc.url}" /><property name="user" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /></bean><!--Mybatis核心对象:工厂对象--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!--注入数据源--><property name="dataSource" ref="dataSource"></property><!--指定mapper文件位置--><property name="mapperLocations" value="classpath:/UserMpaaer.xml"></property><!--Mybatis的核心配置文件--><property name="configLocation" value="classpath:SqlMapperConfig.xml"></property><!--别名配置--><property name="typeAliasesPackage" value="com.jn.entity"></property><!--进行分页插件的配置<property name="plugins"><array></array></property>  --></bean><!--配置接口扫描的包--><bean id="mapper" class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="com.jn.dao"></property></bean><!--配置平台管理器--><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><!--注入数据源--><property name="dataSource" ref="dataSource"></property></bean><tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>
</beans>

(九)SqlMapperConfig.xml文件编写

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration></configuration>

(十)测试代码

package com.jn;import com.jn.entity.User;
import com.jn.service.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import java.util.Date;@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext.xml")
public class SpringMybatisTest {@Autowiredprivate UserService userService;//save@Testpublic void testSave(){User user = new User("小明", 18, "男", new Date());userService.insert(user);}//delete@Testpublic void testDelete(){userService.delete(1);}//update@Testpublic void testUpdate(){User user = new User(2, "小明", 18, "男", new Date());userService.update(user);}//findById@Testpublic void testFindById(){User user = userService.findById(2);System.out.println(user);}//findAll@Testpublic void testFindAll(){for (User user : userService.findAll()) {System.out.println(user);}}}

项目整体目录结构:

相关文章:

Spring学习笔记(四)

二十一、Spring事务详解 &#xff08;一&#xff09;、Spring基于XML的事务配置 1.环境搭建 1.1 构建maven工程&#xff0c;添加相关技术依赖 <dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context…...

CALL处 F8的“bug“

看zpchcbd师傅的一篇文章看到了这个比较有趣的点。实操跟着过一遍。 准确来说这个不能说是"bug"&#xff0c;这可以是一种"刻意为之"的手段&#xff0c;可以用于加壳、反调试等逆向技术中。 原理&#xff1a; F8步过call的时候&#xff0c;其实是在call的…...

Verilog中的有符号数与无符号数

1. 有符号与无符号最本质的区别在于高位扩展时的扩展规则不同&#xff1b; 对于同一个4‘b1001进行位扩展成8位&#xff1a; 有符号扩展结果为&#xff1a;8’b11111001 无符合扩展结果为: 8b00001001 2. 同第一点&#xff0c;若在运算中没有涉及位扩展&#xff0c;则有符…...

15分钟学 Go 第 47 天 :并发进阶——深入了解Go语言的并发模型!

第47天的学习&#xff1a;并发进阶——深入了解Go语言的并发模型&#xff01; 目录 Go并发模型简介Goroutines深度讲解Channels的进阶使用Select语句详解并发模型设计模式实战案例分析常见问题与解决方案 1. Go并发模型简介 Go语言以其内置的并发支持而闻名。通过轻量级的g…...

前端代码分析题(选择题、分析题)——this指向、原型链分析

this指向 普通函数&#xff1a;this 的指向由调用方式决定&#xff0c;可以是全局对象、调用该函数的对象&#xff0c;或者显式指定的对象。箭头函数&#xff1a;this 的指向在定义时确定&#xff0c;始终继承自外层函数作用域的 this&#xff0c;不会被调用方式影响。 var obj…...

react 组件应用

文章目录 react 组件react 中组件 hook 函数应用useMemo技术细节(useMemo 钩子函数和 useCallback 钩子函数)小结(依赖性数组应用) react 组件 函数式组件实例及应用场景 实例&#xff1a; 以下是一个简单的函数式组件&#xff0c;用于显示一个欢迎消息。 import React from re…...

mysql 快速解决死锁方式

mysql 快速解决死锁方式 直接寻找并终止导致死锁的具体 SQL 语句是处理死锁的一种有效方法&#xff0c;特别是在高并发环境中。以下步骤和示例展示了如何通过识别、分析和终止长时间运行的 SQL 语句来解决死锁问题。 一、识别那个导致死锁的 SQL 语句 1. 使用 SHOW ENGINE I…...

RabbitMQ 篇-深入了解 RabbitMQ 安装以及 SpringAMQP 的基础使用(声明队列和交换机、发送接收消息、配置 JSON 消息转化器)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 RabbitMQ 初识 1.1 RabbitMQ 安装 2.0 数据隔离 2.1 用户管理 2.2 virtual host 虚拟主机 3.0 SpringAMQP 3.1 RabbitMQ 配置 3.2 发送消息 3.3 接收消息 3.4 Wor…...

在 WPF 中,绑定机制是如何工作的?WPF数据绑定机制解析

在WPF&#xff08;Windows Presentation Foundation&#xff09;中&#xff0c;数据绑定机制是其核心功能之一&#xff0c;广泛用于连接应用程序的UI&#xff08;用户界面&#xff09;和应用程序的业务逻辑层。数据绑定允许你将UI元素与数据源&#xff08;如对象、集合或其他数…...

pwn学习笔记(12)--Chunk Extend and Overlapping

pwn学习笔记&#xff08;12&#xff09;–Chunk Extend and Overlapping ​ chunk extend 是堆漏洞的一种常见利用手法&#xff0c;通过 extend 可以实现 chunk overlapping&#xff08;块重叠&#xff09; 的效果。这种利用方法需要以下的时机和条件&#xff1a; 程序中存在…...

java基础面试题六集合框架

目录 1. List&#xff0c;Set&#xff0c;Map是否继承自collection接口&#xff1f; 2. 说说List,Set,Map三者的区别 3. 写出list、map、set接口的实现类&#xff0c;并说出其特点 4. 常见集合类的区别和适用场景 5. 集合的父类是谁&#xff1f;哪些安全的&#xff1f; 6…...

2024年12月一区SCI-指数-三角优化算法ETO-附Matlab免费代码

引言 本期介绍了一种基于数学概念的元启发式优化算法&#xff0c;称为指数-三角优化算法Exponential-trigonometric optimization algorithm&#xff0c;ETO。该算法基于指数函数和三角函数的复杂组合&#xff0c;于2024年12月最新发表在中JCR1区、 中科院1区 SCI期刊Computer…...

设置服务器ssh连接超时时间

在Linux服务器上&#xff0c;您可以通过修改SSH服务器配置文件来设置SSH连接的超时时间。以下是设置SSH连接超时时间的一些步骤&#xff1a; 打开SSH服务器配置文件。这个文件通常是/etc/ssh/sshd_config。sudo nano /etc/ssh/sshd_config在配置文件中&#xff0c;您可以设置以…...

Dubbo分布式日志跟踪实现

前言 随着越来越多的应用逐渐微服务化后&#xff0c;分布式服务之间的RPC调用使得异常排查的难度骤增&#xff0c;最明显的一个问题&#xff0c;就是整个调用链路的日志不在一台机器上&#xff0c;往往定位问题就要花费大量时间。如何在一个分布式网络中把单次请求的整个调用日…...

EPSON机械手与第三方相机的校准功能设计By python

EPSON机械手与第三方相机的校准功能设计By python 使用Python来实现EPSON机械手与第三方相机的校准功能是一个复杂但可行的任务。这通常涉及以下几个步骤:硬件接口通信、图像处理、标定算法实现和控制逻辑编写。 1. 环境准备 首先,库 pip install numpy opencv-python pyse…...

探索 Java 23:新时代的编程利器

一、引言 随着技术的不断发展&#xff0c;Java 作为一种广泛应用的编程语言也在不断演进。Java 23 的推出带来了许多令人兴奋的新特性和改进&#xff0c;为开发者提供了更多的工具和功能&#xff0c;以应对日益复杂的软件开发挑战。本文将深入介绍 Java 23 的各个方面。 二、J…...

CSS3_3D变换(七)

1、CSS3_3D变换 1.1 3D空间与景深 3D空间&#xff1a;在父元素中将属性transform-style设置为preserve-3d开启3D空间&#xff0c;默认值为flat&#xff08;开启2D空间&#xff09;&#xff1b; 景深&#xff1a;人眼与平面的距离&#xff0c;产生透视效果&#xff0c;使得效果…...

Mesh网格

Mesh(网格) 定义&#xff1a;Mesh 是一个包含顶点、三角形、顶点法线、UV坐标、颜色和骨骼权重等数据的对象。它定义了3D模型的几何形状。 功能&#xff1a; 顶点&#xff08;Vertices&#xff09;&#xff1a;构成3D模型的点。 三角形&#xff08;Triangles&#xff09;&…...

LeetCode 509.斐波那契数

动态规划思想 五步骤&#xff1a; 1.确定dp[i]含义 2.递推公式 3.初始化 4.遍历顺序 5.打印dp数组 利用状态压缩&#xff0c;简化空间复杂度。在原代码中&#xff0c;dp 数组保存了所有状态&#xff0c;但实际上斐波那契数列的计算只需要前两个状态。因此&#xff0c;我们…...

SQL Server 数据太多如何优化

大家好&#xff0c;我是 V 哥。讲了很多数据库&#xff0c;有小伙伴说&#xff0c;SQL Server 也讲一讲啊&#xff0c;好吧&#xff0c;V 哥做个听话的门童&#xff0c;今天要聊一聊 SQL Server。 在 SQL Server 中&#xff0c;当数据量增大时&#xff0c;数据库的性能可能会受…...

关于word 页眉页脚的一些小问题

去掉页眉底纹&#xff1a; 对文档的段落边框和底纹进行设置&#xff0c;也是页眉横线怎么删除的一种解决方式&#xff0c;具体操作如下&#xff1a; 选中页眉中的横线文本&#xff1b; 点击【开始】选项卡&#xff0c;在【段落】组中点击【边框】按钮的下拉箭头&#xff1b; …...

【高等数学学习记录】连续函数的运算与初等函数的连续性

一、知识点 &#xff08;一&#xff09;连续函数的和、差、积、商的连续性 定理1 设函数 f ( x ) f(x) f(x) 和 g ( x ) g(x) g(x) 在点 x 0 x_0 x0​ 连续&#xff0c;则它们的和&#xff08;差&#xff09; f g f\pm g fg、积 f ⋅ g f\cdot g f⋅g 及商 f g \frac{f…...

【抖音直播间弹幕】protobuf协议分析

将Uint8Array变成 PushFrame格式&#xff0c;里面的payload就存放着弹幕消息 点进去就可以看到其定义的proto结构 headers是一个自定义类型 将测试数据保存一下&#xff0c;等下做对比 先将PushFrame的 payload 内容进行gzip解压 然后再解析为响应 可以看到里面有对应的消…...

Swift 开发教程系列 - 第11章:内存管理和 ARC(Automatic Reference Counting)

在 Swift 中&#xff0c;内存管理由 ARC&#xff08;自动引用计数&#xff09;机制自动处理。ARC 通过追踪和管理对象的引用计数来确保分配的内存得到有效释放。尽管 ARC 在大多数情况下能够高效地管理内存&#xff0c;但理解其工作原理仍然十分重要&#xff0c;因为不当的引用…...

C#中 layout的用法

在C#中&#xff0c;layout并不是一个直接用于C#语言本身的关键字或特性。然而&#xff0c;layout在与C#紧密相关的某些上下文中确实有其用途&#xff0c;特别是在涉及用户界面&#xff08;UI&#xff09;设计和数据展示时。以下是几个常见的与layout相关的用法场景&#xff1a;…...

【编程概念基础知识】

、编程基础 一、面向对象的三大特性 1、封装&#xff1a; 盒子、零件、按钮 隐藏对象 的内部状态&#xff0c;并且只通过对象的方法来访问数据 想象你有一个小盒子&#xff08;这个盒子就是一个类&#xff09;&#xff0c;里面装着一些零件&#xff08;这些零件就是数据&a…...

【React】深入理解 JSX语法

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 深入理解 JSX语法1. JSX 简介2. JSX 的基本语法2.1 基本结构2.2 与普通 JavaScr…...

【Linux】从零开始使用多路转接IO --- 理解EPOLL的 LT水平触发模式 与 ET边缘触发模式

当你偶尔发现语言变得无力时&#xff0c; 不妨安静下来&#xff0c; 让沉默替你发声。 --- 里则林 --- 从零开始认识多路转接 1 EPOLL优缺点2 EPOLL工作模式 1 EPOLL优缺点 poll 的优点(和 select 的缺点对应) 接口使用方便&#xff1a;虽然拆分成了三个函数&#xff0c;…...

QtLua

描述 QtLua 库旨在使用 Lua 脚本语言使 Qt4/Qt5 应用程序可编写脚本。它是 QtScript 模块的替代品。 QtLua 不会为 Qt 生成或使用生成的绑定代码。相反&#xff0c;它提供了有用的 C 包装器类&#xff0c;使 C 和 lua 对象都可以从 lua 和 C 访问。它利用 Qt 元对象系统将 QOb…...

c++-有关计数、双变量累加、半衰、阶乘、变量值互换的基础知识

C是一种非常强大和灵活的编程语言&#xff0c;它包含了许多重要的概念和技巧。在本文中&#xff0c;我们将重点讨论五个主题&#xff1a;计数、双变量累加、半衰、阶乘和变量值的互换。我们将介绍这些概念的定义、用法、题目、答案和解释&#xff0c;以帮助读者更好地理解和运用…...