- 博客(142)
- 收藏
- 关注
原创 mysql优化有哪些见解,
\1. 为查询缓存优化你的查询大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了。\2. EXPLAIN 你的 SELECT 查询使用 EXPLAIN 关键字可以让你知道MySQL是如何处理你的SQL语句的。这可以帮你分析你的查询语句或是表结构的性能瓶颈。3.当只要一行数据时使用 LIMIT 1当你查询表
2022-05-03 11:17:08
248
原创 上万个用户请求,服务器如何区分
①当浏览器首次访问服务器时,服务器会为客户端创建一个session(每个用户独有的房间,用来存放这个对象的相关信息和内容),并通过特殊算法算出一个sessionID(类似于双方都知道的唯一暗号),用来标识该session对象。 ②当浏览器再次(session还在有效时间内)向服务器请求资源的时候,浏览器将sessionID和请求内容一起发送到服务端。服务端通过对比自身存储的sessionId来判断用户之前是否存在,并返回对应的内容给不同用户。③因为标识符存在内存里,所以当浏览器关闭时,浏览器保存..
2022-05-03 11:12:04
755
原创 集合框架底层数据结构
Collection List Arraylist: Object数组 Vector: Object数组 LinkedList: 双向循环链表Set HashSet(无序,唯一):基于 HashMap 实现的,底层采用 HashMap 来保存元素 LinkedHashSet: LinkedHashSet 继承与 HashSet,并且其内部是通过 LinkedHashMap 来实现 的。有点类似于我们之前说的LinkedHashMap 其内部是基 于 Hashmap 实
2022-04-09 15:45:53
221
原创 JWT token 实现的单点登录
package com.xiexin.interceptor;import com.alibaba.fastjson.JSONObject;import com.auth0.jwt.JWT;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.ser.
2022-04-04 16:51:28
2392
原创 Redis的持久化和缓存
redis持久化的机制的和方式和优缺点1、redis持久化有两种方式rdb和aof;(1)、rdb持久化(就是redis database缩写快照) rdb是redis默认的持久化方式,是按照指定的时间间隔内将内存中的数据以快照的方式保存到磁盘中,对应产生的数据文件为dump.rdb. 通过配置文件中save参数来定义快照的周期 恢复数据时,将rdb文件直接读取到内存中,具体做法:将rdb文件放到redis的启动目录上,redis会自动检查dump.rdb文件,恢复数据...
2022-04-04 16:35:08
1518
原创 RabbitMq的基础知识点
1、MQ概述:mq,消息队列,存储消息的中间件, 分布式系统通信两种方式:直接远程调用和借助第三方完成间接通信 发送方称为生产者,接收方称为消费者2、mq的优劣势 优势:应用解耦(使用mq使得应用间解耦,提升容错性和可维护性)、异步提速(提升用户体验和系统的吞吐量(单位时间内处理请求的数目))、削峰填谷(提高系统稳定性) 劣势:系统可用性降低(系统引入的外部依赖越多,系统稳定性越差,一旦mq宕机,就会对业务造成影响)、系统复杂性提高(mq的加入大大增加了系统的复杂度,以前...
2022-04-04 16:33:43
2360
原创 什么是值传递和引用传递?
1、值传递是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量.2、引用传递一般是对于对象型变量而言的,传递的是该对象地址的一个副本, 并不是原对象本身 。一般认为,java内的基础类型数据传递都是值传递. java中实例对象的传递是引用传递...
2022-04-04 15:56:32
866
原创 synchronized与Lock的区别
1.首先synchronized是java内置关键字,在jvm层面,Lock是个java类;2.synchronized无法判断是否获取锁的状态,Lock可以判断是否获取到锁;3.synchronized会自动释放锁(a 线程执行完同步代码会释放锁 ;b 线程执行过程中发生异常会释放锁),Lock需在finally中手动释放锁(unlock()方法释放锁),否则容易造成线程死锁;4.用synchronized关键字的两个线程1和线程2,如果当前线程1获得锁,线程2线程等待。如果线程1阻塞,线程2
2022-04-04 15:52:31
843
原创 阿里巴巴编码规范考试答案
1.如何处理单元测试产生的数据,下列哪些说法是正确的?【ABC 】多选A .测试数据入库时加特殊前缀标识。B .测试数据使用独立的测试库。C .自动回滚单元测试产生的脏数据。D .无须区别,统一在业务代码中进行判断和识别。2.关于并发处理,下列哪些说法符合《阿里巴巴Java开发手册》:【ABC】多选A .线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。B .同步处理时,能锁部分代码区块的情况下不要锁整个方法;高并发时,同步调用...
2022-04-03 18:50:35
17117
8
原创 说说List,Set,Map三者的区别?
List(对付顺序的好帮手): List接口存储一组不唯一(可以有多个元素引用相同的对象),有序的 对象 Set(注重独一无二的性质): 不允许重复的集合。不会有多个元素引用相同的对象。 Map(用Key来搜索的专家): 使用键值对存储。Map会维护与Key有关联的值。两个Key可以引用相 同的对象,但Key不能重复,典型的Key是String类型,但也可以是任何对象。 ...
2022-02-25 13:06:54
385
原创 反射机制的优缺点
优点: 1)能够运行时动态获取类的实例,提高灵活性; 2)与动态编译结合 缺点: 1)使用反射性能较低,需要解析字节码,将内存中的对象进行解析。 解决方案: 1、通过setAccessible(true)关闭JDK的安全检查来提升反射速度; 2、多次创建一个类的实例时,有缓存会快很多 3、ReflflectASM工具类,通过字节码生成的方式加快反射速度 2)相对不安全,破坏了封装性(因为通过反射可以获得私有方法和属性) ...
2022-02-25 12:54:57
415
原创 实现Java反射的类
1)Class:表示正在运行的Java应用程序中的类和接口 注意: 所有获取对象的信息都需要Class类来实现。 2)Field:提供有关类和接口的属性信息,以及对它的动态访问权限。 3)Constructor:提供关于类的单个构造方法的信息以及它的访问权限 4)Method:提供类或接口中某个方法的信息...
2022-02-25 12:53:56
280
原创 反射的实现方式
获取Class对象,有4中方法: 1)Class.forName(“类的路径”); 2)类名.class 3)对象名.getClass() 4)基本类型的包装类,可以调用包装类的Type属性来获得该包装类的Class对象
2022-02-25 12:49:19
203
原创 HashMap 是线程安全的吗,为什么不是线程安全的(最好画图说明多线程环境下不安全)?
不是线程安全的; 如果有两个线程A和B,都进行插入数据,刚好这两条不同的数据经过哈希计算后得到的哈希码是一样的,且该位 置还没有其他的数据。所以这两个线程都会进入我在上面标记为1的代码中。假设一种情况,线程A通过if判断,该 位置没有哈希冲突,进入了if语句,还没有进行数据插入,这时候 CPU 就把资源让给了线程B,线程A停在了if语句 里面,线程B判断该位置没有哈希冲突(线程A的数据还没插入),也进入了if语句,线程B执行完后,轮到线程A执 行,现在线程A直接在该位置插入而不用再判断。
2022-02-24 13:49:01
3821
原创 List 和 Set 的区别
List , Set 都是继承自 Collection 接口 List 特点:元素有放入顺序,元素可重复 , Set 特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉,(元素虽然无放入顺序,但是元素在set中的位 置是有该元素的 HashCode 决定的,其位置其实是固定的,加入Set 的 Object 必须定义 equals ()方法 ,另外list 支持for循环,也就是通过下标来遍历,也可以用迭代器,但是set只能用迭代,因为他无序,无法用下标来取得想 要的值。) Set和
2022-02-24 13:42:22
224
原创 final有哪些用法?
fifinal也是很多面试喜欢问的地方,但我觉得这个问题很无聊,通常能回答下以下5点就不错了: 被fifinal修饰的类不可以被继承 被fifinal修饰的方法不可以被重写 被fifinal修饰的变量不可以被改变.如果修饰引用,那么表示引用不可变,引用指向的内容可变. 被fifinal修饰的方法,JVM会尝试将其内联,以提高运行效率 被fifinal修饰的常量,在编译阶段会存入常量池中. 除此之外,编译器对fifinal域要遵守的两个重排序规则更好: 在构造函数内对一个fifin
2022-02-24 13:39:01
202
原创 泛型常用特点
泛型是Java SE 1.5之后的特性, 《Java 核心技术》中对泛型的定义是: “泛型” 意味着编写的代码可以被不同类型的对象所重用。 “泛型”,顾名思义,“泛指的类型”。我们提供了泛指的概念,但具体执行的时候却可以有具体的规则来 约束,比如我们用的非常多的ArrayList就是个泛型类,ArrayList作为集合可以存放各种元素,如 Integer, String,自定义的各种类型等,但在我们使用的时候通过具体的规则来约束,如我们可以约束 集合中只存放Integer类型的元素,如
2022-02-24 13:37:47
174
原创 Collection包结构,与Collections的区别
Collection是集合类的上级接口,子接口有 Set、List、LinkedList、ArrayList、Vector、Stack、Set; Collections是集合类的一个帮助类, 它包含有各种有关集合操作的静态多态方法,用于实现对各种集 合的搜索、排序、线程安全化等操作。此类不能实例化,就像一个工具类,服务于Java的Collection框 架。 ...
2022-02-24 13:33:07
654
原创 HashMap和HashTable的区别
1、两者父类不同 HashMap是继承自AbstractMap类,而Hashtable是继承自Dictionary类。不过它们都实现了同时实现 了map、Cloneable(可复制)、Serializable(可序列化)这三个接口。 2、对外提供的接口不同 Hashtable比HashMap多提供了elments() 和contains() 两个方法。 elments() 方法继承自Hashtable的父类Dictionnary。elements() 方法用于返回此Hashtable中的
2022-02-24 13:32:28
83
原创 String、String StringBuffer 和 StringBuilder 的区别是什么?
String是只读字符串,它并不是基本数据类型,而是一个对象。从底层源码来看是一个fifinal类型的字符 数组,所引用的字符串不能被改变,一经定义,无法再增删改。每次对String的操作都会生成新的 String对象。 StringBuffffer和StringBuilder他们两都继承了AbstractStringBuilder抽象类,从AbstractStringBuilder 抽象类中我们可以看到 ...
2022-02-24 13:31:04
313
原创 ArrayList和linkedList的区别
Array(数组)是基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据是很快的。 Array获取数据的时间复杂度是O(1),但是要删除数据却是开销很大,因为这需要重排数组中的所有数据, (因为删除数据以后, 需要把后面所有的数据前移) 缺点: 数组初始化必须指定初始化的长度, 否则报错List—是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式,它继承Collection。 List有两个重要的实现类:ArrayList和LinkedList ArrayL
2022-02-24 13:30:14
58
原创 Mybatis-plus的CRUD(增删改查)
MyBatis-Plus(opens new window)(简称 MP)是一个MyBatis(opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。1.添加依赖<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId&g...
2022-02-22 22:26:04
195
原创 THHP 与 HTTPS 有什么区别?
HTTP 为普通 WEB 协议、HTTPS 为加密 WEB 协议。默认 http 为 tcp80 端口。https 为 tcp443 端口
2022-02-17 09:18:04
1531
原创 请裂举 session、cookie、viewstated 的应用范围
Session 服务器端维护, 某个用户活动时间 + 延迟时间(默认 20 分钟), Cookie 客户端维护, 程序可指定生命周期, ViewState 小量数据,一个 web 页面的生命期
2022-02-17 09:12:09
227
原创 Session 的具体用法?
Session 用来保存每一个用户的专有信息,比如像用户登录验证、购物车。 1.ibatis 中的#与$的区别 1.#是把传入的数据当作字符串,如#field#传入的是 id,则 sql 语句生成是这样, order by "id",这当然会报错.. 2.$传入的数据直接生成在 sql 里,如#field#传入的是 id,则 sql 语句生成是这样, order by id, 这就对了. 3.#方式能够很大程度防止 sql 注入. 4.$方式无法方式 sql 注入. 5.$方
2022-02-17 09:11:36
425
原创 基本数据类型和包装类
1) 八个基本数据类型的包装类 基本数据类型 包装类 byte Byte boolean Boolean short Short char Character int Integer long Long floatFloatdouble Double 2) 为什么为基本类型引入包装类 2.1 基本数据类型有方便之处,简单、高效。 2.2 但是 Java 中的基本数据类型却是不面向对象的(没有属性、方法), 这在实际使用时存在很多的不便(比如集合的元素.
2022-02-17 09:06:18
488
原创 递归的定义和优缺点
递归算法是一种直接或者间接地调用自身算法的过程。在计算机编写程序中, 递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易 于理解。 递归算法解决问题的特点: (1) 递归就是在过程或函数里调用自身。 (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。 (3) 递归算法解题通常显得很简洁,但运行效率较低。所以一般不提倡用递 归算法设计程序。 (4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存 储。递归次数过多容易造成栈
2022-02-17 08:47:31
1407
原创 while 和 do-while 循环的区别
while 先判断后执行,第一次判断为 false,循环体一次都不执行 do while 先执行后判断,最少执行 1 次。 如果 while 循环第一次判断为 true, 则两种循环没有区别
2022-02-17 08:46:03
211
原创 if 多分支语句和 switch 多分支语句的异同之处
相同之处: 都是分支语句,多超过一种的情况进行判断处理。 不同之处: switch 更适合用于多分支情况,就是有很多种情况需要判断处理,判断条件 类型单一,只有一个入口,在分支执行完后(如果没有 break 跳出),不加 判断地执行下去;而if—elseif---else多分枝主要适用于分支较少的分支结构, 判断类型不是单一,只要一个分支被执行后,后边的分支不再执行。 switch 为等值判断(不允许比如>= <=),而 if 为等值和区间都可以,if 的 使用范
2022-02-17 08:45:08
1567
原创 什么是 JVM?什么是 JDK? 什么是 JRE?
JVM:JVM 是 Java Virtual Machine(Java 虚拟机)的缩写,它是整个 java 实现跨平台的最核心的部分,所有的 java 程序会首先被编译为.class 的类文 件,这种类文件可以在虚拟机上执行,也就是说 class 并不直接与机器的操 作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释 给本地系统执行。JVM 是 Java 平台的基础,和实际的机器一样,它也有自 己的指令集,并且在运行时操作不同的内存区域。 JVM 通过抽象操作系统 和
2022-02-17 08:44:30
138
原创 Ping 命令的作用?
Ping 命令的主要作用是通过发送数据包并接收应答信息来检测两台计算机 之间的网络是否连通。当网络出现故障的时候,可以用这个命令来预测故障和确定 故障地点
2022-02-15 08:25:33
1502
原创 spring 对多种 ORM 框架提供了很好的支持,结合事务管理描述 spring 中使用 Hibernate 的方法。
spring 中采用 aop 模式注入 hibernate 的 sessionfactory 和事务管理,在 dao 中调 用.Spring 集成 hibernate 有两种方式,一是 dao 层只与 hibernate 有关, 不使用任何 spring 的api, 然后把dao注入到ioc容器.二是使用spring的hibernateDaoSupport. 事务管理也可以只使用 hibernate 的事务管理. ...
2022-02-15 08:25:03
252
原创 java 的异常有哪几种,有什么区别。
第一种方式:直接在函数头中 throws SomeException,函数体中不需要 try/catch 第二种方式:使用 try/catch,在 catch 中进行一定的处理之后(如果有必要的 话)抛出某种异常 第三种方法:使用 try/catch/finally,在 catch 中进行一定的处理之后(如果 有必要的话)抛出某种异常...
2022-02-15 08:22:10
200
原创 用 javascript 编写脚本小程序,实现点击全选
function selectAll(){var item = document.getElementsByName("ids");for( var j=0;j<item.length;j++){if(!item[j].disabled){item[j].checked = true} } }<input type="checkbox" name="ids" value="${N.oid}"><input type=button value="全选" onclick=.
2022-02-15 08:21:40
597
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人