- 博客(28)
- 收藏
- 关注
原创 JAVA 面试 MySQL
2、善用EXPLAIN分析,在定位到一个慢SQL后,使用EXPLAIN查看SQL的执行计划,重点关注type、possible_keys和key、rows及Extra列。”,只获取需要的字段,减少网络传输和内存消耗,并且如果能走覆盖索引不用回表的话性能也会有很大提高。关于MySQL的性能优化,可以从SQL和索引优化、设计优化、配置优化、硬件优化等维度来分析。首先是SQL和索引优化,这部分优化的成本最低,一般80%的问题都可以通过SQL和索引优化。设计优化,良好的设计是高性能的基石。
2025-09-09 22:05:16
809
原创 JAVA 面试 分布式锁
另外就是超时问题的处理,可以设置一个足够长的值,来保证一定会完成,但是如果太长,宕机时又会导致其他服务都卡死在这里,这个时候接需要使用看门狗机制,在主线程执行业务逻辑的同时,让一个子线程不断给锁续期,直到主线程执行完业务逻辑,然后才会释放锁,redis对此有专门的Redisson来处理,使用起来很简单。针对释放其他的服务的分布式锁的问题,可以设置一个识别是自己的值,可以是一个uuid,在删除前判断一下是否是自己加的锁,是自己的锁才会释放锁。我们可以通过setnx命令简单的实现一个分布式锁。
2025-09-07 16:48:33
482
原创 JAVA 面试 Redis
方案二有可能导致数据不一致问题,写线程A先删除缓存,然后读线程B进来发现没有缓存,就会去数据库读取缓存,把旧数据放到缓存,然后A再更新数据库数据,数据就不一致了,而且高并发下这种情况很容易出现。但是极端情况下,还是可能会导致数据不一致,就是读线程A读缓存,发现没有缓存,然后再去数据库读数据,但是还没有写入缓存,这时写线程B进来把数据更新了,然后删除缓存,然后A把读到的旧数据写入到了缓存,导致数据不一致。另一个是写线程,写线程有两个方案,方案一是先更新数据库,再删除缓存,方案二是先删除缓存,再更新数据。
2025-09-07 16:01:37
727
原创 JAVA 面试 分布式事务
在我看来,分布式事务分为跨库事务和跨服务事务两种。事务有ACID四大特性,保证了数据的强一致性。 但是分布式系统不太一样,首先说一下CAP理论,这是分布式领域的公认定理。在使用2PC提交时,AP接收到请求后,访问TM发起全局事务,进入阶段一提交事务阶段,向所有分支事务发送事务内容,在分支事务执行完时候操作后返回是否执行成功,TM接收到所有的分支事务都执行成功的信息后,就会进入阶段二执行事务提交阶段,给所有分支事务发送Commit请求,分支事务接收到Commit请求后,会提交分支事务,然后释放连接资源,当所有
2025-09-06 23:29:20
850
原创 JAVA 面试 Spring事务
因此可以通过rollbackFor来配置需要回滚的异常,与之对应的还有noRollbackFor属性,配置不需要回滚的异常,这两个属性配置的是Class对象,另外还有rollbackForClassName和noRollbackForClassName,通过品类全路径名配置。Spring事务使用分为编程式事务和声明式事务,编程式事务像MySQL的事务一样,显式的通过Start和commit开始和提交,不常用,我们常用的是声明式事务,也就是在方法上加一个@Transactional 来使用。
2025-09-06 07:23:40
1114
原创 JAVA 面试 Spring
答题思路:首先介绍一下项目中的使用,然后讲一下底层AOP就是面向切面编程,它是一种编程范式,用于将那些散布在应用程序多处、与核心业务逻辑无关的公共功能(通常称为‘横切关注点’)剥离出来,进行模块化封装。在项目中,经常会有一些重复的代码,如日志记录、安全权限校验、事务管理等,如果不使用AOP,这些代码就会零散的嵌入各个业务方法中,出现很多重复代码,导致代码混乱难以维护。
2025-09-03 22:59:19
1626
原创 Boolean
1、构造函数 Boolean(String s) 传入"true"返回 true ,忽略大小写 Boolean(boolean value) 2、静态变量 public static final Boolean FALSE = new Boolean(false); public static final Boolean TRUE = new Boolean(true);...
2020-01-17 15:15:00
388
1
原创 修改mysql数据库密码
1. 设置无密码登录 编辑/etc/my.cnf 添加 skip-grant-tables 不实用密码登录MySQL 下边是样例 [mysqld] datadir=/usr/local/mysql/data basedir=/usr/local/mysql socket=/tmp/mysql.sock user=mysql port=3306 character-set-server=utf8...
2020-01-14 13:55:05
212
原创 linux安装mysql
1、下载tar包 2、将mysql安装到/usr/local/mysql下 1. 解压 tar -xvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz 2. 移动 mv mysql-5.7.22-linux-glibc2.12-x86_64 /usr/local/ 3. 重命名 mv /usr/local/mysql-5.7.22-linux-gli...
2020-01-14 13:48:06
235
原创 javax.servlet.http.HttpServletRequest一些路径
HttpServletRequest request 请求:http://localhost:8080/hello request.getRequestURI() —— /hello request.getRequestURL() —— http://localhost:8080/hello request.getServletPath() —— /hello request.getRemote...
2020-01-08 11:19:28
260
原创 Mybatis插入数据返回主键ID
dao.java,必须是Entity long add(Entity Entity); dao.xml,useGeneratedKeys=“true” keyProperty=“id”。keyProperty写主键ID <insert id="add" useGeneratedKeys="true" keyProperty="id" keyColumn="id" parameterTyp...
2020-01-07 17:03:39
233
原创 Java收藏
1.Switch的参数类型 Only convertible int values, strings or enum variables are permitted 只允许使用可转换的int值,字符串或枚举变量 byte、char、short、int、String可以使用 long、float、double、boolean不可以使用 以及他们对应的包装类 2. char型变量中能不能存...
2019-09-20 14:22:36
282
原创 Java特殊关键字和保留字
关键字 assert 表示“断言”,两种使用方法: 1.若表达式为真,程序继续执行,否则抛出AssertionError异常 assert 表达式 assert false ; 2.与第一种相同,只是异常中有自己设置的错误信息; assert 表达式:错误信息; assert false : "哈哈哈!错误!不能继续执行了"; const Java的保留关键字,没有实际意义,但是不...
2019-09-17 18:26:14
438
原创 HTTP头部信息
通用头(General) Request URL: 请求的url Request Method: 请求的方法,GET、POST Status Code: 状态码(常用状态码) Remote Address: 远程IP地址 Referrer Policy: no-referrer-when-downgrade 响应头(Response Header) Cache-Control: 用来指定当前的请求...
2019-09-15 18:12:11
2194
原创 Linux
1.linux 查看端口是否被监听 查看指定的端口号的进程情况 netstat -anutp | grep 80 -a 显示所有 -n 以ip形式显示当前建立的有效连接和端口 -u 显示UDP协议 -t 显示TCP协议 -p 显示对应PID与程序名 查看某一端口的占用情况 lsof -i:80 ...
2019-09-15 15:19:29
198
转载 Cloneable接口和Object的clone()方法
Java中实现了Cloneable接口的类有很多。 像我们熟悉的ArrayList、Calendar、Date、HashMap、Hashtable、HashSet、LinkedList 等等。 1、Cloneable 接口 (1)一个类如果实现了 Cloneable 接口,就表示 Object 的 clone() 方法可以合法地对该类实例进行按字段复制。 (2)如果在没有实现 Cloneabl...
2019-09-15 08:59:15
239
原创 Java的理解
1.简单 Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用。 另一方面,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。 特别地,Java语言不使用指针,而是引用。并提供了自动的废料收集,使得程序员不必为内存管理而担忧。 2.面向对象 Java语言提供类、接口和继承等面向对象的特性,为了简单起见,只支持...
2019-09-14 14:33:39
467
转载 Java 程序员常用资源工具集合(建议收藏)
搜索资源网站 学习技术过程我们经常需要使用搜索引擎来检索资料,国内常用的也就是某度了。 当然有条件的话,搜索引擎首先还是推荐使用 Google,如果没办法使用,可以使用以下几个作为备用: Bing Bing 国际版:https://cn.bing.com/ 比某度好用,之前还被停用了几天,最近可以了。 DuckDuckGo DuckDuckGo:https://duckduckgo.com/ 从官...
2019-09-14 13:46:12
184
原创 Java反射应用
1. 获取一个Class对象 其中Class<?> 和Class<? extends Object>等效,可以接收所有java类 //方法一:新建一个对象,调用它的getClass()方法 Object object = new Object(); Class<? extends Object> c1 = object.getClass(); //方法二:直接调...
2019-09-11 11:54:29
330
1
原创 两个链表,可能有环,可能无环;可能相交,可能不相交;若相交,返回相交的第一个节点,若不相交,返回null。
初始头结点分别为 node1、node6 Node node1 = new Node(1); Node node2 = new Node(2); Node node3 = new Node(3); Node node4 = new Node(4); Node node5 = new Node(5); Node node6 = new Node(6); Node node...
2019-09-10 18:19:26
267
原创 原型模式
定义 用一个已经创建的实例作为原型,通过复制该对象来创建一个与原型相同或相似的新对象。 UML图 原型模式的实现 深拷贝和浅拷贝 1.浅拷贝 直接使用Object的clone()方法 public class Sex { private String type; public Sex() { super(); } public Sex(String type) { s...
2019-09-10 11:25:15
170
原创 单例模式
定义 一个类只有一个实例,且该类能自行创建这个实例的一种模式。 特点 只有一个实例对象。 该实例对象必须由单例类自行创建。 单例类对外提供一个访问该类的方法。 UML图 单例模式的实现 主要有两种:饿汉式单例、懒汉式单例 饿汉式单例 类一旦加载就创建为一个实例对象,保证在调用getInstance()方法前该实例对象就已经存在 懒汉式单例 类加载时不创建唯一实例,在调用getInsta...
2019-09-10 10:11:23
145
原创 数据库MySQL
1.数据库NULL值 NULL和0不能比较,不等价; sql语句不能使用比较运算符,例如 + < >,必须使用 IS NULL 和IS NOT NULL操作符。
2019-09-09 21:35:42
279
原创 一篇搞定23种设计模式
设计模式 设计模式是面向对象中反复出现的问题的解决方案,是有众多软件开发人员经过长时间的实现和错误总结出来的,可以说是最佳的经验。使用设计模式可以增加代码的可重要性、可读性、可靠性。 软件开发的七项原则 开闭原则:对扩展开放,对修改关闭。 历史替换原则:继承必须保证父类所拥有的性质在子类中仍然成立。 依赖倒置原则:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖...
2019-09-09 21:26:06
216
原创 String相关
String相关 1.String、StringBuffer和StringBuilder的区别 String和StringBuilder线程不安全,StringBuffer线程安全; String不可变,StringBuffer和StringBuilder可变; 运行效率从快到慢:StringBuilder > StringBuffer > String;(StringBuffer基...
2019-09-09 15:33:38
141
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