自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面经分享,中科创达(安卓开发,二面挂)

首先是评价,公司属于是新成立的外资合资企业,主要是对德和对日。然后一面线上面试很简单,二面线下技术主管和HR一起面试,强度较大比较细腻,但是面试官很温和很耐心。6.第一次写代码,写了什么(一般是C语言)然后问了我怎么可视化C的程序(很无语)2.你觉得成为一个软件开发工程师需要什么能力和品质(还好,天花乱坠的编就是了)9.你的职业规划和考研,女朋友,家里情况(有点反感)最后评价一下,很看你的综合能力或者说准备语言能力。一面(因为是安卓开发,不对口,就只问了Java)7.问了前端vue的东西,语言,框架。

2025-03-30 15:12:58 324

原创 面经分享(中信互联网,大数据算法岗,挂)

总结八股文问的很少几乎不问,重点是你的项目里面是怎么一个具体流程,怎么实现的,然后就会问相关的知识点。如果没有真正熟悉一个项目很难扛得住拷打,然后两个面试官一个主问框架里面的内容,一个面试官主问学校里面的课程。会有助理在面试间排队,然后到你了通知你,两个面试官。值得吐槽的是,他们的流程很霸道,没有选择机会,岗位也是,我是前一天突然通知我第二天面试,岗位也是我不熟悉的。4.然后基于你回答的问题,问你spring的事务注解,Java高并发多线程。2.你的这个项目的功能有哪些,你觉得亮点是什么。

2025-03-30 14:42:20 228

原创 spring学习day1(了解spring全家桶)

那为什么要出现这个概念呢,是因为原本的业务逻辑层实现时,通过new对象调用数据层实现,但是这种情况下如果数据层实现发生变化,相应的业务逻辑层实现也要改变,对于整个项目来说就意味着重新部署重新遍历等,很麻烦。3.配置service与dao之间的关系,property表示配置当前bean的属性,name表示配置哪一个具体的属性,ref表示参照哪一个bean。3.创建spring配置文件,配置对应类作为spring管理的bean,bean标签,id起名字,class定义属性位置。

2025-03-30 14:21:47 402

原创 MySQL学习day5(事务原理,四大特性如何实现)

读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加锁。Undo log存储:undo log采用段的方式进行管理和记录,存放在前面介绍的 rolbacksegment 回滚段中,内部包含1024个undo log。Undo log销毁:undo log在事务执行时产生,事务提交时,并不会立即删除undolog,因为这些日志可能还用于MVCC。简单的select(不加锁)就是快照读,快照读,读取的是记录数据的可见版本,有可能是历史数据,不加锁,是非阻塞读。

2025-03-22 17:10:14 278

原创 MySQL学习day4(锁)

2.)元数据锁,MDL加锁过程是系统自动控制,无需显式使用,在访问一张表的时候会自动加上,MDL锁主要作用是维护表元数据的数据一致性,在表上有活动事务的时候,不可以对元数据进行写入操作。全局锁就是对整个数据库实例加锁,加锁后整个实例就处于只读状态,后续的DML的写和删除,已经更新操作的事务提交语句都将被阻塞,典型的使用场景是做全库的逻辑备份,对所有的表进行锁定,从而获取一致性视图,保证数据的完整性。InnoDB的数据是基于索引组织的,行锁是通过对索引上的索引项加锁来实现的,而不是对记录加的锁。

2025-03-22 16:19:07 636

原创 MySQL学习day3(索引)

Hash索引:底层数据结构是用哈希表实现的,只有精确匹配索引列的查询才有效,不支持范围查询(之前也讲过,和hashmap原理很像,用hash算法计算hash值,然后映射到对应位置,没有就存放,有形成链表)(只能用于对等比较,不支持范围查询,无法利用索引完成排序操作,查询效率高)B+树索引:最常见的索引类型,大部分引擎都支持B+树索引(和B树一样会向上裂变,但是所有数据都会出现在叶子节点,然后形成单向链表,MySQL里面增加指向相邻叶子节点的链表指针,双向链表)id不同,值越大,走。

2025-03-21 10:40:49 760

原创 MySQL学习day2(存储引擎)

