网站 logfiles网络专业有哪些

web/2025/9/28 1:51:31/文章来源:
网站 logfiles,网络专业有哪些,网站聚合怎么做,php大气企业网站通过前面几个课时的学习#xff0c;相信你对 JVM 的理论及实践等相关知识有了一个大体的印象。而本课时将重点讲解 JVM 的排查与优化#xff0c;这样就会对 JVM 的知识点有一个完整的认识#xff0c;从而可以更好地应用于实际工作或者面试了。 我们本课时的面试题是#x…通过前面几个课时的学习相信你对 JVM 的理论及实践等相关知识有了一个大体的印象。而本课时将重点讲解 JVM 的排查与优化这样就会对 JVM 的知识点有一个完整的认识从而可以更好地应用于实际工作或者面试了。 我们本课时的面试题是生产环境如何排查问题 在生产环境中排查问题和优化JVM通常涉及多个步骤以下是一些建议的做法 1. 监控和日志收集 使用监控工具使用如JConsole、VisualVM、JMX等监控工具来观察JVM的内存使用、GC行为、线程状态等。收集日志启用并收集JVM的日志特别是GC日志和异常堆栈跟踪。这些日志对于定位问题至关重要。 2. 问题排查 分析GC日志GC日志可以提供关于内存分配、垃圾回收行为以及潜在问题的详细信息。使用工具如GCViewer或GC Easy来分析日志。检查堆内存使用情况使用jmap命令查看堆内存的使用情况找出是否存在内存泄漏或大量对象占用内存。检查线程状态使用jstack命令或监控工具检查线程状态查找是否存在死锁、线程阻塞或过多的线程创建。性能分析工具使用如YourKit、JProfiler等性能分析工具来查找性能瓶颈和优化点。 3. JVM调优 堆内存调优根据应用的需求和监控数据调整初始堆大小-Xms和最大堆大小-Xmx。避免堆内存过小导致频繁GC也避免堆内存过大导致资源浪费。垃圾回收器选择和调优根据应用的特性和监控数据选择合适的垃圾回收器如Parallel GC、CMS GC、G1 GC并进行调优。调整相关参数如新生代大小、老年代大小、GC触发条件等。线程堆栈大小调优根据应用的线程使用情况调整线程堆栈大小-Xss。过小的堆栈可能导致栈溢出错误过大的堆栈则浪费内存。 4. 代码优化 减少对象创建避免在循环中创建大量短生命周期的对象使用对象池等技术来复用对象。优化数据结构选择合适的数据结构来存储数据减少内存占用和提高访问效率。减少锁竞争避免过多的锁竞争和死锁使用无锁编程技术或优化锁的使用方式。 典型回答 如果是在生产环境中直接排查 JVM 的话最简单的做法就是使用 JDK 自带的 6 个非常实用的命令行工具来排查。它们分别是jps、jstat、jinfo、jmap、jhat 和 jstack它们都位于 JDK 的 bin 目录下可以使用命令行工具直接运行其目录如下图所示 接下来我们来看看这些工具的具体使用。 1. jps虚拟机进程状况工具 jpsJVM Process Status tool虚拟机进程状况工具它的功能和 Linux 中的 ps 命令比较类似用于列出正在运行的 JVM 的 LVMIDLocal Virtual Machine IDentifier本地虚拟机唯一 ID以及 JVM 的执行主类、JVM 启动参数等信息。语法如下 jps [options] [hostid]常用的 options 选项 -l用于输出运行主类的全名如果是 jar 包则输出 jar 包的路径 -q用于输出 LVMIDLocal Virtual Machine Identifier虚拟机唯一 ID -m用于输出虚拟机启动时传递给主类 main() 方法的参数 -v用于输出启动时的 JVM 参数。 使用实例 ➜  jps -l 68848 40085 org.jetbrains.jps.cmdline.Launcher 40086 com.example.optimize.NativeOptimize 40109 jdk.jcmd/sun.tools.jps.Jps 68879 org.jetbrains.idea.maven.server.RemoteMavenServer36 ➜  jps -q 40368 68848 40085 40086 68879 ➜  jps -m 40400 Jps -m 68848 40085 Launcher /Applications/IntelliJ IDEA2.app/Contents/lib/idea_rt.jar:/Applications/IntelliJ IDEA2.app/Contents/lib/oro-2.0.8.jar:/Applications/IntelliJ IDEA2.app/Contents/lib/resources_en.jar:/Applications/IntelliJ IDEA2.app/Contents/lib/maven-model-3.6.1.jar:/Applications/IntelliJ IDEA2.app/Contents/lib/qdox-2.0-M10.jar:/Applications/IntelliJ IDEA2.app/Contents/lib/plexus-component-annotations-1.7.1.jar:/Applications/IntelliJ IDEA2.app/Contents/lib/httpcore-4.4.13.jar:/Applications/IntelliJ IDEA2.app/Contents/lib/maven-resolver-api-1.3.3.jar:/Applications/IntelliJ IDEA2.app/Contents/lib/netty-common-4.1.47.Final.jar:/Applications/IntelliJ IDEA2.app/Contents/plugins/java/lib/maven-resolver-connector-basic-1.3.3.jar:/Applications/IntelliJ IDEA2.app/Contents/lib/maven-artifact-3.6.1.jar:/Applications/IntelliJ IDEA2.app/Contents/lib/plexus-utils-3.2.0.jar:/Applications/IntelliJ IDEA2.app/Contents/lib/netty-resolver-4.1.47.Final.jar:/Applications/IntelliJ IDEA2.app/Contents/lib/guava-28.2- 40086 NativeOptimize 68879 RemoteMavenServer36 ➜  jps -v 68848  -Xms128m -Xmx2048m -XX:ReservedCodeCacheSize240m -XX:UseCompressedOops -Dfile.encodingUTF-8 -XX:UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB50 -ea -XX:CICompilerCount2 -Dsun.io.useCanonPrefixCachefalse -Djava.net.preferIPv4Stacktrue -Djdk.http.auth.tunneling.disabledSchemes -XX:HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Djdk.attach.allowAttachSelf -Dkotlinx.coroutines.debugoff -Djdk.module.illegalAccess.silenttrue -Xverify:none -XX:ErrorFile/Users/admin/java_error_in_idea_%p.log -XX:HeapDumpPath/Users/admin/java_error_in_idea.hprof -javaagent:/Users/admin/.jetbrains/jetbrains-agent-v3.2.0.de72.619 -Djb.vmOptionsFile/Users/admin/Library/Application Support/JetBrains/IntelliJIdea2020.1/idea.vmoptions -Didea.paths.selectorIntelliJIdea2020.1 -Didea.executableidea -Didea.home.path/Applications/IntelliJ IDEA2.app/Contents -Didea.vendor.nameJetBrains 40085 Launcher -Xmx700m -Djava.awt.headlesstrue -Djava.endorsed.dirs -Djdt.compiler.useSingleThreadtrue -Dpreload.project.path/Users/admin/github/blog-example/blog-example -Dpreload.config.path/Users/admin/Library/Application Support/JetBrains/IntelliJIdea2020.1/options -Dcompile.parallelfalse -Drebuild.on.dependency.changetrue -Djava.net.preferIPv4Stacktrue -Dio.netty.initialSeedUniquifier1366842080359982660 -Dfile.encodingUTF-8 -Duser.languagezh -Duser.countryCN -Didea.paths.selectorIntelliJIdea2020.1 -Didea.home.path/Applications/IntelliJ IDEA2.app/Contents -Didea.config.path/Users/admin/Library/Application Support/JetBrains/IntelliJIdea2020.1 -Didea.plugins.path/Users/admin/Library/Application Support/JetBrains/IntelliJIdea2020.1/plugins -Djps.log.dir/Users/admin/Library/Logs/JetBrains/IntelliJIdea2020.1/build-log -Djps.fallback.jdk.home/Applications/IntelliJ IDEA2.app/Contents/jbr/Contents/Home -Djps.fallback.jdk.version11.0.6 -Dio.netty.noUnsafetrue -Djava.io.tmpdir/Users/admin/Library/Caches/Je 40086 NativeOptimize -Dfile.encodingUTF-8 40425 Jps -Dapplication.home/Users/admin/Library/Java/JavaVirtualMachines/openjdk-14/Contents/Home -Xms8m -Djdk.module.mainjdk.jcmd 68879 RemoteMavenServer36 -Djava.awt.headlesstrue -Dmaven.defaultProjectBuilder.disableGlobalModelCachetrue -Xmx768m -Didea.maven.embedder.version3.6.1 -Dmaven.ext.class.path/Applications/IntelliJ IDEA2.app/Contents/plugins/maven/lib/maven-event-listener.jar -Dfile.encodingUTF-82. jstat虚拟机统计信息监视工具 jstatJVM Statistics Monitoring Tool虚拟机统计信息监视工具用于监控虚拟机的运行状态信息。 例如我们用它来查询某个 Java 进程的垃圾收集情况示例如下 ➜  jstat -gc 43704S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT    CGC    CGCT     GCT 10752.0 10752.0  0.0    0.0   65536.0   5243.4   175104.0     0.0     4480.0 774.0  384.0   75.8       0    0.000   0      0.000   -          -    0.000参数说明如下表所示 参数说明S0C年轻代中第一个存活区的大小S1C年轻代中第二个存活区的大小S0U年轻代中第一个存活区已使用的空间字节S1U年轻代中第二个存活区已使用的空间字节ECEden 区大小EU年轻代中 Eden 区已使用的空间字节OC老年代大小OU老年代已使用的空间字节YGC从应用程序启动到采样时 young gc 的次数YGCT从应用程序启动到采样时 young gc 的所用的时间sFGC从应用程序启动到采样时 full gc 的次数FGCT从应用程序启动到采样时 full gc 的所用的时间GCT从应用程序启动到采样时整个 gc 所用的时间 注意年轻代的 Eden 区满了会触发 young gc老年代满了会触发 old gc。full gc 指的是清除整个堆包括 young 区 和 old 区。 jstat 常用的查询参数有 -class查询类加载器信息 -compilerJIT 相关信息 -gcGC 堆状态 -gcnew新生代统计信息 -gcutilGC 堆统计汇总信息。 3. jinfo查询虚拟机参数配置工具 jinfoConfiguration Info for Java用于查看和调整虚拟机各项参数。语法如下 jinfo option pid查看 JVM 参数示例如下 ➜  jinfo -flags 45129 VM Flags: -XX:CICompilerCount3 -XX:InitialHeapSize268435456 -XX:MaxHeapSize4294967296 -XX:MaxNewSize1431306240 -XX:MinHeapDeltaBytes524288 -XX:NewSize89128960 -XX:OldSize179306496 -XX:UseCompressedClassPointers -XX:UseCompressedOops -XX:UseFastUnorderedTimeStamps -XX:UseParallelGC其中 45129 是使用 jps 查询的 LVMID。 我们可以通过 jinfo -flag [/-]name 来修改虚拟机的参数值比如下面的示例 ➜  jinfo -flag PrintGC 45129 # 查询是否开启 GC 打印 -XX:-PrintGC ➜  jinfo -flag PrintGC 45129 # 开启 GC 打印 ➜  jinfo -flag PrintGC 45129 # 查询是否开启 GC 打印 -XX:PrintGC ➜  jinfo -flag -PrintGC 45129 # 关闭 GC 打印 ➜  jinfo -flag PrintGC 45129 # 查询是否开启 GC 打印 -XX:-PrintGC4. jmap堆快照生成工具 jmapMemory Map for Java用于查询堆的快照信息。 查询堆信息示例如下 ➜  jmap -heap 45129 Attaching to process ID 45129, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.101-b13 using thread-local object allocation. Parallel GC with 6 thread(s) Heap Configuration:MinHeapFreeRatio          0MaxHeapFreeRatio          100MaxHeapSize              4294967296 (4096.0MB)NewSize                  89128960 (85.0MB)MaxNewSize                1431306240 (1365.0MB)OldSize                  179306496 (171.0MB)NewRatio                  2SurvivorRatio            8MetaspaceSize            21807104 (20.796875MB)CompressedClassSpaceSize 1073741824 (1024.0MB)MaxMetaspaceSize          17592186044415 MBG1HeapRegionSize          0 (0.0MB) Heap Usage: PS Young Generation Eden Space:capacity 67108864 (64.0MB)used      5369232 (5.1204986572265625MB)free      61739632 (58.87950134277344MB)8.000779151916504% used From Space:capacity 11010048 (10.5MB)used      0 (0.0MB)free      11010048 (10.5MB)0.0% used To Space:capacity 11010048 (10.5MB)used      0 (0.0MB)free      11010048 (10.5MB)0.0% used PS Old Generationcapacity 179306496 (171.0MB)used      0 (0.0MB)free      179306496 (171.0MB)0.0% used2158 interned Strings occupying 152472 bytes. 我们也可以直接生成堆快照文件示例如下 ➜  jmap -dump:formatb,file/Users/admin/Documents/2020.dump 47380 Dumping heap to /Users/admin/Documents/2020.dump ... Heap dump file created5. jhat堆快照分析功能 jhatJVM Heap Analysis Tool堆快照分析工具和 jmap 搭配使用用于启动一个 web 站点来分析 jmap 生成的快照文件。 执行示例如下 jhat /Users/admin/Documents/2020.dump Reading from /Users/admin/Documents/2020.dump... Dump file created Tue May 26 16:12:41 CST 2020 Snapshot read, resolving... Resolving 17797 objects... Chasing references, expect 3 dots... Eliminating duplicate references... Snapshot resolved. Started HTTP server on port 7000 Server is ready.上述信息表示 jhat 启动了一个 http 的服务器端口为 7000 的站点来展示信息此时我们在浏览器中输入http://localhost:7000/会看到如下图所示的信息 6. jstack查询虚拟机当前的线程快照信息 jstackStack Trace for Java用于查看当前虚拟机的线程快照用它可以排查线程的执行状况例如排查死锁、死循环等问题。 比如我们先写一段死锁的代码 public class NativeOptimize {private static Object obj1 new Object();private static Object obj2 new Object();public static void main(String[] args) {new Thread(new Runnable() {Overridepublic void run() {synchronized (obj2) {System.out.println(Thread.currentThread().getName() 锁住 obj2);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}synchronized (obj1) {// 执行不到这里System.out.println(1秒钟后 Thread.currentThread().getName() 锁住 obj1);}}}}).start();synchronized (obj1) {System.out.println(Thread.currentThread().getName() 锁住 obj1);try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}synchronized (obj2) {// 执行不到这里System.out.println(1秒钟后 Thread.currentThread().getName() 锁住 obj2);}}} }以上程序的执行结果如下 main锁住 obj1 Thread-0锁住 obj2此时我们使用 jstack 工具打印一下当前线程的快照信息结果如下 ➜  bin jstack -l 50016 2020-05-26 18:01:41 Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.101-b13 mixed mode): Attach Listener #10 daemon prio9 os_prio31 tid0x00007f8c00840800 nid0x3c03 waiting on condition [0x0000000000000000]java.lang.Thread.State: RUNNABLELocked ownable synchronizers:- None Thread-0 #9 prio5 os_prio31 tid0x00007f8c00840000 nid0x3e03 waiting for monitor entry [0x00007000100c8000]java.lang.Thread.State: BLOCKED (on object monitor)at com.example.optimize.NativeOptimize$1.run(NativeOptimize.java:25)- waiting to lock 0x000000076abb62d0 (a java.lang.Object)- locked 0x000000076abb62e0 (a java.lang.Object)at java.lang.Thread.run(Thread.java:745)Locked ownable synchronizers:- None Service Thread #8 daemon prio9 os_prio31 tid0x00007f8c01814800 nid0x4103 runnable [0x0000000000000000]java.lang.Thread.State: RUNNABLELocked ownable synchronizers:- None C1 CompilerThread2 #7 daemon prio9 os_prio31 tid0x00007f8c0283c800 nid0x4303 waiting on condition [0x0000000000000000]java.lang.Thread.State: RUNNABLELocked ownable synchronizers:- None C2 CompilerThread1 #6 daemon prio9 os_prio31 tid0x00007f8c0300a800 nid0x4403 waiting on condition [0x0000000000000000]java.lang.Thread.State: RUNNABLELocked ownable synchronizers:- None C2 CompilerThread0 #5 daemon prio9 os_prio31 tid0x00007f8c0283c000 nid0x3603 waiting on condition [0x0000000000000000]java.lang.Thread.State: RUNNABLELocked ownable synchronizers:- None Signal Dispatcher #4 daemon prio9 os_prio31 tid0x00007f8c0283b000 nid0x4603 runnable [0x0000000000000000]java.lang.Thread.State: RUNNABLELocked ownable synchronizers:- None Finalizer #3 daemon prio8 os_prio31 tid0x00007f8c03001000 nid0x5003 in Object.wait() [0x000070000f8ad000]java.lang.Thread.State: WAITING (on object monitor)at java.lang.Object.wait(Native Method)- waiting on 0x000000076ab08ee0 (a java.lang.ref.ReferenceQueue$Lock)at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)- locked 0x000000076ab08ee0 (a java.lang.ref.ReferenceQueue$Lock)at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)Locked ownable synchronizers:- None Reference Handler #2 daemon prio10 os_prio31 tid0x00007f8c03000000 nid0x2f03 in Object.wait() [0x000070000f7aa000]java.lang.Thread.State: WAITING (on object monitor)at java.lang.Object.wait(Native Method)- waiting on 0x000000076ab06b50 (a java.lang.ref.Reference$Lock)at java.lang.Object.wait(Object.java:502)at java.lang.ref.Reference.tryHandlePending(Reference.java:191)- locked 0x000000076ab06b50 (a java.lang.ref.Reference$Lock)at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)Locked ownable synchronizers:- None main #1 prio5 os_prio31 tid0x00007f8c00802800 nid0x1003 waiting for monitor entry [0x000070000ef92000]java.lang.Thread.State: BLOCKED (on object monitor)at com.example.optimize.NativeOptimize.main(NativeOptimize.java:41)- waiting to lock 0x000000076abb62e0 (a java.lang.Object)- locked 0x000000076abb62d0 (a java.lang.Object)Locked ownable synchronizers:- None VM Thread os_prio31 tid0x00007f8c01008800 nid0x2e03 runnable GC task thread#0 (ParallelGC) os_prio31 tid0x00007f8c00803000 nid0x2007 runnable“GC task thread#1 (ParallelGC)” os_prio31 tid0x00007f8c00006800 nid0x2403 runnable “GC task thread#2 (ParallelGC)” os_prio31 tid0x00007f8c01800800 nid0x2303 runnable “GC task thread#3 (ParallelGC)” os_prio31 tid0x00007f8c01801800 nid0x2a03 runnable “GC task thread#4 (ParallelGC)” os_prio31 tid0x00007f8c01802000 nid0x5403 runnable “GC task thread#5 (ParallelGC)” os_prio31 tid0x00007f8c01006800 nid0x2d03 runnable “VM Periodic Task Thread” os_prio31 tid0x00007f8c00010800 nid0x3803 waiting on condition JNI global references: 6 Found one Java-level deadlock: “Thread-0”:   waiting to lock monitor 0x00007f8c000102a8 (object 0x000000076abb62d0, a java.lang.Object),   which is held by “main” “main”:   waiting to lock monitor 0x00007f8c0000ed58 (object 0x000000076abb62e0, a java.lang.Object),   which is held by “Thread-0” Java stack information for the threads listed above: “Thread-0”: at com.example.optimize.NativeOptimize$1.run(NativeOptimize.java:25) - waiting to lock 0x000000076abb62d0 (a java.lang.Object) - locked 0x000000076abb62e0 (a java.lang.Object) at java.lang.Thread.run(Thread.java:745) “main”: at com.example.optimize.NativeOptimize.main(NativeOptimize.java:41) - waiting to lock 0x000000076abb62e0 (a java.lang.Object) - locked 0x000000076abb62d0 (a java.lang.Object) Found 1 deadlock. 从上述信息可以看出使用 jstack 可以很方便地排查出代码中出现“deadlock”死锁的问题。 考点分析 Java 虚拟机的排查工具是一个合格程序员必备的技能使用它我们可以很方便地定位出问题的所在尤其在团队合作的今天每个人各守一摊很容易出现隐藏的 bug缺陷。因此使用这些排查功能可以帮我们快速地定位并解决问题所以它也是面试中常问的问题之一。 和此知识点相关的面试题还有以下这些 除了比较实用的命令行工具之外有没有方便一点的排查工具 JVM 常见的调优手段有哪些 知识扩展 可视化排查工具 JVM 除了上面的 6 个基础命令行工具之外还有两个重要的视图调试工具即 JConsole 和 JVisualVM它们相比于命令行工具使用更方便、操作更简单、结果展现也更直观。 JConsole 和 JVisualVM 都位于 JDK 的 bin 目录下JConsoleJava Monitoring and Management Console是最早期的视图调试工具其启动页面如下图所示 可以看出我们可以用它来连接远程的服务器或者是直接调试本机这样就可以在不消耗生产环境的性能下从本机启动 JConsole 来连接服务器。选择了调试的进程之后运行界面如下图所示 从上图可以看出使用 JConsole 可以监控线程、CPU、类、堆以及 VM 的相关信息同样我们可以通过线程这一页的信息发现之前我们故意写的死锁问题如下图所示 可以看到 main主线程和 Thread-0 线程处于死锁状态。 JVisualVM 的启动图如下图所示 由上图可知JVisualVM 既可以调试本地也可以调试远程服务器当我们选择了相关的进程之后运行如下图所示 可以看出 JVisualVM 除了包含了 JConsole 的信息之外还有更多的详细信息并且更加智能。例如线程死锁检查的这页内容如下图所示 可以看出 JVisualVM 会直接给你一个死锁的提示而 JConsole 则需要程序员自己分析。 JVM 调优 JVM 调优主要是根据实际的硬件配置信息重新设置 JVM 参数来进行调优的例如硬件的内存配置很高但 JVM 因为是默认参数所以最大内存和初始化堆内存很小这样就不能更好地利用本地的硬件优势了。因此需要调整这些参数让 JVM 在固定的配置下发挥最大的价值。 JVM 常见调优参数包含以下这些 -Xmx设置最大堆内存大小 -Xms设置初始堆内存大小 -XX:MaxNewSize设置新生代的最大内存 -XX:MaxTenuringThreshold设置新生代对象经过一定的次数晋升到老生代 -XX:PretrnureSizeThreshold设置大对象的值超过这个值的对象会直接进入老生代 -XX:NewRatio设置分代垃圾回收器新生代和老生代内存占比 -XX:SurvivorRatio设置新生代 Eden、Form Survivor、To Survivor 占比。 我们要根据自己的业务场景和硬件配置来设置这些值。例如当我们的业务场景会有很多大的临时对象产生时因为这些大对象只有很短的生命周期因此需要把“-XX:MaxNewSize”的值设置的尽量大一些否则就会造成大量短生命周期的大对象进入老生代从而很快消耗掉了老生代的内存这样就会频繁地触发 full gc从而影响了业务的正常运行。 最后 今天我们分享了 JVM 排查的 6 个基本命令行工具jps、jstat、jinfo、jmap、jhat、jstack以及 2 个视图排查工具JConsole 和 JVisualVM同时还讲了 JVM 的常见调优参数希望的内容可以切实的帮助到你。

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

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

