Android View 调用基础 通用属性基础 方法场景说明

server/2024/11/17 2:49:03/

调用基础

  • 一般常用的方法和属性说明一下情况
    • 1.坐标系
      • `tags" href="/GETX.html" title=getX>getX`和`getY` 相对于父布局
      • `getTranslationX`和`getTranslationY` 偏移量
      • `getRawX`和`getRawY` 相对于屏幕原点
    • 2.`tags" href="/MARGIN.html" title=margin>margin`
    • 3.`setTag` 存储额外的数据
  • 我都有哪些场景需要使用 简单记录下
    • 1.更新所有Viewgroup下的View

一般常用的方法和属性说明一下情况

1.坐标系

tags" href="/GETX.html" title=getX>getXgetY__6">tags" href="/GETX.html" title=getX>getXgetY 相对于父布局

  1. 含义

    • tags" href="/GETX.html" title=getX>getX和getY的定义:在Android的视图(View)系统中,tags" href="/GETX.html" title=getX>getXgetYView类的方法。tags" href="/GETX.html" title=getX>getX返回的是视图左上角相对于其直接触摸事件源(通常是父视图)的原始触摸点的x坐标,getY返回的是视图左上角相对于其直接触摸事件源的原始触摸点的y坐标。这些坐标是在触摸事件处理过程中,用于确定触摸位置与视图位置关系的重要属性。
    • 与其他坐标系统的区别:需要注意的是,tags" href="/GETX.html" title=getX>getXgetY与视图的布局坐标(lefttop等)有所不同。布局坐标是视图在布局容器(ViewGroup)中的位置,而tags" href="/GETX.html" title=getX>getXgetY是基于触摸事件的相对坐标,它们反映了触摸操作在视图上的具体位置,并且会随着触摸动作(如拖动)而动态变化。
  2. 使用场景

    • 触摸事件处理

      • 拖动视图:在实现可拖动视图(如自定义的悬浮窗或者可拖动的图标)时,tags" href="/GETX.html" title=getX>getXgetY可以用于跟踪用户手指在屏幕上的移动,从而相应地移动视图。例如,在一个自定义视图类中,可以重写onTouchEvent方法来实现拖动功能。
      • 代码示例:
      public class DraggableView extends View {private float initialX;private float initialY;public DraggableView(Context context, AttributeSet attrs) {super(context, attrs);}@Overridepublic boolean onTouchEvent(MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:initialX = tags" href="/GETX.html" title=getX>getX() - event.getRawX();initialY = getY() - event.getRawY();break;case MotionEvent.ACTION_MOVE:float newX = event.getRawX() + initialX;float newY = event.getRawY() + initialY;setX(newX);setY(newY);break;case MotionEvent.ACTION_UP:// 可以在这里添加拖动结束后的逻辑,比如吸附到某个位置等break;}return true;}
      }
      
      • 在这个例子中,当用户按下(ACTION_DOWN)时,记录下视图初始位置与触摸点的偏移量。在移动(ACTION_MOVE)阶段,根据触摸点的实时位置(event.getRawXevent.getRawY)和偏移量来计算视图的新位置,通过setXsetY设置视图位置,从而实现拖动效果。
    • 手势识别和交互

      • 判断触摸位置是否在视图特定区域内:用于判断用户的触摸操作是否在视图的某个特定区域(如按钮的有效点击区域、自定义视图中的功能区域)。例如,在一个包含多个可点击区域的自定义绘图视图中,可以通过tags" href="/GETX.html" title=getX>getXgetY来确定用户是否点击了特定的图形元素。
      • 代码示例:
      public class CustomDrawingView extends View {// 假设这里有一个绘制圆形的方法drawCircle,圆心坐标为(cx, cy),半径为rprivate void drawCircle(Canvas canvas, float cx, float cy, float r) {// 绘制圆形的代码}@Overridepublic boolean onTouchEvent(MotionEvent event) {float touchX = tags" href="/GETX.html" title=getX>getX();float touchY = getY();if (event.getAction() == MotionEvent.ACTION_DOWN) {// 检查是否点击在圆形区域内if ((touchX - cx) * (touchX - cx) + (touchY - cy) * (touchY - cy) <= r * r) {// 执行圆形区域被点击后的逻辑,比如触发动画或者执行某个功能performCircleClickAction();}}return true;}
      }
      
      • 在这里,通过tags" href="/GETX.html" title=getX>getXgetY获取触摸位置,与圆形的中心坐标和半径进行比较,判断触摸点是否在圆形内部,从而实现对特定区域触摸事件的识别和相应的逻辑处理。

getTranslationXgetTranslationY 偏移量

  1. 含义

    • 定义:在Android视图系统中,getTranslationXgetTranslationY是用于获取视图在x轴和y轴方向上的平移量的方法。这些平移量是在视图的原始布局位置基础上进行的额外偏移,它们可以通过代码动态地设置,用于实现视图的动画效果、位置微调等功能。
    • 与布局位置的关系:视图的最终显示位置是由其原始布局位置(由布局参数确定的lefttop等属性)加上平移量(translationXtranslationY)来确定的。例如,一个视图的原始left属性为100px,translationX为20px,那么它实际显示的x轴位置是120px。
  2. 用途和场景

    • 动画效果实现
      • 平移动画:可以通过动态改变translationXtranslationY的值来创建视图的平移动画效果。例如,使用属性动画(ValueAnimator)来在一段时间内平滑地移动视图。
      • 代码示例:
      public class MainActivity extends AppCompatActivity {private View viewToAnimate;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);viewToAnimate = findViewById(R.id.view_to_animate);// 创建一个属性动画,在1秒内将视图在x轴方向平移100pxValueAnimator animator = ValueAnimator.ofFloat(0f, 100f);animator.setDuration(1000);animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {@Overridepublic void onAnimationUpdate(ValueAnimator animation) {float translationX = (float) animation.getAnimatedValue();viewToAnimate.setTranslationX(translationX);}});animator.start();}
      }
      
      • 在这个例子中,通过ValueAnimator来产生一个从0到100的浮点数序列,在动画更新监听器中,获取当前动画值并将其设置为视图的translationX,从而实现视图在x轴方向的平移动画。通过getTranslationX,可以在动画过程中获取视图当前的平移位置,用于其他逻辑判断或者与其他视图的交互。
    • 位置微调与布局补偿
      • 视图对齐和间距调整:在一些复杂的布局中,当需要对视图的位置进行微调,以实现更精确的对齐或者间距控制时,可以使用translationXtranslationY。例如,在一个相对布局(RelativeLayout)中,已经通过布局参数大致确定了视图的位置,但需要在某些情况下(如不同屏幕分辨率或者设备方向下)对视图之间的间距进行微调。
      • 代码示例:
      public class CustomRelativeLayout extends RelativeLayout {public CustomRelativeLayout(Context context, AttributeSet attrs) {super(context, attrs);}@Overrideprotected void onLayout(boolean changed, int l, int t, int r, int b) {super.onLayout(changed, l, t, r, b);// 假设需要微调某个子视图的位置View childView = findViewById(R.id.child_view);int offsetX = 10; // 假设x轴方向需要偏移10pxchildView.setTranslationX(offsetX);}
      }
      
      • 在这里,在onLayout方法中获取子视图,并通过设置translationX来对其位置进行微调,使子视图在布局基础上向右偏移10px。getTranslationX可以用于在后续的布局更新或者其他逻辑中获取这个微调后的位置信息,以确保布局的一致性和正确性。
    • 触摸事件和手势交互中的位置处理
      • 跟随手指移动并恢复位置:在触摸事件处理中,结合getTranslationXgetTranslationY可以实现一些特殊的交互效果。例如,当用户触摸并拖动视图时,视图可以跟随手指移动,并且在手指抬起后,视图可以根据一定的规则恢复到原始位置或者其他指定位置。
      • 代码示例:
      public class InteractiveView extends View {private float startTranslationX;private float startTranslationY;public InteractiveView(Context context, AttributeSet attrs) {super(context, attrs);}@Overridepublic boolean onTouchEvent(MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:startTranslationX = getTranslationX();startTranslationY = getTranslationY();break;case MotionEvent.ACTION_MOVE:float deltaX = event.getRawX() - getWidth() / 2;float deltaY = event.getRawY() - getHeight() / 2;setTranslationX(startTranslationX + deltaX);setTranslationY(startTranslationY + deltaY);break;case MotionEvent.ACTION_UP:// 恢复到原始位置setTranslationX(0);setTranslationY(0);break;}return true;}
      }
      
      • 在这个例子中,当用户按下(ACTION_DOWN)时,记录视图初始的平移量。在移动(ACTION_MOVE)过程中,根据手指位置的变化计算并设置新的平移量,使视图跟随手指移动。当手指抬起(ACTION_UP)时,将视图的平移量恢复为0,使视图回到原始位置。getTranslationXgetTranslationY在这个过程中用于获取和设置视图的平移位置,实现了触摸交互效果。

getRawXgetRawY 相对于屏幕原点

  1. 含义

    • 定义:在Android的触摸事件处理中,getRawXgetRawYMotionEvent类中的方法。getRawX返回的是触摸点相对于整个屏幕(包括系统状态栏等)的x轴坐标,getRawY返回的是触摸点相对于整个屏幕的y轴坐标。这两个坐标值提供了触摸事件在屏幕全局坐标系中的位置信息。
  2. 用途和场景

    • 实现绝对位置相关的操作

      • 全屏幕范围的触摸交互:在开发需要考虑整个屏幕范围触摸交互的功能时,getRawXgetRawY非常有用。例如,在实现一个可以在屏幕任何位置响应的全局手势操作(如从屏幕边缘滑动调出侧边栏)或者全局悬浮窗的拖放操作时,需要使用这些坐标来获取触摸点在屏幕上的真实位置。
      • 代码示例:
      public class GlobalGestureView extends View {private float initialRawX;private float initialRawY;public GlobalGestureView(Context context, AttributeSet attrs) {super(context, attrs);}@Overridepublic boolean onTouchEvent(MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:initialRawX = event.getRawX();initialRawY = event.getRawY();break;case MotionEvent.ACTION_MOVE:float deltaRawX = event.getRawX() - initialRawX;float deltaRawY = event.getRawY() - initialRawY;// 根据触摸点在屏幕上的绝对移动距离来执行操作,比如移动悬浮窗moveFloatingWindow(deltaRawX, deltaRawY);break;case MotionEvent.ACTION_UP:// 触摸结束后的操作,比如判断是否满足手势条件if (checkGesture(event.getRawX(), event.getRawY())) {performGestureAction();}break;}return true;}
      }
      
      • 在这个例子中,onTouchEvent方法通过getRawXgetRawY获取触摸点在屏幕上的绝对位置。在ACTION_DOWN阶段记录初始位置,在ACTION_MOVE阶段计算触摸点的绝对移动距离来移动悬浮窗,在ACTION_UP阶段根据最终的绝对位置判断是否满足某个手势条件,从而执行相应的手势操作。
    • 跨视图边界的交互计算

      • 计算多个视图之间的触摸路径:当一个触摸事件涉及多个视图或者需要跨越视图边界进行交互计算时,getRawXgetRawY能够提供统一的屏幕坐标系来准确描述触摸路径。例如,在一个包含多个可拖动子视图的容器视图中,需要计算从一个子视图拖动到另一个子视图的完整触摸路径。
      • 代码示例:
      public class MultiViewContainer extends ViewGroup {public MultiViewContainer(Context context, AttributeSet attrs) {super(context, attrs);}@Overrideprotected void onLayout(boolean changed, int l, int t, int r, int b) {// 布局子视图的代码}@Overridepublic boolean onTouchEvent(MotionEvent event) {int action = event.getAction();switch (action) {case MotionEvent.ACTION_DOWN:// 找到被触摸的子视图View touchedView = findTouchedView(event.getRawX(), event.getRawY());if (touchedView!= null) {// 记录触摸开始的绝对位置initialRawX = event.getRawX();initialRawY = event.getRawY();}break;case MotionEvent.ACTION_MOVE:// 可以根据触摸点的绝对位置来更新子视图的位置或者执行其他跨视图的交互逻辑updateViewsBasedOnRawPosition(event.getRawX(), event.getRawY());break;case MotionEvent.ACTION_UP:// 确定触摸结束的绝对位置,判断是否完成了跨视图的交互,比如将一个子视图拖到另一个位置endTouchInteraction(event.getRawX(), event.getRawY());break;}return true;}
      }
      
      • 在这个ViewGroup示例中,通过getRawXgetRawYonTouchEvent方法中处理触摸事件。在ACTION_DOWN时找到被触摸的子视图并记录触摸开始的绝对位置,在ACTION_MOVE时根据触摸点的绝对位置更新子视图或者执行跨视图交互逻辑,在ACTION_UP时根据触摸结束的绝对位置判断是否完成了跨视图的交互,如拖放操作。这种方式能够准确地处理跨越不同子视图边界的触摸交互,因为getRawXgetRawY提供的是基于整个屏幕的统一坐标。

tags" href="/MARGIN.html" title=margin>margin_240">2.tags" href="/MARGIN.html" title=margin>margin

  1. View的tags" href="/MARGIN.html" title=margin>margin属性说明

    • leftMargin、topMargin、rightMargin、bottomMargin
      • 这四个属性分别用于设置视图(View)相对于父视图(ViewGroup)的左、上、右、下边缘的外边距。例如,leftMargin定义了视图左边与父视图左边之间的距离,topMargin定义了视图上边与父视图上边之间的距离。这些外边距决定了视图在父视图中的位置,通过调整它们可以控制视图之间的间距。
    • startMargin和endMargin
      • 这两个属性是为了支持布局方向(layoutDirection)而引入的。在从左到右(LTR)的布局方向下,startMargin等同于leftMarginendMargin等同于rightMargin。然而,在从右到左(RTL)的布局方向下,startMargin代表视图右边与父视图右边的距离,endMargin代表视图左边与父视图左边的距离。这使得布局在不同语言和阅读习惯(如阿拉伯语等从右到左的语言)下能够正确地显示视图的位置。
  2. 动态更新tags" href="/MARGIN.html" title=margin>margin的方法

    • 使用LayoutParams(适用于ViewGroup的子视图)
      • 获取当前的LayoutParams:首先需要获取视图当前的布局参数(LayoutParams)。对于大多数ViewGroup的子视图,可以通过getLayoutParams方法来获取。例如,对于一个在LinearLayout中的视图:
      LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) view.getLayoutParams();
      
      • 更新tags" href="/MARGIN.html" title=margin>margin属性:获取布局参数后,可以修改其中的外边距属性。例如,要增加视图的左边距:
      layoutParams.leftMargin += 10;
      
      • 应用更新后的LayoutParams:最后,将更新后的布局参数重新设置给视图,使外边距的改变生效:
      view.setLayoutParams(layoutParams);
      
    • 使用MarginLayoutParams(更通用的方式)
      • 获取MarginLayoutParams:如果不确定视图所在的ViewGroup类型,或者想要更通用的方式来更新外边距,可以使用MarginLayoutParams。首先,需要根据视图的父视图类型来获取正确的MarginLayoutParams。如果父视图是ViewGroup的子类,可以通过以下方式获取:
      ViewGroup.MarginLayoutParams tags" href="/MARGIN.html" title=margin>marginLayoutParams;
      if (view.getParent() instanceof ViewGroup) {tags" href="/MARGIN.html" title=margin>marginLayoutParams = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
      }
      
      • 修改tags" href="/MARGIN.html" title=margin>margin属性:和前面一样,可以修改外边距属性。例如,要同时更新上下外边距:
      tags" href="/MARGIN.html" title=margin>marginLayoutParams.topMargin = 20;
      tags" href="/MARGIN.html" title=margin>marginLayoutParams.bottomMargin = 20;
      
      • 重新应用布局参数:将更新后的布局参数设置回视图:
      view.setLayoutParams(tags" href="/MARGIN.html" title=margin>marginLayoutParams);
      
    • 注意事项
      • 不同的ViewGroup可能对布局参数有不同的要求和限制。例如,RelativeLayout的布局参数(RelativeLayout.LayoutParams)可能会有一些与相对位置相关的属性,在更新外边距时需要考虑这些因素,以免影响其他布局属性。
      • 在动态更新外边距时,可能会触发视图的重新布局(requestLayout)。这是因为外边距的改变会影响视图在父视图中的位置和大小(间接影响布局),所以需要注意性能问题,避免在不必要的时候频繁更新外边距。

3.setTag 存储额外的数据

  1. 用途

    • 存储视图相关的额外数据setTag方法主要用于在视图(View)对象中存储额外的数据。这个数据可以是任何类型的对象,例如一个整数、字符串、自定义的数据结构或者业务对象等。通过给视图设置标签(tag),可以方便地在后续的代码中(特别是在处理视图的事件回调或者遍历视图层次结构时)获取这些关联的数据,而不需要使用额外的变量或者复杂的查找机制来跟踪这些与视图相关的数据。
    • 辅助视图的识别和操作:它可以作为一种简单的标识符来区分不同的视图或者同一类型视图的不同状态。例如,在一个列表视图(RecyclerViewListView)中,可以为每个列表项视图设置一个唯一的标签来表示该项的内容类型、优先级或者其他自定义属性,从而在处理列表项的点击事件或者其他交互操作时,能够快速地根据标签来执行相应的逻辑。
  2. 使用场景

    • 在列表视图中存储数据相关信息

      • RecyclerView或ListView:在RecyclerView的适配器(Adapter)中,当创建视图持有者(ViewHolder)时,可以使用setTag来存储与列表项相关的数据。例如,在一个新闻列表应用中,每个新闻列表项包含标题、内容摘要、发布时间等信息。
      • 代码示例:
      public class NewsAdapter extends RecyclerView.Adapter<NewsAdapter.NewsViewHolder> {private List<NewsArticle> newsArticles;public NewsAdapter(List<NewsArticle> newsArticles) {this.newsArticles = newsArticles;}@Overridepublic NewsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.news_item_layout, parent, false);return new NewsViewHolder(view);}@Overridepublic void onBindViewHolder(NewsViewHolder holder, int position) {NewsArticle article = newsArticles.get(position);holder.titleTextView.setText(article.getTitle());holder.summaryTextView.setText(article.getSummary());// 将新闻文章对象设置为视图的标签holder.itemView.setTag(article);}class NewsViewHolder extends RecyclerView.ViewHolder {TextView titleTextView;TextView summaryTextView;NewsViewHolder(View itemView) {super(itemView);titleTextView = itemView.findViewById(R.id.titleTextView);summaryTextView = itemView.findViewById(R.id.summaryTextView);}}
      }
      
      • 在这个例子中,在onBindViewHolder方法中,将NewsArticle对象设置为列表项视图的标签。这样,在处理列表项的点击事件时,可以通过getTag方法获取对应的新闻文章对象,进而获取文章的详细内容并进行展示或者其他操作。
    • 在视图层次结构中传递数据和状态

      • 复杂布局中的视图交互:在一个包含多个嵌套视图的复杂布局中,当从一个视图触发事件,需要将相关的数据传递给其他相关视图时,可以使用setTag。例如,在一个包含标题视图、内容视图和操作按钮的布局中,当点击操作按钮时,需要根据标题视图中的某些信息来更新内容视图。
      • 代码示例:
      public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);View titleView = findViewById(R.id.title_view);View contentView = findViewById(R.id.content_view);Button actionButton = findViewById(R.id.action_button);// 设置标题视图的标签为一个包含标题信息的字符串titleView.setTag("初始标题");actionButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String title = (String) titleView.getTag();// 根据标题信息更新内容视图contentView.setTag(title + " - 已更新");// 可以在这里进行其他更新内容视图显示的操作,比如更新文本等}});}
      }
      
      • 在这个例子中,通过setTag将标题信息存储在标题视图中。当点击操作按钮时,获取标题视图的标签信息,并将更新后的信息存储在内容视图的标签中。这样就实现了在视图层次结构中的数据传递,并且可以根据这些标签信息来执行相应的视图更新操作。
    • 临时存储视图的状态或配置信息

      • 视图的复用和状态恢复:在一些需要复用视图的场景中,比如在视图的缓存机制或者配置改变(如屏幕旋转)后的状态恢复场景下,可以使用setTag来存储视图的当前状态信息。例如,在一个包含可编辑文本框的自定义视图中,当屏幕旋转时,需要保存文本框中的输入内容。
      • 代码示例:
      public class CustomEditText extends EditText {public CustomEditText(Context context, AttributeSet attrs) {super(context, attrs);}@Overrideprotected void onSaveInstanceState(Parcelable state) {Bundle bundle = new Bundle();// 将文本框中的文本内容存储为标签bundle.putString("text_content", getText().toString());bundle.putParcelable("super_state", state);state = bundle;super.onSaveInstanceState(state);}@Overrideprotected void onRestoreInstanceState(Parcelable state) {if (state instanceof Bundle) {Bundle bundle = (Bundle) state;// 从标签中获取文本内容并设置给文本框String textContent = bundle.getString("text_content");setText(textContent);state = bundle.getParcelable("super_state");}super.onRestoreInstanceState(state);}
      }
      
      • 在这个例子中,在onSaveInstanceState方法中,将文本框中的文本内容存储在一个Bundle中,并将其作为视图的状态(通过setTag的类似原理,在内部实现)保存起来。在onRestoreInstanceState方法中,从保存的状态中获取文本内容并设置回文本框,从而实现了视图状态在配置改变后的恢复。虽然这不是直接使用setTag方法,但原理类似,都是用于存储和恢复视图相关的数据。

我都有哪些场景需要使用 简单记录下

1.更新所有Viewgroup下的View

public void traverseViewGroup(ViewGroup viewGroup) {int childCount = viewGroup.getChildCount();for (int i = 0; i < childCount; i++) {View childView = viewGroup.getChildAt(i);if (childView instanceof ViewGroup) {traverseViewGroup((ViewGroup) childView);} else {// 处理子 Viewif (childView instanceof TextView) {// 如果是 TextView,执行特定操作TextView textView = (TextView) childView;textView.setText("Hello");}}}
}

http://www.ppmy.cn/server/142537.html

相关文章

使用概率表示和原型学习的有效半监督医学图像分割|文献速递-基于深度学习的病灶分割与数据超分辨率

Title 题目 Effective Semi-Supervised Medical ImageSegmentation with Probabilistic Representations and Prototype Learning 使用概率表示和原型学习的有效半监督医学图像分割 01 文献速递介绍 尽管基于深度学习的方法在有监督的医学图像分割任务中取得了巨大成功&am…

Algen的跨链互操作性:增强区块链连接性

Algen的跨链互操作性&#xff1a;增强区块链连接性 自区块链技术问世以来&#xff0c;其去中心化特性和安全性备受关注。从加密货币到智能合约&#xff0c;以及各种去中心化应用&#xff08;DApps&#xff09;&#xff0c;区块链技术正在不断扩展其边界&#xff0c;展现出变革世…

10款高效音频剪辑工具,让声音编辑更上一层楼。

音频剪辑在音频&#xff0c;视频&#xff0c;广告制作&#xff0c;游戏开发&#xff0c;广播等领域中都有广泛的应用。通过音频剪辑&#xff0c;创作者可以通将不同的音频片段进行剪切、拼接、混音等操作&#xff0c;创作出风格各异的音乐作品。如果你也正在为音频创作而努力的…

深度学习:利用随机数据更快地测试一个新的模型在自己数据格式很复杂的时候

技巧&#xff1a; 比如下面一个新的模型deeponet&#xff0c;我自己的数据很复杂&#xff0c;这里在代码最后用用随机生成的数据&#xff0c;两分钟就完成了代码的测试成功。 import torch import torch.nn as nn import torch.optim as optim# 带偏置项的 DeepONet 结构&am…

python os.path.basename(获取路径中的文件名部分) 详解

os.path.basename 是 Python 的 os 模块中的一个函数&#xff0c;用于获取路径中的文件名部分。它会去掉路径中的目录部分&#xff0c;只返回最后的文件名或目录名。 以下是 os.path.basename 的详细解释和使用示例&#xff1a; 语法 os.path.basename(path) 参数 path&…

算法——二分查找(leetcode704)

对于二分查找而言,首先我们得到的查找数组必须是一个有序数组,接着通过数组的两端得到左指针和右指针继而得到中间指针指向数组中间元素,将中间元素与目标值比较如果大于目标值舍弃数组中间元素右边的一半将右指针重置为中间指针下标-1中间指针重置为左右指针下标之和除以2&…

K8S 查看pod节点的磁盘和内存使用情况

查看某个节点的磁盘使用率&#xff1a; kubectl exec -it pod名称 -n 命名空间 – df -h 查询所有节点的已使用内存&#xff1a; kubectl top pods --all-namespaces | grep itsm 查询某个节点的总内存&#xff0c; kubectl describe pod itsr-domain-59f4ff5854-hzb68 --nam…

面试时问到软件开发原则,我emo了

今天去一个小公司面试&#xff0c;面试官是公司的软件总监&#xff0c;眼镜老花到看笔记本电脑困难&#xff0c;用win7的IE打开leetcode网页半天打不开&#xff0c;公司的wifi连接不上&#xff0c;用自己手机热点&#xff0c;却在笔记本电脑上找不到。还是我用自己的手机做热点…