自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LevelDB概述

@[TOC]LevelDB概述特性他是一个key、value存储数据库。数据按照key的字典序进行排序,也可以重载这个排序方法提供基本的增删查API:Put(key,value), Get(key), Delete(key)支持针对多条操作的原子batch操作只允许单个进程访问LevelDb的写操作要大大快于读操作,而顺序读写操作则大大快于随机读写操作。(因为一次写入操作只涉及一次...

2019-08-26 12:14:01 465

原创 拼多多2020届学霸批笔面试经验

笔试题题一 考察了corner case的处理能力给两个数组,A数组几乎是升序的(几乎的含义是数组中任意相邻的两个元素有且只存在一个a>b,a下标 = b下标-1),B数组是乱序的,要求用B数组中的一个数,替换A数组中的一个数,使A数组符合升序,若无解输出NO,有多解输出最大的那个数字。输入:1 3 7 4 92 1 5 8 9输出:8题二 考察了对递归程序的编写给一个字符...

2019-08-13 12:04:50 738

原创 Raft共识算法

本文基于对Raft Paper的阅读和翻译编写而成,如有错误欢迎指出。相关资料https://raft.github.io/https://raft.github.io/raft.pdfAbstractRaft是用于管理republicated log的一致性算法。 它产生的结果与Paxos算法类似,但它的结构与Paxos不同; 这使得Raft比Paxos更容易理解,也为算法实现提供了更...

2019-05-10 13:15:28 1546

原创 腾讯CSIG后端研发实习生面经

一面(86分钟)自我介绍一下项目Java基础equals()和hashcode()?HashMap原理ConcurrentHashMap原理JVM虚拟机巴拉巴拉巴拉数据库巴拉巴拉巴拉算法两个链表找第一个公共节点?第一次遍历通过HashMap记录节点,第二次遍历链表二,找到第一个相同的就退出。时间O(n),空间O(n)继续想想遍历两个链表,计算长度差,然后让长的链表先走...

2019-04-12 21:36:03 1960 1

原创 上海字节跳动后端研发实习生三面面经

2019年03月30日我简历上写的技能列表:计算机网络、数据结构、算法等课内基础知识:掌握(没写操作系统是因为没复习操作系统)Java 基础知识:掌握,最近在读《Java 并发编程的艺术》Linux 服务器运维相关(Jenkins 自动化部署、脚本编写、打包发布等):掌握JVM 虚拟机:掌握,看过《深入理解 JVM 虚拟机》部分章节数据库相关(Mysql、MongoDB):掌握,看过《...

2019-04-05 15:27:56 3261 4

原创 阿里妈妈技术联盟Java后端研发五轮技术面总结

昨天面完阿里的四面,持续了86分钟,算是对我这几个月学习成果的检验,暴露了很多很多的问题,心态有点崩了,我又买了两本书《大型网站技术架构》和《大型分布式网站架构》,四面对我来说比较困难,问了我如何搭建一个百亿级高并发高可用的网站,非常开放性的问题。但是我没有回答好,也问了一些听起来不难,回答起来很难受的问题。我的每一次回答,都是基于自己的理解出发,发散性地想一条说一条,理解的深的就深入讲,但他会...

2019-04-04 20:59:00 1554 4

原创 深入理解Java虚拟机(三)内存分配与回收策略

对象的内存分配,从大方向上来,就是分配在堆上。堆中有新生代和老年代,绝大多数情况下对象被分配在新生代的Eden区上,少数情况下也会直接分配在老年代上,这取决于所采取的具体的垃圾收集器组合和虚拟机中内存相关参数的配置。内存分配的通用规则对象优先在Eden分配大对象直接进入老年代长期存活的对象将进入老年代动态对象年龄判定空间分配担保...

2019-04-04 19:57:20 140

原创 深入理解Java虚拟机(二)垃圾回收

一、判断对象存活、GC Roots、引用引用计数算法可达性分析算法(从GC Roots出发,搜索关联结点,回收不可达对象)GC Roots包含的对象虚拟机栈的局部变量表中refenrence引用的对象本地方法栈中JNI引用的对象方法区中类变量引用的对象方法区中常量引用的对象Java中的引用类型强引用:强引用引用的对象不可回收软引用:软引用引用的对象在内存溢出发生之前被...

2019-04-03 16:54:06 131

原创 深入理解Java虚拟机(一)内存区域划分

Java虚拟机管理的内存包括以下几个运行时数据区一、程序计数器线程私有指示当前线程所执行到的字节码的行号。因为Java会有多线程切换,从老线程切换到某个新线程时,需要知道新线程当前已经执行到哪里了,也需要保存老线程已经执行到哪了,方便以后切回去的时候继续往下执行。二、虚拟机栈线程私有每一个方法的执行到完成对应一个帧栈在虚拟机栈中的入栈到出栈的过程。帧栈中保存方法的局部变量表、...

2019-04-03 10:44:07 112

原创 InnoDB存储引擎(五)锁

一、概述锁是数据库系统区别于文件系统的一个重要特性,锁机制可以用来管理对并发资源的访问,因此有了锁之后极大地提升了读写数据。InnoDB存储引擎同时支持行锁和表锁。二、InnoDB存储引擎中的锁2.1 锁的类型S锁和X锁是行级别的锁S锁:共享锁,事物获取了某行记录的S锁,就可以读取该行数据X锁:排他锁,事物获取了某行记录的X锁,就可以修改或者删除该行数据。S锁只和S锁兼容,X锁和...

2019-03-29 10:45:23 154

原创 Java并发编程的艺术(一)并发编程的挑战

前言今天是2019年03月19日,最近在找实习,所以读了不少书,《Java并发编程的艺术》就是其中一本,这本书比较适合入门,讲的非常简单。这本书一共有11章,我已经看完第一遍了,有的章节看了两三遍,所以通过博客的形式梳理一番阅读过的内容。我不会把整本书的内容都放进来,我想写下来的是我理解了的部分,能够整理成块的内容。并发编程就是用多线程的技术去达到更好的效率,但多线程必可避免会带来一些挑战,本...

2019-03-19 14:00:01 222

原创 InnoDB存储引擎(四)索引

一、概述在本篇博客中,我将介绍数据索引的原理、实现。InnoDB支持三种索引B+树索引哈希索引全文索引B+树索引并不能直接找到给定键值的具体行,而是找到改行所在的数据页,再把该页加载到内存中,通过Page Directory(槽是按主键顺序存放的)进行二分查找得到的。二、B+树索引2.1 聚集索引(clustered index)聚集索引特点每张表只有一个聚集索引聚集索...

2019-03-18 17:26:57 143

原创 InnoDB存储引擎(三)存储结构

一、概述在这篇博客中,我会介绍InnoDB存储引擎表的逻辑存储及实现重点分析表的物理存储特征(如行结构和页结构)。在InnoDB存储引擎中,表都是根据主键顺序组织存放的,这种存储方式叫做索引组织结构(index organized table)。在InnoDB存储引擎中,每张表都有个主键,如果在创建表的时候没有指定primary key,会自动选择或者生成:选择第一个非空唯一索引(...

2019-03-17 11:41:13 252

原创 InnoDB存储引擎(二)文件

一、概述在这篇博客中我要整理MySQL数据库和InnoDB存储引擎的各种类型文件。参数文件:数据库启动时的数据文件位置、初始化参数、各种内存大小设置日志文件:错误日志、二进制日志、慢查询日志、查询日志socket文件:套接字方式连接数据库时的文件pid文件:数据库实例进程ID文件MySQL表结构文件:存放MySQL表结构定义文件。存储引擎文件:存储了记录和索引等数据的文件。二、...

2019-03-16 17:39:37 215

原创 InnoDB存储引擎(一)概述

InnoDB存储引擎(一)1、概述2、InnoDB体系架构2.1 后台线程2.2 内存2.3 CHECKPOINT 技术2.4 Master Thread 工作方式2.5 InnoDB关键特性1、概述InnoDB是事务安全的MySQL存储引擎,支持ACID,他的特点是:· 行锁设计· 支持外键· 提供一致性非锁定读· 支持MVCC2、InnoDB体系架构InnoDB存储引擎有多个...

2019-03-13 23:33:37 597

原创 Netty线程模型

在这篇博客里我要整理以下两点内容Netty的线程模型 NioEventLoop源码分析Netty的线程模型:Reactor模式的实现,下面回顾经典的Reactor线程模型。1、Reactor单线程模型所有的I/O请求都在同一个NIO线程上进行处理:作为NIO服务端,接受客户点的TCP连接 作为NIO客户端,接受服务端的TCP连接 读取消息 应答消息单线程模型的缺点:...

2019-03-13 15:47:37 131

原创 Java垃圾收集器与内存分配策略

1 概述哪些内存需要回收?什么时候回收?如何回收?Java垃圾回收主要关注的是堆和方法区。2 Java如何判断对象存活?有种算法是引用计数算法,给每一个对象添加一个引用计数器,每当有一个地方引用他,计数器值+1,引用失效时,计数器值-1。任何时刻计数器为0的对象就是不可能在被使用的。但这种算法无法解决循环引用的问题。因此Java是通过可达性分析算法来判定对象是否存活...

2019-01-28 19:42:26 133

原创 Java内存模型

一、JVM运行时的数据区域Java虚拟机在Java程序执行的过程中会把它所管理的内存分成若干个不同的数据区域。包括:1.程序计数器(Program Counter Register)我们知道,Java是一次编译,到处运行的一种语言。这种跨平台特性是基于Java的.class文件字节码实现的。第一次编译:  Java源程序  =>  .class文件字节码(可以到处运行...

2019-01-24 21:14:00 173

原创 Spring Cloud的微服务项目的学习过程

最近在做一个Spring Clound的微服务项目.记录自己的学习过程.首先谈谈微服务的好处1.某个服务器节点出现故障,也只是停掉了那一个服务器上的服务,其他的功能的服务仍然可以供用户使用.2.每一个服务都可以看做是一个独立的项目,适合多人合作开发.3.每一个服务(项目)功能更新一个版本,上线时只需要打包那一个特定功能的项目即可,其他线上的项目功能仍能提供给用户使用.一.服务之间的调用首先要理解,...

2018-07-11 12:36:19 225

原创 Leetcode_Combination Sum 回溯法

39. Combination Sumclass Solution {public: vector> combinationSum(vector& candidates, int target) { sort(candidates.begin(),candidates.end()); vector> res; vector temp

2017-09-21 14:51:01 226

原创 Leetcode_34. Search for a Range

最近在做Leetcode的题,专题训练,每天做5道差不多,所以也在博客上记录一下题解吧。今天做了几道二分查找的题,主要是二分查找的各种变形,都要掌握。1.最原始的二分查找,返回key的下标,无则返回-1。2.数组中有重复元素,返回第一个key的下标,无则返回-1。3.数组中有重复元素,返回最后一个key的下标,无则返回-1。4.返回刚好小于key的元素下标,无则

2017-09-20 15:12:05 191

原创 PAT_1090. Highest Price in Supply Chain

#include #include #include using namespace std;int N,maxDepth=0,num=0;double P,r;struct Node{ int father,depth;}node[100005];bool isYezi[100005];int Find(int v){ int depth=0; int x=v;

2017-08-31 17:29:49 232

原创 PAT_1089. Insert or Merge

#include #include using namespace std;int a[105],b[105],N;int firstDifferent=N-1;bool InsertSort(){ for(int i=0;i<N-1;i++) { if(b[i+1]<b[i]) { firstDifferent=i+1; break; } } for

2017-08-31 10:47:51 232

原创 PAT_1088. Rational Arithmetic

#include using namespace std;long long int gcd(long long int m,long long int n){ if(n==0) return m; else return gcd(n,m%n);}void outputStandard(long long int a,long long int b){ bool isNe

2017-08-25 16:07:45 193

原创 PAT_1087. All Roads Lead to Rome

#include #include #include #include #include #include using namespace std;struct City{ string name; int happiness;}city[205]; //数字与城市的映射map m; //城市名字与数字的映射int N,K,idx=1; int G[205][205

2017-08-25 15:00:48 337

原创 PAT_1086. Tree Traversals Again

#include #include using namespace std;char str[10];int number,index=0,N;struct Node{ int val; Node *left; Node *right; Node(int v) { val=v; left=NULL; right=NULL; }};int idx=0;Nod

2017-08-23 15:37:37 177

原创 PAT_1085. Perfect Sequence

#include #include using namespace std;long long int a[100005],b[100005];int N,p;int binarySearch(int left,long long int m){ int mid,right=N-1; while(left<=right) { mid=(left+right)/2; if(

2017-08-23 10:31:16 146

原创 PAT_1084. Broken Keyboard

#include #include #include using namespace std;char A[100],B[100];//a-z对应[0,25] A-Z对应[26,51] 0-9对应[52,61] _对应62bool a[70],b[70];map m;int FindPos(char c){ if(c>='a'&&c<='z') return c-'a';

2017-08-22 17:16:20 156

原创 PAT_1083. List Grades

#include #include #include using namespace std;struct Student{ char name[15],id[15]; int grade;}stu[100005];vector v;int cmp(Student a,Student b){ return a.grade>b.grade;}int main(){ i

2017-08-22 16:50:12 155

原创 PAT_1082. Read Number in Chinese

#include using namespace std;int number[9];char a[10][5]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};char b[8][5]={"Yi","Qian","Bai","Shi","Wan","Qian","Bai","Shi"};void Print(int n,

2017-08-22 16:05:00 169

原创 PAT_1081. Rational Sum(辗转相除法)

#include using namespace std;//辗转相除法,求a和b的最大公约数long long int gcd(int a,int b){ if(b==0) return a; else return gcd(b,a%b);}int main(){ int N; long long int a1=0,b1=1,a2,b2,maxGys; scanf

2017-08-22 10:14:48 188

原创 PAT_1080. Graduate Admission

#include #include #include #include using namespace std;struct Student{ int id; int GE,GI; int choice[10]; int rank;}stu[40005];int N,M,K;int quota[105],nowQuota[105];vector school[105];

2017-08-21 17:31:22 284

原创 PAT_1079. Total Sales of Supply Chain

#include #include using namespace std;struct Tree { double weight; vector child;}t[100005];int N;double P,r,sum=0;void dfs(int v,double price){ if(t[v].weight!=-1) { sum+=t[v].weight*pr

2017-08-21 16:41:51 205

原创 PAT_1078. Hashing

#include #include using namespace std;int prime[15000],p,temp,pos;bool flag[15000],isFilled[15000];int Msize,N,outputNum=0;int SolvePrime(int m){ memset(isFilled,false,sizeof(isFilled)); mems

2017-08-21 15:27:05 155

原创 PAT_1077. Kuchiguse

#include #include using namespace std;char temp[105][260];string str[105],answer="";int main(){ int N,flag=1,resultL=0; scanf("%d",&N); gets(temp[0]); for(int i=0;i<N;i++) { gets(temp[i])

2017-08-21 14:39:46 165

原创 PAT_1076. Forwards on Weibo

#include #include #include #include using namespace std;queue q;vector G[1005];bool vis[1005];int depth[1005];int bfs(int L,int start){ memset(vis,false,sizeof(vis)); while(!q.empty())

2017-08-21 11:57:21 154

原创 PAT_1075. PAT Judge

//// main.cpp// PAT_1075. PAT Judge//// Created by wjq on 17/8/20.// Copyright © 2017年 wjq. All rights reserved.//#include #include #include using namespace std;map m;int score[10],su

2017-08-20 11:28:32 195

原创 PAT_1074. Reversing Linked List

//// main.cpp// PAT_1074. Reversing Linked List//// Created by wjq on 17/8/19.// Copyright © 2017年 wjq. All rights reserved.//#include using namespace std;int start,N,K;int linklist[10

2017-08-20 10:19:40 178

原创 PAT_1073. Scientific Notation

//// main.cpp// PAT_1073. Scientific Notation//// Created by wjq on 17/8/19.// Copyright © 2017年 wjq. All rights reserved.//#include #include using namespace std;string str;int E;int

2017-08-19 17:07:40 222

原创 PAT_1072. Gas Station(Dijkstra最短路)

#include #include #include using namespace std;const int maxint=99999;struct yuandian{ int stationId; double cloestDist,averageDist;}Hxd[15];int N,M,K,D,hxdIndex=0;int G[1024][1024]; //矩阵表示

2017-08-18 17:29:08 193

空空如也

空空如也

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

TA关注的人

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