- 在ABAP里我们如果想用代码获得一个数据库表里有多少条记录,常规做法是使用SELECT COUNT。如果您使用的是HANA数据库,现在有一种新的办法可以达到同样的目的。HANA数据库里有一张名为m_tables的系统视图,里面存放了数据库表的元数据。这个系统视图的详细说明参考SAP帮助文档。我写了一个工具,可以通过查询m_tables来批量获得一系列数据库表的记录条数和占据的存储空间。您可以... 在ABAP里我们如果想用代码获得一个数据库表里有多少条记录,常规做法是使用SELECT COUNT。如果您使用的是HANA数据库,现在有一种新的办法可以达到同样的目的。HANA数据库里有一张名为m_tables的系统视图,里面存放了数据库表的元数据。这个系统视图的详细说明参考SAP帮助文档。我写了一个工具,可以通过查询m_tables来批量获得一系列数据库表的记录条数和占据的存储空间。您可以...
- 在Java SDK中,对于Socket原生提供了支持,它分为ServerSocket和Socket,其中ServerSocket发起一个服务端的Socket,其中需要提供一个端口号,如果给定0,则自动申请可用的端口。当然了,也可以指定具体的端口号(有一定的范围,不超过 65535 )。不过这里需要注意,传入的端口不能被其他应用占用,否则启动服务失败。 在Java SDK中,对于Socket原生提供了支持,它分为ServerSocket和Socket,其中ServerSocket发起一个服务端的Socket,其中需要提供一个端口号,如果给定0,则自动申请可用的端口。当然了,也可以指定具体的端口号(有一定的范围,不超过 65535 )。不过这里需要注意,传入的端口不能被其他应用占用,否则启动服务失败。
- 通过学习了 Java 中的集合类,了解到集合类是 Java 数据结构的实现。Java的集合类是在 java.util 包中,它允许以各种方式将元素分组,并定义了各种方法使这些元素更容易操作。常用集合类ArrayList,LinkedList,HashSet,HashMap等。 通过学习了 Java 中的集合类,了解到集合类是 Java 数据结构的实现。Java的集合类是在 java.util 包中,它允许以各种方式将元素分组,并定义了各种方法使这些元素更容易操作。常用集合类ArrayList,LinkedList,HashSet,HashMap等。
- 冰河联合猫大人共同创作的分布式事务领域的开山之作——《深入理解分布式事务:原理与实战》一书正式出版了,于2021年10月20日开始在当当预售,当天即登上当当新书榜第一的位置! 冰河联合猫大人共同创作的分布式事务领域的开山之作——《深入理解分布式事务:原理与实战》一书正式出版了,于2021年10月20日开始在当当预售,当天即登上当当新书榜第一的位置!
- 对于什么是可见性,比较官方的解释就是:一个线程对共享变量的修改,另一个线程能够立刻看到。说的直白些,就是两个线程共享一个变量,无论哪一个线程修改了这个变量,则另外的一个线程都能够看到上一个线程对这个变量的修改。这里的共享变量,指的是多个线程都能够访问和修改这个变量的值,那么,这个变量就是共享变量。 对于什么是可见性,比较官方的解释就是:一个线程对共享变量的修改,另一个线程能够立刻看到。说的直白些,就是两个线程共享一个变量,无论哪一个线程修改了这个变量,则另外的一个线程都能够看到上一个线程对这个变量的修改。这里的共享变量,指的是多个线程都能够访问和修改这个变量的值,那么,这个变量就是共享变量。
- 万字博文教你搞懂java源码的日期和时间相关用法:旧API的Date和Calendar等和新API 放在**java.time** 这个包下的:LocalDateTime,ZonedDateTime,DateTimeFormatter和Instant等的分析和对比 万字博文教你搞懂java源码的日期和时间相关用法:旧API的Date和Calendar等和新API 放在**java.time** 这个包下的:LocalDateTime,ZonedDateTime,DateTimeFormatter和Instant等的分析和对比
- 万字博文教你搞懂java源码的日期和时间相关用法:旧API的Date和Calendar等和新API 放在**java.time** 这个包下的:LocalDateTime,ZonedDateTime,DateTimeFormatter和Instant等的分析和对比 万字博文教你搞懂java源码的日期和时间相关用法:旧API的Date和Calendar等和新API 放在**java.time** 这个包下的:LocalDateTime,ZonedDateTime,DateTimeFormatter和Instant等的分析和对比
- 我们知道SimpleDateFormat是线程不安全,本文会介绍多种解决方案来保证线程安全。 我们知道SimpleDateFormat是线程不安全,本文会介绍多种解决方案来保证线程安全。
- 为何要有读写锁ReentrantLock锁和其他锁基本上都是排他锁,排他锁指的是在同一时刻只允许一个线程持有锁,访问共享资源。虽然ReentrantLock支持同一个线程重入,但是允许重入的是同一个线程。因此ReentrantReadWriteLock是为了支持多个线程在同一个时刻对于锁的访问孕育而生的。读写锁—简单介绍读写锁ReentrantReadWriteLock允许多个线程在同一时刻... 为何要有读写锁ReentrantLock锁和其他锁基本上都是排他锁,排他锁指的是在同一时刻只允许一个线程持有锁,访问共享资源。虽然ReentrantLock支持同一个线程重入,但是允许重入的是同一个线程。因此ReentrantReadWriteLock是为了支持多个线程在同一个时刻对于锁的访问孕育而生的。读写锁—简单介绍读写锁ReentrantReadWriteLock允许多个线程在同一时刻...
- 简介重入锁ReentrantLock指的是支持同一个线程对资源的重复加锁。ReentrantLock中有公平锁和非公平锁的两种实现。synchronizedsynchronized关键字支持隐式的重入;当一个线程获取到锁时,是支持这个线程多次获取这个锁的,不会出现自己阻塞自己的情况,并且我们开发过程中对于synchronized关键字也不需要关心锁的释放。举个递归的例子我们来看synchro... 简介重入锁ReentrantLock指的是支持同一个线程对资源的重复加锁。ReentrantLock中有公平锁和非公平锁的两种实现。synchronizedsynchronized关键字支持隐式的重入;当一个线程获取到锁时,是支持这个线程多次获取这个锁的,不会出现自己阻塞自己的情况,并且我们开发过程中对于synchronized关键字也不需要关心锁的释放。举个递归的例子我们来看synchro...
- 简介:目前浏览器作为web服务的客户端访问者,都支持并发多线程的访问。例如在浏览器访问一个web服务器上的HTML页面,此时HTML页面中的各种资源(图片、样式)会被浏览器并发的获取,这种并发访问使得用户不至于等待图片加载的同时也不能看到文字内容。客户端既然是多线程并发访问,那么如果服务端仅仅是单线程处理客户端的请求,那么客户端的并发访问将会变得毫无意义。因此,大部分的web服务器也是支持并... 简介:目前浏览器作为web服务的客户端访问者,都支持并发多线程的访问。例如在浏览器访问一个web服务器上的HTML页面,此时HTML页面中的各种资源(图片、样式)会被浏览器并发的获取,这种并发访问使得用户不至于等待图片加载的同时也不能看到文字内容。客户端既然是多线程并发访问,那么如果服务端仅仅是单线程处理客户端的请求,那么客户端的并发访问将会变得毫无意义。因此,大部分的web服务器也是支持并...
- 线程池实战简介:上文讲述了怎么写一个简单的数据库连接池,试想一下,当服务端接收到来自客户端的成白上千个连接请求时,如果每次我们都为其创建一个线程去执行任务,执行完毕后销毁线程,这肯定不是一个好的解决办法。我们知道线程的创建和销毁是要消耗系统资源的,那么我们就可以从这个方面入手来控制资源的浪费。线程池描述:线程池技术是一种池化思想,也就是提前预置若干数量的线程,并且线程不能由用户直接控制,在这... 线程池实战简介:上文讲述了怎么写一个简单的数据库连接池,试想一下,当服务端接收到来自客户端的成白上千个连接请求时,如果每次我们都为其创建一个线程去执行任务,执行完毕后销毁线程,这肯定不是一个好的解决办法。我们知道线程的创建和销毁是要消耗系统资源的,那么我们就可以从这个方面入手来控制资源的浪费。线程池描述:线程池技术是一种池化思想,也就是提前预置若干数量的线程,并且线程不能由用户直接控制,在这...
- 简介在Java多线程中,有时候可能需要采用延迟初始化来降低初始化类和创建对象的开销。双重检查锁(饿汉式单例中经常用)是常见的延迟初始化方案,但它是一个错误的用法。本文将分析双重检查锁定的错误根源,以及两种线程安全的延迟初始化方案。1、双重检查锁定的由来在Java程序中,有时候可能需要推迟一些高开销的对象初始化操作,并且只有在使用这些对象时才进行初始化。此时,程序员可能会采用延迟初始化。但要争... 简介在Java多线程中,有时候可能需要采用延迟初始化来降低初始化类和创建对象的开销。双重检查锁(饿汉式单例中经常用)是常见的延迟初始化方案,但它是一个错误的用法。本文将分析双重检查锁定的错误根源,以及两种线程安全的延迟初始化方案。1、双重检查锁定的由来在Java程序中,有时候可能需要推迟一些高开销的对象初始化操作,并且只有在使用这些对象时才进行初始化。此时,程序员可能会采用延迟初始化。但要争...
- 简介happens-before是JMM的核心概念。理解happens-before是了解JMM的关键。1、设计意图JMM的设计需要考虑两个方面,分别是程序员角度和编译器、处理器角度:程序员角度,希望内存模型易于理解、易于编程。希望是一个强内存模型。编译器和处理器角度,希望减少对它们的束缚,以至于编译器和处理器可以做更多的性能优化。希望是一个弱内存模型。因此JSR-133专家组设计JMM的核... 简介happens-before是JMM的核心概念。理解happens-before是了解JMM的关键。1、设计意图JMM的设计需要考虑两个方面,分别是程序员角度和编译器、处理器角度:程序员角度,希望内存模型易于理解、易于编程。希望是一个强内存模型。编译器和处理器角度,希望减少对它们的束缚,以至于编译器和处理器可以做更多的性能优化。希望是一个弱内存模型。因此JSR-133专家组设计JMM的核...
- 上篇介绍了锁和volatile的内存语义,本文讲述的是final的内存语义,相比之下,final域的读和写更像是普通变量的访问。1、final域的重排序规则final对于final域编译器和处理器遵循两个重排序规则在构造函数内对一个final域的写入,与随后把这个对象的引用赋值给另一个引用变量,这两个操作之间不能重排序初次读一个包含final域的对象的引用,与随后初次读这个final域,这两... 上篇介绍了锁和volatile的内存语义,本文讲述的是final的内存语义,相比之下,final域的读和写更像是普通变量的访问。1、final域的重排序规则final对于final域编译器和处理器遵循两个重排序规则在构造函数内对一个final域的写入,与随后把这个对象的引用赋值给另一个引用变量,这两个操作之间不能重排序初次读一个包含final域的对象的引用,与随后初次读这个final域,这两...
上滑加载中
推荐直播
-
华为云码道 × 仓颉编程:工程化AI编码探索2026/05/27 周三 19:00-21:00
刘俊杰-华为云仓颉语言专家/李炎-华为云码道技术专家/王智鹏-OpenCangjie开源社区发起人
本场直播围绕华为云仓颉语言与华为云码道的深度结合,展示华为云智能编程从零基础到高效落地的完整生态能力。以华为云码道为引擎,仓颉语言为载体,带给大家日常提效、趣味创新到极速量产的开发体验。
回顾中
热门标签