java技术圈 为您找到相关结果 130

Java8新特性之日期处理 - WayfreemBlog

Java8新特性之日期处理Wayfreem24114发布于2018-01-21   简介 伴随 lambda表达式、streams 以及一系列小优化,Java 8 推出了全新的日期时间API。 Java处理日期、日历和时间的不足之处:将 java.util.Date 设定为可变类型,以及 SimpleDateFormat 的非线程安全使其应用非常受限。然后就在 java8 上面增加新的特性。 全新API的众多好处之一就是,明确了日期时间概念,例如:瞬时(instant)、 长短(duration)、日期、时间、时区和周期。 同时继承了Joda 库按人类语言和计算机各自解析的时间处理方式。不同于老版本,新API基于ISO标准日历系统,java.time包下的所有类都是不可变类型而且线程安全。 ...阅读全文

博文 2023-05-22 08:15:29 SegmentFault 思否

Log4j2中的同步日志与异步日志 - Ye_yang

1.背景 Log4j 2中记录日志的方式有同步日志和异步日志两种方式,其中异步日志又可分为使用AsyncAppender和使用AsyncLogger两种方式。 2.Log4j2中的同步日志 所谓同步日志,即当输出日志时,必须等待日志输出语句执行完毕后,才能执行后面的业务逻辑语句。 下面通过一个例子来了解Log4j2中的同步日志,并借此来探究整个日志输出过程。 log4j2.xml配置如下: ...阅读全文

博文 2023-09-13 16:05:00 博客园

Spring WebFlux-入门

webflux是什么 webflux是spring推出的响应式web框架,它的对标产品为spring-mvc, 与传统的spring-mvc相比较,webflux是完全非阻塞式的。spring官网上的这张图向我们展示了两者之间的主要差别: 编程模式:命令式编程(mvc:imperative) VS 声明式编程(webflux:declarative) 在mvc中,我们在方法为单位,组织我们的每一条命令,虚拟机按照我们的编排,顺序地执行这些命令,程序执行 流程易于理解,编程和debug较为简单 在webflux中,我们以操作符(operator)串起来的流来定义我们想让程序如何执行,但这只是一个声明,就好 像我们写的是一个菜谱,没有原材料来的话,它就是一个静态的菜谱,在webflux中,这个材...阅读全文

博文 2023-05-11 10:06:41 掘金

RocksDB原理及应用

RocksDB概述LSM 类存储引擎、数据库之一。所谓LSM,一般的名字叫 Log Structured-Merge Tree(日志结构合并树),来源于分布式数据库领域,也是BigTable 的论文中所使用的文件组织方式。它的特点在于写入的时候是append only的形式,就像名字所显示的那样,跟日志一样只在文件后面追加。LSM 树结构的问题: 写入速度快,读取速度慢,写放大和读放大都较高。Rocksdb本身支持单个kv的读写和批量kv值的读写。由于LSM的出身,它专注于利用LSM树的特性,适应有序、层次化的磁盘读写。在LSM树之上构建了Rocksdb,而在RocksDB之上同样有一些更面向应用层的数据库,包括分布式数据库、查询引擎、大数据存储引擎、图数据库如Janusgraph等。1. ...阅读全文

博文 2023-05-11 08:47:30 知乎

设计模式--谈谈Reactive Programming 响应式编程_enjoy编程的博客

1. Reactive Programming 响应式编程 1.1. 什么是什么是响应式编程 维基百科的解释如下: In computing, reactive programming is an asynchronous programming paradigm concerned with data streams and the propagation of change. This means that it becomes possible to express static (e.g. arrays) or dynamic (e.g. event emitters) data streams with ease via the employed programming langu...阅读全文

博文 2023-05-11 10:10:22 CSDN博客

深入学习小程序框架底层原理,培养双线程思维(2023版,15章)

