自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

博客

没记性所以要烂笔头

  • 博客(75)
  • 资源 (1)
  • 收藏
  • 关注

原创 6.824笔记 Lab 1: MapReduce

6.824 Lab 1: MapReduce文档创建时间:3月6日 14:43All-pass-time:3月13日13:08:42原始物料一个单进程的顺序执行的简单mrsrc/main/mrsequential.go两个mr应用mrapps/wc.go WordCountermrapps/indexer.go text indexerwordCounter的启动方法如下$ cd ~/6.824$ cd src/main$ go build -race -buildmode=pl

2022-03-13 19:40:58 2873 1

原创 A Web Crawler With asyncio Coroutines 笔记

http://aosabook.org/en/500L/a-web-crawler-with-asyncio-coroutines.htmlhttps://github.com/aosabook/500lines这篇在收藏夹里躺了很多年了 只想读完清掉 看情况要不要读这个系列的其他章节引言计算机科学总是强调算法的时间复杂度,但是在网络编程中io速度才是瓶颈。爬虫是典型的IO密集应用。如果每个请求开个线程等,系统资源会在socket资源耗尽前耗尽。避免对线程消耗太大的方法是用异步io这个例子分三个阶

2022-02-20 14:33:38 810

原创 Django 官方教程 Writing your first Django app

https://docs.djangoproject.com/en/3.2/intro/tutorial01/3.2版本创建项目$ django-admin startproject mysitemanage.py: 框架提供的命令行启动工具文件,接受参数实现不同的启动配置mysite/asgi.py和mysite/wsgi.py: 这里需要理解网关的概念 这篇博客 解释的非常清楚 可以理解为web 服务器和 web 应用之间的中间层。为什么需要中间层 python manage.py ru

2021-09-23 17:15:38 148

原创 KMP学习笔记

原理失配的时候直接移动模式串到失配的位置(即已经匹配的长度)来加快速度,但是可能会漏掉已经匹配的这部分里前后缀相同的情况,所以需要计算部分匹配值pmPM=maxlen(前缀=后缀) 前缀不包括最后一个字符 后缀不包括第一个字符由上可知如果当前位置失配 移动的位数为已经匹配的位数-当前这一位的pm设当前位置为j 则位数即move=(j-1)-pm[j-1]令pm右移一位 得到next数组 ...

2021-09-05 16:13:35 220

原创 vue 基础笔记

https://cn.vuejs.org/v2/guide/https://pan.baidu.com/s/1EMT0XR72FqTx27Z-oH3g0A标识一个dom的方式有 id="id"和class="class"两种在vue的挂载点中拿到的方式可以是el:"#id"和el:".class"一般使用id选择器,因为约定了唯一性只有双标签才能被vue挂载,除了html和body一般用div标签挂载是因为它没有样式@click和v-on:click等价v-show和v-if的效果等价 sh

2021-09-04 22:31:36 128 1

原创 数据库的各种连表

本文按MySQL必知必会的架构组织内连接又叫等值连接使用where关键字连接 同时可以使用inner join tableA, tableB on tableA.word = tableB.word自连接表自身进行连接select p1.id, p1.name from products as p1, products as p2where p1.id = p2.id and p2.id = ''xxx"自然连接不是某个关键字,而是在选多个表的列的时候自己的操作,使得多个表的同名列只出现一次

2021-07-01 22:55:28 220

原创 cpp和Java hash map的底层数据结构

做力扣lru的时候发现各种题目和题解都强调get和put的方法需要在O(1)时间复杂度下完成,这道题需要用map维护key到地址的映射是非常显然的事情说到map很容易想到红黑树,它查找的时间复杂度是logn,不是O(1)于是觉得是牛客上的题目描述有问题,转向官网官方题解,最后对时间复杂度的分析竟然还是1,很不能理解。看到其使用的是unordered_map,然后搜一下发现这玩意底层用的是哈希表,没有顺序,但是查询非常快。常用的map底层用的是红黑树,维护了有序性,但是建树、增删查改都更费时。于是很疑

