Oracle Java Mission Control:终极指南

“我们喜欢关注Mikhail Vorontsov的博客,并获得他对Java Performance相关问题的看法。 我们曾多次被问到Takipi的Java错误分析与Java Mission Control和Java Flight Recorder有何不同。 因此,尽管工具之间的差异很大(主要是,JMC主要是桌面应用程序,而Takipi是专门为大型生产环境设计的),但我们认为这是增加JMC全面概述的好机会。

除了Java Mission Control是桌面应用程序之外,主要的区别在于使用Takipi,您将获得始终在线的错误分析,直到导致每次错误的变量值和实际代码。 因此,在JMC在概要分析中具有很高的价值,但在堆栈跟踪级别停止的情况下,Takipi会深入研究实际代码以帮助您重现和解决生产错误。

另一个区别是使用分布式系统,JMC可在单台计算机上工作,而Takipi的仪表板可在不同的计算机上显示多个JVM。 因此,如果您要监视大型生产系统,请尝试Takipi。 但是,如果您正在寻找一款出色的桌面分析工具,那么JMC可能就是您的最佳选择。”

–塔基皮(Takipi)Alex Zhitnitsky

Mikhail是java-performance.info的首席博客作者。 他一遍又一遍地工作,使Java应用程序速度提高了5%,而且更加紧凑。 Mikhail喜欢在悉尼(澳大利亚)的一个郊区度过园艺和陪伴儿子的时光。

目录

1. 简介
2. Java任务控制
3. JMC许可证 4. 实时过程监控 – 4.1 事件触发 – 4.2 内存选项卡 – 4.3 线程选项卡 5. 使用Java Flight Recorder – 5.1 如何运行 – 5.2 初始屏幕 – 5.3 内存选项卡 – 5.4 分配选项卡 – – 5.4.1 按类别 – – 5.4.2 通过线程 – – 5.4.3 分配配置文件 – 5.5 代码选项卡 – – 5.5.1 热门方法 – – 5.5.2 例外选项卡 – – 5.5.3 线程选项卡 – – 5.5.4 I / O选项卡 6. Java生产工具生态系统

1.简介

本文将介绍Java Mission Control(一种自Java 7u40起可用的JDK GUI工具)以及Java Flight Recorder。

2. Java任务控制

从Java 7u40开始, Oracle Java Mission Control是Oracle JDK中提供的工具。 该工具源自JRockit JVM,已有多年的历史。 由两名JRockit高级开发人员撰写的Oracle JRockit:权威指南中对JRockit及其版本的JMC进行了很好的描述(另请访问Marcus Hirt博客 –您应该查找JMC任何新闻的第一位)。

Oracle JMC可以用于两个主要目的:

  • 监视多个正在运行的Oracle JVM的状态
  • Java Flight Recorder转储文件分析

3. JMC许可证

当前的JMC许可证(请参见此处的 “补充许可条款”)允许您自由使用JMC进行开发,但是如果要在生产中使用它,则需要购买商业许可证。

4.实时过程监控

您可以通过在主窗口的“ JVM浏览器”选项卡中右键单击并选择“启动JMX控制台”菜单选项来附加到JVM。 您将看到以下屏幕。 这里没有什么花哨的地方,只需注意“ +”按钮,您可以在该屏幕上添加更多的计数器。

main_monitoring

4.1事件触发

触发器允许您运行各种操作,以响应某些JMX计数器超过给定时间段(可选)并保持在阈值以上。 例如,您可以在足够长时间的高CPU活动的情况下触发JFR记录,以了解是什么原因导致的(并且您不仅限于单个记录!)。

请注意,触发器可以在任何JMX计数器上运行(您是否看到“添加...”按钮?)–您可以设置比标准分发版中可用触发器更多的触发器,并将设置导出到磁盘上。 您甚至可以使用自己的应用程序JMX计数器。

触发器

转到“规则详细信息”窗口中的“操作”选项卡–您可以在此处指定在发生事件时要执行的操作。

触发动作

请注意,如果要正确使用JFR,您需要至少在Java 7 update 40中运行您的应用程序–我无法记录Java7u40之前的JRE的任何事件(可能是某些JRE版本之间的错误或不兼容……) 。

4.2内存选项卡

下一个选项卡–“内存”将为您提供有关应用程序堆和垃圾回收的摘要信息。 请注意,您可以运行完整的GC并从该页面请求堆转储(在屏幕截图中突出显示)。 但从本质上讲,此页面只是一个不错的UI,围绕着其他来源提供的功能。

