游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

基于mogileFS搭建分布式文件系统海量小文件的存储利器

  一、分布式文件系统
  1。简介
  分布式文件系统(DistributedFileSystem)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机服务器模式。一个典型的网络可能包括多个供多用户访问的服务器。另外,对等特性允许一些系统扮演客户机和服务器的双重角色。例如,用户可以发表一个允许其他客户机访问的目录,一旦被访问,这个目录对客户机来说就像使用本地驱动器一样。
  当下我们处在一个互联网飞速发展的信息社会,在海量并发连接的驱动下每天所产生的数据量必然以几何方式增长,随着信息连接方式日益多样化,数据存储的结构也随着发生了变化。在这样的压力下使得人们不得不重新审视大量数据的存储所带来的挑战,例如:数据采集、数据存储、数据搜索、数据共享、数据传输、数据分析、数据可视化等一系列问题。
  传统存储在面对海量数据存储表现出的力不从心已经是不争的事实,例如:纵向扩展受阵列空间限制、横向扩展受交换设备限制、节点受文件系统限制。
  然而分布式存储的出现在一定程度上有效的缓解了这一问题,之所以称之为缓解是因为分布式存储在面对海量数据存储时也并非十全十美毫无压力,依然存在的难点与挑战例如:节点间通信、数据存储、数据空间平衡、容错、文件系统支持等一系列问题仍处在不断摸索和完善中。
  2。分布式文件系统的一些解决方案
  GoogleFilesystem适合存储海量大个文件,元数据存储与内存中
  HDFS(HadoopFilesystem)GFS的山寨版,适合存储大量大个文件
  TFS(TaobaoFilesystem)淘宝的文件系统,在名称节点上将元数据存储与关系数据库中,文件数量不在受限于名称节点的内容空间,可以存储海量小文件LustreOracle开发的企业级分布式系统,较重量级MooseFS基于FUSE的格式,可以进行挂载使用MogileFS
  擅长存储海量的小数据,元数据存储与关系型数据库中二、MogileFS
  1。简介
  MogileFS是一个开源的分布式文件系统,用于组建分布式文件集群,由LiveJournal旗下DangaInteractive公司开发,Danga团队开发了包括Memcached、MogileFS、Perlbal等不错的开源项目:(注:Perlbal是一个强大的Perl写的反向代理服务器)。MogileFS是一个开源的分布式文件系统。
  目前使用MogileFS的公司非常多,比如国外的一些公司,日本前几名的公司基本都在使用这个。
  国内所知道的使用MogileFS的公司有图片托管网站yupoo又拍,digg,土豆,豆瓣,1号店,大众点评,搜狗,安居客等等网站。基本很多网站容量,图片都超过30T以上。
  2。MogileFS特性
  1)应用层提供服务,不需要使用核心组件
  2)无单点失败,主要有三个组件组成,分为tracker(跟踪节点)、mogstore(存储节点)、database(数据库节点)
  3)自动复制文件,复制文件的最小单位不是文件,而是class
  4)传输中立,无特殊协议,可以通过NFS或HTTP实现通信
  5)简单的命名空间:没有目录,直接存在与存储空间上,通过域来实现
  6)不用共享任何数据
  3。MogileFS的组成
  1)Tracker跟踪器,调度器
  MogileFS的核心,是一个调度器,mogilefsd进程就是trackers进程程序,trackers的主要职责有:删除数据、复制数据、监控、查询等等。这个是基于事件的(eventbased)父进程消息总线来管理所有来之于客户端应用的交互(requestingoperationstobeperformed),包括将请求负载平衡到多个queryworkers中,然后让mogilefs的子进程去处理。
  mogadm,mogtool的所有操作都要跟trackers打交道,Client的一些操作也需要定义好trackers,因此最好同时运行多个trackers来做负载均衡。trackers也可以只运行在一台机器上,使用负载均衡时可以使用搞一些简单的负载均衡解决方案,如haproxy,lvs,nginx等,
  tarcker的配置文件为etcmogilefsmogilefsd。conf,监听在TCP的7001端口
  2)Database数据库部分
  主要用来存储mogilefs的元数据,所有的元数据都存储在数据库中,因此,这个数据相当重要,如果数据库挂掉,所有的数据都不能用于访问,因此,建议应该对数据库做高可用
  3)mogstored存储节点
  数据存储的位置,通常是一个HTTP(webDAV)服务器,用来做数据的创建、删除、获取,任何WebDAV服务器都可以,不过推荐使用mogstored。mogilefsd可以配置到两个机器上使用不同端口mogstored来进行所有的DAV操作和流量,IO监测,并且你自己选择的HTTP服务器(默认为perlbal)用来做GET操作给客户端提供文件。
  典型的应用是一个挂载点有一个大容量的SATA磁盘。只要配置完配置文件后mogstored程序的启动将会使本机成为一个存储节点。当然还需要mogadm这个工具增加这台机器到Cluster中。
  配置文件为etcmogilefsmogstored。conf,监听在TCP的7500端口
  4。基本工作流程
  应用程序请求打开一个文件(通过RPC通知到tracker,找到一个可用的机器)。做一个createopen请求。
  tracker做一些负载均衡(loadbalancing)处理,决定应该去哪儿,然后给应用程序一些可能用的位置。
  应用程序写到其中的一个位置去(如果写失败,他会重新尝试并写到另外一个位置去)。
  应用程序(client)通过createclose告诉tracker文件写到哪里去了。
  tracker将该名称和域命的名空间关联(通过数据库来做的)
  tracker,在后台,开始复制文件,知道他满足该文件类别设定的复制规则
  然后,应用程序通过getpaths请求domainkey(keyfilename)文件,tracker基于每一位置的IO繁忙情况回复(在内部经过databasememcacheetc等的一些抉择处理),该文件可用的完整URLs地址列表。
  应用程序然后按顺序尝试这些URL地址。(tracker’持续监测主机和设备的状态,因此不会返回死连接,默认情况下他对返回列表中的第一个元素做双重检查,除非你不要他这么做。。)三、Nginxmogilefs的实现
  1。拓扑图
  说明:1。用户通过URL访问前端的nginx
  2。nginx根据特定的挑选算法,挑选出后端一台tracker来响应nginx请求
  3。tracker通过查找database数据库,获取到要访问的URL的值,并返回给nginx
  4。nginx通过返回的值及某种挑选算法挑选一台mogstored发起请求
  5。mogstored将结果返回给nginx
  6。nginx构建响应报文返回给客户端
  2。ip规划
  角色运行软件ip地址反向代理nginx192。168。1。201存储节点与调度节点1
  mogilefs192。168。1。202存储节点与调度节点2
  mogilefs192。168。1。203数据库节点
  MariaDB192。168。1。204
  3。数据库的安装操作并为授权
  关于数据库的编译安装,请参照本人相关博文http:wangfeng7399。blog。51cto。com35180311393146,本处将不再累赘,本处使用的为yum源的安装方式安装mysqlmysqlgt;grantallon。toroot192。168。1。identifiedbywangfeng7399;
  QueryOK,0rowsaffected(0。00sec)
  mysqlgt;grantallonmgdb。tomguser192。168。1。identifiedbywangfeng7399;
  QueryOK,0rowsaffected(0。00sec)
  mysqlgt;flushprivileges;
  QueryOK,0rowsaffected(0。00sec)
  4。安装mogilefs。安装mogilefs,可以使用yum安装,也可以使用编译安装,本处通过yum安装〔rootnode2download〕ls
  MogileFSServer2。462。el6。noarch。rpm
  MogileFSServermogilefsd2。462。el6。noarch。rpm
  MogileFSServermogstored2。462。el6。noarch。rpm
  MogileFSUtils2。191。el6。noarch。rpm
  perlMogileFSClient1。141。el6。noarch。rpm
  perlNetNetmask1。90158。el6。noarch。rpm
  perlPerlbal1。781。el6。noarch。rpm
  〔rootnode2download〕yuminstall。rpmperlIOAIOy
  5。初始化数据库〔rootnode2〕mogdbsetupdbhost192。168。1。204dbnamemgdbdbrootuserrootdbrootpasswangfeng7399dbusermguserdbpasswangfeng7399yes
  mysqlgt;showtables;
  Tablesinmgdb
  checksum
  class
  device
  domain
  file
  fileon
  fileoncorrupt
  filetodelete
  filetodelete2
  filetodeletelater
  filetoqueue
  filetoreplicate
  fscklog
  host
  serversettings
  tempfile
  unreachablefids
  可以看到在数据库中创建了一些表
  6。修改配置文件,启动服务修改etcmogilefsmogilefsd。conf
  daemonize1是否已守护进程模式启动mogilefsd
  pidfilevarrunmogilefsdmogilefsd。pidpiad文件的存放位置
  dbdsnDBI:mysql:mgdb:host192。168。1。204数据库的存放位置
  dbusermguser数据库的用户名
  dbpasswangfeng7399数据库的密码
  listen0。0。0。0:7001监听的地址
  〔rootnode2〕sstnlgrep7001
  LISTEN0128:7001:
  修改etcmogilefsmogstored。conf
  maxconns10000最大连接数
  httplisten0。0。0。0:7500http监听的地址
  mgmtlisten0。0。0。0:7501mgm监听的地址
  docrootmgdata数据的存放位置
  〔rootnode2〕mkdirmgdatadev1
  〔rootnode2〕chownRmogilefs。mogilefsmgdata
  〔rootnode2〕chownmogilefs。mogilefsetcmogilefsmogstored。conf
  〔rootnode2〕sstnl
  StateRecvQSendQLocalAddress:PortPeerAddress:Port
  LISTEN0128:7500:
  LISTEN0128:7501:
  7。配置mogilefs〔rootnode2〕mogadm
  Usage:(enteranycommandprefix,leavingoffoptions,forfurtherhelp)
  mogadmcheckCheckthestateoftheMogileFSworld。
  mogadmstatsShowMogileFSsystemstatistics。(DEPRECATED:usemogstatsinstead)
  mogadmhost。。。
  hostadd。。。AddahosttoMogileFS。
  hostdelete。。。Deleteahost。
  hostlistListallhosts。
  hostmark。。。Changethestatusofahost。(equivalenttomodifystatus)
  hostmodify。。。Modifyahostsproperties。
  mogadmdevice。。。
  deviceadd。。。Addadevicetoahost。
  devicelist。。。Listalldevices,foreachhost。
  devicemark。。。Markadeviceas{alive,dead,down,drain,readonly}
  devicemodify。。。Modifyadevicesproperties。
  devicesummary。。。Listthesummaryofdevices,foreachhost。
  mogadmdomain。。。
  domainadd。。。Addadomain(namespace)
  domaindelete。。。Deleteadomain。
  domainlistListallhosts。
  mogadmclass。。。
  classadd。。。Addafileclasstoadomain。
  classdelete。。。Deleteafileclassfromadomain。
  classlistListallclasses,foreachdomain。
  classmodify。。。Modifypropertiesofafileclass。
  mogadmslave。。。
  slaveadd。。。Addaslavenodeforstoreusage
  slavedelete。。。Deleteaslavenodeforstoreusage
  slavelistListcurrentstoreslavenodes。
  slavemodify。。。Modifyaslavenodeforstoreusage
  mogadmfsck。。。
  fsckclearlogClearthefscklog
  fsckprintlogDisplaythefscklog
  fsckreset。。。Resetfsckpositionbacktothebeginning
  fsckstartStart(orresume)backgroundfsck
  fsckstatusShowfsckstatus
  fsckstopStop(pause)backgroundfsck
  fscktaillogTailthefscklog
  mogadmrebalance。。。
  rebalancepolicy。。。Addoradjustthecurrentpolicy
  rebalanceresetResetanexistingpolicy
  rebalancesettingsDisplayrebalancesettings
  rebalancestartStartarebalancejob
  rebalancestatusShowstatusofcurrentrebalancejob
  rebalancestopStoparebalancejob
  rebalancetestShowwhatdevicesthecurrentpolicywouldmatch
  mogadmsettings。。。
  settingslistListallserversettings
  settingsset。。。Setserversettingkeytovalue。
  添加存储主机〔rootnode2〕mogadmtrackers192。168。1。202:7001hostadd192。168。1。202ip192。168。1。202statusalive
  〔rootnode2〕mogadmtrackers192。168。1。202:7001hostlist
  192。168。1。202〔1〕:alive
  IP:192。168。1。202:7500
  添加存储设备〔rootnode2〕mogadmtrackers192。168。1。202:7001deviceadd192。168。1。2021
  〔rootnode2〕mogadmtrackers192。168。1。202:7001devicelist
  192。168。1。202〔1〕:alive
  used(G)free(G)total(G)weight()
  dev1:alive0。39318。29318。686100
  添加域〔rootnode2〕mogadmtrackers192。168。1。202:7001domainaddimgs
  〔rootnode2〕mogadmtrackers192。168。1。202:7001domainaddfiles
  〔rootnode2〕mogadmtrackers192。168。1。202:7001domainlist
  domainclassmindevcountreplpolicyhashtype
  filesdefault2MultipleHosts()NONE
  imgsdefault2MultipleHosts()NONE
  添加class〔rootnode2〕mogadmtrackers192。168。1。202:7001classaddimgsclass1
  〔rootnode2〕mogadmtrackers192。168。1。202:7001classaddimgsclass2
  〔rootnode2〕mogadmtrackers192。168。1。202:7001classaddfilesclass1
  〔rootnode2〕mogadmtrackers192。168。1。202:7001classaddfilesclass2
  〔rootnode2〕mogadmtrackers192。168。1。202:7001domainlist
  domainclassmindevcountreplpolicyhashtype
  filesclass12MultipleHosts()NONE
  filesclass22MultipleHosts()NONE
  filesdefault2MultipleHosts()NONE
  imgsclass12MultipleHosts()NONE
  imgsclass22MultipleHosts()NONE
  imgsdefault2MultipleHosts()NONE
  8。配置192。168。1。203的mogilefs。切记不要初始化数据库,配置应该与192。168。1。202一样〔rootnode3download〕mogadmtrackers192。168。1。203:7001hostadd192。168。1。203ip192。168。1。203statusalive
  〔rootnode3download〕mogadmtrackers192。168。1。203:7001hostlist
  192。168。1。202〔1〕:alive
  IP:192。168。1。202:7500
  192。168。1。203〔2〕:alive
  IP:192。168。1。203:7500
  添加存储节点
  〔rootnode3download〕mkdirmgdatadev2
  〔rootnode3download〕chownmogilefs。mogilefsRmgdatadev2
  〔rootnode3download〕mogadmtrackers192。168。1。203:7001deviceadd192。168。1。2032
  〔rootnode3download〕mogadmtrackers192。168。1。203:7001domainlist
  domainclassmindevcountreplpolicyhashtype
  filesclass12MultipleHosts()NONE
  filesclass22MultipleHosts()NONE
  filesdefault2MultipleHosts()NONE
  imgsclass12MultipleHosts()NONE
  imgsclass22MultipleHosts()NONE
  imgsdefault2MultipleHosts()NONE
  只需要添加主机就可以看到在其他主机上配置的内容
  9。尝试上传数据,获取数据,客户端读取数据
  上传数据,在任何一个节点上传都可以〔rootnode3download〕moguploadtrackers192。168。1。203:7001domainimgskey2。jpgfileroot1。jpg
  获取数据〔rootnode3download〕mogfileinfotrackers192。168。1。203:7001domainimgskey2。jpg
  file:2。jpg
  class:default
  devcount:2
  domain:imgs
  fid:4
  key:2。jpg
  length:49809
  http:192。168。1。203:7500dev200000000000000004。fid
  http:192。168。1。202:7500dev100000000000000004。fid
  客户端查看数据
  我们可以通过任何一个节点查看到数据三、与nginx结合
  要想nginx能够实现对后端trucker的反向代理,必须结合第三方模块来实现
  1。编译安装nginx〔rootnode1〕tarxfnginx1。6。0。tar。gz
  〔rootnode1〕tarxfnginxmogilefsmodule1。0。4。tar。gz
  〔rootnode1〕useraddrnginx
  〔rootnode1〕cdnginx1。6。0
  〔rootnode1nginx1。6。0〕。configureprefixusrlocalnginxsbinpathusrlocalnginxsbinnginxconfpathetcnginxnginx。conferrorlogpathvarlognginxerror。loghttplogpathvarlognginxaccess。logpidpathvarrunnginxnginx。pidlockpathvarlocknginx。lockusernginxgroupnginxwithhttpsslmodulewithhttpflvmodulewithhttpstubstatusmodulewithhttpgzipstaticmodulehttpclientbodytemppathvartmpnginxclienthttpproxytemppathvartmpnginxproxyhttpfastcgitemppathvartmpnginxfcgihttpuwsgitemppathvartmpnginxuwsgihttpscgitemppathvartmpnginxscgiwithpcreaddmodule。。nginxmogilefsmodule1。0。4
  〔rootnode1nginx1。6。0〕makeamp;amp;makeinstall
  2。准备启动脚本!binbash
  nginxthisscriptstartsandstopsthenginxdaemon
  chkconfig:8515
  description:NginxisanHTTP(S)server,HTTP(S)reverse
  proxyandIMAPPOP3proxyserver
  processname:nginx
  config:etcnginxnginx。conf
  config:etcsysconfignginx
  pidfile:varrunnginx。pid
  Sourcefunctionlibrary。
  。etcrc。dinit。dfunctions
  Sourcenetworkingconfiguration。
  。etcsysconfignetwork
  Checkthatnetworkingisup。
  〔NETWORKINGno〕amp;amp;exit0
  nginxusrlocalnginxsbinnginx
  prog(basenamenginx)
  NGINXCONFFILEetcnginxnginx。conf
  〔fetcsysconfignginx〕amp;amp;。etcsysconfignginx
  lockfilevarlocksubsysnginx
  makedirs(){
  makerequireddirectories
  usernginxV2gt;amp;1grepconfigurearguments:seds〔〕user(〔〕)。1g
  optionsnginxV2gt;amp;1grepconfigurearguments:
  foroptinoptions;do
  if〔echooptgrep。temppath〕;then
  valueechooptcutdf2
  if〔!dvalue〕;then
  echocreatingvalue
  mkdirpvalueamp;amp;chownRuservalue
  fi
  fi
  done
  }
  start(){
  〔xnginx〕exit5
  〔fNGINXCONFFILE〕exit6
  makedirs
  echonStartingprog:
  daemonnginxcNGINXCONFFILE
  retval?
  echo
  〔retvaleq0〕amp;amp;touchlockfile
  returnretval
  }
  stop(){
  echonStoppingprog:
  killprocprogQUIT
  retval?
  echo
  〔retvaleq0〕amp;amp;rmflockfile
  returnretval
  }
  restart(){
  configtestreturn?
  stop
  sleep1
  start
  }
  reload(){
  configtestreturn?
  echonReloadingprog:
  killprocnginxHUP
  RETVAL?
  echo
  }
  forcereload(){
  restart
  }
  configtest(){
  nginxtcNGINXCONFFILE
  }
  rhstatus(){
  statusprog
  }
  rhstatusq(){
  rhstatusgt;devnull2gt;amp;1
  }
  case1in
  start)
  rhstatusqamp;amp;exit0
  1
  ;;
  stop)
  rhstatusqexit0
  1
  ;;
  restartconfigtest)
  1
  ;;
  reload)
  rhstatusqexit7
  1
  ;;
  forcereload)
  forcereload
  ;;
  status)
  rhstatus
  ;;
  condrestarttryrestart)
  rhstatusqexit0
  ;;
  )
  echoUsage:0{startstopstatusrestartcondrestarttryrestartreloadforcereloadconfigtest}
  exit2
  esac
  3。nginx与mofilefs互联locationpwpicpaths{
  mogilefstracker192。168。1。202:7001;
  mogilefsdomainimgs;
  mogilefspass{
  proxypassmogilefspath;
  proxyhideheaderContentType;
  proxybufferingoff;
  }
  }
  locationfile{
  mogilefstracker192。168。1。202:7001;
  mogilefsdomainfiles;
  mogilefspass{
  proxypassmogilefspath;
  proxyhideheaderContentType;
  proxybufferingoff;
  }
  }
  查看效果
  5。配置后端truckers的集群upstreammgfs{
  server192。168。1。202:7001;
  server192。168。1。203:7001;
  }
  server{
  locationpwpicpaths{
  mogilefstrackermgfs;
  mogilefsdomainimgs;
  mogilefspass{
  proxypassmogilefspath;
  proxyhideheaderContentType;
  proxybufferingoff;
  }
  }
  locationfile{
  mogilefstrackermgfs;
  mogilefsdomainfiles;
  mogilefspass{
  proxypassmogilefspath;
  proxyhideheaderContentType;
  proxybufferingoff;
  }
  }
  }
  查看效果
  大功告成了,后续思路,前段的nginx和数据库都存在单点故障,可以实现高可用集群