相关文章

泰州做网站哪家好横泉水库建设管理局网站

1 前言 在日常开发工作中,我们经常用Mybatis Generator根据表结构生成对应的实体类和Mapper文件。但是Mybatis Generator默认生成的代码中,注释并不是我们想要的,所以一般在Generator配置文件中,会设置不自动生成注释。带来的问题…

商城网站的psd模板免费下载泛站群

点击下载《产品经理的进阶之路》 1. 前言 本文深入剖析了产品经理这一职业从产品专员起步,逐步晋升为产品经理、高级产品经理,直至产品总监的整个职业发展路径。在每个阶段,产品经理都需承担不同的工作职责,展现出独特的职业特点。 2. 产品专员 关键词【产品需求/原型/文…

广州led网站建设嘉兴建网站

azure微软office365邮箱会对频繁连接自身邮箱服务器的IP地址进行,连接邮箱服务器IP限制,也就是黑名单,释放时间不确定,但至少一天及以上。 解决办法,换一个IP,或者新注册一个office365邮箱再重试。 以下是…

建设工程合同通用条款范本2017seo是什么字

1.Redis,MongoDB,Elasticsearch实现地理位置查询比较 1.1 Redis: 优点:Redis提供了地理空间索引功能,可以通过Geo数据类型进行地理位置查询。这使得Redis在处理地理位置查询时非常高效。 缺点: Redis的地理空间索引功能相对简单&#xff0…

