2. 两数相加(简单)
2. 两数相加(简单)给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-two-numbers
思想最好的办法就是一个一个计算,注意进位,特别是最后的一个进位,需要单独考虑
代码:1234567891011121314151617181920212223242526272829303132/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode nex ...
1.两数之和(简单)
1.两数之和(简单)给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum
思路:一次哈希,在迭代时将元素添加到表中,还会回头检查表中是否存在当前元素所对应的目标元素,如果已经存在,表示已经找到,并立即返回
回看记录200627添加go代码
代码:12345678910111213141516171819202122232425262728293031class Solution { public int[] twoSum(int[] nums, int target) { int n = nums.length; ...
JAVA虚拟机--垃圾收集(GC)
JAVA虚拟机–垃圾收集前言Java的自动管理主要是针对对象内存的回收和对象内存的分配。同时Java自动内存管理最核心的功能是堆内存中对象的分配与回收(Java堆是垃圾收集器管理的最主要区域)
如何判定对象死亡
引用计数法
给对象中添加一个引用计数器,每当有一个地方引用它,计数器就加 1;当引用失效,计数器就减 1;任何时候计数器为 0 的对象就是不可能再被使用的。
这个方法实现简单,效率高,但是目前主流的虚拟机中并没有选择这个算法来管理内存,其最主要的原因是它很难解决对象之间相互循环引用的问题。
可达性分析法
这个算法的基本思想就是通过一系列的称为 “GC Roots” 的对象作为起点,从这些节点开始向下搜索,节点所走过的路径称为引用链,当一个对象到 GC Roots 没有任何引用链相连的话,则证明此对象是不可用的。
不可达不一定是非死不可的,真正宣告对象死亡至少要经过 两次标记。第一次标记且进行一次筛选(此对象是否有必要执行finalize方法,当对象没有覆盖finalize方法,或finalize方法以及被虚拟机调用过时,虚拟机将这两种情况视为没有必要执行;被判断需要执行的对 ...
JAVA虚拟机--对象的创建
JAVA虚拟机–对象的创建暂时只讨论普通的Java对象,不包括数组和Class对象
虚拟机遇到一条new指令,先去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程
类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需内存的大小在类加载完成后就可以完全确定,为对象分配空间的任务等同于把一块确定大小的内存从java堆中划分出来
不同的JVM垃圾收集器在分配内存时的表现也是不相同的,具体表现为两种:
如果垃圾收集器选择的时Serial,ParNew这种基于压缩整理算法的,那么内存时规整的,虚拟机将采用 指针碰撞法来为对象分配内存。意思时所有用过的内存在一遍,空闲的内存在另一边,中间放着一个指针作为分界点的指示器,分配内存就仅仅时将指针想空闲那边挪动一段与对象大小相等的距离罢了
Java面试--谈谈你对Java平台的理解
Java–谈谈你对Java平台的理解今日问题:谈谈你对Java平台的理解?Java是解释执行,这句话正确吗?
问题比较开放,考察点很多,比如基础知识,是否掌握Java平台主要模块和运行原理
尽量表现出自己的思维深入并系统化,Java知识理解也比较全面
典型回答:
Java本身是一种面向对象的语言,最显著的特性有两个方面,一个是“编写一次,到处执行”,跨平台,还有一个就是垃圾收集,Java通过GC来回收分配内存,程序员一般不用担心内存的分配和回收
我们日常接触到的JRE和JDK,JRE也就是Java运行环境,包含JVM和Java类库,以及一些模块等,而JDK可以看作是JRE的一个超集,提供了更多的工具,比如编译器,javadoc,各种诊断工具等
对于解释执行这句,说法不太准确,Java源代码,首先需要进行javac编译成字节码(.class)然后在运行时,通过Java虚拟机内嵌的解释器将字节码转换成最终的机器码。现在常见的JVM,如Hotspot JVM,都提供了JIT编译器,也就是通常所说的动态编译器,JIT能够在运行时将热点代码编译成机器码,这种情况部分热点代码就属于编译执行 ...
Java基础--理解Java中String,StringBuffer,StringBuilder有什么区别
Java基础–理解Java中String,StringBuffer,StringBuilder有什么区别
String时Java语言非常基础和重要的类,提供了构造和管理字符串的各种基本逻辑。它时典型的Immutable(不可变)类,被声明为final ,其所有属性也都时final。当然也是由于它的不可变性,导致类似拼接,裁剪字符串时,都会产生新的String对象。由于字符串操作的普遍性,所有相关操作的效率往往对应用的性能有明显的影响
StingBuffer是为了解决上面提到拼接产生太多中间对象的问题而提供的一个类,我们可以用append或者add方法,将字符串添加到已有序列的末尾或者指定位置。本质上是一个线程安全对的可修改的字符序列,它保证了线程安全,也随之带来了额外的性能开销,所以除非有线程安全的需要,不然还是推荐使用下面的StringBuilder
StringBuilder是Java1.5之后新增的,在能力上和StringBuffer没有区别,但是去掉了线程安全的部分,有效减小了开销,是绝大多数情况下进行字符串拼接的首选
为了实现修改字符序列的目的,StringBuffer和S ...
Spring--IOC
Spring–IOCSpring–事务事务传播特性
Spring--Config
Spring–Config 别名 : alias 设置别名 , 为bean设置别名 , 可以设置多个别名
12<!--设置别名:在获取Bean的时候可以使用别名获取--><alias name="userT" alias="userNew"/>
Bean的配置
12345678910111213<!--bean就是java对象,由Spring创建和管理--><!-- id 是bean的标识符,要唯一,如果没有配置id,name就是默认标识符 如果配置id,又配置了name,那么name是别名 name可以设置多个别名,可以用逗号,分号,空格隔开 如果不配置id和name,可以根据applicationContext.getBean(.class)获取对象;class是bean的全限定名=包名+类名--><bean id="hello" name="hello2 h2,h3;h4&q ...
Spring--IOC中创建Bean
Spring–IOC 通过无参构造方法来创建
1、User.java
1234567891011121314151617public class User { private String name; public User() { System.out.println("user无参构造方法"); } public void setName(String name) { this.name = name; } public void show(){ System.out.println("name="+ name ); }}
2、beans.xml
1234567891011<?xml version="1.0" encoding="UTF-8"?><beans xmlns="ht ...
Spring--Autowired
Spring–Autowired@Autowired
直接在属性上使用即可,也可以使用在set方法上
使用Autowired注解后可以不编写set方法,前提是自动装配的属性在IOC容器中存在,且符合名字byname
@Nullable 某个字段标注了这个注解,说明这个字段可以为null,等同于下方注解
@Autowired(required = false)对象可以为null,否则不可以为空
@Qualifier
@Autowired是根据类型自动装配的,加上@Qualifier则可以根据byName的方式自动装配
@Qualifier不能单独使用。
@Resource
@Resource如有指定的name属性,先按该属性进行byName方式查找装配;
其次再进行默认的byName方式进行装配;
如果以上都不成功,则按byType的方式自动装配。
都不成功,则报异常。
@Autowired与@Resource异同:
1、@Autowired与@Resource都可以用来装配bean。都可以写在字段上,或写在setter方法上。
2、@Autowired默认按类型装配(属于sprin ...