MediaRecorder test
MediaRecorder
extends Object
| java.lang.Object | |
| ↳ | android.media.MediaRecorder |
Class Overview
Used to record audio and video. The recording control is based on a simple state machine (see below).
A common case of using MediaRecorder to record audio works as follows:
MediaRecorder recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(PATH_NAME);
recorder.prepare();
recorder.start(); // Recording is now started
...
recorder.stop();
recorder.reset(); // You can reuse the object by going back to setAudioSource() step
recorder.release(); // Now the object cannot be reused
Applications may want to register for informational and error events in order to be informed of some internal update and possible runtime errors during recording. Registration for such events is done by setting the appropriate listeners (via calls (to
setOnInfoListener(OnInfoListener)setOnInfoListener
and/or setOnErrorListener(OnErrorListener)setOnErrorListener).
In order to receive the respective callback associated with these listeners, applications are required to create MediaRecorder objects on threads with a Looper running (the main UI thread by default already has a Looper running).
Note: Currently, MediaRecorder does not work on the emulator.
Developer Guides
For more information about how to use MediaRecorder for recording video, read the
Camera developer guide. For more information about how to use MediaRecorder for recording sound, read the
Audio Capture developer guide.
Summary
| Nested Classes | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| class | MediaRecorder.AudioEncoder | Defines the audio encoding. | |||||||||
| class | MediaRecorder.AudioSource | Defines the audio source. | |||||||||
| interface | MediaRecorder.OnErrorListener | Interface definition for a callback to be invoked when an error occurs while recording. | |||||||||
| interface | MediaRecorder.OnInfoListener | Interface definition for a callback to be invoked when an error occurs while recording. | |||||||||
| class | MediaRecorder.OutputFormat | Defines the output format. | |||||||||
| class | MediaRecorder.VideoEncoder | Defines the video encoding. | |||||||||
| class | MediaRecorder.VideoSource | Defines the video source. | |||||||||
| Constants | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| int | MEDIA_ERROR_SERVER_DIED | Media server died. | |||||||||
| int | MEDIA_RECORDER_ERROR_UNKNOWN | Unspecified media recorder error. | |||||||||
| int | MEDIA_RECORDER_INFO_MAX_DURATION_REACHED | A maximum duration had been setup and has now been reached. | |||||||||
| int | MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED | A maximum filesize had been setup and has now been reached. | |||||||||
| int | MEDIA_RECORDER_INFO_UNKNOWN | Unspecified media recorder error. | |||||||||
| Public Constructors | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| MediaRecorder()
Default constructor.
|
|||||||||||
| Public Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| final static int | getAudioSourceMax()
Gets the maximum value for audio sources.
|
||||||||||
| int | getMaxAmplitude()
Returns the maximum absolute amplitude that was sampled since the last call to this method.
|
||||||||||
| Surface | getSurface()
Gets the surface to record from when using SURFACE video source.
|
||||||||||
| void | prepare()
Prepares the recorder to begin capturing and encoding data.
|
||||||||||
| void | release()
Releases resources associated with this MediaRecorder object.
|
||||||||||
| void | reset()
Restarts the MediaRecorder to its idle state.
|
||||||||||
| void | setAudioChannels(int numChannels)
Sets the number of audio channels for recording.
|
||||||||||
| void | setAudioEncoder(int audio_encoder)
Sets the audio encoder to be used for recording.
|
||||||||||
| void | setAudioEncodingBitRate(int bitRate) Sets the audio encoding bit rate for recording.
|
||||||||||
| void | setAudioSamplingRate(int samplingRate)
Sets the audio sampling rate for recording.
|
||||||||||
| void | setAudioSource(int audio_source)
Sets the audio source to be used for recording.
|
||||||||||
| void | setCamera(Camera c) Sets a Camera to use for recording.
|
||||||||||
| void | setCaptureRate(double fps)
Set video frame capture rate.
|
||||||||||
| void | setLocation(float latitude, float longitude) Set and store the geodata (latitude and longitude) in the output file.
|
||||||||||
| void | setMaxDuration(int max_duration_ms)
Sets the maximum duration (in ms) of the recording session.
|
||||||||||
| void | setMaxFileSize(long max_filesize_bytes)
Sets the maximum filesize (in bytes) of the recording session.
|
||||||||||
| void | setOnErrorListener(MediaRecorder.OnErrorListener l) Register a callback to be invoked when an error occurs while recording.
|
||||||||||
| void | setOnInfoListener(MediaRecorder.OnInfoListener listener) Register a callback to be invoked when an informational event occurs while recording.
|
||||||||||
| void | setOrientationHint(int degrees)
Sets the orientation hint for output video playback.
|
||||||||||
| void | setOutputFile(FileDescriptor fd) Pass in the file descriptor of the file to be written.
|
||||||||||
| void | setOutputFile(String path) Sets the path of the output file to be produced.
|
||||||||||
| void | setOutputFormat(int output_format)
Sets the format of the output file produced during recording.
|
||||||||||
| void | setPreviewDisplay(Surface sv) Sets a Surface to show a preview of recorded media (video).
|
||||||||||
| void | setProfile(CamcorderProfile profile) Uses the settings from a CamcorderProfile object for recording.
|
||||||||||
| void | setVideoEncoder(int video_encoder)
Sets the video encoder to be used for recording.
|
||||||||||
| void | setVideoEncodingBitRate(int bitRate) Sets the video encoding bit rate for recording.
|
||||||||||
| void | setVideoFrameRate(int rate)
Sets the frame rate of the video to be captured.
|
||||||||||
| void | setVideoSize(int width, int height)
Sets the width and height of the video to be captured.
|
||||||||||
| void | setVideoSource(int video_source)
Sets the video source to be used for recording.
|
||||||||||
| void | start()
Begins capturing and encoding data to the file specified with setOutputFile().
|
||||||||||
| void | stop()
Stops recording.
|
||||||||||
| Protected Methods | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| void | finalize()
Invoked when the garbage collector has detected that this instance is no longer reachable.
|
||||||||||
| [Expand]
Inherited Methods
|
|||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
From class java.lang.Object
|
|||||||||||||||||||||||||||||||||
Constants
public static final int
MEDIA_ERROR_SERVER_DIED
Media server died. In this case, the application must release the MediaRecorder object and instantiate a new one.
See Also
public static final int
MEDIA_RECORDER_ERROR_UNKNOWN
Unspecified media recorder error.
See Also
public static final int
MEDIA_RECORDER_INFO_MAX_DURATION_REACHED
A maximum duration had been setup and has now been reached.
See Also
public static final int
MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED
A maximum filesize had been setup and has now been reached.
See Also
public static final int
MEDIA_RECORDER_INFO_UNKNOWN
Unspecified media recorder error.
See Also
Public Constructors
Public Methods
public static final int
getAudioSourceMax ()
Gets the maximum value for audio sources.
See Also
public int getMaxAmplitude
()
Returns the maximum absolute amplitude that was sampled since the last call to this method. Call this only after the setAudioSource().
Returns
- the maximum absolute amplitude measured since the last call, or 0 when called for the first time
Throws
| IllegalStateException | if it is called before the audio source has been set. |
|---|
public Surface getSurface ()
Gets the surface to record from when using SURFACE video source.
Should only be called after prepare(). Frames rendered before start() will be discarded.
Throws
| IllegalStateException | if it is called before prepare(), after stop() or is called when VideoSource is not set to SURFACE. |
|---|
See Also
public void prepare
()
Prepares the recorder to begin capturing and encoding data. This method must be called after setting up the desired audio and video sources, encoders, file format, etc., but before start().
Throws
| IllegalStateException | if it is called after start() or before setOutputFormat(). |
|---|---|
| IOException | if prepare fails otherwise. |
public void release
()
Releases resources associated with this MediaRecorder object. It is good practice to call this method when you're done using the MediaRecorder. In particular, whenever an Activity of an application is paused (its onPause() method is called), or stopped (its
onStop() method is called), this method should be invoked to release the MediaRecorder object, unless the application has a special need to keep the object around. In addition to unnecessary resources (such as memory and instances of codecs) being held, failure
to call this method immediately if a MediaRecorder object is no longer needed may also lead to continuous battery consumption for mobile devices, and recording failure for other applications if no multiple instances of the same codec are supported on a device.
Even if multiple instances of the same codec are supported, some performance degradation may be expected when unnecessary multiple instances are used at the same time.
public void reset
()
Restarts the MediaRecorder to its idle state. After calling this method, you will have to configure it again as if it had just been constructed.
public void setAudioChannels
(int numChannels)
Sets the number of audio channels for recording. Call this method before prepare(). Prepare() may perform additional checks on the parameter to make sure whether the specified number of audio channels are applicable.
Parameters
| numChannels | the number of audio channels. Usually it is either 1 (mono) or 2 (stereo). |
|---|
public void setAudioEncoder
(int audio_encoder)
Sets the audio encoder to be used for recording. If this method is not called, the output file will not contain an audio track. Call this after setOutputFormat() but before prepare().
Parameters
| audio_encoder | the audio encoder to use. |
|---|
Throws
| IllegalStateException | if it is called before setOutputFormat() or after prepare(). |
|---|
See Also
public void setAudioEncodingBitRate
(int bitRate)
Sets the audio encoding bit rate for recording. Call this method before prepare(). Prepare() may perform additional checks on the parameter to make sure whether the specified bit rate is applicable, and sometimes the passed bitRate will be clipped internally
to ensure the audio recording can proceed smoothly based on the capabilities of the platform.
Parameters
| bitRate | the audio encoding bit rate in bits per second. |
|---|
public void setAudioSamplingRate
(int samplingRate)
Sets the audio sampling rate for recording. Call this method before prepare(). Prepare() may perform additional checks on the parameter to make sure whether the specified audio sampling rate is applicable. The sampling rate really depends on the format for
the audio recording, as well as the capabilities of the platform. For instance, the sampling rate supported by AAC audio coding standard ranges from 8 to 96 kHz, the sampling rate supported by AMRNB is 8kHz, and the sampling rate supported by AMRWB is 16kHz.
Please consult with the related audio coding standard for the supported audio sampling rate.
Parameters
| samplingRate | the sampling rate for audio in samples per second. |
|---|
public void setAudioSource
(int audio_source)
Sets the audio source to be used for recording. If this method is not called, the output file will not contain an audio track. The source needs to be specified before setting recording-parameters or encoders. Call this only before setOutputFormat().
Parameters
| audio_source | the audio source to use |
|---|
Throws
| IllegalStateException | if it is called after setOutputFormat() |
|---|
See Also
public void setCamera
(Camera c)
Sets a Camera to use for recording. Use this function to switch quickly between preview and capture mode without a teardown of the camera object.
unlock() should be called before this. Must call before prepare().
Parameters
| c | the Camera to use for recording |
|---|
public void setCaptureRate
(double fps)
Set video frame capture rate. This can be used to set a different video frame capture rate than the recorded video's playback rate. This method also sets the recording mode to time lapse. In time lapse video recording, only video is recorded. Audio related
parameters are ignored when a time lapse recording session starts, if an application sets them.
Parameters
| fps | Rate at which frames should be captured in frames per second. The fps can go as low as desired. However the fastest fps will be limited by the hardware. For resolutions that can be captured by the video camera, the fastest fps can be computed usinggetPreviewFpsRange(int[]). For higher resolutions the fastest fps may be more restrictive.Note that the recorder cannot guarantee that frames will be captured at the given rate due to camera/encoder limitations. However it tries to be as close as possible. |
|---|
public void setLocation
(float latitude, float longitude)
Set and store the geodata (latitude and longitude) in the output file. This method should be called before prepare(). The geodata is stored in udta box if the output format is OutputFormat.THREE_GPP or OutputFormat.MPEG_4, and is ignored for other output
formats. The geodata is stored according to ISO-6709 standard.
Parameters
| latitude | latitude in degrees. Its value must be in the range [-90, 90]. |
|---|---|
| longitude | longitude in degrees. Its value must be in the range [-180, 180]. |
Throws
| IllegalArgumentException | if the given latitude or longitude is out of range. |
|---|
public void setMaxDuration
(int max_duration_ms)
Sets the maximum duration (in ms) of the recording session. Call this after setOutFormat() but before prepare(). After recording reaches the specified duration, a notification will be sent to the
MediaRecorder.OnInfoListener with a "what" code of
MEDIA_RECORDER_INFO_MAX_DURATION_REACHED and recording will be stopped.
Stopping happens asynchronously, there is no guarantee that the recorder will have stopped by the time the listener is notified.
Parameters
| max_duration_ms | the maximum duration in ms (if zero or negative, disables the duration limit) |
|---|
Throws
| IllegalArgumentException |
|---|
public void setMaxFileSize
(long max_filesize_bytes)
Sets the maximum filesize (in bytes) of the recording session. Call this after setOutFormat() but before prepare(). After recording reaches the specified filesize, a notification will be sent to the
MediaRecorder.OnInfoListener with a "what" code of
MEDIA_RECORDER_INFO_MAX_FILESIZE_REACHED and recording will be stopped.
Stopping happens asynchronously, there is no guarantee that the recorder will have stopped by the time the listener is notified.
Parameters
| max_filesize_bytes | the maximum filesize in bytes (if zero or negative, disables the limit) |
|---|
Throws
| IllegalArgumentException |
|---|
public void setOnErrorListener
(MediaRecorder.OnErrorListener l)
Register a callback to be invoked when an error occurs while recording.
Parameters
| l | the callback that will be run |
|---|
public void setOnInfoListener
(MediaRecorder.OnInfoListener listener)
Register a callback to be invoked when an informational event occurs while recording.
Parameters
| listener | the callback that will be run |
|---|
public void setOrientationHint
(int degrees)
Sets the orientation hint for output video playback. This method should be called before prepare(). This method will not trigger the source video frame to rotate during video recording, but to add a composition matrix containing the rotation angle in the
output video if the output format is OutputFormat.THREE_GPP or OutputFormat.MPEG_4 so that a video player can choose the proper orientation for playback. Note that some video players may choose to ignore the compostion matrix in a video during playback.
Parameters
| degrees | the angle to be rotated clockwise in degrees. The supported angles are 0, 90, 180, and 270 degrees. |
|---|
Throws
| IllegalArgumentException | if the angle is not supported. |
|---|
public void setOutputFile
(FileDescriptor fd)
Pass in the file descriptor of the file to be written. Call this after setOutputFormat() but before prepare().
Parameters
| fd | an open file descriptor to be written into. |
|---|
Throws
| IllegalStateException | if it is called before setOutputFormat() or after prepare() |
|---|
public void setOutputFile
(String path)
Sets the path of the output file to be produced. Call this after setOutputFormat() but before prepare().
Parameters
| path | The pathname to use. |
|---|
Throws
| IllegalStateException | if it is called before setOutputFormat() or after prepare() |
|---|
public void setOutputFormat
(int output_format)
Sets the format of the output file produced during recording. Call this after setAudioSource()/setVideoSource() but before prepare().
It is recommended to always use 3GP format when using the H.263 video encoder and AMR audio encoder. Using an MPEG-4 container format may confuse some desktop players.
Parameters
| output_format | the output format to use. The output format needs to be specified before setting recording-parameters or encoders. |
|---|
Throws
| IllegalStateException | if it is called after prepare() or before setAudioSource()/setVideoSource(). |
|---|
See Also
public void setPreviewDisplay
(Surface sv)
Sets a Surface to show a preview of recorded media (video). Calls this before prepare() to make sure that the desirable preview display is set. If
setCamera(Camera) is used and the surface has been already set to the camera,
application do not need to call this. If this is called with non-null surface, the preview surface of the camera will be replaced by the new surface. If this method is called with null surface or not called at all, media recorder will not change the preview
surface of the camera.
Parameters
| sv | the Surface to use for the preview |
|---|
public void setProfile
(CamcorderProfile profile)
Uses the settings from a CamcorderProfile object for recording. This method should be called after the video AND audio sources are set, and before setOutputFile(). If a time lapse CamcorderProfile is used, audio related source or recording parameters are
ignored.
Parameters
| profile | the CamcorderProfile to use |
|---|
See Also
public void setVideoEncoder
(int video_encoder)
Sets the video encoder to be used for recording. If this method is not called, the output file will not contain an video track. Call this after setOutputFormat() and before prepare().
Parameters
| video_encoder | the video encoder to use. |
|---|
Throws
| IllegalStateException | if it is called before setOutputFormat() or after prepare() |
|---|
See Also
public void setVideoEncodingBitRate
(int bitRate)
Sets the video encoding bit rate for recording. Call this method before prepare(). Prepare() may perform additional checks on the parameter to make sure whether the specified bit rate is applicable, and sometimes the passed bitRate will be clipped internally
to ensure the video recording can proceed smoothly based on the capabilities of the platform.
Parameters
| bitRate | the video encoding bit rate in bits per second. |
|---|
public void setVideoFrameRate
(int rate)
Sets the frame rate of the video to be captured. Must be called after setVideoSource(). Call this after setOutFormat() but before prepare().
Parameters
| rate | the number of frames per second of video to capture |
|---|
Throws
| IllegalStateException | if it is called after prepare() or before setOutputFormat(). NOTE: On some devices that have auto-frame rate, this sets the maximum frame rate, not a constant frame rate. Actual frame rate will vary according to lighting conditions. |
|---|
public void setVideoSize
(int width, int height)
Sets the width and height of the video to be captured. Must be called after setVideoSource(). Call this after setOutFormat() but before prepare().
Parameters
| width | the width of the video to be captured |
|---|---|
| height | the height of the video to be captured |
Throws
| IllegalStateException | if it is called after prepare() or before setOutputFormat() |
|---|
public void setVideoSource
(int video_source)
Sets the video source to be used for recording. If this method is not called, the output file will not contain an video track. The source needs to be specified before setting recording-parameters or encoders. Call this only before setOutputFormat().
Parameters
| video_source | the video source to use |
|---|
Throws
| IllegalStateException | if it is called after setOutputFormat() |
|---|
See Also
public void start
()
Begins capturing and encoding data to the file specified with setOutputFile(). Call this after prepare().
Since API level 13, if applications set a camera via setCamera(Camera), the
apps can use the camera after this method call. The apps do not need to lock the camera again. However, if this method fails, the apps should still lock the camera back. The apps should not start another recording session during recording.
Throws
| IllegalStateException | if it is called before prepare(). |
|---|
public void stop
()
Stops recording. Call this after start(). Once recording is stopped, you will have to configure it again as if it has just been constructed. Note that a RuntimeException is intentionally thrown to the application, if no valid audio/video data has been received
when stop() is called. This happens if stop() is called immediately after start(). The failure lets the application take action accordingly to clean up the output file (delete the output file, for instance), since the output file is not properly constructed
when this happens.
Throws
| IllegalStateException | if it is called before start() |
|---|
Protected Methods
protected void finalize
()
Invoked when the garbage collector has detected that this instance is no longer reachable. The default implementation does nothing, but this method can be overridden to free resources.
Note that objects that override finalize are significantly more expensive than objects that don't. Finalizers may be run a long time after the object is no longer reachable, depending on memory pressure, so it's a bad idea to rely on them for
cleanup. Note also that finalizers are run on a single VM-wide finalizer thread, so doing blocking work in a finalizer is a bad idea. A finalizer is usually only necessary for a class that has a native peer and needs to call a native method to destroy that
peer. Even then, it's better to provide an explicit close method (and implement
Closeable), and insist that callers manually dispose of instances. This works well for something like files, but less well
for something like a BigInteger where typical calling code would have to deal with lots of temporaries. Unfortunately, code that creates lots of temporaries is the worst kind of code from the point of view of the single finalizer thread.
If you must use finalizers, consider at least providing your own and having your own thread process that queue.
ReferenceQueue
Unlike constructors, finalizers are not automatically chained. You are responsible for calling
super.finalize() yourself.
Uncaught exceptions thrown by finalizers are ignored and do not terminate the finalizer thread. See
Effective Java Item 7, "Avoid finalizers" for more.
MediaRecorder test的更多相关文章
- 录像时调用MediaRecorder的start()时发生start failed: -19错误
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- Android音视频之MediaRecorder音视频录制
前言: 公司产品有很多地方都需要上传音频视频,今天抽空总结一下音频视频的录制.学习的主角是MediaRecorder类. MediaRecorder类介绍: MediaRecorder类是Androi ...
- Android音频开发之MediaRecorder/MediaPlayer
前言: 上次我们介绍了实时采集音频数据以及播放,今天我们来认识一下直接录制文件的方式. 直接上代码:录制管理类 public class MediaRecorderManager { public s ...
- Android-MediaRecorder-音频录制-警告-W/MediaRecorder(13811): mediarecorder went away with unhandled events
Android-MediaRecorder-音频录制-警告-W/MediaRecorder(13811): mediarecorder went away with unhandled events ...
- Android调用手机摄像头使用MediaRecorder录像并播放
最近在项目开发中需要调用系统的摄像头录像并播放. 在开发中遇到了两个问题,记录下: (1)开发过程中出现摄像头占用,启动失败,报错.但是我已经在onDestory()中关闭了资源. 报错原因:打开程序 ...
- 【Android】用MediaRecorder录制视频太短崩的问题
具体表现: 调用MediaRecorder的start()与stop()间隔不能小于1秒(有时候大于1秒也崩),否则必崩. 错误信息: java.lang.RuntimeException: stop ...
- Android开发之MediaRecorder类详解
MediaRecorder类介绍: MediaRecorder类是Android sdk提供的一个专门用于音视频录制,一般利用手机麦克风采集音频,摄像头采集图片信息. MediaRecorder主要函 ...
- Android MediaRecorder录制音频
今天介绍一下在Android中怎么录制音频,在Android中使用MediaRecorder来录制音频,步骤: 1.创建MediaRecorder对象. 2.调用MediaRecorder对象的set ...
- Android多媒体录制--MediaRecorder视频录制
Android使用MediaRecorder类进行视频的录制. 需要注意,使用MediaRecorder 录音录像 的设置代码步骤一定要按照API指定的顺序来设置,否则报错 步骤为: 1.设置视频源, ...
- 使用MediaRecorder录制视频短片
MediaRecorder除了可用于录制音频之外,还可用于录制视频,使用MediaRecorder录制视频与录制音频的步骤基本相同.只是录制视频时不仅需要采集声音,还需要采集图像.为了让MediaRe ...
随机推荐
- To ChatGPT:让你更加随意地使用所有ChatGPT应用
现在其实已经有很多在线的llm服务了,当然也存在许多开源部署方案,但是不知道大家有没有发现一个问题,目前基于ChatGPT开发的应用,都是使用的OpenAI的接口.换句话说,如果没有OpenAI账号, ...
- IcedID恶意文档钓鱼手法剖析
析 利用oletools静态分析,提取宏代码,如图: Function contents() With ActiveDocument.Content.Find loveDoor = .Execute( ...
- 大数据面试题集锦-Hadoop面试题(四)-YARN
你准备好面试了吗?这里有一些面试中可能会问到的问题以及相对应的答案.如果你需要更多的面试经验和面试题,关注一下"张飞的猪大数据分享"吧,公众号会不定时的分享相关的知识和资料. 目录 ...
- Django学习笔记:第二章django的安装和创建应用
1.安装Django 终端运行 pip install django 查看django是否安装成功 python -m django --version 1.1 安装虚拟环境 在控制台运行 pip i ...
- Linux 软件包:kernel*
运行命令: # rpm -qa | grep $(uname -r) | while read pkgname ; do echo "### $pkgname ###" ; rpm ...
- 笔记:KMP的复习
Record 一个重要的字符串算法,这是第三次复习. 通过总结我认为之所以某个算法总是忘记,是因为大脑始终没有认可这种算法的逻辑(也就是脑回路). 本篇主要讲解从KMP的应用场景,再到算法知识,以及例 ...
- AcWing 4798. 打怪兽题解
可以从 \(1\) 枚举到 \(n\) 表示要打多少个怪兽. 因为你要打 \(t\) 个怪兽,并不管顺序,所以我们可以对 \([1, t]\) 这一段进行排序,然后计算 \(a[t], a[t - 2 ...
- 如何用IoT边缘连接器实现云端应用控制PLC?
本文分享自华为云社区<数字工厂深入浅出系列(十):IoT边缘连接器实现云端应用控制PLC>,作者: 云起MAE. 通过IoT云平台和边缘计算的技术设施,工厂可以将PLC等OT过程制造控制器 ...
- 记一次MySql灾难性事件
2023年8月8日,本来系一个风和日丽的夏天中的平凡一天,但这种平凡,注定住佢一定唔平凡,唉...现在回忆起都阵阵咁痛!!! 重要嘅事情讲三次,唔好手贱,唔好手贱,唔好手贱 事日,如常上班,本人系一名 ...
- JVM性能监控和调优
JVM性能监控和调优 JVM(Java虚拟机)调优是为了优化Java应用程序的性能和稳定性.JVM调优的目的是通过调整JVM的配置参数和优化应用程序代码,使其在给定的硬件和软件环境下达到更好的性能表现 ...