记忆

4.3线程选项卡

此标签可让您查看应用程序中正在运行的线程及其当前堆栈转储的列表(每秒更新一次)。 它还可以让您看到:

  • 线程状态-运行或阻塞/等待
  • 锁名
  • 如果线程死锁
  • 线程被阻止的次数
  • 每线程CPU使用率!
  • 自启动以来,给定线程分配的内存量

请记住,您必须打开CPU分析,死锁检测和内存分配跟踪才能以实时模式获取该信息:

线程标签

5.使用Java Flight Recorder

Java Flight Recorder(在本文的其余部分中将其称为JFR)是JMC的功能。 从用户的角度来看,您以固定的记录时间/最大记录文件大小/最大记录长度(您的应用可以在此之前完成)运行JFR,然后等待直到记录完成。 之后,您可以在JMC中对其进行分析。

5.1如何运行JFR

您需要向要连接的JVM添加以下两个选项:

-XX:+UnlockCommercialFeatures -XX:+FlightRecorder

接下来,如果您想从JFR获得任何有用的信息,则需要连接到Java 7u40或更高版本。 文档声称您可以从Java 7u4连接到任何JVM,但是我无法从这些JVM中获得任何有用的信息。
要记住的第三件事是,默认情况下,JVM仅允许在安全点进行堆栈跟踪。 因此,在某些情况下,您可能有不正确的堆栈跟踪信息。 如果要更精确的堆栈跟踪, JFR文档会告诉您设置另外两个参数(您将无法在运行的JVM上设置这些参数):

-XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints

最后,如果您希望有尽可能多的文件I / O,Java异常和CPU性能分析信息,请确保已选择启用参数,并将其阈值设置为“ 1 ms”。

5.2 JFR初始屏幕

jfr_main

JFR记录的初始屏幕包含记录期间的CPU和堆使用情况图表。 将其视为您的过程的概述。 在此(和其他JFR屏幕)上,您唯一需要注意的是可以通过任何图表选择时间范围进行分析的功能。 勾选“同步选择”复选框,以在每个窗口上保持相同的时间范围–这将使您仅检查在此范围内发生的事件。

此屏幕上还有一个有趣的功能:底部的“ JVM信息”选项卡包含在已配置的JVM中设置的所有JVM参数的值。 您可以通过-XX:+ PrintFlagsFinal JVM选项获取它们,但是通过UI远程获取它们更为方便:

java_opts

5.3 Java Flight Recorder的“内存”选项卡

内存选项卡为您提供有关以下信息:

  • 机器RAM和Java堆的使用情况(您可以轻松地猜测在录制过程中是否发生了交换或GC过多)。
  • 垃圾收集–何时,为什么,清理多长时间和清理多少空间。
  • 内存分配–在TLAB内部/外部,按类/线程/堆栈跟踪。
  • 堆快照–类名占用的内存数量/数量

本质上,此选项卡将使您可以检查应用程序中的内存分配率,它对GC施加的压力以及哪些代码路径导致了意外的高分配率。 JFR还具有其非常特殊的功能–它允许分别跟踪TLAB和全局堆分配(TLAB分配要快得多,因为它们不需要任何同步)。

通常,如果满足以下条件,您的应用将变得更快:

  • 它分配较少的对象(按分配的RAM数量和数量)
  • 您的旧(完整)垃圾收集较少,因为它们速度较慢并且需要停止运行(至少一段时间)
  • 您已将非TLAB对象分配最小化

让我们看看如何监视此信息。 “概述”选项卡显示有关内存消耗/分配/垃圾收集的常规信息。

内存

您可以在此处查看“预留堆”与“预留堆”的距离。 它显示了在输入尖峰的情况下您有多少保证金。 蓝线(“ Used Heap”)显示了旧一代中有多少数据正在泄漏/保持:如果您的锯切模式随着每一步的增长而增加,则旧一代正在增长。 每个步骤的最低点大约显示了旧一代中的数据量(其中某些数据可能符合垃圾收集的条件)。 屏幕截图上的模式表明,应用程序仅分配由年轻一代GC收集的短寿命对象(可能是一些无状态的处理)。

您还可以检查“ TLAB的分配率”字段-它显示每秒分配多少内存(还有另一个计数器称为“对象的分配率”,但通常应该很低)。 126 Mb / sec(在示例中)是批处理的相当平均速率(将其与HDD读取速度进行比较),但对于大多数交互式应用程序而言却很高。 您可以将此数字用作总体对象分配优化的指标。

