【微服务~原始真解】Spring Cloud —— 访问数据库整合Druid数据源
🔎这里是【秒懂·云原生】,关注我学习云原生不迷路
👍如果对你有帮助,给博主一个免费的点赞以示鼓励
欢迎各位🔎点赞👍评论收藏⭐️
👀专栏介绍
【秒懂·云原生】 目前主要更新微服务,一起学习一起进步。
👀本期介绍
主要介绍Spring Cloud —— 访问数据库整合Druid数据源
文章目录
- 👀专栏介绍
- 👀本期介绍
- Spring Boot JDBC访问数据库
- 引入JDBC启动器
- 数据库驱动
- 配置数据源
- 测试
- Spring Boot整合Druid数据源
- 引入 Druid Spring Boot Starter 依赖
- 配置属性
- 配置类
- 结束语🏆🏆🏆
Spring Boot JDBC访问数据库
对于数据访问层,无论是 SQL(关系型数据库) 还是 NOSQL(非关系型数据库),Spring Boot 都默认采用整合 Spring Data 的方式进行统一处理,通过大量自动配置,来简化我们对数据访问层的操作,我们只需要进行简单的设置即可实现对书层的访问。
引入JDBC启动器
<!--导入JDBC的启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jdbc</artifactId>
</dependency>
数据库驱动
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
配置数据源
这里填自己数据库的信息
#数据源连接信息
spring: datasource: username: root password: root url: jdbc:mysql://localhost:3306/dbdriver-class-name: com.mysql.cj.jdbc.Driver
测试
Spring Boot 提供了一个名为 JdbcTemplate 的轻量级数据访问工具,它是对 JDBC 的封装。Spring Boot 对 JdbcTemplate 提供了默认自动配置,我们可以直接使用 @Autowired 或构造函数将它注入到 bean 中使用。
Spring Boot整合Druid数据源
Druid 是阿里巴巴推出的一款开源的高性能数据源产品,Druid 支持所有JDBC 兼容的数据库,包括 Oracle、MySQL、SQL Server 和 H2 等等。Druid 不仅结合了 C3P0、DBCP 和 PROXOOL 等数据源产品的优点,同时还加入了强大的监控功能。通过 Druid 的监控功能,可以实时观察数据库连接池和 SQL 的运行情况,帮助用户及时排查出系统中存在的问题。使用 Druid Spring Boot Starter 将 Druid 与 Spring Boot 整合
引入 Druid Spring Boot Starter 依赖
<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId> <version>1.2.9</version> </dependency>
配置属性
#数据库连接信息配置
spring: datasource: driver-class-name: com.mysql.jdbc.Driver username: root password: root url: jdbc:mysql://localhost:3306/db pools: initial-size: 10 # 初始化时建立物理连接的个数。初始化发生 在显示调用init方法,或者第一次getConnection时 min-idle: 10 # 最小连接池数量 最小空闲数量 maxActive: 200 # 最大连接池数量 最大活跃连接数 maxWait: 60000 # 获取连接时最大等待时间,单位毫秒。配置了 maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置 timeBetweenEvictionRunsMillis: 60000 # 检查空闲连接的 频率.Destroy线程会检测连接的间隔时间,如果连接空闲时间大于等于 minEvictableIdleTimeMillis则关闭物理连接。 minEvictableIdleTimeMillis: 300000 # 连接的最小生存时 间.连接保持空闲而不被驱逐的最小时间 validationQuery: SELECT 1 # 验证数据库服务可用性的 sql.用来检测连接是否有效的sql 因数据库方言而差, 例如 oracle 应该写 成 SELECT 1 FROM DUAL testWhileIdle: true # 申请连接时检测空闲时间,根据空闲时 间再检测连接是否有效.建议配置为true,不影响性能,并且保证安全性。申请 连接的时候检测,如果空闲时间大于timeBetweenEvictionRun testOnBorrow: false # 申请连接时直接检测连接是否有效.申 请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性 能。testOnReturn: false # 归还连接时检测连接是否有效.归还连 接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 poolPreparedStatements: true # 开启PSCache maxPoolPreparedStatementPerConnectionSize: 20 #设置 PSCache值connectionErrorRetryAttempts: 3 # 连接出错后再尝试连接 三次 breakAfterAcquireFailure: true # 数据库服务宕机自动重 连机制 timeBetweenConnectErrorMillis: 300000 # 连接出错后重 试时间间隔asyncInit: true # 异步初始化策略 remove-abandoned: true # 是否自动回收超时连接 remove-abandoned-timeout: 1800 # 超时时间(以秒数为单 位) 超过此值后,druid将强制回收该连接 transaction-query-timeout: 6000 # 事务超时时间 filters: stat,wall,log4j2 connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 stat-view-servlet: enabled: true #是否开启内置监控页面,默认值 为 false url-pattern: "/druid/*" #StatViewServlet 的映射 路径,即内置监控页面的访问地址 allow: 127.0.0.1 #白名单 deny: #黑名单 reset-enable: false #是否启用重置按钮 login-username: admin #内置监控页面的登录页用户名 usernamelogin-password: admin #内置监控页面的登录页密码 passwordweb-stat-filter: enabled: true #是否开启内置监控中的 Web- jdbc 关联监控的数据 url-pattern: "/*" #匹配路径 exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*" #排除 路径 session-stat-enable: true #是否监控session
配置类
DruidDataSourceConfig.java
package com.example.demo;import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties;
import com.alibaba.druid.support.http.StatViewServlet;
import com.alibaba.druid.support.http.WebStatFilter;
import lombok.Data;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import javax.sql.DataSource;
import java.sql.SQLException;/*** @author yeqv* @program demo* @Classname DruidDataConfig* @Date 2022/4/29 16:35* @Email w16638771062@163.com*/
@Configuration
@ConfigurationProperties(prefix = "spring.datasource")
@Data
public class DruidDataSourceConfig {@AutowiredDruidStatProperties druidStatProperties;@AutowiredStatFilter statFilter;private String url;private String username;private String password;private String driverClasName;@Beanpublic DataSource dataSource(DruidPools druidPools) throws SQLException {DruidDataSource dataSource = new DruidDataSource();dataSource.setUrl(getUrl());dataSource.setUsername(getUsername());dataSource.setPassword(getPassword());dataSource.setDriverClassName(getDriverClasName());dataSource.setInitialSize(druidPools.getInitialSize());dataSource.setMinIdle(druidPools.getMinIdle());dataSource.setMaxActive(druidPools.getMaxActive());dataSource.setMaxWait(druidPools.getMaxWait());dataSource.setTimeBetweenEvictionRunsMillis(druidPools.getTimeBetweenEvictionRunsMillis());dataSource.setMinEvictableIdleTimeMillis(druidPools.getMinEvictableIdleTimeMillis());dataSource.setValidationQuery(druidPools.getValidationQuery());dataSource.setTestWhileIdle(druidPools.testWhileIdle);dataSource.setTestOnBorrow(druidPools.testOnBorrow);dataSource.setTestOnReturn(druidPools.testOnReturn);dataSource.setPoolPreparedStatements(druidPools.poolPreparedStatements);dataSource.setMaxPoolPreparedStatementPerConnectionSize(druidPools.maxPoolPreparedStatementPerConnectionSize);dataSource.setConnectionErrorRetryAttempts(druidPools.connectionErrorRetryAttempts);dataSource.setBreakAfterAcquireFailure(druidPools.breakAfterAcquireFailure);dataSource.setTimeBetweenConnectErrorMillis(druidPools.timeBetweenConnectErrorMillis);dataSource.setAsyncInit(druidPools.asyncInit);dataSource.setRemoveAbandoned(druidPools.removeAbandoned);dataSource.setRemoveAbandoned(druidPools.removeAbandoned);dataSource.setTransactionQueryTimeout(druidPools.transactionQueryTimeout);dataSource.setFilters(druidPools.filters);dataSource.setConnectProperties(druidPools.connectionProperties);return dataSource;}@Beanpublic ServletRegistrationBean druidServlet(StatConfig statConfig) {ServletRegistrationBean servletRegistrationBean = new ServletRegistrationBean(); // 现在要进行druid监控的配置处理操作servletRegistrationBean.setServlet(new StatViewServlet());servletRegistrationBean.addUrlMappings(druidStatProperties.getStatViewServlet().getUrlPattern());servletRegistrationBean.addInitParameter("allow", statConfig.getAllow()); // 白名单servletRegistrationBean.addInitParameter("deny", statConfig.getDeny()); // 黑名单servletRegistrationBean.addInitParameter("loginUsername", statConfig.getLoginUsername()); // 用户名servletRegistrationBean.addInitParameter("loginPassword", statConfig.getLoginPassword()); // 密码servletRegistrationBean.addInitParameter("resetEnable", statConfig.getResetEnable()); // 是否可以重置数据源return servletRegistrationBean;}@Beanpublic FilterRegistrationBean filterRegistrationBean(StatFilter statFilter) {FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean();filterRegistrationBean.setFilter(new WebStatFilter());filterRegistrationBean.addUrlPatterns(statFilter.urlPattern); // 所有请求进行监控处理filterRegistrationBean.addInitParameter("exclusions", statFilter.exclusions);filterRegistrationBean.setEnabled(statFilter.enabled);return filterRegistrationBean;}
}
StatFilter.java
package com.example.demo;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;/*** @author yeqv* @program demo* @Classname StatFilter* @Date 2022/4/29 16:51* @Email w16638771062@163.com*/
@Configuration
@ConfigurationProperties(prefix = "spring.datasource.web-stat-filter")
@Data
public class StatFilter {boolean enabled;String urlPattern;String exclusions;
}
StatConfig.java
package com.example.demo;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;/*** @author yeqv* @program demo* @Classname StatConfig* @Date 2022/4/29 16:48* @Email w16638771062@163.com*/
@Configuration
@ConfigurationProperties(prefix = "spring.datasource.stat-view-servlet")
@Data
public class StatConfig {String urlPattern;String allow;String deny;String resetEnable;String loginUsername;String loginPassword;}
DruidPools.java
package com.example.demo;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;import java.util.Properties;/*** @author yeqv* @program demo* @Classname DruidPools* @Date 2022/4/29 16:45* @Email w16638771062@163.com*/
@Configuration
@ConfigurationProperties(prefix = "spring.datasource.pools")
@Data
public class DruidPools {int initialSize;int minIdle;int maxActive;int maxWait;long timeBetweenEvictionRunsMillis;long minEvictableIdleTimeMillis;String validationQuery;boolean testWhileIdle;boolean testOnBorrow;boolean testOnReturn;boolean poolPreparedStatements;int maxPoolPreparedStatementPerConnectionSize;int connectionErrorRetryAttempts;boolean breakAfterAcquireFailure;long timeBetweenConnectErrorMillis;boolean asyncInit;boolean removeAbandoned;long removeAbandonedTimeout;int transactionQueryTimeout;String filters;Properties connectionProperties;}
结束语🏆🏆🏆
🔥推荐一款模拟面试、刷题神器网站
点击注册即可
牛客刷题网
1、算法篇(398题):面试必刷100题、算法入门、面试高频榜单
2、SQL篇(82题):快速入门、SQL必知必会、SQL进阶挑战、面试真题
3、大厂笔试真题:字节跳动、美团、百度、腾讯…
相关文章:
【微服务~原始真解】Spring Cloud —— 访问数据库整合Druid数据源
🔎这里是【秒懂云原生】,关注我学习云原生不迷路 👍如果对你有帮助,给博主一个免费的点赞以示鼓励 欢迎各位🔎点赞👍评论收藏⭐️ 👀专栏介绍 【秒懂云原生】 目前主要更新微服务,…...
前端入门必刷题,经典算法—两数之和
优美的前⾔ 年轻的码农哟~ 你是不是⼀直在思考⾃我提升的问题~ 思来想去,决定从算法抓起(单押)~ 拿起⼜放下,经历过多少次放弃(单押 ✖ 2)~ 决定了!这次让我来帮你梳理(单押 ✖ 3&a…...
‘海外/国外‘地区微博签到shu据(正题在第二部分)
最近失眠,研究了项关于weibo爬虫的新功能,种种原因,大家可跳过第一部分的引用直接看第二部分。 内容来源:健康中国、生命时报、央视等 失眠标准一:3个“30分钟” ● 入睡困难,从躺下想睡到睡着间隔…...
Springboot——SB整合Mybatis的CURD(基于注解进行开发)
此处是根据需求实现基本操作 上面这里涉及到了条件分页查询,还有增加和批量删除员工信息,右边编辑就是先查询后更新操作,叫做查询回显,然后在原有基础上进行更新 环境准备 在下面的入门案例的整体环境下把数据库表换成empSpring…...
现在大专生转IT可行吗?
当然可行的。 大专也是人,为什么不可以选择喜欢的专业学习,现在大学生遍地都是,学历已经不是限制你发展的因素了。有的人就是不擅长理论学习,更喜欢技术。IT也只是一个普普通通的技术行业,跟其他技术行业一样…...
XC7A50T-1CSG324I、XC7A50T-2CSG324I Artix-7 FPGA可编程门阵列
Artix-7 FPGA能够在多个方面实现更高的性价比,这些方面包括逻辑、信号处理、嵌入式内存、LVDS I/O、内存接口,以及收发器。MicroBlaze CPU针对Xilinx FPGA进行了优化,是一种可高度配置的32位RISC处理器,可为微控制器、实时处理器和…...
linux安装图片处理软件ImageMagick
下载地址: wget https://download.imagemagick.org/archive/ImageMagick-7.1.1-4.tar.gz 或者 wget --no-check-certificate https://download.imagemagick.org/archive/ImageMagick-7.1.1-4.tar.gz 安装命令: tar -zxvf ImageMagick-7.1.1-4.tar.…...
【Java基础】JavaCore核心-反射技术
文章目录1.什么是反射技术2.反射-获取类对象方式3.反射-获取声明构造器4.反射-对象创建实战5.反射-方法和属性实战6.反射-属性值操作实战7.反射-invoke运行类方法1.什么是反射技术 Java的反射(reflection)机制是指在程序的运行状态中 可以构造任意一个类…...
AWGN后验估计下的均值与协方差关系(向量和标量形式)
文章目录AWGN信道向量模型后验均值与协方差的关系从实数域拓展到复数域小结AWGN信道向量模型 考虑一个随机向量x∼pX(x)\boldsymbol x \sim p_{\boldsymbol X}(\boldsymbol x)x∼pX(x),信道模型为 qxv,v∼N(0,Σ)\boldsymbol q \boldsymbol x \boldsymbol v, \…...
Linux常用命令之文件搜索命令
1、常用搜索-find 命令find英文原意find所在路径/bin/find执行权限所有用户功能描述文件搜索语法find [搜索范围] [搜索条件] (默认准确搜索)范例find /etc -name init?? 常用的搜索条件的选项包括: -name:按照文件名进行匹配查找,例&…...
ChatGPT给软件测试行业带来的可能
软件测试在软件开发过程中扮演着至关重要的角色,因为它可以确保软件的质量和可靠性。而随着人工智能技术的不断发展,ChatGPT作为一个强大的自然语言处理工具,可以在软件测试中发挥出许多重要的作用。本文将介绍ChatGPT在软件测试应用中带来的…...
Cadence Allegro 导出Properties on Nets Report报告详解
⏪《上一篇》 🏡《上级目录》 ⏩《下一篇》 目录 1,概述2,Properties on Nets Report作用3,Properties on Nets Report示例4,Properties on Nets Report导出方法4.1,方法14.2,方法2B站关注“硬小二”浏览更多演示视频...
JAVA代码 实现定位数据动态聚集并绘制多边形区域
文章目录思路1、限制聚合距离2、绘制多边形区域3、多边形区域之间合并4、多边形定边点4、逻辑流程一些性能上的优化1、多边形设置圆心2、采用分支合并思路3、清理聚集较分散区域合理性处理1、解决多边形内凹角问题2、解决定边点插入位置问题3、多边形区域扩展成果展示最近有根据…...
基于储能进行调峰和频率调节研究【超线性增益的联合优化】(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
体验 Linux 的几个监控命令(htop、nmon、netdata)
体验 Linux 的几个监控命令htopnmonnetdatahtop 安装, sudo dnf install -y htop使用, htopnmon 安装, sudo dnf install -y nmon使用, nmon输入c, 输入C, 输入m, 输入n, 输入…...
NOC大赛2022NOC软件创意编程初赛图形化小低组(小学高年级组)
一、选择题 1.如果要控制所有角色一起朝舞台区右侧移动,下面哪个积太块是不需要的 2.要想让三个角色一起移动起来,下面哪个积木块没有作用 ? 3.小猴按照下面的程序前进,小猴最后一次前进了()步。 4.小可同学写了一个画笔程序画出花朵,但是运行后什么都看不到,不可…...
python进行股票收益率计算和风险控制的实现
股票收益率计算和风险控制的实现 在进行股票投资时,计算收益率和进行风险控制是非常重要的。本文将介绍一个与此相关的函数:radio_day_cal()。 radio_day_cal()函数 def radio_day_cal(last_day, sheet_name, df_dict, code_list, new_list):i 0days…...
自从有了这套近4000页的开发文档后,Java面试路上就像开了挂一样
Java是世界最流行的编程语言,也是国内大多数IT公司的主流语言。招聘网站上Java岗位众多,Java工程师似乎不愁找工作。但仔细一看就会发现,Java岗位的招聘薪酬天差地别,人才要求也是五花八门。而在Java工程师求职过程中,…...
Python文件操作
目录 一、文件操作介绍 二、文件的打开和关闭 三、文件的读写 四、文件文件夹相关操作 五、test 一、文件操作介绍 文件 : python中文件是对象 Liunx 文件 : 一切设备都可以看成是文件 磁盘文件 管道 网络Socket 文件属性: 读 写 执行权限 就是把一些存储存放起来&…...
036:cesium加载GPX文件,显示图形
第036个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中加载GPX文件, 显示图形。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共83行)相关API参考:专栏目标示例效果 配置方式 1)查看基础设置:https:/…...
【AI探索】我问了ChatGPT几个终极问题
终于尝试了一把ChatGPT的强大之处,问了一下关心的几个问题: chatGPT现在在思考吗?有没有什么你感兴趣的问题? 你认为AI会对人类产生哪些方面的影响? 你对人类所涉及到的学科有了解吗?你认为在哪些方面与人类…...
Leetcode 优先队列详解
优先队列 优先队列(Priority Queue):一种特殊的队列。在优先队列中,元素被赋予优先级,当访问队列元素时,具有最高优先级的元素最先删除 普通队列详解Leetcode 队列详解 优先队列与普通队列最大的不同点在于…...
通过两道一年级数学题反思自己
背景 做完这两道题我开始反思自己,到底是什么限制了我?是我自己?是曾经教导我的老师?还是我的父母? 是考试吗?还是什么? 提目 1、正方体个数问题 2、相碰可能性 过程 静态思维: …...
Pytorch :从零搭建一个神经网络
文章目录安装依赖从源码编译pytorchCXX_ABI问题数据集归一化Transforms搭建神经网络Components of a neural networknn.Flattennn.Linearnn.Sequentialnn.SoftmaxModel Parameters优化模型参数设置超参数添加优化循环添加 loss function优化过程完整实现模型的保存和加载安装 …...
【华为OD机试 2023最新 】 区块链文件转储系统(C++ 100%)
题目描述 区块链底层存储是一个链式文件系统,由顺序的N个文件组成,每个文件的大小不一,依次为F1,F2,…,Fn。随着时间的推移,所占存储会越来越大。 云平台考虑将区块链按文件转储到廉价的SATA盘,只有连续的区块链文件才能转储到SATA盘上,且转储的文件之和不能超过SATA盘…...
基于springcloud实现分布式架构网上商城演示【项目源码】分享
基于springcloud实现分布式架构网上商城演示摘要 首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包…...
【Qt】(自制类)适用于QTextCharFormat的字体选择对话框
先附上github链接:https://github.com/Ls-Jan/Qt_CharFormatDialog 主要是作为QFontDialog的平替/增强,毕竟Qt自带的字体选择器一言难尽(用过的都叹气)。 【运行界面】 【功能】 一目了然,可以选择字体,设置字号,设置…...
Unity即时战略/塔防项目实战(一)——构造网格建造系统
Unity即时战略/塔防项目实战(一)—— 构造网格建造系统 效果展示 Unity RTS游戏网格建造系统实现原理 地形和格子划分,建造系统BuildManager构建 地形最终需要划分成一个一个的小方格,首先定义一下小方格: private…...
【ZOJ 1095】Humble Numbers 题解(动态规划)
一个素数只有2,3,5或7的数被称为谦逊数。序列1、2、3、4、5、6、7、8、9、10、12、14、15、16、18、20、21、24、25、27。。。显示了前20个不起眼的数字。 编写一个程序来查找并打印此序列中的第n个元素。 输入规范 输入由一个或多个测试用例组成。每个…...
百科媒体背书,什么媒体的收录可以修改百科?
传媒如春雨,润物细无声,大家好 大家都知道百科在百度搜索引擎中有很高的权重,排名非常靠前,任何机构,个人,或者企业做网络宣传百科是必不可少的,虽然任何人都可以注册并编辑其内容。但是&#x…...
永州建设学校官方网站/网站推广渠道
本文主要向大家介绍了Python语言学习之Python接口优化,通过具体的内容向大家展现,希望对大家对Python语言的学习有所帮助。背景我们负责的一个业务平台,有次在发现设置页面的加载特别特别地慢,简直就是令人发指让用户等待 36s 肯定…...
商城网站设计注意什么/跨境电商平台注册开店流程
Java面试过程,JVM属于必考题系列:今天主要谈谈JVM GC的类型和策略,特别是大家经常混淆的Minor GC、Major GC、Full GC,年轻代GC、老年代GC,之间有什么区别和联系。Minor GCJVM堆内存被分为两部分:年轻代(Yo…...
国内简洁大气网站推荐/网络营销策划的目的
一、在程序如何定义个变量?定义变量在内存中代表什么意思? 1、 变量的定义? 格式:数据类型 变量 数据类型 -> 决定在内存中占用字节的大小。 变量名字 -> 决定如何访问到这片内存的空间。 2、初始化变量的值࿱…...
wordpress整合ecms同步登录/全网整合营销推广系统
C031-bitset模板-2020-3-12 在编程中经常会开辟一个数组作为标志位使用,所谓标志位处理就是说某一件事件可能发送或不发生,有两个状态(C/C里用1和0来表示)。而类似的事件有很多,并且都相互独立。这种情况标志位是最好的解决方案。在C/C里通常…...
免费高清图片素材网站推荐/信息流广告投放平台
利用空余时间整理了AjaxControlToolKit的功能介绍文档,可以使初学者对其整套控件有个全面的功能上的认识,也许看了文档 能快速找到你所需要的功能,再去研究某个具体控件的使用或者扩展,感兴趣的朋友可以下载我整理出来的文档&…...
wordpress只有一个主题/北京百度推广优化公司
大佬,牛!!! 给定一个n和s,一个长度为n的数组。我们从数组中拿数,要求必须连续的拿,拿2*k个,而且前k个之和小于等于s,后k个之和也是小于等于s。我的思路:我的…...