- 博客(117)
- 资源 (4)
- 收藏
- 关注
原创 【leetcode中】水果成篮
我一开始用的set,后来发现又特殊case,又改成了hashmapmap,map的value为对应出现的频次。思想: 滑动窗口,end负责遍历,结果保存[start,end] 结尾的子串符合的长度,你正在探访一家农场,农场从左到右种植了一排果树。如果从第一棵树开始采摘,则只能采摘 [0,1] 这两棵树。如果从第一棵树开始采摘,则只能采摘 [1,2] 这两棵树。可以采摘 [1,2,1,1,2] 这五棵树。可以采摘 [2,3,2,2] 这四棵树。可以采摘 [1,2,2] 这三棵树。,返回你可以收集的水果的。
2024-08-01 13:33:34
355
原创 【leetcode中】螺旋矩阵2
2.申明offset,每次划线的边界,n,n-1,n-2,n-3.... , offset每次画完一圈自增1。从右下到左下:i -> (startx, n-offset] , j=n-offset, i为降序。从左到左上:i -> startx , j=(staty, n-offset], j为降序。从右上到右下:i=[startx, n-offset), j=n-offset。从左到右边: i=startx, j=[starty, n-offset)1. 声明loop, 表示要转几圈 loop<n/2。
2024-08-01 12:51:08
324
原创 [leetcode中等]长度最小的子数组
start从0开始,当start~end的和大于target后,逐步收缩区间让start后移,这样就能找到以end结束且符合要求的最短的区间了。为了能够遍历整个数组,需要定义end(范围0~数组长度)是该条件下的长度最小的子数组。找出该数组中满足其总和大于等于。个正整数的数组和一个正整数。
2024-08-01 12:05:07
232
原创 tcp为啥是三次握手,不是四次、两次?
2. **同步连接状态**:三次握手确保了双方的发送和接收状态都是同步的。4. **资源分配**:服务器在收到客户端的 SYN 包后,可以开始准备资源,但在没有收到客户端的 ACK(确认)之前,服务器不会完全分配资源。3. **防止重复连接请求**:如果使用两次握手,那么在网络中延迟到达的旧连接请求可能会被服务器误解为新的连接请求,从而导致不必要的资源分配。- **第三次握手**:客户端收到 SYN-ACK 包后,发送一个 ACK 包给服务器,确认服务器的 SYN 包已收到,至此连接建立。
2024-07-30 16:38:09
363
原创 redis高性能得原因
例如,Redis 使用了压缩列表(ziplist)和整数集合(intset)等数据结构来存储小规模的数据,这些数据结构在内存中占用的空间非常小。虽然 Redis 主要将数据存储在内存中,但它也提供了数据持久化的功能,如 RDB 快照和 AOF 日志。Redis 使用 jemalloc 作为默认的内存分配器,jemalloc 是一个高效的内存分配库,能够减少内存碎片,提高内存利用率。Redis 支持 Lua 脚本,可以在服务器端执行复杂的逻辑操作,避免了多次网络往返,提高了操作的原子性和性能。
2024-07-12 08:35:45
523
原创 【总结】项目中用过的设计模式
当需要创建的对象具有相似的接口,但具体实现可能不同时,可以使用工厂模式。例如,日志记录器、数据库访问等。:当频繁使用同一个对象,如配置信息、数据库连接池、线程池等时,使用单例模式可以避免重复创建对象,节省资源。落地页的处理: h5、js、deeplink、callback。1.单例模式(饿汉式 、懒汉式)
2024-06-12 10:49:53
710
原创 spring
5.InitalizeBean: 构造方法 > postConstruct >afterPropertiesSet > init方法。4.处理回调applicationcontextAware。3.依赖注入autowired set方法。一、spring中bean的生命周期。1.推断构造方法(有参、无参)2.实例化 设置属性值。6.aop: 代理对象。
2024-06-11 10:38:52
278
原创 【leetcode】LRU & LFU
然而,有利就有弊,虚拟页式存储管理增加了进程所需的内存空间,却也带来了运行时间变长这一缺点:进程运行过程中,不可避免地要把在外存中存放的一些信息和内存中已有的进行交换,由于外存的低速,这一步骤所花费的时间不可忽略。因而,采取尽量好的算法以减少读取外存的次数,也是相当有意义的事情。关于操作系统的内存管理,如何节省利用容量不大的内存为最多的进程提供资源,一直是研究的重要方向。LRU是Least Recently Used的缩写,即最近最少使用,常用于页面置换算法,是为虚拟页式存储管理服务的。
2024-06-07 14:23:08
376
原创 限流定义、算法、实施方案
需要注意的是借助Redis实现的限流方案可用于分布式系统,而guava实现的限流只能应用于单机环境。如果你觉得服务器端限流麻烦,可以在不改任何代码的情况下直接使用容器限流(Nginx或Tomcat),但前提是能满足项目中的业务需求。配置中,maxThreads 就是 Tomcat 的最大线程数,当请求的并发大于此值(maxThreads)时,请求就会排队执行,这样就完成了限流的目的。把令牌放到桶中,拿到令牌的请求被执行,否则丢弃。另,有恒定的速率把令牌放入桶中。把请求放到桶中,以恒定的速率漏出请求。
2024-06-07 09:55:41
392
转载 【转】《Elasticsearch 源码解析与优化实战》第16章:ThreadPool模块分析
《Elasticsearch 源码解析与优化实战》第16章:ThreadPool模块分析_enum class threadpooltype-优快云博客
2024-06-04 16:43:14
54
原创 【转】ES, 广告索引
2)广告层级索引如何解决? -routing、join3)查询的过程:query and fetch, 优化掉fetch4)segment合并策略5)全量写入时副本数为16)消息乱序,保证广告的正确: 版本号之前分享了一篇文章 广告倒排索引架构与优化,介绍我们的ES广告倒排索引的架构与优化,我就不介绍了,建议先去看下这篇文章,再回来看这篇,下面只放下之前的架构图ES倒排索引原有架构是在代码中写 MQ 消息,然后 index_builder 消费消息,写入到两个索引中。但这种方式有个不足是不能覆盖所有的订单或
2024-06-04 16:12:43
1189
1
原创 【leetcode】滑动窗口最大值
a)如果num[0]< res, 说明最大值在max(num[1],num[2]....num[k-1]) == res, 右移后,只需要判断新元素和res的最大值即可。已知num[0], num[1] ....num[k-1] 区间最大值为res,向右移动一次后,只需要比较num[0] 和res的大小。b)如果num[0]= res, 不确定右移后最大值为哪个,则逐个判断num[1~ k]的滑动窗口从数组的最左侧移动到数组的最右侧。一行整数,包含每个窗口中的最大值,以空格分隔。在这里给出相应的输出。
2024-05-17 15:27:48
240
原创 【leetcode】大山的数目
2)当m[i][j] 为1时, 如果m[i-1][j] 和m[i][j-1] 都不为0, 说明是新出现的大山和之前的不能连接,此时需要把count数自增。Drizzle 前往山地统计大山的数目,现在收到这片区域的地图,地图中用0(平地)和1(山峰)绘制而成,请你帮忙计算其中的大山数目。山总是被平地四面包围着,每一座山只能在水平或垂直方向上连接相邻的山峰而形成。第一行输入M,N分别表示地图的行列,接下来M行每行输入N个数字表示地图。另外,你可以假设地图的四面都被平地包围着。输出一个整数表示大山的数目。
2024-05-17 11:55:51
397
原创 leetcode 求两个数组的交集
例如: nums1的内容是[1,2,6,5,9,8],nums2的内容是[3,9,6],最后输出的结果是[6,9]。1. 由于数据量级较少,可以使用bitset或者int[1000]数组。给两个整型数组 nums1 和 nums2 ,返回 它们的交集。输出结果中的每个元素一定是 唯一 的。输出结果按照从小到大排列。数组内元素用逗号分隔,数组与数组间用分号分割。输出两个数组中都包含的元素,且是唯一的。在这里给出相应的输出。在这里输入二组数组。
2024-05-11 16:38:28
239
原创 leetcode 去除重复字母
3.贪心法: 后来的字符如果比前面的小,如果前面的元素满足下面的条件,则弹出前面的元素,保证在前面的字符每次都选最小的字符。s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。2)该字符比待插入的字符字典序大。2.标记字符后续是否还会出现。条件: 1)该字符后续还会出现。思路: 1.标记字符是否已经使用过。
2024-05-09 18:21:16
316
原创 leetcode 并查集
如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友。如果M[i][j] = 1,表示已知第 i 个和 j 个学生互为朋友关系,否则为不知道。说明:已知学生0和学生1互为朋友,学生1和学生2互为朋友,所以学生0和学生2也是朋友,所以他们三个在一个朋友圈,返回1。例如: 1 1 0|1 1 0|0 0 1。如果有M[i][j] = 1,则有M[j][i] = 1。说明:已知学生0和学生1互为朋友,他们在一个朋友圈。对于所有学生,有M[i][i] = 1。
2024-05-09 16:21:30
386
原创 restTemplate Invalid ‘expires‘ attribute: Sat, 18 Apr 2054 02:50:25 GMT、
Sat, 18 Apr 2054 02:50:25 GMT、日期解析失败,使用标准的cookie解析方式。
2024-04-25 11:57:27
582
原创 restTemplate请求,报 : No instances avaliable for 地址错误
restTemplate注解上加了@LoadBalance注解,会通过服务名调用注册中心内注册的服务。方案2. 如果不能去掉@LoadBalance注解,可以再创建个bean,引用新bean。方案3. 使用httpclikent/okhttp等方式替换掉restTemplate。方案1.去掉@LoadBalance注解。
2024-04-16 16:00:40
1173
原创 hadoop有多个输入路径怎么处理
将文件名设置为输出的key,从而实现对每个输入文件的处理。对象可以获取当前处理的文件的路径,然后使用。方法来添加多个输入路径。这样,就可以实现对多个输入路径的处理了。对象,并设置相关的参数和配置信息。可以添加任意数量的输入路径。在Hadoop中,可以使用。在Mapper中,可以通过。
2023-03-07 16:30:27
656
1
原创 hadoop, lzo文件怎么查看
其中,filename.lzo是要解压缩的LZO文件名。解压缩后,可以使用常规的文本查看工具,如cat、less等来查看文件内容。LZO是一种压缩算法,Hadoop支持LZO格式的文件。如果要查看LZO格式的文件内容,需要先解压缩。该命令将会把LZO文件中的内容解压缩并以文本格式输出。
2023-03-07 15:54:31
677
原创 系统重装后,java程序元java 开发环境搭建
系统重装呀、换电脑啊,这些操作都要做一遍,好麻烦,不知道有没有自动集成的。1.java 环境变量https://blog.youkuaiyun.com/weixin_40928253/article/details/83590136https://blog.youkuaiyun.com/yuan5025/article/details/1086892012.mavenhttps://blog.youkuaiyun.com/huo920/article/details/820824033.githttps://www
2023-03-03 17:56:57
255
原创 工具篇:[git] idea查看特定的git提交
1.目的团队协作中,想查看某个人的提交或者包含特定关键字的提交记录2.实践第一步:vcs-git-show history 或者项目目录点击右键-git-show history第二步:把versioncontrol的tab页切换到Log搜索框:搜索关键字branch:指定特定的分支User: 提交人Date: 提交日期Paths:文件路径...
2021-08-10 15:03:42
1357
原创 工具篇:[git] 合并多次提交
背景: 一个功能由于各种原因,可能会分多次提交,git 提供了功能可以把多次提交合并为1个实践:使用的windows系统+git+sublime ,其中sunlime是必备1.使用git log 找到要合并的commit 的信息2.git rebase -i param , 此处的param替换为要合并的commit的值,黄色部分3.执行命令后 会弹出一个文本框,保留第一个pick,其余的pick替换为s, 保存4.保存成功后,弹出文本框需要修改commit mes...
2021-08-10 15:03:14
1308
原创 java编译器-未完
https://tech.meituan.com/2020/10/22/java-jit-practice-in-meituan.htmlJava即时编译器原理解析及实践
2021-05-11 10:31:33
146
原创 IP,string和long做相互转化
IP,string和long做相互转化public class TransIpToLongNumber { public static void main(String[] args) { TransIpToLongNumber toLongNumber = new TransIpToLongNumber(); String ip = "250.254.253.1"; long res = toLongNumber.ipToLong(ip); System.out.println
2021-02-05 15:00:20
308
原创 【IP篇】spring项目获取远程ip
目录1.spring项目获取请求端ip。2.上面的场景如何mock指定的客户端ip呢?3.服务器的地址和端口如何获取呢1.spring项目获取请求端ip。request.getRemoteAddr()当有多层代理时,取请求头里的第一个public String getRemoteIp(HttpServletRequest request) { String strXff = request.getHeader("X-Forwarded-For"); if (s
2020-05-15 14:39:26
816
原创 springboot获取启动项参数
1.背景通过启动传入参数,正常的http-port/属性都可以这么获取。下文demo实现获取第一个参数2.实现@SpringBootApplicationpublic class PgadtoolApplication implements CommandLineRunner { public static void main(String[] args) { Spri...
2020-04-24 15:36:14
1547
原创 【问】GET请求content_type错误引起的400
1. 问题描述 客户端收集点击上报的时候,会给第三方同时上报。最近发现,两者数量存在较大的差异。 首先确定了差异较大的客户端版本,客户端使用HTTP2.0发起GET请求,抓包发现和正常请求有以下两处不同。 1.自家使用的HTTP/1.1协议,第三方使用的HTTP/2.0协议。 2.由于历史原因请求头Content-Type为appl...
2019-10-25 16:36:19
980
原创 java 模拟HTTP2.0请求
关于HTTP/1.0 HTTP/1.1HTTP/2.0 https://www.cnblogs.com/heluan/p/8620312.html目前主流网站如某宝某东都已经支持,下面将用java程序模拟发起HTTP/2.0 GET请求。要求:Jdk 1.9+ 编译: jdk1.9 工具:idea第一步 创建项目第二步 source目录下创建module-info...
2019-10-25 16:24:26
4245
1
原创 guava java split和join
1. 引入依赖 <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>18.0</version> </dependency>...
2019-09-25 15:58:45
295
原创 springboot-实现动态定时任务
@Data@Component@EnableSchedulingpublic class DynamicTask implements SchedulingConfigurer { /** * 动态修改的cron参数. 通过外部接口修改该项就可以实现动态修改 */ private String cron = "0/15 * * * * ?" ; ...
2019-09-18 16:40:57
273
原创 git revert 代码丢失解决
问题描述: 我从dev分支新开一个分支A,在A上开发并提交,然后合并A到dev,同事在dev上继续提交&合并新的代码, 然后同事说你这个A上的代码优先级低,dev上的东西马上要上线,好吧,把dev上关于A的代码revert掉 然后,问题就来了,有一天A要上线,我把dev合到A,哎哟,A上的功能没了,没了。。。 为什么呢,A和dev合并的时候,认为我上次revert的...
2019-08-13 16:23:38
4594
原创 CaseInsensitiveComparator java
String 类看了忽略大小写的源码,觉得奇怪,源码如下 ,为什么大写不相等,还要判断小写呢,按说转成大写后不相等,转成小写就有可能相等吗 private static class CaseInsensitiveComparator implements Comparator<String>, java.io.Serializable { ...
2019-01-17 16:30:32
500
1
转载 JDK1.8并发之synchronized和Lock
什么是线程安全?线程安全是指保证多线程环境下共享的、可修改的状态的正确性。保证线程安全的两个办法:封装:将对象的内部状态隐藏、保护起来。不可变:final变量产生了某种程度地不可变(immutable)效果,可以用于保护只读数据。线程安全需要保证几个基本特性:原子性:相关操作不会中途被其他线程干扰,一般通过同步机制实现。可见性:一个线程修改了某个共享变量,其状态能够立即被其他线...
2019-01-09 15:36:46
860
转载 API接口防止参数篡改和重放攻击
API重放攻击(Replay Attacks)又称重播攻击、回放攻击。他的原理就是把之前窃听到的数据原封不动的重新发送给接收方。HTTPS并不能防止这种攻击,虽然传输的数据是经过加密的,窃听者无法得到数据的准确定义,但是可以从请求的接收方地址分析出这些数据的作用。比如用户登录请求时攻击者虽然无法窃听密码,但是却可以截取加密后的口令然后将其重放,从而利用这种方式进行有效的攻击。所谓重放...
2018-08-17 10:50:07
11777
7
x-pack-core-6.2.2.jar
2019-05-13
纸牌游戏,黑杰克,23点
2013-12-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人