- 博客(390)
- 收藏
- 关注

原创 蓝桥杯算法全家桶(终极完结版)
蓝桥杯考察范围:蓝桥杯算法合集这个系列包括: 蓝桥杯常用算法系列 蓝桥杯五年真题两次模拟系列 算法竞赛Java常用API总结 以及 常用数据结构 这四个模块,里面的算法题目大多是蓝桥杯历届真题。文章都是是自己备战学习过程中总结出来的,这里一并贴出,方便大家学习和交流。个人水平有限,文章中有错误的地方还请大佬们在评论区指出或私信,方便改正,以免以谬传谬,在此先谢过了。蓝桥杯算法合集蓝桥杯常用算法系列蓝桥杯五年真题两次模拟系列五年真题两次模拟算法竞赛Java常用API总结常用数据结构算法书籍分享蓝桥
2020-06-11 23:34:52
13811
14

原创 基于Hexo Github搭建个人博客(一):将博客推到Github Page
前言原先我是在CSDN边学习算法准备蓝桥杯,然后边写博客记录自己的学习心得的。后来偶然机会在B站看到有个大三的Up主搭建了自己的个人的博客写文章,我觉得挺好的也挺酷的,所以也就有了后来这个博客和这篇文章。文章目录前言1.什么是hexo2.安装hexo前期准备预处理方法一、通过npm下载cnpm方法二、修改npm的默认镜像源正式安装hexoHexo初始配置安装deployer本地查看效果部署博客...
2020-04-04 21:03:55
815
4
原创 Java面经——SpringCloud微服务
一致性 Hash 是通过一个 Hash 环的数据结构来实现的这个环的起点是 0,终点是2^32-1,即环的数据分布范围是[0, 2 ^32 - 1 ]另外,在一致性 Hash 算法里面,为了避免 hash 倾斜导致数据分配不均匀的情况,我们可以使用虚拟节点的方式来解决。把需要存储的目标 key 使用 hash 算法计算后得到一个 hash 值,同样也会落到hash 环的某个位置上。一致性 hash 算法的好处是扩展性很强,在增加或者减少服务器的时候,数据迁移范围比较小。
2024-06-04 17:00:48
601
原创 Java面试——mybatis
在sql session中有一个excutor对象,Local cache对象,当用户发起查询的时候呢,executor就会根据SQL语句在local cache里面去查询,那如果没有命中的话就会再去查询数据库,将查询结果写入Local Cache中,否则那就直接返回。开启了二级缓存的查询流程会在进行一级缓存查询前,通过cachingExecutor进行二级缓存的查询,cachingExecutor对Executor进行了一个封装,实现了多个SqlSession的缓存数据共享,是一个全局缓存。
2024-06-04 10:24:57
1125
原创 Java面试——中间件
1、openFeign是一个HTTP客户端,它融合了springmvc的注解,使之可以用REST风格的映射来请求转发。2、可以把openFegin理解为是controller层或是service层。可以取代springmvc控制层作为请求映射,亦或是作为service层处理逻辑,只不过这里,openFeign只是做一个请求转发的逻辑操作。3、openFeign整合了hystrix做熔断处理,同时,可以和ribbon客户端负载均衡、Eureka注册中心配合使用,实现负载均衡的客户端。
2024-06-03 20:50:42
1767
原创 LeetCode热题100 Day1——双指针
宽度w 乘以 两个柱子中最短的柱子h,此时我们若移动比较高的柱子,结果只有两种:1.新柱子比最短的柱子h 高,此时无论这个柱子再高,高度都只能取较小的短板柱子,即高度是h。所以不仅宽度w减少了,高度h还没变,结果肯定变小,这是不符合的. 2.比最短的柱子h 矮了,此时h变得更小了,w也减小,就更不可能了。综上,只有移动短的柱子才有可能比原来的结果大,因为虽然宽度w在减小,但可能h变大,w*h整体才有可能变大。双指针i,j,j指针遍历数组,i指针存放非0元素。
2024-05-29 11:38:52
530
原创 week2腾讯2019 暑期实习提前批笔试——acwing568. 奇妙的数列
然后计算区间内元素对数(r - l + 1) / 2,区间元素个数为r - l +1,如果区间内总数为偶数,必然是一正一负刚好成对。如果为奇数,需要判断区间右端点r位置数字奇偶性,并加到sum上。判断区间起始位置l的奇偶性,若为偶数,则偶奇交替,一对和为1,反之为-1。
2024-05-24 11:27:11
203
原创 Java设计模式(一)——代理模式
以下面例子为例,实现步骤如下目标类TeacherDao注入代理对象ProxyFactory的target中。getInstance给目标对象target创建一个代理对象重写intercept方法,实现被代理对象方法的调用TeacherDao代理工厂实现类ProxyFactoryClient类。
2024-05-16 16:44:33
882
原创 剑指Offer打卡day34——AcWing 66. 两个链表的第一个公共结点
(1)设链表A独有部分长a,链表B独有部分长b,公共部分长c,让两个指针分别从链表A和链表B头开始移动,若移动到末尾仍未相遇则移动到对方的链表头。(2)若二者相交,则由 a+c+b=b+c+a。可知,两个指针必会在第二轮遍历时在公共结点相遇。(3)若二者不相交,则二者同样必会在第二轮遍历的末尾同时为NULL,进而判断两链表不相交。(4)最多只会执行两轮遍历,就能够得出结果。
2024-05-16 11:49:53
261
原创 SpringBoot学习(一)
@Configuration注解配置类 里面使用@Bean标注在方法上,通过该方式给容器注册组件,以方法名作为组件的id(也可以通过@Bean(“组件名”) 显示指定),返回类型就是组件类型,返回值就是组件在容器中的实例。默认也是单实例的。配置类本身也是组件,可以在主启动类中通过以下代码获得run.getBean(Myconfiguration.class),其中run为springboot容器@Configuration 注解,自SpringBoot2.x之后增加 了proxyBeanM
2022-04-14 12:32:39
592
原创 【MySQL】Mysql必会语句
--使用mysql root -p 提示权限不够: Access denied for user 'ODBC'@'localhost' (using password: YES)msyql -u root -puse goodsadmin; -- 使用数据库alter table person add column card_id int(12); --增加列card_idcreate table IDCard(card_id int(12) primary key, card_code
2022-04-14 12:32:13
1121
原创 SpringBoot(一)—— SpringBoot中SpringMVC配置
SpringBoot 已经内置了很多SpringMVC配置。如果还想增加配置,可以通过两种形式:第一,通过实现SpringMVCConfiguration接口。第二,在application.yml配置文件中,配置SpringMVC的相关属性。属性可参考spring-boot-autoconfigure.jar中的WebMvcProperties...
2022-04-14 12:31:43
2188
原创 小林的debug日志
Java项目,Spring 配置文件applicationContex.xml文件任意,需要时在主程序使用如下调用即可获得Ioc容器ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
2022-04-14 12:30:54
410
原创 【BUG】—— Mybatis
### Error building SqlSession.### The error may exist in com/johnny/entity/personMapper.xml### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderException: Error parsing Map
2022-04-14 12:29:51
337
原创 9/10字节技术中台一面凉经
1、 你说你的项目用到的公司的分布式锁组件,这个组件什么实现原理,你能讲一讲吗?分布式锁要保证互斥性。 对同一个key进行操作。使用redis的setnx指令,该key不存在时才能设置成功,如果存在则不操作。避免死锁的发生。 设置key时同时为该key设置过期时间。避免误解锁。 将该key的值设置成对应的ip值。当然也有可能被该机器实例的不同redis实例误解锁。因此可以使用UUID作为值。使用redis分布式锁存在问题设置key和过期时间不是原子操作: setNx保证防止误解锁: 设置
2022-04-14 12:28:52
1130
原创 Mysql学习 (一)——SQL优化
Mysql 架构介绍数据库引擎性能下降的原因性能下降主要有两个表现: 执行时间长、 等待时间长可能原因有以下四种:查询语句写的烂发生索引失效关联查询太多join服务器调优及各个参数设置常见通用的Join查询SQL执行顺序机读顺序Join图inner join内连接left joinright join索引什么是索引Mysql官方对索引的定义是,帮助Mysql高效获取数据的数据结构。通俗来讲,索引就相当于字典的目录。数据本身之外,数据库还维
2022-04-14 12:27:19
276
原创 Dubbo学习(四) —— Dubbo 原理
RPC 原理一次完整的RPC调用流程(同步调用,异步另说)如下:1)服务消费方(client)调用以本地调用方式调用服务;2)client stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体;3)client stub找到服务地址,并将消息发送到服务端;4)server stub收到消息后进行解码;5)server stub根据解码结果调用本地的服务;6)本地服务执行并将结果返回给server stub;7)server stub将返回结果打包成消息并发送至消费方;8)
2022-04-14 12:26:59
149
原创 Java面试 —— Redis相关
缓存雪崩和解决方案重复排队、并发超卖、数据不一致redis分布式锁单机多线程下存在并发问题。 – 在JVM层面加锁,如synchronized或ReentrantLock分布式部署下存在超卖问题。 --使用Redis分布式锁,加解锁。String value = UUID.random().toString();Boolean flag = stringRedisTemplate.opsForValue().setIfAbsent(REDIS_LOCK, value); //加锁s
2022-04-14 12:25:51
319
1
原创 使用WebSocket实现聊天室
WebSocketnew WebSocket("服务器地址") //创建WebSocket//open: 当webSocket服务连接成功时触发socket.addEventListener('open',funtion(){})Websocket事件open 连接建立时触发message 客户端接收服务端数据时触发error 通讯发生错误时触发close 连接关闭时触发Websocket 方法Socket.send() 使用连接发送数据Socket.close(
2022-04-14 12:22:13
3249
原创 百度笔试复盘
按照短作业优先执行顺序,4个作业的执行顺序为J1、J4、J2、J3,执+行时间分别是3、(3+5)、(3+5+8)、(3+5+8+10),则平均周转时间为(3 +(3+5)+ (3+5+8)+ (3+5+8+10))/4=13.25函数式接口JVM作业调度先来先服务选的是:J1高响应比优先算法: 响应比 = (等待时间 + 要求服务时间) / 要求服务时间静态方法D在C之前: 成员方法调用前先使用Linux# 查找当前目录中文件属主具有读、写权限,并且文件...
2021-09-18 15:07:39
199
原创 Shein笔试
小概率事件不等于不可能事件B、如果本类属性是成员属性,静态方法不能访问。C、类方法可以调用外部其他类的方法。只要实力化对象,也是可以调用实例方法的。解决哈希冲突的方法有三种,分别是: 开放地址法:寻找下一个为空的数组下标,而后将冲突元素存储再散列法(二次哈希法):再次使用一个不同的哈希算法再计算一次 (第一次%16换另一个数进行%运算)链地址法(拉链法):将所有冲突元素按照链表存储,冲突后时间复杂度变为O(1+n)n为冲突元素个数)[hashMap就是用这种方法]哈希函数冲突处理的方式.
2021-09-18 15:06:52
1632
原创 美团笔试复盘
整除AC 26%听说把long换成BigInteger可以AC82%package meituan;import java.math.BigInteger;import java.util.Scanner;/** * @author Johnny Lin * @date 2021/9/15 12:59 */public class Divide { public static void main(String[] args) { Scanner reade
2021-09-18 15:05:34
268
1
原创 Java面试 —— MySQL相关
MySQL 相关数据库基础什么是事务?事务的特性:(ACID)ACID实现原理事务隔离级别并发事务分类四种隔离级别X锁和S锁MVCCUNDO_LOG版本链ReadViewRRMVCC优缺点常用SQL 语句Truncate1、 数据库的三大范式数据库基础什么是事务?事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功。即使一个操作失败,事务也不会成功。如果所有操作成功则事务提交,其修改将作用于其他数据库进程。如果操作失败,则事务将回滚,该事务所有操
2021-09-08 23:12:15
622
原创 剑指offer打卡day25 —— Acwing 59. 把数字翻译成字符串
【题目描述】Acwing 59. 把数字翻译成字符串【思路】class Solution { public int getTranslationCount(String s) { char c[] = s.toCharArray(); int n = c.length; int f[] = new int[n + 1]; f[0] = 1; // 0个字符的翻译方案数为1 for (int i = 1; i
2021-09-06 23:46:22
191
原创 腾讯2019 暑期实习提前批笔试 —— AcWing 570. 气球游戏
【题目描述】AcWing 570. 气球游戏【思路】双指针,i在右,j在左。i从左至右依次扫描,每扫描一个相应更新s[ c[i] ]和颜色数colors,当颜色数达到要求m时,尝试移动j指针使得在满足colors==m的情况下,j离i越近越好。因此j的移动是有条件的,即:s[ c[j] ] > 1 || c[j] == 0import java.util.Scanner;public class Main{ static int N = 1000010, M = 201
2021-07-14 20:31:28
209
原创 Week2 腾讯2019 暑期实习提前批笔试 —— ACWing 569. 猜拳游戏
【题目描述】569. 猜拳游戏 x/y (mod p) 等于x乘以 y的模逆元,而y的模逆元等于 y^(p - 1),可以使用快速幂计算【思路】目标: 计算 C(n, s) * 2 ^( n - s) % p上式C(n, s) * 2 ^( n - s) % p = A(n,s) /s! * 2 ^( n - s) % p在计算阶乘的过程中可能出现数据范围溢出 根据费马小定理可以转化为 模逆元计算 求 1/s!(mod p) 实际上就是 求 s^(p -2) ( 要求 s %
2021-07-13 17:53:43
152
原创 Dubbo学习(三) —— Dubbo常用配置
Dubbo配置配置原则首先,从Dubbo支持的配置来源说起,默认有四种配置来源:JVM System Properties,-D 参数Externalized Configuration,外部化配置(如dubbo.xml)ServiceConfig、ReferenceConfig 等编程接口采集的配置(通过编码形式,如写个配置类标注为@Component)本地配置文件 dubbo.properties覆盖关系优先级顺序:JVM 启动-D参数优先,这样可以使用户在部署和启动时进行参数的
2021-07-11 23:50:44
1569
原创 Dubbo学习(二) —— SpringBoot 整合Dubbo
小项目启动zookeeper注册中心# 进入zookeeper安装目录的bin目录#启动服务端sudo zkServer.sh start#启动客户端sudo ./zkCli.sh监控中心dubbo-admin是Dubbo服务管理中心,dubbo-admin 是图形化管理页面。可以从注册中心中获取到所有的提供者/消费者进行配置管理。Dubbo admin is a spring boot application, you can start it with fat jar or in
2021-07-09 15:36:53
765
原创 Dubbo学习笔记(一) 分布式理论及Dubbo
分布式理论什么是分布式系统分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统。分布系统(distributed system)是建立在网络之上的软件系统应用架构的发展演变单一应用架构当网站流量 很小时,只需一个 应用,将所有功能都部署在一起 ,以减少部署节点和成本。此时用于简化增删改查工作量的数据访问框架是关键。 缺点:不易于扩展,每次扩展新功能都需要将项目重新打包 成war包再重新部署到各个服务器上随着功能的不断增,系统越显臃肿。垂直应用架构按功能将系统
2021-07-09 11:59:36
141
2
原创 SpringCloud学习(十一) —— SpringCloud Alibaba Nacos服务注册和配置中心
NacosNaming Configuration Service一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台Nacos就是注册中心 + 配置中心 等价于 Nacos = Eureka + Config + Bus在docker中安装和配置nacos详细步骤 服务注册nacos自带负载均衡原因: nacos整合了ribbonNacos支持AP和CP模式的切换服务配置组[johnny@localhost ~]$ hostname -i::1 127.0.0.
2021-07-06 16:18:27
149
原创 SpringCloud学习(九)—— SpringCloud Stream 消息驱动
为什么要引进Cloud Stream屏蔽底层消息中间件的差异,降低切换成本,统一消息的编程模型。什么是 Spring Cloud StreamSpring Cloud Stream是一个构建消息驱动微服务的框架。应用程序通过inputs或者outputs来与Spring Cloud Stream中的binder对象交互。通过 配置来binding(绑定),而Spring Cloud Stream的binder对象负责消息 中间件交互。目前仅支持RabbitMQ和Kafaka通过 定义绑定器Bin
2021-07-04 10:28:39
131
1
原创 恋上数据结构与算法第一季笔记(三)——二叉搜索树
二叉搜索树二叉搜索树的接口实现BinarySearchTreeBinarySearchTree 属性与构造方法 //元素数量 private int size; //二叉搜索树根节点 private Node root; //比较器:由外部定义比较规则,并将比较器传进来使用 private Comparator comparator; //带比较器的构造方法 public BinarySearchTree(Comparator comp
2021-07-04 10:27:37
292
原创 面试算法题 专题(一) —— 字符串
面试题 01.09. 字符串轮转【题目描述】面试题 01.09. 字符串轮转解法一【思路】指向s1的指针从前往后遍历逐一与s2的头一个字符比较 ,相等位置即为可能的旋转位置。旋转词极可能为: c[i + 1: n -1] + c[0:i]class Solution { public boolean isFlipedString(String s1, String s2) { if( s1 == null || s2 == null) return false;
2021-07-03 13:43:19
560
原创 恋上数据结构与算法第一季笔记(四)——红黑树
B树m阶树 性质B树 和 二叉搜索树搜索上溢的解决方案删除删除叶子节点删除非叶子节点下溢下溢的解决红黑树
2021-07-03 13:41:41
164
原创 Redis 学习笔记(三) 内存淘汰策略
Redis中对于过期键并不是马上从内存中删除。它有三种策略: 定时删除、。定时删除: 定时删除就是为key设置生存时间,它保证过期键值会在过期后立马被删除,其所占用的内存也会随之释放。缺点:立即删除对CPU是会造成负担,会抢占CPU的时间。这会产生大量的性能消耗,同时也会影响数据的读取操作。 这是一种拿时间换空间的策略。惰性删除: 数据到达过期时间,不做处理。等下次访问数据时,如果未过期,返回数据。发现已经过期 了,删除返回不存在。缺点:对内存不友好。如果一个键已经过期,而这个键又仍然保存在数据
2021-07-03 13:40:17
151
1
原创 Redis 学习笔记(二)—— 基本数据类型
redis数据类型通用命令keys: 返回数据库中键的个数,会扫描所有的数据, 阻塞其他操作, 不建议使用。dbsize: 同上,也是查看key的数量。但是是O(1)操作exists key:判断是否存在对应的key。如果存在则返回1,不存在则返回0。expire key seconds:设置键的过期时间(seconds,单位是秒)ttl key: 获取key的有效实际。其中 -1 表示永久有效, -2 表示无效的键。persist key: 把一个过期的时间的key变为一个永久的keyde
2021-07-03 13:39:26
598
1
原创 数据结构刷题集合(二)—— 树
【题目描述】226. 翻转二叉树【思路】在遍历过程中,对左右节点进行两两交换。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(i
2021-07-03 13:37:53
99
原创 数据结构刷题集合(一)—— 链表
【题目描述】LeetCode 141. 环形链表【思路】快慢双指针,起始p和q同指向头结点。之后p走一步,q走两步,p追赶q,若为环则p、q指针循环一周必定相遇,可以得出环长为p走过的步数。如不为环,则q或q.next最后一定为尾结点/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { *
2021-07-03 13:36:30
125
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人