幼儿饰品瑜伽美体用品微软
投稿投诉
微软创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品

两句话掌握Python最难知识点元类出处

  每个中国人,都是天生的元类使用者
  学懂元类,你只需要知道两句话:道生一,一生二,二生三,三生万物我是谁?我从哪来里?我要到哪里去?
  在python世界,拥有一个永恒的道,那就是type,请记在脑海中,type就是道。如此广袤无垠的python生态圈,都是由type产生出来的。
  道生一,一生二,二生三,三生万物。道即是type一即是metaclass(元类,或者叫类生成器)二即是class(类,或者叫实例生成器)三即是instance(实例)万物即是实例的各种属性与方法,我们平常使用python时,调用的就是它们。道和一,是我们今天讨论的命题,而二、三、和万物,则是我们常常使用的类、实例、属性和方法,用helloworld来举例:1
  2hr3hr4hr5hr6hr7hr8hr9hr10hr11创建一个Hello类,拥有属性sayhello二的起源
  classHello():
  defsayhello(self,nameworld):
  print(Hello,s。name)
  从Hello类创建一个实例hello二生三
  helloHello()
  使用hello调用方法sayhello三生万物
  hello。sayhello()
  输出效果:
  1hrHello,world。
  这就是一个标准的二生三,三生万物过程。从类到我们可以调用的方法,用了这两步。
  那我们不由自主要问,类从何而来呢?回到代码的第一行。
  classHello其实是一个函数的语义化简称,只为了让代码更浅显易懂,它的另一个写法是:1
  2hr3hr4deffn(self,nameworld):假如我们有一个函数叫fn
  print(Hello,s。name)
  Hellotype(Hello,(object,),dict(sayhellofn))通过type创建Helloclass神秘的道,可以点化一切,这次我们直接从道生出了二
  这样的写法,就和之前的ClassHello写法作用完全相同,你可以试试创建实例并调用
  Python1
  2hr3hr4hr5从Hello类创建一个实例hello二生三,完全一样
  helloHello()
  使用hello调用方法sayhello三生万物,完全一样
  hello。sayhello()
  输出效果:
  1hrHello,world。调用结果完全一样。
  我们回头看一眼最精彩的地方,道直接生出了二:
  Hellotype(‘Hello’,(object,),dict(sayhellofn))
  这就是道,python世界的起源,你可以为此而惊叹。
  注意它的三个参数!暗合人类的三大永恒命题:我是谁,我从哪里来,我要到哪里去。第一个参数:我是谁。在这里,我需要一个区分于其它一切的命名,以上的实例将我命名为Hello第二个参数:我从哪里来
  在这里,我需要知道从哪里来,也就是我的父类,以上实例中我的父类是objectpython中一种非常初级的类。第三个参数:我要到哪里去
  在这里,我们将需要调用的方法和属性包含到一个字典里,再作为参数传入。以上实例中,我们有一个sayhello方法包装进了字典中。
  值得注意的是,三大永恒命题,是一切类,一切实例,甚至一切实例属性与方法都具有的。理所应当,它们的创造者,道和一,即type和元类,也具有这三个参数。但平常,类的三大永恒命题并不作为参数传入,而是以如下方式传入1
  2hr3hr4hr5hr6hr7hr8classHello(object){
  class后声明我是谁
  小括号内声明我来自哪里
  中括号内声明我要到哪里去
  defsayhello(){
  }
  }造物主,可以直接创造单个的人,但这是一件苦役。造物主会先创造人这一物种,再批量创造具体的个人。并将三大永恒命题,一直传递下去。道可以直接生出二,但它会先生出一,再批量地制造二。type可以直接生成类(class),但也可以先生成元类(metaclass),再使用元类批量定制类(class)。元类道生一,一生二
  一般来说,元类均被命名后缀为Metalass。想象一下,我们需要一个可以自动打招呼的元类,它里面的类方法呢,有时需要sayHello,有时需要sayHi,有时又需要saySayolala,有时需要sayNihao。
  如果每个内置的sayxxx都需要在类里面声明一次,那将是多么可怕的苦役!不如使用元类来解决问题。
  以下是创建一个专门打招呼用的元类代码:
  Python1
  2hr3hr4hr5classSayMetaClass(type):
  defnew(cls,name,bases,attrs):
  attrs〔sayname〕lambdaself,value,sayingname:print(saying,value!)
  returntype。new(cls,name,bases,attrs)
  记住两点:
  1、元类是由type衍生而出,所以父类需要传入type。【道生一,所以一必须包含道】
  2、元类的操作都在new中完成,它的第一个参数是将创建的类,之后的参数即是三大永恒命题:我是谁,我从哪里来,我将到哪里去。它返回的对象也是三大永恒命题,接下来,这三个参数将一直陪伴我们。
  在new中,我只进行了一个操作,就是
  Python
  1hrattrs〔sayname〕lambdaself,value,sayingname:print(saying,value!)
  它跟据类的名字,创建了一个类方法。比如我们由元类创建的类叫Hello,那创建时就自动有了一个叫sayHello的类方法,然后又将类的名字Hello作为默认参数saying,传到了方法里面。然后把hello方法调用时的传参作为value传进去,最终打印出来。
  那么,一个元类是怎么从创建到调用的呢?
  来!一起根据道生一、一生二、二生三、三生万物的准则,走进元类的生命周期吧
  Python1
  2hr3hr4hr5hr6hr7hr8hr9hr10hr11hr12hr13hr14hr15hr16hr17hr18hr19道生一:传入type
  classSayMetaClass(type):
  传入三大永恒命题:类名称、父类、属性
  defnew(cls,name,bases,attrs):
  创造天赋
  attrs〔sayname〕lambdaself,value,sayingname:print(saying,value!)
  传承三大永恒命题:类名称、父类、属性
  returntype。new(cls,name,bases,attrs)
  一生二:创建类
  classHello(object,metaclassSayMetaClass):
  pass
  二生三:创建实列
  helloHello()
  三生万物:调用实例方法
  hello。sayHello(world!)
  输出为
  1hrHello,world!
  注意:通过元类创建的类,第一个参数是父类,第二个参数是metaclass
  普通人出生都不会说话,但有的人出生就会打招呼说Hello,你好,sayolala,这就是天赋的力量。它会给我们面向对象的编程省下无数的麻烦。
  现在,保持元类不变,我们还可以继续创建Sayolala,Nihao类,如下:
  Python1
  2hr3hr4hr5hr6hr7hr8hr9一生二:创建类
  classSayolala(object,metaclassSayMetaClass):
  pass
  二生三:创建实列
  sSayolala()
  三生万物:调用实例方法
  s。saySayolala(japan!)
  输出
  Python
  1hrSayolala,japan!
  也可以说中文
  Python1
  2hr3hr4hr5hr6hr7hr8hr9一生二:创建类
  classNihao(object,metaclassSayMetaClass):
  pass
  二生三:创建实列
  nNihao()
  三生万物:调用实例方法
  n。sayNihao(中华!)
  输出
  Python
  1hrNihao,中华!
  再来一个小例子:
  Python1
  2hr3hr4hr5hr6hr7hr8hr9hr10hr11hr12hr13hr14hr15hr16道生一
  classListMetaclass(type):
  defnew(cls,name,bases,attrs):
  天赋:通过add方法将值绑定
  attrs〔add〕lambdaself,value:self。append(value)
  returntype。new(cls,name,bases,attrs)
  一生二
  classMyList(list,metaclassListMetaclass):
  pass
  二生三
  LMyList()
  三生万物
  L。add(1)
  现在我们打印一下L
  Python1
  2hr3print(L)
  〔1〕
  而普通的list没有add()方法
  Python1
  2hr3hr4L2list()
  L2。add(1)
  AttributeError:listobjecthasnoattributeadd
  太棒了!学到这里,你是不是已经体验到了造物主的乐趣?
  python世界的一切,尽在掌握。
  年轻的造物主,请随我一起开创新世界。
  我们选择两个领域,一个是Django的核心思想,ObjectRelationalMapping,即对象关系映射,简称ORM。
  这是Django的一大难点,但学完了元类,一切变得清晰。你对Django的理解将更上一层楼!
  另一个领域是爬虫领域(黑客领域),一个自动搜索网络上的可用代理,然后换着IP去突破别的人反爬虫限制。
  这两项技能非常有用,也非常好玩!挑战一:通过元类创建ORM准备工作,创建一个Field类
  Python1
  2hr3hr4hr5hr6hr7hr8classField(object):
  definit(self,name,columntype):
  self。namename
  self。columntypecolumntype
  defstr(self):
  returnlt;s:s(self。class。name,self。name)
  它的作用是
  在Field类实例化时将得到两个参数,name和columntype,它们将被绑定为Field的私有属性,如果要将Field转化为字符串时,将返回Field:XXX,XXX是传入的name名称。准备工作:创建StringField和IntergerField
  Python1
  2hr3hr4hr5hr6hr7hr8hr9classStringField(Field):
  definit(self,name):
  super(StringField,self)。init(name,varchar(100))
  classIntegerField(Field):
  definit(self,name):
  super(IntegerField,self)。init(name,bigint)
  它的作用是
  在StringField,IntegerField实例初始化时,时自动调用父类的初始化方式。道生一
  Python1
  2hr3hr4hr5hr6hr7hr8hr9hr10hr11hr12hr13hr14hr15hr16classModelMetaclass(type):
  defnew(cls,name,bases,attrs):
  ifnameModel:
  returntype。new(cls,name,bases,attrs)
  print(Foundmodel:sname)
  mappingsdict()
  fork,vinattrs。items():
  ifisinstance(v,Field):
  print(Foundmapping:ss(k,v))
  mappings〔k〕v
  forkinmappings。keys():
  attrs。pop(k)
  attrs〔mappings〕mappings保存属性和列的映射关系
  attrs〔table〕name假设表名和类名一致
  returntype。new(cls,name,bases,attrs)
  它做了以下几件事创建一个新的字典mapping将每一个类的属性,通过。items()遍历其键值对。如果值是Field类,则打印键值,并将这一对键值绑定到mapping字典上。将刚刚传入值为Field类的属性删除。创建一个专门的mappings属性,保存字典mapping。创建一个专门的table属性,保存传入的类的名称。一生二
  Python1
  2hr3hr4hr5hr6hr7hr8hr9hr10hr11hr12hr13hr14hr15hr16hr17hr18hr19hr20hr21hr22hr23hr24classModel(dict,metaclassModelMetaclass):
  definit(self,kwarg):
  super(Model,self)。init(kwarg)
  defgetattr(self,key):
  try:
  returnself〔key〕
  exceptKeyError:
  raiseAttributeError(Modelobjecthasnoattributeskey)
  defsetattr(self,key,value):
  self〔key〕value
  模拟建表操作
  defsave(self):
  fields〔〕
  args〔〕
  fork,vinself。mappings。items():
  fields。append(v。name)
  args。append(getattr(self,k,None))
  sqlinsertintos(s)values(s)(self。table,,。join(fields),,。join(〔str(i)foriinargs〕))
  print(SQL:ssql)
  print(ARGS:sstr(args))如果从Model创建一个子类User:
  Python1
  2hr3hr4hr5hr6classUser(Model):
  定义类的属性到列的映射:
  idIntegerField(id)
  nameStringField(username)
  emailStringField(email)
  passwordStringField(password)
  这时
  idIntegerField(‘id’)就会自动解析为:
  Model。setattr(self,‘id’,IntegerField(‘id’))
  因为IntergerField(‘id’)是Field的子类的实例,自动触发元类的new,所以将IntergerField(‘id’)存入mappings并删除这个键值对。二生三、三生万物
  当你初始化一个实例的时候并调用save()方法时候
  Python1
  2uUser(id12345,nameBatman,emailbatmannasa。org,passwordiamback)
  u。save()
  这时先完成了二生三的过程:先调用Model。setattr,将键值载入私有对象然后调用元类的天赋,ModelMetaclass。new,将Model中的私有对象,只要是Field的实例,都自动存入u。mappings。
  接下来完成了三生万物的过程:
  通过u。save()模拟数据库存入操作。这里我们仅仅做了一下遍历mappings操作,虚拟了sql并打印,在现实情况下是通过输入sql语句与数据库来运行。
  输出结果为
  Python1
  2hr3hr4hr5hr6hr7Foundmodel:User
  Foundmapping:name
  Foundmapping:password
  Foundmapping:id
  Foundmapping:email
  SQL:insertintoUser(username,password,id,email)values(Batman,iamback,12345,batmannasa。org)
  ARGS:〔Batman,iamback,12345,batmannasa。org〕
  年轻的造物主,你已经和我一起体验了由道演化万物的伟大历程,这也是Django中的Model版块核心原理。接下来,请和我一起进行更好玩的爬虫实战(嗯,你现在已经是初级黑客了):网络代理的爬取吧!挑战二:网络代理的爬取准备工作,先爬个页面玩玩
  请确保已安装requests和pyquery这两个包。
  Python1
  2hr3hr4hr5hr6hr7hr8hr9hr10hr11hr12hr13hr14hr15hr16hr17hr18hr19hr20hr21文件:getpage。py
  importrequests
  baseheaders{
  UserAgent:Mozilla5。0(WindowsNT10。0;Win64;x64)AppleWebKit537。36(KHTML,likeGecko)Chrome54。0。2840。71Safari537。36,
  AcceptEncoding:gzip,deflate,sdch,
  AcceptLanguage:zhCN,zh;q0。8
  }
  defgetpage(url):
  headersdict(baseheaders)
  print(Getting,url)
  try:
  rrequests。get(url,headersheaders)
  print(Gettingresult,url,r。statuscode)
  ifr。statuscode200:
  returnr。text
  exceptConnectionError:
  print(CrawlingFailed,url)
  returnNone
  这里,我们利用request包,把百度的源码爬了出来。试一试抓百度
  把这一段粘在getpage。py后面,试完删除
  Python1
  2hr3if(namemain):
  rsgetpage(https:www。baidu。com)
  print(result:r,rs)试一试抓代理
  把这一段粘在getpage。py后面,试完删除
  Python1
  2hr3hr4hr5hr6hr7hr8hr9hr10hr11hr12if(namemain):
  frompyqueryimportPyQueryaspq
  starturlhttp:www。proxy360。cnRegionChina
  print(Crawling,starturl)
  htmlgetpage(starturl)
  ifhtml:
  docpq(html)
  linesdoc(p〔namelistproxyip〕)。items()
  forlineinlines:
  ipline。find(。tbBottomLine:nthchild(1))。text()
  portline。find(。tbBottomLine:nthchild(2))。text()
  print(ip:port)
  接下来进入正题:使用元类批量抓取代理批量处理抓取代理
  Python1
  2hr3hr4hr5hr6hr7hr8hr9hr10hr11hr12hr13hr14hr15hr16hr17hr18hr19hr20hr21hr22hr23hr24hr25hr26hr27hr28hr29hr30hr31hr32hr33hr34hr35hr36hr37hr38hr39hr40hr41hr42hr43hr44hr45hr46hr47hr48hr49hr50hr51hr52hr53hr54hr55hr56hr57hr58hr59hr60hr61hr62hr63hr64hr65hr66hr67hr68hr69hr70hr71hr72hr73hr74hr75hr76hr77hr78hr79hr80hr81hr82hr83hr84hr85hr86fromgetpageimportgetpage
  frompyqueryimportPyQueryaspq
  道生一:创建抽取代理的metaclass
  classProxyMetaclass(type):
  元类,在FreeProxyGetter类中加入
  CrawlFunc和CrawlFuncCount
  两个参数,分别表示爬虫函数,和爬虫函数的数量。
  defnew(cls,name,bases,attrs):
  count0
  attrs〔CrawlFunc〕〔〕
  attrs〔CrawlName〕〔〕
  fork,vinattrs。items():
  ifcrawlink:
  attrs〔CrawlName〕。append(k)
  attrs〔CrawlFunc〕。append(v)
  count1
  forkinattrs〔CrawlName〕:
  attrs。pop(k)
  attrs〔CrawlFuncCount〕count
  returntype。new(cls,name,bases,attrs)
  一生二:创建代理获取类
  classProxyGetter(object,metaclassProxyMetaclass):
  defgetrawproxies(self,site):
  proxies〔〕
  print(Site,site)
  forfuncinself。CrawlFunc:
  iffunc。namesite:
  thispageproxiesfunc(self)
  forproxyinthispageproxies:
  print(Getting,proxy,from,site)
  proxies。append(proxy)
  returnproxies
  defcrawldaili66(self,pagecount4):
  starturlhttp:www。66ip。cn{}。html
  urls〔starturl。format(page)forpageinrange(1,pagecount1)〕
  forurlinurls:
  print(Crawling,url)
  htmlgetpage(url)
  ifhtml:
  docpq(html)
  trsdoc(。containerboxtabletr:gt(0))。items()
  fortrintrs:
  iptr。find(td:nthchild(1))。text()
  porttr。find(td:nthchild(2))。text()
  yield:。join(〔ip,port〕)
  defcrawlproxy360(self):
  starturlhttp:www。proxy360。cnRegionChina
  print(Crawling,starturl)
  htmlgetpage(starturl)
  ifhtml:
  docpq(html)
  linesdoc(p〔namelistproxyip〕)。items()
  forlineinlines:
  ipline。find(。tbBottomLine:nthchild(1))。text()
  portline。find(。tbBottomLine:nthchild(2))。text()
  yield:。join(〔ip,port〕)
  defcrawlgoubanjia(self):
  starturlhttp:www。goubanjia。comfreegngnindex。shtml
  htmlgetpage(starturl)
  ifhtml:
  docpq(html)
  tdsdoc(td。ip)。items()
  fortdintds:
  td。find(p)。remove()
  yieldtd。text()。replace(,)
  ifnamemain:
  二生三:实例化ProxyGetter
  crawlerProxyGetter()
  print(crawler。CrawlName)
  三生万物
  forsitelabelinrange(crawler。CrawlFuncCount):
  sitecrawler。CrawlName〔sitelabel〕
  myProxiescrawler。getrawproxies(site)道生一:元类的new中,做了四件事:将crawl开头的类方法的名称推入ProxyGetter。CrawlName将crawl开头的类方法的本身推入ProxyGetter。CrawlFunc计算符合crawl开头的类方法个数删除所有符合crawl开头的类方法
  怎么样?是不是和之前创建ORM的mappings过程极为相似?一生二:类里面定义了使用pyquery抓取页面元素的方法
  分别从三个免费代理网站抓取了页面上显示的全部代理。
  如果对yield用法不熟悉,可以查看:
  廖雪峰的python教程:生成器二生三:创建实例对象crawler三生万物:遍历每一个CrawlFunc在ProxyGetter。CrawlName上面,获取可以抓取的的网址名。触发类方法ProxyGetter。getrawproxies(site)遍历ProxyGetter。CrawlFunc,如果方法名和网址名称相同的,则执行这一个方法把每个网址获取到的代理整合成数组输出。
  那么怎么利用批量代理,冲击别人的网站,套取别人的密码,狂发广告水贴,定时骚扰客户?呃!想啥呢!这些自己悟!如果悟不到,请听下回分解!年轻的造物主,创造世界的工具已经在你手上,请你将它的威力发挥到极致!
  请记住挥动工具的口诀:道生一,一生二,二生三,三生万物我是谁,我来自哪里,我要到哪里去Python元类再谈原文出处:TypingQuietly在Python中一切都是对象,类型也是对象;类比类型和实例的概念,类型也必然有自己的类型,十分合理。事实上,类型的类型其实就是术语元类型的意思,python里面所有类型的元类型都是type。默认情况下我们新建一个类,在不手动指定元类型的前提下,type会被指定为元类型,元类型能够控制类型的创建和初始化。一般情况下我们能够通过关键字class来定义一个新的自定义类型,但也能够通过type动态的生成一个新的类型,下面的两种实现方式等价:1234type(SomeKlass,(object,),{foo:2,bar:4})classSomeKlass(object):foo2bar4借助这个例子,我们还能顺便看一下一些关于默认元类type的信息:Python12345someobjectSomeKlass()someobject。classSomeKlass。class新定义一个类型,当类型被解析的时候(比如当作模块引入),元类会负责创建和初始化这个新的类型,背后的逻辑基本上包括:执行类的定义代码收集所有的属性和方法查找类的元类执行Metaclass(name,bases,propertydict),参数分别新建的类的名称,类的父类tuple,收集的属性字典类型创建完成执行初始化在上面描述的过程中,自定义指定元类,然后重写元类的new和init方法,因为在指定元类的情况下,除去收集信息的过程,类型的创建和初始化两个步骤:12MyKlassMyMeta。new(MyMeta,name,bases,dct)MyMeta。init(MyKlass,name,bases,dct)注意这里的表示方式是调用内部方法来表示的,一般来说在重写的new或者init方法的最后都会调用type相应的方法来完成最终的类型创建或初始化工作,这时候也可以使用super关键字动态绑定,或者通过dict属性字典访问是一样的:12super(MyMeta,meta)。new(meta,name,bases,dct)type。new(meta,name,bases,dct)对于init这样的method来说还可以这样调用:1type。dict〔init〕。get(cls)(name,bases,dct)插个题外话,这三种方式的使用其实涉及到python的描述符,使用super和get的时候会进行类型或者实例的绑定,相比直接调用内部方法new和init,由于绑定了selfcls上下文,在传递参数的时候就只用指定除上下文之后的参数了。从网上搜罗了一个例子,将元类创建和初始化新的类型的过程完整展示出来了:1234567891011121314151617181920212223242526272829303132333435classMyMeta(type):defnew(meta,name,bases,dct):thisisnewdocoprintprintAllocatingmemoryforclass,nameprintmetaprintnameprintbasesprintdctreturnsuper(MyMeta,meta)。new(meta,name,bases,dct)returntype。new(meta,name,bases,dct)definit(cls,name,bases,dct):printprintInitializingclass,nameprintclsprintnameprintbasesprintdctsuper(MyMeta,cls)。init(name,bases,dct)type。init(cls,name,bases,dict)type。dict〔init〕。get(cls)(name,bases,dct)classMyKlass(object):metaclassMyMetadeffoo(self,param):passbarattr2mkMyKlass()创建和初始化的过程只会发生一此,也就是会是说new,init只会被执行一次,并且在执行完之前,类型MyKlass其实并没有生成,直接通过名称访问会报错:Python1234567891011AllocatingmemoryforclassMyKlassMyKlass(,){barattr:2,module:main,foo:,metaclass:}liInitializingclassMyKlassMyKlass(,){barattr:2,module:main,foo:,metaclass:}li在使用元类的过程中,有时候我们会重写他的call方法,这个方法的作用其实和new有点相似,只不过这次是控制类型实例对象的生成,因为这个方法恰好和生成类型实例时调用的构造方法吻合。关于重写这个call方法的使用场景,一个比较常用的就是实现单例模式:123456789101112131415161718192021222324252627282930classMetaSingleton(type):instanceNonedefcall(cls,args,kw):thisiscommentprintincallmethodifcls。instanceisNone:cls。instancesuper(MetaSingleton,cls)。call(args,kw)cls。instancetype。dict〔call〕。get(cls)(args,kw)cls。instancetype。call(cls,args,kw)printcls。instancereturncls。instanceclassFoo(object):metaclassMetaSingletondefinit(self,a,b):self。aaself。bbaFoo(1,2)bFoo(3,4)assertaisbprinta。a,a。b,b。a,b。bprinttype(Foo)printFoo。call例子很直接,call方法里面通过判断是否已经有初始化过的实例,没有就仿照正常未指定元类的情况下调用type的call方法(当然这里要么通过superbinding要么手动指定cls上下文),生成一个Foo的实例存储和返回出来。但是有一个注意点是,call方法每次初始化实例对象的时候都会被调用,这也和先前说的控制实例的生成一致:Python12345678(,,)liincallmethodmain。Fooobjectat0x00000000024BFA90incallmethodmain。Fooobjectat0x00000000024BFA901212还有一个需要在意的地方是最后的两行打印日志,Foo类型的元类是Metasingleton(调用new生成类型的时候默认指定元类是第一个参数);Foo的call方法是绑定了Foo(MetaSingleton的实例)实例的MetaSingleton的方法,也就是从另外的方面证实每次初始化Foo类型市里的时候,其实是在调用元类中重写的call方法。元类这个特性大多数情况下确实使用的不多并且需要稍微花点时间来理解,但是需要使用的时候会非常好用,往往能够实现很多优雅的功能,最典型的就是ORM的实现了,只不过会更加的复杂,且pythoning且学习吧,PEACE!参考资料中的链接里面有有几个实际的例子,本文也是学习其中的内容后配合一些其它一些使用经验以及碰到的问题理而成,希望对大家有用。ul

