Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

Java线程的生命周期

Java线程的生命周期

对于多线程编程而言,理解线程的生命周期非常重要,本文就针对这一点进行讲解。一、线程的状态线程的存在有几种不同的状态,如下:New状态 Ready状态 Running状态 Dead状态 Non Runnable状态 1、New状态New状态是线程已经被创建,但是还未开始运行的状态。此状态通过调用线程的start()方法可让线程运行。2、Runnable状态Runnable状态可称为准备运行状态,也可称为队列,此状态通过调用线程的start()方法可让线程运行...
Node.js开发者必须熟悉的四个JavaScript概念

Node.js开发者必须熟悉的四个JavaScript概念

Node.js是一个服务器端的开发框架,它基于Google Chrome的V8 JavaScript引擎构建。尽管Node.js自身是使用C++开发的,但是它使用JavaScript作为其应用语言。Node.js有四个概念对于初学者非常重要,应该理解并掌握它们。如下:一、非阻塞或异步I/O由于Node.js是一个服务器端框架,因此它的主要工作之一就是处理来自浏览器的请求。在传统的I/O系统中,只有先前请求的响应返回来后,新的请求才能发出。这也就是为什么称之...
Java 8的八个新特性

Java 8的八个新特性

1、接口的默认方法和静态方法Java 8在接口方面引入了新特性。Java 8版之前,接口只有抽象方法,而在Java 8,为接口新增了两种类型的方法。第一种是默认方法。此方法使用了default关键字修饰方法名。实际上接口不包含任何实现的方法,而在Java 8中,可以通过使用default关键字来添加默认的方法实现。接口的实现类可以直接使用这些默认的方法,同时还可以重写默认的方法,这不是强制性的重写。package demo.ch;public interf...
Java中使用MongoDB的几种方式

Java中使用MongoDB的几种方式

近有时间看了一下mongodb,因为mongodb更容易扩展所以考虑使用mongodb来保存数据。首先下载安装mongodb,这是很简单的,装好后使用mongod命令就可以启动数据库。正式部署的话可以考虑使用百度云bae,bae是支持mongodb的,版本2.x。安装好之后,就要看怎么使用了,看官方的文档使用起来还是比较简单的。文档分为shell版、python版、java版、javascript版等等。本人要再java里使用所以选择java版。但是我发现...
Java Class文件格式解析

Java Class文件格式解析

一、Java Class文件是什么Java语言是跨平台的,所谓一次编写,到处运行。之所以是跨平台的,就是Java定义了一套与操作系统,硬件无关的字节码格式,这个字节码就是用Java class文件来表示的,Java class文件内部定义了虚拟机可以识别的字节码格式,这个格式是平台无关性的,在Linux系统或者在Windows系统上都是一致的。这个就好比html文件,我们定义好规范,这个系统只要去按照规范显示出来里面的内容就好了。好比html就是class...
Java二维码的生成与解析代码

Java二维码的生成与解析代码

二维码,是一种采用黑白相间的平面几何图形通过相应的编码算法来记录文字、图片、网址等信息的条码图片。如下图二维码的特点:1. 高密度编码,信息容量大可容纳多达1850个大写字母或2710个数字或1108个字节,或500多个汉字,比普通条码信息容量约高几十倍。2. 编码范围广该条码可以把图片、声音、文字、签字、指纹等可以数字化的信息进行编码,用条码表示出来;可以表示多种语言文字;可表示图像数据。3. 容错能力强,具有纠错功能这使得二维条码因穿孔、污损等引起局部...
Java基础梳理:数组

Java基础梳理:数组

创建数组 下面这几种方式都可以创建一个数组1 int[] a;2 int[] b = new int[5];3 String c[] = new String[] { "Hello", "World" };4 double [] d = new double[6]; 我们比较习惯于第二种方式,第一种只是声明了数组并未初始化,使用的时候往往会因为忘记将变量初始化而报错。而第三种、第四种只是写法习惯上的问题。 对于数组初始化,数字类型的值默认为0,字符串...
Android studio 多渠道打包超简洁版