![1.png](http://static.itsharecircle.com/231218/2289eb20f589afd8f12b3d6989607720.png) 小程序上线以来,一直被称为便携版的 APP,关于两者之间的区别,无外乎是小程序相对轻便、开发成本低、开发周期短、收效快。 小程序并非凭空冒出来的一个概念,当微信中的 WebView 逐渐成为移动 Web 的一个重要入口时,微信就有相关的 JS API 了。 微信小程序是双线程架构,分为逻辑层和渲染层,在进行文件解析的时候不会发生阻塞。 逻辑层: (1)解析js,负责逻辑处理、事件逻辑、动态数据的处理 (2)小程序的所有代码逻辑都包含在同一个逻辑线程(逻辑层是单线程),小程序只有一个APP实例,但是有多个page,小程序编译...阅读全文

博文 2023-12-18 16:12:25 feilipu2023nui

一种动态实现核隔离的方法

本文分享自天翼云开发者社区《一种动态实现核隔离的方法》,作者:y****n一、技术背景相关概念:核隔离:指定的cpu核心只参与最低限度的OS内核计算; DPDK(Date planedevelopment kit):是一个用来进行包数据处理加速的软件库。Cpu亲和性:进程要在某个给定的CPU上尽量长时间地运行而不被迁移到其他处理器的倾向性。背景:网元节点上,对cpu消耗比较多的进程可以分为几个类别:1、系统运行相关进程(通过systemd启动和管理的进程以及内核线程)2、网元相关进程(比如dpos、gobgpd进程)。然而在现网中发现,由于系统运行相关进程与网元相关进程在同内核下运行时,会概率性的抢占pmd线程的cpu,从而导致dpdk丢包,影响网元性能。一般使用的隔离系统进程方法如修改gr...阅读全文

博文 2023-10-30 16:14:37 Tianyiyun

初识 NIO, 你了解io 和nio吗? 了解直接缓冲区和非直接缓冲区的区别吗?_兮家小二的博客

一、nio 是什么? 1、Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始) 2、Java NIO提供了与标准IO不同的IO工作方式。 3、nio 主要面向于网络编程 二、nio 和 io 的区别? 1、IO基于字节流和字符流进行操作的 2、NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。 3、NIO引入了选择器的概念,选择器用于监听多个通道的事件(比如:连接打开,数据到达)。因此,单个的线程可以监听多个数据通道。 io 流实现过程 数据传递是单向的,写数据只管把数据往文件丢,读也是同理 并且 io 基本都是非直接缓冲区传递(速度慢) nio 实现过程 先...阅读全文

博文 2023-09-13 16:43:52 CSDN博客

[完结13章]一课掌握Java并发编程精髓