石家庄市建设南大街小学网站中国制造网官方网站下载安装

1-响应时间 响应时间指从用户或事务在客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,这整个过程所消耗的时间 在性能测试实践中,为了使响应时间更具代表性,响应时间通常是指事务的平均响应时间ART 在实践中要…

公司网站发布流程上海新建公司

目录 四.Linux实用操作 12.环境变量 环境变量 环境变量--PATH $ 符号 自行设置环境变量 自定义环境变量PATH 总结 四.Linux实用操作 13.文件的上传和下载 上传,下载 rz,sz命令 四.Linux实用操作 14.压缩和解压 压缩格式 tar命令 tar命令压缩…

做网站广告费装饰网站案例

缘由 MongoDB数据库如下: 如上截图,使用MongoDB客户端工具DataGrip,在filter过滤框输入{ profiles.alias: 逆天子, profiles.channel: },即可实现昵称和渠道多个嵌套字段过滤查询。 现有业务需求:用Java代码来查询…

济南在线制作网站商丘做网站需要多少钱

准备工作1.安装scrapy_redis包,打开cmd工具,执行命令pip install scrapy_redis2.准备好一个没有BUG,没有报错的爬虫项目3.准备好redis主服务器还有跟程序相关的mysql数据库前提mysql数据库要打开允许远程连接,因为mysql安装后root用户默认只允许本地连接,详情请看此文章部署过程…

