首页 文章 精选 留言 我的

精选列表

搜索[基础搭建],共10000篇文章
优秀的个人博客,低调大师

学习Python语言 基础语法:变量的基本使用

Python变量 程序是用来处理数据的,变量就是用来保存数据的,通过给数据定义一个名称来保证方便记忆和识别、使用这个数据。变量可以保存所有类型的数据。 Python变量的定义 在Python中,变量的定义可以不定义变量的类型,这与PHP一样。 同时,在使用变量前必须给变量赋值。(这与上述的观点一致,都没有数据,用啥呢?) 赋值的格式如下: 左边是变量名称,中间使用“=”号,右边为数据,基本可以记忆为“将右边的数据用左边的名称”替代。也可以多变量赋值,如:变量1=变量2=变量3=“数据”,如图: 在学习中有迷茫不知如何学习的朋友小编推荐一个学Python的学习q u n 227 -435- 450可以来了解一起进步一起学习!免费分享视频资料 变量赋值示例 一些Python已经定义的类型 Python有五个标准的数据类型: Numbers(数字) String(字符串) List(列表) Tuple(元组) Dictionary(字典) 其中Numbers支持int、float、long、complex类型 String为字符串,可以使用[头下标:尾下标]来获取子字符串,其中头下标可以从左到右,默认0开始,尾下标可以从右到左,默认-1开始,用来截取子字符串。如: 字符串示例 List为列表,用“[]”来标识,它可以包含多种类型,也可以像String的用法一样,使用[头下标:尾下标]来获取子列表,如: 列表示例 Tuple元组,用“()”来标识,更像是List的缩减版,一旦定义以后就不能编辑,只能读取,如: 元组示例 Dictionary字典,用“{}”来标识,类似于java的map,由索引“key”和值“value”组成,取值时也是由“key”定位取得“value”,如: 字典示例 关于数据类型的转换,可以通过转换函数进行转换,如:

优秀的个人博客,低调大师

kubernetes一些简单的基础知识

service:分布式集群架构的核心 service的几个特性: 唯一的名字 拥有一个虚拟IP和端口号 具有远程服务的 能力 映射到提供这种服务能力的一组容器上 集群管理 图片描述:k8s将急群众的机器划分为一个Master节点和一群工作节点(Node)。 Master节点上运行这kube-apiserver、kube-controller-manager和kube-scheduler进程,这些进程负责的功能有(都是自动完成的): 资源管理 Pod调度 弹性伸缩 安全控制 系统监控 纠错 资源管理 资源管理 Kubernetes API Server(kube-apiserver):提供了HTTP REST接口的关键服务进程,是Kubernates里所有资源的增删改查操作的唯一入口,也是集群控制的入口进程。 Kubernetes Controller Manager(kube-controller-manager):kubernetes中所有资源对象的自动化控制中心,可以理解为资源对象的大脑。 Kubernetes Scheduler(kube-scheduler):负责资源调度(Pod调度)的进程。 Node 图片解释:Node既可以是物理机也可以是虚拟机。每个Node节点都会呗Master分配一些工作负载,当某个Node宕机是,其他上的工作负载会被Master自动转移到其他节点上去。Node节点中运行这许多的Pod,每个Pod里运行这一个Pause容器和多个业务容器,其中这些业务容器共享Pause容器的网络栈和Volume挂在卷,方便业务容器之间的高效通信和数据交换。 Node中运行着kubelet、kube-proxy和Docker Engine进程,两个进程负责的功能有: 创建POD 启动POD 监控POD 重启POD 销毁POD 实现软件模式的负载均衡 kubelet:负责Pod对应的容器的创建,启动等任务,同时与Master节点密切协作,实现集群管理的基本功能。 kube-proxy:实现Kubernetes Service的通信与负载均衡的重要组件。 Docker Engine:Docker引擎,负责本机的容器创建和管理工作。 Pod Pod 运行在Node中,每个Pod里运行这一个Pause容器和多个业务容器,其中这些业务容器共享Pause容器的网络栈和Volume挂在卷,方便业务容器之间的高效通信和数据交换。 为什么Kubernetes会设计一个全新的Pod概念并且有这样特殊的组成结构? 以一组容器为单元的话,很难对整体简单的判断及有效的进行行动,而以不易死亡的Pause容器作为Pod的根容器,用它的状态来代表整个容器组的状态,从而简化判断和行动。 业务容器共享Pause容器的网络栈和Volume挂在卷,方便业务容器之间的高效通信和数据交换。 kuberbetes要求底层网络支持集群内部任意两个Pod之间的TCP/IP直接通信,才用虚拟二层技术实现。 Pod有两种类型:普通的Pod和静态的Pod 静态Pod不存放在Kuberbetes的etcd里面,而是放在某个具体的Node上的一个具体的文件中,并且只有在此Node上启动运行 普通Pod一旦被创建,就会放入到etcd中存储,随后会被Kubernetes Master调度到某个具体的Node上并进行绑定,随后该Pod被对应的Node上的kubelet进程实例化成一组相关的Docker容器并启动起来。 扩容和服务升级 kubernetes集群中,只要为需要扩容的Service关联的Podcast创建一个RC即可,RC(Replication Controller)包括三个关键的信息: 目标Pod的定义 目标Pod需要运行的副本数量(Replicas) 要监控的目标Pod的标签(label) 创建好RC之后,kubernetes会通过RC中定义的Label筛选出对应的Pod实例并实时监控器状态和数量,如果实例少于定义的副本数量,则会根据RC定义的Pod模板来创建新的Pod,但后调度到合适的Node上运行。 本文转自SegmentFault-从Rancher 1.6到2.0:术语及概念变化对比

