海量数据存储方案

2023-11-10

参考原文:http://blog.csdn.net/xlgen157387/article/details/53230138

一、网站应用背景

开发一个网站的应用程序,当用户规模比较小的时候,使用简单的:一台应用服务器+一台数据库服务器+一台文件服务器,这样的话完全可以解决一部分问题,也可以通过堆硬件的方式来提高网站应用的访问性能,当然,也要考虑成本的问题。

当问题的规模在经济条件下通过堆硬件的方式解决不了的时候,我们应该通过其他的思路去解决问题,互联网发展至今,已经提供了很多成熟的解决方案,但并不是都具有适用性,你把淘宝的技术全部都搬过来也不一定达到现在淘宝的水平,道理很简单。

当然,很多文章都在强调,一个网站的发展水平,是逐渐的演变过来的,并不是一朝一夕的事情。虽然目前的情况互联网的泡沫越来越大,但是整个互联网技术的发展确实为我们提供了方便快捷的上网体验。下边是一张早期的淘宝官网的界面:

早期淘宝网站界面

目前,博主正在跟随导师做一个创业项目,使用的技术是SSM+MySQL+Linux这些,但是由于资金的限制和考虑到用户群体的特殊性,系统的架构无奈的选择的就是最简单的方式:一台应用服务器、一台数据库服务器、一台文件系统服务器,没有用到高级的技术,也没有用到分布式部署的方案。下边整理的是一些针对海量数据和高并发情况下的解决方案,技术水平有限,欢迎留言指导。

二、针对海量数据和高并发的主要解决方案

海量数据的解决方案:

  1. 使用缓存;
  2. 页面静态化技术;
  3. 数据库优化;
  4. 分离数据库中活跃的数据;
  5. 批量读取和延迟修改;
  6. 读写分离;
  7. 使用NoSQL和Hadoop等技术;
  8. 分布式部署数据库;
  9. 应用服务和数据服务分离;
  10. 使用搜索引擎搜索数据库中的数据;
  11. 进行业务的拆分;

高并发情况下的解决方案:

  1. 应用程序和静态资源文件进行分离;
  2. 页面缓存;
  3. 集群与分布式;
  4. 反向代理;
  5. CDN;

三、海量数据的解决方案

(1)使用缓存

网站访问数据的特点大多数呈现为“二八定律”:80%的业务访问集中在20%的数据上。

例如:在某一段时间内百度的搜索热词可能集中在少部分的热门词汇上;新浪微博某一时期也可能大家广泛关注的主题也是少部分事件。

总的来说就是用户只用到了总数据条目的一小部分,当网站发展到一定规模,数据库IO操作成为性能瓶颈的时候,使用缓存将这一小部分的热门数据缓存在内存中是一个很不错的选择,不但可以减轻数据库的压力,还可以提高整体网站的数据访问速度。

使用缓存的方式可以通过程序代码将数据直接保存到内存中,例如通过使用Map或者ConcurrentHashMap;另一种,就是使用缓存框架:Redis、Ehcache、Memcache等。 
这里写图片描述 
使用缓存框架的时候,我们需要关心的就是什么时候创建缓存缓存失效策略

缓存的创建可以通过很多的方式进行创建,具体也需要根据自己的业务进行选择。例如,新闻首页的新闻应该在第一次读取数据的时候就进行缓存;对于点击率比较高的文章,可以将其文章内容进行缓存等。

内存资源有限,选择如何创建缓存是一个值得思考的问题。另外,对于缓存的失效机制也是需要好好研究的,可以通过设置失效时间的方式进行设置;也可以通过对热门数据设置优先级,根据不同的优先级设置不同的失效时间等;

需要注意的是,当我们删除一条数据的时候,我们要考虑到删除该条缓存,还要考虑在删除该条缓存之前该条数据是否已经到达缓存失效时间等各种情况!

使用缓存的时候还要考虑到缓存服务器发生故障时候如何进行容错处理,是使用N多台服务器缓存相同的数据,通过分布式部署的方式对缓存数据进行控制,当一台发生故障的时候自动切换到其他的机器上去;还是通过Hash一致性的方式,等待缓存服务器恢复正常使用的时候重新指定到该缓存服务器。Hash一致性的另一个作用就是在分布式缓存服务器下对数据进行定位,将数据分布在不用缓存服务器上。关于数据缓存的Hash一致性也是一个比较打的问题,这里只能大致描述一下,关于Hash一致性的了解,推荐一篇文章:http://blog.csdn.net/liu765023051/article/details/49408099

