建立一个企业网站阿里云服务器做网站需要备案

web/2025/10/8 10:08:13/文章来源:
建立一个企业网站,阿里云服务器做网站需要备案,云南建设网站,咸宁网站建设公司转载自 Java命令学习系列#xff08;二#xff09;——Jstackjstack是java虚拟机自带的一种堆栈跟踪工具。功能 jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合#xff0c;生成线程快照的主要目的是定位线程出…转载自 Java命令学习系列二——Jstackjstack是java虚拟机自带的一种堆栈跟踪工具。功能 jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合生成线程快照的主要目的是定位线程出现长时间停顿的原因如线程间死锁、死循环、请求外部资源导致的长时间等待等。 线程出现停顿的时候通过jstack来查看各个线程的调用堆栈就可以知道没有响应的线程到底在后台做什么事情或者等待什么资源。 如果java程序崩溃生成core文件jstack工具可以用来获得core文件的java stack和native stack的信息从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外jstack工具还可以附属到正在运行的java程序中看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态jstack是非常有用的。 So,jstack命令主要用来查看Java线程的调用堆栈的可以用来分析线程问题如死锁。线程状态 想要通过jstack命令来分析线程的情况的话首先要知道线程都有哪些状态下面这些状态是我们使用jstack命令查看线程堆栈信息时可能会看到的线程的几种状态 NEW,未启动的。不会出现在Dump中。RUNNABLE,在虚拟机内执行的。BLOCKED,受阻塞并等待监视器锁。WATING,无限期等待另一个线程执行特定操作。TIMED_WATING,有时限的等待另一个线程的特定操作。TERMINATED,已退出的。Monitor 在多线程的 JAVA程序中实现线程之间的同步就要说说 Monitor。 Monitor是 Java中用以实现线程之间的互斥与协作的主要手段它可以看成是对象或者 Class的锁。每一个对象都有也仅有一个 monitor。下 面这个图描述了线程和 Monitor之间关系以 及线程的状态转换图进入区(Entrt Set):表示线程通过synchronized要求获取对象的锁。如果对象未被锁住,则迚入拥有者;否则则在进入区等待。一旦对象锁被其他线程释放,立即参与竞争。 拥有者(The Owner):表示某一线程成功竞争到对象锁。 等待区(Wait Set):表示线程通过对象的wait方法,释放对象的锁,并在等待区等待被唤醒。 从图中可以看出一个 Monitor在某个时刻只能被一个线程拥有该线程就是 “Active Thread”而其它线程都是 “Waiting Thread”分别在两个队列 “ Entry Set”和 “Wait Set”里面等候。在 “Entry Set”中等待的线程状态是 “Waiting for monitor entry”而在 “Wait Set”中等待的线程状态是 “in Object.wait()”。 先看 “Entry Set”里面的线程。我们称被 synchronized保护起来的代码段为临界区。当一个线程申请进入临界区时它就进入了 “Entry Set”队列。对应的 code就像 synchronized(obj) { .........} 调用修饰 表示线程在方法调用时,额外的重要的操作。线程Dump分析的重要信息。修饰上方的方法调用。 locked 地址 目标使用synchronized申请对象锁成功,监视器的拥有者。waiting to lock 地址 目标使用synchronized申请对象锁未成功,在迚入区等待。waiting on 地址 目标使用synchronized申请对象锁成功后,释放锁幵在等待区等待。parking to wait for 地址 目标locked at oracle.jdbc.driver.PhysicalConnection.prepareStatement - locked 0x00002aab63bf7f58 (a oracle.jdbc.driver.T4CConnection) at oracle.jdbc.driver.PhysicalConnection.prepareStatement - locked 0x00002aab63bf7f58 (a oracle.jdbc.driver.T4CConnection) at com.jiuqi.dna.core.internal.db.datasource.PooledConnection.prepareStatement 通过synchronized关键字,成功获取到了对象的锁,成为监视器的拥有者,在临界区内操作。对象锁是可以线程重入的。 waiting to lock at com.jiuqi.dna.core.impl.CacheHolder.isVisibleIn(CacheHolder.java:165) - waiting to lock 0x0000000097ba9aa8 (a CacheHolder) at com.jiuqi.dna.core.impl.CacheGroup$Index.findHolder at com.jiuqi.dna.core.impl.ContextImpl.find at com.jiuqi.dna.bap.basedata.common.util.BaseDataCenter.findInfo 通过synchronized关键字,没有获取到了对象的锁,线程在监视器的进入区等待。在调用栈顶出现,线程状态为Blocked。 waiting on at java.lang.Object.wait(Native Method) - waiting on 0x00000000da2defb0 (a WorkingThread) at com.jiuqi.dna.core.impl.WorkingManager.getWorkToDo - locked 0x00000000da2defb0 (a WorkingThread) at com.jiuqi.dna.core.impl.WorkingThread.run 通过synchronized关键字,成功获取到了对象的锁后,调用了wait方法,进入对象的等待区等待。在调用栈顶出现,线程状态为WAITING或TIMED_WATING。 parking to wait for park是基本的线程阻塞原语,不通过监视器在对象上阻塞。随concurrent包会出现的新的机制,不synchronized体系不同。 线程动作 线程状态产生的原因 runnable:状态一般为RUNNABLE。in Object.wait():等待区等待,状态为WAITING或TIMED_WAITING。waiting for monitor entry:进入区等待,状态为BLOCKED。waiting on condition:等待区等待、被park。sleeping:休眠的线程,调用了Thread.sleep()。Wait on condition 该状态出现在线程等待某个条件的发生。具体是什么原因可以结合 stacktrace来分析。 最常见的情况就是线程处于sleep状态等待被唤醒。 常见的情况还有等待网络IO在java引入nio之前对于每个网络连接都有一个对应的线程来处理网络的读写操作即使没有可读写的数据线程仍然阻塞在读写操作上这样有可能造成资源浪费而且给操作系统的线程调度也带来压力。在 NewIO里采用了新的机制编写的服务器程序的性能和可扩展性都得到提高。 正等待网络读写这可能是一个网络瓶颈的征兆。因为网络阻塞导致线程无法执行。一种情况是网络非常忙几 乎消耗了所有的带宽仍然有大量数据等待网络读 写另一种情况也可能是网络空闲但由于路由等问题导致包无法正常的到达。所以要结合系统的一些性能观察工具来综合分析比如 netstat统计单位时间的发送包的数目如果很明显超过了所在网络带宽的限制 ; 观察 cpu的利用率如果系统态的 CPU时间相对于用户态的 CPU时间比例较高如果程序运行在 Solaris 10平台上可以用 dtrace工具看系统调用的情况如果观察到 read/write的系统调用的次数或者运行时间遥遥领先这些都指向由于网络带宽所限导致的网络瓶颈。来自http://www.blogjava.net/jzone/articles/303979.html 线程Dump的分析 原则 结合代码阅读的推理。需要线程Dump和源码的相互推导和印证。造成Bug的根源往往丌会在调用栈上直接体现,一定格外注意线程当前调用之前的所有调用。入手点 进入区等待 da-3588 daemon waiting for monitor entry [0x000000006e5d5000] java.lang.Thread.State: BLOCKED (on object monitor) at com.jiuqi.dna.bap.authority.service.UserService$LoginHandler.handle() - waiting to lock 0x0000000602f38e90 (a java.lang.Object) at com.jiuqi.dna.bap.authority.service.UserService$LoginHandler.handle() 线程状态BLOCKED,线程动作wait on monitor entry,调用修饰waiting to lock总是一起出现。表示在代码级别已经存在冲突的调用。必然有问题的代码,需要尽可能减少其发生。 同步块阻塞 一个线程锁住某对象,大量其他线程在该对象上等待。 blocker runnable java.lang.Thread.State: RUNNABLE at com.jiuqi.hcl.javadump.Blocker$1.run(Blocker.java:23) - locked 0x00000000eb8eff68 (a java.lang.Object) blockee-11 waiting for monitor entry java.lang.Thread.State: BLOCKED (on object monitor) at com.jiuqi.hcl.javadump.Blocker$2.run(Blocker.java:41) - waiting to lock 0x00000000eb8eff68 (a java.lang.Object) blockee-86 waiting for monitor entry java.lang.Thread.State: BLOCKED (on object monitor) at com.jiuqi.hcl.javadump.Blocker$2.run(Blocker.java:41) - waiting to lock 0x00000000eb8eff68 (a java.lang.Object) 持续运行的IO IO操作是可以以RUNNABLE状态达成阻塞。例如:数据库死锁、网络读写。 格外注意对IO线程的真实状态的分析。 一般来说,被捕捉到RUNNABLE的IO调用,都是有问题的。 以下堆栈显示 线程状态为RUNNABLE。 调用栈在SocketInputStream或SocketImpl上,socketRead0等方法。 调用栈包含了jdbc相关的包。很可能发生了数据库死锁 da-614 daemon prio6 tid0x0000000022f1f000 nid0x37c8 runnable [0x0000000027cbd000] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at oracle.net.ns.Packet.receive(Packet.java:240) at oracle.net.ns.DataPacket.receive(DataPacket.java:92) at oracle.net.ns.NetInputStream.getNextPacket(NetInputStream.java:172) at oracle.net.ns.NetInputStream.read(NetInputStream.java:117) at oracle.jdbc.driver.T4CMAREngine.unmarshalUB1(T4CMAREngine.java:1034) at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:588) 分线程调度的休眠 正常的线程池等待 da-131 in Object.wait() java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) at com.jiuqi.dna.core.impl.WorkingManager.getWorkToDo(WorkingManager.java:322) - locked 0x0000000313f656f8 (a com.jiuqi.dna.core.impl.WorkingThread) at com.jiuqi.dna.core.impl.WorkingThread.run(WorkingThread.java:40) 可疑的线程等待 da-121 in Object.wait() java.lang.Thread.State: WAITING (on object monitor) at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:485) at com.jiuqi.dna.core.impl.AcquirableAccessor.exclusive() - locked 0x00000003011678d8 (a com.jiuqi.dna.core.impl.CacheGroup) at com.jiuqi.dna.core.impl.Transaction.lock() 入手点总结 wait on monitor entry 被阻塞的,肯定有问题 runnable  注意IO线程 in Object.wait() 注意非线程池等待 使用 想要学习一个命令先来看看帮助使用jstack -help查看帮助 hollishos:~$ jstack -help Usage:jstack [-l] pid(to connect to running process)jstack -F [-m] [-l] pid(to connect to a hung process)jstack [-m] [-l] executable core(to connect to a core file)jstack [-m] [-l] [server_id]remote server IP or hostname(to connect to a remote debug server)Options:-F  to force a thread dump. Use when jstack pid does not respond (process is hung)-m  to print both java and native frames (mixed mode)-l  long listing. Prints additional information about locks-h or -help to print this help message -F当’jstack [-l] pid’没有相应的时候强制打印栈信息 -l长列表. 打印关于锁的附加信息,例如属于java.util.concurrent的ownable synchronizers列表. -m打印java和native c/c框架的所有栈信息. -h | -help打印帮助信息 pid 需要被打印配置信息的java进程id,可以用jps查询. 首先我们分析这么一段程序的线程情况 /*** author hollis*/ public class JStackDemo1 {public static void main(String[] args) {while (true) {//Do Nothing}} } 先是有jps查看进程号 hollishos:~$ jps 29788 JStackDemo1 29834 Jps 22385 org.eclipse.equinox.launcher_1.3.0.v20130327-1440.jar 然后使用jstack 查看堆栈信息 hollishos:~$ jstack 29788 2015-04-17 23:47:31 ...此处省略若干内容... main prio10 tid0x00007f197800a000 nid0x7462 runnable [0x00007f197f7e1000]java.lang.Thread.State: RUNNABLEat javaCommand.JStackDemo1.main(JStackDemo1.java:7) 我们可以从这段堆栈信息中看出什么来呢我们可以看到当前一共有一条用户级别线程,线程处于runnable状态执行到JStackDemo1.java的第七行。 看下面代码 /*** author hollis*/ public class JStackDemo1 {public static void main(String[] args) {Thread thread new Thread(new Thread1());thread.start();} } class Thread1 implements Runnable{Overridepublic void run() {while(true){System.out.println(1);}} } 线程堆栈信息如下 Reference Handler daemon prio10 tid0x00007fbbcc06e000 nid0x286c in Object.wait() [0x00007fbbc8dfc000]java.lang.Thread.State: WAITING (on object monitor)at java.lang.Object.wait(Native Method)- waiting on 0x0000000783e066e0 (a java.lang.ref.Reference$Lock)at java.lang.Object.wait(Object.java:503)at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)- locked 0x0000000783e066e0 (a java.lang.ref.Reference$Lock) 我们能看到 线程的状态 WAITING 线程的调用栈 线程的当前锁住的资源 0x0000000783e066e0 线程当前等待的资源0x0000000783e066e0为什么同时锁住的等待同一个资源 线程的执行中先获得了这个对象的 Monitor对应于 locked 0x0000000783e066e0。当执行到 obj.wait(), 线程即放弃了 Monitor的所有权进入 “wait set”队列对应于 waiting on 0x0000000783e066e0 。死锁分析 学会了怎么使用jstack命令之后我们就可以看看如何使用jstack分析死锁了这也是我们一定要掌握的内容。 啥叫死锁 所谓死锁 是指两个或两个以上的进程在执行过程中由于竞争资源或者由于彼此通信而造成的一种阻塞的现象若无外力作用它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁这些永远在互相等待的进程称为死锁进程。 说白了我现在想吃鸡蛋灌饼桌子上放着鸡蛋和饼但是我和我的朋友同时分别拿起了鸡蛋和病我手里拿着鸡蛋但是我需要他手里的饼。他手里拿着饼但是他想要我手里的鸡蛋。就这样如果不能同时拿到鸡蛋和饼那我们就不能继续做后面的工作做鸡蛋灌饼。所以这就造成了死锁。 看一段死锁的程序 package javaCommand; /*** author hollis*/ public class JStackDemo {public static void main(String[] args) {Thread t1 new Thread(new DeadLockclass(true));//建立一个线程Thread t2 new Thread(new DeadLockclass(false));//建立另一个线程t1.start();//启动一个线程t2.start();//启动另一个线程} } class DeadLockclass implements Runnable {public boolean falg;// 控制线程DeadLockclass(boolean falg) {this.falg falg;}public void run() {/*** 如果falg的值为true则调用t1线程*/if (falg) {while (true) {synchronized (Suo.o1) {System.out.println(o1 Thread.currentThread().getName());synchronized (Suo.o2) {System.out.println(o2 Thread.currentThread().getName());}}}}/*** 如果falg的值为false则调用t2线程*/else {while (true) {synchronized (Suo.o2) {System.out.println(o2 Thread.currentThread().getName());synchronized (Suo.o1) {System.out.println(o1 Thread.currentThread().getName());}}}}} }class Suo {static Object o1 new Object();static Object o2 new Object(); } 当我启动该程序时我们看一下控制台我们发现程序只输出了两行内容然后程序就不再打印其它的东西了但是程序并没有停止。这样就产生了死锁。 当线程1使用synchronized锁住了o1的同时线程2也是用synchronized锁住了o2。当两个线程都执行完第一个打印任务的时候线程1想锁住o2线程2想锁住o1。但是线程1当前锁着o1线程2锁着o2。所以两个想成都无法继续执行下去就造成了死锁。 然后我们使用jstack来看一下线程堆栈信息 Found one Java-level deadlock:Thread-1:waiting to lock monitor 0x00007f0134003ae8 (object 0x00000007d6aa2c98, a java.lang.Object),which is held by Thread-0 Thread-0:waiting to lock monitor 0x00007f0134006168 (object 0x00000007d6aa2ca8, a java.lang.Object),which is held by Thread-1Java stack information for the threads listed above:Thread-1:at javaCommand.DeadLockclass.run(JStackDemo.java:40)- waiting to lock 0x00000007d6aa2c98 (a java.lang.Object)- locked 0x00000007d6aa2ca8 (a java.lang.Object)at java.lang.Thread.run(Thread.java:745) Thread-0:at javaCommand.DeadLockclass.run(JStackDemo.java:27)- waiting to lock 0x00000007d6aa2ca8 (a java.lang.Object)- locked 0x00000007d6aa2c98 (a java.lang.Object)at java.lang.Thread.run(Thread.java:745)Found 1 deadlock. 哈哈堆栈写的很明显它告诉我们 Found one Java-level deadlock然后指出造成死锁的两个线程的内容。然后又通过 Java stack information for the threads listed above来显示更详细的死锁的信息。 他说 Thread-1在想要执行第40行的时候当前锁住了资源0x00000007d6aa2ca8,但是他在等待资源0x00000007d6aa2c98 Thread-0在想要执行第27行的时候当前锁住了资源0x00000007d6aa2c98,但是他在等待资源0x00000007d6aa2ca8 由于这两个线程都持有资源并且都需要对方的资源所以造成了死锁。 原因我们找到了就可以具体问题具体分析解决这个死锁了。其他 虚拟机执行Full GC时,会阻塞所有的用户线程。因此,即时获取到同步锁的线程也有可能被阻塞。 在查看线程Dump时,首先查看内存使用情况。

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

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

