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

首页 / 操作系统 / Linux

Java内存模型-final

Java内存模型-final

与前面介绍的锁和 volatile 相比较(见http://www.linuxidc.com/Linux/2016-08/134512.htm),对 final 域的读和写更像是普通的变量访问。对于final 域,编译器和处理器要遵守两个重排序规则:在构造函数内对一个 final 域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。初次读一个包含 final 域的对象的引用,与随后初次读这个 final 域,这两个操作之间不...
Java内存模型-总结

Java内存模型-总结

处理器内存模型顺序一致性内存模型是一个理论参考模型,JMM 和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照。JMM 和处理器内存模型在设计时会对顺序一致性模型做一些放松,因为如果完全按照顺序一致性模型来实现处理器和 JMM,那么很多的处理器和编译器优化都要被禁止,这对执行性能将会有很大的影响。根据对不同类型读/写操作组合的执行顺序的放松,可以把常见处理器的内存模型划分为下面几种类型:放松程序中写-读操作的顺序,由此产生了 total store...
C++ 变量初始化规则

C++ 变量初始化规则

定义没有初始化式的变量时,系统有时候会帮我们初始化变量。系统如何初始化取决于变量的类型以及变量定义的位置。内置类型变量是否自动初始化取决于变量定义的位置。函数体外定义的变量初始成0;函数体内定义的变量不进行自动初始化。除了用作赋值操作的左操作数,其他任何使用未初始化变量的行为都是未定义的,不要依赖未定义行为。以int类型为例,一段简单的测试代码:#include <iostream>using namespace std;int a;int m...
Java集合-hashCode

Java集合-hashCode

hashCode 的作用在 Java 集合中有两类,一类是 List,一类是 Set 他们之间的区别就在于 List 集合中的元素师有序的,且可以重复,而 Set 集合中元素是无序不可重复的。对于 List 好处理,但是对于 Set 而言我们要如何来保证元素不重复呢?通过迭代来 equals() 是否相等。数据量小还可以接受,当我们的数据量大的时候效率可想而知(当然我们可以利用算法进行优化)。比如我们向 HashSet 插入 1000 数据,难道我们真的要...
Java性能优化--字符串优化处理

Java性能优化--字符串优化处理

1.String对象 String对象是java中重要的数据类型,在大部分情况下我们都会用到String对象。其实在Java语言中,其设计者也对String做了大量的优化工作,这些也是String对象的特点,它们就是:不变性,常量池优化和String类的final定义。1.1 不变性 String对象的状态在其被创建之后就不在发生变化。为什么说这点也是Java设计者所做的优化,在java模式中,有一种模式叫不变模式,了解的童鞋也应该知道不变模式的作用:...
Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句

Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句

最近在使用Hibernate4中,发现两个很有奥秘的注解@DynamicInsert 和@DynamicUpdate如果是在配置文件的话那就是dynamic-insert和dynamic-update这两个注解在一定程度上可以增加与数据库操作相关的速度,可以节省SQL语句的执行时间,提高程序的运行效率。使用这两个注解只需要在实体类上加入即可,或者在*.hbm.xml配置。这两个注解是boolean值,true或者false。1.首先使用false来看一下执...
Java异常处理的throw和throws的区别

Java异常处理的throw和throws的区别

1. 区别throws是用来声明一个方法可能抛出的所有异常信息,throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理。而throw则是指抛出的一个具体的异常类型。2.分别介绍 throws:用于声明异常,例如,如果一个方法里面不想有任何的异常处理,则在没有任何代码进行异常处理的时候,必须对这个方法进行声明有可能产生的所有异常(其实就是,不想自己处理,那就交给别人吧,告诉别人我会出现什么异常,报自己的错,让别人处理去吧)。格式是:方法名...
Java内存区域-“堆与栈”

Java内存区域-“堆与栈”

本文是我阅读周志明老师《深入理解Java虚拟机-JVM高级特性与最佳实战》章节2.2的学习笔记。更多内容,请参考原书。 Java虚拟机在执行Java程序时会将其所管理的内存划分为若干个不同的数据区域,这些区域有各自的用途及生命周期。具体而言包括以下几个区域。1. 程序计数器 一块较小的内存空间,可视作当前线程所执行的字节码的行号指示器。主要用途是选取该线程下一条需要执行的字节码指令。 每个线程有一个独立的程序计数器,各个线程的计数器之间互不影响,独立...
Spring MVC 4.0以后版本返回json格式数据问题

Spring MVC 4.0以后版本返回json格式数据问题

SpringMVC4.0以后版本返回json格式数据问题,有什么偏颇的地方希望大家多多斧正。在这个问题上困扰了我两天,这两天翻来覆去睡不着。一直在想这个问题。废话不多说下面进入正题。1.创建创建web项目,加入SpringMVC的jar,我这里演示用spring-framework-4.2.3.RELEASE。jar包如下图所示:2.配置web.xml如下:<?xml version="1.0" encoding="UTF-8"?><we...
Linux基础知识之bash脚本编程初级-变量与算术运算

Linux基础知识之bash脚本编程初级-变量与算术运算

什么是变量?变量最初来源于数学,指的是非固定的值可变化的数通常用拉丁字母表示。在计算机中变量它依旧指的是可变化的数,只不过表现形式有些变化。它指的是变量名+所指向的内存空间。以下实验环境均在CentOS7.2进行变量的特点变量分强类型变量,与弱类型变量强类型变量:变量需事先声明且需提前定义其变量存储格式弱类型变量:不需事先声明,不需定义变量存储格式。bash把所有变量统统视作字符型;bash中的变量无需事先声明,相当于,把声明和赋值过程同时实现。变量名的命...
Linux bash脚本编程初级-逻辑运算与测试

Linux bash脚本编程初级-逻辑运算与测试

引言前面介绍了bash编程的基础变量与算术表达式,本文介绍在脚本中的进阶知识:测试在bash中测试大体分两部分:条件测试、组合测试。而条件测试有分:数值测试、字符串测试、文件测试。组合测试则有两种表达方式。具体是什么表达方式在文章中会有具体展示。 本文实验环境为CentOS7.2Linux中为什么要学习测试(判断)?当我第一次学习这部分内容时,觉得好难,好不爽。可是这又是想要继续学习Linux必须要掌握的...
C++程序员如何转Java

C++程序员如何转Java

忙里偷闲,到了这个时间终于得空写一篇早想写的文章。其实本文的标题有些不太准确,C++程序员写Java代码不是说就非得转行写Java,抛弃C++,而只是多了一个选择而已。两种语言各有优势,这里我们且不谈语言之争,就假设有朋友需要这样一种角色转变,写了多年的C++,一时间突然有项目需要用Java来写。 Java语言较C++语言语法上有很多的相似之处,但是本质上是有区别的。一个合格的C++程序员在他写下每一行代码的时候心中必然会有整个程序运行起来以后,代码中的...
JavaScript代码模块化的正规方法

JavaScript代码模块化的正规方法

RequireJS-CommonJS-AMD-ES6 Import/Export详解为什么起了一个这个抽象的名字呢,一下子提了四个名词分别是:RequireJS,CommonJS,AMD,ES6,答案是因为现实很骨感,我们必须很勇敢才能正视这一段悲催的往事。如今的JavaScript平台正值如日中天,大家可能会忽略他的过去和弊端,这些弊端中一直被人诟病的就是JavaScript的包管理,比如类似Java中的import,其实理论上来讲这种基本元素的缺失大大...
<< 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 >>