(2)页面静态化技术

使用传统的JSP界面,前端界面的显示是通过后台服务器进行渲染后返回给前端游览器进行解析执行,如下图: 
这里写图片描述

当然,现在提倡前后端分离,前端界面基本都是HTML网页代码,通过Angular JS或者NodeJS提供的路由向后端服务器发出请求获取数据,然后在游览器对数据进行渲染,这样在很大程度上降低了后端服务器的压力。

还可以将这些静态的HTML、CSS、JS、图片资源等放置在缓存服务器上或者CDN服务器上,一般使用最多的应该是CDN服务器或者Nginx服务器提供的静态资源功能。

另外,在《高性能网站建设进阶指南-Web开发者性能优化最佳实践(口碑网前端团队 翻译)》这本书中,对网站性能的前端界面提供了一些很宝贵的经验,如下:

这里写图片描述

因此,在这些静态资源的处理上,选择正确的处理方式还是对整体网站性能还是有很大帮助的!

(3)数据库优化

数据库优化是整个网站性能优化的最基础的一个环节,因为,大多数网站性能的瓶颈都是开在数据库IO操作上,虽然提供了缓存技术,但是对数据库的优化还是一个需要认真的对待。一般公司都有自己的DBA团队,负责数据库的创建,数据模型的确立等问题,不像我们现在几个不懂数据库优化的人只能在网上找一篇篇数据库优化的文章,自己去摸索,并没有形成一个系统的数据库优化思路。

对于数据库的优化来说,是一种用技术换金钱的方式。数据库优化的方式很多,常见的可以分为:数据库表结构优化、SQL语句优化、分区、分表、索引优化、使用存储过程代替直接操作等 。

1、表结构优化

对于数据库的 开发规范与使用技巧以及设计和优化,前边的时候总结了一些文章,这里偷个懒直接放地址,有需要的可以移步看一下: 
a) MySQL开发规范与使用技巧总结:http://blog.csdn.net/xlgen157387/article/details/48086607 
b) 在一个千万级的数据库查寻中,如何提高查询效率?:http://blog.csdn.net/xlgen157387/article/details/44156679

另外,再设计数据库表的时候需不需要创建外键,使用外键的好处之一可以方便的进行级联删除操作,但是现在在进行数据业务操作的时候,我们都通过事物的方式来保证数据读取操作的一致性,我感觉相比于使用外键关联MySQL自动帮我们完成级联删除的操作来说,还是自己使用事物进行删除操作来的更放心一些。当然可能也是有适用的场景,大家如有很好的建议,欢迎留言!

2、SQL优化

对于SQL的优化,主要是针对SQL语句处理逻辑的优化,而且还要根据索引进行配合使用。另外,对于SQL语句的优化我们可以针对具体的业务方法进行优化,我们可以将执行业务逻辑操作的数据库执行时间记录下来,来进行有针对性的优化,这样的话效果还是很不错的!例如下图,展示了一条数据库操作执行调用的时间:

这里写图片描述

关于SQL优化的一些建议,以前整理了一些,还请移步查看:

a) 19个MySQL性能优化要点解析:http://blog.csdn.net/xlgen157387/article/details/50735269

b) MySQL批量SQL插入各种性能优化:http://blog.csdn.net/xlgen157387/article/details/50949930

  • 分表

分表是将一个大表按照一定的规则分解成多张具有独立存储空间的实体表,我们可以称为子表,每个表都对应三个文件,MYD数据文件,.MYI索引文件,.frm表结构文件。这些子表可以分布在同一块磁盘上,也可以在不同的机器上。数据库读写操作的时候根据事先定义好的规则得到对应的子表名,然后去操作它。

例如:用户表 
用户的角色有很多种,可以通过枚举类型的方式将用户分为不同类别category:学生、教师、企业等 ,这样的话,我们就可以根据类别category来对数据库进行分表,这样的话每次查询的时候现根据用户的类型锁定一个较小的范围。

不过分表之后,如果需要查询完整的顺序就需要使用多表操作了。

  • 分区

数据库分区是一种物理数据库设计技术,DBA和数据库建模人员对其相当熟悉。虽然分区技术可以实现很多效果,但其主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减响应时间。

