java基础
文章平均质量分 67
xuehuagongzi000
这个作者很懒,什么都没留下…
展开
-
Spring相关
Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。PROPAGATION_REQUIRED_NEW:表示当前方法必须运行在它自己的事务中。如果当前事务存在,方法将会在该事务中运行。否则,会启动一个新的事务。Spring事务处理模块是通过AOP功能来实现声明式事务处理的,生成的代理会拦截目标对象的外部方法调用,自动开启事务、自动提交事务或回滚。PROPAGATION_SUPPORTS:如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行。原创 2023-11-21 10:17:31 · 132 阅读 · 0 评论 -
ConcurrentHashMap是如何实现线程安全的
多段锁+cas+synchronize。原创 2023-11-05 22:44:01 · 224 阅读 · 0 评论 -
java泛型
使用泛型类优化后,在类中只需要定义一个方法就可以支持shou方法传递多个类型。一个类的成员变量或者方法可能传入多个类型,则需要泛型类。原创 2023-10-30 20:28:12 · 171 阅读 · 0 评论 -
Splitter.on(‘.‘)代替split
Splitter替代split原创 2023-02-22 09:38:36 · 724 阅读 · 0 评论 -
枚举的使用
枚举学习原创 2023-01-29 15:11:20 · 79 阅读 · 0 评论 -
学习历史历史
1、易华录(1)、http和https的区别http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。Https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议。Https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,可防止数据在传输过程中不被窃取、修改,确保数据的完整性,比http协议安全。https协议缺点Https协议握手阶段比较费时,会使页面的加载时间延长。(2)、cookie和session的区别http协议是无状原创 2022-05-29 21:43:01 · 231 阅读 · 0 评论 -
java 字符串、数组、map排序案例
1、字符串排序import java.util.*;public class SortString { public static void main(String[] args) { reverseByAsckString(); } //按照字符串按长度,由小到大排序输出 //输入 // 3 //adfasdf //asdf //adsfadfasdf //输出 //asdf //ad原创 2022-05-28 15:54:25 · 268 阅读 · 0 评论 -
jvm内存和线程信息查看
目录1、通过jmap查看整体信息:jmap -heap 2、通过jstat查看gc的信息:jstat -gcutil :统计gc信息3、通过jmap 对jvm信息进行dump,在MAP工具中查看4、利用jstack查看jvm线程的情况1、通过jmap查看整体信息:jmap -heap <pid>[root@localhost ~]# jmap -heap 27900Attaching to process ID 27900, please wait.....原创 2020-11-04 11:41:30 · 6876 阅读 · 0 评论 -
集合框架面试总结
1、collection下list,set,还有什么?还有queue队列2、hashSet是怎么实现的?底层利用hashMap来实现,用key作为元素存储,value使用一个final值。3、hashMap为什么存储2的n次幂个空间?HashMap是根据key的hash值决定key放到哪个桶中,通过hash&(length-1)公式计算得出,2的n次方一定是最高位1其它低位是0,这样减1的时候才能得到01111这样都是1的二进制。这样(n - 1) & hash的值是均匀原创 2020-07-19 17:42:34 · 179 阅读 · 0 评论 -
arrayList扩容内部是怎么实现的
1、查看ArrayList的add方法,场景假设,一个list长度是10,目前有5个元素 public boolean add(E e) { ensureCapacityInternal(size + 1); // Increments modCount!! elementData[size++] = e; return true; }size是目前的元素个数等于5。ensureCapacityInternal(size + 1)进行原创 2020-06-23 16:36:42 · 387 阅读 · 1 评论 -
@transient作用
java 的transient关键字为我们提供了便利,你只需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中。...原创 2020-03-17 18:14:27 · 170 阅读 · 0 评论 -
使用缓冲功能的BufferedReader和BufferedWriter复制文本文件,按照行读写
BufferedReader构造方法摘要BufferedReader(Reader in) 创建一个使用默认大小输入缓冲区的缓冲字符输入流。BufferedReader(Reader in, int sz) 创建一个使用指定大小输入缓冲区的缓冲字符输入流。 方法摘要原创 2017-03-09 23:35:36 · 868 阅读 · 0 评论 -
操作系统--进程之fork
一、fork入门知识 一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。 一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来转载 2017-10-02 21:15:19 · 418 阅读 · 0 评论 -
计算机网络和操作系统知识点总结
1、osi参考模型,TCP/ip模型的异同点,和每一层是干嘛的,每一层的协议、每一层的设备有哪些2、传输层tcp和udp的区别,tcp三次握手过程,四次挥手过程,和状态转移过程(time_waited),为什么需要三次握手和四次挥手。3、网络层子网划分和子网掩码来确定子网数和主机数。输入url点击回车后究竟发生了什么?原创 2017-10-09 22:38:16 · 1446 阅读 · 0 评论 -
java中Object有哪些方法
有一次面试官听我自我介绍后,就问Object有哪些方法。我平时也没注意太多Object,根据自己的印象说了,toString,hashCode,wait,notify,notifyAll,equals那么Object类有哪些方法呢:private static native void registerNatives();public final native Class转载 2017-09-20 10:19:43 · 1474 阅读 · 0 评论 -
判断两个对象是否相等,hashcode和equals方法的联系
1、在集合中考虑两个对象是否相同的规则是:第一步:如果hashCode()相等,则进行第二步,否则不相同。第二步:查看equals()相等就相等,否则不相同2、hashcode是对象或者变量通过哈希算法计算出来的hash值,不同对象是不一样的,同一个对象是不变的。3、equals()相等,hashcode一定相等hashcode不相等,equals一定不相同4、在重写类原创 2017-02-23 23:40:17 · 4539 阅读 · 0 评论 -
Java中的Cloneable接口下的clone深拷贝,单纯的获取那个时刻的值
1.背景 用java写程序的时候很苦恼的一件事就是,如果将一个对象a赋给另一个对象b,那么你改变a的变量值得时候,b的值也对应的变化。如果我们只想单纯的获取那个时刻的a的状况给b的话,就要用到clone方法了。比如说如下代码:[java] view plain copypublic class Main {转载 2017-09-19 20:54:09 · 427 阅读 · 0 评论 -
使用FileInputStream和FileOutputStream实现文件复制
FileInputStream构造方法摘要FileInputStream(File file) 通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象file 指定。FileInputStream(FileDescriptor fdObj) 通原创 2017-03-09 22:45:21 · 1879 阅读 · 0 评论 -
java 流的分类(java流总结一)
首先,流是什么?流是个抽象的概念,是对输入输出设备的抽象,Java程序中,对于数据的输入/输出操作都是以“流”的方式进行。设备可以是文件,网络,内存等。如果数据的流向是程序至设备,我们成为输出流,反之我们称为输入流。流有哪些分类?可以从不同的角度对流进行分类:1. 处理的数据单位不同,可分为:字符流,字节流2.数据流方向不转载 2017-03-09 21:50:17 · 6137 阅读 · 0 评论 -
java正则表达式实例
字符 说明 \ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,"n"匹配字符"n"。"\n"匹配换行符。序列"\\\\"匹配"\","\\("匹配"("。 ^ 匹配输入字符串开始的位置。如果设置了RegExp对象的Multiline属性,^ 还会与"\n"...原创 2017-09-16 23:44:58 · 388 阅读 · 0 评论 -
Java ConcurrentModificationException异常原因和解决方法
在前面一篇文章中提到,对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。下面我们就来讨论以下这个异常出现的原因以及解决办法。 以下是本文目录大纲: 一.ConcurrentModificationException异常出现的原因 二.在单线程环境下的解决办法转载 2017-05-07 21:42:50 · 319 阅读 · 0 评论 -
设计模式--单例模式原理
本文继续介绍23种设计模式系列之单例模式。概念: Java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。 单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并向整原创 2016-12-11 17:11:06 · 3017 阅读 · 0 评论 -
1)现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?
public class ThreadTest {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubThread thread1 = new Thread(){@Overridepublic void run() {//转载 2016-07-02 16:47:11 · 5022 阅读 · 0 评论 -
单例模式应用场景和设计失误所引发的问题
应用场景: RedisClientpublic class RedisClient { private RedisClient(){} private static RedisClient instance = new RedisClient(); public final static RedisClient getInstance(){ return原创 2016-12-11 17:28:56 · 323 阅读 · 0 评论 -
treeMap的使用
由于TreeMap需要排序,所以需要一个Comparator为键值进行大小比较.当然也是用Comparator定位的. a. Comparator可以在创建TreeMap时指定 b. 如果创建时没有确定,那么就会默认使用key.compareTo()方法,这就要求key必须实现Comparable接口.一、对key进行排序:import java.util.Co原创 2017-10-10 22:28:06 · 396 阅读 · 0 评论 -
动态规划举例(决策+递推关系)
1、连续子数组的最大和DP,[cpp]view plaincopyvectorint>continuousSubarraySum(vectorint>&v){constintlen=v.size();vectorint>sum(len,0);intstart=原创 2017-10-04 15:38:44 · 414 阅读 · 0 评论 -
java数据结构中队列的使用
队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。以下实例演示了队列(Queue)的用法:add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常remo转载 2017-10-21 09:57:35 · 411 阅读 · 0 评论 -
Comparable接口和Comparator接口的使用
1、Comparable接口生命了一个比较两个对象大小的comparaTo()方法。例如:public class Edge implements Comparable{public int a;public int b;public int cost;@Overridepublic int compareTo(Edge e) {if(e.cost>原创 2016-07-09 17:10:17 · 536 阅读 · 0 评论 -
java静态代码块、构造代码块、构造函数的执行顺序
1、代码class C{ C() { System.out.println("这是C父类的无参构造函数"); }}class A { static int a;//类变量 String name; int id; //静态代码块 static { C c = new C(); Sy...原创 2019-10-08 14:48:22 · 80 阅读 · 0 评论 -
Java 正则表达式的捕获组(capture group)
1、普通捕获组从正则表达式左侧开始,每出现一个左括号"("记做一个分组,分组编号从 1 开始。0 代表整个表达式。对于时间字符串:2017-04-25,表达式如下(\\d{4})-((\\d{2})-(\\d{2}))有 4 个左括号,所以有 4 个分组:编号 捕获组 匹配 0 (\d{4})-((\d{2})-(\d{2})) 2017-04-2...转载 2019-05-30 10:25:04 · 792 阅读 · 0 评论 -
多线程之 ExecutorService的submit
Executor来启动线程比用Thread的start()更好。在新特征中,可以很容易控制线程的启动、执行和关闭过程,还可以很容易使用线程池的特性。一、创建任务(1)、任务就是一个实现了Runnable接口的类。创建的时候实run方法即可。(2)、任务是一个实现了Callable接口的类,实现call方法即可。二、执行任务1、创建ExecutorService通过工具...原创 2019-05-07 15:58:44 · 4109 阅读 · 0 评论 -
java 保留两位小数,小数转换成百分比显示使用DecimalFormat
1、保留两位小数DecimalFormat df = new DecimalFormat("0.00");System.out.println(df.format(2.1274));结果:2.132、小数转换成百分比DecimalFormat df = new DecimalFormat("0.00%");System.out.println(df.format(0.127...原创 2019-04-11 15:09:05 · 8447 阅读 · 0 评论 -
SimpleDateFormat.format的简单使用:parse的返回值是Date,format的返回值是String
场景一:将给定格式转换为指定格式:parse的返回值是Date,format的返回值是String输入 01-29-2017输出2017/01/29先parse转化为date类型,再将其format为指定日期类型 String str = "01-29-2017"; SimpleDateFormat sd = new SimpleDa...原创 2019-04-11 14:47:35 · 2289 阅读 · 0 评论 -
java的volatile关键字之非线程安全
volatile用volatile修饰的变量,线程在每次使用变量的时候,都会读取主存中变量的最新值。volatile不能用来进行原子性操作。 下面看一个例子,我们实现一个计数器,每次线程启动的时候,会调用计数器inc方法,对计数器进行加一 执行环境——jdk版本:jdk1.6.0_31 ,内存 :3G cpu:x86 2.4G转载 2017-10-10 23:46:44 · 307 阅读 · 0 评论 -
用位运算来代替乘法、除法和取余的方式
假设有两个数,A和B(A>0,B>0)。B为2^n,期中n>=0,A>=0。则:要求A * B的话,则可使用要求A / B的话,则可使用>>操作符,A >> n。要求A % B的话,则可使用&操作符,A&(B-1)。转载 2017-11-26 22:57:59 · 6095 阅读 · 1 评论 -
hashmap原理总结
1. HashMap的数据结构数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;链表链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难原创 2017-11-20 14:15:53 · 290 阅读 · 1 评论 -
java的函数重载
一、区分重载方法:参数列表不同,具体而言,可以是:(1)参数顺序的不同(2)参数类型不同不能够通过返回值来区分重载,例如:[java] view plain copyvoid f(){} int f(){return 1;} //调用 f(); 如此调用,其实是没法分转载 2017-11-11 22:08:32 · 296 阅读 · 0 评论 -
cookie和session的原理
什么是会话跟踪技术在JavaWeb中,客户向某一服务器发出第一个请求开始,会话就开始了,直到客户关闭了浏览器会话结束。在一个会话的多个请求中共享数据,这就是会话跟踪技术。我们知道HTTP协议是无状态协议,也就是说每个请求都是独立的!无法记录前一次请求的状态。但HTTP协议中可以使用Cookie来完成会话跟踪!在JavaWeb中,使用session来完成会话跟踪,session底层依赖Cook...原创 2019-12-01 23:38:02 · 302 阅读 · 0 评论 -
不移除元素遍历栈和队列
一、Queue的遍历 import java.util.Queue; import java.util.concurrent.LinkedBlockingQueue; /** * 队列的遍历 * * @author leizhimin 2009-7-22 15:05:14 */ public class TestQueue {转载 2017-10-25 18:44:07 · 2767 阅读 · 0 评论 -
面经(人人车)
1.如何设计表结构数据类型MySQL与Java一样,也有数据类型。MySQL中数据类型主要应用在列上。 常用类型:| TINYINT: 小整形l int:整型| BIGINT 大整形l double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;l decimal:泛型型,在表单钱方面使用该类型,因为不原创 2016-07-07 20:36:41 · 1210 阅读 · 0 评论