2021-06-27 17:53:46 256

原创 翻转链表问题集合

基本思路是将头插法组织的链表重新进行一次头插 对尾插法组织的链表重新进行一次尾插为没有头结点的链表添加头结点以维护需要返回的位置是非常常用的技巧206 反转链表class Solution {public: ListNode *headSolve(ListNode *head) { ListNode *tHead = new ListNode(0); while (head) { ListNode *p = head->next;

2021-06-20 23:39:15 116 1

原创 Java wiki笔记 雪花算法和validation参数校验

美团的自增ID文章看起来不错的知乎回答唯一、趋势递增(聚集索引的要求)、单调递增(一些需求的要求)、信息安全(不能连续)思路1:根据mac地址等信息构造的UUID 有安全风险思路2:时间戳+机器标识+序列号 机器的时间不能回滚,否则造成服务不可用状态validation本质还是注解看这篇打上注解之后靠aop实现语义...

2021-05-21 01:35:04 107

原创 Java wiki笔记 过滤器、拦截器、AOP

过滤器filter 是一个容器层的概念 是责任链模式的应用创建一个类 实现servlet包的Filter接口 用@Component注解托管给springboot可以配置多个filter 每个filter只能响应一次 响应顺序看这篇博客 @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) th

2021-05-19 00:48:01 67

原创 数据结构复习-排序

内部排序排序期间,元素全部存放在内存中的排序。并非所有内部排序都要基于比较操作,基数排序不基于比较。关注时间复杂度、空间复杂度、稳定性插入排序直接插入排序 折半插入排序 希尔排序(缩小增量排序)取一个递减数组 从中取步长 将需要排序的数组按步长分为子数组 进行插入排序 达到基本有序的状态 某些步长数组的平均时间复杂度可以达到1.3次方交换排序冒泡排序 快速排序选择排序简单选择排序 堆排序注意建堆的两种方法,一个个插入的nlogn、满足完全二叉树后从根到底的perdo

2021-05-04 13:27:00 83

原创 Java wiki笔记 后端配置

在idea的database->console中输入语句注意各个地方的引号drop table if exists test;create table test ( id bigint not null comment 'id', name varchar(50) comment '名称', primary key (id)) engine = innodb default charset = utf8mb4 comment = '测试';增加pack.

2021-04-23 21:29:45 171

原创 Java wiki笔记 Spring boot项目搭建

@SpringBootApplication中内置了@ComponentScan注解 扫描包的位置 默认只扫描当前包下的子包 需要指定路径@ComponentScan("com.jiawa")@RestController注解返回字符串@RequestMapping("/hello")注解指定url的路径和访问方式使用HTTP Client测试接口post请求不方便直接测试在项目文件夹下新建一个测试文件夹 新建一个.http的测试文件配...

2021-04-20 10:41:54 244 1

原创 Stanford Compilers PA1

每次作业完成一个编译器的一个部分:词法分析、语法分析、语义分析、代码生成PA1 写一个词法分析器 利用cpp的flex工具或者java的jlex工具把Cool的tokens转换成cpp或java代码Flex compiles your rule file (e.g., “lexer.l”) to C (or, if you are using JLex, Java) source code implementing a finite automaton recognizing the regular

2020-06-05 11:05:55 404 3

原创 单调队列

常用二元组<val,id>表示始终保持队首是区间内的最值 查询复杂度O1 入队复杂度均摊O1滑动窗口模板题线性dp中的典型应用在从队首取之前确保队首的id是在范围中的在窗口滑动的过程中确保id越合适 值越大/小的元素能适时让back的元素出队...

2020-04-07 00:52:47 124

原创 LIS的单调栈解法

这题第一问最长不上升子序列此时维护的单调栈具有不上升的性质 即非严格的递减 我们的目的是让栈中的元素尽可能的多 所以相等的元素保留在栈中第二问最长上升子序列此时需要严格递增 所以相等的元素需要替换 for(int i=0;i<n;i++)//最长不上升子序列的长度 { if(!k) stk[k++]=a[i]; ...

2020-04-03 14:40:30 519 2

原创 10 防刷限流技术

令牌桶的原理漏桶算法区别:漏桶算法无法应对突发流量 是用来平滑网络流量以固定的速率流入的操作令牌桶算法只是限制某一时刻的最大值 应对突发的流量 但是不能超过限定值...

2020-03-21 21:57:10 234

原创 9 流量削峰技术

秒杀令牌 秒杀大闸 队列泄洪现在的系统缺陷接口会被脚本不停的刷新 甚至活动未开始的时候仍然可能刷新这个接口秒杀验证逻辑和秒杀下单接口强关联 代码冗余度高秒杀验证逻辑复杂 对交易系统产生无关联负载缺陷:秒杀令牌只要活动一开始就无限制生成影响系统性能缺陷:浪潮流量涌入后系统无法应对多库存 多商品等令牌限制能力弱...

2020-03-21 21:24:08 326

原创 8 交易性能优化技术之事务型消息

异步化事务型消息模型库存的扣减操作在事务中正常进行 如果减库存的事务执行失败则将扣的库存加回来 在减库存的事务执行成功之后再发送消息库存流水状态库存售罄处理方案库存售罄标识售罄后不去操作后续流程售罄后通知各系统售罄回补上新后置流程(更新销量)销量逻辑异步化交易单逻辑异步化但是这个操作还是需要等待订单号的生成 强行异步只能依靠前端的loa...

2020-03-21 20:24:05 178

原创 7 交易性能优化技术之缓存库存

交易性能瓶颈交易验证完全依赖数据库 每一次操作 都是用sql语句的形式去数据库里读的库存行锁 所有减库存操作都是串行进行的后置处理逻辑 比如增加商品销量等信息也会影响性能交易验证优化用户风控策略优化:策略缓存模型化 判断用户id是否存在是最基础的风控策略 其他的还可以有最近是否有异常行为 将这些策略模型化 异步写入redis缓存中 然后实时拦截活动校验策略优化:引...

2020-03-21 19:44:20 248

原创 luogu P5018 对称二叉树

带权的二叉树里找一棵节点数最多的子树使得权值和结构都对称1e6这题最主要的点还是计算时间复杂度 刚看到的时候总是觉得每个点都要再往下找 那么这个复杂度显然是n方的 但是实际上是n+n/2+n/2+n/4+n/4+...+1 复杂度是严格的nlogn另外就是对树的递归的处理 我总是想在一个递归里做完所有的事情bool dfs(int x,int y){ if(x...

2020-03-06 12:14:56 103

原创 Coderforces 1279 总结

教育场一题教训:1. 不要总是想着莽过去 ac is ok 当遇到找不到的bug的时候尝试一下同样的思路下能否将算法进一步简化 从而省略中间容易出错的一些环节2. 找不到错的时候边界值可以多考虑一下3. ll的敏感度要捡回来...

2020-03-03 19:35:46 132

原创 codeforces 1311

Codeforces Round #624 (Div. 3)第一次unrated的div3 然而做了一个多小时只做出了A也是迷B题意:n个1~100的数字 给定m个位置 这m个位置可以与后面一个元素交换位置 进行任意次操作 能否使数组不递减脑补了一个对于不可以交换的位置如果后面有比它小的元素就NO否则就YES的假算法5 21 3 5 2 42 3由这个点可以看出应该是前...

2020-03-03 10:27:26 369

原创 6 静态页面性能优化

CDN的全称是Content Delivery Network可以看做无限大的内容磁盘缓存 本身是没有文件存储的 当用户访问一个资源的时候 根据路由规则查看本地是否存在这样一个文件 有则直接返回 没有则返回给原站然后根据一定的规则缓存起来静态请求CDNDNS用CNAME解析到源站 阿里云的服务回源缓存设置强推失效其中no-cache将内容缓存 但是在用的...

2020-02-28 17:37:04 325

原创 5 查询性能优化-多级缓存

缓存设计的时候考虑的问题用快速存取设备 用内存将缓存推到离用户最近的地方脏缓存清理多级缓存redis缓存热点内存本地缓存nginx proxy cache缓存nginx lua缓存redis缓存当做集中式缓存的中间件 并将其作为内存级别的存储 易失性的redis是和mysql相同的集中式存储概念所有的set和get都会到这一台redis...

2020-02-28 16:33:56 190

原创 4 分布式扩展

现在的架构单机存在容量问题 需要进行水平扩展表象:单机cpu使用率增高 memory占用增加 网络带宽使用增加cpu的使用率看 cpu us和cpu sy两个参数 分别代表用户空间的CPU使用情况和内核空间的淳朴使用情况 分别主要是由用户层代码和系统调用引起的另外还有load average参数 分别代表1,5,15分钟load平均值 0表示正常 1代...

2020-02-27 21:36:48 199

原创 第4章 商品模块开发

1. 明确表和领域模型的设计顺序 应该是先设计领域模型再设计表 因为模型的一些属性出于安全性或者性能的考虑 可能会需要在数据库层面进行分开设计2. 在mybatis-generator.xml里添加 <table tableName="item" domainObjectName="ItemDO" enableCountByExample="false" ...

2020-02-26 15:31:45 155

原创 第3章 用户模块开发

1. 使用SpringMVC的方式开发用户信息model层即之前配置的数据库对象的映射的组成 因为包括密码才是一个完整的model 再但是返回给前端的model不需要也不应该包括所有信息 所以目录结构长这个样子UserController.java 即控制层@Controller("user")//用来被spring扫描到@RequestMapping("/user")//在u...

2020-02-20 15:12:47 379

原创 第2章 应用SpringBoot完成基础项目搭建

1. 新建maven项目 添加SpringBoot依赖2. 在App.java后面添加@EnableAutoConfiguration标签 将其变成一个Spring bean 并且能够自动配置点运行 在浏览器访问url即可 看到一个默认的错误页面 说明在不需要其他配置的情况下 tomcat容器已经启动3. 添加@RestController注解和@Reques...

2020-02-20 15:11:51 143

原创 codeforces 1300

Codeforces Round #618 (Div. 2)A做的还是不快 卡了一下B 果断开了C 然后回头发现B怎么过的人这么多 就想到了 最后抄板子过了D 一度以为能直接到蓝 熬了两个小时想看颜色变化 顶不死睡了起床发现只涨了100 而且也没有以前有过的涨很多分的congratulationA题意:一次操作可以使数组的某个元素自增一次问最少的操作次数使得数组元素的和与积不为...

2020-02-11 12:41:02 132

原创 codeforces 1296

Codeforces Round #617 (Div. 3)补完了整场 contest里面真的会变成绿色 和题目ac的样子一样ABD没啥好说的C题意:给一个LRUD组成的字符串(2e5)分别代表上下左右 问不改变终点可以删除的最短连续子串打的时候知道要nlogn 知道要么是二分找位置要么是map存 但是深夜状态不好 这种在cf上做臭了的题竟然被卡了 一直想用两个map分别...

2020-02-07 22:44:38 275

原创 JDBC

步骤为项目导入mysql-jdbc的jar包初始化驱动 通过类加载器将驱动在内存中进行注册建立与数据库的连接创建Statement执行SQL语句关闭连接(finally关键字) 或者使用try-with-resource的方式自动关闭连接 Connection和Statement都实现了AutoCloseable接口 所以可以使用public class DBUtil { ...

2020-02-06 16:13:15 127

原创 codeforces 1291

Codeforces Round #616 (Div. 2)F交互题想了一会 还是决定上蓝之前还是不考虑补了 失去了达成“补完全场”成就的机会。。A题意:定义各位相加为偶数的奇数为xx数给一个数 删除某些位 使得这个数变成xx数打的时候又是判断总共奇数的个数 又是存起来再删再输出 写了很久 第一发还漏掉了前导0的情况没有处理 很亏其实只要按序输出这个数字里的两个奇数即可...

2020-02-04 16:03:18 245

原创 codeforces 1295

B题意:01串s 0的权值为1 1的权值为-1 无数个s相连形成ssss有多少前缀的权值为x题解:打的时候包括赛后继续怼的时候都陷在了对所有可能情况的分类讨论中 讨论完了正数发现负数不能规避 弃了 其实对于这个教育场B这个位置的题目都会有简单方法的考虑x=pre[i]+k*pre[n] and k>=0 这个条件的成立即可 对pre[n]==0和x==0的两个特殊情况再进行讨论...

2020-01-31 14:31:11 287

原创 codeforces 1285

B题意:一个任意数组 判断任何一个子数组的部分和都严格小于数组的全部和是否成立题解:很容易想到经典的最大子串和问题 然而我在继续往这个方向想的时候就陷入了各种特殊情况判断的纠结中 其实只需要求最大子串的起点和终点 判断起点和终点是否是数组的起点和终点即可int main(){// freopen("in.txt","r",stdin); int T,n; bool ...

2020-01-13 15:34:12 1426

原创 LeetCode 837 概率dp

昨天pdd的笔试题 最后不想做了想清楚了自己的代码只满足了只走一步的情况就没做了 今天补一下题意:输入m a r 该开始在0 每次随机走1~r步 如果当前小于a就继续走 求最后位置小于等于m的概率/** 昨天的代码1 没有考虑到到了a之后就不能再往后走了*/#include <bits/stdc++.h>using namespace std;const i...

2020-01-05 09:27:44 280

原创 PAT 常考题 cpp kit

考前最后一波看题仔细参数的含义不要弄错一定时间内找不到错误并且确定算法没有问题可以考虑重写优先队列//升序队列priority_queue <int,vector<int>,greater<int> > q;//降序队列priority_queue <int,vector<int>,less<int> >q;...

2019-09-07 20:34:48 154

原创 PAT 1129 Recommendation System STL的使用

题意:逐步观察 输出当前出现次数最多的k个数字 按出现次数大小排序 次数相同 序号小的大1. 码力倒退的太严重了 没有想明白用Node怎么建立索引 搜题解才知道不用建立结构体数组 直接把一个值作为索引 另外一个值放在数组外面然后放到容器中查询即可2. 刚开始总想着用数组 但是sort自然不可能 手写插入排序在顺序表中也不方便维护 写链表更是石乐志 后来想用优先队列 但是优先队列取出元素的操...

2019-09-05 14:30:05 148

原创 PAT 1145 Hashing - Average Search Time (25 分)

首先要认识Quadratic这个单词其次要知道下面这张ppt 但是这张ppt里面的q的范围是有条件的 要满足4k+3的形式 第二个测试点的n为2 就会卡掉一分这题搜了题解还调了100+min真难#include <bits/stdc++.h>using namespace std;const int N=1e5;bool isPrime(int x){ ...

2019-08-16 20:15:28 127

原创 Spring学习-4-属性配置细节

字面值字面值:可用字符串表示的值,可以通过<value>元素标签或value属性进行注入基本数据类型及封装类、String等类型都可以采取字面值注入的方式若字面值中包含特殊字符,可以使用<![CDATA[]]>把字面值包裹起来在 Bean 的配置文件中, 可以通过<ref> 元素或 ref 属性为 Bean 的属性或构造器参数指定对 Bean 的引用....

2019-04-17 15:33:07 96

Git官方文档

Git的官方文档 中英文的三种常见版本都有 epub、mobi、pdf

2019-02-13

空空如也

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

TA关注的人

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