分区和分表相似,都是按照规则分解表。不同在于分表将大表分解为若干个独立的实体表,而分区是将数据分段划分在多个位置存放,可以是同一块磁盘也可以在不同的机器。分区后,表面上还是一张表,但数据散列到多个位置了。数据库读写操作的时候操作的还是大表名字,DMS自动去组织分区的数据。

当一张表中的数据变得很大的时候,读取数据,查询数据的效率非常低下,很容易的就是讲数据分到不同的数据表中进行保存,但是这样分表之后会使得操作起来比较麻烦,因为,将同类的数据分别放在不同的表中的话,在搜索数据的时候需要便利查询这些表中的数据。想进行CRUD操作还需要先找到对应的所有表,如果涉及到不同的表的话还要进行跨表操作,这样操作起来还是很麻烦的。

使用分区的方式可以解决这个问题,分区是将一张表中的数据按照一定的规则分到不同的区中进行保存,这样进行数据查询的时候如果数据的范围在同一个区域内那么就可以支队一个区中的数据进行操作,这样的话操作起来数据量更少,操作速度更快,而且该方法是对程序透明的,程序不需要进行任何的修改。(PS:上次面试中我提出的,按照行政区作为数据库的分区依据)

  • 索引优化

索引的大致原理是在数据发生变化的时候就预先按指定字段的顺序排列后保存到一个类似表的结构中,这样在查找索引字段为条件记录时就可以很快地从索引中找到对应记录的指针并从表中获取到相应的数据,这样速度是很快地。

不过,虽然查询的效率大大提高了,但是在进行增删改的时候,因为数据的变化都需要更新相应的索引,也是一种资源的浪费。

关于使用索引的问题,对待不同的问题,还是需要进行不同的讨论,根据具体的业务需求选择合适的索引对性能的提高效果是很明显的一个举措!

推荐文章阅读:

a) 数据库索引的作用和优点缺点以及索引的11中用法:http://blog.csdn.net/xlgen157387/article/details/45030829

b) 数据库索引原理:http://blog.csdn.net/kennyrose/article/details/7532032

  • 使用存储过程代替直接操作

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。

在操作过程比较复杂并且调用频率比较高的业务中,可以将编写好的sql语句用存储过程的方式来代替,使用存储过程只需要进行一次变异,而且可以在一个存储过程里做一些复杂的操作。

(4)分离数据库中活跃的数据

正如前边提到的“二八定律”一样,网站的数据虽然很多,但是经常被访问的数据还是有限的,因此可以讲这些相对活跃的数据进行分离出来单独进行保存来提高处理效率。

其实前边使用缓存的思想就是一个很明显的分离数据库中活跃的数据的使用案例,将热门数据缓存在内存中。

还有一种场景就是,例如一个网站的所用注册用户量很大千万级别,但是经常登录的用户只有百万级别,剩下的基本都是很长时间都没有进行登录操作,如果不把这些“僵尸用户”单独分离出去,那么我们每次查询其他登录用户的时候,就白白浪费了这些僵尸用户的查询操作。

(5)批量读取和延迟修改

批量读取和延迟修改的原理是通过减少操作数据库的操作来提高效率。

批量读取是将多次查询合并到一次中进行读取,因为每一个数据库的请求操作都需要链接的建立和链接的释放,还是占用一部分资源的,批量读取可以通过异步的方式进行读取。

延迟修改是对于一些高并发的并且修改频繁修改的数据,在每次修改的时候首先将数据保存到缓存中,(后期)然后定时将缓存中的数据保存到数据库中,程序可以在读取数据时可以同时读取数据库中和缓存中的数据。

(6) 读写分离

读写分离的实质是将应用程序对数据库的读写操作分配到多个数据库服务器上,从而降低单台数据库的访问压力。

读写分离一般通过配置主从数据库的方式,数据的读取来自从库,对数据库增加修改删除操作主库。

这里写图片描述

相关文章请移步观看: 
a) MySQL5.6 数据库主从(Master/Slave)同步安装与配置详解:http://blog.csdn.net/xlgen157387/article/details/51331244 
b) MySQL主从复制的常见拓扑、原理分析以及如何提高主从复制的效率总结:http://blog.csdn.net/xlgen157387/article/details/52451613

(7)使用NoSQL和Hadoop等技术

NoSQL是一种非结构化的非关系型数据库,由于其灵活性,突破了关系型数据库的条条框框,可以灵活的进行操作,另外,因为NoSQL通过多个块存储数据的特点,其操作大数据的速度也是相当快的。

(8)分布式部署数据库

