摘要:1、length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int len=s.length(); 2、charAt() 截取一个字符 例:char ch; ch="abc".charAt(1); 返回'b'
阅读全文
lotus贵有恒何必三更眠五更起 最无益只怕一日曝十日寒 |
|
随笔分类 - corejava-基础
摘要:1、length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int len=s.length(); 2、charAt() 截取一个字符 例:char ch; ch="abc".charAt(1); 返回'b'
阅读全文
摘要:这个特性是JDK9放出来的,主要是为了节约String占用的内存。 众所周知,在大多数Java程序的堆里,String占用的空间最大,并且绝大多数String只有Latin-1字符,这些Latin-1字符只需要1个字节就够了。JDK9之前,JVM因为String使用char数组存储,每个char占2
阅读全文
摘要:String 对象的实现 String对象是 Java 中使用最频繁的对象之一,所以 Java 公司也在不断的对String对象的实现进行优化,以便提升String对象的性能,看下面这张图,一起了解一下String对象的优化过程。 1. 在 Java6 以及之前的版本中 String对象是对 cha
阅读全文
摘要:一、String类的使用: String:字符串,使用一对“”引起来表示 String声明为final的,不可以被继承 字符串的字符使用Unicode进行编码,一个字符(不区分字母还是汉字)占两个字节 String实现了Serializable接口:表示字符串是支持序列化的,说明可以在网络上传输。
阅读全文
摘要:常用的四种循环,普通for-增强for-forEach-forEach-Stream循环 是否真正思考过他们的不同 实践出真知,让我们从实践着手 public class ForDemo { public static void main(String[] args) { Integer initi
阅读全文
摘要:java8 合并两个 list<T>, 并将tickeId相同的所有属性合并到一个T中 list1中对象的属性:ticketId、ticketName list2中对象的属性:ticketId、saleNum、batchAvailableNum 最总集合中对象的属性:ticketId、ticketN
阅读全文
摘要:1、 runAsync 和 supplyAsync方法 CompletableFuture 提供了四个静态方法来创建一个异步操作。 public static CompletableFuture<Void> runAsync(Runnable runnable) public static Comp
阅读全文
摘要:假如我有一个订单相关的统计接口,需要返回3样数据:今日订单数、今日交易额、总交易额。 一般的我们的做法是串行调用3个函数,把调用返回的结果返回给调用者,这3次调用时串行执行的,如果每个调用耗时1秒的话,3次调用总耗时就是3秒。 这种做法效率非常低,因为3次调用之间无所谓先后顺序,所以采用并行执行效率
阅读全文
摘要:1、 lambda表达式的基础语法 lambda表达式因为是一个匿名方法,因此可以不用关心方法的名字是什么。 实际上,在设计lambda表达式的时候,返回值是什么也不需要我们关心。我们需要关心的只有两部分: 参数 和 方法体 参数 -> 方法体 是lambda表达式的最基础的语法,在语法中,使用符号
阅读全文
摘要:Lambda表达式优于匿名类 在 Java 8 中,添加了函数式接口, lambda 表达式和方法引用,以便更容易地创建函数对象。今天我们就来聊聊 lambda 表达式。 Lambda表达式的前世 匿名类 以往,使用单一抽象方法的接口被用作函数类型。 它们的实例表示函数(functions)或行动(
阅读全文
摘要:个人认为在自己写接口时,需要返回集合时返回一个空集合,比如mybatis查询如果返回一个集合,结果为空时也会返回一个空集合而不是null。 那么这样有什么好处呢?最大的好处就是调用方不用在判断是否为null,可以直接用,因为不用抛空指针。 当然这也有缺点,如果返回Lists.newArrayList
阅读全文
摘要:1. 简述JVM关闭通常而言,对于JVM的关闭我们很少去关注,但是了解JVM的关闭能帮我们在JVM关闭时做一些合理的事情。首先JVM的关闭方式可以分为三种: 正常关闭:当最后一个非守护线程结束或者调用了System.exit或者通过其他特定平台的方法关闭(发送SIGINT,SIGTERM信号等)强制
阅读全文
摘要:一. shutdownHook的背景 想象一下,如果你现在刚好在 word 上写需求文档,电脑突然重启。等待开机完成,你可能会发现写了一个小时文档没有保存,就这么没了。。。 一个正在运行 Java 应用如果突然将其停止,影响不止数据丢失,还会造成其他影响。比如: 请求丢失:内存队列中等待执行请求丢失
阅读全文
摘要:叙述 关于java字节码的处理,目前有很多工具,如javassist,bcel,asm,cglib,以及jdk6引入的JavaCompiler等。 其中,CGLib的底层基于ASM实现,是一个高效高性能的生成库; 而ASM是一个轻量级的类库,但需要涉及到JVM的操作和指令。这些实现都需要直接跟虚拟机
阅读全文
摘要:1. 什么是热加载 热加载是指可以在不重启服务的情况下让更改的代码生效,热加载可以显著的提升开发以及调试的效率,它是基于 Java 的类加载器实现的,但是由于热加载的不安全性,一般不会用于正式的生产环境。 2. 热加载与热部署的区别 首先,不管是热加载还是热部署,都可以在不重启服务的情况下编译/部署
阅读全文
摘要:开篇 SPI全称为Service Provider Interface,是一种服务提供机制,比如在现实中我们经常会有这种场景,就是对于一个规范定义方而言(可以理解为一个或多个接口),具体的服务实现方是不可知的(可以理解为对这些接口的实现类),那么在定义这些规范的时候,就需要规范定义方能够通过一定的方
阅读全文
摘要:1.什么是SPI SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的接口,它可以用来启用框架扩展和替换组件。 SPI的作用就是为这些被扩展的API寻找服务实现。 2.SPI和API的使用场景 API (Application Program
阅读全文
摘要:注:该源码分析对应JDK版本为1.8 1 引言 这是【源码笔记】的JDK源码解读的第一篇文章,本篇我们来探究Java的SPI机制的相关源码。 2 什么是SPI机制 那么,什么是SPI机制呢? SPI是Service Provider Interface 的简称,即服务提供者接口的意思。根据字面意思我
阅读全文
摘要:聊聊JVM的年轻代 1.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用,这样就会对堆的所有区域进行扫描。而我们的很多对象都是朝生夕
阅读全文
摘要:核心提炼 Thread 类有维护了一个属性变量 threadLocals (ThreadLocal.ThreadLocalMap threadLocals = null),也就是说每个线程有都一个自己的 ThreadLocalMap ,所以每个线程往这个 ThreadLocal 中读写隔离的,并且是
阅读全文
|