优秀的个人博客,低调大师

Python基础练习二超市存包柜模拟

题目描述 模拟超市存包柜的存放物品和取出物品操作,存放物品时选择空储物格,然后分配密码即为存放完成;取出物品时,输入对应的密码,打开对应的箱门即为取出物品 题目分析 1.题目练习的是自定义方法,比如存放物品方法,取出物品方法,检测是否有空储物格的方法等2.练习使用while和if....elif的用法 代码 为了练习一下类的使用,所以在这里定义了一个类,默认设定有100个储物格,用列表表示每个格子;格子里面的数据为0时表示空格子,use的时候,存入随机生成的密码 #!/usr/bin/python3 #-*- coding:UTF-8 -*- import random ''' 模拟超市存包柜程序,设置100个箱子,存满即止 每次存放物品之前从第一个箱子检测是否为空,遇到第一个为空的即可存入物品 ''' class Locker(object): def __init__(self): self.cell_num = 100 self.use = 0 self.surplus = self.cell_num self.cell = [0]*100 def show_cell_detail(self): print(f"总存包格数:总{self.cell_num}格,已用{self.use}格,剩余{self.surplus}格") def get_surplus(self): return self.surplus def check_cell(self): for i in range(0,100): #print(len(self.cell)) if self.cell[i] == 0: return i return -1 #存放物品方法,先使用检查方法检查是否有空箱子,有空箱子即开门存物 def save_goods(self): self.passwd = random.randint(10000,99999) self.cell_save = self.check_cell() self.cell[self.cell_save] = self.passwd self.use += 1 self.surplus = self.cell_num - self.use print(f"{self.cell_save+1}号箱门已打开,您的密码是{self.cell[self.cell_save]}") #取出物品方法,输入密码,取出物品 def get_goods_out(self,password): for i in range(100): if self.cell[i] == password: self.cell[i] = 0 self.surplus += 1 self.use = self.cell_num - self.surplus return i return -1 lock = Locker() while True: lock.show_cell_detail() surplus = lock.get_surplus() operation = input("1-存放\n2-取出\n0-退出\n请输入对应操作:") if operation == "1": if surplus != 0: lock.save_goods() else: print("箱已存满,谢谢使用") break elif operation == "2": while True: password = input("请输入取件密码:") password = int(password) out_result = lock.get_goods_out(password) if out_result != -1: print(f"{out_result+1}号箱门已打开,密码已失效,请取出物品,关好箱门") break else: print("密码错误,请核对后再输入!") elif operation == "0": print("欢迎再次光临!") break else: print("请输入正确的操作!") continue 题后思考 1、可以将某些变量私有化2、多加入一些防越界判断,减少程序出错的概率3、需要增加密码重复检测,否则程序会出错,相同密码时,可能会取到错误的格子4、可以把格子序号整合进去密码中,这样就可以更快速的找到对应的箱子,并且可以练习字符串的用法

优秀的个人博客,低调大师

Android面试题库 - Service(一) - 基础

