CAS简介CAS全称是compareandswap,是一种用于在多线程环境下实现同步功能的机制。CAS它是一条CPU并发原语。操作包含三个操作数--内存位置、预期数值和新值。CAS的实现逻辑是将内存位置处的数值与预期数值想比较,若相等,则将内存位置处的值替换为新值。若不相等,则不做任何操作。这个过程是原子的。CAS并发原语体现在java语言中的sun.misc.Unsafe类中的各个方法。调用Un
分类:
其他好文 时间:
2019-12-29 09:30:11
阅读次数:
82
文件包含漏洞 File Inclusion(文件包含漏洞)概述 文件包含,是一个功能。在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件。 比如 在PHP中,提供了:include(),include_once()require(),requ ...
分类:
其他好文 时间:
2019-12-28 09:57:22
阅读次数:
68
一 原因 二 修改 1 : 项目属性 -> 配置属性 -> C/C++ -> 预处理器 -> 预处理定义2 : 添加 "_CRT_SECURE_NO_DEPRECATE" 和 "_SCL_SECURE_NO_DEPRECATE"3 : 点击应用和确定 ...
分类:
其他好文 时间:
2019-12-26 09:41:34
阅读次数:
76
RACSignal: 这是一个冷信号,每调用一次subscribeNext就会触发一次 didSubscribe的回调,进行信号的发送。 初始化RACDynamicSignal对象,且RACDynamicSignal会用copy的方式持有didSubscribe这个block。稍后在RACDynam ...
分类:
其他好文 时间:
2019-12-24 18:27:55
阅读次数:
95
package main /* #include <stdlib.h> */ import "C" import ( "unsafe" "fmt" ) type Slice struct { Data unsafe.Pointer //万能指针类型 对应C语言中的void* len int //有效... ...
分类:
其他好文 时间:
2019-12-23 00:21:04
阅读次数:
99
Go 语言反射 反射是指在程序运行期对程序本身进行访问和修改的能力。程序在编译时,变量被转换为内存地址,变量名不会被编译器写入到可执行部分。在运行程序时,程序无法获取自身的信息。 支持反射的语言可以在程序编译期将变量的反射信息,如字段名称、类型信息、结构体信息等整合到可执行文件中,并给程序提供接口访 ...
分类:
编程语言 时间:
2019-12-22 10:36:26
阅读次数:
135
AQS AbstractQueuedSynchronizer抽象资源队列同步器,用于实现任务对于资源获取的同步功能。 几个要点: 资源:state,int计数 等待线程:Node,等待线程队列 线程阻塞:Unsafe.park() 获取和释放资源通过操作state实现,为0则代表资源空闲。 ...
分类:
其他好文 时间:
2019-12-20 18:29:35
阅读次数:
65
主要是通过AbstractByteBufAllocator类实现的ByteBuffer的申请。 代码如下: 会根据是否有Unsafe的类支持来判断是否需要使用“堆外内存”;如果配置了3种情况则不会使用 (1)io.netty.noUnsafe这个属性false (2)io.netty.tryUnsa ...
分类:
Web程序 时间:
2019-12-20 11:58:25
阅读次数:
115
最近读取数据较多,经常遇到这个问题 碰到问题后按如下处理: 在根目录点击右键选择属性 选中配置属性 C/C++中的预处理器,在预处理器定义栏点击右侧的下拉箭头并选择编辑 会出现如下界面 将_CRT_SECURE_NO_WARNINGS粘贴到最后一行 确定后再编译,问题解决 来源:https://bl ...
分类:
其他好文 时间:
2019-12-20 01:23:44
阅读次数:
170
这种方式是Go所推荐的,优点就是安全,尽管这种操作会发生内存拷贝,导致性能上会有所损耗,这在处理一般业务时这种损耗是可以忽略的。但如果是拷贝频繁的情况下,想要进行性能优化时,就需要引入unsafe.Pointer了: func main() { var s = []byte("我永远喜欢藤原千花.j... ...
分类:
其他好文 时间:
2019-12-19 21:22:05
阅读次数:
76