越是高级的语言,其编译和运行的系统开销就越大,应用程序也越大,运行越慢。因此一般来说,编程人员都会首选汇编语言和C语言,然后才会考虑C++语言或Java语言。

但是随着不断增长的市场需求,很多嵌入式设备必须适应网上交流的需要,为了迎合此要求,考虑到开发Internet应用程序的便利,众多开发者都发现使用Java语言是有意义的。另外随着内存及32位处理器价格的下降,最初在嵌入系统使用Java太昂贵的问题不再有了,使用Java的成本开始减少。于是,Java在嵌入式领域迎来了新的机会。

Java语言的优点在于:它最初是由理解和信奉网络计算梦想的一个小巧而专注的开发组设计的,虽然该语言最初的实施方案有点缺陷,但为了这个梦想,设计者们很少在技术上妥协,结果诞生了一种专为以相互通信为主要目的的设备而设计的语言。有许多技术上的优点都可能会引导嵌入系统开发者选择Java。

优点1:与处理器无关

Java的第一个优点就是与处理器无关。传统上,嵌入程序就是针对特定的微处理器设计并在其上运行的,而C语言程序的可移植性则可通过编译或交叉编译来保障。但是利用Java,一个程序可以存储在一个系统上,而被下载并运行在完全不同的另一个系统上;设备可能从不同地方下载一些程序在一个处理器上运行,或者不同的处理器运行同一个程序,并通过网络在相互间传递数据。使用Java,一个嵌入式系统就可能成为一个通用的通信设备,能下载并运行能完成特定任务的程序。

对嵌入式系统而言,这是一个新的模型,已经有一些开发者正在向它靠拢。例如,电视机顶盒的供应商已宣布要在机顶盒内植入 JVM,以使用户能通过Java applets在他们观看电视的同时接收到该电视节目的一些内容。例如在观看足球比赛时,看到的支持内容就可以是对球员的技术统计,在看电影时,看到的支持内容就可以是演员的背景资料。

这是一个恰当的设计和实施模型,首先它可以使开发平台的选择更加灵活,无需在与目标相同的平台上开发,也不用关心交叉编译的问题,因为Java字节码能在任何有JVM的操作系统中运行。其次,这种模型带来的另一个优点是几乎所有的检测和调试可以独立于目标设备来进行。虽然由于个别JVM有时有兼容性的问题,应该在所有将用到该程序的平台上测试它。但一般来说,并不要高级而昂贵的、配备有逻辑探针、 ICE以及其他调试工具的、针对目标平台的开发环境。

优点2:提高开发速度和可维护性

Java是一种纯粹面向对象的语言。Java类被组织成一个等级层次,在层次结构中,一个子类能够继承其超类的行为,并可用子类所具备的一些特有功能来扩展其超类的功能。对象模型是能定义对应真实事物的数据结构,使得程序的任务和任务如何实现二者之间的转换变得基本上透明。

面向对象的设计和编程的优点在于其开发速度和代码的可维护性,许多面向对象的开发都能通过利用和更改现存类库来完成,而不是创造一个新的结构。这就使开发加快了, Sun‘s Java Workshop(一个完全用Java写的IDE)的开发者能在几个月内建立一个功能齐备的图形IDE就是一个很好的证据。面向对象的方法还尽量使用自然的结构,使其有很高的可读性,并且可轻易更改和加强。

优点3:安全性高

由于有了JVM,一个Java应用程序与操作系统或硬件完全隔绝,因此计算机病毒或其他作祟的代码就很难获得对设备的控制。虚拟机是主机设备和那些可能难以确定其质量和可靠性的软件之间的一个保护层。

另外,Java设计者从该语言中去掉了指针变量的概念。Java不能任意访问内存,只能读写有Java内存分配管理系统创建的对象。由于Java编译器所强制的严格的分类机制,从理论上来说,访问那些未分配给程序的内存区域是不可能的。这个限制使得写恶意代码变得非常困难了。当然,这个保护并不完善,有人已经在Java安全模型中找到漏洞,但是,JVM确实提供了一定的保护,使得几乎不可能直接在硬件上运行代码。

