自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 P3808 【模板】AC自动机(简单版)

题目#include<bits/stdc++.h>using namespace std;const int N=1000000<<2;queue<int>q;struct AC_Auto{ int t[N][26],val[N],fail[N],tot; void ins(char *s){ int len=strlen(s),now=0; for(int i=0;i<len;++i){

2020-12-04 15:37:59 29

原创 P5357 【模板】AC自动机(二次加强版)

题目#include<bits/stdc++.h>using namespace std;const int N=1000000<<2;struct AC_Auto{ int t[N][26],fail[N],tot; int qhead=1,qtail=0,q[N];//queue int head[N],nex[N/4+5];//链表 void ins(char *s,int id){ int len=strlen(s),

2020-12-04 15:35:01 29

原创 leetcode 95. 不同的二叉搜索树 II(给一个数n 求1-n所有不同的二叉搜索树 首先结果是卡特兰 然后枚举所有情况)

题目class Solution {public: TreeNode* clone(TreeNode *root,int diff){ if(root==NULL) return root; TreeNode* newroot=new TreeNode(root->val+diff); newroot->left=clone(root->left,diff); newroot->right=clone(r

2020-11-11 16:44:13 31

原创 leetcode 437. 路径总和 III(sum[a]-sum[b的父亲]==k 说明a-b路径和为k)

题目++mp[0]千万不能忘!!记住要先更新ans,再放入map;class Solution {public: int ans; map<int,int>mp; void getsum(TreeNode *x,int pre,int sum){ if(x==NULL) return; int val=pre+(x->val); ans+=mp[val-sum],++mp[val];//先更新ans,再更

2020-11-09 22:47:16 28

原创 leetcode 114. 二叉树展开为链表(右子树挪到左子树最右 左子树挪到右边 左子树为空)

题目class Solution {public: void flatten(TreeNode* root) { TreeNode* cur=root; while(root!=NULL){ TreeNode* left=root->left,*right=root->right; if(left==NULL) {root=right;continue;} TreeNo

2020-11-08 00:10:20 36

原创 leetcode 543. 二叉树的直径(无脑 多叉树直径则要换根dp)

题目class Solution {public: int ans=0; int getdep(TreeNode *root){ if(root==NULL) return 0; int dep1=getdep(root->left),dep2=getdep(root->right); ans=max(ans,dep1+dep2+1); return max(dep1,dep2)+1; } in

2020-11-07 21:52:03 30

原创 leetcode 105. 从前序与中序遍历序列构造二叉树(啊啊啊啊啊啊啊)

题目class Solution {#define ll long longpublic: int i=0,j=0; //i表示当前要构造树的根节点 TreeNode* cal(vector<int>&pre,vector<int>&in,ll mid){ if(i==pre.size()) return NULL; //in[j]==mid说明中序的时候终于达到了根节点, 说明这个cal()创建子树的任

2020-11-07 17:51:06 29

原创 leetcode 102. 二叉树的层序遍历(使用q.size() q里面不用存放节点深度)

题目class Solution {public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>>ans; if(root==NULL) return ans; queue<TreeNode*>q; q.push(root); while(!q.empty()){

2020-11-07 16:14:52 29

原创 leetcode 101. 对称二叉树(递归/队列(类似bfs))

题目class Solution {public: bool dfs(TreeNode *left,TreeNode *right){ if(left==NULL&&right==NULL) return true; if(left==NULL||right==NULL) return false; if(left->val!=right->val) return false; return dfs(l

2020-11-07 15:37:56 26

原创 leetcode 98. 验证二叉搜索树(中序遍历应该是顺序递增)

中序遍历时,判断当前节点是否大于中序遍历的前一个节点,如果大于,说明满足 BST,继续遍历;否则直接返回 false。class Solution {#define ll long longpublic: ll pre=(1LL<<60)*-1; bool isValidBST(TreeNode* root) { if(root==NULL) return true; if(!isValidBST(root->left)) retur.

2020-11-07 14:50:02 77

原创 康复计划

POJ1664(m个相同苹果放在同样的n个盘子里有多少种方法)dp[i][j]:i个苹果放在j个相同的盘子i<j: dp[i][j]=dp[i][j-1];i>=j: dp[i][j]=dp[i-j][j]+dp[i][j-1]dp[0][1-n]=1

2020-10-31 22:02:06 48

原创 leetcode 24. 两两交换链表中的节点

题目class Solution { public ListNode swapPairs(ListNode sb) { if(sb==null) return sb; ListNode head=new ListNode();head.next=sb; int flag=0; ListNode pre=head,now=sb,tmp=now.next,tmpnext=(tmp!=null)?tmp.next:null;

2020-10-29 20:54:24 37

原创 Redis一些常见问题

多个系统同时并发竞争一个keyRedis线程模型缓存与数据库双写如何保存一致性

2020-10-29 14:50:43 45

原创 Redis:缓存雪崩、击穿、穿透

文章目录雪崩(key都过期了)击穿(大量被访问热点key突然过期)穿透(key在redis/db都不存在)总结雪崩(key都过期了)现象:redis若采用定时刷新(redis),某时刻秒杀的时候可能redis里所有的key都失效了,都会大量请求去请求数据库,而数据库马上就挂了,重启之后又被新的流量打死了。解决:2.1. 把每个key的失效时间设置一个随机值,可以保证数据不会在同一时间大面积失效。2.2. 或者设置热点数据永不过期,有更新操作就更新缓存就好了(比如更新了首页商品,刷下缓存就行了(但

2020-10-29 14:11:24 315 3

原创 Redis集群及主从复制

Redis集群介绍Redis 集群是一个提供在多个Redis间节点间共享数据的程序集。Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误.Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令. Redis 集群的优势:自动分割数据到不同的节点上。整个集群的部分节点失败或者不可达的情况下能够继续处理命令。Redis 集群的数据分片Redi

2020-10-29 12:30:33 39

原创 Redis 持久化

文章目录RDB工作方式RDB优缺点AOF工作方式AOF优缺点RDB工作方式RDB优缺点AOF工作方式AOF优缺点

2020-10-29 09:35:52 35

原创 Redis分布式锁

在多线程并发的情况下,我们可以使用锁来保证一个代码块在同一时间内只能由一个线程访问。比如Java的synchronized关键字和Reentrantlock类等等。这样子可以保证在同一个JVM进程内的多个线程同步执行。如:...

2020-10-28 20:12:56 54 1

原创 leetcode 25. K 个一组翻转链表

题目class Solution { public ListNode caltail(ListNode pretail,ListNode head,int k){//上一组的尾巴,当前组的头 返回当前组的尾巴 //反转完之后 将pretail的next指向反转后的当前组的头,反转后当前组的尾巴指向原来头指向的next ListNode curhead=head,curtail=null,curnext=null;//当前组未反转前的head,tail,next;

2020-10-28 08:53:05 33

原创 leetcode 23. 合并K个升序链表(归并合并 时间:klogk*n 空间logk)

题目注意lists为空时,归并时会l<r,导致一直递归。。栈溢出class Solution { public ListNode[] lists; public ListNode mergeTwo(ListNode l1,ListNode l2){ ListNode head=new ListNode(); ListNode now=head; while(l1!=null&&l2!=null){

2020-10-27 19:58:40 36

原创 leetcode 21. 合并两个有序链表

题目虚拟一个头节点,直接归并。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.ne

2020-10-27 18:45:40 33

原创 leetcode 19. 删除链表的倒数第N个节点 (哦我不想无意义的双指针)

题目/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; }

2020-10-27 18:29:25 30

原创 leetcode 146. LRU缓存机制(HashMap+双向链表)

题目定义Node: class Node{ Node pre,next; int key,val; public Node(){} public Node(int key,int value){ this.key=key; this.val=value; } }map里面存的是<key,Node>.为什么Node里面要存key: map容量过

2020-10-26 20:55:05 24

原创 leetcode 149. 直线上最多的点数(n个点 最大多少点在同一直线 枚举n个点,分别求通过该点点数最多的直线)

题目枚举n个点,分别求通过该点点数最多的直线,就是将斜率放在map里。由于double不精确,还涉及到÷0的问题。直接将 p1[1]-p0[1]/p1[0]-p0[0]的最简形式为y/x; x/d+"#"+y/d; 这个作为HashMap的key。一开始将y/x封装成了一个类,结果根本不行,因为不会重写HashCode....好想念c++里的map..可以pairgcd(3,0)=3,gcd(0,3)=3class Solution { public int max(int a,int b

2020-10-26 15:42:10 35

原创 LeetCode 2. 两数相加

果然我就是一碰到链表题就死了!!啊!啊!屁链表屁链表屁链表屁链表屁链表屁链表屁链表烦死了 一堆臭节点!!!!!!!下面代码我一开始的写法是:now其实现在指向最后一个节点,我们想要把这个节点设置为null,或者这个节点的pre的next设置为空。很明显,now=null,只能将now这个引用不指向别人。把这个节点设置为null这一步只能是自己把它的引用都断掉,让垃圾收集器去把它变为null。所以只能记录下now的pre了,那就是cnm!!!(cnm.next=null,自然链表到这里就会结束了),最

2020-10-25 14:32:11 31

原创 Executor

文章目录线程池状态构造方法工作方式几种线程池newFixedThreadPoolnewCachedThreadPoolnewSingleThreadExecutor提交任务关闭线程池线程池状态构造方法工作方式几种线程池newFixedThreadPoolnewCachedThreadPool如果每个任务时间较长,那新来一个任务,别的线程都在执行任务的可能性很大,又要创建一个新的线程。浪费资源。newSingleThreadExecutor提交任务关闭线程池shut

2020-10-25 10:31:32 29

原创 手写线程池

文章目录阻塞队列coreSize用完了,队列也满了采用了 才用这个接口的实现类的方法线程池测试本文代码可能会因为某些地方没有加锁,会抛出异常!请谨慎食用。写这个只是为了更好地了解线程池的实现。阻塞队列public class BlockQueue<T> { private Deque<T> queue=new ArrayDeque<>(); private int capcity; private ReentrantLock lock=new

2020-10-25 00:07:26 65 2

原创 ThreadLocal应用及原理

文章目录使用Demo运用场景源码使用Demopublic class Test1 { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public static void main(String[] args) { Tes.

2020-10-24 00:04:25 127 3

原创 try catch finally用法

添加链接描述

2020-10-22 18:30:30 26

原创 ReentrantLock理解及源码分析

嗷,啥也不会。

2020-10-22 11:05:12 95 3

原创 synchronized原理

文章目录对象头Monitor(synchronized的重量锁通过它来实现)机制wait()、notify()偏向锁应用场景(就是通过什么场景发现synchronized需要优化,进而诞生偏向锁)存在意义轻量锁存在意义重量锁对象头假如对象是非数组类型,则没有 Array Length这一项。从上往下分别是 无锁,偏向锁,轻量锁,重量锁,GC标记。Monitor(synchronized的重量锁通过它来实现)机制(挖坑)wait()、notify()偏向锁应用场景(就是

2020-10-21 20:51:39 851 7

原创 内存溢出代码实例

挖坑

2020-10-17 00:08:49 30

原创 强、软、弱、虚引用

挖坑

2020-10-17 00:06:44 18

原创 方法调用(主要是重写)

挖坑

2020-10-17 00:04:24 21

原创 垃圾回收策略以及经典垃圾收集器

挖坑

2020-10-17 00:01:51 20

原创 虚拟机对象探秘

挖坑

2020-10-17 00:00:11 500

原创 类加载器

双亲委派模型破坏双亲委派模型

2020-10-16 20:00:18 59

原创 类加载过程

文章目录类加载的时机类加载的过程类加载器类加载的时机上图中,加载、验证、准备、初始化和卸载这五个阶段的顺序是确定的,类型的加载过程必须按照这种顺序按部就班地开始,而解析阶段则不一定:它在某些情况下可以在初始化阶段之后再开始,这是为了支持Java语言的运行时绑定特性(也称为动态绑定或晚期绑定)。请注意,这里写的是按部就班地“开始”,而不是按部就班地“进行”或“完成”,强调这点是因为这些阶段通常都是互相交叉地混合进行的,会在一个阶段的过程中调用、激活另一阶段。关于在什么情况下需要开始类加载过程的第一个

2020-10-14 22:09:49 41

原创 类与成员的4种访问权限(JAVA)

类对于类来讲,只有public或者defalut(没有修饰符的类)。1 . 用public修饰的类,对所有类可见。2 . 没有修饰符的类,只对同包下的类可见。成员权限类内同包不同包 子类不同包 非子类public++++protected+++-private+---defalut++--...

2020-09-25 12:00:09 176

原创 使用thymleaf模板引擎 springboot配置国际化页面

刚开始学的时候总是什么都不懂,如果百度 牵扯的越来越多,就算看懂也是欺骗自己感觉是看懂了,就先懂一块一块的吧,涉及整个框架的等之后的之后的之后再了解吧,毕竟现在也。。。所谓配置国际化页面就是:1.浏览器切换显示语言时,页面显示的语言也发生变化。2.点击页面上不同语言对应的链接,页面会显示相应的语言3.无论怎么改变浏览器显示的设置,语言都会是默认的语言。(其实我不知道是什么默认的。。不知道是jvm还是什么,也不知道与springboot版本相关吗。以后再说这个吧。)1 是springboot配置

2020-08-23 21:05:06 239 2

原创 java代码对hdfs文件的基本操作

一个没有部署集群的虚拟机想要 访问集群上的hadoop时:安装hadoop 然后配置core-site.xml 将fs.defaultFS参数改为hdfs://master:9000即可直接执行对应的hadoop命令即可(可执行文件)块大小和备份这些参数是要看客户端的相关配置的,与放在哪个机器无关。package hdfs04;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.*;import or

2020-08-05 13:37:45 58

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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