Service应用场景、与Thread的区别 Service是什么 Service是一个一种在后台长时间执行操作而有没有用户界面的应用组件。 Service与Thread的区别 Thread 最小的运行单元,可以用来执行耗时操作 Service 运行在主线程,不能做耗时操作 ANR 时间20s Service的两种启动方式 两种启动方式说明 启动 当应用组件(如 Activity)通过调用 startService() 启动服务时,服务即处于“启动”状态。一旦启动,服务即可在后台无限期运行,即使启动服务的组件已被销毁也不受影响。 已启动的服务通常是执行单一操作,而且不会将结果返回给调用方。例如,它可能通过网络下载或上传文件。 操作完成后,服务会自行停止运行。 绑定 当应用组件通过调用 bindService() 绑定到服务时,服务即处于“绑定”状态。绑定服务提供了一个客户端-服务器接口,允许组件与服务进行交互、发送请求、获取结果,甚至是利用进程间通信 (IPC) 跨进程执行这些操作。 仅当与另一个应用组件绑定时,绑定服务才会运行。 多个组件可以同时绑定到该服务,但全部取消绑定后,该服务即会被销毁。虽然本文档是分开概括讨论这两种服务,但是您的服务可以同时以这两种方式运行,也就是说,它既可以是启动服务(以无限期运行),也允许绑定。问题只是在于您是否实现了一组回调方法:onStartCommand()(允许组件启动服务)和 onBind()(允许绑定服务)。 两种启动方式的生命周期走向 服务的生命周期 startService生命周期走向: onCreate onStartCommand onStop onDestory bindService生命周期走向: onCreate onBind unBindService onUnBind onDestory 服务保活 无法保证,只能尽量保活 Manifest中设置级别(优先级),process 提升为前台服务 监听系统广播进行唤醒 监听其他APP的广播 将 Service 设置为 START_STICKY,利用系统机制在 Service 挂掉后自动拉活(5次)

优秀的个人博客,低调大师

Android面试题库 - Fragment(一) - 基础