以下三个选项卡:“垃圾回收”,“ GC时间”和“ GC配置”非常明显,它们可能是有关GC原因和GC导致的最长暂停(这会影响您的应用程序延迟)的信息来源。

5.4 Java Flight Recorder的“分配”选项卡

“分配”选项卡为您提供有关所有对象分配的信息。 您应该转到“在新的TLAB中分配”标签。 在这里,您可以看到每个类(正在分配哪些类实例),每个线程(哪个线程分配了大多数对象)或每个调用堆栈(将其作为全局分配信息进行处理)的对象分配配置文件。

jfr分配

5.4.1按类别分配

让我们看看您可以从每个选项卡中找到什么。 第一个(在上面的屏幕快照中)“按类分配”使您可以查看分配了最多类的类。 在中间选项卡中选择一种类型,您将获得该类实例的所有分配的分配统计信息(带有堆栈跟踪)。

您应该在这里进行的第一步检查是,是否​​找到任何“无用的”对象分配:任何原始包装器,例如Integer或Double(通常指示使用JDK集合), java.util.Datejava.util.GregorianCalendar , Pattern ,任何格式化程序等。我在最近的文章的第二部分中写了一些内存调整提示。 “堆栈跟踪”选项卡将使您找到需要改进的代码。

要检查的另一个问题是过多的对象分配。 不幸的是,这里没有给出一般性建议-您应该使用常识来理解“过多”在应用程序中的含义。 常见的问题是无用的防御性复制(对于只读客户端)和String.substring的过度使用,因为Java 7u6中 String类发生了更改。

5.4.2通过线程分配

如果您的应用程序中有几种数据处理类型的线程(或者您可以区分哪些任务由哪个线程运行),“按线程分配”选项卡可能会很有趣–在这种情况下,您可以找出每个线程的对象分配:

jfr-bythread

5.4.3分配配置文件

如果所有线程都是统一的(或者您只有一个数据处理线程),或者您只想查看高级分配信息,则直接转到“分配配置文件”选项卡。 在这里,您将看到在所有线程中的每个调用堆栈上分配了多少内存。

jfr-allocation-profile

此视图使您可以找到对内存子系统施加最大压力的代码路径。 您应在此处区分预期分配和过度分配。 例如,如果从方法A多次调用方法B,并且方法B在其中分配了一些内存,并且保证方法B的所有调用都返回相同的结果–这意味着您过多地调用了方法B。过多的方法调用的另一个示例/ object分配可以是Logger.log调用中的字符串连接 。 最后,提防任何迫使您创建可重复使用对象的优化–仅在每个线程存储的对象不超过一个的情况下才应池/缓存对象(众所周知的示例是ThreadLocal <DateFormat> )。

5.5 Java Flight Recorder的“代码”选项卡

JFR视图中的下一个大标签是“代码”标签。 这对于CPU优化非常有用:

JFR代码

概述选项卡为您提供2个视图:“热程序包”和“热类”,在这里您可以查看每个Java包所花费的时间,在“热类”中,您可以查看应用程序中CPU最昂贵的类。

如果您使用一些对它们几乎没有控制权的第三方库,并且希望获得代码(一个软件包),第三方代码(其他一些软件包)和JDK(一个几个软件包)。 同时,我将其称为“ CIO / CTO视图”,因为它不是交互式的,并且不能让您看到这些包中的哪些类应归咎于。 作为开发人员,最好在此标签中的大多数其他表上使用过滤:

热门课程

5.5.1热门方法/调用树选项卡

实际上,“ Hot Methods”和“ Call Tree”选项卡是任何Java分析器提供的普通视图。 它们显示了您的应用程序热点-应用程序花费了大部分时间的方法以及导致这些热点的代码路径。 通常,您应该从“热方法”选项卡开始调整应用程序CPU,然后在“调用树”选项卡中检查整体图像是否足够合理。

您应该意识到,所有“低影响”分析器都在使用采样来获取CPU概要文件。 采样探查器会定期对所有应用程序线程进行堆栈跟踪转储。 通常的采样时间为10毫秒。 通常不建议将此时间缩短到少于1 ms,因为采样影响将开始变得明显。

