天津市做网站的公司有哪些贵阳奇点未来网站建设

diannao/2026/1/26 9:22:08/文章来源:
天津市做网站的公司有哪些,贵阳奇点未来网站建设,建设网站的 成本,荔枝app下载不收费用一、简述效果#xff1a;实现功能#xff1a;长按Button时改变Button显示文字#xff0c;弹出Dialog(动态更新音量)#xff0c;动态生成录音文件#xff0c;开始录音#xff1b;监听手指动作#xff0c;规定区域。录音状态下手指划出规定区域取消录音#xff0c;删除生…一、简述效果实现功能长按Button时改变Button显示文字弹出Dialog(动态更新音量)动态生成录音文件开始录音监听手指动作规定区域。录音状态下手指划出规定区域取消录音删除生成的录音文件监听手指动作。当手指抬起时判断是否开始录音录音时长是否过短符合条件则提示录音时长过短正常结束时通过回调返回该次录音的文件路径和时长。4.点击录音列表的item时播放动画播放对应的音频文件。主要用到4个核心类自定义录音按钮(AudioRecordButton)弹框管理类(DialogManager)录音管理类(AudioManager)。1.AudioRecordButton状态1.STATE_NORMAL:普通状态2.STATE_RECORDING:录音中3.STATE_CANCEL取消录音2.DialogManager状态:1.RECORDING录音中2.WANT_TO_CANCEL取消录音3.TOO_SHORT录音时间太短3.AudioManager1.prepare():准备状态2.cancel()取消录音3.release():正常结束录音4.getVoiceLevel()获取音量核心逻辑自定义Button重写onTouchEvent()方法。伪代码class AudioRecorderButton{onTouchEvent(){DOWN:changeButtonState(STATE_RECORDING);| DialogManager.showDialog(RECORDING)触发LongClick事件(AudioManager.prepare() -- end prepared -- | );| getVoiceLevel();//开启一个线程更新Dialog上的音量等级MOVE:if(wantCancel(x,y)){DialogManager.showDialog(WANT_TO_CANCEL);更新DialogchangeButtonState(STATE_WANT_TO_CANCEL);更新Button状态}else{DialogManager.showDialog(WANT_TO_CANCEL);changeButtonState(STATE_RECORDING);}UP:if(wantCancel curState){//当前状态是想取消状态AudioManager.cancel();}if(STATE_RECORDING curState){if(tooShort){//判断录制时长如果录制时间过短DialogManager.showDialog(TOO_SHORT);}AudioManager.release();callbackActivity(url,time);//(当前录音文件路径时长)}}}二、MediaManager封装简述使用MediaPlayer播放录制好的音频文件要注意MediaPlayer资源的释放。代码import android.media.*;import java.io.IOException;/*** 播放管理类*/public class MediaManager {private static MediaPlayer mMediaPlayer;private static boolean isPause;public static void playSound(String filePath, MediaPlayer.OnCompletionListener onCompletionListener) {if (mMediaPlayer null) {mMediaPlayer new MediaPlayer();mMediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() {Overridepublic boolean onError(MediaPlayer mp, int what, int extra) {mMediaPlayer.reset();return false;}});} else {mMediaPlayer.reset();}try {mMediaPlayer.setAudioStreamType(android.media.AudioManager.STREAM_MUSIC);mMediaPlayer.setOnCompletionListener(onCompletionListener);mMediaPlayer.setDataSource(filePath);mMediaPlayer.prepare();mMediaPlayer.start();} catch (IOException e) {e.printStackTrace();}}public static void pause(){if(mMediaPlayer ! null mMediaPlayer.isPlaying()){mMediaPlayer.pause();isPause true;}}public static void resume(){if(mMediaPlayer ! null isPause){mMediaPlayer.start();isPause false;}}public static void release(){if(mMediaPlayer ! null){mMediaPlayer.release();mMediaPlayer null;}}}三、DialogManager封装封装了6个方法1. showRecordingDialog()用来设置Diaog布局拿到控件的引用显示Dialog。2. recording()更改Dialog状态为录音中状态。3. wantToCancel()更改Dialog状态为想要取消状态。4. tooShort()更改Dialog状态为录音时长过短状态。5. dismissDialog()移除Dialog。6. updateVoiceLevel()用来更新音量图片。代码import android.app.Dialog;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.widget.ImageView;import android.widget.TextView;import com.tiddlerliu.wxrecorder.R;/*** Dialog管理类*/public class DialogManager {private Dialog mDialog;private ImageView mIcon;private ImageView mVoice;private TextView mLabel;private Context mContext;public DialogManager(Context context) {mContext context;}/*** 显示Dialog*/public void showRecordingDialog(){//将布局应用于DialogmDialog new Dialog(mContext, R.style.Theme_AudioDialog);LayoutInflater inflater LayoutInflater.from(mContext);View view inflater.inflate(R.layout.dialog_recorder,null);mDialog.setContentView(view);//成员控件赋值mIcon (ImageView) mDialog.findViewById(R.id.recorder_dialog_icon);mVoice (ImageView) mDialog.findViewById(R.id.recorder_dialog_voice);mLabel (TextView) mDialog.findViewById(R.id.recorder_dialog_label);mDialog.show();}public void recording(){if(mDialog ! null mDialog.isShowing()){mIcon.setVisibility(View.VISIBLE);mVoice.setVisibility(View.VISIBLE);mLabel.setVisibility(View.VISIBLE);mIcon.setImageResource(R.mipmap.recorder);mLabel.setText(手指上滑取消发送);}}public void wantToCancel(){if(mDialog ! null mDialog.isShowing()){mIcon.setVisibility(View.VISIBLE);mVoice.setVisibility(View.GONE);mLabel.setVisibility(View.VISIBLE);mIcon.setImageResource(R.mipmap.cancel);mLabel.setText(松开手指取消发送);}}public void tooShort(){if(mDialog ! null mDialog.isShowing()){mIcon.setVisibility(View.VISIBLE);mVoice.setVisibility(View.GONE);mLabel.setVisibility(View.VISIBLE);mIcon.setImageResource(R.mipmap.voice_to_short);mLabel.setText(录音时间过短);}}public void dismissDialog(){if(mDialog ! null mDialog.isShowing()){mDialog.dismiss();mDialog null;}}/*** 通过level更新音量资源图片* param level*/public void updateVoiceLevel(int level){if(mDialog ! null mDialog.isShowing()){int resId mContext.getResources().getIdentifier(vlevel,mipmap,mContext.getPackageName());mVoice.setImageResource(resId);}}}四、AudioManager封装4.1 添加必要权限4.2 代码import android.media.MediaRecorder;import java.io.File;import java.io.IOException;import java.util.UUID;/*** 录音管理类*/public class AudioManager {private String mDir;//文件夹名称private MediaRecorder mMediaRecorder;private String mCurrentFilePath;//文件储存路径private static AudioManager mInstance;//表明MediaRecorder是否进入prepare状态(状态为true才能调用stop和release方法)private boolean isPrepared;public AudioManager(String dir) {mDir dir;}public String getCurrentFilePath() {return mCurrentFilePath;}/*** 准备完毕接口*/public interface AudioStateListener{void wellPrepared();}public AudioStateListener mListener;public void setOnAudioStateListener(AudioStateListener listener){mListener listener;}/*** 单例* return AudioManager*/public static AudioManager getInstance(String dir){if (mInstance null){synchronized (AudioManager.class){if(mInstance null){mInstance new AudioManager(dir);}}}return mInstance;}/*** 准备*/public void prepareAudio() {try {isPrepared false;File dir new File(mDir);//创建文件夹if (!dir.exists()) {dir.mkdirs();}String fileName generateFileName();//随机生成文件名File file new File(dir, fileName);//创建文件mCurrentFilePath file.getAbsolutePath();mMediaRecorder new MediaRecorder();mMediaRecorder.setOutputFile(file.getAbsolutePath());//设置输出文件mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);//设置麦克风为音频源mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);//设置音频格式mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//设置音频编码mMediaRecorder.prepare();mMediaRecorder.start();//准备结束isPrepared true;if (mListener ! null){mListener.wellPrepared();}} catch (IOException e) {e.printStackTrace();}}/*** 随机生成文件的名称* return*/private String generateFileName() {return UUID.randomUUID().toString().amr;}/*** 获取音量等级*/public int getVoiceLevel(int maxLevel) {if (isPrepared) {try {//mMediaRecorder.getMaxAmplitude() 范围:1-32767return maxLevel * mMediaRecorder.getMaxAmplitude() / 32768 1;//最大值 * [0,1) 1} catch (Exception e) {}}return 1;}/*** 重置*/public void release(){if(mMediaRecorder ! null){mMediaRecorder.stop();mMediaRecorder.release();mMediaRecorder null;}}/*** 取消*/public void cancel(){release();//删除产生的文件if(mCurrentFilePath ! null){File file new File(mCurrentFilePath);file.delete();mCurrentFilePath null;}}}五、AudioRecordButton封装import android.annotation.SuppressLint;import android.content.Context;import android.os.Environment;import android.os.Handler;import android.os.Message;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;import android.widget.Button;import com.tiddlerliu.wxrecorder.R;/*** 自定义Button*/SuppressLint(AppCompatCustomView)public class AudioRecordButton extends Button implements AudioManager.AudioStateListener{private static final int STATE_NORMAL 1;//默认状态private static final int STATE_RECORDING 2;//录音状态private static final int STATE_WANT_CANCEL 3;//想取消状态private static final int DISTANCE_Y_CANCEL 50;//定义上滑取消距离private int mCurState STATE_NORMAL;//记录当前状态private boolean isRecording false;//是否在录音状态private DialogManager mDialogManager;private AudioManager mAudioManager;private float mTime;//记录录音时长private boolean mReady;//是否触发OnLongClick事件private boolean isComplete true;//是否已经完成public AudioRecordButton(Context context) {this(context,null);}public AudioRecordButton(Context context, AttributeSet attrs) {super(context, attrs);mDialogManager new DialogManager(getContext());String dir Environment.getExternalStorageDirectory()/TiddlerLiu/recorder/audios;//最好判断SD卡是否存在可读mAudioManager AudioManager.getInstance(dir);mAudioManager.setOnAudioStateListener(this);setOnLongClickListener(new OnLongClickListener() {Overridepublic boolean onLongClick(View v) {mReady true;mAudioManager.prepareAudio();return false;}});}/*** 录音完成后的回调*/public interface AudioFinishRecorderListener {void onFinish(float seconds,String filePath);}private AudioFinishRecorderListener mAudioFinishRecorderListener;public void setAudioFinishRecorderListener(AudioFinishRecorderListener listener){mAudioFinishRecorderListener listener;}private static final int MSG_AUDIO_PREPARED 0x110;private static final int MSG_VOICE_CHANGED 0x111;private static final int MSG_DIALOG_DISMISS 0x112;private static final int MSG_AUDIO_COMPLETE 0x113;//达到最大时长自动完成/*** 获取音量大小*/private Runnable mGetVoiceLevelRunnable new Runnable() {Overridepublic void run() {while (isRecording){try {Thread.sleep(100);mTime 0.1f;if(mTime 60f){//60s自动触发完成录制mHandler.sendEmptyMessage(MSG_AUDIO_COMPLETE);}mHandler.sendEmptyMessage(MSG_VOICE_CHANGED);} catch (InterruptedException e) {e.printStackTrace();}}}};private Handler mHandler new Handler(){Overridepublic void handleMessage(Message msg) {switch (msg.what){case MSG_AUDIO_PREPARED://显示应该在audio end prepared以后mDialogManager.showRecordingDialog();isRecording true;isComplete false;new Thread(mGetVoiceLevelRunnable).start();break;case MSG_VOICE_CHANGED:mDialogManager.updateVoiceLevel(mAudioManager.getVoiceLevel(7));break;case MSG_DIALOG_DISMISS:mDialogManager.dismissDialog();break;case MSG_AUDIO_COMPLETE:complete();reset();break;default:break;}}};Overridepublic void wellPrepared() {mHandler.sendEmptyMessage(MSG_AUDIO_PREPARED);}Overridepublic boolean onTouchEvent(MotionEvent event) {int action event.getAction();int x (int) event.getX();int y (int) event.getY();switch (action){case MotionEvent.ACTION_DOWN:changeState(STATE_RECORDING);break;case MotionEvent.ACTION_MOVE:if(isRecording){//根据(x,y)坐标判断是否想要取消if (wantToCancel(x,y)){changeState(STATE_WANT_CANCEL);}else{changeState(STATE_RECORDING);}}break;case MotionEvent.ACTION_UP:if(!isComplete){//没有执行超时自动完成逻辑if (!mReady) {//还未触发OnLongClick事件reset();return super.onTouchEvent(event);}if (!isRecording || mTime 0.6f) {//还未开始录音 或者 录制时长过短mDialogManager.tooShort();mAudioManager.cancel();mHandler.sendEmptyMessageDelayed(MSG_DIALOG_DISMISS, 1300);//1.3秒后关闭对话框} else if (mCurState STATE_RECORDING) {//正常录制结束complete();} else if (mCurState STATE_WANT_CANCEL) {//想要取消状态mDialogManager.dismissDialog();mAudioManager.cancel();}reset();}break;}return super.onTouchEvent(event);}/*** 正常录制结束*/private void complete() {mDialogManager.dismissDialog();mAudioManager.release();if(mAudioFinishRecorderListener ! null !isComplete){mAudioFinishRecorderListener.onFinish(mTime,mAudioManager.getCurrentFilePath());}}/*** 恢复状态和标志位*/private void reset() {isRecording false;mReady false;mTime 0;isComplete true;changeState(STATE_NORMAL);}/*** 根据(x,y)坐标判断是否想要取消* param x* param y* return*/private boolean wantToCancel(int x, int y) {if(x 0 || x getWidth()){//手指移出button范围return true;}if(y - DISTANCE_Y_CANCEL || y getHeight() DISTANCE_Y_CANCEL){//手指移出Y轴设定范围return true;}return false;}/*** 改变状态* param state*/private void changeState(int state) {if(mCurState ! state){mCurState state;switch (state){case STATE_NORMAL:setBackgroundResource(R.drawable.btn_recorder_normal);setText(R.string.str_recorder_normal);break;case STATE_RECORDING:setBackgroundResource(R.drawable.btn_recorder_recording);setText(R.string.str_recorder_recording);if(isRecording){mDialogManager.recording();}break;case STATE_WANT_CANCEL:setBackgroundResource(R.drawable.btn_recorder_recording);setText(R.string.str_recorder_want_cancel);mDialogManager.wantToCancel();break;default:break;}}}}六、 主界面实现6.1 adapterimport android.content.Context;import android.support.annotation.NonNull;import android.support.annotation.Nullable;import android.util.DisplayMetrics;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.WindowManager;import android.widget.ArrayAdapter;import android.widget.TextView;import com.tiddlerliu.wxrecorder.R;import com.tiddlerliu.wxrecorder.model.Recorder;import java.util.List;public class RecorderAdapter extends ArrayAdapter{private int mMinItemWidth;private int mMaxItemWidth;private LayoutInflater mInflater;public RecorderAdapter(NonNull Context context, List datas) {super(context, -1 ,datas);mInflater LayoutInflater.from(context);//获取屏幕参数WindowManager wm (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);DisplayMetrics outMetrics new DisplayMetrics();wm.getDefaultDisplay().getMetrics(outMetrics);//设置最小宽度和最大宽度mMinItemWidth (int) (outMetrics.widthPixels * 0.16f);mMaxItemWidth (int) (outMetrics.widthPixels * 0.64f);}NonNullOverridepublic View getView(int position, Nullable View convertView, NonNull ViewGroup parent) {ViewHolder holder null;if(convertView null){convertView mInflater.inflate(R.layout.item_recorder,parent,false);holder new ViewHolder();holder.seconds (TextView) convertView.findViewById(R.id.item_recorder_time);holder.length convertView.findViewById(R.id.item_recorder_length);convertView.setTag(holder);}else {holder (ViewHolder) convertView.getTag();}//设置时长holder.seconds.setText(Math.round(getItem(position).getTime()) \);//根据时长按比例设置时长ViewGroup.LayoutParams lp holder.length.getLayoutParams();lp.width (int) (mMinItemWidth (mMaxItemWidth/60f * getItem(position).getTime()));return convertView;}private class ViewHolder{TextView seconds;View length;}}6.2 activityimport android.graphics.drawable.AnimationDrawable;import android.media.MediaPlayer;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.AdapterView;import android.widget.ArrayAdapter;import android.widget.ListView;import com.tiddlerliu.wxrecorder.CustomView.AudioRecordButton;import com.tiddlerliu.wxrecorder.CustomView.MediaManager;import com.tiddlerliu.wxrecorder.adapter.RecorderAdapter;import com.tiddlerliu.wxrecorder.model.Recorder;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity {private ListView mListView;private AudioRecordButton mAudioRecordButton;private ArrayAdapter mAdapter ;private List mDatas new ArrayList();private View mAnimView;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mListView (ListView) findViewById(R.id.recorder_list);mAudioRecordButton (AudioRecordButton) findViewById(R.id.recorder_button);mAudioRecordButton.setAudioFinishRecorderListener(new AudioRecordButton.AudioFinishRecorderListener() {Overridepublic void onFinish(float seconds, String filePath) {Recorder recorder new Recorder(seconds,filePath);mDatas.add(recorder);mAdapter.notifyDataSetChanged();mListView.setSelection(mDatas.size()-1);}});mAdapter new RecorderAdapter(this,mDatas);mListView.setAdapter(mAdapter);mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {Overridepublic void onItemClick(AdapterView parent, View view, int position, long id) {if(mAnimView ! null){mAnimView.setBackgroundResource(R.mipmap.adj);mAnimView null;}//播放动画mAnimView view.findViewById(R.id.item_recorder_anim);mAnimView.setBackgroundResource(R.drawable.play_ainm);AnimationDrawable anim (AnimationDrawable) mAnimView.getBackground();anim.start();//播放音频MediaManager.playSound(mDatas.get(position).getFilePath(), new MediaPlayer.OnCompletionListener() {Overridepublic void onCompletion(MediaPlayer mp) {mAnimView.setBackgroundResource(R.mipmap.adj);}});}});}Overrideprotected void onPause() {super.onPause();MediaManager.pause();}Overrideprotected void onResume() {super.onResume();MediaManager.resume();}Overrideprotected void onDestroy() {super.onDestroy();MediaManager.release();}}总结以上所述是小编给大家介绍的Android仿微信语音消息的录制和播放功能希望对大家有所帮助如果大家有任何疑问请给我留言小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/88019.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做电影网站都需要什么工具定制虚拟偶像app

