当前位置: 首页 > news >正文

Android 一体机研发之修改系统设置————屏幕亮度

在这里插入图片描述
Android 一体机研发之修改系统设置————屏幕亮度

Android 一体机研发之修改系统设置————声音

Android 一体机研发之修改系统设置————自动锁屏

前言

最近工作略微有点儿空闲,抽空给大家总结一下:近期一直搞得一体机app研发,适用于医疗渠道。

一体机找工厂定制了一下板子和系统,找他们fw后期app会以apk的形式封装到系统中,当然了开机logo也会封装进去。

在这版一体机,有一个可以更改系统设置的功能版块,记得之前总结过Android 调用系统设置,有兴趣的可以去看一下;这一篇将把部分功能做一个细分化讲解。

但是在调用系统设置的时候,有些系统功能让用户一看就和手机一样的功能,并且有些功能是我们不需要的,这里就需要我们自己去实现修改系统权限的功能

接下来,会给大家出几篇一体机研发之修改系统设置系列文章,欢迎我们共同学习进步!

屏幕亮度

修改系统屏幕亮度这种操作还是挺常见的,一般在多媒体开发中多少会涉及到。

从上图中虽然很难看出效果展示,但是大概都能猜到功能的具体实现,就是通过seekBar来控制亮度的百分比。

如果想实现修改屏幕亮度功能,这里涉及了一个高级隐私权限,需要用户在app设置页面手动授权

设计思路

  1. AndroidManifest设置权限;

  2. 获取系统屏幕亮度;

  3. 修改系统Settings 中屏幕亮度(注册监听屏幕亮度变化),影响所有页面和App;

    3.1 判断权限

    3.2 有则修改屏幕亮度

    3.3 无则引导用户授权

具体实现

AndroidManifest设置权限

	<!-- 修改系统设置 --><uses-permission android:name="android.permission.WRITE_SETTINGS" /><uses-permission android:name="android.permission.READ_CONTACTS" /><uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /><uses-permission android:name="android.permission.HARDWARE_TEST" />

获取系统屏幕亮度

  • Java
	/*** 获取app屏幕亮度** @param activity* @return*/public static int getScreenBrightness(Activity activity) {try {return Settings.System.getInt(activity.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);} catch (Settings.SettingNotFoundException e) {e.printStackTrace();}return 0;}
  • Kotlin
	/*** 获取系统屏幕亮度(0-255)*/private fun getScreenBrightness(): Int {try {return Settings.System.getInt(this.contentResolver, Settings.System.SCREEN_BRIGHTNESS)} catch (e: SettingNotFoundException) {e.printStackTrace()}return 0}

修改系统Settings 中屏幕亮度,影响所有页面和App

注册监听 系统屏幕亮度变化
  • Java
	private void registerContentObserver() {ContentResolver contentResolver = getContentResolver();if (contentResolver != null) {contentResolver.registerContentObserver(Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS),true,mBrightnessObserver);}}
  • Kotlin
	private fun registerContentObserver() {this.contentResolver?.registerContentObserver(Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS),true,mBrightnessObserver)}

监听系统亮度变化
  • Java
	private ContentObserver mBrightnessObserver = new ContentObserver(new Handler()) {public void onChange(boolean selfChange) {super.onChange(selfChange);ContentResolver contentResolver = getContentResolver();if (contentResolver != null) {mScreenBrightness = getScreenBrightness(BrightActivity.this);Log.e("监听亮度 >>>", "init: " + mScreenBrightness);updateNum(mScreenBrightness);setWindowBrightness(mScreenBrightness);}}};
  • Kotlin
	private val mBrightnessObserver = object : ContentObserver(Handler(Looper.getMainLooper())) {override fun onChange(selfChange: Boolean) {super.onChange(selfChange)try {this.contentResolver?.let {mScreenBrightness = Settings.System.getInt(it, Settings.System.SCREEN_BRIGHTNESS)updateNum(mScreenBrightness)setWindowBrightness(mScreenBrightness)}} catch (e: SettingNotFoundException) {e.printStackTrace()}}}