对Java applet施加的限制就更加严格了。由于Java applet被设计成从Internet上下载,因而被视为不可信任的代码,除非它包括用户已认定为可信任的主机的数字指纹。JVM在内存的一个称之为 sandbox的区域运行诸如applet这种不可信任的代码。它给每个applet分配资源和特权,并将其限定在这些分配区域范围中。除了这些限制, sandbox模型还施加如下限制:禁止读写当地计算机文件系统;网络操作被限止,禁止不被信任的代码建立与任何计算机的网络连接,它也不能在任何小于1024的端口号上监听和接受连接;在运行不被信任代码的线程组以外,禁止访问或创建线程。

优点4:内存管理简单

Java的内存管理远比其他语言简单,因为它不使用指针。当对象被实例化时,内存被动态分配。正如我们前面分析的,对个别内存地址的访问被Java的设计者视为一个对安全的潜在危险,因此,访问也被禁止。去掉指针的结果不仅提高了安全性,还简化了编程,错误也减少了。

为了理解Java怎样分配内存,我们拿Java与C语言比较一下。在C语言中,可以用值或引用的方式来访问数据。事实上,出于灵活性和控制考虑,非原始数据类型都由引用方式来存取,即通过指针访问。因此,值和引用的不同变得非常清楚,特别是开发者不得不使用不同的符号(*和&)来存取数据。要用这两种不同的访问方式,必须清楚理解它们是什么以及为什么应该使用这一个,而不使用那一个。

在Java中,由值和引用来存储是无缝的,尤其因为其符号都一样。两者间惟一不同在于数据类型本身:所有原始数据类型始终由值的方式存取;所有对象,包括字串、数组以及文件流,始终由引用方式访问。声明为原始数据变量类型包含该变量的值,声明为对象的变量则包含对该对象(即该对象的地址)的一个引用,而非对象自身的引用。仅仅声明一个对象变量并不给对象分配内存,必须用“new”关键字来分配内存和创建对象。

这两种方法最根本的不同在于:不可能像在C中那样就Java内存地址做指针算术或其他操作。Java中对象的地址是相对的(或虚拟的),它由虚拟机任意分配,因此你没有理由还想要指针地址。

优点5:具有垃圾收集功能

垃圾收集功能自动收集内存中未引用的内存,并将其归回空闲内存链表中。JVM使用此功能将不在使用的内存还给系统。当Java程序说明并实例化一个对象或数组时,它仅仅做一个JVM请求,访问其下面的系统内存(通常是通过主机操作系统)并分配内存,Java的垃圾收集系统通过内存收集对象,然后检查它们的引用链。Java的垃圾收集系统的工作方式一般是搜索内存中的对象,然后检查它们的引用表。它计算程序中有多少变量当前正在引用每个对象。若对象的引用数目为零,它知道此对象不再在使用了,它的内存可以收回。其结果就是,不必像C语言那样,要人工来释放分配的内存。在C语言中,释放内存是一个必要、耗时且易出错的细节。Java自动而精确的处理此过程,去除了C/C++程序中那种常见的错误致因。

优点6:网络实现方便

由于今天的嵌入式系统通常都是面向网络的,采用内置网络支持的语言节约了在实现网络协议和通信程序方面耗费的大量时间和努力。在Java中,网络类包括 TCP/IP流和使用TCP及UDP的数据报程序,用于HTTP和URL服务的操作方法,以及错误检查代码和恢复功能。虽然实现网络也可能用其他语言,比如C语言,但那些语言要求特别的附件软件包、DLL,或其他必须由操作系统或者第三方销售提供的程序模块。特别附件通常要求有操作系统或第三方工具的知识,不像Java,有标准的、内置的网络支持。Java包括网络包是必要的,因为设计者不能对一个作为基础的操作系统的网络设施做任何假定,它们必须包括集成网络程序库,以确保Java程序能在所有平台上工作。

优点7:可以实现动态配置