Android studio 多渠道打包超简洁版

最近一直用Android Studio 进行开发,在开发和发版的时候,遇到一个多渠道打包的问题,由于公司里是有七个渠道的包进行分发,由于每次去AndroidManifest.xml修改渠道的值,甚是麻烦。最后去google了一番,发现有些方法,是在gradle文件里切换各种不同的AndroidManifest.xml文件,感觉这样也太麻烦些了。。。后面搜索了些,发些大家写得都差不多,发现一个在gradle利用manifestPlaceholders这个属性...
Java内存区域与内存溢出异常

Java内存区域与内存溢出异常

运行时数据区域程序计数器(Program Counter Register):可看作是当前程序所执行的字节码的行号指示器。在虚拟机的概念模型里(不同虚拟机可能有不同的实现方法),字节码解释器就是通过改变程序计数器的值来取下一条字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖于这个计数器。Java虚拟机栈(Java Virtual Machine Stacks):与程序计数器一样,Java虚拟机栈也是线程私有的,他的它的生命周期和线程相同,虚...
后现代的系统编程语言

后现代的系统编程语言

C++作为一门经典的编程语言,从上世纪八十年代起至今一直被广泛应用在系统开发和高性能计算领域。近几年来随着各种编程语言和范式的兴起,C++的身影渐渐淡出了人们的视野。但是作为一个仍在不断进步的语言,C++在最近几年飞速发展,已经具备了现代语言应有的特性,而且也有了许多已有的和正在进行的新的拓展。经典的C++作为C语言的超集,一方面,C++集成了C在系统编程优点,能够精确的控制内存中的每一个bit;另一方面,提供了丰富的抽象机制和编程范式,引入了面向对象、泛...
JavaScript类型系统之Number

JavaScript类型系统之Number

前面的话 JavaScript只有一种数字类型,既可以表示32位的整数,还可以表示64位的浮点数。JavaScript使用IEEE754格式来表示数字,存在浮点计算精度问题。整数 javascript的整数表示共有三种字面量格式是十进制、八进制、十六进制。但在进行算术计算时,所有以八进制和十六进制表示的数值最终都将被转换成十进制数值 [注意]javascript中可以保存正0和负0,且被认为相等 [1]八进制字面值的第一位必须是0,然后是八进制...
JavaScript类型系统之String

JavaScript类型系统之String

前面的话 string是由单引号或双引号括起来的字符序列,且被限定在同种引号之间,即必须是成对单引号或双引号。字符串的独特在于它是唯一没有固定大小的原始类型 字符串中每个字符都有特定的位置,首字符从位置0开始,第二个字符在位置1,依次类推,这意味着字符串中的最后一个字符的位置一定是字符串的长度减1特点 JavaScript中的字符串是不可变的。字符串连接需要先创建一个新字符串,然后在新字符串中填充两个需要拼接的字符串,最后再销毁原来的字符串。这个过程...
JavaScript类型系统之基本数据类型与包装类型

JavaScript类型系统之基本数据类型与包装类型

前面的话 JavaScript的数据类型可以分为两种:原始类型和引用类型 原始类型也称为基本类型或简单类型,因为其占据空间固定,是简单的数据段,为了便于提升变量查询速度,将其存储在栈(stack)中(按值访问)。其中,javascript基本数据类型包括Undefined、Null、Boolean、Number和String五种 引用类型由于其值的大小会改变,所以不能将其存放在栈中,否则会降低变量查询速度,因此其存储在堆(heap)中,存储在变量处的...
JavaScript中的原始值和复杂值

JavaScript中的原始值和复杂值

前面的话 javascript的数据类型可以分为两种:原始类型和引用类型。原始类型也称为基本类型或简单类型,javascript基本数据类型包括Undefined、Null、Boolean、Number和String五种,而引用类型也称为复杂类型,在Javascript中是Object。与此相对应,它们的值也分别被称为原始值和复杂值特性原始值 原始值是表示Javascript中可用的数据或信息的最底层形式或最简单形式。原始类型的值被称为原始值,是因为它...
Qt实现文件拆分和融合小工具