如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多的更新、删除操作,那么InnoDB存储引擎是比较合适的选择。不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的存储引擎。MyISAM:如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择这个存储引擎是非常合适的。第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部分内置函数的执行。

2025-03-19 22:32:57 455

原创 MySQL学习day1(事务)

事务:是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤回请求,要么同时成功要么同时失败。幻读一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了幻影。原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。不可重复读 一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。

2025-03-19 22:31:48 308

原创 入门到入土,Java学习 day20(多线程下)

所谓的原子性是指在一次操作或者多次操作中,要么所有的操作全部都得到了执行并且不会受到任何因素的干扰而中断,要么所有的操作都不执行,多个操作是一个不可以分割的整体。只不过在修改共享数据的时候,会检查一下,别人有没有修改过这个数据。自定义线程池(有7个参数,核心线程数,线程池中最大线程的数量,空闲时间值,空闲时间单位,阻塞队列,创建线程的方式,拒绝解决方案)提交任务时,池子会创建新的线程对象,任务执行完毕,线程归还给池子下回再次提交任务时,不需要创建新的线程,直接复用已有的线程即可。

2025-03-16 19:03:11 503

原创 入门到入土,Java学习 day19(多线程上)

第一是直接run()代码执行完之后,线程死亡,变成垃圾;非守护线程先执行,执行完,守护线程就不用执行了(听着没有什么意义,但是举个例子就懂了比如说QQ聊天的时候,同时接收一个文件,聊天结束接收文件自然不会再继续,那么接收文件就是守护线程)虽然我们可以理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁,为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象Lock。举例t.join(),t表示上面的那个线程,插入当前线程,当前线程就是下面的线程。

2025-03-16 16:39:18 563

原创 入门到入土,Java学习 day18(泛型,集合进阶2)

如果已经重写hashcode方法,不同的对象只要属性值相同,计算出的哈希值就是一样的,在小部分情况下,不同的属性值或者不同的地址值计算出来的哈希值也有可能一样。使用场景:定义类,方法,接口的时候,如果类型不确定,就可以定义泛型,如果想类型不确定但是能知道是哪个继承体系中的,可以使用泛型的通配符。细节:不能写基本数据类型,指定泛型的具体类型后,传递数据,可以传入该类类型或者其子类类型,不小欸泛型类型默认是Object。泛型可以在很多地方进行定义,类后面泛型类,方法上面泛型方法,接口后面,泛型接口。

2025-03-15 15:58:19 521

原创 入门到入土,Java学习 day17(Lambda表达式,集合进阶)

3. 如果一个节点没有子节点或者父节点,则该节点相应的指针属性值为Nil,这些Nil视为叶节点,每个叶节点(Nil)是黑色的。List集合因为有索引,所以多了很多索引操作的方法。左旋,就是将根节点的右侧往左拉,原先的右子节点变成新的父节点,并把多余的左子节点出让,给已经降级的根节点当右子节点。右旋,就是将根节点的左侧往右拉,左子节点变成了新的父节点,并把多余的右子节点出让,给已经降级根节点当左子节点。链表中得节点是独立的对象,在内存中是不连续的,每个节点包含数据值和下一个节点的地址值,然后有一个头节点。

2025-03-14 16:30:06 1160

原创 入门到入土,Java学习 day16(算法1)

利用循环遍历来判断是否相等二分查找/折半查找前提条件:数组中的数据有序每次排除一般的查找范围用min,max,mid来处理,最大加最小除2,比较,然后得到在中间左边还是右边然后更新最大最小插值查找和二分查找差不多但是计算mid方式不同,前提是数组数据分布均匀斐波那契查找黄金比例又称黄金分割,是指事物各部分间一定的数学比例关系,即将整体一分为二,较大部分与较小部分之比等于整体与较大部分之比,其比值约为1:0.618或1.618:1。分块查找原则:前一块中的最大数据,小于后一块中所有的数据;

2025-03-11 23:21:44 825

原创 入门到入土,Java学习day15(常用API下)

public static Integer valueOf(String s, int radix)根据传递的字符串和进制创建一个Integer对象。工具类: Duration:时间间隔(秒,纳秒), Period:时间间隔(年,月,日), ChronoUnit:时间间隔。public static Integer valueOf(String s)根据传递的字符串创建一个Integer对象。public String[] matches(String regex)判断字符串是否满足正则表达式的规则。

