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

软件开发小程序制作系统集成与运维空间租用硬件开发视频监控技术咨询与支持——联系电话:0311-88999002/88999003

首页 / 操作系统 / Linux

Java内存模型-重排序

Java内存模型-重排序

数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:名称代码示例说明写后读a = 1;b = a;写一个变量之后,再读这个位置。写后写a = 1;a = 2;写一个变量之后,再写这个变量。读后写a = b;b = 1;读一个变量之后,再写这个变量。上面三种情况,只要重排序两个操作的执行顺序,程序的执行结果将会被改变。前面提到过,编译器和处理器可能会对操作做重排序。编译器和处理器在重...
ConcurrentHashMap原理分析

ConcurrentHashMap原理分析

当我们享受着jdk带来的便利时同样承受它带来的不幸恶果。通过分析Hashtable就知道,synchronized是针对整张Hash表的,即每次锁住整张表让线程独占,安全的背后是巨大的浪费,而现在的解决方案----ConcurrentHashMap。ConcurrentHashMap和Hashtable主要区别就是围绕着锁的粒度以及如何锁。如图 左边便是Hashtable的实现方式---锁整个hash表;而右边则是ConcurrentHashMap...
Java中newInstance()和new()

Java中newInstance()和new()

在Java开发特别是数据库开发中,经常会用到Class.forName( )这个方法。通过查询Java Documentation我们会发现使用Class.forName( )静态方法的目的是为了动态加载类。在加载完成后,一般还要调用Class下的newInstance( )静态方法来实例化对象以便操作。因此,单单使用Class.forName( )是动态加载类是没有用的,其最终目的是为了实例化对象。这里有必要提一下就是Class下的newInstance...
思科修复了NSA黑客泄漏的0day漏洞

思科修复了NSA黑客泄漏的0day漏洞

不知名的黑客组织 Shadow Brokers 公开了NSA关联黑客团队开发的部分网络入侵工具,公开的代码包含了思科、Juniper、Fortinet和两家中国公司的防火墙产品的漏洞利用。其中被称为 ExtraBacon的漏洞利用针对的是思科Adaptive Security Appliance (ASA) 防火墙,软件版本8.x到 8.4。如果漏洞被成功利用,攻击者不需要有效的用户名或密码就能访问防火墙。思科证实它是一个0day漏洞,它在8月17日释出了...
Linux C 内存管理方式之半动态

Linux C 内存管理方式之半动态

看到半动态申请内存,第一反应这是什么鬼?实际上半动态内存申请很容易理解,在GNU C中使用alloca函数来实现#include <stdlib.h>void *alloca (size_t size)alloca函数可以像malloc一样动态申请内存(注意所申请的内存位置在调用函数的栈里面,页因此在调用函数结束后自动释放)好处是显而易见的:既可以自由得申请空间,又不需要手动释放内存。坏处是:发生错误时,无法得到一个清晰得错误消息。还有就是,非...
比特币项目对程序二进制文件安全性发出警告

比特币项目对程序二进制文件安全性发出警告

比特币项目官方网站刊登了一则安全通知,对 Bitcoin 0.13.0 二进制文件的安全性发出了警告,但通知没有透露多少细节。安全通知称,它有理由相信即将发布的Bitcoin Core版本的二进制文件很有可能成为国家支持的攻击者的目标。Bitcoin.org没有必要的技术资源能抵御如此强大的攻击者,因此要求比特币社区,尤其是中国的比特币社区,在从网站下载二进制文件时需要加倍警惕。如果不警惕的话你的比特币可能会丢失,你的电脑甚至可能会参与对比特币网络的攻击。...
Java的值传递和引用传递

Java的值传递和引用传递

我们先说下值传递和引用传递java官方解释:值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。引用传递:(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果...
Java内存模型-顺序一致性

Java内存模型-顺序一致性

数据竞争与顺序一致性保证当程序未正确同步时,就会存在数据竞争。java 内存模型规范对数据竞争的定义如下:在一个线程中写一个变量,在另一个线程读同一个变量,而且写和读没有通过同步来排序。当代码中包含数据竞争时,程序的执行往往产生违反直觉的结果(前一章的示例正是如此)。如果一个多线程程序能正确同步,这个程序将是一个没有数据竞争的程序。JMM 对正确同步的多线程程序的内存一致性做了如下保证:如果程序是正确同步的,程序的执行将具有顺序一致性(sequential...
Hibernate的get和load的区别

Hibernate的get和load的区别

在hibernate中我们知道如果要从数据库中得到一个对象,通常有两种方式,一种是通过session.get()方法,另一种就是通过session.load()方法,然后其实这两种方法在获得一个实体对象时是有区别的,在查询性能上两者是不同的。一.load加载方式当使用load方法来得到一个对象时,此时hibernate会使用延迟加载的机制来加载这个对象,即:当我们使用session.load()方法来加载一个对象时,此时并不会发出sql语句,当前得到的这个...
Java序列化和持久化的区别与联系

Java序列化和持久化的区别与联系

持久化(Persistence)即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的对象存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。持久化是将程序数据在持久状态和瞬时状态间转换的机制。JDBC就是一种持久化机制。文件IO也是一种持久化机制。持久化是一种对象服务,就是把内存中的对象保存到外存中,让以后能够取回。需要实现至少3个接口:void Save(object o) 把一个对象保存到...
<< 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 >>