首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • Java EE(8)——线程安全——锁策略&CAS

    本文内容 1.锁策略:乐观/悲观,轻量/重量,自旋/挂起等待,读写,公平/非公平,可重入/不可重入,其他锁策略,Callable 2.CAS:原理,应用(原子类,自旋锁),ABA 3.JUC(java.util.concurrent ) 的常见类:ReentrantLock,原子类,Semaphore,CountDownLatch 4.线程安全的集合类:多线程环境使用 ArrayList/队列/哈希表 1.锁策略 1.1各种锁策略介绍 这个过程涉及用户态和内核态的切换,线程的阻塞和唤醒,并且要保存该线程的上下文信息,会消耗性能,所以挂起等待锁是重量级锁的实现 1.1.4读写锁 多线程之间,数据的读取方之间不会产生线程安全问题,但数据的写入方互相之间以及和读者之间都需要进行互斥 Java 标准库提供了ReentrantReadWriteLock 类, 实现了读写锁. return false; } 当多个线程同时对某个资源进行CAS操作,只能有一个线程操作成功,但是并不会阻塞其他线程,其他线 程只会收到操作失败的信号 2.2CAS应用 2.2.1实现原子类 标准库中提供了java.util.concurrent.atomic

    17410编辑于 2026-01-13
  • 安全编程的典范:Java 8中的安全应用指南

    Java 8 中的 java.util.Base64 类提供了方便且高效的Base64编码和解码功能,适用于处理字符串数据的安全传输和存储。 ("utf-8")) 对原始字符串进行URL和文件名安全的Base64编码。 注意事项:URL 和文件名安全的Base64编码会使用 - 替换 +,并且使用 _ 替换 /,以确保编码结果可以安全地在URL和文件名中使用。 ;}高级特性:Java 互操作性: JavaScript 代码可以直接与 Java 类和对象交互。 $ jjs script.js与 Java 应用程序集成:可以将 Nashorn 集成到 Java 应用程序中,用于脚本支持、规则引擎和动态行为等多种用途。

    64410编辑于 2025-01-17
  • 来自专栏立权的博客

    HashMap 在 Java7 ,Java8 的线程安全问题

    1.Java7 多线程 put put -> 容量到达上限 -> 扩容(resize) -> transfer (转移旧散列表上的节点到新散列表) 在 transfer 这一步,因为Java7 使用了头插法 2.Java 8 不再使用上述头插法,但是因为 没有 StoreLoad 屏障,在一般的 TSO CPU模型中,StoreBuffer中的内容无法被及时刷出,可能出现覆盖现象 关于TSO内存模型:https

    82910发布于 2020-11-11
  • 来自专栏全栈程序员必看

    java8 groupingby_java8的groupingby

    可能很多人特别是刚毕业的应届生多少都学过一点java8的东西,知道有很多的新特性 但是在实用性上总感觉没地方用。。 比如一个DO类person,里面包含年龄,性别等属性,这时候需要根据不同的 年龄段对这个list进行过滤,按照以前的方法,只能不断的新建list或者需要自己一个个手动过滤出年龄放在map当中, 但是在java8

    43220编辑于 2022-09-24
  • 来自专栏实战docker

    java与es8实战之四:SpringBoot应用中操作es8(无安全检查)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本篇是《java与es8实战》系列的第四篇, 未设置安全检查,无需证书、账号、密码,只要连接到es的IP和端口就能执行操作 总体目标可以拆解为两个子任务 在SpringBoot中连接elasticsearch8 在SpringBoot中使用elasticsearch8 官方的Java API Client 接下来直接开始 部署elasticsearch集群(无安全检查) 关于快速部署elasticsearch集群(无安全检查),可以参考《docker-compose快速部署 elasticsearch-8.x集群+kibana》 Java应用连接elasticsearch的核心套路 不论是直连,还是带安全检查的连接,亦或是与SpringBoot的集成使之更方便易用,都紧紧围绕着一个不变的核心套路 与es8实战》系列的所有代码都以子工程的形式存放在父工程elasticsearch-tutorials中 《java与es8实战之二:实战前的准备工作》一文说明了创建父工程的详细过程 在父工程elasticsearch-tutorials

    1.7K10编辑于 2022-07-12
  • Java 8 的 Optional:提高代码安全性与可读性

    java 体验AI代码助手 代码解读复制代码public class NullPointerExample { public static void main(String[] args) { = null) { return user.getName(); } return "Unknown";}第二部分:Java 8 Optional 的引入Optional 的概念Optional java 体验AI代码助手 代码解读复制代码import java.util.Optional;public class OptionalExample { public static void main 8 API 中的 Optional常见的 Java 8 API 使用在流(Stream)中使用 Optional:java 体验AI代码助手 代码解读复制代码List<User> users = Arrays.asList 尽管它有一定的局限性,但在适当的场合使用 Optional 可以提高代码的可读性和安全性。鼓励开发者在设计 API 和实现业务逻辑时,充分利用 Optional 的优势。

    25510编辑于 2025-07-22
  • 来自专栏网络安全攻防

    JAVA安全之JDK8u141版本绕过研究

    基本介绍 从JDK8u141开始JEP290中针对RegistryImpl_Skel#dispatch中bind、unbind、rebind操作增加了checkAccess检查,此项检查只允许来源为本地 RegistryImpl var6 = (RegistryImpl)var1; String var7; ObjectInput var8; :624) at java.lang.Thread.run(Thread.java:748) 绕过思路 JDK 8u141之后可以利用lookup+JRMP(JRMP是为了绕过JEP290 之后,而且在JDK 8u121之后加入了JEP290机制,所以在JDK8u121~141之间可以直接利用UnicastRef链路进行绕过,而在JDK 8u141~231则需要结合CheckAccess的绕过与 ~JDK8u231之间的CheckAccess的绕过+JEP290的绕过实现~ 推 荐 阅 读 横向移动之RDP&Desktop Session Hija

    71400编辑于 2024-12-20
  • 来自专栏码农小胖哥的码农生涯

    Java 8 + 10 = Java 18

    明天Java 18将正式发布, 虽然它不是长期支持 (LTS) 版本,但它却实现了九个 JEP(在Java 18[1]列出)。有哪些特性值得关注呢? JEP 400 将 UTF-8 指定为标准 Java API 的默认字符集。通过此更改,依赖于默认字符集的 API 将在所有实现、操作系统、语言环境和配置中保持一致。 TUESDAY -> 7; case THURSDAY, SATURDAY -> 8; case WEDNESDAY -> 去年九月发布JDK 17 LTS 版本更为重要,很多类库,特别是Spring framework 6.0和Spring Boot 3.0 都将基于JDK17,你还要在Java 8坚持多久呢? /en/java/javase/17/docs/api/java.base/java/net/InetAddress.html [3] JEP 419: https://openjdk.java.net

    56730编辑于 2022-04-06
  • 来自专栏程序人生 阅读快乐

    Java 8实战

    本书全面介绍了Java 8 这个里程碑版本的新特性,包括Lambdas、流和函数式编程。有了函数式的编程特性,可以让代码更简洁,同时也能自动化地利用多核硬件。 全书分四个部分:基础知识、函数式数据处理、高效Java 8 编程和超越Java 8,清晰明了地向读者展现了一幅Java 与时俱进的现代化画卷。

    62310发布于 2018-10-10
  • 来自专栏怀英的自我修炼

    Java漫谈8

    字符串,在Java中一个最接近与8大数据类型的存在。甚至于由于它太好用了,以至于在编写代码的时候都快忘了有个叫char的基本数据类型了。 我记得,当年刚能独立写一些小型代码的时候,被老师问到8大基本的数据类型有哪些,便脱口而出了String,int, boolean……(当然这个回到是错误的) 为什么会出现这种情况呢,因为String有一个非常特殊的功能 相较于数组,字符串更倾向于显示内容,而且纵观Java的API,String类是没有属性的,像得到它的hashcod,length这些结果都是用方法去得到的。 而在Java中,调用方法时就会有有括号出现,于是就出现了字符串得到长度的大小时用.length(),而数组的长度是用length。 由于开发的时候对字符串的需求远胜于单个字符,故Java在设计String的时候,让它有了不用new,就能直接赋值的方式。

    844100发布于 2018-03-12
  • 来自专栏Java Tale

    Java 8教程

    Java 8 - 简介 Java 8于2014年初发布。在java 8中,大多数关于功能的是lambda表达式。它还有许多其他重要功能,如默认方法,Streams API和新的日期/时间API。 8函数式接口教程 默认方法 Java 8允许您在接口中添加非抽象方法。 8日期和时间API更改 Java 8 Lambda表达式教程 一个非常全新而令人兴奋的功能,java 8搭配它,是Lambda表达式。 Java 8方法引用与示例 在Java 8中,您可以使用class::methodName类型语法引用类或对象的方法。让我们在java 8中了解不同类型的可用方法引用。 java 8中的默认方法是什么? 默认方法使您能够向库的接口添加新功能,并确保与旧版本的这些接口编写的代码的二进制兼容性。 顾名思义,java 8中的默认方法是默认的。

    2.2K42发布于 2020-03-18
  • 来自专栏悠扬前奏的博客

    Java 8 - Lambda

    Lambda是Java8中的新特性,用来在Java中实现函数式编程。 ? Lambda 0.什么是Lambda Lambda表达式是一段可以传递的代码。 将面向对象中传递数据编程传递行为。 以下代码正常输出: public class Java8Tester { final static String salutation = "Hello! GreetingService { void sayMessage(String message); } } 3.2 final修饰的外部局部变量 以下代码正常输出: public class Java8Tester 5.2 Java 8中的function包 实际上在Java 8中提供了一个function包作为这种例子的使用宝典。

    88321发布于 2019-05-28
  • 来自专栏后端Coder

    java8

    import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; import java.math.BigDecimal package com.wpw.learnlearn; import java.math.BigDecimal; import java.util.*; import java.util.stream.Collectors ; import static java.util.Comparator.comparingLong; import static java.util.stream.Collectors.*; /*

    1.1K20发布于 2020-02-10
  • 来自专栏问天丶天问

    Java 8 特性

    Java 8可谓是自Java 5以来最具革命性的版本了,她在语言、编译器、类库、开发工具以及Java虚拟机等方面都带来了不少新特性。我们来一一回顾一下这些特性。 一、Lambda表达式 Lambda表达式可以说是Java 8最大的卖点,她将函数式编程引入了Java。Lambda允许把函数作为一个方法的参数,或者把代码看成数据。 Java 8引入重复注解,这样相同的注解在同一地方也可以声明多次。重复注解机制本身需要用@Repeatable注解。 Java 8在编译器层做了优化,相同注解会以集合的方式保存,因此底层的原理并没有变化。 十、Base64 在Java 8中,Base64编码成为了Java类库的标准。Base64类同时还提供了对URL、MIME友好的编码器与解码器。

    1K30发布于 2018-06-13
  • 来自专栏OSChina

    Java8

    ; import java.util.function.Consumer; import org.junit.Test; /** * 一 . lambda 表达式的基础语法:JAVA8 中引用了一个新的操作符 ; import java.util.function.Supplier; import org.junit.Test; /** * Java8 4大核心函数式接口 * * Consumer 8 提供的并行流 * * 数据:100000000L 10000000000L * 时间:66毫秒 825毫秒 */ @Test public void test3() { java.time.temporal.TemporalAdjusters; import java.util.Set; import org.junit.Test; /** * JAVA8 日期时间的操作 "指定日期格式转化 : " + ofPattern.format(localDateTime)); } /** * 获取所有时区 */ @Test public void test8(

    1.4K30发布于 2019-07-31
  • 来自专栏如来的java学习

    java8

    =59655:C:\Program Files\JetBrains\IntelliJ IDEA 2019.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program ;C:\Program Files\Java\jdk1.8.0_201\jre\lib\rt.jar;C:\Users\user\ideaTest\java8\target\classes" com.mobius.vision.jdk8 return biFunction.andThen(function).apply(a,b); } Lambda表达式的一些操作 package com.mobius.vision.jdk8; ; /** * @author NingXioaoming * @createTime 2019/11/8 11:05 * @description */ public class Test4 流操作的分类: 惰性求值 及早求值 List<Integer> list = Arrays.asList(2, 4, 5, 6, 8); list.stream().map

    1.3K20发布于 2020-07-14
  • 来自专栏IT开发技术与工作效率

    Java 8 函数式编程Java 8 函数式编程

    Java 8 函数式编程 java.util.function.* @FunctionalInterface 都是函数接口,没有成员(状态) 高阶函数:参数或返回值为函数 方法引用:类名::方法名

    1.6K30发布于 2018-09-29
  • 来自专栏陶然同学博客

    Java】线程安全

    2.1 线程安全 如果有多个线程在同时运行,而这些线程可能会同时运行这段代码。程序每次运行结果和单线程运行的结果是一样 的,而且其他的变量的值也和预期的是一样的,就是线程安全的。 这种问题,几个窗口 ( 线程 ) 票数不同步了,这种问题称为线程不安全。 线程安全问题都是由全局变量及静态变量引起的。 要解决上述多线程并发访问一个资源的安全性问题 : 也就是解决重复票与不存在票问题, Java 中提供了同步机制 ( synchronized ) 来解决。 根据案例简述: 为了保证每个线程都能正常执行原子操作 ,Java 引入了线程同步机制。 那么怎么去使用呢?有三种方式完成同步操作: 1. 同步代码块。 2. 使用同步方法代码如下: 2.5 Lock锁 java.util.concurrent.locks.Lock 机制提供了比 synchronized 代码块和 synchronized 方法更广泛的锁定操作

    74320编辑于 2023-02-24
  • 来自专栏架构师成长之路

    k8s实践(8)--ssl安全认证配置

    一.基于CA签名的双向数字证书认证方式 在一个安全的内网环境中, Kubernetes的各个组件与Master之间可以通过apiserver的非安全端口http://apiserver:8080进行访问 但如果apiserver需要对外提供服务,或者集群中的某些容器也需要访问apiserver以获取集群中的某些信息,则更安全的做法是启用HTTPS安全机制。 k8s中哪些组件需要进行tls证书认证,哪些不需要? kube-scheduler、kube-controller-manager 一般和 kube-apiserver 部署在同一台机器上,它们使用非安全端口和 kube-apiserver通信,非安全端口默认为 安全端口默认为https的6443,可以使用--secure-port指定,监听安全端口的地址默认为0.0.0.0(监听所有接口),可以使用--bind-address指定。

    3.9K20编辑于 2022-04-14
  • 来自专栏啄木鸟软件测试

    安全测试工具(连载8

    3.2 DirBuster DirBuster是OWASP(开放WEB软体安全项目- OpenWeb Application Security Project)开发的一款专门用于探测WEB服务器的目录和隐藏文件 由于使用JAVA编写,电脑中要装有JDK才能运行。本书介绍的DirBuster版本为V0.12。 打开DirBuster,如43所示。 ?

    81220发布于 2019-12-12
领券