任何强大的单一服务器都满足不了大型网站持续增长的业务需求。数据库通过读写分离之后将一台数据库服务器拆分为两台或者多台数据库服务器,但是仍然满足不了持续增长的业务需求。分布式部署数据库是将网站数据库拆分的最后手段,只有在单表数据规模非常庞大的时候才使用。

分布式部署数据库是一种很理想的情况,分布式数据库是将表存放在不同的数据库中然后再放到不同的数据库中,这样在处理请求的时候,如果需要调用多个表,则可以让多台服务器同时处理,从而提高处理效率。

分布式数据库简单的架构图如下:

这里写图片描述

(9)应用服务和数据服务分离

应用服务器和数据库服务器进行分离的目的是为了根据应用服务器的特点和数据库服务器的特点进行底层的优化,这样的话能够更好的发挥每一台服务器的特性,数据库服务器当然是有一定的磁盘空间,而应用服务器相对不需要太大的磁盘空间,这样的话进行分离是有好处的,也能防止一台服务器出现问题连带的其他服务也不可以使用。

这里写图片描述

(10)使用搜索引擎搜索数据库中的数据

使用搜索引擎这种非数据库查询技术对网站应用的可伸缩分布式特性具有更好的支持。

常见的搜索引擎如Solr通过一种反向索引的方式,维护关键字到文档的映射关系,类似于我们使用《新华字典》进行搜索一个关键字,首先应该是看字典的目录进行查找然后定位到具体的位置。

搜索引擎通过维护一定的关键字到文档的映射关系,能够快速的定位到需要查找的数据,相比于传统的数据库搜索的方式,效率还是很高的。

目前一种比较火的ELK stack技术,还是值得学习的。

一篇关于Solr与MySQL查询性能对比文章: 
Solr与MySQL查询性能对比:http://www.cnblogs.com/luxiaoxun/p/4696477.html?utm_source=tuicool&utm_medium=referral

(11) 进行业务的拆分

为什么进行业务的拆分,归根结底上还是使用的还是讲不通的业务数据表部署到不用的服务器上,分别查找对应的数据以满足网站的需求。各个应用之间用过指定的URL连接获取不同的服务,

例如一个大型的购物网站就会将首页、商铺、订单、买家、卖家等拆分为不通的子业务,一方面将业务模块分归为不同的团队进行开发,另外一方面不同的业务使用的数据库表部署到不通的服务器上,体现到拆分的思想,当一个业务模块使用的数据库服务器发生故障也不会影响其他业务模块的数据库正常使用。另外,当其中一个模块的访问量激增的时候还可以动态的扩展这个模块使用到的数据库的数量从而满足业务的需求。

高并发情况下的解决方案

(1)应用程序和静态资源文件进行分离

所谓的静态资源就是我们网站中用到的Html、Css、Js、Image、Video、Gif等静态资源。应用程序和静态资源文件进行分离也是常见的前后端分离的解决方案,应用服务只提供相应的数据服务,静态资源部署在指定的服务器上(Nginx服务器或者是CDN服务器上),前端界面通过Angular JS或者Node JS提供的路由技术访问应用服务器的具体服务获取相应的数据在前端游览器上进行渲染。这样可以在很大程度上减轻后端服务器的压力。

例如,百度主页使用的图片就是单独的一个域名服务器上进行部署的

这里写图片描述

(2)页面缓存

页面缓存是将应用生成的很少发生数据变化的页面缓存起来,这样就不需要每次都重新生成页面了,从而节省大量CPU资源,如果将缓存的页面放到内存中速度就更快。

可以使用Nginx提供的缓存功能,或者可以使用专门的页面缓存服务器Squid。

(3)集群与分布式

(4)反向代理

参考文章请移步至: 
http://blog.csdn.net/xlgen157387/article/details/49781487

(5)CDN

CDN服务器其实是一种集群页面缓存服务器,其目的就是尽早的返回用户所需要的数据,一方面加速用户访问速度,另一方面也减轻后端服务器的负载压力。

CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。

CDN通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。

也就是说CDN服务器是部署在网络运行商的机房,提供的离用户最近的一层数据访问服务,用户在请求网站服务的时候,可以从距离用户最近的网络提供商机房获取数据。电信的用户会分配电信的节点,联通的会分配联通的节点。

CDN分配请求的方式是特殊的,不是普通的负载均衡服务器来分配的那种,而是用专门的CDN域名解析服务器在解析与名的时候就分配好的。