Fragment为什么成为第五大组件 Fragment为什么成为第五大组件 四大组件:Activity、Service、Broadcast Receiver、Content Provider Fragment具有生命周期,使用广泛 Fragment加载到Activity的两种方式 xml通过fragment标签引入的方式 code中动态添加 FragmentPagerAdapter和FragmentStatePagerAdapter FragmentPagerAdapter的destroyItem的时候并没有直接销毁item,只是分离了UI FragmentStatePagerAdapter是直接销毁了Fragment Fragment多的时候选择FragmentStatePagerAdapter,少的时候选择FragmentPagerAdapter Fragment的生命周期 Fragment生命周期 Activity生命周期对Fragment生命周期的影响 Framgnet之间的通信 Fragment通过getActivity获取到Activity Fragment实现接口,Activity通过接口来管理 两个Fragment之间通过广播来传输数据 使用事件总线传递数据 Framgnt管理器:FragmentManger 如何获取FragmentManger Activity 中通过getSupportFragmentManager获取 Fragment中通过getChildFragmentManager获取 常用方法 add 添加一个Fragment实例 remove 移除一个Fragment实例 replace 替换一个Fragment实例 ViewPager加载Fragment如何实现页面可见再加载数据 ViewPager是默认缓存1的pager,也就是默认加载隔壁的Fragment。而mOffscreenPageLimit这是默认为1的,且setOffscreenPageLimit传入的数据小于1也会默认赋值为1。以下是两种实现方式: 从ViewPaer 重写整个ViewPager,将mOffscreenPageLimit赋值为0 通过反射获取mOffscreenPageLimit的值,然后进行赋值 从Fragment 定义isCreate变量默认为false 在onCreate方法中赋值为true 重写setUserVisibleHint方法,代码如下 override fun setUserVisibleHint(isVisibleToUser: Boolean) { super.setUserVisibleHint(isVisibleToUser) if (isVisibleToUser && isCreate) { isCreate = false // todo you something } } ViewPager的mOffscreenPageLimit设置为mFragments的大小 需要注意:第0个Framgnet不能使用上面的方法,需要特殊处理,onCreate中判断Fragment的下标赋值isCreate的值 如何获得Fragment的实例 保留空构造方法,否则会在某些情况下抛出错误:make sure class name exists, is public, and has an empty constructor that is public 不要直接不要直接通过new的方式获取,应该使用:newInstance方式来获取,以下是kotlin示例: companion object { /** * 获取PartyBillHandledFragment的实例 */ fun newInstance(): PartyBillHandledFragment { val args = Bundle() val fragment = PartyBillHandledFragment() fragment.arguments = args return fragment } } startActivityForResult之坑 在Fragment中请勿使用getActivity().startActivityForResult(),这样Framgnet中的onActivityResult是接收不到回调,而是回调Activity的onActivityResult。 正确的应该是直接使用startActivityForResult()方法 requestCode请勿传-1

优秀的个人博客,低调大师

Android面试题库 - Activity(一) - 基础

Activity生命周期 什么是Activity 是一个应用组件,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。 Activity的4种状态 名称 解释 running Activity处于前台,与用户有交互的情况下,此时Activity不会被回收 paused Activity被一个透明的Activity遮罩住,此时处于paused状态,如果内存紧张,会被回收 stopped Activity被另外一个Activity完全覆盖,就会处于stopped状态,内存紧张的情况下会被虚拟机回收 killed Activity已经被系统回收了 Activity的生命周期 Activty的生命周期 Activity生命周期详解 Activity的四种启动场景 Activity 启动:Activity启动 -> onCreate ->onStart->onResume 返回桌面:onPause->onStop 桌面重新打开:onRestart->onStart->onResume 退出Activity :onPuase->onStop->onDestroy Activity的进程优先级 前台 处于与前台和用户有交互的,比如和Activity绑定的Service 可见 可见不可操作, 服务 service 后台 按Home返回桌面,进程切换至后台进程,根据内存情况回收 空 Android任务栈 后进先出 Activity启动模式 onNewIntent方法的调用时机 名称 解释 standard 标准模式 singleTop 栈顶复用 singleTask 任务栈单例 singleInstance 单任务栈模式 四种模式详讲 standard 标准模式,即每start一个Activity都会创建一个实例,也是平常最常使用的一种模式。 singleTop 栈顶复用模式,即start的Activity已经是在栈顶了,就会直接进行复用实例,此时在intent中传递的数据会在onNewIntent方法中回调。如果目标Activity不在栈顶,即创建一个新的实例。 其应用场景为一般的推送消息详情:即受到推送通知,用户进行点击的时候的目标Activity会设置为singleTop模式,方便复用。 singleTask 任务栈单例模式,即一个任务栈中只会存在一个这样的实例。当start目标实例时候,不存在改实例即创建一个新的实例,如果存在,则会移除掉该实例上面所有的实例,让自己处于栈顶,且回调onNewIntent方法。 其应用场景为少数情况下销毁Activity:设置MainActivity为singleTask模式,当重新启动时候,他会销毁在他之前的所有Activity实例。 singleInstance 单任务栈模式,即该Activity独享一个Activity,且只有一个实例。如果已经启动该实例,再次启动将会回调onNewIntent方法。 App的入口 既然Android是基于Java语言的,而Java有main方法,那么Android有吗?Android的主入口在哪里? 答案: 有Main方法,main方法在ActivityThread类中的第 6041行 main(String[] args) Scheme跳转协议 什么是Scheme跳转协议 scheme是一种页面内跳转协议,是一种非常好的实现机制,通过定义自己的scheme协议,可以非常方便的跳转到app的各个页面; 通过scheme协议,服务器可以定制化告诉app应该调换到哪个页面,可以冲通知栏消息定制化跳转页面,可以通过h5页面跳转到其他页面等。

优秀的个人博客,低调大师

Python基础系列-列表交集并集差集

版权声明:如需转载,请注明转载地址。 https://blog.csdn.net/oJohnny123/article/details/81979449 比如,现在有两个list类型: a = [1,2,3,4] b = [1,2,3] 一. 差集 很明显结果是[4],下面我们说一下具体方法。 ret_list = [item for item in a if item not in b] 还有一种方法 ret_list = list(set(a)^set(b)) 二. 并集 很明显结果是[1,2,3,4],下面是具体方法: ret_list = list(set(a).union(set(b))) 三. 交集 很明显结果是[1,2,3],下面是具体方法: ret_list = list((set(a).union(set(b)))^(set(a)^set(b)))

优秀的个人博客,低调大师

Python基础 | pandas.dataframe 专题使用指南

1.选取行名、列名、值 2.以标签(行、列的名字)为索引选择数据—— x.loc[行标签,列标签] 3.以位置(第几行、第几列)为索引选择数据—— x.iloc[行位置,列位置] 4.同时根据标签和位置选择数据——x.ix[行,列] 5.选择连续的多行多列——切片起点索引:终点索引 这种用法叫做一个切片,指从起点索引到终点索引。看实际用法就懂了。如果起点索引省略代表从头开始,终点索引省略代表直到最后,都省略就代表全部了。切片在.loc、.iloc、.ix三种方法中都可以应用 由上例可见,当以位置为索引时,切片是不包括终点的,是左闭右开的。即第1列到第3列不是写作0:2而是0:3。 6.选择不连续的某几行或某几列 备注:当以标签名选取不连续的某几行的时候在这个例子中如df.loc['2016-02-02','2016-02-04',:]这样写会出

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册