本文将首先带您回顾“系统调用”的概念以及它的作用,然后从经典的HelloWorld开始,逐行代码层层分析——鸿蒙OS的系统调用是如何实现的。写在前面9月10号华为开发者大会(HDC)上,华为向广大开发者宣布了鸿蒙2.0系统开源,源码托管在国内源码托管平台“码云”上:https:openharmony.gitee.com我也第一时间从码云下载了鸿蒙系统的源代码,并进行了编译和分析。当晚回看了HDC上的关于鸿蒙OS2.0的主题演讲,个人最为好奇的是——...
2020-11-26 14:52:05 1.5w浏览 0点赞 0回复 1收藏
关于进程和线程,大家总是说的一句话是“进程是操作系统分配资源的最小单元,线程是操作系统调度的最小单元”。这句话理论上没问题,我们来看看什么是所谓的“资源”呢。什么是计算机资源经典的冯诺依曼结构把计算机系统抽象成CPU+存储器+IO,那么计算机资源无非就两种:1.计算资源2.存储资源CPU是计算单元,单纯从CPU的角度来说它是一个黑盒,它只对输入的指令和数据进行计算,然后输出结果,它不负责管理计算哪些“指令和数据...
2020-09-27 16:16:48 1.7w浏览 0点赞 0回复 0收藏
1.快速失败(fail—fast)在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加、删除、修改),则会抛出ConcurrentModificationException。原理:迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个modCount变量。集合在被遍历期间如果内容发生变化,就会改变modCount的值。每当迭代器使用hashNext()next()遍历下一个元素之前,都会检测modCount变量是否为expectedModCount值,是的话就...
2020-09-27 15:01:07 1.2w浏览 2点赞 1回复 1收藏
首先,我们要知道,在Java中,线程中的异常是不能抛出到调用该线程的外部方法中捕获的。为什么不能抛出到外部线程捕获?因为线程是独立执行的代码片断,线程的问题应该由线程自己来解决,而不要委托到外部。”基于这样的设计理念,在Java中,线程方法的异常都应该在线程代码边界之内(run方法内)进行trycatch并处理掉。换句话说,我们不能捕获从线程中逃逸的异常。怎么进行的限制?通过java.lang.Runnable.run()方法声明(因为...
2020-09-25 14:58:33 1.9w浏览 0点赞 0回复 0收藏
异常这个词有我对此感到意外的意思。问题出现了,你也许不清楚该如何处理,但你的确知道不应该置之不理;你要停下来,看看是不是有别人或在别的地方,能够处理这个问题。只是在当前的环境中还没有足够的信息来解决这个问题,所以就把这个问题提交到一个更高级别的环境中,在这里将作出正确的决定。使用异常带来的另一个相当明显的好处是,它往往能够降低错误处理代码的复杂度。如果不使用异常,那么就必须检查特定的错误,并在...
2020-09-24 14:18:31 7162浏览 0点赞 0回复 0收藏
一、概念1.什么是系统调用?(常见Linux及其分类表)所谓系统调用就是用户在程序中调用操作系统所提供的一个子功能,也就是系统API,系统调用可以被看做特殊的公共子程序。系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配、进行IO传输及管理文件等),都必须通过系统调用方式向操作系统提出服务请求,并由操作系统代为完成。通常,一个操作系统提供的系统调用命令有几十个乃至...
2020-09-24 10:30:51 1.7w浏览 1点赞 1回复 1收藏
前言jQuery对象是一个类数组的对象,含有连续的整形属性以及一系列的jQuery方法。它把所有的操作都包装在一个jQuery()函数中,形成了统一(也是惟一)的操作入口。其中我们用的非常频繁的一个函数是$()或者说是jQuery(),当我们调用他的时候会根据传入的参数的不同而达到不同的效果。接下来会一一说一下这7中用法,欢迎大家指正其中不正确的地方。1jQuery(selector,context)简要的说是:接收一个css选择器表达式(selector)和可选...
2020-09-23 11:35:04 1.1w浏览 0点赞 0回复 0收藏
一、{}大括号表示定义一个对象,大部分情况下要有成对的属性和值,或是函数体{}表示对象、[]表示对象的属性、方法,()如果用在方法名后面,代表调用,如:varLangShen{"Name":"Langshen","AGE":”28”};上面声明了一个名为“LangShen”的对象,多个属性或函数用,(逗号)隔开,因为是对象的属性,所以访问时,应该用.(点)来层层访问:LangShen.Name、LangShen.AGE。当然我们也可以用数组的方式来访问,如:LangShen["Name"]、L...
2020-09-22 13:20:38 1.8w浏览 0点赞 0回复 0收藏
在JavaScript中,我们或许会写下这样的代码$(document).ready(function(){$("p").mouseover(function(){$("p").css("backgroundcolor","333");});});这个mouseover事件中的"$",这个"$"是什么含义呢这个时候如果我不想用$了,该怎么更改?也就是说我不想用jQuery了,也不考虑多浏览器支持的情况下,如果做修改呢?下面将简要介绍一下。"$"符号的起源$是合法的IdentifierStart就是可以作为变量名,函数名,形参的第一个字符.就如同下...
2020-09-22 11:18:20 8676浏览 0点赞 0回复 0收藏
背景Flutter作为最近很火的一个跨平台技术,以其高性能、跨平台的一系列优秀特性成功吸引了很多开发者和组织的青睐,但是由于其不同于传统Android或iOS开发的Widget机制,使得视图的代码往往冗长、不够简洁,解决这种困境的方法就是在开发中合理地运用合适的架构模式,使得程序的视图与数据分离,这样视图层的代码只用专心进行视图的描述和操作即可,不涉及过多复杂的数据操作,这样就可以使视图层的代码达到简洁。由于Flutter...
2020-09-21 13:14:41 9794浏览 0点赞 0回复 0收藏
在Java中经常会涉及到对象数组的排序问题,那么就涉及到对象之间的比较问题。通常对象之间的比较可以从两个方面去看:第一个方面:对象的地址是否一样,也就是是否引用自同一个对象。这种方式可以直接使用““来完成。第二个方面:以对象的某一个属性的角度去比较。从最新的JDK8而言,有三种实现对象比较的方法:一、覆写Object类的equals()方法;二、继承Comparable接口,并实现compareTo()方法;三、定义一个单独的对象比...
2020-09-18 15:54:59 9513浏览 1点赞 2回复 0收藏
JavaScript支持“”、“”和“”运算符。你应当理解这些(赋值、相等、恒等)运算符之间的区别,并在编码过程中小心使用。JavaScript对象的比较是引用的比较,而不是值的比较。对象和其本身是相等的,但和其他任何对象都不相等。如果两个不同的对象具有相同数量的属性,相同的属性名和值,它们依然是不相等的。相应位置的数组元素是相等的两个数组也是不相等的。严格相等运算符“”首先计算其操作数的值,然后比较这两个值,比...
2020-09-17 13:58:00 9849浏览 0点赞 0回复 0收藏
一:什么是面向对象面向对象(ObjectOriented,OO)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。二:面向对象的五大基本原则:SPR,OCP,LSP,DIP,ISP1:单一职责原则SRP(SingleResponsibilityPrinciple):是指...
2020-09-17 11:34:24 8183浏览 0点赞 0回复 0收藏
java:一种编程语言javaweb(JSP):网页代码javascript:一种页面脚本语言,可以实现各种页面的动态效果,比如弹框,隐藏等首先,我们来说一下java与javaweb之间的关系:我们平常说的Java一般指JavaSE,也就是JavaStandardEdition,Java的标准版,一般用来开发桌面应用程序,但是在开发桌面应用程序上相对VB,Delphi,VC++并没有什么优势。JavaWeb则到了JavaEE领域了,也就是JavaEnterpriseEdition,Java的企业版,看那个web就...
2020-09-16 15:05:14 1.2w浏览 0点赞 0回复 0收藏
向线程池提交任务的两个方法execute()、submit()的区别,我总结的主要有四点(1)申明位置不同:execute()方法定义在Executor接口中,submit()方法定义在ExecutorService接口中;ExecutorService接口继承了Executor接口。(2)可传参数不同:execute()方法参数只能传入Runnable接口;submit()方法有三个重载的方法;publicinterfaceExecutorServiceextendsExecutor{其他代码Future<>submit(Runnabletask);<T>Future<T>submit(Ru...
2020-09-16 13:37:57 1.3w浏览 0点赞 0回复 0收藏
说明:以下我主要从面向对象设计的角度出发介绍几种保障线程安全的设计技术,这些技术可以使得我们在不必借助同步锁的情况下保障线程安全,这就避免锁可能导致的问题及其资源的开销。文章目录一、变量定义为局部变量二、无状态(数据)对象三、不可变对象(final)四、构建线程私有对象五、装饰器模式六、总结五种方式实现线程安全开篇先说一下,什么时候才会出现线程安全问题?也就是线程安全问题发生是哪三个条件?条件一:存...
2020-09-16 13:01:55 1.0w浏览 0点赞 0回复 0收藏
1、Java获取CPU核数代码:System.out.println(Runtime.getRuntime().availableProcessors());输出本机CPU的数量,是一个数字2、线程池设置最大线程数量公式:(1)线程池大小CPU的数量×目标CPU的使用率×(1+等待时间与计算时间的比)(2)一般情况:IO密集型应用,则线程池大小设置为2N+1(N为CPU数量,下同)CPU密集型应用,则线程池大小设置为N+1IO密集型和CPU密集型简单来说就是看服务器是注重CPU运算还是IO传输3...
2020-09-16 12:46:56 2.5w浏览 0点赞 0回复 0收藏
众所周知,刚刚开源的「鸿蒙2.0」以JavaScript作为IoT应用开发的框架语言。这标志着继SpaceX上天之后,JavaScript再一次蹭到了新闻联播级的热点。这么好的机会,只拿来阴阳怪气实在太可惜了。作为科普,这篇文章不会拿着放大镜找出代码中的槽点来吹毛求疵,而是希望通俗地讲清楚它所支持的GUI到底是怎么一回事。只要对计算机基础有个大概的了解,应该就不会对本文有阅读上的障碍。我们已经知道在「鸿蒙2.0」上,开发者只需编写...
2020-09-14 14:41:33 1.5w浏览 1点赞 0回复 2收藏
个人说明:本人并不是年薪百万的技术大牛,但总算是一名合格的嵌入式工程师,现在某企业担任嵌入式软件工程师开发一职,以下观点可能会带有片面或者分析不全,但却是一名一线企业嵌入式软件开发者真实感受和所得,希望能帮助那些有需要的人,我明白年轻人出来打拼都不容易。为何要写这片文章?小生也是过来人,踩过你们踩过的坑百度搜索“嵌入式”、“嵌入式开发”、“嵌入式发展前景”等字眼,出来的都是一大堆培训机构,出来...
2020-09-11 13:32:41 1.6w浏览 2点赞 2回复 1收藏
今天将从以下4方面来系统的学习一下java的反射机制:java反射是什么java反射(Reflection)底层实现原理java反射的简单演示java反射的应用场景1,java反射是什么首先大家应该先了解两个概念,编译期和运行期,编译期就是编译器帮你把源代码翻译成机器能识别的代码,比如编译器把java代码编译成jvm识别的字节码文件,而运行期指的是将可执行文件交给操作系统去执行,JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类...
2020-09-10 10:38:26 3.1w浏览 2点赞 0回复 2收藏