武侯区建设局门户网站制作网站的公司电话号码

目录 前言 知识储备 图像处理常用算法 算法原理 传统分割方法 1.基于阈值的分割方法

小型企业网站建设的背景清河网站建设公司

文章目录如何生成采购单系统生成采购单的流程基本流程扩展流程找不到符合条件的供应商,要求部分退款(初次生成采购单时)找不到符合条件的供应商,要求全部退款(初次生成采购单时)指定供应商的库存不足&#…

手机微信官方网站首页网页禁止访问怎么办

第十一届蓝桥杯大赛软件赛省赛C/C 大学 B 组 文章目录 第十一届蓝桥杯大赛软件赛省赛C/C 大学 B 组1、字串排序2、门牌制作3、既约分数4、蛇形填数5、跑步锻炼6、七段码7、成绩统计8、回文日期9、子串分值和10、平面切分 1、字串排序 // 转载博客链接 https://blog.csdn.net/we…

店铺详情页设计模板龙斗seo博客

在线订餐系统mysql字段,随便写的了。也许要改变呢。再说吧啊。在线订餐系统mysql字段分成3个表开发1.user2.order3.pay1.用户表包含下面字段 id int 主键,自动累加,不为空,长度10就够了吧;用户名(name) varchar类型 30长度够了吧。…