动态配置是指系统启动时的用户制定配置或重新配置。需载入特殊的硬件配置、网络参数或在引导期间支持特定用途的一些实用程序的系统,常常使用动态配置。Java以动态捆绑来支持动态配置。当组成一个程序的各个类文件编译成字节码时,在类文件之间,或者对JVM包的类(如图形、网络以及核心语言支持)引用,还没有被解决。当JVM载入程序启动时,它动态的载入并捆绑(即链接)程序引用的所有的类。因此,要改变系统配置,需要做的就是修正相应的类文件。下一次启动时,JVM自动捆绑新文件到你的程序中,而新的配置将生效执行。

优点8:可以轻松诱捕和处理错误

与许多操作系统和程序不同,对嵌入系统而言,重新启动通常是无法接受的。这意味着嵌入式系统都必须足够坚实,能够以截取错误来防止程序或整个设备崩溃。

程序错误的致因很多。相对来说,很少是因为继承逻辑错误,而大多数程序的崩溃是因为意外输入,或者是因为程序不能调用系统资源来完成某个特定操作造成的。所以,必须能够预料这些问题,并要能够诱捕它们,以免引起更大的问题。虽然,能用几乎任何程序设计语言来诱捕和处理错误,不过如果有内置的设施来做这类工作,比如像Java那样,会有极大的帮助。

在Java中,由抛出(产生)一个异常来提示错误。使用专门为异常处理而设计的语句(关键字try、catch、和finally),程序能将其错误处理代码安排到几个集中区域中。try程序块是程序执行的正常流程,当一个异常发生在 try块(包括该嵌套块中的各层子程序)中,控制就交给了catch块。不管是否有异常发生,finally块中的代码始终要被执行。未被处理的异常会由调用堆栈自下而上传播JVM并终止程序。不再需要动手编程来将错误状态通过几层函数调用返回。而是,在错误发生由检测错误的代码直接抛出一个异常。这极大地简化了应用程序中的错误处理代码,进而获得更好地错误处理效果和更坚实可靠的代码。

优点9:提供对线程管理的直线支持

大多数操作系统都给一个进程产生和管理多个线程的能力,这些线程彼此独立地完成不同的任务。但是,很少由程序语言提供对线程管理的直线支持,通常都需要直接调用操作系统功能。Java却相反,直接在语言中提供了产生、管理和协调同步线程的功能。与Java的其他特点一样,该功能是必要的,因为设计者不敢确定底层的操作系统是否支持多线程。

开发者越来越多地在程序中使用线程,将其作为满足一个程序不能完成的,通常相互无关的一些任务的一种手段。由于Java对线程有内置语言支持,以Java创建多线程较之与其他语言更简单、更自然。

优点10:图形功能强大

JVM包括一个庞大的图形及窗口支持程序包,称为Abstract Windowing Toolkit(AWT)。用AWT,能在应用程序中快速而轻易地创建精致而强大的图形用户界面。对于需要精细的用户界面的嵌入系统来说,AWT能节省大量开发时间,从而使产品更快地走向市场。

Java语言的诸多优点在某些情况下恰恰可能成为其不利于在嵌入式系统中得以广泛应用的绊脚石。因此,还需要不断完善。在这里,笔者结合自己的研究,对某些局限提出一点改进的建议。

局限1:性能较低

由于解释Java字节码比相当的C或C++写的程序运行起来要慢5到10倍,对一些并非受制于CPU的嵌入系统来说,这一性能缺点不是问题,但是更经常的较慢的速度会导致无法接受的应答时间。

解决方案

有几种可能的解决方案可缓解速度慢的问题。

● 使用更快、更强大的处理器,使系统响应时间缩小到可以接受的范围。不过这个方法将增加每个系统的成本。

● 使用母语Java编译器来获得比较好的性能。但这样做,就放弃了与Java平台无关的优点,好在大多数嵌入系统都只在一种平台上运行。

● 在系统上并入一个JIT编译器,这样Java类装入时就被编译。不过,如果为接纳JIT编译器而不得不增加额外的内存,这个方法也会增加系统成本。另外,若系统各部分是按需求逐渐添加,则应该控制程序装入的时机,以使在装入类进行编译时产生的暂停不会影响系统的响应时间。

局限2:垃圾收集的系统开销过大