小米发布会强势来袭,液态镜头全球首发,还有充电技术和自研芯片如果说液态后置镜头只是前菜,那么小米官宣的MIX系列新机算不算是满汉全席呢?3月25日下午,继小米官宣MIX系列回归之后,小米宣布新一代小米MIX全球首发液态镜头技术。这意味着……当虹科技国内高清视频处理龙头逆势增长仍需警惕政策和竞争风险独立客观第三方研究,为您筛选优质上市公司证券代码:688039综合评级:A一、主营业务评分:751、业务分析:公司主营业务是为超高清视频提供编转码服务,核心技……重新定义8。9寸超极本,身材小性能更强,给我一个不选它的理由超极本这个概念自从推出以来,就一直深受用户好评,因为它相比普通笔记本电脑确实轻薄了不少,颜值也大大提升,可是如今市面上的超极本,还是不够极致小巧,没有做到真正的便携使用,因此G……易华录政府数据中心建设龙头,数字经济趋势下增长确定选股理由:数字经济股价逼近历史新高证券代码:300212评级:A本文分为六部分:一、主营业务;二、公司治理;三、财务分析;四、核心竞争力及投资逻辑;五、盈利预测及估……决策参考马斯克公布最新脑机字节跳动正式起诉特朗普1、马斯克公布最新脑机Neuralink:大脑与电脑连接更进一步事件:美国当地时间8月28日,马斯克旗下的脑机接口公司Neuralink举办发布活动,公开了可实际运作的N……经典IP重新焕发生命力,皇冠陆放打造前所未有的惊喜2021年8月,一汽丰田皇冠陆放终于和消费者见面了。在27。5835。08万价格背后,皇冠陆放带给我们的不仅仅是皇冠品牌的情怀与荣耀,更有超越期待的产品实力,以消费者的诉求为主……手机慢速度快门平移跟拍高清图片8月3日晚上八点练习慢速度快门平移跟拍尝试用高清画质拍摄照片如附图分享ISO2626,S:117,图片有13。6MBISO1798,S:120,图片有16。2MB……干货!商标注册的诚实信用原则是什么?为了更好地处理违背诚实信用原则,恶意注册商标、将别人早已在先应用的商标抢先开展注册等情况,在我国《商标法》第三次改动时增加了申请办理注册和应用商标,理应遵照诚实信用原则的要求。……川菜名可以注册商标吗?看法院怎么说近日,一枚核定使用在鸡精(调味品);香辛料等商品上的美蛙鱼头商标(简称诉争商标),因违反《商标法》第十一条第一款第(二)项的规定,被国家知识产权局予以无效宣告。美蛙鱼头本……车展实拍丰田凌放,雷克萨斯RX相似的外观,内饰依旧很丰田丰田在近些年来的电动化进程中有些落伍,但是推出的不少的混动车型依然受到了丰田迷们的喜欢,而最近一汽丰田一直在做铺垫的凌放要登场了,我们也在天津车展拍到了实车。说起这台车,国产车……打破现在,改变未来荣耀20Pro其他的20都除了很久了,这才终于等到正儿八经的荣耀数字20系,实在是不容易,特别是在这个关口,荣耀20系列的发布,特别是其配置和价格上,都给人一种打破现在,改变未来的感觉,不论……关于交友的数量与质量晓风残月,子夜沉思:朋友靠质量,不靠数量。人生走着走着自己都不知是什么时候,发现好多社交是无用的的?记得,在读大学的时候,常常约几个同学,一起吃吃喝喝,喜欢醉……
搭建centos7文件上传服务器完美运行搭建vsftpd文件上传服务器,Vsftp是一个专门为unix类型系统设计一个ftp服务器。FTP(FiletransferProtocl),文件传输协议,用于在网络上进……沙发管家安装APK时提示解析包出现错误怎么解决?最近常常有用户问小编,安装apk文件的时候电视显示解析包出现错误是为什么?今天小编搜集了一些相关资料统一给大家说下,安装apk文件时发生解析包出现错误的几大问题和解决方法。……粤港澳大湾区投资环境指南粤港澳大湾区重大国家战略常用关键词。粤港澳大湾区从确立至今,已然发展成为世界级湾区的又一极。蓝图规划逐步落实,交通网络和生态圈进展力强劲。大湾区的基本发展因素已全部齐备。……职场社交婉转表达建议一旦进入一个企业,就应迅速融入那个企业文化,但言听计从之际,也别忘了做个勇敢的部属。每个公司都有所谓的员工规章,当然游戏规则规定,人人都应遵守,但若片面修改,让人难以接受……满级大佬进了新手村达音科隼Pro印象虽然它叫隼Pro,但其实,除了ID设计的延续以外,它在调音思路、甚至是声音竞争力方面,和原版的隼是有极大差别的,标题基本可以概括我对它的判断。行业在严重内卷、兵家必争之地的千元……智能家居改善了我们的生活吗?本文作者:PranavPoddarCoFounderDirectorofSyenergyEnvironicsLtd。从智能手机到智能服务机器人,我们现在拥有的各种智能家居……红米官宣游戏手机,天玑1200大电池,卢伟冰价格让人无法拒绝目前手机游戏越来越流行,但是游戏手机始终是一个很小的类目。究其原因,主要还是因为目前游戏手机除了游戏体验出色之外,其他方面表现实在太离谱了,比如厚重的机身、拉胯的拍照以及夸张的……30天免费退换终身质保5年免费机油等14项权益,这才是真售后还记得那个开出4S店就漏油的豪华车吗?最后车主在借助媒体的力量之后才得以为自己维权成功,并且维权成功后还要签订保密协议,所以哪怕是自己的利益没受损失,哪怕过错方的确是厂家或者经……榆林WEYVV5降价11。92,欢迎到店赏车心心念念的WEYVV5,等了这么久终于有优惠了,小编打听到榆林亿荣WEY店即日起到09月22日直降11。92,这么好的机会朋友们是不是也和小编一样迫不及待的想到店去感受一下呢……大数据培训是培训什么?科技发展日新月异,在现代培训一个傍身技能已经成为一件常事,近几年大数据培训也成为了一个热门培训项目,有想要培训大数据技术的朋友就会有这么一个问题大数据培训是培训什么呢?想……3D素皮工艺行李箱,看realme真我GT大师系列如何玩转设5G时代的今天,虽然智能手机的性能和功能都有了质的提升,但与此同时,产品之间的同质化问题愈发明显。因此可以看到,当下众多手机厂商不仅加快了技术创新的速度,还纷纷选择与其他行业品……东芝走了,这只是跨国公司加速退出中国的一个照面东芝离开的消息这些天成为媒体热点,但是这并非最近两年的孤例,实际上跨国公司正在有计划、成规模地退出中国,把产业链转移到越南、印度和东南亚等一些国家。耐克瑞银证据实验室(U……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网