文章目录 一、插件介绍二、idea社区版安装MybatisCodeHelperPro插件三、问题记录1. DatabaseHelper插件 加载不了部分数据库链接的列信息2. DatabaseHelper插件 数据库列显示顺序错乱3. MybatisCodeHelperPro插件 数据库字段不提示4. MybatisCodeHelperPro插件 特殊字段增加反引…

网站自己可以做么网站建设功能报价表

1、打开企业微信,点击“通讯录”。 企业微信怎么删除好友 企业微信如何删除成员 2、找到要删除的成员,点击。 企业微信怎么删除好友 企业微信如何删除成员 3、在个人信息页面,点击“⋮”。 企业微信怎么删除好友 企业微信如何删除成员 …

怎么接网站来做国外二级域名免费申请

全世界只有3.14 % 的人关注了青少年数学之旅快节奏的现代社会中,每个人都疲于奔命,“丧、累、太难了”已成为成年人的生活主题。难得的闲暇时间,公众号是不可或缺的消遣方式。但我们被海量数据淹没,越来越多的公众号只是消耗情绪&…

制作网站可以赚钱吗seo的网站建设

大家好,欢迎来到雄雄的小课堂,那个……辣椒酱很好吃的,哈哈哈哈!今天给大家分享的内容是利用CSS制作网页的动画。辣椒酱:自从有了这款辣椒酱,拌饭再也不用老干妈CSS变形CSS的变形包括这么几种效果&#xff…

