- 博客(90)
- 收藏
- 关注
原创 2021阿里淘系技术部java工程师笔试
前两天参加了阿里淘系技术部Java工程师的笔试,于是把题目顺便整理出来,之前有私信让我找点编程题,这不来了,来试试,限时一个小时,语言不限时间限制:C/C++ 1秒,其他语言两秒空间限制:C/C++ 65536k,其他语言 131072k64bit IO Format: %IId一、牛牛的二叉树题目描述牛牛有一棵n个结点的二叉树,其编号从1~n,每个节点都有一个权值Vi。一棵树被称为对称的,要满足交换所有左右子树,与原先的树相等,树相等即结构相等以及对应节点的权值相等。第一棵树是对称的,第二
2021-03-29 16:46:19
1671
9
原创 安卓开发--Eclipse搭建开发环境
好久没更新了,因为要准备考研,所以有些技术文章可能就没法如期更新,但是有空还是会做一些小练习供大家一起学习,希望多多批评指正。今天要做的是安卓开发环境的搭建,因为开学学校有课,索性就把我搭建环境出现的问题写出来,给大家避坑。搭建环境之前请先确保您有一定的Java基础知识,不管选择那种搭建方式,请先确定您所需要的JDK版本,一定要和你的eclipse一致,否则就会出现软件打不开等情况。一、 傻瓜式安装(32位)顾名思义,就是已经把SDK、JDK,adt,eclipse都给你,你只需要配置32位的J
2021-02-23 10:56:32
3293
16
原创 MySQL(面试+原理)(3)--MySQL是如何加行锁的?
RR隔离级别下的加锁机制RC隔离级别下的加锁机制间隙锁时为了解决幻读问题,在RC允许出现幻读现象所以RC隔离级别下行锁都加的是记录锁。只有在外键约束检查(foreign-key constraint checking)以及唯一键检查(duplicate-keychecking)时会使用间隙锁封锁区间 。sakila数据库简介Sakila示例数据库的开发始于2005年初。最初由MySQL AB文档团队的前成员Mike Hillyer开发,旨在提供一种标准模式,可用于书籍,教程,文章等示例。Saki
2021-01-14 10:01:07
605
1
原创 MySQL(面试+原理)(3)--MySQL是如何实现事务的?
1.原子性,持久性和一致性原子性,持久性和一致性主要是通过redo log、undo log、Force Log at Commit和DoubleWrite机制来完成的。redo log用于在崩溃时恢复数据undo log用于对事务回滚时进行撤销,也会用于隔离性的多版本控制。Force Log at Commit机制保证事务提交后redo log日志都已经持久化。Double Write机制用来提高数据库的可靠性,用来解决脏页落盘时部分写失效问题。2.InnoDB事务整体流程分析3.使用
2021-01-08 11:13:43
1588
1
原创 MySQL(面试+原理)(2)--MySQL是如何查询一条语句的
MySQL是如何查询一条语句的1.执行流程介绍我们使用MySQL示例数据库sakila,待分析SQL语句如下mysql> select customer_id,first_name,last_name from customer wherecustomer_id=14;上面给出的是 MySQL 的查询流程示意图,从中你可以清楚地看到 SQL 语句在 MySQL 的各个功能模块中的执行过程。大体来说,MySQL 可以分为 Server 层和存储引擎层两部分Server 层:所有跨存
2021-01-06 10:55:38
303
1
原创 MySQL(面试+原理)(1)--MySQL是如何存储数据的
MySQL是如何存储数据的1.MySQL的整体架构介绍2.MySQL的磁盘文件介绍MySQL在Linux中的数据索引文件和日志文件一般默认都在/var/lib/mysql目录下。2.1日志文件错误日志(errorlog)默认的错误日志名称:hostname.err二进制日志(bin log)默认是关闭的通用查询日志默认情况下通用查询日志是关闭的,不建议开启慢查询日志(slow query log)重做日志文件(redolog)回滚日志(undo
2021-01-04 11:54:17
410
1
原创 学习Java必不可少的环节---JVM解析(1.4-JIT编译器优化)
文章目录1.公共子表达式的消除2.方法内联3.逃逸分析4.对象的栈上内存分配5.标量替换6.同步锁消除1.公共子表达式的消除公共子表达式消除是一个普遍应用于各种编译器的经典优化技术,他的含义是:如果一个表达式E已经计算过了,并且从先前的计算到现在E中所有变量的值都没有发生变化,那么E的这次出现就成为了公共子表达式。对于这种表达式,没有必要花时间再对他进行计算,只需要直接用前面计算过的表达式结果代替E就可以了。如果这种优化仅限于程序的基本块内,便称为局部公共子表达式消除(LocalCommon Su
2020-12-29 10:19:54
199
1
原创 计算机网络框架大纲(脑图可自提)--3.数据链路层
一、数据链路层使用的信道点对点信道广播信道二、使用点对点信道的数据链路层1.数据链路和帧链路是一条无源的点到点的物理线路段,中间没有任何其他的交换结点数据链路除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路也有人采用另外的术语。这就是把链路分为物理链路和逻辑链路物理链路就是上面说的链路逻辑链路就是上面的数据链路,是物理链路加上必要的通信协议早期的数据通信协议曾叫做通信规程数据链路层传送的是帧数据链路层像
2020-11-07 19:30:08
345
4
原创 计算机网络框架大纲(脑图可自提)----2.物理层
2.1物理层的基本概念物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体用于物理层的协议也常称之为规程物理层的特性:机械特性、电气特性、功能特性、过程特性数据在计算机内部多采用并行传输方式。但数据在通信线路(传输媒体)上的传输方式一般都是串行传输(经济考虑)2.2数据通信的基本知识2.2.1数据通信系统的模型数据通信系统:源系统、传输系统、目的系统源系统:源点、发送器目的系统:接收器,终点通信的目的是传送消息。数据是运送消息的实体。信号则
2020-10-27 16:18:13
299
2
原创 计算机网络框架大纲(脑图可自提)----1.概述
1.1计算机网络在信息时代的中的作用三大熟知的网络:电信网络、有线电视网络、计算机网络互联网的两个基本特点:连通性和共享1.2互联网的概述网络的网络计算机网络由若干结点和连接这些节点的链路组成网络把许多计算机连接在一起,而互连网则把许多网络通过路由器连接在一起,与网络相连的计算机常称为主机互联网基础发展的三个阶段第一阶段是从单个网络ARPANET向互联网发展的过程。互联网采用TCP/IP协议族作为通信规则,其前身是美国的ARPANET第二阶段的特点是建成了三级结构的互联网第三阶段
2020-10-18 17:00:29
2458
6
原创 学习java必不可少的环节---JVM解析(1.3)
Java即时编译器的问题为何JVM需要使用解释器和编译器并存的架构?JVM为什么要实现两个不同的编译器?程序何时会使用解释器执行?何时会使用编译器执行?哪些程序代码会被编译成为本地代码?如何编译?Java代码的执行效率就一定比C,C++静态执行的执行差?Java代码解析执行有和何优势?1.为什么HotSpot虚拟机要使用解释器与编译器并存的架构? 尽管并不是所有的Java虚拟机都采用 解释器与编译器并存的架构,但许多主流的商用虚拟机(eg:HotSpot),都同时包含解释器和编译器
2020-10-15 16:31:58
285
1
原创 学习java必不可少的环节---JVM解析(1.2)
JVM架构理解就用一张图片表示吧解析器和JIT即时编译器 在部分商用虚拟机中(eg:HotSpot),Java程序最初是通过解释器(Interpreter)进行解释执行的, 当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”。为了提高热点代 码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各种层次的 优化,完成这个任务的编译器称为“即时编译器”由于Java虚拟机规范并没有具体的约束规则去限制即时编译
2020-10-14 21:49:52
340
1
原创 学习java必不可少的环节---JVM解析(1)
一、JVM基本常识1.程序的执行方式主要为以下三种:静态编译执行、动态编译执行、动态解释执行2.为什么使用JVM#mermaid-svg-XZzWD94TxA6AA1As .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-XZzWD94TxA6AA1As .label text{fill:#333}#m
2020-10-13 16:42:26
1256
11
原创 IDEA再部署Tomcat项目报错处理(The origin server did not find a current representation for the target resou...)
在网上找了好多,都没解决,索性自己摸索,以下为我的解决办法:一定选择第一个,在里面找到以前部署过的项目model的名称,添加即可。千万不要选第二个,虽然里面也有部署过的项目,但是运行起来一定会报错over...
2020-07-21 09:39:28
2987
4
原创 ECS服务器--购买、配置、建站,一篇图文搞定
疫情期间,在家除了学Java还是学Java,无意中留意到阿里云推出了学生免费服务器,嘿,这下抓住机会,赶紧整一个。在搭建和购买过程中遇到了很多坑,在这里顺便整理出来。购买服务器如果是学生的话,一键搞定,稍微费神的只是选择镜像,在这里附上阿里云学生ESC服务器免费领取连接阿里云ESC学生服务器温情提示,每天早上8点开抢手慢则无进去后可以看到还是很良心的,2核4G,对于学生来说完全可以,在领服务器之前需要进行简单答题,不过很简单的,不用慌。抢到的话,根据步骤走注意第一个坑,我在填写的时候发现有很多
2020-07-03 13:45:44
1464
1
原创 22--转换流&高效流相关习题
题目目录练习一:高效字节输出流写出字节数据练习二:高效字节输出流写出字节数组数据练习三:高效流文件复制练习四:高效字符流和集合的综合使用练习五:转换输出流的使用练习六:转换输入流的使用练习七:对象的序列化练习八:对象的反序列化练习九:字节打印流的使用练习十:对象的序列化,对象输出流的使用练习一:高效字节输出流写出字节数据利用高效字节输出流往C盘下的d.txt文件输出一个字节数。创建字节输出流对象关联文件路径利用字节输出流对象创建高效字节输出流对象调用高效字节输出流对象的write方法写出一个
2020-06-29 08:43:32
774
1
原创 21--字符流相关习题
练习一:字符输出流写出字符数据请用户从控制台输入信息,程序将信息存储到文件Info.txt中。可以输入多条信息,每条信息存储一行。当用户输入:”886”时,程序结束。操作步骤:创建MainAPP类,并包含main()方法按照上述要求实现程序代码:public class Test01_07 { public static void main(String[]args) throws IOException { //1. 指定输出流, 对应的文件Info.txt
2020-06-26 08:24:06
840
1
原创 20--字节流相关习题
练习一:字节输出流写出字节数据利用字节输出流一次写一个字节的方式,向D盘的a.txt文件输出字符‘a’。操作步骤:创建字节输出流FileOutputStream对象并指定文件路径。调用字节输出流的write(int byte)方法写出数据代码:public class Test01_01 {public static void main(String[] args) throws IOException { // 1.创建字节输出流FileOutputStream对象并指
2020-06-25 13:30:59
677
1
原创 19--File类&递归相关习题
练习一:相对路径和绝对路径的使用描述:创建两个文件对象,分别使用相对路径和绝对路径创建。答案:操作步骤: 绝对路径创建文件对象:使用File类一个参数的构造方法。 相对路径创建文件对象:使用File类两个参数的构造方法。代码:public class Test01_01 {public static void main(String[] args) {// 创建文件对象:绝对路径 File f1 = new File("d:/aaa/a.txt");
2020-06-23 08:38:43
1110
1
原创 18--Map集合相关习题
练习一:Map接口的特点请简述Map的特点Map每个元素由键与值两部分构成Map键不能重复,每个键对应一个值键和值可以为null练习二:Entry键值对对象说出Entry键值对对象遍历Map集合的原理 Map中存放的是两种对象,一种称为key(键),一种称为value(值), 它们在在Map中是一一对应关系,这一对对象又称做Map 中的一个Entry(项)。 Entry将键值对的对应关系封装成了对象。即键值对对象,这样我们在遍历Map集合时, 就可以从每一个键值对(Entr
2020-06-22 10:39:39
533
1
原创 17--List集合&Set集合相关十三道习题
练习一:List接口的特点请简述List接口的特点。 它是一个元素存取有序的集合。例如,存元素的顺序是11、22、33。那么集合中,元素的存储就是按照11、22、33的顺序完成的)。 它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是一个道理)。 集合中可以有重复的元素,通过元素的equals方法,来比较是否为重复的元素。练习二:hashCode和equals方法请简述HashSet去除重复元素的原理。 调用被添加元素的hashCode(),和HashS
2020-06-21 09:39:47
1205
1
原创 16--Collection集合&泛型
练习一:集合框架请简述框架 集合按照其存储结构可以分为两大类,分别是 单列集合java.util.Collection和双列集合java.util.Map。 Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素, 它有两个重要的子接口,分别是java.util.List和java.util.Set。其中,List的 特点是元素有序、元素可重复。Set的特点是元素无序,而且不可重复。 List接口的主要实现类有java.util.ArrayList和java.u
2020-06-20 10:32:58
317
1
原创 15--Object类相关习题
第一题:Object类equals方法简述String类中的equals方法与Object类中的equals方法的不同点。 String类中的equals方法是用来判断两个对象的内容是否相同, 而Object 类中的equals方法是用来判断两个对象是否是同一个 对象,所谓同一个对象指的是内存中的同一块存储空间。第二题:Object类的toString方法不运行代码,直接说出打印结果,并解释原因。public class ToStringTest{ static int
2020-06-19 09:09:32
488
1
原创 14--ArrayList相关习题
第一题键盘录入学生信息,保存到集合中。 循环录入的方式,1:表示继续录入,0:表示结束录入。 定义学生类,属性为姓名,年龄,使用学生对象保存录入数据。 使用ArrayList集合,保存学生对象,录入结束后,遍历集合。代码实现,效果如图所示:参考答案:public class Test1 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in);
2020-06-18 15:26:16
995
1
原创 13--Math类&Random相关习题
第一题模拟简单计算器,可以运算+,—,*,/,%。 接收三个参数,一个整数,一个运算符,另一个整数。 计算出运算结果。 无法运算时,返回null。代码实现,效果如图所示:参考答案:public class Test1 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int a = scanner.nextInt();
2020-06-17 10:12:29
2040
1
原创 12--String类相关习题总结
第一题反转键盘录入的字符串。(其实在StringBuilder中有reverse方法可以实现字符串反转)代码实现,效果如图所示:开发提示:使用字符数组保存原始字符,利用Random类生成随机索引。参考答案:public class Test1 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String next =
2020-06-16 09:46:20
757
3
原创 11--内部类
第一题定义HandleAble接口,具备一个处理字符串数字的抽象方法方法HandleString(String num)。 处理方式1:取整数部分。 处理方式2:保留指定位小数,四舍五入。代码实现,效果如图所示:开发提示:匿名内部类的方式,调用所有抽象方法。参考答案:public class Test1 { public static void main(String[] args) { String str = "23.2345
2020-06-15 13:32:34
603
1
原创 10--接口&多态
第一题什么是接口,如何定义接口? 接口,是Java语言中一种引用类型,是方法的集合。 使用interface关键定义接口,其中可以定义抽象方法,默认方法,私有方法,静态方法等方法。什么叫做多态,条件是什么? 一类事物的行为,具有多种表现形式。 条件: 继承或者实现【二选一】 方法的重写。 父类引用指向子类对象。使用多态特性,带来了什么样的好处?增强方法的扩展性和复用性。使用多态特性,注意什么样的弊端?由于类型的提升,导致调用子类对象特有的方法,必须向下转
2020-06-14 18:56:22
452
3
原创 09--继承类&抽象类
第一题什么叫做类与类的继承,作用是什么? 就是子类继承父类的属性和行为,使得子类对象具有与父类相同的属性、相同的行为。 作用是子类复用父类内容。继承后,父类与子类之间,各成员有什么样的影响? 成员变量: 不重名,没有影响。 重名,就近使用,使用super区分父类变量。 构造方法: 无影响,但是子类构造方法默认调用父类构造方法 成员方法: 不重名,没有影响。 重名,子类重写父类方法。子类中,如何调用父类的成员?如何使用本类的成员? 父类
2020-06-13 19:45:28
587
1
原创 08--方法重载
第一题语法点:方法定义,方法重载按步骤编写代码,效果如图所示编写步骤:定义类 Test1,类中定义 main方法,定义int类型a为10, b为10.定义printNum方法,参数为(int iVar, int iVar2),返回值无,输出iVar和iVar2的值定义doubling方法,参数为(int r, int p),返回值无,方法内r翻倍,p翻倍,并调用printNum方法,输出r和p的值定义doubling方法,参数为(int r),返回值int, 方法内r翻倍,返回r
2020-06-11 19:53:34
697
1
原创 07--描述类
第一题1一个类与它的对象之间是什么关系?类是对象的模板,对象是类的实体2.如何定义一个类,由哪些部分组成,各个部分的作用是什么?三部分: 成员变量:描述事物的状态信息 构造方法:创建事物对象 成员方法:描述事物能做什么如何创建一个对象,如何使用该对象?创建对象格式: 数据类型 变量名 = new 数据类型对象使用方式: 变量名.成员变量 变量名.成员方法局部变量和成员变量的区别?在类中的位置不同 成员变量:类中,方法外
2020-06-07 10:08:52
669
1
原创 06--数组
第一题模拟大乐透号码一组大乐透号码由10个1-99之间的数字组成定义方法,打印大乐透信息代码实现,效果如图所示public class Test1 { public static void main(String[] args) { int[] arr = {10,20,30,40,50, 60,66,70,80,99}; printNum(arr); } public static void printNum(int[
2020-05-31 18:54:00
431
2
原创 05---循环结构
第一题按步骤编写代码,效果如图所示:编写步骤:1.定义类 Test12.定义 main方法3.定义变量i为0,i2为104.使用第一个while循环,当条件为i小于5 时,则进入循环5.循环内,i自增,i2自增6.循环内,使用if判断,当i大于等于 2 并且i2小于15 时,同时输出i和i2的值7.使用第二个while循环,当条件为i2小于20 时,则进入循环8.循环内,i自增,i2自增9.循环内,使用if判断,当i大于8 或者i2小于等于18 时,同时输出i和i2的值参考答案:
2020-05-14 09:08:17
910
1
原创 04--常量&变量
第一题按步骤编写代码,效果如图所示:编写步骤:1.定义类 Test12.定义 main方法3.控制台输出5行字符串类型常量值4.控制台输出5行字符类型常量值参考答案:public class Test1 { public static void main(String[] args) { // 控制台输出任意5行字符串类型常量值 System.out.println("善学如春起之苗"); System.out.println("不
2020-05-13 19:22:00
422
1
原创 03--方法入门
第一题按步骤编写代码,效果如图所示:编写步骤:定义类Test1定义main方法定义方法printNum,在main方法中调用printNum方法printNum方法中,定义int变量a赋值为9,b也赋值为9printNum方法中,定义int变量num赋值为++a.printNum方法中,定义boolean变量bo,使用三元运算符赋值,当num>=10,赋值为true,否则为false,打印bo的值printNum方法中,定义int变量num2赋值为b++.printNum方法中
2020-05-11 10:58:05
703
1
原创 02--运算符习题
第一题按步骤编写代码,效果如图所示:编写步骤:定义类Test1定义main方法定义两个int类型变量a1和a2,分别赋值10,11,判断变量是否为偶数拼接输出结果参考答案:public class Test1 { public static void main(String[] args) { // 定义两个int类型变量a1和a2,分别赋值10,11,判断变量是否为偶数,拼接输出结果 int a1 = 10; int a2 = 11
2020-05-10 15:32:35
801
1
原创 非网上50道经典习题照搬01--数据类型转换
引言网上的习题查了那么久也总是那一个50道习题整理,没有什么新的,所以就把自己平常练习的题目整理出来供大家互相学习交流已经好久没写博客了,一直忙着学习JavaWeb和框架,这两天又开始学习java开发区块链,后续的技术也会相应分享出来,优快云也从来不缺技术大佬,我也只是写写,供大家看看,我自己也巩固知识,至于什么收费,咱也不敢想,写博客也就是想拥有一个技术交流的方式,我才大二,在学习过程中一路坎坷,也就是希望同样的小白看了博客之后有个自己的认识。数据类型转换第一题按步骤编写代码,效果如图所示:
2020-05-10 15:23:10
813
1
原创 47Java线程----线程池图文+代码全解
我们使用线程的时候就会去创建一个线程,这样实现起来非常简便,但是就会有一个问题:如果并发的线程数量很多,并且每个线程都是一个执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。这时就需要线程池来解决这些问题1.线程池概念线程池:其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消...
2020-03-02 17:00:15
211
1
原创 46JAVA线程---等待唤醒机制
1.线程间的通信概念:多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同。比如:线程A是用来生成包子的,线程B是用来吃包子的,包子可以理解为同一资源,线程A与线程B处理的动作,一个是生产,一个是消费,那么线程A和线程B之间就存在线程通信问题为什么要处理线程间通信:多个线程并发执行时,在默认情况下CPU是随机切换线程的,我们需要多个线程来共同完成一件任务,并且我们希望他们右规律...
2020-02-26 17:51:03
263
1
原创 45一篇图文+代码搞定JAVA线程状态
线程状态当线程被创建并启动以后,它既不是一启动了就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,有六种线程状态线程状态导致状态发生条件NEW(新建)线程刚被创建,但是并未启动。还没调用start方法Runnable(可运行)线程可以在java虚拟机中运行的状态,可能正在运行自己代码,也可能没有,这取决于操作系统器Blocked(锁阻塞)...
2020-01-29 17:38:54
176
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