
java
莫非的Java
这个作者很懒,什么都没留下…
展开
-
Java 面试代码
回文数(leetcode9)判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。(不能将整数转为字符串)解题思路: 取出后半段数字进行翻转。由于回文数的位数可奇可偶,所以当它的长度是偶数时,它对折过来应该是相等的;当它的长度是奇数时,那么它对折过来后,有一个的长度需要去掉一位数(除以 10 并取整)。具体做法如下:每次进行取余操作 ( %10),取出最低的数字:y = x % 10;将最低的数字加到取出数的末尾:revertNum = revertNum *原创 2020-10-19 11:22:39 · 979 阅读 · 1 评论 -
Integer与int
Integer 类和 int 的区别Integer 是 int 的包装类,默认值为null,int 是八大基本数据类型之一(byte,char,short,int,long,float,double,boolean),默认值为0;Integer 表示的是对象,用一个引用指向这个对象,而int是基本数据类型,直接存储数值。关于Integer的比较问题:Integer与new Integer()不相等,因为内存地址不一样,使用 == 比较都为false。两个都是非new出来的Integer,使用原创 2020-10-15 11:51:46 · 347 阅读 · 0 评论 -
Java项目问题
项目概述:利用SpringBoot+MySQL/ Redis+ thymeleaf/Vue.js+ Restful架构完成购物商城的基本功能:商品的分类查询和属性设置+订单状态流转;CRUD后台各种功能(Mybatis/JPA规范)、事务的使用;使用Redis对数据进行缓存处理、缓存和数据库的一致性问题、缓存雪崩和缓存穿透问题解决⽅案;Restful架构实现前后端分离。开发流程:表结构的设计用户相关:用户表、评价表;产品相关:分类表、属性表、产品表;订单相关:订单表、订单单项表。原创 2020-10-05 22:08:45 · 666 阅读 · 1 评论 -
操作系统
1. 什么是操作系统操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的程序,是计算机系统的内核与基⽯;操作系统本质上是运⾏在计算机上的软件程序 ;操作系统为⽤户提供⼀个与系统交互的操作界⾯ ;操作系统分内核与外壳(可以把外壳理解成围绕着内核的应⽤程序,⽽内核就是能操作硬件的程序,内核负责管理系统的进程、内存、设备驱动程序、⽂件和⽹络系统等等,决定着系统的性能和稳定性,是连接应⽤程序和硬件的桥梁)。2. 系统调⽤根据进程访问资源的特点,可以把进程在系统上的运⾏原创 2020-09-28 11:17:18 · 637 阅读 · 0 评论 -
计算机⽹络
本文从JavaGuide面试突击版整理得到,侵删。1. OSI与TCP/IP各层的结构与功能,都有哪些协议?计算机网络体系结构:(a)OSI七层协议;(b)TCP/IP四层协议;(c)五层协议(中和 OSI 和 TCP/IP 的优点)。应⽤层应⽤层(application-layer)的任务是通过应⽤进程间的交互来完成特定⽹络应⽤。应⽤层协议定义的是应⽤进程间的通信和交互的规则。对于不同的⽹络应⽤需要不同的应⽤层协议。在互联⽹中应⽤层协议很多,如域名系统DNS,⽀持万维⽹应⽤的 HTTP协议原创 2020-09-28 00:29:17 · 602 阅读 · 0 评论 -
Java基础知识
本文从JavaGuide面试突击版整理得到,侵删。1. ⾯向对象和⾯向过程的区别⾯向过程 :⾯向过程性能⽐⾯向对象⾼。 因为类调⽤时需要实例化,开销⽐较⼤,⽐较消耗资源,所以当性能是最重要的考量因素的时候,⽐如单⽚机、嵌⼊式开发、Linux/Unix 等⼀般采⽤⾯向过程开发。但是,⾯向过程没有⾯向对象易维护、易复⽤、易扩展。⾯向对象 :⾯向对象易维护、易复⽤、易扩展。 因为⾯向对象有封装、继承、多态性的特性,所以可以设计出低耦合的系统,使系统更加灵活、更加易于维护。但是,⾯向对象性能⽐⾯向过程低。原创 2020-09-24 21:52:07 · 708 阅读 · 0 评论 -
Spring、SpringMVC、SpringBoot
1. 什么是 Spring 框架?Spring 是⼀种轻量级开发框架,旨在提⾼开发⼈员的开发效率以及系统的可维护性,它是很多模块的集合,使⽤这些模块可以很⽅便地协助我们进⾏开发。这些模块是:核⼼容器、数据访问/集成,、Web、AOP(⾯向切⾯编程)、⼯具、消息和测试模块。名词解释:IOC 反转控制 是Spring的基础,Inversion Of Control简单说就是创建对象由以前的程序员自己new 构造方法来调用,变成了交由Spring创建对象DI 依赖注入 Dependency Inject原创 2020-08-19 22:43:23 · 473 阅读 · 0 评论 -
Redis基础知识
本文是来自JavaGuide面试突击版Redis部分的整理,只涉及Redis作为缓存时的相应知识点,因为其他的分布式内容我项目里面没有涉及-_-||。1. redis 简介简单来说 redis 就是⼀个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度⾮常快,因此 redis 被⼴泛应⽤于缓存⽅向。redis 提供了多种数据类型来⽀持不同的业务场景。问:为什么要⽤ redis/为什么要⽤缓存?主要从“⾼性能”和“⾼并发”这两点来看待这个问题。⾼性能:假如⽤户第⼀次访原创 2020-08-15 23:22:35 · 574 阅读 · 0 评论 -
MySQL基础知识总结
1. 什么是MySQL?MySQL 是⼀种关系型数据库,在Java企业级开发中⾮常常⽤,因为 MySQL 是开源免费的,并且⽅便扩展。阿⾥巴巴数据库系统也⼤量⽤到了 MySQL,因此它的稳定性是有保障的。MySQL是开放源代码的,因此任何⼈都可以在 GPL(General Public License) 的许可下下载并根据个性化的需要对其进⾏修改。MySQL的默认端⼝号是3306...原创 2020-08-14 18:40:14 · 968 阅读 · 0 评论 -
JVM基础知识
1. 介绍下 Java 内存区域(运⾏时数据区)Java 虚拟机在执⾏ Java 程序的过程中会把它管理的内存划分成若⼲个不同的数据区域。(JDK. 1.8 和之前的版本略有不同,下⾯会介绍到。)JDK 1.8之前:JDK 1.8 :...原创 2020-08-11 21:53:27 · 640 阅读 · 0 评论 -
单例模式 代码+线程安全性解析
单例模式是什么?单例模式又叫做 Singleton模式,指的是一个类,在一个JVM里,只有一个实例存在,并提供一个访问它的全局访问点。为什么需要单例模式?有的类的实例对象创建和销毁对资源来说消耗不大(例如String),而有的类型比较庞大和复杂,如果频繁的创建和销毁对象并且这些对象是可以复用的,那将造成一些不必要的性能浪费。例:比如要写一个访问数据库的demo,创建数据库链接的对象就是一个耗资源的操作,并且数据库链接完全是可以复用的。那么就可以将这个对象设计为单例,这样只需要创建一次并重复使用。实原创 2020-08-06 01:06:24 · 492 阅读 · 0 评论 -
多线程(无代码,纯干货)
1、什么是线程和进程?进程:在操作系统中能够独立运行,并且作为资源分配的基本单位。它表示运行中的程序。系统运行一个程序就是一个进程从创建、运行到消亡的过程。线程:线程是进程划分成的更⼩的运⾏单位,⼀个进程在其执⾏的过程中可以产⽣多个线程。多个线程共享进程的堆和⽅法区资源,但是每个线程有⾃⼰的程序计数器、虚拟机栈 和 本地⽅法栈。系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,因此也被称为轻量级进程。不同点:线程和进程最⼤的不同在于基本上各进程是独⽴的,⽽各线程则不⼀定,因原创 2020-08-04 21:24:05 · 939 阅读 · 0 评论 -
Java集合
这里主要对集合框架内部数据结构和Java面试问题进行总结,集合常见方法的调用请看我其他整理的汇总文章。1. ListArraylist: Object数组Vector: Object数组LinkedList: 双向链表(JDK1.6之前为循环链表,JDK1.7取消了循环)问:ArrayList和LinkedList的区别?相同点:ArrayList和LinkedList都是非线程安全的,都是实现了List接口的容器类,用于存储一系列的对象引用。他们都可以对元素的增删改查进行操作。区别:Ar原创 2020-08-04 18:24:26 · 269 阅读 · 0 评论 -
红黑树的产生原因和基本原理
https://juejin.im/post/6844903519632228365#comment原创 2020-08-02 00:44:47 · 606 阅读 · 0 评论 -
Java汇总--容器篇(二)Set:HashSet, LinkedHashSet, TreeSet
这里复习set的用法:Set中的元素,不能重复,第二次插入同样的数据,是插不进去的,容器中只会保留一个;1.常见的Set有三类:HashSet:无序;HashSet<Integer> s or Set<Integer> s = new HashSet<>();LinkedHashSet:按照插入顺序;TreeSet:从小到大排序;2.常用方法(以HashSet为例):add(num);//返回值为boolean,表示set中是否能成功增加元素num;co原创 2020-06-27 23:56:00 · 142 阅读 · 0 评论 -
剑指offer 面试题25. 合并两个排序的链表 Java三种双百实现代码
面试题25. 合并两个排序的链表 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1: 输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4限制:0 <= 链表长度 <= 1000双百解法一:迭代法 修改原有链表的指向 推荐!!!!设l1为 1->3->...原创 2020-04-22 00:05:55 · 244 阅读 · 0 评论 -
Java中栈Stack(或ArrayList中)存储对象的指向和值改变问题
Java 如果在栈Stack中存储一个对象型数据,比如ListNode,若现将一个ListNode对象存入Stack中,之后若其指向或值有所改变,是否会对Stack造成影响?下面是测试代码:首先是 ListNode的定义:/** * Definition for singly-linked list. * public class ListNode { * int val; ...原创 2020-04-17 13:20:57 · 614 阅读 · 0 评论 -
剑指offer 面试题18. 删除链表的节点 Java实现 Leecode解法 和剑指offer O(1)复杂度解法(改进版) 原理及代码实现
一、先来看Leecode上的题目要求面试题18. 删除链表的节点给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5 输出: [4,1,9] 解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 ->...原创 2020-04-13 16:14:40 · 237 阅读 · 0 评论 -
剑指offer 面试题17. 打印从1到最大的n位数 考虑大数问题时的Java实现
面试题17. 打印从1到最大的n位数输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。示例 1: 输入: n = 1 输出: [1,2,3,4,5,6,7,8,9]说明:用返回一个整数列表来代替打印 n 为正整数1.前两种方法是解决n取值较小的情况Java代码如下://不调用pow函数 public ...原创 2020-04-11 22:07:07 · 193 阅读 · 0 评论 -
java 操作符移位运算之 左移 右移 无符号右移 的区别:原理和代码演示(正负数)
1.左移<<不区分正负数左移运算符 m <<n表示把 m 左移 n 位。在左移n位的时候,最左边的n位将被丢弃,同时在最右边补上n个0。public class Test { public static void main(String[] args) { int i =6; //6的二进制是110 Syste...原创 2020-04-09 22:12:14 · 600 阅读 · 0 评论 -
MySQL大小写敏感问题:原理及测试
1.MySQL大小写敏感的控制mysql是通过lower_case_table_names参数来控制大小写敏感的,该参数在[mysqld]结点下。具体的含义见官网截图。由上图可知:Unix下默认为0,也就是大小写敏感的;Windows下默认为1,不敏感;macOS默认为2,存储区分大小写,但是在查询时会转换为小写。二、测试(win10系统下)1.在SQL编辑器中USE how2j...原创 2020-04-03 19:42:45 · 458 阅读 · 0 评论 -
动态规划(一):什么是动态规划(Dynamic Programming)?动态规划的意义是什么?
内容来源:【1】作者:阮行止链接:https://www.zhihu.com/question/23995189/answer/613096905来源:知乎【2】作者:王勐链接:https://www.zhihu.com/question/23995189/answer/35429905来源:知乎文章只作为后续理解的记录,侵删。一. 从一个生活问题谈起 先来看看生活中经常遇到的...原创 2020-04-02 11:50:27 · 371 阅读 · 0 评论 -
排序算法之归并排序 原理及java实现
归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。一、原理可以看到这种结构很像一棵完全二叉树,本文的归并排序我们采用递归去实现。1.首先考虑“治”部分:如何将将二个有序数列合...原创 2020-04-01 20:38:35 · 260 阅读 · 0 评论 -
经典排序算法之快排:原理及java实现
快排 java实现在网上查了一些快排相关的代码,但是找的几个都有bug(o(╥﹏╥)o),甚至百度百科里面的代码也有bug,弄了一晚上,终于把代码弄好,原理也基本清楚了,下面从原理和代码两部分进行说明,同时也会提出一些网上现有的一些代码的bug,算法小白,如有错误,还请指正。一、快排原理(总结至百度百科)(后面会说一下一些文章讲解快排时出现的原理错误,搞了一个小时才明白,-_-||)正确原...原创 2020-03-31 00:03:33 · 1268 阅读 · 0 评论 -
剑指offer面试题05. 替换空格 (不推荐在for循环里面直接用+的方式进行String的拼接)
面试题05. 替换空格(不推荐在for循环里面直接用+的方式进行String的拼接)请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = “We are happy.” 输出:“We%20are%20happy.”限制:0 <= s 的长度 <= 10000一、个人解法(粗暴字符串拼接) public String replaceSpace(St...原创 2020-03-29 11:25:13 · 265 阅读 · 0 评论 -
Java中Iterator用法
迭代器(Iterator)是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。Java中的Iterator功能比较简单,并且只能单向移动:(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。(2) ...原创 2020-03-09 00:03:23 · 772 阅读 · 0 评论 -
Java 注解的分类
1.按照来源分类:内置注解是java自带的标准注解,在java.lang包下,如:@Deprecated,@Override,@SuppressWarning,@FunctionaInterface,@SafeVarargs;元注解是可以注解在其他注解上的注解,在java.lang.annotation包下,如:@Retention,@Documented,@Target,@Inherit...原创 2020-02-28 19:55:09 · 363 阅读 · 0 评论 -
文件夹 文件 空文件夹 length() listFiles() 相关结果和空指针异常
File f若f为文件,无论是否为空,length()函数正常运行,但是调用listFiles()后得到的结果为null,再用listFiles()得到的结果进行length()或for函数操作就会出现空指针异常。若f为文件夹,无论是否为空,调用length()函数后一般都会得到0。当其为空文件时,运行listFiles()后得到空数组,而不为null,所以可以正常进行后续的操作,不会出现空指...原创 2019-12-12 22:17:03 · 1279 阅读 · 0 评论 -
Java 关于空数组与null数组 length()函数 for函数的使用 空指针异常
1.如果只是对数组进行声明,没有进行创建,则该数组为null,调用length()函数和for函数时都会出现空指针异常,代码和运行结果如下:package charactor;//null数组不能使用.length()函数,但是空数组可以,会返回0public class Test3 { static int a[]; public static void main(String[...原创 2019-12-12 22:09:07 · 3849 阅读 · 0 评论 -
java File的renameto的用法
java中对于File类中的renameTo()方法,可以如下方式调用:File old = new File(source);File rname = new File(dest);System.out.println(old.renameTo(rname));使用时,注意事项为:1.source不管是代表一个目录,还是一个文件的路径都必须是在磁盘上存在的,如:E:\access\A代...原创 2019-12-09 17:36:20 · 3603 阅读 · 3 评论 -
JAVA jdk 1.8.0_221环境变量配置(win10)
为了破解myeclipsecn,结果crack.bat文件一直闪退(关闭了杀毒软件),也用了其他方法,有的说是java JDK安装版本过高,一开始新手太莽了,直接下了最新的13版,听说8版本比较稳定,卸载13,安装8之后,原有问题得到解决。但是8的环境变量设置在win10系统中有一些小坑,现在记录成功版本的如下:首先需要确保java安装成功cmd java -versioncmd jav...原创 2019-10-12 21:34:09 · 7161 阅读 · 0 评论