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

在Java中谈尾递归--尾递归和垃圾回收的比较 - 赛艇队长

我不是故意在JAVA中谈尾递归的,因为在JAVA中谈尾递归真的是要绕好几个弯,只是我确实只有JAVA学得比较好,虽然确实C是在学校学过还考了90+,真学得没自学的JAVA好 不过也是因为要绕几个弯,所以才会有有意思的东西可写,另外还有我发现把尾递归如果跟JAVA中的GC比对一下,也颇有一些妙处(发现还没有人特地比较过) (不过后来边写边整理思路,写出来又是另一个样子了) 转载请注明:博客园-阁刚广志,地址:http://www.cnblogs.com/bellkosmos/p/5280619.html 一、首先我们讲讲递归 递归的本质是,某个方法中调用了自身。本质还是调用一个方法,只是这个方法正好是自身而已 递归因为是在自身中调用自身,所以会带来以下三个显著特点: 调用的是同一个方法 因为1...阅读全文

博文 2022-07-27 06:09:23 博客园

正则表达式(括号)、[中括号]、{大括号}的区别小结_Kou_Hi的博客

正则表达式的() [] {}有不同的意思。 () 是为了提取匹配的字符串。表达式中有几个()就有几个相应的匹配字符串。 (\s*)表示连续空格的字符串。 []是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[\s*]表示空格或者*号。 {}一般用来表示匹配的长度,比如 \s{3} 表示匹配三个空格,\s{1,3}表示匹配一到三个空格。 (0-9) 匹配 '0-9′ 本身。 [0-9]* 匹配数字(注意后面有 *,可以为空)[0-9]+ 匹配数字(注意后面有 +,不可以为空){1-9} 写法错误。 [0-9]{0,9} 表示长度为 0 到 9 的数字字符串。 ——————————————————————————————————————————————...阅读全文

博文 2022-07-21 03:54:14 CSDN博客_正则括号

Java —— 运行时栈帧结构_凶残的程序员的博客

代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。 概述 栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构。它是虚拟机运行时数据区中的虚拟机栈的栈元素。 栈帧存储了方法的局部变量表、操作数栈、动态连接和方法返回地址等信息。 每一个方法从调用开始至执行完成的过程,都对应着一个栈帧在虚拟机里面从入栈到出栈的过程。 在编译程序代码的时候,栈帧中需要多大的局部变量表,多深的操作数栈都已经完全确定了。 因此一个栈帧需要分配多少内存,不会受到程序运行期变量数据的影响,而仅仅取决于具体的虚拟机实现。 在活动线程中,只有位于栈顶的栈帧才是有效的,称为当前栈帧,与这个栈帧相关联的方法称为当前方法。 局部变量表 我们在Java内存区域中在虚拟...阅读全文

博文 2022-03-23 12:54:48 CSDN博客_java 栈帧

【原创】JVM系列03 | Java栈—方法是如何调用的? - 云+社区

本文是何适 JVM 修仙系列第 3 篇,文末有本系列文章汇总。上一篇介绍 Java 虚拟机结构时讲到 Java 栈同 Java 方法的调用密切相关,那么这篇就来探究下 Java 栈到底和方法的调用有什么关系。Java 栈分如下几部分介绍:栈帧局部变量表操作数栈帧数据1. 栈帧 线程被创建的时候 Java 栈被创建,Java 栈中保存着栈帧。线程中方法被调用时,对应着一个栈帧被压入 Java 栈;方法返回时,对应的栈帧从 Java 栈中弹出;方法中抛出异常时,对应的栈帧也会将栈帧弹出。举例说明:方法 1 中调用方法 2,方法 2 中调用方法 3,方法 3 中调用方法 4,当执行到方法 4 时,栈内存结构如下图:举例模拟栈溢出:因为每次方法调用都会生成一个栈帧,当函数调用数量很大,生成的栈帧内存...阅读全文

博文 2022-03-23 12:54:54 腾讯云

CEP引擎Esper在入侵检测系统中的实践