2025-03-09 20:13:45 558

原创 入门到入土,Java学习day14 (常用API上)

public static BigInteger valueof(long val)静态方法获取BigInteger的对象,内部有优化,范围较小在long范围。被谁调用就看谁的equals,字符串中先判断是否为字符串,是比较内部属性,不是直接返回false,默认情况下比较地址值,也可以重写。public static void arraycopy(数组源数组,起始索引,目的地数组,起始索引,拷贝个数)数组拷贝。public static int max(int a,int b)获取两个int值中的较大值。

2025-03-09 13:08:09 536

原创 入门到入土,Java学习day13(内部类)

从main方法入口开始运行代码的时候,会先在方法区加载class文件,然后执行创建内部类对象调用的语句,这个时候,会在方法区分别加载外部类和内部类的所有成员变量和成员方法,然后在栈中加载,重点是堆。直接创建,外部类名.内部类名 对象名 = new.外部类对象 new.内部类对象。写在成员位置的,属于外部类的成员,可以被修饰符修饰,JDK16之前不能定义静态变量,JDK16开始才可以定义静态变量。在一个类的里面,再定义一个类,内部类表示的事物是外部类的一部分,内部类单独出现没有任何意义。

2025-03-05 19:56:26 287

原创 入门到入土,Java学习day12(抽象类,接口)

允许定义默认方法,需要使用关键字default,修饰用来解决接口升级的问题,接口中默认方法。接口代表规则,是行为的抽象。如果实现了多个接口,多个接口中存在相同名字的默认方法,子类就必须对该方法进行重写。当一个方法的参数是接口时,可以传递接口所有实现类的对象,这种方式称之为接口多态。当一个接口中抽象方法过多,但是我只要使用其中一部分的时候,就可以适配器设计模式。实现关系,可以单实现,也可以多实现,还可以在继承一个类的同时实现多个接口。成员方法,只能是抽象方法,默认修饰符:public abstract。

2025-03-05 18:38:14 639

原创 入门到入土,Java学习day11(面向对象进阶,多态,包,final,权限修饰符,代码块)

不能使用子类的特有功能(通过强制类型转换,从而调用子类独有功能,转换类型与真是对象类型不一致会报错,转换的时候用instanceof关键字进行判断)变量调用:编译看左边,运行也看左边,编译代码的时候先看左边父类中有没有这个变量,有编译成功,没有失败。定义方法的时候,使用父类型作为参数,可以接受所有子类对象,体现多态的扩展性与便利性。构造代码块:写在成员位置的代码块,可以把多个构造方法中重复的代码抽取出来,在创建本类对象时会先执行构造代码块再执行构造方法。可以修饰成员变量,方法,构造方法,内部类。

2025-03-03 22:47:25 464

原创 从入门到入土,Java学习day10(面向对象进阶,继承)

成员方法需要了解虚方发表,为了解决继承调用方法的问题,从顶层开始将非private,非static,非final得方法放到表里,方便调用。就近原则,需要方法的重写,当父类的方法不能满足子类现在的需求时,将对应的方法重写。这里有一个私有的成员变量,是可以继承的,因为继承不是调用,子类也拥有这个成员变量。子类在初始化的时候,有可能会使用到父类中的数据,如果父类没有完成初始化,子类将无法使用父类的数据。就近原则:谁近就用谁,先在局部位置找,本类成员位置找,父类成员位置找,逐级往上。this,super使用总结。

2025-03-02 22:47:20 355

原创 从入门到入土,Java学习day9(面向对象static)

工具类:帮助我们做一些事情的,但是不描述任何事物的类。定义数组工具类,用于返回整数数组的内容(整数,一组),用于返回平均分(浮点数,一组),一个测试类调用工具类并返回结果。被static修饰的成员变量,叫做静态变量,静态变量是随着类的加载而加载的,优先于对象出现。非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和非静态的成员方法。测试类:用来检查其他类是否书写正确,带有main方法,程序的入口。表示静态,是Java中的一个修饰符,可以修饰成员方法,成员变量。类名调用,对象名调用。

2025-03-01 22:17:54 159