结果,您将看到的CPU配置文件在统计上是有效的,但并不精确。 例如,您可能不太幸运在采样间隔内碰到一些很少见的方法。 有时会发生这种情况……如果您怀疑探查器向您显示的信息不正确,请尝试重新组织“热”方法–将方法内联到最热路径的调用方中,或者相反,尝试将方法拆分为2部分–足以从探查器视图中删除方法。

jfr-hotmethods

5.5.2例外选项卡

“例外”选项卡是“代码”视图中的最后一个选项卡,在常规优化情况下值得关注。 引发Java异常非常慢 ,必须严格限制它们在高性能代码中的特殊使用情况。

“例外”视图将为您提供有关记录过程中引发的例外数量及其堆栈跟踪和详细信息的统计信息。 浏览“概述”标签,然后查看是否看到:

  • 任何意外的例外
  • 意外的异常数量

如果发现任何可疑的内容,请转到“例外”选项卡并检查例外的详细信息。 尝试摆脱至少大多数。

jfr-exceptions

5.6 JFR线程选项卡

“ JFR线程”选项卡为您提供以下信息:

  • CPU使用率/线程计数表
  • 每个线程的CPU配置文件–与“代码”选项卡上的配置文件类似,但基于每个线程
  • 竞争–哪些线程被哪些线程阻塞以及持续多长时间
  • 延迟–导致应用程序线程进入等待状态的原因(您将在此处清楚地看到一些JFR开销)
  • 锁实例–导致线程争用的锁

我不会在本文中详细介绍此选项卡,因为仅对于高级高级优化(例如锁剥离,原子/易失变量,非阻塞算法等)才需要此选项卡。

5.7 JFR I / O选项卡

“ I / O”选项卡应用于检查应用程序中的文件和套接字输入/输出。 它使您可以查看应用程序正在处理的文件,读/写的大小以及完成I / O操作所需的时间。 您还可以在应用程序中查看I / O事件的顺序。

与大多数其他Java Flight Recorder选项卡一样,您需要自己解释此选项卡的输出。 以下是一些您可能会问自己的示例问题:

  • 我是否看到任何意外的I / O操作(在我不希望在此处看到的文件上)?
  • 我是否多次打开/读取/关闭同一文件?
  • 是否需要读/写块大小? 他们不是太小了吗?

请注意,如果使用SSD,强烈建议将“文件读取阈值” JFR参数(可以在开始JFR记录时进行设置)减小到1 ms。 您可能会错过默认值为10毫秒阈值的SSD上太多的I / O事件。 I / O“概述”选项卡很棒,但与以下4个专用选项卡相比,它不提供任何额外的信息。 4个专用选项卡(文件读/写,套接字读/写)中的每个选项卡彼此相似,因此让我们看一下其中的一个-“文件读”。

jfr-io

这里有3个标签:“按文件”,“按线程”和“按事件”。 前两个选项卡按文件和线程将操作分组。 最后一个选项卡仅列出所有I / O事件,但是如果您要调查对特定文件执行了哪些操作(按“路径”过滤),或者想弄清楚是否短时发出了读取请求,则该选项卡可能非常有用。大量数据(按“读取的字节数”排序),这会损害应用程序的性能。 通常,您应该始终缓冲磁盘读取,以便仅文件尾部读取会小于缓冲区大小。

请注意,I / O信息也是通过采样收集的,因此“ I / O”选项卡中将缺少某些(或很多)文件操作。 这在顶级固态硬盘上尤其明显。

还有一个相关的屏幕,使您可以按各个字段对I / O(和其他一些)事件进行分组。 例如,您可能想要找出多少个读操作已读取给定数量的字节(并检查其堆栈跟踪)。 转到JFR视图左侧的“事件”标签,然后转到最后一个名为“直方图”的标签。

您可以在此处按可用列对各种事件进行过滤/排序/分组。 每个JFR事件都有一个相关的堆栈跟踪,因此您可以查看所选事件的堆栈跟踪信息:

jfr-io-events

JFR没有涵盖一个基本的性能调优领域:内存使用反模式,例如重复的字符串或容量很大的几乎为空的集合。 JFR不为您提供此类信息,因为您需要进行堆转储才能进行此类分析。 那是您需要一个名为“ JOverflow Analysis”的JMC插件的地方。

6. Java生产工具生态系统

在Takipi的先前文章中,我们介绍了用于生产的Java工具生态系统。 如果您想发现更多新工具,可以查看以下文章:

  • 主要版本发布后Java开发人员应使用的15种工具
  • 异步进入主流:您必须知道的7种反应式编程工具
  • Java开发人员应该知道的7种新工具