目录 1、名词2、CEP引擎离线引擎实时引擎Esper:Fink CEP:Siddhi:3、逻辑架构图4、数据流图5、关于Storm中的数据分组6、实时Sigma引擎7、Esper规则模板8、Case Study9、结尾 1、名词 CEP(Complex Event Processing):复杂事件处理、复合事件处理 EPL(Event Processing Language):SQL-LIKE的事件处理语言,用于描述CEP任务 2、CEP引擎 离线引擎 待补充。 实时引擎 Esper: 优点:更新活跃,轻量级嵌入式引擎,规则验证方便,本地导入包后,即可运行。官方提供的文档和case study很全面,支持标准SQL语法,唯一编译型CEP引擎,吞吐量很大单机600W/S。 缺点:分布式需要自...阅读全文

博文 2022-12-22 01:38:33 Wayne's Blog

深入理解Akka actor模型

Carl Hewitt 在1973年对Actor模型进行了如下定义:"Actor模型是一个把'Actor'作为并发计算的通用原语". Actor是异步驱动,可以并行和分布式部署及运行的最小颗粒。也就是说,它可以被分配,分布,调度到不同的CPU,不同的节点,乃至不同的时间片上运行,而不影响最终的结果。因此Actor在空间(分布式)和时间(异步驱动)上解耦的。而Akka是Lightbend(前身是Typesafe)公司在JVM上的Actor模型的实现。我们在了解actor模型之前,首先来了解actor模型主要是为了解决什么样的问题。Why modern systems need a new programming model在akka系统的官网上主要介绍了现代并发编程模型所遇到的问题,里面主要提...阅读全文

博文 2023-01-30 02:39:50 知乎

高性能队列——Disruptor

背景Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后,获得了业界关注。2011年,企业应用软件专家Martin Fowler专门撰写长文介绍。同年它还获得了Oracle官方的Duke大奖。目前,包括Apache Storm、Camel、Log4j 2在内的很多知名项目都应用了Disruptor以获取高性能。在美团技术团队它也有不少应用,有的项目架构借鉴了它的设计机制。本文从实战角度剖析了Disruptor的实现原理。需要特别指出的是,这里所说的队列是系统内部的内存队列,而不是Kafka这样的分布式队列...阅读全文

博文 2023-03-03 02:58:41 美团技术团队

logback 配置详解(一)logger与root概念及区别 - liftsail

目录 1、根节点包含的属性 2、根节点的子节点 2.1、设置上下文名称: 2.2、设置loger、root 正文 回到顶部 1、根节点包含的属性 scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 例如: 阅读全文

博文 2023-09-14 10:27:48 博客园

PlantUML 快速入门(一) UML 类图_fundroid的博客

大家平日在写技术文档时,往往都有画 UML 图的需要,很多人使用 PrecessOn 或者 darw.io 等来绘制 UML ,勉强可用但是不够专业。这里为大家推荐一个专门画UML的工具: PlantUML 1. PlantUML PlantUML 诞生于 2009 年,知道的人多但是使用的人少。因为它使用特殊的 DSL 进行画图,相较与其他工具,PlantUML 的图不是“画”出来的而是“写”出来的。 虽然有一定学习成本,但是却可以画出更专业的UML图,而且文本格式也便于保存。本文总结 PlantUML 的基本用法,帮助大家快速入门。 安装环境 PlantUML 是一个 java 程序,所以有 JDK 就能跑。可以从官网直接下载 jar 文件执行,当然它也提供了 IDEA 和 VSCode...阅读全文

博文 2023-05-05 08:23:42 CSDN博客

HBase 写吞吐场景资源消耗量化分析及优化-腾讯云开发者社区

一、概述HBase 是一个基于 Google BigTable 论文设计的高可靠性、高性能、可伸缩的分布式存储系统。 网上关于 HBase 的文章很多,官方文档介绍的也比较详细,本篇文章不介绍 HBase 基本的细节。本文从 HBase 写链路开始分析,然后针对少量随机读和海量随机写入场景入手,全方面量化分析各种资源的开销, 从而做到以下两点:在给定业务量级的情况下,预先评估好集群的合理规模在 HBase 的众多参数中,选择合理的配置组合二、HBase 写链路简要分析HBase 的写入链路基于 LSM(Log-Structured Merge-Tree), 基本思想是把用户的随机写入转化为两部分写入:Memstore 内存中的 Map, 保存随机的随机写入,待 memstore 达到一定量的...阅读全文

博文 2023-09-18 11:12:26 腾讯云

Netty+Nacos+Disruptor自研企业级API网关