营销型网站建设价格是多少制作网页时采用的最基本的语言是

分层思想,是应用系统最常见的一种架构模式,我们会将系统横向切割,根据业务职责划分。MVC 三层架构就是非常典型架构模式,划分的目的是规划软件系统的逻辑结构便于开发维护。MVC:英文即 Model-View-Controller&#xff…

江油网站建设网站结构是体现的

【day0】 要坐大巴去北京……(没错是大巴!)然而说好的六点走,生生等到了七点……不过一路上还是很happy的!某导游兔子 然而到华电之后,身子都散架了……这次的酒店在北农,感觉还可以&#xff0c…

微信网站制作教程wordpress 拖拽排序插件

如果在使用 Rollup 写 require 而 Rollup 默认使用的是 ECMAScript 模块系统。 要解决这个问题,你需要在 Rollup 的配置文件(通常是 rollup.config.js)中使用插件来将 CommonJS 模块转化为 ECMAScript 模块。需要配置2个插件 import resolv…

学校网站建设过程树莓派可以做网站空间吗

一,操作系统的体系结构 内核 内核是操作系统最基本、最核心的部分,实现操作系统内核功能的那些程序就是内核程序这其中:时钟、中断、原语是与硬件关联最紧密的模块,而进程管理、存储器管理、设备管理更多的是对数据结构的操作&…

