首页 > TAG信息列表 > 方法

java并发数据结构之CopyOnWriteArrayList

CopyOnWriteArrayList是一个线程安全的List实现,其在对对象进行读操作时,由于对象没有发生改变,因此不需要加锁,反之在对象进行增删等修改操作时,它会先复制一个对象副本,然后对副本进行修改,最后将修改后的副本对象写回,从而保证操作的线程安全,下面我们看一下具体的代码实现。构造函数通

Slack 下一代平台 - 高级模态

创建一个空白项目当你开始一个新项目时,你可以运行slack create命令。在本教程中,您将从头开始构建一个应用程序。所以从列表中选择“空白项目”:$ slack create? Select a template to build from: Hello World A simple workflow that sends a greeting Scaffolded pro

通过 CancellationToken 提高 Web 性能

在 Web 开发中,经常会遇到这样的场景:用户发起一个请求,Web 服务器执行一些计算密集型的操作,等待结果返回给用户。这种情况下,如果用户在等待结果的过程中取消了请求,那么服务器端依然会继续执行计算,这样就会造成资源浪费。为了解决这个问题,我们可以使用 CancellationToken 来提高 Web

JAVA中生成随机数Random VS ThreadLocalRandom性能比较

前言大家项目中如果有生成随机数的需求,我想大多都会选择使用Random来实现,它内部使用了CAS来实现。 实际上,JDK1.7之后,提供了另外一个生成随机数的类ThreadLocalRandom,那么他们二者之间的性能是怎么样的呢?Random的使用Random类是JDK提供的生成随机数的类, 这个类不是随机的,而是伪随机

全面理解Java内存模型

Java内存模型即Java Memory Model,简称JMM。JMM定义了Java 虚拟机(JVM)在计算机内存(RAM)中的工作方式。JVM是整个计算机虚拟模型,所以JMM是隶属于JVM的。如果我们要想深入了解Java并发编程,就要先理解好Java内存模型。Java内存模型定义了多线程之间共享变量的可见性以及如何在需要的

Java安全之freemaker模版注入

freemaker简介#FreeMarker 是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 在线手册:http://freemarker.foofun.cn/模板文件存放在Web服务器上,当访问指定模版文件时, FreeMarker会动态转换模板,用最新的数据内容替换

对于Java循环中的For和For-each

Which is Faster For Loop or For-each in Java对于Java循环中的For和For-each,哪个更快通过本文,您可以了解一些集合遍历技巧。Java遍历集合有两种方法。一个是最基本的for循环,另一个是jdk5引入的for each。通过这种方法,我们可以更方便地遍历数组和集合。但是你有没有想过这两种方法

Java:ArrayList的基本使用(icode9学习笔记)

集合和数组的对比(为什么要有集合) 分为俩点1. 长度:数组的长度是固定的,集合的长度是可变的。2. 存储类型: 数组:可以存储基本数据类型,引用数据类型。 集合:只能存储引用数据类型。小tips: 基本数据类型在集合中存储要使用包装类。 基本数据类型对应的包装类

【深入浅出 Yarn 架构与实现】3-3 Yarn Application Master 编写

一、Application Master icode9 编写方法上一节讲了 Client 提交任务给 RM 的全流程,RM 收到任务后,由 ApplicationsManager 向 NM 申请 Container,并根据 Client 提供的 ContainerLaunchContext 启动 ApplicationMaster。 本篇代码已上传 Github一)整体流程#1&2、启动 NMClient 和 RMC

ava反应式编程-icode9

前面把icode9-Java函数式编程的由来和最主要的核心知识点讲完了。包括比较难懂的Lambda表达式是怎么演变而来的也全部都撸了一遍。Lambda表达式这种编程方式的确是让人不太习惯,尤其是之前那种纯面向对象编程的思维模式一旦建立起来之后,想要再接受这种比较奇怪的语法和编程模式,确实

JQueue一个实现Outbox模式的库

为了提高系统吞吐率,也就是提高生产效率,核心观点如下,系统设计也是如此 在微服务或任何其他基于事件的架构(event-driven-architecture)中,在一些用例中,一个服务可能需要我们对他们自己的本地数据库进行修改,同时发布一个事件。然后,该事件会被其他服务所消费。为了拥有一个一致的

C++对象模型:g++的实现(七)

这篇来总结一下《深度探索C++对象模型》1. 构造函数按照发生的顺序,一个类的构造函数会做的事情: 所有虚基类的构造函数会被调用,从左到右,从深到浅: 如果虚基类被列在member initialization list(成员初始化列表)中,那么如果有任何明确指定的参数,都应该传递过去;如果没有列在list中,而该类

C++入门实战-通讯录管理系统