CDN结构图如下所示:

这里写图片描述

总结

文章提到的几点并没有详细的介绍,如需要对其中的一种方式进行研究,可以自行去找资源学习研究,这里只起到抛砖引玉的作用。当然对于大型网站应用之海量数据和高并发解决方案不局限于这些技巧或技术,还有很多成熟的解决方案,有需要的可以自行了解。

特此说明:本文的配图来自《网站架构及其演变过程–韩路彪》,多谢原作者提供的精美配图,并且文章的结构大致也参考了作者的思路,只不过内容是自己的一些经验和学习到的东西进行整理的。


参考书籍或文章:

1、《网站架构及其演变过程–韩路彪》 
2、《大型网站技术架构之核心原理与参考案例–李智慧》 
3、部分专业名词简介来自百度百科 
4、http://cio.chinabyte.com/428/13106928.shtml 
5、http://blog.codinglabs.org/articles/consistent-hashing.html

还有一些在整理的时候,忘记记录连接,还请大家见谅!

转载于:https://www.cnblogs.com/LUO77/p/8567623.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

海量数据存储方案 的相关文章

  • 首字母变大写

    小写字母变大写m 0 m 0 32 include
  • 【周末闲谈】剑指offer,了解面试,学会面试

    我们在找工作时 需要结合自己的现状 针对意向企业做好充分准备 作为程序员 你有哪些面试IT技术岗的技巧 你可以从一下几个方向谈谈你的想法和观点 个人主页 个人主页 系列专栏 周末闲谈 文章目录 前言 剑指Offer 面试指南 一 了解你的面
  • Java学习笔记(十八)

    Spring Boot 什么是 Spring Boot Spring Boot 已经建立在现有 spring 框架之上 使用 spring 启动 避免了之前我们必须做的所有样板代码和配置 因此 SpringBoot 可以帮助我们以最少的工作
  • vue项目中实现扫码登录

    1 需求描述 PC端实现两种登录方式 账号登录 扫码登录 扫码登录未绑定账号 弹框提示绑定账号 账号登录 未绑定微信 弹框提示 效果图 2 扫码登录未绑定账号 弹框提示绑定账号 2 1 安装 qrcode npm install qrcod
  • TFS淘宝分布式文件核心存储引擎源码架构剖析实现

    这里写目录标题 相关背景介绍 相关设计思路介绍 项目基础 文件系统接口 扇区 文件结构 关于inode 为什么淘宝不用小文件存储 淘宝网为什么不用普通文件存储海量小数据 设计思路 关键数据结构哈希表 代码日志 mmp file h mmap
  • 31_access 日志

    文章目录 过滤模块的位置 返回响应 加工响应内容 过滤模块的位置 接收 http 头部 gt pre access 阶段 gt limit req 模块 gt limit conn 模块 gt access 阶段 gt access 模块
  • Java java.lang.NumberFormatException: For input string: ““问题解决

    问题描述 java lang NumberFormatException For input string 问题分析 1 使用Long parseLong Integer parseInt Double parseDouble Float
  • BP神经网络理解原理——用Python编程实现识别手写数字(翻译英文文献)

    BP神经网络理解原理 用Python编程实现识别手写数字 备注 这里可以用这个方法在csdn中编辑公式 https www zybuluo com codeep note 163962 一 前言 本文主要根据一片英文书籍进行学习 并且尝试着
  • CCProxy网络共享代理服务端配置使用

    CCProxy是一个局域网络共享工具 可用于VPN共享等 1 解压安装CCProxy工具 双击CCProxy exe启动 打开如下界面 2 打开设置界面 设置对外共享的IP地址和端口号 如下 点击确定 最后再点击启动即可
  • OAuth2扩展access_token(二)

    接着上一篇继续展示其他功能 2 1 如何拿着生成的access token获取用户详情信息 有的小伙伴可能好奇这个jti是合适呢么东西 这个是jwt生成令牌的唯一标识 后期我们还要拿它来整合redis哦 因为他是唯一的 我们可以把它作为ke
  • Mac系统CLion中C语言EOF如何结束输入(楼主亲测有效)

    今日发现在mac系统CLion中C语言EOF没有办法结束输入 如下代码 我写了一个C语言程序 以EOF结束 include
  • 《Thinking in Java》读后总结与感想

    作为Java界的四大名著之一 Thinking in Java 一直备受推崇 我很早就知道了这本书 当时只是初涉Java 粗略的翻了翻之后觉得看起来这本书讲的比较深就没有再去碰它 后来Java基础学完之后又忙着学Android开发的知识 就
  • 如何打开mysql_MySQL教程

    MySQL经常和 数据库 连在一起读 这很容易对新手造成误解 认为MySQL就是一个数据库 其实不是这样 MySQL是数据库的集合 MySQL里面有很多数据库 那么数据是直接存在数据库里的吗 并不 数据库底下还有一个叫做数据表的存储单元 数
  • 无需公网IP,安全访问云端资源,3步搞定

    某企业将OA ERP Git代码库等业务资源 分别部署在了公有云和私有云 但随着业务发展 分部和移动办公人员逐渐增多 如何高效实现50名员工安全远程访问云端资源成了难题 使用MPLS专线 IPSec VPN等传统方案实现远程访问 不仅实施费
  • Spring的入门及案例----Ioc

    一 Spring的核心 Spring的核心是控制反转 IoC 和面向切面 AOP 简单来说 Spring是一个分层的JavaSE EEfull stack 一站式 轻量级开源框架 IoC 控制反转 对于Spring来说 Spring创建对象
  • 通过css内修改input框placeholder样式

    使用css内修改input框placeholder样式 需求将input框内placeholder属性文字设置颜色及字体大小 修改前 修改后 代码 input webkit input placeholder WebKit Blink Ed
  • 利用std::async实现异步功能

    c 11标准推出了多线程功能 其中我比较喜欢的是把async和future联合起来使用 实现异步功能 目录 首先介绍async的使用办法 输入参数 返回值 std future的使用办法 异步结果的获取 等待异步结果的返回 wait wai
  • Android图像开源视图:SmartImageView

    项目需要 开发中需要加载图片 自己要写图片从网上下载的方法 还要写缓存 等等 在网上找到一个开源项目 smartImageVIew 支持从URL和通讯录中获取图像 可以替代Android标准的ImageView 特征 根据URL地址装载图像
  • C# ---Constructor, Object Initializer, Property, Constant, and readonly

    C Constructor Object Initializer Property Constant and Readonly Constructor and Object Initializer Fields and Property 如
  • queue使用方法

    queue使用方法 提示 如果队列满了 那么使用put放入数据会等待 直到队列有空闲位置才可以放入 放入消息的时候不会进行等待 如果发现队列满了不能放入数据 那么会直接崩溃 import multiprocessing import tim