成都微网站建设地方网站做哪些内容

ONLYOFFICE是由领先的IT公司—Ascensio System SIA经验丰富的IT专家开发的项目。这是一款强大的在线编辑器,能够为提供高效的文本文档、电子表格、演示文稿、表单和 PDF 编辑工具。 继 ONLYOFFICE 文档 v8.0发布后,适用于 Linux、Windows 和 macOS 的免费…

谷歌seo专员学好seo

http://www.iteye.com/topic/540423转载于:https://www.cnblogs.com/ct732003684/archive/2013/01/21/2869376.html

wordpress多域名多站点安徽住房和城乡建设厅网站首页

重学SpringBoot3-内容协商机制 ContentNegotiationConfigurer接口配置内容协商URL参数Accept头使用Url扩展名 自定义内容协商格式步骤1: 注册自定义媒体类型步骤2: 实现HttpMessageConverter接口步骤3: 使用自定义HttpMessageConverter 注意点 在 Spring Boot 3 中,…

html手机网站如何制作wordpress论坛模版

前言 本章我们基于重构的方式进行一个 MVVM 的实战,我们将一个新闻列表的普通实现,一步一步的改造成 MVVM 的架构模式,一共分为上中下三个章节,本章继续上一章,开始中篇的讲解; 控件化 我们本章向控件化进…

