自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基本数据结构和算法

排序 时间复杂度都是O(n^2), 额外空间复杂度都是O(1) 选择排序 冒泡排序 插入排序 时间复杂度是O(logN) 二分查找法: 在有序数组中查找某个数是否存在 无序数组找到一个局部最小值 异或运算 就是无进位相加 用法1: a=乙,b=甲 a = a^b; b = a^b; a = a^b; 得出结果后a,b两个互换位置。 前提是a和b内存位置不一样 用法2: 找出只有一种数出现奇数 [11,11,22,33,44,33,44] ...

2022-04-14 10:41:20 57

原创 面试问题总结

Mysql 乐观锁和悲观锁 共享锁和排它锁 分库分表 sql优化 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: select id from t where num=0 3.应尽量避

2022-03-24 23:21:35 93

原创 AOP 实现日志打印

首先需要自定义注解@LogAnnotaion //type代表可以放在类上面 method表示可以放在方法上 @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface LogAnnotaion { String module() default ""; String operator() default ""; } 定义切面 ..

2022-03-22 13:51:42 1187

原创 ElasticSearch

倒排索引 帮助我们快速检索数据 文件落地解决大数据搜索 term index(FST算法)、term dictionary(FST算法)、posting list(RBM算法) es中默认的评分算法TF/IDF、BM25 es写性能优化 优化方案: 客户端: 多线程写,批量写 ES:在高质量数据建模前提下,主要在refresh,translog和flush之间- 做文章 写性能优化 - refresh 增大refresh_interval,降低实时性,增大一次refresh处理的文档树,默认是1s

2022-03-14 11:20:21 1007 1

原创 IO流总结

流的分类 按照操作数据单位的不同分为:字节流、字符流 按数据流的流向不同分为:输入流、输出流 //OutputStream //InputStream //Reader //Writer IO流都是从如上4个抽象基类派生的 字符流和字节流的区别 在字节流中输出数据主要是使用OutputStream完成,输入使的是InputStream,在字符流中输出主要是使用Writer类完成,输入流主要使用Reader类完成。 IO和NIO的区别 Java IO的各种流是阻塞的。这意味着,当一个线程调用read()

2022-03-14 11:19:50 326 1

原创 mybatis常见面试题

#{}和${}的区别是什么? #{}是sql的参数占位符,Mybatis会将sql中的#{}替换为?号,在sql执行前会使用PreparedStatement的参数设置方法,按序给sql的?号占位符设置参数值,比如ps.setInt(0, parameterValue),#{item.name}的取值方式为使用反射从参数对象中获取item对象的name属性值,相当于param.getItem().getName()。 $ {} 是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属

2022-03-08 22:08:37 202 1

原创 redis基础知识

redis简介 redis是使用c语开发的数据库,除了做缓存之外,也经常被用作分布式锁、甚至是消息队列 常用的三种缓存读写策略 Cache Aside Pattern(旁路缓存模式) 这个是我们平时使用比较多的一个读写模式 写: 先更新DB,然后直接删除cache 读: 从cache中读取数据,读取到就直接返回 cache读取不到的话,就从DB中读取数据返回 再把数据放到cache中 在写数据的过程中,不可以先删除cache,否则会导致数据库和缓存数据不一致的问题(缓存写入的速度比数据库快很多)所以一般

2022-03-08 19:20:50 524

原创 spring框架常见面试题

spring boot框架相比传统的spring有哪些优势 可以快速的构建独立的Spring应用 直接切入tomcat、Jetty、和Undertow服务器 提供依赖启动器简化构建配置,直接根据对应的开发场景选择对应的依赖启动器“Starter” 极大程度的自动化配置Spring和第三方库 极少的代码生成和XML配置 IOC的理解 IOC:控制反转是一种设计思想,而不是一个具体的技术实现,IOC的思想就是将原本在程序中手动创建对象的控制权交给Spring框架来管理。 将对象之间的相互依赖关系交给IOC容

2022-03-08 14:55:05 129

原创 线程池的创建和性能对比

线程中的run方法和start方法有什么区别 start()方法使线程开始执行;java虚拟机开始调用该线程的run方法;结果是两个线程并发的运行当前线程(从调用返回给start方法)和另一个线程(执行其run方法);start方法启动线程,真正实现了多线程运行 run()方法只是一个普通的方法而已 调用start方法可启动线程,而run方法只是thread类中一个普通的方法调用,还是在主线程里执行。 创建使用单个线程的线程池(最慢) ExecutorService executorService

2022-03-08 12:12:49 636

原创 mysql常见面试准备(不涉及底层)

索引的基本原理 索引用来快速的寻找那些具有特定值的记录。如果没有索引,一般来说查询时遍历整张表 索引的原理:就是把无序的数据变成有序的查询 把创建了索引的列的内容进行排序 把排序结果生成倒排表 在倒排表内容上拼上数据地址链 在查询的时候,先拿到倒排表内容,再取出地址链,从而拿到具体数据 mysql聚簇索引和非聚簇索引的区别 都是B+树的数据结构 聚簇索引:将数据存储和索引放到了一块、并且是按照一定的顺序组织的,找到索引也就找到了数据,数据的物理存放顺序和索引的顺序是一致的,既:只要索引是相邻的,那么对

2022-03-06 17:40:43 375 3

空空如也

空空如也

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

TA关注的人

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