注销监听
  • Java
	protected void onDestroy() {super.onDestroy();ContentResolver contentResolver = getContentResolver();if (contentResolver != null) {contentResolver.unregisterContentObserver((ContentObserver) mBrightnessObserver);}}
  • Kotlin
	override fun onDestroy() {super.onDestroy()//注销监听this.contentResolver?.unregisterContentObserver(mBrightnessObserver)}

通过seekBar修改系统Settings 中屏幕亮度

  • Java
	brightBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {(api = Build.VERSION_CODES.M)public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {Log.e("动态屏幕亮度 >>>", "onProgressChanged: " + progress);mScreenBrightness = progress * ratio;if (Settings.System.canWrite(BrightActivity.this)) {setScreenBrightness(mScreenBrightness);updateNum(mScreenBrightness);} else {Toast.makeText(BrightActivity.this, "没有修改权限", Toast.LENGTH_SHORT).show();// 打开允许修改Setting 权限的界面Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri.parse("package:"+ getPackageName()));startActivityForResult(intent,mRequestCode);}}public void onStartTrackingTouch(SeekBar seekBar) {}public void onStopTrackingTouch(SeekBar seekBar) {}});
  • Kotlin
	seekBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {Log.i("onProgressChanged----", "" + progress)mScreenBrightness = progress * ratio//判断是否有修改系统设置权限if (Settings.System.canWrite(this)) {setScreenBrightness(mScreenBrightness)updateNum(mScreenBrightness)} else {Toast.makeText(this, "没有修改权限", Toast.LENGTH_SHORT).show()// 打开允许修改系统设置权限的页面val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri.parse("package:$packageName"))startActivityForResult(intent, mRequestCode)}}override fun onStartTrackingTouch(seekBar: SeekBar?) {}override fun onStopTrackingTouch(seekBar: SeekBar?) {}})

用户已授权,设置屏幕亮度

  • Java
 	/*** 设置系统屏幕亮度,影响所有页面和app* 注意:这种方式是需要手动权限的(android.permission.WRITE_SETTINGS)*/private final void setScreenBrightness(int brightness) {//先检测调节模式setScreenManualMode();//再设置Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, brightness);}private final void setScreenManualMode() {try {//获取当前系统亮度调节模式int mode = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE);//如果是自动,则改为手动if (mode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {Settings.System.putInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE,Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);}} catch (Settings.SettingNotFoundException var2) {var2.printStackTrace();}}
  • Kotlin
 	/*** 设置系统屏幕亮度,影响所有页面和app* 注意:这种方式是需要手动权限的(android.permission.WRITE_SETTINGS)*/private fun setScreenBrightness(brightness: Int) {try {//先检测调节模式setScreenManualMode()//再设置Settings.System.putInt(this.contentResolver, Settings.System.SCREEN_BRIGHTNESS, brightness)} catch (e: SettingNotFoundException) {e.printStackTrace()}}/*** 设置系统亮度调节模式(SCREEN_BRIGHTNESS_MODE)* SCREEN_BRIGHTNESS_MODE_MANUAL 手动调节* SCREEN_BRIGHTNESS_MODE_AUTOMATIC 自动调节*/private fun setScreenManualMode() {try {//获取当前系统亮度调节模式val mode = Settings.System.getInt(this.contentResolver, Settings.System.SCREEN_BRIGHTNESS_MODE)//如果是自动,则改为手动if (mode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {Settings.System.putInt(this.contentResolver,Settings.System.SCREEN_BRIGHTNESS_MODE,Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL)}} catch (e: SettingNotFoundException) {e.printStackTrace()}}

监听系统按键

	//监听系统按键public boolean onKeyDown(int keyCode, KeyEvent event) {switch (keyCode) {case KeyEvent.KEYCODE_VOLUME_DOWN:if (mScreenBrightness > ratio) {mScreenBrightness -= ratio;} else {mScreenBrightness = 1;}Log.e("Down >>>", "onKeyDown: " + mScreenBrightness);setWindowBrightness(mScreenBrightness);updateNum(mScreenBrightness);return true;case KeyEvent.KEYCODE_VOLUME_UP:if (mScreenBrightness < (255 - ratio)) {mScreenBrightness += ratio;} else {mScreenBrightness = 255;}Log.e("Up >>>", "onKeyDown: " + mScreenBrightness);setWindowBrightness(mScreenBrightness);updateNum(mScreenBrightness);return true;/* case KeyEvent.KEYCODE_VOLUME_MUTE:return true;*/}return super.onKeyDown(keyCode, event);}

完整操作

  • Java
/*** @author 拉莫帅* @date 2023/2/8* @address* @Desc 修改系统亮度*/
public class BrightActivity extends Activity {/*** 非系统签名应用,引导用户手动授权修改Settings 权限**/private int mRequestCode = 1;private SeekBar brightBar;//当前屏幕亮度private int mScreenBrightness = 0;//每次加减的比例private int ratio = 25;private ContentObserver mBrightnessObserver = new ContentObserver(new Handler()) {public void onChange(boolean selfChange) {super.onChange(selfChange);ContentResolver contentResolver = getContentResolver();if (contentResolver != null) {mScreenBrightness = getScreenBrightness(BrightActivity.this);Log.e("监听亮度 >>>", "init: " + mScreenBrightness);updateNum(mScreenBrightness);setWindowBrightness(mScreenBrightness);}}};(api = Build.VERSION_CODES.M)protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_bright);init();registerContentObserver();setListener();}private void init() {brightBar = findViewById(R.id.brightBar);ImageView back = findViewById(R.id.back);TextView title = findViewById(R.id.title);title.setText("亮度");//获取当前亮度mScreenBrightness = getScreenBrightness(BrightActivity.this);Log.e("当前亮度 >>>", "init: " + mScreenBrightness);updateNum(mScreenBrightness);back.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {finish();}});}private void registerContentObserver() {ContentResolver contentResolver = getContentResolver();if (contentResolver != null) {contentResolver.registerContentObserver(Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS),true,mBrightnessObserver);}}protected void onDestroy() {super.onDestroy();ContentResolver contentResolver = getContentResolver();if (contentResolver != null) {contentResolver.unregisterContentObserver((ContentObserver) mBrightnessObserver);}}private void setListener() {brightBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {(api = Build.VERSION_CODES.M)public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {Log.e("动态屏幕亮度 >>>", "onProgressChanged: " + progress);mScreenBrightness = progress * ratio;if (Settings.System.canWrite(BrightActivity.this)) {setScreenBrightness(mScreenBrightness);updateNum(mScreenBrightness);} else {Toast.makeText(BrightActivity.this, "没有修改权限", Toast.LENGTH_SHORT).show();// 打开允许修改Setting 权限的界面Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri.parse("package:"+ getPackageName()));startActivityForResult(intent,mRequestCode);}}public void onStartTrackingTouch(SeekBar seekBar) {}public void onStopTrackingTouch(SeekBar seekBar) {}});}(api = Build.VERSION_CODES.M)protected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (requestCode == mRequestCode) {if (Settings.System.canWrite((Context) BrightActivity.this)) {setScreenBrightness(mScreenBrightness);updateNum(mScreenBrightness);} else {Toast.makeText((Context) this, "您已拒绝修系统Setting的屏幕亮度权限", Toast.LENGTH_SHORT).show();}}}/*** 获取app屏幕亮度** @param activity* @return*/public static int getScreenBrightness(Activity activity) {try {return Settings.System.getInt(activity.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);} catch (Settings.SettingNotFoundException e) {e.printStackTrace();}return 0;}/*** 更新页面显示** @param mScreenBrightness*/private final void updateNum(int mScreenBrightness) {//四舍五入int i = (int) Math.floor(mScreenBrightness / ratio);brightBar.setProgress(i);}/*** 设置系统屏幕亮度,影响所有页面和app* 注意:这种方式是需要手动权限的(android.permission.WRITE_SETTINGS)*/private final void setScreenBrightness(int brightness) {//先检测调节模式setScreenManualMode();//再设置Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, brightness);}private final void setScreenManualMode() {try {//获取当前系统亮度调节模式int mode = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE);//如果是自动,则改为手动if (mode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {Settings.System.putInt(getContentResolver(),Settings.System.SCREEN_BRIGHTNESS_MODE,Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);}} catch (Settings.SettingNotFoundException var2) {var2.printStackTrace();}}/*** 设置当前应用屏幕亮度,只当前有效*/private final void setWindowBrightness(int brightness) {Window window = this.getWindow();WindowManager.LayoutParams lp = window.getAttributes();lp.screenBrightness = (float) brightness / 255.0F;window.setAttributes(lp);}//监听系统按键public boolean onKeyDown(int keyCode, KeyEvent event) {switch (keyCode) {case KeyEvent.KEYCODE_VOLUME_DOWN:if (mScreenBrightness > ratio) {mScreenBrightness -= ratio;} else {mScreenBrightness = 1;}Log.e("Down >>>", "onKeyDown: " + mScreenBrightness);setWindowBrightness(mScreenBrightness);updateNum(mScreenBrightness);return true;case KeyEvent.KEYCODE_VOLUME_UP:if (mScreenBrightness < (255 - ratio)) {mScreenBrightness += ratio;} else {mScreenBrightness = 255;}Log.e("Up >>>", "onKeyDown: " + mScreenBrightness);setWindowBrightness(mScreenBrightness);updateNum(mScreenBrightness);return true;/* case KeyEvent.KEYCODE_VOLUME_MUTE:return true;*/}return super.onKeyDown(keyCode, event);}
}
  • Kotlin
class BrightnessActivity : AppCompatActivity() {//当前屏幕亮度private var mScreenBrightness: Int = 0//每次加减的比例private var ratio: Int = 25private var mRequestCode = 1override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_brightness)init()registerContentObserver()setListener()}private fun init() {mScreenBrightness = getScreenBrightness()updateNum(mScreenBrightness)}/*** 注册监听 系统屏幕亮度变化*/private fun registerContentObserver() {this.contentResolver?.registerContentObserver(Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS),true,mBrightnessObserver)}/*** 监听系统亮度变化*/private val mBrightnessObserver = object : ContentObserver(Handler(Looper.getMainLooper())) {override fun onChange(selfChange: Boolean) {super.onChange(selfChange)try {this.contentResolver?.let {mScreenBrightness = Settings.System.getInt(it, Settings.System.SCREEN_BRIGHTNESS)updateNum(mScreenBrightness)setWindowBrightness(mScreenBrightness)}} catch (e: SettingNotFoundException) {e.printStackTrace()}}}override fun onDestroy() {super.onDestroy()//注销监听this.contentResolver?.unregisterContentObserver(mBrightnessObserver)}private fun setListener() {seekBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {Log.i("onProgressChanged----", "" + progress)mScreenBrightness = progress * ratio//判断是否有修改系统设置权限if (Settings.System.canWrite(this)) {setScreenBrightness(mScreenBrightness)updateNum(mScreenBrightness)} else {Toast.makeText(this, "没有修改权限", Toast.LENGTH_SHORT).show()// 打开允许修改系统设置权限的页面val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS, Uri.parse("package:$packageName"))startActivityForResult(intent, mRequestCode)}}override fun onStartTrackingTouch(seekBar: SeekBar?) {}override fun onStopTrackingTouch(seekBar: SeekBar?) {}})}/*** 处理返回结果*/override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {super.onActivityResult(requestCode, resultCode, data)if (requestCode == mRequestCode) {if (Settings.System.canWrite(this)) {setScreenBrightness(mScreenBrightness)updateNum(mScreenBrightness)} else {Toast.makeText(this, "拒绝了权限", Toast.LENGTH_SHORT).show()}}}/*** 更新页面显示*/private fun updateNum(mScreenBrightness: Int) {//转float 取四舍五入val i: Int = (mScreenBrightness / (ratio.toFloat())).roundToInt()tv_brightness.text = i.toString()seekBar.progress = i}/*** 获取系统屏幕亮度(0-255)*/private fun getScreenBrightness(): Int {try {return Settings.System.getInt(this.contentResolver, Settings.System.SCREEN_BRIGHTNESS)} catch (e: SettingNotFoundException) {e.printStackTrace()}return 0}/*** 设置系统屏幕亮度,影响所有页面和app* 注意:这种方式是需要手动权限的(android.permission.WRITE_SETTINGS)*/private fun setScreenBrightness(brightness: Int) {try {//先检测调节模式setScreenManualMode()//再设置Settings.System.putInt(this.contentResolver, Settings.System.SCREEN_BRIGHTNESS, brightness)} catch (e: SettingNotFoundException) {e.printStackTrace()}}/*** 设置系统亮度调节模式(SCREEN_BRIGHTNESS_MODE)* SCREEN_BRIGHTNESS_MODE_MANUAL 手动调节* SCREEN_BRIGHTNESS_MODE_AUTOMATIC 自动调节*/private fun setScreenManualMode() {try {//获取当前系统亮度调节模式val mode = Settings.System.getInt(this.contentResolver, Settings.System.SCREEN_BRIGHTNESS_MODE)//如果是自动,则改为手动if (mode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {Settings.System.putInt(this.contentResolver,Settings.System.SCREEN_BRIGHTNESS_MODE,Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL)}} catch (e: SettingNotFoundException) {e.printStackTrace()}}/*** 设置当前应用屏幕亮度,只当前有效*/private fun setWindowBrightness(brightness: Int) {val window = windowval lp = window.attributeslp.screenBrightness = brightness / 255.0fwindow.attributes = lp}
}


最近忙里偷闲,↓↓↓↓【谁家de码农陈先生】↓↓↓↓,里面定时给大家分享技术博文、前方高能资讯内容!欢迎各位老板点赞关注,你们就是我的动力源泉!

相关文章:

Android 一体机研发之修改系统设置————屏幕亮度

Android 一体机研发之修改系统设置————屏幕亮度 Android 一体机研发之修改系统设置————声音 Android 一体机研发之修改系统设置————自动锁屏 前言 最近工作略微有点儿空闲&#xff0c;抽空给大家总结一下&#xff1a;近期一直搞得一体机app研发&#xff0c;适用…...

C++通用算法

1.概述根据名字就知道如何使用相关算法&#xff0c;比如copy函数&#xff0c;就是复制的意思&#xff0c;它需要一个范围&#xff0c;以及要复制的位置copy(begin, end, container_begin);#include <iostream> #include<vector> #include<algorithm> #includ…...

Springboot停机方式

1. 介绍 简单的说&#xff0c;就是向应用进程发出停止指令之后&#xff0c;能保证正在执行的业务操作不受影响&#xff0c;直到操作运行完毕之后再停止服务。应用程序接收到停止指令之后&#xff0c;会进行如下操作&#xff1a; 1.停止接收新的访问请求 2.正在处理的请求&…...

Linux perf_event_open 简介

文章目录前言一、简介二、struct perf_event_attr2.1 type2.2 size2.3 config2.3.1 PERF_TYPE_HARDWARE2.3.2 PERF_TYPE_SOFTWARE2.3.3 PERF_TYPE_TRACEPOINT2.3.4 PERF_TYPE_HW_CACHE2.3.5 其他类型三、sample相关参数3.1 sample_period3.2 sample_freq3.3 sample_type四、其他…...

Java给定两组起止日期,求交集

/*** 判断2个时间段是否有重叠&#xff08;交集&#xff09;* param startDate1 时间段1开始时间戳* param endDate1 时间段1结束时间戳* param startDate2 时间段2开始时间戳* param endDate2 时间段2结束时间戳* param isStrict 是否严格重叠&#xff0c;true 严格&#xff0…...

数组的复制与二维数组的用法

今天学习的主要内容有 数组的复制 数组的复制 利用循环进行数组的复制 import java.util.Arrays; public class Main3 {public static void main(String[] args) {int []arr new int[]{1,2,3,4,5,6};int []arr1 new int[arr.length];for (int i 0; i < arr.length; i…...

JS判断两个table数据是否完全相等(判断两个数组对象是否完全相等)

需求 现有的table为tableA&#xff0c;有多个要做对比的table为一个数组 CompareArray 涉及到的问题 外层是数组&#xff0c;但是内部数据都是对象&#xff0c;对象属性名的排序不一样外层数组也涉及到 顺序不一样的问题 思路 对compareArray做长度筛选 filter 得到 同长度…...

关于小程序,你想知道的这些

近年来&#xff0c;各大平台纷纷上架小程序&#xff0c;迎来了小程序的爆发式增长。今天就来跟大家简单分享一下小程序基本的运行机制和安全机制。 小程序的由来 在小程序没有出来之前&#xff0c;最初微信WebView逐渐成为移动web重要入口&#xff0c;微信发布了一整套网页开…...

WuThreat身份安全云-TVD每日漏洞情报-2023-02-13

漏洞名称:THORSTEN PHPMYFAQ 跨站点脚本 漏洞级别:高危 漏洞编号:CVE-2023-0791 相关涉及:THORSTEN PHPMYFAQ 3.1.10 漏洞状态:POC 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2023-03506 漏洞名称:TENDA AC23 越界写入 漏洞级别:高危 漏洞编号:CVE-2023-078…...

【Linux】软件安装(三分钟教会你如何在linux下安装软件)

&#x1f525;&#x1f525; 欢迎来到小林的博客&#xff01;&#xff01;       &#x1f6f0;️博客主页&#xff1a;✈️小林爱敲代码       &#x1f6f0;️博客专栏&#xff1a;✈️Linux之路       &#x1f6f0;️社区&#xff1a;✈️进步学堂 目录&…...

Fluent Python 笔记 第 10 章 序列的修改、散列和切片

本章将以第 9 章定义的二维向量 Vector2d 类为基础&#xff0c;向前迈出一大步&#xff0c;定义表示多维向量的 Vector 类。这个类的行为与 Python 中标准的不可变扁平序列一样。 10.3 协议和鸭子类型 在 Python 中创建功能完善的序列类型无需使用继承&#xff0c;只需实现符…...

在中国程序员工作是青春饭吗?

上个月公司告诉我毕业了。 我打开boss直聘&#xff0c;一溜溜的外包公司和我打招呼。 我寻思我说不定啥时候就离开深圳了&#xff0c;外包不外包也无所谓钱到位就行。&#xff08;大公司学历不够格也进不去&#xff09; 结果华为、平安的外包告诉我&#xff0c;不好意思呀&a…...

Linux tcpdump

tcpdump - 转储网络上的数据流 是不是感觉很懵&#xff1f;全方位描述tcpdump: 通俗&#xff1a;tcpdump是一个抓包工具&#xff0c;用于抓取网络中传输的数据包形象&#xff1a;tcpdump如同国家海关&#xff0c;凡是入境和出境的货物&#xff0c;海关都要抽样检查&#xff0…...

redis知识汇总(部署、高可用、集群)

文章目录一、redis知识汇总什么是redisredis的优缺点&#xff1a;为什么要用redis做缓存redis为什么这么快什么是持久化redis持久化机制是什么&#xff1f;各自优缺点&#xff1f;AOF和RDB怎么选择redis持久化数据和缓存怎么做扩容什么是事务redis事务的概念ACID概念主从复制re…...

【手写 Vuex 源码】第十篇 - Vuex 命名空间的实现

一&#xff0c;前言 上一篇&#xff0c;主要介绍了 Vuex 响应式数据和缓存的实现&#xff0c;主要涉及以下几个点&#xff1a; Vuex 的响应式实现原理&#xff1b;响应式核心方法 resetStoreVM&#xff1b;commit 和 dispatch 的处理&#xff1b; 本篇&#xff0c;继续介绍 …...

面试腾讯测试岗后感想,真的很后悔这5年一直都干的是基础测试....

前两天&#xff0c;我的一个朋友去大厂面试&#xff0c;跟我聊天时说&#xff1a;输的很彻底… 我问她&#xff1a;什么情况&#xff1f;她说&#xff1a;很后悔这5年来一直都干的是功能测试… 相信许多测试人也跟我朋友一样&#xff0c;从事了软件测试很多年&#xff0c;却依…...

知识图谱 方法、实践与应用 王昊奋 读书笔记(下)

最近读了这本书&#xff0c;在思路上很有启发&#xff0c;对知识图谱有了初步的认识&#xff0c;以下是原书后半部分的内容&#xff0c;可以购买实体书获取更多内容。 知识图谱推理 结合已有规则&#xff0c;推出新的事实&#xff0c;例如持有股份就能控制一家公司&#xff0…...

vue实现打印浏览器页面功能(两种方法)

推荐使用方法二 方法一&#xff1a;通过npm 安装插件 1&#xff0c;安装 npm install vue-print-nb --save 2&#xff0c;引入 安装好以后在main.js文件中引入 import Print from vue-print-nbVue.use(Print); //注册 3&#xff0c;现在就可以使用了 div id"printTest…...

【VictoriaMetrics】VictoriaMetrics单机版批量和单条数据写入(Prometheus格式)

VictoriaMetrics单机版支持以Prometheus格式的数据写入,写入支持单条数据写入以及多条数据写入,下面操作演示下如何使用 1、首先需要启动VictoriaMetrics单机版服务 2、使用postman插入单机版VictoriaMetrics,以当前时间插入数据 地址为 http://victoriaMetricsIP:8428/api…...

【青训营】分布式定时任务简述

这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天 分布式定时任务简述 定义 定时任务是指系统为了自动完成特定任务&#xff0c;实时、延时、周期性完成任务调度的过程。分布式定时任务是把分散的、可靠性差的定时任务纳入统一平台&#xff0c;并且实现集群管理调度和…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

沙箱虚拟化技术虚拟机容器之间的关系详解

问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西&#xff0c;但是如果把三者放在一起&#xff0c;它们之间到底什么关系&#xff1f;又有什么联系呢&#xff1f;我不是很明白&#xff01;&#xff01;&#xff01; 就比如说&#xff1a; 沙箱&#…...