今天是接触C++的第二天,学习了基础内容之后用了两个多小时的时间完成了一个通讯录管理程序,功能相对简单,代码也不复杂,欢迎各位大佬指出不足之处点击查看代码#include<iostream>#include<string>#include<regex>using namespace std;struct PhoneNumber{ string name;//姓名 string se

C++初阶(封装+多态--整理的自认为很详细)

继承概念:继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。语

Java 中的自上而下/自下而上的合并排序

定时实验结果预测自下而上的方法应该表现得更好: 自上而下的方法递归调用,这将占用 O(logN) 额外的函数调用堆栈空间mergeSortHelper 自上而下的方法需要 O(logN) 额外的时间将数组分解为一个/零个元素但是它们的空间复杂性都是O(N)(存储排序数据的临时数组)定时实验结果自下而上的方法有时

Java新特性(2):Java 10以后

再来看看Java11对http的更新,例如通过http访问某度的主页:// 包名由Java 9的jdk.incubator.http改为Java 11的java.net.httpHttpClient client = HttpClient.newHttpClient();HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("http:

TreeUtils工具类一行代码实现列表转树 实战Java8

一、序言在日常一线开发过程中,总有列表转树的需求,几乎是项目的标配,比方说做多级菜单、多级目录、多级分类等,有没有一种通用且跨项目的解决方式呢?帮助广大技术朋友给业务瘦身,提高开发效率。本文将基于Java8的Lambda 表达式和Stream等知识,使用TreeUtils工具类实现一行代码完成列表转

c#入参使用引用类型为啥要加ref?

那什么是值,什么是引用?大体可以理解为堆栈的区别,在.net中大多数实例存在于托管堆栈中。struct,int32,int64,double,enum等数据类型声明的实例存在栈中,而string,class,delegate等存在于堆中。前者一般称为值类型,后者则叫做引用类型,那么引用类型和值类型在内存中 ref修饰入参的常用场景当我

JavaScript: The Beginning(初学者视角)

作为初学者,重要的是要从根源开始建立我们的知识,以便有一个坚实的基础。我决定在这个领域记录我的JavaScript之旅,以与其他新手拉近距离,并听取来自更有经验的开发人员的意见。在这篇介绍性文章中,我们将讨论 JavaScript 的创建、多年来的开发过程以及它今天所处的位置。开端JavaScript

还不懂Java线程池实现原理

线程池无论是工作还是面试都是必备的技能,但是很多人对于线程池的实现原理却一知半解,并不了解线程池内部的工作原理,今天一灯就带大家一块剖析线程池底层实现原理。1. 为什么要使用线程池使用线程池通常由以下两个原因: 频繁创建销毁线程需要消耗系统资源,使用线程池可以复用线程。

Java项目有可能做到所有的代码逻辑均可热部署吗?

前言首先我们明确下什么叫做热部署,热部署是在不重启java虚拟机的前提下,自动更新class的行为,从而更新整个运行时的逻辑。在java开发领域,热部署一直是一个难以解决的问题,java虚拟机理论上只能实现方法体的修改热部署,对于整个类结构的更改,仍然需要重启虚拟机,对类重新加载才能完成更新

JAVA系列之类加载机制详解

一、类加载 icode9 过程程序员编写的Java源程序(.java文件)在经过编译器编译之后被转换成字节代码(.class 文件),类加载器将.class文件中的二进制数据读入到内存中,将其放在方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类加载的最终产品是位于堆区中

如何把Java代码玩出花?JVM Sandbox入门教程与原理浅谈

在日常业务代码开发中,我们经常接触到AOP,比如熟知的Spring AOP。我们用它来做业务切面,比如登录校验,日志记录,性能监控,全局过滤器等。但Spring AOP有一个局限性,并不是所有的类都托管在 Spring 容器中,例如很多中间件代码、三方包代码,Java原生代码,都不能被Spring AOP代理到。如此一来,一

Java 同步锁ReentrantLock与抽象同步队列AQS

AbstractQueuedSynchronizer 抽象同步队列,它是个模板类提供了许多以锁相关的操作,常说的AQS指的就是它。AQS继承了AbstractOwnableSynchronizer类,AOS用于保存线程对象,保存什么线程对象呢?保存锁被独占的线程对象。抽象同步队列AQS除了实现序列化标记接口,并没有实现任何的同步接口,该类

Java的新威胁模型

在过去十年的云迁移中,针对 Java 应用程序的威胁模型以及我们需要保护它们的方式已经发生了变化。OpenJDK已经在这一领域做出了一个积极的变化,弃用了旧的SecurityManager,这是一个保护过去AOL CD和纸质地图时代的遗物。安全性的下一个积极变化是加强软件组件的供应链,了解正在运行的和