随机推荐

  • Spring Boot使用@Async实现异步调用

    1 Spring Boot使用 Async实现异步调用 链接 link 原文 http blog csdn net a286352250 article details 53157822 项目GitHub地址 https github co
  • 大数据背景下如何加强高校财务管理水平

    1 建立软 硬件平台 智能的软件平台是大数据技术实施的主要依托 必须加强与大数 据相适应的平台建设 才能充分发挥大数据技术的优势 服务好高校 财务管理工作 云平台存储便捷 处理高效 管理智能 是与大数据技术适应的 最佳软件平台 因此 高校要
  • python宽度学习训练后模型的持久化存储和快速调用

    在模型训练完成后 我们需要对我们训练出来的模型进行持久性储存 这样既能将我们调参后得到的最佳模型进行存储 还可以方便后期同团队的人进行调用预测 1 原理 此处用到的是sklearn库中的joblib包进行存储和加载 因为宽度学习的类属于自定
  • 华为OD机考-构建输入和输出

    华为OD机考 ACM模式下创建输入 概述 下文列举机考过程中常见输入的构造方法 如字符串 多维数组等 并对用到的函数进行详细讲解 最后通过真题实操巩固知识点 一 机考中常见的输入 1 输入字符串 输入一行字符串 str1 input pri
  • 36 数据增广 [动手学深度学习v2]

    数据增强 增加一个已有数据集 使得有更多的多样性 在语言里面加入各种不同的背景噪音 改变图片的颜色和形状 图像增广 import torch import torchvision from torch import nn 左右翻转图像 to
  • 深度学习刷 SOTA 有哪些 trick?

    深度学习刷 SOTA 有哪些 trick 此问题在知乎上有超 1700 人关注 浏览量超 32 万 相信是大家都非常关心的问题 快一起看看下面的分享吧 希望可以帮助到大家 对于图像分类任务 让我们以 Swin Transformer 中使用
  • 【2023】基于docker 实现部署jar包项目(包括单个和多个一起部署)

    建议学习本博客之前 需要对docke的基本命令有过学习 目录 前言 1 项目打包 2 编写Dockerfile文件 2 1 单个jar部署 Dockerfile文件常用命令 2 2 1 编写一个Dockerfile 文件格式制作镜像 2 1
  • AngularJs的生命周期

    AngularJs的生命周期分为六个阶段 编译 AngularJs会遍历浏览器提供的dom树 尝试参照已注册的指令集来匹配每个元素 属性 注释和css类 每当匹配一个指令时 ag就会调用该指令的编译函数 该函数返回一个连接函数 ag会收集所
  • linux 命令行操作串口

    linux 命令行操作串口 1 获取串口号 2 配置串口属性 stty命令 3 串口数据读写操作 4 解析数据 5 后台运行 6 绘制数据 Linux stty命令 一 参数 二 用法 Linux下minicom操作 Linux minic
  • 算法第六题:压缩字符串 2021-08-21

    一 题目 给你一个字符数组 chars 请使用下述算法压缩 从一个空字符串 s 开始 对于 chars 中的每组 连续重复字符 如果这一组长度为 1 则将字符追加到 s 中 否则 需要向 s 追加字符 后跟这一组的长度 压缩后得到的字符串
  • WPF的MVVM框架Stylet开发文档 14.7-14.9 杂项、性能、技术

    14 7 StyletIoC 杂项 文档地址 此页面包含其他各种值得一提的点点滴滴 但还不够大 不值得单独放置一个页面 循环依赖 循环依赖项 下面记录的类型除外 会导致 StackOverflow 异常 提前发现这些问题并非易事 虽然 St
  • C# 如何将EMF文件转换成PNG文件

    本文主要讲述如何将EMF文件转换成PNG文件 目录 一 EMF文件和PNG文件 二 代码 一 EMF文件和PNG文件 EMF文件和PNG文件都是Windows系统可以读取的图片文件格式 所以转换比较简单 二 代码 有几个地方需要要注意 1
  • Softing D-PDU API 11_30_010 新版本支持TLS

    一 TLS的概述 安全传输层协议 Transport Layer Security 缩写 TLS 前身为安全套接层 Secure Sockets Layer 缩写 SSL 用于在通信应用程序之间提供保密性和数据完整性 该协议由两层组成 一个
  • 质因数分解(唯一分解定理)

    质因数分解 题目描述 多数据 给出t个数 求出它的质因子个数 数据没坑 难度降低 输入描述 Input Description 第一行 t 之后t行 数据 输出描述 t行 分解后结果 质因子个数 样例输入 2 11 6 样例输出 1 2 数
  • vs2010 点击时应用程序无法正常启动(0xc000007b).请单击“确定”关闭应用程序解决办法

    昨天做项目的时候 在安装一个win32的应用程序后再次启动vs2010时发现报错 就是如下的错误 哎呀 我的天 关键时刻就打不开了 这么怎么办呢 赶紧去搜解决办法 1 使用Directx修复 修复了180个左右的dll文件 但是没有解决我的
  • 卷积操作中的卷积核形状到底是怎样的

    input shape 2 5 5 kernal size 2 3 3 kernal amount 3 卷积核的维度与输入的维度一致 都是三维的 最后的输出的通道数与卷积核数量一致 用了三个卷积核 就会输出三个通道
  • IDEA最好用的插件推荐,吐血整理!

    作者 明明如月 来源 慕课专栏 阿里巴巴Java开发手册 1 前言 俗话说 工欲善其事 必先利其器 为了助力大家的学习和进阶 本小节介绍几个对 Java 学习非常有帮助的 IDEA 插件 代码反编译和反汇编工具 以及非常不错的网站等 2 I
  • 【板子】

    线段树 1 include
  • c语言数组处理实验报告心得体会,C语言实验报告总结计划数组.doc

    学 生 实 验 报 告 学院 软件与通信工程学院 课程名称 C 语言与程序设计 专业班级 通信 121 姓名 学号 学生实验报告 4 学生姓名 学号 同组人 实验项目 函数 必修 选修 演示性实验 验证性实验 操作性实验 综合性实验 实验地
  • 海量数据存储方案

    参考原文 http blog csdn net xlgen157387 article details 53230138 一 网站应用背景 开发一个网站的应用程序 当用户规模比较小的时候 使用简单的 一台应用服务器 一台数据库服务器 一台文