![1.png](http://static.itsharecircle.com/231222/68e5919d4e1d238e765721ce81d62439.png) Java并发编程从入门到进阶 多场景实战,众所周知,并发编程是优秀工程师的标准之一,但知识庞杂,复杂性高,常常让人望而却步。但如果没有掌握背后的核心原理,你开发的代码可能会成为难以调试和优化的头疼问题。在此,我将通过上百个案例场景驱动教学+动画直观演示,帮助大家深入、直观地理解并发编程核心概念和底层原理。助力大家在实际工作和面试中都能尽早脱颖而出。 首先,我们先来了解关于并发的基本概念。 并发情况主要会引出三个基本概念,分别是原子性、可见性、有序性三个基本概念 Java中线程的状态分为6种: 1. 初始(NEW):新创建了...阅读全文

博文 2023-12-22 10:15:14 udbmaidns

ThreadLocal为什么要用WeakReference

先上一张图看一下ThreadLocal的内部结构,每个Thread对象内部都维护了一个ThreadLocal.ThreadLocalMap 我们在上图看到的就是三个Thread对象内部格子的ThreadLocalMap 这里要说的不是ThreadLocal,是ThreadLocal为什么要用WeakReference static class ThreadLocalMap { static class Entry extends WeakReference> { Entry(ThreadLocal k, Object v) { super(k); value = v; } 复制代码 弱引用WeakReference 弱引用只要发生了gc就会被回收,但前提是...阅读全文

博文 2023-05-23 03:39:09 掘金

Java并发编程指南15:Fork/join并发框架与工作窃取算法剖析

创文章,转载请注明: 转载自并发编程网 – ifeve.com 1. 什么是Fork/Join框架 Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。 我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结果。比如计算1+2+。。+10000,可以分割成10个子任务,每个子任务分别对1000个数进行求和,最终汇总这10个子任务的结果。Fork/Join的运行流程图如下: 2. 工作窃取算法 工作窃取(work-stealing)算法是指某个线程从其他队列里窃取任务来...阅读全文

博文 2023-12-01 10:42:03 阿里云开发者社区

一课掌握Java并发编程精髓(完结13章)下载

![1.png](http://static.itsharecircle.com/231222/730ce9074f6a7e461ed66975ca91b9f2.png) 一课掌握Java并发编程精髓,分13章讲解,又名:Java并发编程从入门到进阶 多场景实战。 并发编程是优秀工程师的标准之一,但知识庞杂,复杂性高,常常让人望而却步。如果没有掌握背后的核心原理,你开发的代码可能会成为难以调试和优化的头疼问题。因此本文将通过上百个案例场景驱动教学+动画直观演示,帮助入门级程序员深入、直观地理解并发编程核心概念和底层原理,构建一个扎实的知识框架;同时也帮助有一定工作经验的程序员提升并发技术实战能力,强化复杂并发问题解决能力,攻克绝大多数面试疑难问题,助力大家在实际工作和面试中都能尽早脱颖而出。...阅读全文

博文 2023-12-22 17:08:46 giadnbhaytgw

HBase - 生产环境上线前真的优化过吗?

笔者今天给大家讲一下 HBase 生产环境中的实践,包括资源隔离、参数配置、性能优化等方面,部分内容参考《HBase原理与实践》(非常建议大家好好读一读,一定会大有收获),以及笔者的实战经验。HBase 业务资源隔离1. 读写分离场景RegionServer 默认情况下只提供一个请求队列给所有业务使用,导致部分延迟较高的请求影响其他对延迟敏感的业务。针对这种情况,HBase 提供了读写队列隔离方案。我们知道,HBase 有三种典型的API操作类型,分别为 get、scan 和write,其中 get 和 scan 属于 read 类型。默认场景下,HBase 只提供一个队列,所有请求都会进入该队列进行优先级排序。在一些场景下,我们要求这三种类型的访问尽可能的互相不影响,那么就需要在线上配置读...阅读全文

博文 2024-01-09 16:32:52 墨天轮

【小家java】Java线程池之---ForkJoinPool线程池的使用以及原理_forkjoinpool自定义线程池

相关阅读 【小家java】java5新特性(简述十大新特性) 重要一跃 【小家java】java6新特性(简述十大新特性) 鸡肋升级 【小家java】java7新特性(简述八大新特性) 不温不火 【小家java】java8新特性(简述十大新特性) 饱受赞誉 【小家java】java9新特性(简述十大新特性) 褒贬不一 【小家java】java10新特性(简述十大新特性) 小步迭代 【小家java】java11新特性(简述八大新特性) 首个重磅LTS版本 【小家java】Java中的线程池,你真的用对了吗?(教你用正确的姿势使用线程池) 小家Java】一次Java线程池误用(newFixedThreadPool)引发的线上血案和总结 【小家java】BlockingQueue阻塞队列详解以及5...阅读全文

博文 2023-12-01 10:52:18 CSDN博客

Rocksdb原理简介

本文分享自天翼云开发者社区《Rocksdb原理简介》,作者:l****nRocksdb作为当下nosql中性能的代表被各个存储组件(mysql、tikv、pmdk、bluestore)作为存储引擎底座,其基于LSM tree的核心存储结构(将随机写通过数据结构转化为顺序写)来提供高性能的写吞吐时保证了读性能。同时大量的并发性配置来降低compaction的影响。​涉及到的几个核心文件:WALWriteAheadLog,rocksdb的日志,保存memtable中的信息。当memtable转化为immutable memtable并且Flush到L0层之后,之前WAL的会被清理,即于删除DB目录下的log文件。在RocksDB中每一次数据的更新都会涉及到两个结构,一个是内存中的memtable...阅读全文

博文 2023-05-25 09:13:56 Tianyiyun

[完结13章]C++从0实现百万并发Reactor服务器

![1.png](http://static.itsharecircle.com/240129/24ad943a50d0fe5c4b07c9abebc3c578.png) 是否具备高并发、高性能、分布式、事件驱动框架设计能力,是优秀C++中高级工程师的分水岭,我将通过本文带领大家纯手写一个Reactor服务器,让大家可以高效掌握三高框架设计思维,同时让你对C++网络编程、线程、智能指针、C++11标准高阶技术等运用自如。 Reactor是一种事件驱动机制,和普通函数调用的不同之处在于:应用程序不是主动的调用某个API完成处理,而是恰恰相反,Reactor逆置了事件处理流程,应用程序需要提供相应的接口并注册到Reactor上,如果相应的事件发生,Reactor将主动调用应用程序注册的接口,这些...阅读全文

博文 2024-01-29 11:03:14 udbmaidns

一课掌握Java并发编程精髓(完结13章)

一课掌握Java并发编程精髓(完结13章) 分享一套Java课程——一课掌握Java并发编程精髓(完结13章),附源码+PDF课件下载。 并发编程 1.多线程 Java 是最先支持多线程的开发的语言之一,Java 从一开始就支持了多线程能力。由于现在的 CPU 已经多是多核处理器了,是可以同时执行多个线程的。 多线程优点 多线程技术使程序的响应速度更快 ,可以在进行其它工作的同时一直处于活动状态,程序性能得到提升。 性能提升的本质 就是榨取硬件的剩余价值(硬件利用率)。 并行与并发 单核 cpu 下,线程实际是串行执行的。操作系统中有一个组件叫做任务调度器,将 cpu 的时间片,分给不同的线程使用,只是由于 cpu 在线程间(时间片很短)的切换非常快,人类感觉是同时运行的。 总结为一句话就是...阅读全文

博文 2023-12-20 16:06:06 woaiwodejia333

线程池之ThreadPool与ForkJoinPool_threadpoolexecutor fork/join

网上对Java线程池都有很多非常具体的解析,我概念性进行总结下,如有错误,可与我联系修改。 一、 ThreadPool Executor 一个线程池包括以下四个基本组成部分: 1、线程池管理器(ThreadPool):用于创建并管理线程池,包括 创建线程池,销毁线程池,添加新任务; 2、工作线程(PoolWorker):线程池中线程,在没有任务时处于等待状态,可以循环的执行任务; 3、任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行,它主要规定了任务的入口,任务执行完后的收尾工作,任务的执行状态等; 4、任务队列(taskQueue):用于存放没有处理的任务。提供一种缓冲机制。 工作方式: 线程池有一个工作队列,队列中包含了要分配给各线程的工作。当线程空闲时,就会从队...阅读全文

博文 2023-12-01 10:40:55 CSDN博客

[24章]Qt 全流程实战企业级项目 - 云对象存储浏览器

下载地址1:https://pan.baidu.com/s/180fnOsA0EwGXcLb3i_cy-w 提取码:laa9 下载地址2:https://pan.baidu.com/s/1a_dwzeyb1CKJrGiu2zpolQ 提取码:a5p2 Qt开发浏览器全流程实战讲解。 体设计如下: 模块功能: 提供用户界面,显示网页的内容。 允许用户在界面中浏览网页,包括滚动和缩放功能。 支持网页导航,包括前进和后退功能。 设计说明: 浏览网页模块可以使用一个 WebView 控件实现,用于显示网页内容。 用户可以使用滚动条进行页面的上下滚动,以查看完整的页面内容。 提供缩放功能,允许用户调整页面的大小比例。 通过前进和后退按钮,用户可以导航到浏览历史记录中的前一个或后一个页面。 步骤1: 创...阅读全文

博文 2023-12-12 17:08:40 giadnbhaytgw

操作系统入门与实践-参透技术本质[完结9章]

![1.png](http://static.itsharecircle.com/240109/539f36d2bc2c908d947345fd1a215abd.png) 众所周知,操作系统是计算机的基石,理解操作系统有助于写出正确的、性能更好、稳定性更高的程序,是技术各路大厂面试官重点考察的能力之一,成为越来越多程序员的必修课,因此,我在本文中将带领大家从0到1参透技术本质,快速补齐操作系统短板,来一次质的提升。 我将从以下三方面深度剖析操作系统入门理论与实战要点: 1、深刻理解计算机—掌握优秀编码能力 理解操作系统可以深刻理解自己所写的程序会对计算机系统产生的影响,有助于编写出正确的、质量更高的程序,同时可以充分利用系统资源来优化程序运行效率,编写出性能更高的程序,突破系统性能瓶颈。 2...阅读全文

博文 2024-01-09 09:43:50 udbmaidns

HBase高可用原理与实践-社区博客

前言 前段时间有套线上HBase出了点小问题,导致该套HBase集群服务停止了2个小时,从而造成使用该套HBase作为数据存储的应用也出现了服务异常。在排查问题之余,我们不禁也在思考,以后再出现类似的问题怎么办?这种问题该如何避免?用惯了MySQL,于是乎想到了HBase是否跟MySQL一样,也有其高可用方案? 答案当然是肯定的,几乎所有的数据库(无论是关系型还是分布式的),都采用WAL的方式来保障服务异常时候的数据恢复,HBase同样也是通过WAL来保障数据不丢失。HBase在写数据前会先写HLog,HLog中记录的是所有数据的变动, HBase的高可用也正是通过HLog来实现的。 进阶 HBase是一个没有单点故障的分布式系统,上层(HBase层)和底层(HDFS层)都通过一定的技术手段...阅读全文

博文 2024-01-09 17:06:39 网易数帆

InitiatingHeapOccupancyPercent介绍--转载

参数简介InitiatingHeapOccupancyPercent,简称IHOP。我们都知道在G1中,主要的收集方式是Minor GC(回收整个年轻代Young Region)和Mixed GC(回收整个年轻代Young Region & 部分老年代Old Region)。什么?你跟我说还有Full GC。其实在G1设计之初,Oracle认为G1依托Minor GC和Mixed GC就够了,如果你出现了Full GC那说明你的参数设置的不正确。所以在早期版本(JDK10之前)的G1实现中,Oracle只设计了串行的Full GC来擦**(单线程的Mark-Compact)。但是程序总是复杂的,尽管我们极力避免,在一些特殊的情况下如并发回收的速度跟不上分配的速度等,我们依然会面临Full G...阅读全文

博文 2024-01-20 19:03:47 知乎

C++从0实现百万并发Reactor服务器[完结13章]

![1.png](http://static.itsharecircle.com/240130/b0c07642d8e8837d138ca05fd631160f.png) 一、reactor是什么?怎么理解? reactor是一种设计模式, 是服务器的重要模型, 是一种事件驱动的反应堆模式, 高效的事件处理模型。 reactor 反应堆: 事件来了才执行,事件类型可能不尽相同,所以我们需要提前注册好不同的事件处理函数。事件到来就由 epoll_wait 获取同时到来的多个事件,并且根据数据的不同类型将事件分发给事件处理机制 (事件处理器), 也就是提前注册的哪些接口函数。 reactor模型的设计思想和思维方式:它需要的是事件驱动,相应的事件发生,根据事件自动的调用相应的函数,所以需要提前注...阅读全文

博文 2024-01-30 10:06:55 feilipu2023nui

认识Redis:不只是缓存,还有这些厉害的功能!

在当今数据驱动的世界中,快速存取信息成为了技术发展的关键。而在众多存储解决方案中,Redis以其独特的魅力和强大的功能,成为了开发者们的宠儿。今天,就让我们一起来认识一下Redis。 ### 一、Redis是什么,可以用来干什么? Redis,英文全称是Remote Dictionary Server(远程字典服务),是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 ![image.png](http://static.itsharecircle.com/240220/c4b8adfc73b7950a6784418485d666f8.png) 与MySQL数据库不同的是,Redis的数据是存在内存中的。它的读写速...阅读全文

博文 2024-02-20 16:18:32 YDYXCODE

利用 Arthas 精准定位 Java 应用 CPU 负载过高问题_arthas cpuusage

Arthas 官方社区正在举行征文活动,参加即有奖品拿哦~点击投稿 作者 | 张云翔 最近我们线上有个应用服务器有点上头,CPU总能跑到99%,我寻思着它流量也不大啊,为啥能把自己整这么累?于是我登上这台服务器,看看它到底在干啥! 以前碰到类似问题,可能会考虑使用 top -Hp 加 jstack 命令去排查,虽然能大致定位到问题范围,但有效信息还是太少了,多数时候还是要靠猜。今天向大家推荐一款更高效更精准的工具:Arthas!Arthas 是 Alibaba 开源的 Java 诊断工具,能够帮助我们快速定位线上问题。基本的安装使用可以参考官方文档:https://alibaba.github.io/arthas 这次我们利用它来排查 CPU 负载高的问题。CPU 负载过高一般是某个或某几个...阅读全文

博文 2024-03-13 11:20:01 CSDN博客

C++大厂面试真题宝典 精选100道[完结7章]

![1.png](http://static.itsharecircle.com/240308/91c6f3716ef318b1a64e83e909db68a1.png) 给大家整理了一些关于C++大厂面试2024最新真题,希望能够帮助到大家的面试: 1、synchronized 关键字和 volatile 关键字的区别 synchronized 关键字和 volatile 关键字是两个互补的存在,而不是对立的存在! volatile 关键字是线程同步的轻量级实现,所以volatile 性能肯定比synchronized关键字要好。但是volatile 关键字只能用于变量而 synchronized 关键字可以修饰方法以及代码块 volatile 关键字能保证数据的可见性,但不能保证数据的原...阅读全文

博文 2024-03-08 14:46:40 feilipu2023nui

Spring Cloud Alibaba: 实现服务的无损下线功能

Spring Cloud Alibaba: 实现服务的无损下线功能作者:谁偷走了我的奶酪2024.01.18 02:49浏览量:2简介:在微服务架构中,服务的上线和下线是一个常见的操作。然而,直接关闭服务可能会导致数据丢失或服务中断。本文将介绍如何使用Spring Cloud Alibaba实现服务的无损下线功能。在微服务架构中,服务的上线和下线是一个常见的操作。但是,直接关闭服务可能会导致数据丢失或服务中断,这被称为“有损下线”。为了解决这个问题,我们可以使用Spring Cloud Alibaba提供的解决方案来实现服务的无损下线。无损下线的原理是在服务关闭之前,将所有待处理的任务或者请求全部处理完成,保证服务的正常运行,然后再安全地关闭服务。这样就可以避免数据丢失和服务中断的问题。要实...阅读全文

博文 2024-03-28 11:23:54 百度开发者中心

使用CompletableFuture优化你的代码执行效率 - 冬至饮雪

这篇文章详细讲解java8中CompletableFuture的特性,方法以及实例. 在java8以前,我们使用java的多线程编程,一般是通过Runnable中的run方法来完成,这种方式,有个很明显的缺点,就是,没有返回值,这时候,大家可能会去尝试使用Callable中的call方法,然后用Future返回结果,如下: public static void main(String[] args) throws Exception { ExecutorService executor = Executors.newSingleThreadExecutor(); Future stringFuture = executor.submit(new Callable阅读全文

博文 2024-04-12 15:39:19 博客园

点击关注“有赞coder”获取更多技术干货哦~作者:张云翔团队:安全技术最近我们线上有个应用服务器有点上头,CPU总能跑到99%,我寻思着它流量也不大啊,为啥能把自己整这么累?于是我登上这台服务器,看看它到底在干啥!以前碰到类似问题,可能会考虑使用top -Hp 加 jstack命令去排查,虽然能大致定位到问题范围,但有效信息还是太少了,多数时候还是要靠猜。今天向大家推荐一款更高效更精准的工具:Arthas!Arthas 是Alibaba开源的Java诊断工具,能够帮助我们快速定位线上问题。基本的安装使用可以参考官方文档:https://alibaba.github.io/arthas 这次我们利用它来排查CPU负载高的问题。CPU负载过高一般是某个或某几个线程有问题,所以我们尝试使用第一个...阅读全文

博文 2024-03-13 11:14:54 mp.weixin.qq.com