翻译自: https://www.javacodegeeks.com/2015/03/oracle-java-mission-control-the-ultimate-guide.html

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

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

相关文章

用计算机演奏打上花火,米津玄师打上花火歌词中文谐音(最好要简单全面)

满意答案.Ador2020.03.19采纳率&#xff1a;60% 等级&#xff1a;14已帮助&#xff1a;2446人打上花火 - 《升起的烟花&#xff0c;从下面看&#xff1f;还是从侧面看&#xff1f;》主题曲 词&#xff1a;米津玄师 曲&#xff1a;米津玄师xDAOKO有些地方一些音不对请见谅哈 …

两个向量之间的夹角公式_关于平面向量夹角求参数取值范围的两种基本解法介绍...

平面向量的夹角问题是考察高中向量知识掌握程度的常考内容&#xff0c;主要涉及到的知识点是平面向量的数量积公式。在这里介绍一道常见的平面向量题目&#xff0c;通过两种最基本的解法&#xff0c;来帮助同学们理解向量之间的夹角。填空题第15题&#xff1a;设平面向量a(-2&a…

宿迁学院的计算机系怎么样,宿迁学院是几本 学生评价怎么样好不好(10条)

宿迁学院是几本 学生评价怎么样好不好(10条)考生之前的努力奋斗就是为了高考报志愿时有更多的底气和把握。而俗话说&#xff0c;三分考、七分报&#xff0c;有很多考生和家长都还不太了解大学的一本、二本、三本之分&#xff0c;本科高校只有一个层次和等级&#xff0c;就是(本…

Google Guava:您永远不会知道的5件事

每个开发人员都可以使用哪些鲜为人知的Google Guava功能&#xff1f; 它是那里最受欢迎的库之一&#xff0c;它是开源的&#xff0c;您可能已经知道了&#xff0c;它来自人们玩Quidditch作为一项真正的运动的地方&#xff08;至少在The Internship上 &#xff09;。 它不是哈利…

hql中获取前一天的数据_PostgreSql 怎么获取数据库中关键系统信息(一)

如何通过SQL 的方式获得数据库中的一些关键信息&#xff0c;是一个DB最正常的工作&#xff0c;如何通过一些SQL来获得PG的一些关键的参数和信息或者是数据库中的一些信息是需要知道的一件事情。以下是部分 1一般来说每种数据库中都有一个或几个系统的数据库&#xff0c;在PG中s…

计算机信息技术为教育带来的变化,信息技术对课堂教学带来的变化

信息技术对课堂教学带来的变化谈一谈信息技术对教育教学的影响以及给课堂教学带来的变化龙川县培英学校 骆俊武在信息技术迅速发展的今天&#xff0c;计算机的应用、网络技术应用&#xff0c;直接影响着学校的的教育教学系统、学校的教育模式、教第一文库网师的教学方法。与传统…

abd shell关闭所有程序_一个 Shell 脚本逆袭的规范,拿走不谢

指定一个默认脚本解释器“#!” 是一个约定的标记&#xff0c;它告诉系统这个脚本需要什么解释器来执行&#xff0c;即使用哪一种Shell。他指明了当我们没有指定解释器的时候默认的解释器。为什么建议要在首行加上脚本默认解释器&#xff0c;因为有的操作系统的默认解释器不是sh…

unity 是厘米还是米_1种“竹节参”,植株有40厘米高,能挂果,果子成熟后变红,珍贵...

很多顽强的野生植物会在竹林里生长&#xff0c;我们都知道价值比较高的七叶一枝花、金线莲等植物&#xff0c;就会生长在湿润的竹林里&#xff0c;它们喜欢湿度比较高的环境&#xff0c;所以在其它比较潮湿的地方也有。不过还有1种“竹节参”&#xff0c;它在竹林里也是常见的&…

JS中的三种弹框

1.alert();"弹框提示" 2.confirm();“确认信息”3.prompt();"输入信息"转载于:https://www.cnblogs.com/hr2014/p/3637692.html

python 窗口 网页 访问_同事用Python操控浏览器运行,引的妹子围观不止!

Python可以做的事情很多&#xff0c;小编也正在奋力挖掘中&#xff0c;今天给大家分享一下&#xff0c;如何用Python来控制浏览器的运行及操作&#xff01;嗯 关于这个&#xff0c;大体有两种方式&#xff0c;且听小编一一列举&#xff1a;一、使用系统自带库 os这个方法的话任…