Qt实现文件拆分和融合小工具

最近因事物需要,需要将大文件分解为几个小文件,然后就行传输,在接收端需要对接收到的小文件进行融合。因此用Qt写了这个小工具。现在奉献上这个小工具的代码和思路。我们知道任何文件在计算机上都是二进制数据块,因此只需要使用读写二进制的形式来读取大文件,在将读取的大文件以二进制形式写入小文件,这样就可以将文件拆分了(当然这是非常简单的拆分方法,对有些文件肯定存在错误的,因为本人在这方面的知识很肤浅)。同样小文件的融合就是拆分的逆过程。在读写文件的过程中我使用的是C...
Boost笔记--Thread--Ubuntu上初次使用时遇到的问题

Boost笔记--Thread--Ubuntu上初次使用时遇到的问题

我的系统是Ubuntu14.04,按照网上的教程安装好Boost。今天是第一次使用Boost库的,在看了官方文档楞是没搞懂,如是在找了个简单的例子,看看代码以理解thread是怎么简单使用的。结果在编译这个例子的时候(也是按照作者的方法)出现了问题,google了一把,没找到(主要是英文,看着头痛,而且也是刚入手linux系统,有些老外讲的太高端了没看懂怎么回事),然后百度,找到了一个类似的文章,看到了别人的解决方法才开始明白,同时也明白了在看Boost官...
C++函数对象

C++函数对象

在学习C++的时候对这个函数对象还没什么感觉,但是在这次学习Boost.Thread的时候才发现,函数对象的重要性以及方便性。在传统的C线程中,会有一个void*参数用于给线程函数传递参数,但是Boost.Thread去是直接构造线程对象,除了一个函数名之外没有其它的参数,那么如果使用传统的方式(直接将函数名称传入)就只能执行无参数的函数了,所以这里使用了函数对象来实现参数的传递。(一)函数对象在来回顾一下什么是函数对象,就是一个重载"()"运算符的类的对...
Boost笔记--Asio--(1)简单的同步通信小示例

Boost笔记--Asio--(1)简单的同步通信小示例

看了一天的Boost.Asio库的资料,现在还是有点迷糊。对于Asio的学习还是要继续,同时在这里也记录下自己入手的第一个小例子。感觉先从小例子入手,然后再去理解那些原理概念啥的,要好一些。因为概念原理都太抽象了,有了小例子就知道是怎么个套路了。对于Asio库的在后面的学习中会陆续的写些文章来记录一些笔记。(注:我不是专业的网络人士,有些东西可能我自己理解的很幼稚,没办法我连tcp/ip协议了解的很少。只能边学边去了解了。)(1)服务器端代码#includ...
Boost--时间和日期--(1)timer库的介绍

Boost--时间和日期--(1)timer库的介绍

(一)timer库的简介 timer是一个很小的库,提供简单的时间度量和进度显示功能,也可用于性能测试等计时任务。timer库包含三个组件:计时器类timer、progress_timer和进度指示类progress_display。(二)timer类 timer类可以测量时间的流逝,是一个小型的计时器,提供毫秒级别的计时精度和操作函数。它位于boost命名空间下。使用时需要包含头文件: include <boost/timer.hpp>...
Boost--内存管理--(1)智能指针

Boost--内存管理--(1)智能指针

(一)RAII机制 RAII机制(资源获取即初始化,Resource Acquisition Is Initialization),在使用资源的类的构造函数中申请资源,然后使用,最后在析构函数中释放资源。 如果对象实在创建在栈上(如局部对象),那么RAAII机制会工作正常,当对象生命周期结束时会调用其析构函数来释放资源。但是当对象是在堆上创建时(用new操作符),那么要想析构该对象内存就需要调用delete操作符了。这这方式存在隐患,当我们new了...
<< 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 >>