原创 从入门到入土,Java学习day8(集合,学生管理系统实现)

看需求,具体需求我就不赘述直接上代码,这个代码可以自己先梳理一下思路,然后分部分来实现,可以模仿跟着写,但最后要独立实现一下,改一改bug提升很大。2.添加数字遍历,代码是一样的,因为JDK5之后基本数据类型和包装类可以相互转化。E set(int index,E e)修改指定索引下的元素,返回原来的元素。boolean remove(E e)删除指定元素,返回值表示是否删除成功。E remove(int index)删除指定索引的元素,返回被删除元素。它很重要,因为可以自动扩容,操作起来非常方便。

2025-02-28 17:51:30 580

原创 从入门到入土,java学习day7(字符串)

有变量时,JDK8之前会使用StringBuilder,会在内存中new StringBuilder然后拼接之后再toString产生新字符串,每次想加会在堆内存中创建两个对象。public StringJoiner(间隔符号,开始符号,结束符号)创建一个对象,指定拼接时的间隔符号,开始符号,结束符。public StringBuilder(String str)根据字符串的内容,来创建可变字符串对象。等号右边没有变量时,都是字符串,触发字符串的优化机制,在编译的时候就已经是最终的结果了。

2025-02-28 00:00:53 1222

原创 从入门到入土,java学习day6(面向对象和练习,今天练习偏复杂有些难度)

对象代表什么,就封装对应的数据,并提供数据对应的行为(会比较哲理)我举一个例子你就知道我为什么这么说,你关上门,好这是一个事件,那么门关上是应该封装到人还是门,很多人惯性思维觉得是人关上的门,其实不是。因为重点就是对应的对象,你要这么想,人只是给了门一个力,然后门关上的,所以应给封装到门。注意:从JDK8开始,取消方法区,新增元空间,把原来方法区的功能进行拆分,有的功能放到堆中有的功能放到了元空间。引用数据类型,数据值是存储在其他空间中,自己空间中存储的是地址值,赋值给其他变量,赋的地址值。

2025-02-27 00:11:47 845

原创 入门到入土,java学习day5(练习巩固前面所学,二维数组)

1.开发验证码,定义方法实现随机产生一个5位验证码,长度5,前四位是大写字母或者小写字母,最后一位是数字首先看要求,是随机生成,5位,前四位大小写字母,最后一位数字随机生成我们只知道是一个随机的数,并不知道怎么生成字母,所以怎么用过数字得到字母,就是将数字当作索引在数组中得到字母,那数组怎么定义,这里就要用到ASCII码表来将大小写字母放进去。细节问题就是,大写字母直接从97+i开始,但是小写字母判定条件是要i>25才进入语句,所以要从65开始,就要再减去26.其实就是数组和随机数,键盘输入的应用。

2025-02-25 23:16:57 826

原创 入门到入土,java学习day4(数组,方法)

数组指的是一种容器,可以用来存储同种数据类型的多个值定义,如何创建一个数组1.数据类型[] 数组名2.数据类型 数组名[]初始化:在内存中,为数组容器开辟空间,并将数据存入容器中的过程静态初始化1.类型[] 变量名 = new 类型[]{元素1,元素2...}2.类型[] 变量名 = {元素1,元素2...}动态初始化类型[] 变量名 = new 类型[长度]表示数组在内存中的位置,实际的值存储在一个地址中打印出来的乱码,看似是乱码其实有含义[:表示是一个数组。

2025-02-25 00:06:15 383 1

原创 入门到入土,java学习day3

通过一些语句,控制程序的执行流程。

2025-02-23 23:51:07 738 1

原创 入门到入土,java学习day2

今天就是一些概念和基本知识。

2025-02-22 22:28:07 732 1

原创 入门到入土,Java学习Day1(偏向于口语化讲述通俗易懂)

我们首先来认识java,定义是面向对象编程语言,Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等;同时Java编程语言是所有编程语言里面比较简单的,他比C、C++和其他语言使用起来要简单。Java能做的事情很多,涉及到编程领域的各个方面,从电子商务网站到Android应用,从科学应用到金融应用,从游戏到桌面应用等等。

2025-02-21 22:38:24 504 3

空空如也

空空如也

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

TA关注的人

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