离任国足后,45岁李铁罕见亮相,新职务曝光,重回体制年薪10李铁,中国男足历史上最好的球员之一,如果没有上任中国男足主教练的经历,李铁在球迷心目中的口碑还是不错的,因为男足的这段经历,李铁也是被曝光了往日的种种,甚至连李铁私下的商业投资……你有企业年金吗?退休时这笔钱该怎么领统计显示,截至2021年底,全国有2875万名职工参加企业年金,企业年金投资运营规模达2。61万亿元。那么,你对企业年金了解吗?退休时,这笔钱该怎么领?换工作会影响年金领取吗?……恭喜!女排美女婚期确定,老公年薪800万,郎财女貌十分般配最近随着冬季奥运会落幕,为期半个月的狂欢也彻底结束,让不少体育迷们都有些不适应,其实在咱们国内体育圈还有不少比赛值得关注,比如女足,或者女排等等,都十分精彩。我们今天要说……美财政部宣布制裁中国4家药企和1名个人科技战略美财政部宣布制裁中国4家药企和1名个人据美财政部官网12月15消息,美国总统拜登签署新行政命令,对中国、巴西、哥伦比亚、墨西哥等4国的15家实体和10名个人……亚洲杯中国男排3比1中国台北,提前晋级八强,戴卿尧吃牌被罚下北京时间8月8日消息,2022年男排亚洲杯在泰国佛统展开第二日争夺,中国男排以3比1击败中国台北队,送给对手两连败,提前晋级八强。第二局16平后,双方球员发生争执,戴卿尧一黄一……世界杯哪天开幕?世界杯2022赛程表24VS体育讯北京时间10月20日,世界杯的揭幕战是在当地时间2022年的11月20日19点(北京时间11月21日0时),第二十二届世界杯是由卡塔尔举行的一届世界杯比赛,本届世……郭沫若所题大理两个字,风格突变,更加奔放,有造型感,别致郭沫若题写的大学校名不少,也有不少经典的题字,而他所题写的景点,非常多,在诸多景点题字中,大理两个字,最为经典,相对比其他题字作品来说,这两个字的题写,不仅风格上有所变化,而且……雍正后代的高知分子与农妇厮守73年,断了三代单传的皇族血脉一份感情重要的从来都不是物质的给予,而是精心准备的惊喜,是被人挂念的关心,是寸步不离的守候,是用尽一生陪伴。人生之幸,无非两种,一是饱餐二是被爱。在这个快餐年代,爱意随风四起,……姜至鹏今晚中超替补席大骂对手多人阻拦,对方教练集体看懵中超联赛第18轮今晚迎来了最后1场比赛,这就是长春亚泰主场与深圳队的比赛,这场比赛与中国女篮世界杯半决赛同时开打,因此,本就空场进行的比赛关注度也下降了不少。然而,比赛却踢出了……红得快,凉得更快,这12位风光不再的明星,各有各的难处俗话说事出无常必有妖,在娱乐圈这个行业里,有人兢兢业业打拼了几十年依旧无人问津。还有些人通过努力加上自己的运气在走过了漫长的奋斗岁月后终于闯出了自己的一片天地。这两……电脑鼠标的诞生作为一项旨在简化电脑操作的发明,鼠标最初的名字显得笨拙且冗长显示系统的XY位置指示器。而鼠标(mouse)这个形象而又简洁的名称是在它成为个人电脑的硬件配置时首次出现的。198……山东省科技最高奖获得者笪良龙张贵民,身上都有啥故事6月22日,山东省科技创新大会在济南召开,中国人民解放军海军潜艇学院笪良龙、鲁南制药集团股份有限公司张贵民获得2021年度山东省科学技术最高奖,他们身上有什么故事,请看大众日报……
86岁王德顺滑冰摔倒受伤!臀部下瘀血一大片,故意不上药坚持自近日,知名艺术家王德顺在社交平台上晒出了近期的运动受伤照片,画面中王德顺对着镜子拍出了自己大腿后侧的一大片淤青。王德顺本人在图片上写到,这是自己8月25日在滑冰场上不慎摔……秋分一年中最美的时节秋已过半燕将明日去,秋向此时分。今天是2022年9月23日,秋分。二十四节气中第16个节气,秋天的第4个节气。《春秋繁露阴阳出入上下篇》中记载:……每天赚2150万元,68岁老人是如何做到的?从泥瓦匠到日赚2150万元执笔李白兔12岁,他成为泥瓦匠,后来又干上木匠,整日与泥瓦木头为伍,这一干就是11年,直到23岁,他终于看到改变命运的机会,他决心改变。……戴资颖逆转,陈雨菲速胜!首局失4局点,梁王20赢中国德比2022日本羽毛球公开赛super750,男双助阵,国羽再度全力出击,首日国羽6胜3负收官,本日要决出全部16强席位。陈雨菲领衔女单5人组,与王祉怡、何冰娇同在上半区,后二者首……仅靠吃鸡蛋牛奶能满足蛋白质的摄入吗?蛋白在整个食物界的存在还是比较多样的。但总体来说就分为两大类,植物蛋白和动物蛋白。鸡蛋、牛肉、猪肉等肉类,就是动物蛋白的集聚地;而豆类制品,就是植物蛋白的集聚地。由……自驾新疆第十四天夏塔古道让人流连忘返夜宿75团招待所,因晚到,摸黑路去找晚餐,重庆小面招牌吸引了我们,香!牛肉不少。老板健谈,是这里有地的人,偶尔回四川老家。早上8点半后,开车10几分钟就到夏塔景区门口。9……贵州发现白菜山,山峰造型独特,屹立多年想搬都搬不了在中国,有许多旅游景点,每个景点都有不同的风景,给我们带来不同的魅力。尤其是现在,很多年轻人喜欢周游全国欣赏大自然的美景,但这些风景背后也隐藏着一些我们没有发现的风景。许多景观……清朝时期封禁长白山216年之久,邓小平让它又活了起来提起长白山,大家并不陌生,长白山的天池美景令无数游客心向往之,许多游客为了一睹长白山的风采,不远万里跑到东北打卡。虽然现在人们可以随意欣赏长白山的美景,但是清朝时期的人民却连靠……健了个假身?娱乐圈的空虚公子们,连80斤的女演员都抱不动《天龙八部》又又又又又翻拍了,执导的是王晶。王晶这两年可谓是凭借一己之力,推动金庸宇宙老龄化实绩的第一人!今年上映的两部电影《倚天屠龙记之九阳神功》与《倚天屠龙记之……越来越多游客不愿住民宿了?这3点原因很到位,希望你别吃亏导语:现在大家都已经不用担心吃饱喝足的问题了,因为几乎都能够实现。平时除了工作之外,大家最想要做的事情就是旅游了,这不仅仅非常有意义,还能够受益匪浅。一说到出门旅游,肯定……吃饭爱加醋的人,比不加醋的人更健康?真相令人意外醋是深受人们喜爱的调味品有些人深信醋可以软化血管、降血脂、抗癌真的有这么神奇吗?醋能软化血管?降血脂?抗癌?醋的食物成分通常为醋酸,钙、钾、……拍月全食最强的四款手机揭晓,iPhone14Pro只能排第五11月8日晚,2022年最后一次月全食上演,同时还伴随月掩天王星日月合璧红月亮等景象。这次持续86分钟的盛宴着实让网友们大饱眼福了,而下次像这次看这么长时间的观测条件则要等到2……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网