常用的网站开发语言有哪些个人域名备案查询

css高度设置为auto后,设置的边框 ie正常 火狐 就没有边框了,解决方法 之前是这样写的 #right_bottom { width: 790px; height:auto; border: #EBEBEB 1px solid; } 最后添加了一个overflow: hidden;属性ok了,ie火狐都可以显示边框 即: #right_bottom {…

做的网站加载太慢怎么办注册网站有什么风险吗

公司一台服务器,上面装了filezilla server后,按平常配置好了,但是在本地用FTP客户端不管怎么连接都连接不上,本地FTP客户端总提示连接失败,远程filezilla server的界面也没有提示有人连接, 仔细看了一下&am…

桂林哪里做网站东莞网站建设公司排名

笔记本电脑的电池健康状况至关重要。延长电池寿命可以帮你省下不少钱。对于长时间充电的Windows 11笔记本电脑用户来说,将电池电量限制在80%是很重要的。 虽然操作系统没有提供设置自定义电池充电限制的内置方法,但仍有一些方法可以在Windows 11中配置电池设置,并将其限制在…

充值选建设银行打不开网站网站安全建设的重要性

参考《计算机组成》(北京大学 MOOC) 1 异常与中断的来源(为什么需要中断) 首先,说明一下异常和中断这两个概念。 它们两个唯一的区别,就是,没有什么区别。只是不同的地方不同的时间不同的人的…

南京企业建站系统模板nodejs 做网站

一、基于域名的虚拟主机 修改配置文件/usr/local/nginx/conf/nginx.conf 创建新的虚拟主机的根目录和默认网页index.html 重新加载nginx的配置文件 查看两个虚拟主机 因为这两个域名是随便写的,所以需要修改windows系统的hosts文件,让电脑能够解析www.a.…

常州网站seo做网站需要空间

450. 删除二叉搜索树中的节点 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可…

手游门户网站建设网站开发必须要做前端吗

我们借鉴之前抓取台风路径数据的例子,试一试抓取降水量数据:之前我们访问过这个网站,也试着抓取过数据,不过在谷歌浏览器中我们只能够找到两天的数据,但是通过台风路径数据抓取,我们猜想只要我们向服务器提…

网站轮播效果怎么做的网站建设首选玖艺建站信得过

目录 一、concat() 二、join() 三、push() 四、pop() 五、shift() 六、unshift() 七、slice() 九、substring() 和 substr() 十、sort 排序 十一、reverse() 十二、indexOf 和 lastIndexOf 十三、every 十四、some 十五、filter 十六、map ES6新增新操作数组的…