自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

转载 一天吃透Java面试八股文

值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量。引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本,并不是原对象本身,两者指向同一片内存空间。所以对引用对象进行操作会同时改变原对象。java中不存在引用传递,只有值传递。即不存在变量a指向变量b,变量b指向对象的这种情况。StringJoiner是 Java 8 新增的一个 API,它基于 StringBuilder 实现,用于实现对字符串之间通过分隔符拼接的场景。

2024-09-25 19:39:23 948

原创 【Spring】

学习路线:核心容器-->整合(Mybatis)-->AOP-->事务-->家族(SpringMVC、Springboot、spring cloud)IoC容器负责对象的创建、初始化等一系列工作,被创建或被管理的对象在IoC容器中被称为。在容器中建立bean与bean之间的依赖关系的整个过程,被称为依赖注入。提供对象,此过程中对象创建控制权由程序转移到外部,此思想称为控制反转。在IoC容器内将有依赖关系的bean进行关系绑定(DI)data integration数据集成。data access 数据访问。

2024-07-25 09:57:27 572

原创 【数据结构与算法—基础篇1】

需要额外的存储空间:链表的每个节点需要额外的指针来指向下一个节点,这样会占用额外的存储空间,相对于顺序表来说,存储效率较低。插入和删除操作复杂:由于顺序表是连续存储的,当需要插入或删除元素时,需要移动其他元素来腾出空间或填补空缺,因此时间复杂度为O(n),其中n是元素的个数。2、数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。8、数据的逻辑结构和存储结构是密不可分的,算法的设计取决于所选定的逻辑结构,而算法的实现依赖于采用的存储结构。

2024-07-24 09:58:52 384

原创 【leetcode-合并两个有序链表】