8g可用 安装内存16g_同样是16g内存,为啥都选两条8G,不选16G单条,这难道有啥讲究?...

相信大家在看一些大神的配置&#xff0c;或者蜗牛这种装机小编的配置的时候&#xff0c;发现内存经常是两条8G&#xff0c;而不是一条16G,很多小伙伴也发出了疑问&#xff0c;难道这里面有什么讲究&#xff1f;这就要扯到双通道&#xff0c;一般来说CPU或者主板的内存控制器有两…

Generate GUID using vbscript

在 .msi 中 的 Component table&#xff0c;查看 ComponentId 列&#xff0c;是一个16进制数的字符串&#xff0c; 用 InstallShield IDE 添加一个 component &#xff0c;ComponentId 会自动生成&#xff0c;点击“Generate GUID” 会重新生成一个新的 ComponentId&#xff0c…

ps怎么对比原图快捷键_PS教程:P图前后,你还能认出这是同一个人吗?

编按&#xff1a;PS一直被誉为亚洲四大邪术之一&#xff0c;比如下图你敢相信这是同一个人吗&#xff1f;是不是隐隐约约回忆起了乔碧萝殿下的辉煌&#xff1f;但话说回来&#xff0c;谁不想看到最好的自己呢&#xff1f;今天我们就看看PS如何将人脱胎换骨&#xff0c;学会这招…

第一个被赋予公明身份的机器人_一文读懂机器人的“眼睛”

看过漫威电影的同学都知道&#xff0c;钢铁侠在装甲里一眨眼&#xff0c;就通过眼球追踪操控人机互动&#xff0c;集黑科技于一身的装备简直不要太炫酷。如今&#xff0c;我们再回头看钢铁侠的AI识别系统&#xff0c;不禁思考这背后的视觉技术。如何让机器人像人类一样获取视觉…

太和二中计算机考试,安徽省太和二中高二数学下册期末考试试题精选

安徽省太和二中高二数学下册期末考试试题精选一.选择题(50分)1.设 是两条不同的直线, 是两个不同的平面,下列命题中正确的是( D )A . 若 , , ,则 B.若 , , ,则C.若 , , ,则 D.若 , , ,则2. 若 &#xff0c;则函数 的两个零点分别位于区间( A )A. 和 内 B. 和 内 C. 和 内 D. 和…

git获取本地版本号_Git使用小结

Git1.Git介绍Git是一个开源的分布式版本控制系统&#xff0c;是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件&#xff0c;Git可以使用本地创建仓库与网络仓库&#xff0c;解决了集中管理型版本控制软件存在的一些问题(CVS、VSS、SVN)。2.Gi…

sql server2008如何创建外键

原文地址&#xff1a;http://blog.csdn.net/zuozuo1245/article/details/8644115 以前创建数据库时就是有主键的创建了主键&#xff0c;但是表之间的关系没有联系&#xff0c;要建数据库关系图只有主键没有外键时不行的。 建外键的前提是此外键必须是另外一个表的主键。建外键的…

字符集_第07期:有关 MySQL 字符集的 SQL 语句

本篇为理清字符集的续篇(上一篇&#xff1a;第06期&#xff1a;梳理 MySQL 字符集的相关概念)&#xff0c;重点讲述字符集涉及到的 sql 语句用法。一、character introducer翻译过来就是字符引导。也就是针对字符串&#xff0c;显式的给定一个字符编码和排序规则&#xff0c;不…

怎么调整计算机显示屏,电脑显示器怎样调大屏幕

电脑显示器怎样调大屏幕你们知道怎么调整电脑显示器的屏幕吗?下面是应届毕业生小编带来的关于电脑显示器怎样调大屏幕的内容&#xff0c;欢迎阅读!电脑显示器怎样调大屏幕?以前的xp系统是在桌面点击右键然后选择属性&#xff0c;在属性里设置分辨率的。而win7则有点不同&…

win7打开计算机死机,win7系统进入桌面总是死机或者卡死怎么办

??最近有位深度技术win7旗舰版用户的电脑总是在进入桌面的时候莫名其妙的死机或者卡死&#xff0c;遇到这种情况我们应该怎么办呢&#xff1f;我们可以通重启资源管理器来解决屏幕卡死的问题&#xff0c;首先我们要打开任务管理器&#xff0c;下面由小编来跟大家介绍一下win7…