## download:[Netty+Nacos+Disruptor自研企业级API网关](https://www.51xuebc.com/thread-566-1-1.html) 数据类型、变量和常量的使用 在计算机编程中,数据类型、变量和常量是非常重要的概念。它们可以帮助程序员更好地理解和处理数据,从而实现更加复杂的功能。本文将详细介绍这些概念及其使用。 数据类型 数据类型是指计算机中可用的不同种类的数据。在编程语言中,通常有多种基本数据类型,如整数、浮点数、布尔值、字符等。每种数据类型都有其自己的特定格式和范围。 例如,在Python编程语言中,有以下常见的数据类型: 整数(int):表示整数,如1、2、3等。 浮点数(float):表示小数,如1.5、3.14等。 布尔值(bool)...阅读全文

博文 2023-05-31 12:27:59 zxit666

技术大牛成长课,从0到1带你手写一个数据库系统-完结11章

参考地址1:https://pan.baidu.com/s/1N-x48vz9Z0peZdjOU5Gh-g 提取码: nxts 参考地址2:https://share.weiyun.com/Tp6ewDIJ 密码:6crcwd 关于数据库系统的开发一直以来都是一个难点,它的流程复杂,涉及到的技术点众多,特别在部署这块尤为重要,今天就带着大家手把手去实现这样一个数据库系统项目。 我将从理论结合实际场景综合性落地,让大家轻松吃透核心技术底层原理。 首先是应用场景这块:复用到日常开发场景中,如何运用高级数据结构、算法和设计模式,如何正确面对高并发进行编程,如何进行数据库的优化,如何理解数据库的执行计划分析慢SQL的原因等; 其次是原理剖析: 深度剖析数据库系统原理,将数据库几十年发展精髓拆解并呈现...阅读全文

博文 2023-11-29 17:32:10 feilipu2023nui

Prometheus range query中的step参数

详细解释Prometheus range query中的step参数的作用。 Prometheus有两种query:instant query、range query。本文要讲的就是range query中的step参数。 range query是非常常见的一种query,看看它有哪些参数: query=: PromQL表达式。 start=: 时间范围的开始。 end=: 时间范围的结束。 step=: 查询解析度(query resolution)。 timeout=: 执行超时。这个参数是可选的。 在Promet...阅读全文

博文 2023-09-13 15:57:31 颇忒脱的技术博客

可以使用 Instant 代替 Date , LocalDateTime 代替 Calendar,DateTimeFormatter 代替 SimpleDateFormat - 周文豪

