ICode9

精准搜索请尝试: 精确搜索
  • JDK8---UnSafe类实现CAS乐观锁2020-12-04 13:01:08

    CAS:CompareAndSwap(比较并交换),简单点说,内存地址V,旧值为A,当要修改为新值B的时候,先判断V当前的值是不是A,如果是,则将V的值修改为B,否则失败。 那么JDK8中是怎么实现的呢?(ConCurrentHashMap、Atomic、AQS等常见并发类的底层实现都有它) 在sun.misc包下有一个 UnSafe类(在rt.jar包下面):

  • 内存结构篇:直接内存2020-11-14 23:04:26

    一、定义 直接内存(Direct Memory)并不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。但是这部分内存也被频繁地使用,而且也可能导致 OutOfMemoryError 异常出现。(即不属于JVM虚拟机内存区域,属于操作系统的内存) 在 JDK1.4 中新引入了NIO类,它可以使用 Nativ

  • 了解LockSupport工具类2020-11-04 22:35:26

    介绍:   在网上也没有找到太多的东西,大概说了一下,这个工具类的所有方法都是静态的,底层采用UNSAFE直接操作的内存,可以实现线程的阻塞和唤醒    可以看到他的park方法调用的是UNSAFE的park方法    而UNSAFE的park方法是一个native方法,调用的C的类库了,没办法继续看下去

  • jdk1.8 Unsafe类 park和unpark方法解析2020-10-19 11:33:07

    park是Unsafe类里的native方法,LockSupport类通过调用Unsafe类的park和unpark提供了几个操作。Unsafe的park方法如下: public native void park(boolean isAbsolute, long time);  第一个参数是是否是绝对时间,第二个参数是等待时间值。如果isAbsolute是true则会实现ms定时。如果isA

  • Java Unsafe 测试代码2020-08-24 22:03:05

      Java Unsafe 测试代码 import com.User; import org.junit.Before; import org.junit.Test; import sun.misc.Unsafe; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.UUID; import java.util.concurrent.CountDownLatch; class User {

  • golang 拷贝大切片一定比小切片代价大吗2020-08-19 21:32:32

    问题描述 拷贝大切片一定比小切片代价大吗? 解答 并不是,拷贝所有切片的代价都是一样的。 看一下源码,就很清楚了: type slice struct { array unsafe.Pointer len int cap int } 因为切片的底层有三个字段(一个 unsafe.Pointer,两个 int)。 其中 unsafe.Pointer 指向的是切片

  • c# unsafe2020-06-23 16:56:42

    前言 c# unsafe可以让我们做一些测试的危险操作。 正文 打开unsafe 功能 在 Visual Studio 开发环境中设置此编译器选项 打开项目的“属性”页。 单击“生成”属性页。 选中“允许不安全代码”复选框。 向 csproj 文件添加此选项 打开项目的 csproj 文件,并添加以下元素: XML 复制

  • Java魔法类:Unsafe应用解析2020-06-19 20:03:02

    本文转载自Java魔法类:Unsafe应用解析 前言 Unsafe是位于sun.misc包下的一个类,主要提供一些用于执行低级别、不安全操作的方法,如直接访问系统内存资源、自主管理内存资源等,这些方法在提升Java运行效率、增强Java语言底层资源操作能力方面起到了很大的作用。但由于Unsafe类使Java

  • 并发编程之sun.misc.Unsafe类2020-05-29 11:58:14

    1、Unsafe知识点整理 2、代码: package com.javabasic.unsafe; import java.lang.reflect.Field; import sun.misc.Unsafe; /** * Unsafe如何使用 * * 1、使用Unsafe.getUnsafe();获取对象会报错 * Exception in thread "main" java.lang.ExceptionInInitializerError Cau

  • 详解java并发原子类AtomicInteger(基于jdk1.8源码分析)2020-05-23 00:00:30

    java并发包里面的类一直是学习和面试的重点,这篇文章主要是对java并发包的其中一个类AtomicInteger的讲解。从为什么要出现AtomicInteger再到其底层原理来一个分析。 一、从a++说起为什么使用AtomicInteger 我们知道java并发机制中主要有三个特性需要我们去考虑,原子性、可见性和有

  • JDK源码那些事儿之LockSupport2020-05-10 11:51:18

    前面一篇文章中说明了Object的阻塞唤醒机制,今天我们要讲解另一个类LockSupport,在AQS中你能看见它的身影,所以需要提前了解其实现和使用机制,便于后面深入AQS的学习 前言 JDK版本号:1.8.0_171 在源码阅读之前希望大家先去阅读几遍注释,其中介绍了LockSupport的设计,实现和使用机制,这里

  • angular4 上传本地图片,将拿到的files转化为url地址,提示sanitizing unsafe URL value2020-05-06 22:04:59

      最近用angular4做项目,上传图片时在onchange里面拿到files文件,将files文件转化为url地址显示的时候,发现console里面报错,同时angular4提示WARNING: sanitizing unsafe URL value,最后在谷歌找到解决办法。下面附上我的代码截图。   html中使用input标签 <input #file2 type="f

  • go 内存对齐2020-04-30 20:56:31

    go 内存对齐 前言 学过操作系统的人知道,OS为了CPU读取方便会一次性读取一块的单位,这个块的开大小又称为内存访问粒度。 在64位系统中,这个粒度为8,也就是一次性读取8个字节。 unsafe.Sizeof() //返回传入参数的大小 unsafe.Alignof() //返回对齐参数 对齐规则 结构体的成员变量,

  • Go map的实现(三)map 的数据访问2020-04-30 10:00:24

    本文在golang map 数据结构的基础上,学习map 数据是如何访问的。 map 创建示例 在golang 中,访问 map 的方式有两种,例子如下: val := example1Map[key1] val, ok := example1Map[key1] 第一种方式不判断是否存在key值,直接返回val (可能是空值) 第二种方式会返回一个bool 值,判断是否存

  • 001、GO之指针转换2020-04-28 21:00:16

    01、Pointer类型   unsafe包下,有定义type Pointer *ArbitraryType(任意类型指针),可绕过GO的类型限制,type ArbitraryType int 任何类型的指针值都可以转换为Pointer。 Pointer可以转换为任何类型的指针值。 uintptr可以转换为Pointer。 Pointer可以转换为uintptr。 02、使用示例

  • Java并发编程2020-04-26 20:51:14

    Java 并发编程实践中的话:   编写正确的程序并不容易,而编写正常的并发程序就更难了。相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作的顺序是不可预期的。   并发编程相比 Java 中其他知识点学习起来门槛相对较高

  • Go-unsafe详解2020-04-21 09:52:57

            指针类型 在正式介绍 unsafe 包之前,需要着重介绍 Go 语言中的指针类型。 我本科开始学编程的时候,第一门语言就是 C。之后又陆续学过 C++,Java,Python,这些语言都挺强大的,但是没了 C 语言那么“单纯”。直到我开始接触 Go 语言,又找到了那种感觉。Go 语言的作者之一 Ken T

  • 关于2的n次幂对齐2020-04-19 23:51:36

    应用场景 内存对齐时基本都会求关于n位对齐的向上取整 讲解 go1.13.8 中channel源码中有这样一个变量hchansize用来表示hchan(channel对应的实际结构体)所需大小(申请内存空间时,是根据hchansize给hchan申请对应大小的内存空间),这个变量的值大概就是hchan的size关于maxAlign向上取

  • 并发编程之Atomic&Unsafe魔法类2020-04-06 18:51:12

    原子操作           处理器自动保证基本内存操作的原子性,如对同一个缓存行里进行16/32/64位的操作是原子的。复杂的内存操作处理器不能自动保证其原子性,比如跨总线宽度,跨多个缓存行,跨页表的访问。 Atomic 在Atomic包里一共有12个类,四种原子更新方式,原子更新基本类型,原子更

  • 处理业务:事件是如何在 pipeline 中传播的2020-04-06 10:53:15

    处理业务:事件是如何在 pipeline 中传播的 目录处理业务:事件是如何在 pipeline 中传播的1. 主线分析1.1 主线1.2 知识点2. 源码分析2.1 fireChannelRead 在 pipeline 中的传播2.1 传播行为2.3 执行线程2.4 ChannelPipeline vs ChannelHandlerContext2.5 HeadContext vs TailContext

  • 嵌入式linux之go语言开发(十三)LittlevGL,漂亮的嵌入式GUI的go语言绑定2020-04-04 14:39:06

    LittleVgl,一款开源嵌入式图形用户界面库。https://littlevgl.cn/ 使用简单小巧,界面也漂亮。很适合用在嵌入式上。在Stm32单片机上都能跑,只要实现了基础的函数很好移植。 业余时间移植到了嵌入式linux上,使用帧缓冲Frambuffer,显示效果还不错。 计划选用LittleVgl作为嵌入式的漂

  • Pikachu-Unsafe Fileupload不安全文件上传2020-04-03 18:58:28

     不安全的文件上传漏洞 1.概述   文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。 如果说

  • Rust入坑指南:居安思危2020-04-02 23:02:46

    任何事情都是相对的,就像Rust给我们的印象一直是安全、快速,但实际上,完全的安全是不可能实现的。因此,Rust中也是会有不安全的代码的。 严格来讲,Rust语言可以分为Safe Rust和Unsafe Rust。Unsafe Rust是Safe Rust的超集。在Unsafe Rust中并不会禁用任何的安全检查,Unsafe Rust出现的原

  • unsafe.Pointer uintptr2020-04-01 15:03:44

    unsafe 针对刚刚的 “错误示例”,我们可以采用今天的男主角 unsafe 标准库来解决。它是一个神奇的包,在官方的诠释中,有如下概述: 围绕 Go 程序内存安全及类型的操作 很可能会是不可移植的 不受 Go 1 兼容性指南的保护 简单来讲就是,不怎么推荐你使用。因为它是 unsafe(不安全的),但是

  • pikachu-Unsafe file downloads/ uploads(不安全文件下载/上传)2020-03-31 17:53:59

      不安全文件下载 文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后 会开始执行下载代码,将该文件名对应的文件response给浏览器,从而完成下载。 如果后台在收到请求的文件名后,将

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有