p2p网站建设报价2p排名绵阳高新区建设局网站

简介 Pyenv 是一个 python 解释器管理工具,可以对计算机中的多个 python 版本进行管理和切换。为什么要用 pyenv 管理python呢,用过的 python 人都知道,python 虽然是易用而强大的编程语言,但是 python 解释器却有多个版本&#…

建筑公司网站广告宣传语高校网站建设近期情况说明

问题窥探之前有个哥们在使用Newtonsoft.Json反序列化的时候,发现明明有数据,但是就是序列化不出来数据到实体里面。咋一看,确实没什么问题啊,字符串的数据是存在的。那么问题出在哪里呢。解决思路1、我让他把字符串复制出来&#…

国外域名注册做违法网站新浪云上传wordpress

如果您使用Java进行编程的时间足够长,则有可能需要为业务用户生成报告。 就我而言,我已经看到几个项目使用JasperReports库来生成PDF和其他文件格式的报告。 最近,我荣幸地观察了Mike和他的团队使用上述报告库及其面临的挑战。 简而言之Jasp…

学校资源网站建设方案wordpress导入文件格式

0 算法简介 快速排序是一种高效率排序算法,它是对冒泡排序的一种改进,它也是一种不稳定排序算法。快速排序的核心是比较、交换和递归。 在待排序数组中指定一个基准元素pivot(一般选取数组首元素),使得数组排序之后基…