DateFormat 类是一个非线程安全的类。javadocs 文档里面提到:"Date formats是不能同步的。 我们建议为每个线程创建独立的日期格式。 如果多个线程同时访问一个日期格式,这需要在外部加上同步代码块。" 如何并发使用DateFormat类? 1. 同步 最简单的方法就是在做日期转换之前,为DateFormat对象加锁。这种方法使得一次只能让一个线程访问DateFormat对象,而其他线程只能等待。 public class DateUtil { private static final String MESSAGE_FORMAT = "MM-dd HH:mm:ss.ms"; private static final SimpleDateFormat format=new...阅读全文

博文 2023-05-22 08:13:46 博客园

[16章]慕课甄选-2024年Flutter零基础极速入门到进阶实战

![1.png](http://static.itsharecircle.com/240118/0c9fb1b0ac5cc04bf37865ad3a8aa31d.png) Flutter是Google开源的构建用户界面(UI)工具包,帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、Web、桌面和嵌入式平台。 Flutter 开源、免费,拥有宽松的开源协议,适合商业项目。 我将在本文中结合了最新版的Flutter、Dart、主流插件技术进行企业级项目开发,并融入了大量Flutter版本更新问题的解决方案,以及与H5混合开发和通信、多屏适配等高频技能,我会根据我在一线开发几年工作中积累的大量开发、避坑等经验传授给大家,让各位小伙伴在实际开发中能更好的运用Flutter技术。 首先我们先...阅读全文

博文 2024-01-18 11:52:14 udbmaidns

7-文件IO

1. 阻塞 IO通常来说,从普通文件读数据,无论你是采用 fscanf,fgets 也好,read 也好,一定会在有限的时间内返回。但是如果你从设备,比如终端(标准输入设备)读数据,只要没有遇到换行符(’\n’),read 一定会“堵”在那而不返回。还有比如从网络读数据,如果网络一直没有数据到来,read 函数也会一直堵在那而不返回。read 的这种行为,称之为 block,一旦发生 block,本进程将会被操作系统投入睡眠,直到等待的事件发生了(比如有数据到来),进程才会被唤醒。系统调用 write 同样有可能被阻塞,比如向网络写入数据,如果对方一直不接收,本端的缓冲区一旦被写满,就会被阻塞。1.1 阻塞读终端实验代码// 文件名:blockdemo.c#include 阅读全文

博文 2023-05-15 10:06:01 阻塞与非阻塞IO_51CTO博客_阻塞io和非阻塞io区别

【完结13章】高性能多级网关与多级缓存架构落地实战

【完结13章】高性能多级网关与多级缓存架构落地实战 给大家分享一套网关课程——高性能多级网关与多级缓存架构落地实战,已完结13章,附源码+电子书。 多级网关与多级缓存架构是一种常用的系统架构设计模式,用于提高系统性能和可扩展性。下面详细介绍一下这两种架构。 多级网关架构(Multi-tier Gateway Architecture): 多级网关架构是指将系统划分为多个层次或级别的网关,每个网关层次负责执行特定的功能。每个网关层次都有其特定的职责,可以是协议转换、数据加工、请求分发等。不同的网关层次可以部署在不同的服务器上,通过网络连接起来。 多级网关架构的主要优点包括: 1. 模块化和可扩展性:通过将系统划分为多个网关层次,可以方便地扩展和替换某个特定层次的功能模块,而无需影响整个系统。 ...阅读全文

博文 2023-12-15 16:18:06 woaiwodejia333

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

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

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

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

【24章】Qt 全流程实战企业级项目 - 云对象存储浏览器 给大家分享一套课程——Qt 全流程实战企业级项目 - 云对象存储浏览器,课程共24章,包更新。附源码+PDF课件。 开发QT有两种IDE可以使用,一种是使用 VS + Qt 的插件,另一种就是使用QtCreator工具。前一种是微软的工具,用的都比较多容易上手,缺点是信号槽的支持不太好,需要手写,不能自动生成,另外可能有中文编码的问题。后一种是Qt的官方IDE,智能提示与调试功能不如VS强大,但是是跨平台的IDE,其QtDesigner设计UI界面操作比较方便,并且由于是QT官方的IDE,对编码等支持都比较好,里面集成了Qt的帮助文档。不得不说Qt的帮助文档做的是非常好的,集成进QtCreator环境之后更加方便。 QT中最常用的控...阅读全文

博文 2023-12-13 16:17:20 woaiwodejia333

[23章附电子书]SpringBoot+Vue3+MySQL集群 开发健康体检双系统

![1.png](http://static.itsharecircle.com/231220/170d0dabae251a4821d02089fa1fb706.png) 大家都知道医疗行业是互联网发展前景极好的领域之一,对于初入职者、转行者来说都是很好的选择,今天我将给大家讲解一个关于健康+体检双系统的项目,项目以业务驱动技术栈,打造完整、全面的双系统项目,并采用前后端分离架构,业务功能完善,界面美观,可以高效积累大型医疗项目经验,快速提升医疗行业就业竞争力。 项目开始前,我们先来安装JDK 如果你本地有其他版本的JDK,一定要先卸载所有JDK,然后再安装JDK15.0.2,并且配置`PATH`和`JAVA_HOME`环境变量,否则JDK版本会出现错乱。 第二步就是部署Maven工具 配置...阅读全文

博文 2023-12-20 15:20:59 muandhbw

说说 Spring 表达式语言(SpEL)中的各种表达式类型

1 文本表达式 文本表达式支持字符串、 日期 、 数字(正数 、 实数及十六进制数) 、 布尔类型及 null。其中的字符表达式可使用单引号来表示,形如:'Deniro'。如果表达式中包含单引号或者双引号字符,那么可以使用转义字符 /。 ExpressionParser parser = new SpelExpressionParser(); //字符串解析 String str = (String) parser.parseExpression("'你好'").getValue(); System.out.println(str); //整型解析 int intVal = (Integer) parser.parseExpression("0x2F").getValue(); System...阅读全文

博文 2024-02-23 16:15:35 掘金

C#+PLC通讯框架串口网口开发课程

C#+PLC通讯框架串口网口开发课程 C# 是面向对象的、面向组件的编程语言。 C# 提供了语言构造来直接支持这些概念,让 C# 成为一种非常自然的语言,可用于创建和使用软件组件。 自诞生之日起,C# 就添加了支持新工作负载和新兴软件设计实践的功能。 C# 本质上是面向对象的语言。 你需要定义类型及其行为。 多项 C# 功能有助于创建可靠且持久的应用程序。 垃圾回收自动回收不可访问的未用对象所占用的内存。 可以为 null 的类型可防范不引用已分配对象的变量。 异常处理提供了一种结构化且可扩展的方法来进行错误检测和恢复。 Lambda 表达式支持函数编程技术。 语言集成查询 (LINQ) 语法创建一个公共模式,用于处理来自任何源的数据。 异步操作语言支持提供用于构建分布式系统的语法。 C# ...阅读全文

博文 2024-03-14 16:19:28 xiaoshuai8888

Fastjson踩“坑”记录和“深度”学习_fastjson noneautotype

作者:陶征策 阿里国际站商家技术团队 Fastjson是阿里开发的Java语言编写的高性能JSON库,本文总结了Fastjson使用时的一些注意事项,并简单分析了Fastjson的底层工作原理,结合具体的验证代码以及跟Jackson的对比,希望能帮助大家充分理解Fastjson的使用。 一、为什么写这篇? Fastjson是阿里开发的Java语言编写的高性能JSON库,用于将数据在JSON和Java Object之间互相转换,提供两个主要接口JSON.toJSONString和JSON.parseObject来分别实现序列化和反序列化操作,使用起来很方便。 最近在升级一个老系统的缓存架构,使用Fastjson将对象序列化后存入缓存,并在client端反序列化后使用,以减少对后端hsf的请求次...阅读全文

博文 2024-03-18 10:49:12 CSDN博客

C++大厂面试真题宝典 精选100道

C++大厂面试真题宝典 精选100道 好课大家一起分享——C++大厂面试真题宝典 精选100道,附课程源码下载。 C和C++的区别 C是面向过程的语言,而C++是面向对象的语言。 C和C++动态管理内存的方法不一样,C是使用malloc/free函数,而C++除此之外还使用new/delete关键字。 C++的类是C里没有的,但是C中的struct是可以在C++中正常使用的,并且C++对struct进行了进一步的扩展,使得struct在C++中可以和class有一样的作用。而唯一和class不同的地方在于struct成员默认访问修饰符是public,而class默认的是private。 C++支持重载,而C语言不支持。 C++有引用,C没有。 C++全部变量的默认链接属性是外链接,而C是内链...阅读全文

博文 2024-03-07 19:02:42 xiaoshuai8888

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

![1.png](http://static.itsharecircle.com/240308/901bc4f770305e90c29771d610d2ba74.png) C++大厂面试汇总,希望对大家的面试有帮助: 1、C和C++的区别 C是面向过程的语言,而C++是面向对象的语言。 C和C++动态管理内存的方法不一样,C是使用malloc/free函数,而C++除此之外还使用new/delete关键字。 C++的类是C里没有的,但是C中的struct是可以在C++中正常使用的,并且C++对struct进行了进一步的扩展,使得struct在C++中可以和class有一样的作用。而唯一和class不同的地方在于struct成员默认访问修饰符是public,而class默认的是private。...阅读全文

博文 2024-03-08 10:29:22 gaindiuhgw

【Linux】 shell if的[]和[[]]区别、=~语法_shell if []

文章目录 1. []和test2. []和[[]]区别2.1 先有[] 语法,并内置于linux系统,后来才有 [[]]2.2 [] 语法 都可以由 [[]] 替代,并且后者功能更丰富。2.3 二者都建议在表达式和括号自身使用空格避免出错2.4 [] 和 [[]] 中,字符串可以不加引号,此时等号右侧支持通配符2.5 当目标是数字类型时,二者都可以使用 -eq进行数字比较2.6 当目标是数字类型时,都支持>、>=等 数字比较符2.7 都可以使用= 、!=进行字符串比较2.8 在逻辑表达式语法稍有不同,[] 使用 -a、-o 分别表示与、或 关系 ,[[]]使用 &&、 ||表示与 、或关系2.9 逻辑运算符的优先级2.10 [[]]支持字符串模糊匹配,而[]不支持2.11 [[]]支持=~字...阅读全文

博文 2024-04-19 10:16:28 CSDN博客