Java中的自动内存分配和垃圾收集性能是很实惠的,但是,从实时系统的角度来看,它的问题恰好就在于它是自动的。当垃圾收集进行时,开发者对系统的控制就受限了。因为,垃圾收集运行时,它冻结了系统其余部分的处理。这是因为它必须要在内存中移动对象,并必须在程序再次运行前,更新所有引用(指向)那些对象的程序变量。垃圾收集需要冻结处理的时间,具体取决于内存量和处理器的速度。很显然,这对硬实时系统是无法接受的,甚至极端时对软实时系统也是成问题的。

解决方案

垃圾收集以三种方式开启。首先JVM有一个后台垃圾收集线程,此线程倾向于在它一看见系统有空闲就开始垃圾收集,若有事件想要唤醒另一个线程,后台垃圾收集就会被该线程占先,但它不会立刻被占先,它得更新那些已被移动的对象的所有引用后,才能让一个线程运行。其次,若JVM没找到足够内存来满足某个内存分配请求,它将启动一个不会被占先的垃圾收集,在该操作完成之前,系统的其余部分被禁止。最后,一个应用程序能通过调用Systev.gc()方法来启动垃圾收集。所以,如果知道系统暂时不会执行任何时序上关键的任务,就可以启动垃圾收集,避免稍后在更关键时段进行收集。

局限3:JVM的内存开销过大

前面我们也论述了许多 JVM的内置特点,比如图形和网络,它们使得Java程序更快上市。所有这些特点的负面是JVM的内存开销。因为JVM是一个整块(要达到Java的可移植的目的,必须完整的采纳),JVM的内存占用量不能减少。现在的JVM最少需要2MB以上的内存。

解决方案

如果Java程序也在使用一些消耗内存的功能,由于一个JVM中有那么多的功能,各个Java应用程序就能写得小一点。如果建立的是一个从网络上动态下载并运行多个程序的系统,那么这将是个很大的优点。但Java仍然不具备可配置性和可伸缩性。

局限4:缺乏直接硬件接口能力

Java缺乏直接同硬件接口的能力。JVM仅仅是一个虚拟的机器,一个对硬件的软件抽象,虚拟机控制与实际硬件的接口,而我们只能和虚拟机打交道。

解决方案

但这并非是无法逾越的限制,很多C程序使用内嵌汇编来规避性能上的瓶颈,所以Java程序也能使用C来获得对硬件的直接访问。

让Java和C一起工作有两种方式。首先,可以使用本地方式,它们是用C/C++或另一种语言写的,但当调用时,则装入与JVM同样的内存空间,运行于同样的环境。因为它们被编译成机器码,本地方式运行更快并能直接访问硬件。本地过程与Java代码之间通过套接来彼此交流,就像网络中通信端点使用的套接一样。不过在选择了混合语言方法后,Java的与平台无关和安全特点就没有了。

另外,可以考虑将前面提到的Java处理器作为软件JVM的解释器部分作为一种硬件实现方案。Java程序能在这些处理器上直接运行并操纵硬件,要注意的是必需加一些特殊目的的指令给这种语言才能直接与处理器一起工作。

局限5:语言尚不够成熟

从标准的程序设计语言角度来看,Java还很年轻,也很粗糙。如果Java不是由一个小组开发的,也许某些错误和疏忽已经被发现和解决了。在Java亮相以后,它立即被用于比原来预期更多的地方。这一切都意味着Java最初的构思和实现,虽然坚实和有用,但在安全、大小和性能几方面仍感欠缺。

在其进一步发展中,Sun公司分了三个步骤来促进Java成为一种通用语言和计算机平台。首先,用Java编程实现现存的商业和企业的一些功能活动,诸如电子邮件、日历和字处理程序。其次,把Java提供给企业,使它成为一种编写内部应用程序的方法。最后一步,是为传统嵌入式设备应用,比如为移动电话、机顶盒以及打印机定义Java API以及语言功能。

由此可见,Java的嵌入式应用是排在Sun公司日程的最后的,Sun公司在继续为这些用途发展此语言,但对这方面的发展次于桌面及企业用途。按Sun公司的优先顺序,很可能还要过一段时间才能解决嵌入式应用中涉及到的一些问题。在此之前,嵌入式系统的编程人员可能不得不迂回、妥协以及使用第三方解决方案。