相关文章

枝江网站建设建站平台步骤详解

Ubuntu18.04更换为国内源 1、打开Linux终端,执行下列命令,将源文件备份,以防万一。 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak2、选择下列任意一个源,将其复制 ​ 2.1 阿里源 deb http://mirrors.aliyun.com/…

成都58手机微信网站建设名录做PPT素材用到的网站

C和Lua交互总结 Chapter1. C和Lua交互总结一、Lua与C的交互机制——Lua堆栈二、堆栈的操作三、C 调用 Lua1)C获取Lua值2)C调用Lua函数示例: 四、Lua 调用 C包装C函数 最后总结一下 Chapter1. C和Lua交互总结 原文链接:https://bl…

网站首页图片轮转惠州高端网站建设服务

2024年4月13日美团春招实习试题【第四题:乘积因子数】-题目题解在线评测【二分】 题目描述:输入描述输出描述样例 解题思路一:python解题思路二:c解题思路三:0 题目描述: 塔子哥拿到了一个数组,她有q次查询…

制作个人免费网站展示设计企业大型网站开发

S7-1500F和S7-1200F安全PLC实现安全相关控制器与智能设备PN通信的程序示例 在TIA 安全系统中具有PROFINET接口的S7-1500F和S7-1200F CPU 之间可以进行安全相关的控制器与智能设备通信。 通信通过两个安全应用程序指令进行,即SENDDP指令用于发送数据,而RCVDP指令用于接收数据…