网站建设视频l网站开发主框架一般用什么布局

3.1考虑横风向振动的风荷载 图 3.1 流场中的横流截面 Fig 3.1 The lateral section in flow-field 结构沿高度Z方向作用在结构单位长度上的横风向荷载主要来自于升力,其次来自于阻力。高度z处单位长度上的风荷载 式中,为来流与结构的夹角,称…

南宁网站建设及推广招商网站如何做推广

nfs局域网共享网盘配置 服务器端(以ubuntu为例)第一步:安装 NFS 服务器第二步:创建共享目录第三步:配置 NFS 导出第四步:应用配置第五步:配置防火墙第六步:验证配置 客户端&#xff…

自己做的网站百度搜到国家大事新闻近三天

from:http://www.cnblogs.com/aaronwxb/archive/2011/08/19/2145364.html 昨天写一个脚本花了一天的2/3的时间,而且大部分时间都耗在了sed命令上,今天不总结一下都对不起昨天流逝的时间啊~~~ 用sed命令在行首或行尾添加字符的命令有以下几种&…

做网站谁家做的好温州seo博客

视频如何提取文字?你用过哪些视频提取工具?视频转文字工具,又称为语音识别软件,是一款能够将视频中的语音或对话转化为文字的实用工具。它运用了尖端的声音识别和语言理解技术,能精准地捕捉视频中的音频,并…