*** }*/}else{​。

2024-07-22 15:47:05 296

原创 【数据库连接池】

/从数据源获取连接。//从数据源获取连接。使用了这些数据库连接池后,我们在项目开发中就不需要编写连接数据库的代码了!//创建数据源 工厂模式--->创建。//创建数据源 工厂模式--->创建。Druid:阿里巴巴。

2024-07-22 11:15:43 1867

原创 【PrepareStatement】

try {//获取数据库连接)";//预编译sql,先写sql,然后不执行// 索引值+参数赋值​//new Date().getTime()获得时间戳if(i>0){System.out.println("插入成功");​​。

2024-07-22 08:37:42 736

原创 【Statement对象】

/获取SQL执行对象。//获取SQL执行对象。//获取SQL执行对象。//获取SQL执行对象。System.out.println("插入成功");System.out.println("删除成功");System.out.println("更新成功");

2024-07-21 10:20:10 537

原创 初识JDBC

/固定写法,加载驱动。还需要导入一个数据驱动包mysql-connector-java-5.1.47.jar。//5、执行sql对象去执行sql,可能存在结果,查看返回结果。//3、连接成功,数据库对象 connection代表数据库。//4、执行sql的对象 statement。//2、用户信息和url。3、获取执行sql对象statement。//我的第一个JDBC程序。1、创建一个普通项目。4、获得返回的结果集。

2024-07-19 17:42:18 607

原创 【规范数据库设计及三大范式】

原子性:保证每一列不可再分。

2024-07-19 11:15:00 428

原创 【数据表的类型】

.MYD 数据文件(data)*.frm 表结构的定义文件。设置数据库表的字符集编码。在物理空间存在的位置。*.MYI 索引文件。

2024-07-17 09:05:02 379

原创 【操作数据库】

pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',`字段名` 列类型 [属性] [索引] [注释],`字段名` 列类型 [属性] [索引] [注释],`字段名` 列类型 [属性] [索引] [注释],

2024-07-16 17:56:02 446

原创 【初识MySQL】

update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost' -- 修改用户密码。-- 创建一个名为westos的数据库。-- 显示数据库中所有的表的信息。mysql -u root -p123456 --连接数据库。-- 查看所有的数据库。-- 查看数据库中所有的表。-- 单行注释(SQL本来的注释)-- 所有的语句都使用;

2024-07-16 15:34:58 182

原创 【ConcurrentHashMap】

从结构上说,1.7版本的ConcurrentHashMap采用分段锁机制,里面包含一个Segment 数组,Segment继承于ReentrantLock,Segment则包含HashEntry的数组,HashEntry本身就是一个链表的结构,具有保存key、value的能力能指向下一个节点的指针。线程安全实现方式:HashTable采用的是方法级的锁,每次只允许一个线程进行操作,其他线程必须等待当前线程操作完成后才能操作,这种方式虽然能保证线程安全,但效率不高。

2024-07-14 16:52:57 329

原创 【Leetcode--旋转矩阵】

/上下交换i++){//对角交换i++){j++){

2024-07-13 10:27:01 478

转载 【Java面试八股文】

A收到确认后,检查ack是否为x+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=y+1,并将该数据包发送给B,B检查ack是否为y+1,ACK是否为1,如果正确则连接建立成功,A和B进入ESTABLISHED状态,完成三次握手。写操作时,先将容器复制一份,再在新的副本上执行写操作,此时写操作是上锁的。而实际的业务中,我们通常的需求是,若两个不同的对象它们的内容是相同的,就认为它们相等。出现这种情况的原因,可能是业务层误将缓存和库中的数据删除了,也可能是有人恶意攻击,专门访问库中不存在的数据。

2024-07-13 07:40:37 22

原创 Leetcode--2.2

int p = 0;

2024-07-11 16:59:35 252

原创 Leetcode--2.1

*** }*/while(curr!=null){

2024-07-11 11:30:59 448

原创 Leetcode--1

*给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。输入:nums = [2,7,11,15], target = 9。输入:nums = [3,2,4], target = 6。输入:nums = [3,3], target = 6。

2024-07-10 22:16:35 466

原创 【注解与反射--3】

动态创建对象执行方法package reflection;​import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;​//通过反射动态创建对象public class Test08 { public static void main(S

2024-07-10 13:41:40 1418

原创 【注解和反射--2】

/.getDeclaredFields()可以找到全部的属性,而.getFields()只能找到public的属性。//获得本类及其父类的全部public方法。System.out.println("这个人是:"+person.name);System.out.println("Main类被加载");//获取扩展类加载器的父类加载器-->根加载器(c/c++)

2024-07-10 12:07:14 1609

原创 【注解和反射--1】

​​//测试元注解​​//定义一个注解//Target表示我们的注解可以用在哪些地方//Retention表示我们的注解在什么地方才有效//Documented 表示是否将我们的注解生成在Javadoc中//Inherited表示子类可以继承父类的注解@Inherited​​​//自定义注解//注解可以显示赋值,如果没有默认值,我们就必须给注释赋值@MyAnnotation2(name = "lxy",school = {"清华大学","北京大学"})​。

2024-07-10 09:15:35 623

原创 【管程法、信号灯法、线程池初步】

System.out.println("消费了-->"+container.pop().id+"只鸡");System.out.println("生产了"+i+"只鸡");System.out.println("演员表演了"+voice);System.out.println("观看了"+voice);//如果容器满了,就需要等待消费者消费。//等待生产者生产,消费者等待。//通知消费者消费,生产等待。//吃完了,通知消费者生产。//可以通知消费者消费了。//生产者、消费者、产品、缓冲区。

2024-07-09 20:44:52 792

原创 【Lock锁】

​​//测试lock锁​​//定义lock锁 ReentrantLock可重入锁​@Overridetry {//加锁try {} else {break;​//解锁​​。

2024-07-09 17:54:12 283

原创 【死锁及案例】

System.out.println(this.girlName+"获得口红的锁");System.out.println(this.girlName+"获得镜子的锁");System.out.println(this.girlName+"获得镜子的锁");System.out.println(this.girlName+"获得口红的锁");//需要的资源只有一份,用static来保证只有一份。//化妆,互相持有对方的锁,需要拿到对方的资源。//一秒钟后想获得镜子。//一秒钟后想获得口红。

2024-07-09 16:39:47 324

原创 【线程同步-2】

​//不安全的买票//线程不安全,有负数​​​//票@Override//买票buy();//synchronized 同步方法,锁的是this//判断是否有票flag=false;return;//模拟延时try {//买票System.out.println(Thread.currentThread().getName()+"拿到第"+ticketNums--+"张票");

2024-07-09 15:44:39 758

原创 【线程同步-1】

​//不安全的取钱//两个人去银行取钱,账户//账户Account account = new Account(100,"基金");​Drawing you = new Drawing(account,50,"你");​​​//账户int money;//余额//卡名//银行;模拟取款//账户//取了多少钱//现在手里有多少钱​//取钱@Override//判断有没有钱。

2024-07-09 11:19:42 782

原创 【守护(daemon)线程】

/默认是false表示用户线程,正常的线程都是用户线程。System.out.println("你一生都开心的活着");//你 用户线程启动。System.out.println("上帝保佑着你");//上帝守护线程启动。

2024-07-09 09:16:40 286

原创 【线程优先级】

/先设置优先级,再启动。

2024-07-09 08:43:57 429

原创 【线程状态-2】

System.out.println(Thread.currentThread().getName()+"线程开始执行");System.out.println(Thread.currentThread().getName()+"线程停止执行");System.out.println("线程VIP来了"+i);System.out.println("主线程"+i);//只要线程不终止,就一直输出状态。//lambda表达式。//观察测试线程的状态。

2024-07-08 14:43:10 956

原创 【线程状态--1】

System.out.println(Thread.currentThread().getName()+"-->拿到了第"+tiketNums--+"张票");//获取系统当前时间。new Thread(ticket,"黄牛党").start();new Thread(ticket,"小明").start();//2、建议使用标志位--->设置一个标志位。

2024-07-08 11:14:31 601

原创 【Lambda表达式】

本期介绍了lambda表达式针对无参数和有参数两种情况的表达,并且介绍了lambda表达式的简化方法,包括去掉参数类型、圆括号、花括号,但是lambda表达式简化也有一些条件(见代码注释)。

2024-07-08 09:46:44 545

原创 【静态代理案例-婚庆公司】

System.out.println("老师要结婚了,超开心");System.out.println("结婚前,布置现场");System.out.println("结婚之后,收尾款");代理对象可以做很多真实对象做不了的事情。真实对象和代理对象要实现同一接口。真实对象专注做自己的事情。代理对象要代理真实角色。//代理角色,帮助你结婚。//真实角色,你去结婚。

2024-07-08 08:35:42 381

原创 【初识并发--两个案例】

System.out.println(Thread.currentThread().getName()+"-->拿到了第"+tiketNums--+"张票");System.out.println(Thread.currentThread().getName()+"-->跑了"+i+"步");if (Thread.currentThread().getName().equals("兔子")&&i%10==0){//判断比赛是否结束。//已经存在胜利者了。//判断是否有胜利者。//判断是否完成比赛。

2024-07-07 17:40:09 920

原创 【初始线程、进程、多线程】

/创建线程方式2:实现runnable接口,重写run方法,执行线程需要丢入runnable接口实现类,并调用start方法。System.out.println("我在学习多线程-----"+i);System.out.println("我在学习多线程-----"+i);System.out.println("我在看代码-----"+i);//创建线程方式1 继承Thread类,重写run方法,调用start开启线程。//总结:注意,线程开启不一定立即执行,由cpu调度执行。//main线程,主线程。

2024-07-07 14:44:31 347

原创 【多态、接口】

*多态注意事项:1、多态是方法的多态,属性没有多态2、父类和子类,有联系 类型转换异常!3、存在条件:继承关系,方法需要重写,父类引用指向子类对象 Person s2 = new Student();*/​​​//一个项目应该只存在一个main方法//类型间的转换 : 父 子//高 低//将这个对象转换为Student类型就可以使用Student类型的方法了s1.go();​/*1、父类引用指向子类对象。

2024-07-06 19:18:44 668

原创 【初识面向对象小结】

5、对象的创建和使用必须使用new关键字创造对象,构造器(快捷键:alt+insert) Person lxy = new Person();对象的属性 lxy.name对象的方法 lxy.sleep();

2024-07-06 10:43:59 131

原创 【稀疏数组介绍(头脑CPU发烧)】

/1、创建一个二维数组 11*11 其中 0代表没有棋子 1代表黑棋 2代表白棋。System.out.println("有效值的个数:"+sum);System.out.println("输出原始的数组:");System.out.println("稀疏数组:");System.out.println("还原:");//遍历二维数组,将非0的值放到稀疏数组中。//给其中的元素还原它的值。//转换为稀疏数组保存。//获取有效值的个数。//创建一个稀疏数组。

2024-07-05 11:43:02 663

原创 【Java冒泡排序】

/内层循环,比较判断两个数,如果第一个数比第二个数大,则交换位置。// 1、比较数组中两个相邻元素,若第一个数比第二个数大,则交换他们的位置。// 2、每一次比较都会产生一个最大或者最小的数字。//外层循环,判断要走多少次。// 3、下一轮则可以少一次排序。// 4、依次循环,直到结束!// 冒泡排序。

2024-07-05 11:30:53 242

原创 [初识Java数组]

​//变量类型 变量名 = 变量的值;//数组类型[] 数组名字 = new 数据类型[数组大小];int[] num1;//1、定义//2、创建一个数组:这里面可以存放10个int类型的数字//3、给数组中的元素赋值​//计算所有元素的和//获取数组的长度:array.lengthi++) {

2024-07-05 09:46:24 667

原创 Java方法一次看个够

int large = max(30,40); 若方法返回值是void,方法调用一定是语句 System.out.println("hello, heimashixiong"); 三、方法重载与重写package method;​public class Demo04 { public static void main(String[] args) { Demo04 demo04 = new Demo04(); demo04.test(1

2024-07-04 19:15:05 837

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除