做一个简单网站多少钱做网站公司宣传语

知识概览 欧几里得算法也叫辗转相除法,核心原理是(a, b) (b, a mod b),时间复杂度为O(logn)。 例题展示 题目链接 活动 - AcWing 系统讲解常用算法与数据结构,给出相应代码模板,并会布置、讲解相应的基础算法题目。https://www…

重庆网站建设培训如何做实体店的网站

MongoDB 基础 mongoDB 是由 C语言编写,基于分布式文件存储的开源数据库系统,是一个 nosql 数据库. 在高负载的情况下,添加更多的节点,保证服务器性能,MongoDB 旨在为 web 引用提供可扩展的高性能存储解决方案,将数据存储为给文档, 数据结构由键值(key,value)对组成,MongoDB 文…

企业网站 报价足球队世界排名榜

效果一览 文章概述 故障诊断 | 一文解决,PLS偏最小二乘法的故障诊断(Matlab) 模型描述 偏最小二乘法(Partial Least Squares, PLS)是一种统计建模方法,用于建立变量之间的线性关系模型。它是对多元线性回归方法的扩展,特别适用于处理高维数据和具有多重共线性的数据集。…

网站php源码破解版百度手机网站优化

目录 一 GDB解析CORE文件(Linux) 二 GDB解析CORE文件(QNX) 在 Linux 系统中,当一个进程发生崩溃或异常时,它会生成一个所谓的 core dump 文件,其中包含了该进程的内存映像和一些调试信息。这个文件可以用于分析和解决崩溃问题,以便了解进程崩溃时的状态和原因