Java开发的编程工具也仍在发展之中。有几个厂家提供编译器和开发工具,如Symantec、Microsoft以及Sun公司。Sun不再是JVM和JIT的惟一供应商,其他几个供应商的产品也很有竞争力。Parasoft公司的Jtest软件自动为Java模块生成检测案例,而Numega公司的Jcheck为JVM中的程序行为提供一定的可见性。不过两者都只能处理调试程序中的一小部分,而且都是针对桌面系统开发设计的,虽然它们也能用于嵌入开发过程。

目前Java仍然没有交叉调试解决方案,即那种传统上被嵌入系统开发者用来处理目标平台上程序的方案,所以很可能必须用C/C++来写程序中针对硬件的部分。不管怎样,开发者最好用一个C/C++交互调试器来调试那些代码,并在目标系统上用弹出对话框,保持记录文件,或其他类技巧来调试Java.

链接:Java背景

Java语言最初的设计企图是想用于控制消费性电子产品,比如传呼机,这些都是典型的嵌入设备。Java的设计者企图建立一个简单的、面向对象的、智慧的、已经解译的、强大的、安全的、架构合理的、可移植的、高性能的、多线程的、动态的语言。为使Java对开发者有吸引力,Sun公司融合了类似于C语言的语法和结构。然而不管目标订得如何,Java还是被证明不适合于小型的电子设备,这很大程度上是因为它太大而且速度太慢。应用Java程序所需要的处理能力和内存量,对这类设备来说太昂贵了。

话又说回来,Sun公司设计Java时最重要的是平台无关及网络集成。一个无须更改就能够在几种不同硬件和软件平台运行的程序,对网络环境(在这种环境中用户希望能够在办公室的任何机器上传、下载和运行程序)来说是一个理想的程序。对想建立通过网络来通信并利用网上资源的分布式程序的开发者来说,一种在任何平台上都有内置的和标准的网络支持的语言是一个大实惠。

并且幸运的是,在Java发展的最后阶段,对新兴的商业化Internet的兴趣达到了狂热的程度。因此Sun公司便借机鼓吹Java是为Internet设计的。很多人已经把Java视为将使Internet功能更上一层楼的工具。虽然Java在网上也从未达到最初理想的那么普遍,但Java及其“表亲” JavaScript(一种由Netscape公司创建的,用于在网页中写脚本的类似于Java的语言)早已经是今天大多数商业网站普遍的必备语言了。

有相同爱好的可以进来一起讨论哦:企鹅群号:1046795523

学习视频资料:http://www.makeru.com.cn/live/1392_1164.html?s=143793

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

