文章编号:785时间:2024-02-19人气:
图形渲染技术在安卓游戏开发中扮演着至关重要的角色,它直接决定了游戏的视觉效果和用户体验。随着移动设备性能的不断提升和多核处理器的普及,安卓游戏的图形要求也越来越高,对图形渲染技术的需求与日俱增。
安卓游戏开发中常用的图形渲染技术包括2D渲染和3D渲染。2D渲染主要用于制作简单的界面元素和游戏场景,而3D渲染则可以呈现更加逼真的画面效果,使游戏更具沉浸感。在安卓设备上,常用的图形渲染API包括OpenGL ES和Vulkan。其中,OpenGL ES是一个跨平台的图形库,适用于开发2D和3D游戏,而Vulkan则是一个更加底层的API,可以提供更高的性能和更好的效率。
随着VR和AR等新兴技术的快速发展,安卓游戏开发领域对图形渲染技术的需求也在不断增加。VR和AR游戏对图形性能和渲染效果有着更高的要求,需要更加先进的图形渲染技术来实现。因此,安卓游戏开发者需要不断学习和掌握最新的图形渲染技术,以保持竞争力。
图形渲染技术的不断发展也为安卓游戏开发带来了新的机遇与挑战。随着移动设备的硬件性能不断提升,安卓游戏可以实现更加复杂的画面效果和更流畅的动画表现。同时,图形渲染技术的提升也意味着开发成本和时间的增加,开发团队需要花费更多的精力来优化和调试游戏的图形性能。
图形渲染技术在安卓游戏开发中具有重要意义,它直接影响着游戏的视觉表现和用户体验。随着移动设备性能的不断提升和新技术的不断涌现,安卓游戏开发者需要不断学习和掌握最新的图形渲染技术,以应对日益增长的图形需求和市场竞争。
图形渲染是将计算机生成的图形或图像经过算法处理,显示在物理设备上或者保存成文件的过程。它可以使图像更加真实、精细、美观。图形渲染可以应用在各个领域,如游戏开发、影视特效、工业设计等。
图形渲染技术涵盖了很多方面,包括光线追踪、着色器、纹理映射等等。其中,光线追踪是一种非常重要的图形渲染技术,能够真实地模拟光线在环境中的传播和反射,实现真实的光照效果。着色器则是控制图形的颜色和亮度,纹理映射则可以将复杂纹理贴在三维图形上,增加图形的现实感。
现在,图形渲染技术已经得到了广泛应用,许多行业都需要使用图形渲染来展示产品或者模拟真实情况。比如,在建筑行业中,设计师可以使用图形渲染技术来展示建筑的效果,帮助客户更好地理解建筑的结构和外观。而在游戏开发中,图形渲染则是一个不可或缺的环节,只有通过图形渲染技术,游戏才能实现更加真实的效果,让玩家更加享受游戏的乐趣。
1、绘画中的渲染在绘画中,渲染就是用水墨或淡的色彩烘染物象,以增强艺术效果。 2、计算机中的渲染将三维场景中的模型,按照设定好的环境、灯光、材质及渲染参数。 二维投影成数字图像的过程。 3、CG行业中的渲染简单都来说就是把抽象的模型变成屏幕上可以显示的二维图像,有些大文件的渲染仅一帧画面就需要12小时甚至更长,《大圣归来》就是我国渲染农场renderbus渲染的作品。 4、写作中的渲染在写作学中,作为写作思维的基本原理,渲染就是对文章主题、立意的展开性表达,即通过思维的展开,生成思想、生成材料、生成结构、生成语言,从而达到对文章主题、立意的强化——加浓、加深、加厚,最后感动、说服、征服读者。 扩展资料:概述定义渲染这个术语被用作“艺术家或作家对于场景的渲染”。 另外渲染也用于描述“计算视频编辑文件中的效果以生成最终视频输出的过程”。 简介渲染是三维计算机图形学中的最重要的研究课题之一,并且在实践领域它与其它技术密切相关。 在图形流水线中,渲染是最后一项重要步骤,通过它得到模型与动画最终显示效果。 自从二十世纪七十年代以来,随着计算机图形的不断复杂化,渲染也越来越成为一项重要的技术。 应用渲染的应用领域有:计算机与视频游戏、模拟、电影或者电视特效以及可视化设计,每一种应用都是特性与技术的综合考虑。 作为产品来看,现在已经有各种不同的渲染工具产品,有些集成到更大的建模或者动画包中,有些是独立产品,有些是开放源代码的产品。 从内部来看,渲染工具都是根据各种学科理论,经过仔细设计的程序,其中有:光学、视觉感知、数学以及软件开发。 分类三维计算机图形的预渲染(pre-rendering/offline rendering)或者实时渲染(real-time rendering/online rendering)的速度都非常慢。 预渲染的计算强度很大,通常是用于电影制作;实时渲染经常用于三维游戏,通常依靠带有三维硬件加速器的显卡完成这个过程。
3d渲染工作做什么3D渲染是一种计算机图形学技术,它可以将三维模型转化为二维图像或动画。 在许多领域中,如电影制作、建筑设计、工业设计、游戏开发等,3D渲染被广泛应用。 3D渲染工作通常涉及以下几个方面:建模:在3D建模软件中创建3D模型,这些模型可以是人物、场景、产品或其他物体。 建模师必须有一定的艺术技能和空间想象力,以便将2D概念转化为3D模型。 材质与纹理:为3D模型添加材质和纹理,以使其看起来更真实。 这可以通过3D纹理软件完成,材质和纹理可以是木头、石头、金属、玻璃等材质。 灯光与渲染:在3D软件中添加光源,并确定场景的光照条件,这可以影响最终的渲染结果。 渲染师必须了解如何控制光照效果,并选择合适的渲染算法,以获得高质量的渲染结果。 后期制作:对渲染结果进行后期制作,可以使用图像处理软件进行调整、颜色校正、特效添加等操作,以使最终结果更加完美。 总的来说,3D渲染工作的目的是利用计算机技术创建出高质量的3D图像或动画,用于各种领域的实际应用。
对于Android开发者来说,我们或多或少有了解过Android图像显示的知识点,刚刚学习Android开发的人会知道,在Actvity的onCreate方法中设置我们的View后,再经过onMeasure,onLayout,onDraw的流程,界面就显示出来了;对Android比较熟悉的开发者会知道,onDraw流程分为软件绘制和硬件绘制两种模式,软绘是通过调用Skia来操作,硬绘是通过调用Opengl ES来操作;对Android非常熟悉的开发者会知道绘制出来的图形数据最终都通过GraphiBuffer内共享内存传递给SurfaceFlinger去做图层混合,图层混合完成后将图形数据送到帧缓冲区,于是,图形就在我们的屏幕显示出来了。
但我们所知道的Activity或者是应用App界面的显示,只属于Android图形显示的一部分。同样可以在Android系统上展示图像的WebView,Flutter,或者是通过Unity开发的3D游戏,他们的界面又是如何被绘制和显现出来的呢?他们和我们所熟悉的Acitvity的界面显示又有什么异同点呢?我们可以不借助Activity的setView或者InflateView机制来实现在屏幕上显示出我们想要的界面吗?Android系统显示界面的方式又和IOS,或者Windows等系统有什么区别呢?……
去探究这些问题,比仅仅知道Acitvity的界面是如何显示出来更加的有价值,因为想要回答这些问题,就需要我们真正的掌握Android图像显示的底层原理,当我们掌握了底层的显示原理后,我们会发现WebView,Flutter或者未来会出现的各种新的图形显示技术,原来都是大同小异。
我会花三篇文章的篇幅,去深入的讲解Android图形显示的原理,OpenGL ES和Skia的绘制图像的方式,他们如何使用,以及他们在Android中的使用场景,如开机动画,Activity界面的软件绘制和硬件绘制,以及Flutter的界面绘制。那么,我们开始对Android图像显示原理的探索吧。
在讲解Android图像的显示之前,我会先讲一下屏幕图像的显示原理,毕竟我们图像,最终都是在手机屏幕上显示出来的,了解这一块的知识会让我们更容易的理解Android在图像显示上的机制。
图像显示的完整过程,分为下面几个阶段:
图像数据→CPU→显卡驱动→显卡(GPU)→显存(帧缓冲)→显示器
我详细介绍一下这几个阶段:
实际上显卡驱动,显卡和显存,包括数模转换模块都是属于显卡的模块。但为了能能详细的讲解经历的步骤,这里做了拆分。
当显存中有数据后,显示器又是怎么根据显存里面的数据来进行界面的显示的呢?这里以LCD液晶屏为例,显卡会将显存里的数据,按照从左至右,从上到下的顺序同步到屏幕上的每一个像素晶体管,一个像素晶体管就代表了一个像素。
如果我们的屏幕分辨率是1080x1920像素,就表示有1080x1920个像素像素晶体管,每个橡素点的颜色越丰富,描述这个像素的数据就越大,比如单色,每个像素只需要1bit,16色时,只需要4bit,256色时,就需要一个字节。那么1080x1920的分辨率的屏幕下,如果要以256色显示,显卡至少需要1080x1920个字节,也就是2M的大小。
刚刚说了,屏幕上的像素数据是从左到右,从上到下进行同步的,当这个过程完成了,就表示一帧绘制完成了,于是会开始下一帧的绘制,大部分的显示屏都是以60HZ的频率在屏幕上绘制完一帧,也就是16ms,并且每次绘制新的一帧时,都会发出一个垂直同步信号(VSync)。我们已经知道,图像数据都是放在帧缓冲中的,如果帧缓冲的缓冲区只有一个,那么屏幕在绘制这一帧的时候,图像数据便没法放入帧缓冲中了,只能等待这一帧绘制完成,在这种情况下,会有很大了效率问题。所以为了解决这一问题,帧缓冲引入两个缓冲区,即 双缓冲机制 。双缓冲虽然能解决效率问题,但会引入一个新的问题。当屏幕这一帧还没绘制完成时,即屏幕内容刚显示一半时,GPU 将新的一帧内容提交到帧缓冲区并把两个缓冲区进行交换后,显卡的像素同步模块就会把新的一帧数据的下半段显示到屏幕上,造成画面撕裂现象。
为了解决撕裂问题,就需要在收到垂直同步的时候才将帧缓冲中的两个缓冲区进行交换。Android4.1黄油计划中有一个优化点,就是CPU和GPU都只有收到垂直同步的信号时,才会开始进行图像的绘制操作,以及缓冲区的交换工作。
我们已经了解了屏幕图像显示的原理了,那么接着开始对Android图像显示的学习。
从上一章已经知道,计算机渲染界面必须要有GPU和帧缓冲。对于Linux系统来说,用户进程是没法直接操作帧缓冲的,但我们想要显示图像就必须要操作帧缓冲,所以Linux系统设计了一个虚拟设备文件,来作为对帧缓冲的映射,通过对该文件的I/O读写,我们就可以实现读写屏操作。帧缓冲对应的设备文件于/dev/fb* ,*表示对多个显示设备的支持, 设备号从0到31,如/dev/fb0就表示第一块显示屏,/dev/fb1就表示第二块显示屏。对于Android系统来说,默认使用/dev/fb0这一个设帧缓冲作为主屏幕,也就是我们的手机屏幕。我们Android手机屏幕上显示的图像数据,都是存储在/dev/fb0里,早期AndroidStuio中的DDMS工具实现截屏的原理就是直接读取/dev/fb0设备文件。
我们知道了手机屏幕上的图形数据都存储在帧缓冲中,所以Android手机图像界面的原理就是将我们的图像数据写入到帧缓冲内。那么,写入到帧缓冲的图像数据是怎么生成的,又是怎样加工的呢?图形数据是怎样送到帧缓冲去的,中间经历了哪些步骤和过程呢?了解了这几个问题,我们就了解了Android图形渲染的原理,那么带着这几个疑问,接着往下看。
想要知道图像数据是怎么产生的,我们需要知道 图像生产者 有哪些,他们分别是如何生成图像的,想要知道图像数据是怎么被消费的,我们需要知道 图像消费者 有哪些,他们又分别是如何消费图像的,想要知道中间经历的步骤和过程,我们需要知道 图像缓冲区 有哪些,他们是如何被创建,如何分配存储空间,又是如何将数据从生产者传递到消费者的,图像显示是一个很经典的消费者生产者的模型,只有对这个模型各个模块的击破,了解他们之间的流动关系,我们才能找到一条更容易的路径去掌握Android图形显示原理。我们看看谷歌提供的官方的架构图是怎样描述这一模型的模块及关系的。
如图, 图像的生产者 主要有MediaPlayer,CameraPrevier,NDK,OpenGl ES。MediaPlayer和Camera Previer是通过直接读取图像源来生成图像数据,NDK(Skia),OpenGL ES是通过自身的绘制能力生产的图像数据; 图像的消费者 有SurfaceFlinger,OpenGL ES Apps,以及HAL中的Hardware Composer。OpenGl ES既可以是图像的生产者,也可以是图像的消费者,所以它也放在了图像消费模块中; 图像缓冲区 主要有Surface以及前面提到帧缓冲。
Android图像显示的原理,会仅仅围绕 图像的生产者 , 图像的消费者 , 图像缓冲区 来展开,在这一篇文章中,我们先看看Android系统中的图像消费者。
SurfaceFlinger是Android系统中最重要的一个图像消费者,Activity绘制的界面图像,都会传递到SurfaceFlinger来,SurfaceFlinger的作用主要是接收图像缓冲区数据,然后交给HWComposer或者OpenGL做合成,合成完成后,SurfaceFlinger会把最终的数据提交给帧缓冲。
那么SurfaceFlinger是如何接收图像缓冲区的数据的呢?我们需要先了解一下Layer(层)的概念,一个Layer包含了一个Surface,一个Surface对应了一块图形缓冲区,而一个界面是由多个Surface组成的,所以他们会一一对应到SurfaceFlinger的Layer中。SurfaceFlinger通过读取Layer中的缓冲数据,就相当于读取界面上Surface的图像数据。Layer本质上是 Surface和SurfaceControl的组合 ,Surface是图形生产者和图像消费之间传递数据的缓冲区,SurfaceControl是Surface的控制类。
前面在屏幕图像显示原理中讲到,为了防止图像的撕裂,Android系统会在收到VSync垂直同步时才会开始处理图像的绘制和合成工作,而Surfaceflinger作为一个图像的消费者,同样也是遵守这一规则,所以我们通过源码来看看SurfaceFlinger是如何在这一规则下,消费图像数据的。
SurfaceFlinger专门创建了一个EventThread线程用来接收VSync。EventThread通过Socket将VSync信号同步到EventQueue中,而EventQueue又通过回调的方式,将VSync信号同步到SurfaceFlinger内。我们看一下源码实现。
上面主要是SurfaceFlinger初始化接收VSYNC垂直同步信号的操作,主要有这几个过程:
经过上面几个步骤,我们接收VSync的初始化工作都准备好了,EventThread也开始运转了,接着看一下EventThread的运转函数threadLoop做的事情。
threadLoop主要是两件事情
mConditon又是怎么接收VSync的呢?我们来看一下
可以看到,mCondition的VSync信号实际是DispSyncSource通过onVSyncEvent回调传入的,但是DispSyncSource的VSync又是怎么接收的呢?在上面讲到的SurfaceFlinger的init函数,在创建EventThread的实现中,我们可以发现答案—— mPrimaryDispSync 。
DispSyncSource的构造方法传入了mPrimaryDispSync,mPrimaryDispSync实际是一个DispSyncThread线程,我们看看这个线程的threadLoop方法
DispSyncThread的threadLoop会通过mPeriod来判断是否进行阻塞或者进行VSync回调,那么mPeriod又是哪儿被设置的呢?这里又回到SurfaceFlinger了,我们可以发现在SurfaceFlinger的 resyncToHardwareVsync 函数中有对mPeriod的赋值。
我们已经知道了VSync信号来自于HWCompser,但SurfaceFlinger并不会一直监听VSync信号,监听VSync的线程大部分时间都是休眠状态,只有需要做合成工作时,才会监听VSync,这样即保证图像合成的操作能和VSync保持一致,也节省了性能。SurfaceFlinger提供了一些主动注册监听VSync的操作函数。
可以看到,只有当SurfaceFlinger调用 signalTransaction 或者 signalLayerUpdate 函数时,才会注册监听VSync信号。那么signalTransaction或者signalLayerUpdate什么时候被调用呢?它可以由图像的生产者通知调用,也可以由SurfaceFlinger根据自己的逻辑来判断是否调用。
现在假设App层已经生成了我们界面的图像数据,并调用了 signalTransaction 通知SurfaceFlinger注册监听VSync,于是VSync信号便会传递到了MessageQueue中了,我们接着看看MessageQueue又是怎么处理VSync的吧。
MessageQueue收到VSync信号后,最终回调到了SurfaceFlinger的 onMessageReceived 中,当SurfaceFlinger接收到VSync后,便开始以一个图像消费者的角色来处理图像数据了。我们接着看SurfaceFlinger是以什么样的方式消费图像数据的。
VSync信号最终被SurfaceFlinger的onMessageReceived函数中的INVALIDATE模块处理。
INVALIDATE的流程如下:
handleMessageTransaction的处理比较长,处理的事情也比较多,它主要做的事情有这些
handleMessageRefresh函数,便是SurfaceFlinger真正处理图层合成的地方,它主要下面五个步骤。
我会详细介绍每一个步骤的具体操作
合成前预处理会判断Layer是否发生变化,当Layer中有新的待处理的Buffer帧(mQueuedFrames>0),或者mSidebandStreamChanged发生了变化, 都表示Layer发生了变化,如果变化了,就调用signalLayerUpdate,注册下一次的VSync信号。如果Layer没有发生变化,便只会做这一次的合成工作,不会注册下一次VSync了。
重建Layer栈会遍历Layer,计算和存储每个Layer的脏区, 然后和当前的显示设备进行比较,看Layer的脏区域是否在显示设备的显示区域内,如果在显示区域内的话说明该layer是需要绘制的,则更新到显示设备的VisibleLayersSortedByZ列表中,等待被合成
rebuildLayerStacks中最重要的一步是 computeVisibleRegions ,也就是对Layer的变化区域和非透明区域的计算,为什么要对变化区域做计算呢?我们先看看SurfaceFlinger对界面显示区域的分类:
还是以这张图做例子,可以看到我们的状态栏是半透明的,所以它是一个opaqueRegion区域,微信界面和虚拟按键是完全不透明的,他是一个visibleRegion,除了这三个Layer外,还有一个我们看不到的Layer——壁纸,它被上方visibleRegion遮挡了,所以是coveredRegion
对这几个区域的概念清楚了,我们就可以去了解computeVisibleRegions中做的事情了,它主要是这几步操作:
着色器是计算机图形学中的一种程序,用于在图形渲染过程中对图像进行着色和渲染。
着色器可以控制光照、材质、纹理、阴影等图像效果,使得渲染出的图像更加逼真和细致。着色器通常由图形处理单元(GPU)执行,它们是在图形渲染管线的不同阶段运行的小型程序。着色器可以分为顶点着色器(Vertex Shader)和片元着色器(Fragment Shader)两种类型。
着色器替代了传统的固定渲染管线,可以实现3D图形学计算中的相关计算,由于其可编辑性,可以实现各种各样的图像效果而不用受显卡的固定渲染管线限制。着色器在游戏开发、电影特效、虚拟现实等领域都有广泛的应用,可以实现各种复杂的图像效果和视觉呈现。
常见的着色器分类:
1、顶点着色器(Vertex Shader):顶点着色器主要用于对模型的顶点进行变换和处理。它接收输入的顶点数据,如位置、法线、纹理坐标等,然后对这些数据进行计算和变换,最终输出变换后的顶点位置和其他属性。
2、片元着色器(Fragment Shader):片元着色器也称为像素着色器,用于对模型的每个像素进行处理。它接收顶点着色器传递过来的数据,如顶点位置、法线、纹理坐标等,然后根据这些数据进行光照计算、纹理采样、颜色计算等,最终确定每个像素的最终颜色和透明度。
3、几何着色器(Geometry Shader):几何着色器是在顶点着色器和片元着色器之间的一个可选阶段。它可以对几何图元(如点、线、三角形)进行处理和操作,例如生成新的几何图元、修改顶点属性等。几何着色器通常用于实现几何变换、粒子系统、法线计算等功能。
4、计算着色器(Compute Shader):计算着色器是一种独立于图形渲染管线的着色器类型。它可以在GPU上进行通用计算,而不仅仅局限于图形渲染。计算着色器通常用于并行计算任务,如物理模拟、图像处理、数据处理等。
以上内容参考:网络百科-着色器
安卓的软件应用的界面可以使用cpu或gpu渲染,包括桌面。 由于gpu处理图形比cpu好,所以gpu渲染应用的界面会更流畅,同时减轻cpu的负担。 gpu强制渲染就是hwa(hard wareacceleration硬件加速)的一种,能够得到更好的优化。 在安卓3.0前,安卓都没有强制gpu渲染,应用在运行前会多了一个检测,检查应用是否支持gpu加速hwa,然后采用应用默认的cpu渲染或gpu渲染的方式。 在3.0之后,安卓在开发者选项里增加了强制gpu渲染,开启Force GPU Rendering之后,系统不再检查软件是否支持HWA,一律使用GPU渲染界面,不仅减少检测hwa的环节,充分利用gpu,减轻cpu的负担,软件和桌面提高帧数,变得更流畅,但强制gpu也是有缺陷的。 第一是强制GPU加速功能会增加功耗,降低待机时间。 第二是,部分旧程序本身不支持gpu渲染,没有硬件加速hwa的就会出现崩溃。 比较老的程序因为SDK版本低不支持gpu加速,或者开发时默认不开启gpu渲染,遇上gpu强制渲染就会出现问题。 兼容4.0的新版软件总会进行GPU加速,与开不开这个选项无关。 打开“强制进行GPU渲染”后,不支持GPU加速的软件也强制GPU渲染,这有可能会造成程序无响应、死机等兼容性问题。 总之,强制gpu渲染会充分利用gpu,而不是游戏时才使用gpu,同时增加功耗,降低续航,不会影响手机使用寿命。
上一篇:steam免费喜1小小噩梦
内容声明:
1、本站收录的内容来源于大数据收集,版权归原网站所有!
2、本站收录的内容若侵害到您的利益,请联系我们进行删除处理!
3、本站不接受违法信息,如您发现违法内容,请联系我们进行举报处理!
4、本文地址:https://link.52hwl.com/article/785.html,复制请保留版权链接!
今年的中央经济工作会议,在内容上与以往很大不同的一点,是以大篇幅专门列出五个正确认识和把握。认识是廓清理论方向,把握则是部署实
2022-08-06 10:37:50
香港迎来回归二十五周年,在这大喜日子,各种庆祝活动渐次推向高潮。未来数日,将有特别版巴士、电车往来港九新界各地,悬挂国旗区旗的
2022-08-06 10:36:51
Android系统开发中的设计模式详解Android系统开发中的设计模式是程序员在开发Android应用时经常会遇到的重要话题,设计模式是一种通用的解决方案,可以帮助开发人员解决常见的软件设计问题,在Android开发中,设计模式可以帮助开发人员提高代码的可维护性、可扩展性和可重用性,在Android系统开发中,常用的设计模式包括但不...。
2024-02-18 23:14:24
哈尔滨冰雪大世界、中国雪乡景区等热门景点发布公告通知,因气象条件和景区承载力等原因,暂停相关运行服务,具体细节如下,1.哈尔滨冰雪大世界根据天气预报,2月13日将出现气温回升和大风天气,为保证游玩安全和体验感,以下项目暂停运行,雪花摩天轮因风速过大停止运行,超级冰滑梯滑行速度缓慢停止运行,暂停销售2月13日门票,2.松花江冰雪嘉年华于...。
2024-02-13 16:48:44
退位后的李渊日子有多难过,在唐朝的繁华背后,宫廷深处藏着一段不为人知的故事,这是关于一个昔日的皇帝和他的儿子,现任皇帝之间的故事,退位后的李渊,曾经手握天下,令亿万人臣服的天子,如今却在自己的宫殿中感受到了前所未有的孤寂和无助,他的日子,是否真的如外界想象中的那般轻松自在呢,李渊的儿子,李世民,作为继承了皇位的唐太宗,对帝国的治理有着...。
2024-02-13 16:26:21
根据最新数据显示,美股三大指数在收盘时表现不尽相同,道琼斯指数上涨了0.33%,这是今年第12次创下历史新高;纳斯达克指数下跌了0.30%,标准普尔500指数下跌了0.09%,大型科技股多数下跌,特斯拉跌幅超过2%,亚马逊和微软跌幅超过1%,苹果、谷歌和奈飞略微下跌;而英伟达略微上涨,在盘中市值一度超过亚马逊和谷歌母公司Alphabe...。
2024-02-13 14:56:23
根据FIBA官网最新发布的实力榜,中国女篮在2月13日的更新中下降了三位,排名降至第五,而美国女篮依然保持第一的位置,日本女篮则上升至第六,在之前的奥运资格赛中,中国女篮表现出色,取得了2胜1负的战绩,成功获得了巴黎奥运会的入场券,由于在一场大比分不敌法国的比赛中失利,中国女篮在实力榜上下滑了三个名次,[ChatGPTOpenAl创作...。
2024-02-13 14:21:50
根据日本时事通讯社的报道,日本自民党公布了一项调查结果,称有85名现任自民党国会议员存在未报告收取的政治献金情况,这一情况被称为黑金丑闻,去年11月,该党内部曝出了这一丑闻,据报道,多个自民党派系要求所属的国会议员出售政治筹款派对券,并设定销售指标,如果议员超过指标,多出的资金将以回扣的形式返还给他们,这些返还的资金将不会被列入派系的...。
2024-02-13 14:20:08
俄罗斯南乌拉尔铁路局12日通报称,当日发生了一起列车相撞事故,造成12节车厢脱轨,据南乌拉尔铁路局透露,当天下午6时48分,一列货物列车与一列路用列车在南乌拉尔铁路别尔佳乌什站相撞,导致货物列车12节车厢脱轨,幸好,事故未造成人员伤亡,也未对环境安全构成风险,事故发生后,铁路应急部门立即行动,调派了三列检修列车、250多名铁路工人和1...。
2024-02-13 13:54:13
Python爬虫入门教程,爬虫数据的归档与存储策略研究Python爬虫入门教程,爬虫数据的归档与存储策略研究随着互联网的迅速发展,爬虫技术在网络数据获取和分析中起到了关键作用,Python作为一门功能强大且易于学习的编程语言,成为了许多爬虫开发者的首选,本文将探讨爬虫数据的归档与存储策略,为初学者提供入门教程,一、爬虫数据的归档在进行...。
2024-02-13 10:01:25
Python爬虫入门教程,爬虫项目中的错误回滚与恢复策略研究Python爬虫入门教程,爬虫项目中的错误回滚与恢复策略研究引言随着互联网的快速发展,爬虫已经成为了获取大量数据的重要手段,在实践爬虫项目的过程中,我们经常会遇到各种错误和异常情况,这时候能够有效地进行错误回滚和恢复策略就显得尤为重要,本文将对Python爬虫项目中的错误回滚...。
2024-02-13 09:59:30
打开新华社APP-首页-下拉页面-右侧边幸运转盘-中的实物随机出口罩10个、莲花清咽抑菌喷剂 活动地址: https://h5.zhongguowangshi.com/h5/2021/choujiang/index.html#/ 活动时间:2021.7.30结束
2021-05-06 14:21:50