江西省农村公路建设举报网站开发app成本

高考化学实验试题中有时会涉及到一些不常见的仪器装置,增大了试题分析解答的难度。学长现将一些特殊仪器与装置都一一整理出来,供小伙伴们参考学习,以后试题中再见到它们就再也不怕啦!1.三颈烧瓶(三颈烧瓶&…

建设个人网站用什么软件好自学网站建设买什么书

前言:1目前必须是被微信认证过的公众平台才能使用此接口 1.绑定域名 2.引用文件 http://res.wx.qq.com/open/js/jweixin-1.0.0.js 3配置前台js配置 var url location.href.split(#)[0]; wx.config({ debug: false, // 开启调试模式,调用的所有api的返回值会在客户端…

php 免费企业网站网站建设案例 央视网

删除本地分支: git branch -d branch_name其中,branch_name 是你要删除的本地分支的名称。如果分支上有未合并的更改,使用 -d 选项会提示你确认删除。 如果要强制删除未合并的分支,可以使用 -D 选项: git branch -D…

移动网站建设哪家便宜长沙做网站公司有哪些

引言传统的农业栽培需要遵循季节性及周期性的栽培规律,受外界环境的影响较大,相应的栽培技术无法得到良好的栽培结果[1]。而温室大棚通过环境控制器调节温室环境,为作物提供了合适的生长环境。因此,它在农业领域的应用越来越广泛,温室环境控制系统的研究成为人们关注的热点[2-5…

邮箱域名和网站域名昆明做网站的公司有哪些

Fluent UDF利用的是C语言,本文简单介绍在UDF中经常会用到的C语言常识。 本文部分内容来自UDF手册。 1 C语言中的注释 C语言中的注释利用/*及*/来实现。例如: /*这是一个注释*/ 注释也可以跨行实现,如: /*这是一个 跨行注释*/ 注意:在编写UDF的过程中&…

公司的网站怎么建设响应式网站国内外现状

文章目录 3. 系统调用3.1 用户态与内核态3.2 系统调用分类3.3 如何从用户态切换到内核态(系统调用举例) 4. 内存管理4.1 内存管理是做什么的4.1.1 为什么需要虚拟地址空间4.1.2 使用虚拟地址访问内存有什么优势 4.2 常见的内存管理机制4.3 分页管理4.3.1…

手机站和微网站的区别我为什么卸载不了wordpress

题目 原题 题目背景 语文考试结束了,成绩还是一如既往地有问题。 题目描述 语文老师总是写错成绩,所以当她修改成绩的时候,总是累得不行。她总是要一遍遍地给某些同学增加分数,又要注意最低分是多少。你能帮帮她吗? 输…

一站式服务包括哪些内容网络规划设计师备考需要多久

前言:这是国外的一个教程,我也很喜欢这个网页里面的教程,主要技术是CSS3和JQuery以及一些JQuery的插件的应用,当然从这些教程我也学到了他们制作时的一些思路,就好像做数学题那样,只要思路把握了&#xff0…

铁岭 网站建设动漫设计和动漫制作技术的区别

nginx 具体就是一个轻量级以及高性能的web服务软件。 nginx特点 1、稳定性高。(但不如apache) 2、系统资源消耗比较低。(处理http请求的并发能力较高,单台处理器可以处理3w-5w的并发请求) 注:一般在企…

网站备案照片怎么弄网站建设与管理教学计划

3、声卡驱动不完全匹配,重装下声卡驱动(这种情况很少)朋友电脑开不了机,找我帮他看看,雨林木风win10家庭版,他电脑系统是有做过备份的现在做64位系统引起的■灵活设置背景2、电脑主板电池怎么换新的主板电池不贵的,才不…

以背景做网站视频为辽宁建设科技信息网网站

(一、ActiveRecord基础) ActiveRecord是Rails提供的一个对象关系映射(ORM)层,从这篇开始,我们来了解Active Record的一些基础内容,连接数据库,映射表,访问数据等。   Active Record使用基本的ORM模式:表映…

网站开发创建画布高新区规划建设局网站

来源:莫尼塔财新智库摘要:本文援引莫尼塔财新智库的一篇研究,系统梳理了无人驾驶各关键技术节点以及其成熟时间。”“汽车技术发展到如今,几乎没有人质疑无人驾驶会成为汽车行业变革的巨大浪潮,然而对于各项技术落地的…