相关文章

  1. DolphinScheduler-QRTZ调度包-数据字典分析

    |内容参考链接:https://www.jianshu.com/p/e0bd5ed227f2 内容参考链接:https://www.cnblogs.com/Rozdy/p/4269762.html 内容参考链接:https://www.jianshu.com/p/36329ed4a085...

    2024/5/7 13:17:02
  2. 【深度学习】torch自动更新学习率(一)

    官方文档如下: torch.optim.lr_scheduler.StepLR(optimizer, step_size, gamma=0.1, last_epoch=-1)Parameters: optimizer(Optimizer) – Wrapped optimizer. step_size(int) – Period of learning rate decay. gamma(float) – Multiplicative factor of learning rate dec…...

    2024/5/7 16:29:22
  3. JS完整版原型链剖析之最基本的原型链

    1. __proto__属性 通过new 构造函数得到一个实例对象,而JS中每个对象身上都有一个属性**proto**,该属性值指向该对象的对象原型上 2. constructor属性 对象的对象原型上有一个constructor属性用来指向对应的构造函数 3. prototype属性 JS中每个构造函数身上都有一个属性protot…...

    2024/5/7 21:12:01
  4. 【Excel】行列、单元格区域的基本操作

    【Excel】行列、单元格区域的基本操作 快速求和:Alt+=同时设置多个行高: 选中多个行,然后一起拉大或调小,这样每一行都会设置成一样的高度 为了调整到行高到合适的高度,可以选中要调整的行,然后把光标放置到行号的交叉处,当光标变成上下的双向箭头,双击就可以把行高调整…...

    2024/4/28 3:09:57
  5. 报错[Vue warn]: Unknown custom element: - did you register the component correctly?

    报错信息 vue.runtime.esm.js:619 [Vue warn]: Unknown custom element: <FormError> - did you register the component correctly? For recursive components, make sure to provide the “name” option.分析 出现这种问题的原因我目前只遇到一种,那就是vue的组件使…...

    2024/5/6 19:25:44
  6. 监控神器普罗米修斯Prometheus安装配置

    一、基础环境 Centos7操作系统 Prometheus 2.6.0 https://prometheus.io/download/#prometheus Grafana 5.4.2 https://dl.grafana.com/oss/release/grafana-5.4.2- 1.x86_64.rpm go 1.8.3 https://golang.org/dl/ 二、安装go 1、解压安装 [root@localhost ~]# tar -C …...

    2024/5/7 10:14:31
  7. 9月最新184道阿里、百度、腾讯、头条Java面试题合集

    阿里面试题1. 如何实现一个高效的单向链表逆序输出?2. 已知sqrt(2)约等于1.414,要求不用数学库,求sqrt(2)精确到小数点后10位3. 给定一个二叉搜索树(BST),找到树中第 K 小的节点4. LRU缓存机制5. 关于epoll和select的区别,以下哪些说法是正确的6. 从innodb的索引结构分析,…...

    2024/4/25 22:08:21
  8. CentOS7 修改yum源为阿里源(无坑)

    1.备份本地yum源(避免下载崩溃用于回滚[重命名即可])[root@localhost ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak2.下载阿里yum源配置文件[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/…...

    2024/5/7 4:39:05
  9. echarts-折线图(折线虚实/颜色与拐点样式修改)

    https://blog.csdn.net/duyan_s/article/details/78833845?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase...

    2024/4/10 11:52:11
  10. 2020-08-21 keras optimizers

    keras optimizer 优化器在https://keras-cn.readthedocs.io/en/latest/other/optimizers/基础上更详细的解释from keras import optimizersmodel = Sequential() model.add(Dense(64, kernel_initializer=uniform, input_shape=(10,))) model.add(Activation(tanh)) model.add(…...

    2024/4/13 14:48:15
  11. MySql学习笔记5:分组函数(聚合函数)

    #进阶5:分组函数 /* 说明:分组函数往往用于实现将一组数据进行统计计算,最终得到一个值,又称为聚合函数或统计函数 分组函数清单: sum(字段名):求和 avg(字段名):求平均数 max(字段名):求最大值 min(字段名):求最小值 count(字段名):计算非空字段值的个数 */#案例1 :…...

    2024/4/11 20:04:03
  12. Anomaly Detection 异常检测

    异常检测(Anomaly detection)问题是机器学习算法的一个常见应用,是一个非监督学习算法异常检测要做的是,给定一个训练数据集,找一个函数,对于给定的输入x,判断x是否是和给定数据集的数据相近...

    2024/5/7 0:54:56
  13. 【数据分析】

    数据清洗及特征管理 #加载所需的库 import numpy as np import pandas as pd#加载数据train.csv df = pd.read_csv(train.csv) df.head(3)**数据清洗简述 ** 我们拿到的数据通常是不干净的,所谓的不干净,就是数据中有缺失值,有一些异常点等,需要经过一定的处理才能继续做后…...

    2024/4/11 20:04:01
  14. c++入门编程学习记录5

    20.8.21,学习c++的第五天 学习内容 内存的分区代码区:存放函数体的二进制代码,由操作系统进行管理的(共享、只读) 全局区:存放全局变量和静态变量以及常量 栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等 堆区:由程序员分配和释放,若程序员不释放,程序结束时…...

    2024/4/25 14:06:44
  15. Git Bash 常用命令最精简的总结就在这里了,错过了就太可惜了!!!

    Git Bash 常用命令总结 通用命令 - pwd print working directory 打印当前工作目录 cmd里面用不了 - ls 显示当前目录下的文件+ ls -a 显示隐藏文件夹 - cd 切换目录 - mkdir 文件夹名 即可创建一个文件夹 - mkdir 文件夹名 &am…...

    2024/5/7 1:30:28
  16. 考试心得

    同学之间经常有一句话:铁打的兄弟,流水的考试。但是,当成绩与我预期中的相差很大时,还是有些失望的(虽然不裁人。。。)。 有时候,还是需要一些打击的。这次考试,我有很多感触,也发现了自己的许多问题吧。 1看到题目就会有退缩的想法(无论是不是很难)。 2有想法的时候…...

    2024/5/7 2:01:44
  17. 2020 JFrame窗体固定

    JFrame 固定窗体setTitle("表格Test"); // 标题setResizable(false); // 固定窗体//setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); //退出窗口不适用setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口 ,退出进程//显示屏幕中央int width = 55…...

    2024/4/26 21:54:01
  18. Linux企业实战------redis功能的实现(主从复制、高可用、集群)

    Table of ContentsRedis的介绍与安装Redis的介绍redis的编译与安装redis的主从复制用redis sentinel实现集群高可用Redis Sentinel的简介实验步骤Redis的集群Redis集群的介绍Redis集群的搭建及主从复制集群重新分片Redis的介绍与安装Redis的介绍Redis(Remote Dictionary Serve…...

    2024/4/19 3:16:05
  19. [记录四] Vue(全家桶)+node+koa2+mysql+nginx+redis,博客全栈项目之web前端页面完结和路由的编写

    导语: 暑假在家闲着无事,就琢磨着做一个web博客练练手,现在已经做完了,把过程分享出来给大家看看,分享一下学习经验。这是第二篇,主要讲node,webpack和vue-cli环境的搭建,使用vue全家桶,完成构建静态页面,写好路由。 本文的目录一,前端组件的完结1,顶部功能栏目2,…...

    2024/5/7 11:48:25
  20. 多名BAT专家共著的一份MySQL实战文档,数据库再也不难了

    前言在互联网行业,MySQL数据库亳无疑问已经是最常用的数据库。LAMP (Linux +Apache + MySQL + PHP)甚至已经成为专有名词,也是很多中小网站建站的首选技术架构。由于文章内容过多,所以只截取了目录部分,每个知识点都有更细化的内容需要获取这份MySQL实战文档的朋友:店在文…...

    2024/4/29 13:00:56

最新文章

  1. 大模型系列之解读MoE

    Mixtral 8x7B 的推出&#xff0c; 使我们开始更多地关注 基于MoE 的大模型架构&#xff0c; 那么&#xff0c;什么是MoE呢&#xff1f; 1. MoE溯源 MoE的概念起源于 1991 年的论文 Adaptive Mixture of Local Experts&#xff08;https://www.cs.toronto.edu/~hinton/absps/jjn…...

    2024/5/7 21:58:35
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. 爬虫学习第一天

    爬虫-1 爬虫学习第一天1、什么是爬虫2、爬虫的工作原理3、爬虫核心4、爬虫的合法性5、爬虫框架6、爬虫的挑战7、难点8、反爬手段8.1、Robots协议8.2、检查 User-Agent8.3、ip限制8.4、SESSION访问限制8.5、验证码8.6、数据动态加载8.7、数据加密-使用加密算法 9、用python学习爬…...

    2024/5/7 2:16:01
  4. 黑客(网络安全)技术自学——高效学习

    01 什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、Web、移动、桌面、云等哪个领域&#xff0c;都有攻与防两面…...

    2024/5/7 2:50:40
  5. 416. 分割等和子集问题(动态规划)

    题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义&#xff1a;dp[i][j]表示当背包容量为j&#xff0c;用前i个物品是否正好可以将背包填满&#xff…...

    2024/5/7 19:05:20
  6. 【Java】ExcelWriter自适应宽度工具类(支持中文)

    工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...

    2024/5/6 18:40:38
  7. Spring cloud负载均衡@LoadBalanced LoadBalancerClient

    LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon&#xff0c;直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件&#xff0c;我们讨论Spring负载均衡以Spring Cloud2020之后版本为主&#xff0c;学习Spring Cloud LoadBalance&#xff0c;暂不讨论Ribbon…...

    2024/5/6 23:37:19
  8. TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案

    一、背景需求分析 在工业产业园、化工园或生产制造园区中&#xff0c;周界防范意义重大&#xff0c;对园区的安全起到重要的作用。常规的安防方式是采用人员巡查&#xff0c;人力投入成本大而且效率低。周界一旦被破坏或入侵&#xff0c;会影响园区人员和资产安全&#xff0c;…...

    2024/5/7 14:19:30
  9. VB.net WebBrowser网页元素抓取分析方法

    在用WebBrowser编程实现网页操作自动化时&#xff0c;常要分析网页Html&#xff0c;例如网页在加载数据时&#xff0c;常会显示“系统处理中&#xff0c;请稍候..”&#xff0c;我们需要在数据加载完成后才能继续下一步操作&#xff0c;如何抓取这个信息的网页html元素变化&…...

    2024/5/7 0:32:52
  10. 【Objective-C】Objective-C汇总

    方法定义 参考&#xff1a;https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...

    2024/5/7 16:57:02
  11. 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】

    &#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】&#x1f30f;题目描述&#x1f30f;输入格…...

    2024/5/7 14:58:59
  12. 【ES6.0】- 扩展运算符(...)

    【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数&#xff0…...

    2024/5/7 1:54:46
  13. 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?

    文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕&#xff0c;各大品牌纷纷晒出优异的成绩单&#xff0c;摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称&#xff0c;在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁&#xff0c;多个平台数据都表现出极度异常…...

    2024/5/7 21:15:55
  14. Go语言常用命令详解(二)

    文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令&#xff0c;这些命令可以帮助您在Go开发中进行编译、测试、运行和…...

    2024/5/7 0:32:51
  15. 用欧拉路径判断图同构推出reverse合法性:1116T4

    http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b&#xff0c;我们在 a i a_i ai​ 和 a i 1 a_{i1} ai1​ 之间连边&#xff0c; b b b 同理&#xff0c;则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然&#xff0…...

    2024/5/7 16:05:05
  16. 【NGINX--1】基础知识

    1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息&#xff0c;并安装一些有助于配置官方 NGINX 软件包仓库的软件包&#xff1a; apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...

    2024/5/7 16:04:58
  17. Hive默认分割符、存储格式与数据压缩

    目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限&#xff08;ROW FORMAT&#xff09;配置标准HQL为&#xff1a; ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...

    2024/5/6 19:38:16
  18. 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

    文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…...

    2024/5/7 16:05:05
  19. --max-old-space-size=8192报错

    vue项目运行时&#xff0c;如果经常运行慢&#xff0c;崩溃停止服务&#xff0c;报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中&#xff0c;通过JavaScript使用内存时只能使用部分内存&#xff08;64位系统&…...

    2024/5/7 0:32:49
  20. 基于深度学习的恶意软件检测

    恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞&#xff0c;例如可以被劫持的合法软件&#xff08;例如浏览器或 Web 应用程序插件&#xff09;中的错误。 恶意软件渗透可能会造成灾难性的后果&#xff0c;包括数据被盗、勒索或网…...

    2024/5/6 21:25:34
  21. JS原型对象prototype

    让我简单的为大家介绍一下原型对象prototype吧&#xff01; 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定&#xff0c;每一个构造函数都有一个 prototype 属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象…...

    2024/5/7 11:08:22
  22. C++中只能有一个实例的单例类

    C中只能有一个实例的单例类 前面讨论的 President 类很不错&#xff0c;但存在一个缺陷&#xff1a;无法禁止通过实例化多个对象来创建多名总统&#xff1a; President One, Two, Three; 由于复制构造函数是私有的&#xff0c;其中每个对象都是不可复制的&#xff0c;但您的目…...

    2024/5/7 7:26:29
  23. python django 小程序图书借阅源码

    开发工具&#xff1a; PyCharm&#xff0c;mysql5.7&#xff0c;微信开发者工具 技术说明&#xff1a; python django html 小程序 功能介绍&#xff1a; 用户端&#xff1a; 登录注册&#xff08;含授权登录&#xff09; 首页显示搜索图书&#xff0c;轮播图&#xff0…...

    2024/5/7 0:32:47
  24. 电子学会C/C++编程等级考试2022年03月(一级)真题解析

    C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...

    2024/5/7 17:09:45
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57