自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序员小董的专栏

其实,我是个写代码的

原创 2020阿里社招面试心得(成功拿到offer)

先自我介绍一下,本人来自西安的一所211计算机高校。17年研究生毕业,先面试了阿里,四面然后挂了,具体参考: https://blog.csdn.net/dlf123321/article/details/52659174后面面试腾讯,三面,过了。具体参考https://blog.csdn.net/dlf123321/article/details/52659174 。之后两年半就一直在腾讯做分布...

2020-03-13 19:18:49 2552 1

原创 2017京东校招面试回忆(已成功拿到offer)

1面 24日 晚上5:30-6:401 先说自己熟悉的领域2 list的实现有什么?  arraylist1.6 1.7区别  底层  linkedlist 底层是怎么实现的 单向还是双向  lru缓存  如果按位置索引,那个快?3 hash的实现 是否是线程安全的 写一个不安全的实现 哪里不安全  hashmap的不安全在于扩容的时候  参见:http://b

2016-09-26 23:02:18 12581 7

原创 2017腾讯校招面试回忆(成功拿到offer)

我本来报的岗位是企业事业群,后来把我分配到了技术工程群三面是9月23日,到现在,最后的结果还没出来,我也不知道是过了还是挂了,先写出来,希望对明年找工作的朋友们一点帮助一面  21号 大概1小时 面试半小时 聊天半小时 1 二叉树的查找   我大笔一挥,在纸上写下了下面的的代码 public static TreeNode find(TreeNode tree,

2016-09-26 15:18:22 18843 9

原创 直接使用spel表达式操作AnnotationConfigApplicationContext里的对象

package com.alibaba.aop;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.EnableAspectJAutoProxy;@Configuration@ComponentScan("com").

2020-07-28 16:55:37 14

原创 听小董谝存储 八

目录序章DispatcherMover几个问题glt序章前面几章,其实已经把这个存储系统的核心模块说清楚了。但是一些附属模块,例如dispatcher与mover还是没有讲。这一节,作为整个系统的最后一篇,就说说这两个模块。Dispatcher其实整个dispatcher的功能很简单的,就是发现集群里面的不稳定因素,然后找人处理而已。那么具体什么情况算是不稳定因素呢? 某个datashard的体积太大(单个datashard理论上可以达到一个卷的体积那么...

2020-07-19 16:01:09 28

原创 听小董谝存储七

目录序章序章前面几章,我们已经明白了particle层的读写流程。但是我们还有问题如果机器断电了,数据怎么恢复。一些设定首先我们得先确定下面几个问题1 什么时候需要恢复数据? 当进程挂掉的时候 当机器直接死机了2 什么时候恢复的数据会真的被使用? 我们有三个副本,当一个或者两个副本死掉了,我们会指向搬迁操作,把数据在新的地方变成新的三副本。只有当3个机器都死掉了,我们才需要使用恢复的数据。3 哪些数据需要恢复?图一 parti...

2020-07-19 14:57:45 31

原创 听小董谝存储 六

序章前一章,我们大体了解了存储层的大体设计原理。但是解决了一个问题,又冒出一堆问题。具体的问题有Bolock里面有脏数据了,怎么回收。索引节点感觉还有几个问题,但是我一时说不上来。断电了咋办,数据怎么恢复?block是怎么组织的,内存是怎么组织的。这一节,就解决这几个问题。关于内存与磁盘的资源组织小菜:请注意,我并不是想实现一个存储系统,老师你只用说大体设计就OK,不用牵扯太多细节哦。老鸟:OK。既然说到了内存与磁盘的,那么咱们就得理清楚上一章的数据结构里,哪...

2020-06-24 16:58:15 84

原创 听小董谝存储 五

目录序章第一章 纯内存版1.1 初始化流程1.2 读写流程第二章 数据开始下刷第三章 关于覆盖写第四章 关于del我爱glt序章前面几章总地说明了一个存储系统的主要模块,之后又分别讲了portal和master模块的设计思想。但是我知道大家都有一种隔靴搔痒的感觉,因为存储系统的核心,数据具体是怎么组织在磁盘上的,读写的具体实现又是什么我们还一无所知。在这一节,我会从零到一的构建一个存储层模块,详细的告诉大家存储的具体实现。...

2020-06-22 23:52:28 73

原创 听小董谝存储 四

我爱glt序章前面几章介绍了存储系统整体的架构和master层的一些功能设计。这一节主要聊聊portal这一层的设计。如下图一,portal是直接对client提供服务的,它的主要功能就是将用户的请求导入特定的particle上。这一个大功能其实也可以进行拆解,具体为如下三部分:1 与master交互,获取准确的路由2 根据key找到对应的particle上的data shard3在多副本的情况下确定读写顺序转存失败重新上传取消转存失败重新上传取消正在上传…重新上传取消正在上

2020-06-17 14:52:19 104

原创 听小董谝存储 三

序章前面两章基本上只是告诉了大家一个存储系统最顶层的模块与路由是什么样子的,但是具体各个模块都是怎么工作的我们依然一无所知,从这一章开始,我们就依次深入了解一下Master,Portal,Particle都是怎么工作的。这一节 我们先了解一下Master第一章 Master的功能图一 整体框架图二 路由样式老鸟:小菜,图一图二就是前面两章的总结。咱们这一节说的是Master模块的功能。那么第一步,咱们就得先总结出Master都有哪些功能。你先谈谈你的看法吧。...

2020-06-15 20:46:38 108

原创 听小董谝存储 二

序章在上一节,我们只是画出了个一个KV存储系统的顶层架构图,同时也大体地划分了各个模块的功能,但是整个系统的核心:路由是怎么划分的,怎么确定一个key具体存储在哪个particle我们还一无所知。这一节我们就重点讲讲这个路由相关的知识。第一章 来个中间层老鸟:还记得上一节,我们直接用key的hash值取余,来确定key到底存放在哪个机器上的思路么?小菜:记得呀,但是这个思路有个很大的问题,如果之前有99个机器,后面增加1台,变成了100。那么之前对99取余,现在对100取余,数据大都找不到了。具体怎

2020-06-12 22:38:05 144

原创 听小董谝存储 一

目录序言第一版第二版第三版第四版序言小董本人是2017年研究生毕业,当年7月份就进入了深圳一家互联网公司的架构平台部,从事NoSQL的底层存储引擎研发。20年4月份来到杭州某互联网公司,从事上层业务研发,最近偶尔想起之前的存储相关知识,发现有一些细节知识都已经模糊了。有感而发,遂成此文。一方面为自己的技术生涯做个阶段性的总结,其二也希望为对存储领域有兴趣的小伙伴做一下知识普及。来吧,那就开始吧,我争取用最简单的方式让大家能从零到一的明白一个典型的NoSQL引擎的工作原理.

2020-06-11 21:36:59 195

原创 Java秒杀系统方案优化 高性能高并发实战 学习笔记

安全登录安全登录分布式session分布式session应用程序加缓存层次由高到低就是页面缓存,url缓存,对象级缓存一个用户先查看了产品列表,然后查看了某个商品产品列表的页面缓存就是页面级的缓存某个商品的页面环境就是url级的缓存数据库里某个对象取出来,放到缓存里就是对象级缓存具体参见:用redis缓存对象页面静态化为什么要静态化?之前我请求发一个goods/to_l...

2020-04-12 18:12:03 497

原创 RocketMQ的一些基础知识

消息的发送有3种形式,同步,异步,单向等关于consumer有pushconsumer,就是consumer写一个回调函数,borker把消息推过来()也有pullconsuemr,就是consumer自己去broker拉数据,代码比较复杂关于consumer group如果一个consumer group里面的多个consumer都指向同一个topic,且有的是集群模式,有是广播模式...

2020-04-09 16:04:10 58

原创 关于分布式session

关于session和cookie的历史渊源http协议是没有状态的,也就是说你第一次访问www.taobao.com然后登录,之后第二次访问www.taobao.com的时候,服务器并不知道你已经登录了这就像你去超市,超市的门卫是个健忘症晚期的老头,你第二天去,他就忘了你昨天已经来过了那具体咱们办呢?第一个方法你每次去的时候,带一个小纸板,上面写着我叫dale,是陕西咸阳人,今年28岁...

2020-04-06 12:55:11 98

原创 关于用redis缓存对象

本文基本上是<<Java秒杀系统方案优化 高性能高并发实战>>的学习笔记课程地址:https://coding.imooc.com/class/168.html?mc_marking=b49c32ac64b95698208959085601d0cc&mc_channel=banner我们知道redis可以存储的数据结构比memcached多,它包含hash,l...

2020-04-06 10:31:39 114

原创 关于post的安全登录

大家都知道,登录的时候,不能直接用get方式,传递数据,因为get方式会直接把数据加到url请求后面#这样是不安全的#那反过来?用post就一定安全么?即使用了post,请求没有直接跟在url上,但是在网络上依然是明文传播的,它依然是不安全的那怎么办呢?直接md5加密呗这样一来即使有人追踪你的网络包,他看到的也只是加密后的数据,没有办法知道你的真实数据#真的是这样的么?一半一半吧因...

2020-04-06 10:04:11 97

原创 spring的启动方式

直接在xml里面装配beanspring,我们大家最开始接触的版本,是2.x的 ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml"); UserService us = (UserService) ac.getBean("userService"); us.say...

2020-04-04 13:06:38 47

原创 关于二进制文件的读写

这里写自定义目录标题#include <iostream>#include <fstream>#include <string.h>using namespace std;class CStudent{ public: char szName[8]; int age;};int main(){ C...

2020-03-31 10:41:29 49

原创 docker入门

查看都有那些镜像docker search mysql下载某个镜像(镜像名称后面可以加tag,如果不加就是默认的latest)docker pull mysql查看下载过的镜像docker images启动某个镜像docker run -p 8081:8080 -v /mydata:/data --name mytomcat -d mysql-d 代表后台运行...

2020-03-27 22:09:41 60

转载 一张图总结Google C++编程规范(Google C++ Style Guide)

一张图总结Google C++编程规范(Google C++ Style Guide)https://blog.csdn.net/voidccc/article/details/37599203/

2019-08-22 11:48:15 172

原创 聊聊c++中的set

在java中,存放不同元素的容器是set,元素是否相同使用equals方法和hashCode方法来定义。假如要给set中存放自定义类,那么就得实现equals方法和hashCode方法。在c++中也有c++,用来存放不同的元素,天真的我也就直接使用了set,并且重载了==运算符结果发现,里面是有问题。c++中的set有两种,分别是c++中的std::set,是基于红黑树的平衡二叉树的数据结构实现的

2017-12-12 21:07:05 356

原创 bash脚本中的单引号双引号与反引号

#!/bin/bashvar0=' -t'#下面的是双引号#会把$符号的值替换出来var1="ls -l $var0"#打印出 ls -l -techo $var1#下面的是单引号是中括号下面那个键#不会替换$符号的值var2='ls -l $var0'#打印出 ls -l $var0echo $var2# 下面的是` 是1左边那个键# 就是执行``里面的命令

2017-11-07 15:38:45 501

原创 新建用户碰到到小问题

linux存在用户和用户组的概念。具体如何查看用户与用户组,和文件内的相关字段的含义请看http://www.cnblogs.com/duhuo/p/5892513.html今天在linux新建一个用户,daledong,碰到了两个问题,第一就是 使用daledong登录后,终端中显示 -bash-4.1$而不是 [daledong@locahost~]。 第二个问题就是新建的用户不能创建文件夹。

2017-10-27 13:12:38 412

原创 c++备忘知识

获得当前的时间戳 单位是毫秒chrono是c++11提出的因此 编译的时候得加上 -std=c++11 如下:g++ getTime.cpp -o getTime -std=c++11#include#include using namespace::std;using namespace::chrono;int main() { auto time_now = system_c

2017-10-24 16:03:46 377

原创 c++入门

Person p=new Person(12);在c++ 中有两种方式Person p1(12);Person *p2=new Person(12);p1在方法结束后,就会消亡p2在方法结束后,不会消亡,得手动删除对p2的方法调用可以 p2->run();或者 (*p2).run();string a="abc";  bar(a);    //ok将数组交给指针 int a[5]; int *p

2017-10-18 16:17:31 656

原创 c++中map排序

首先,得说明,在c++中有两个关联容器,第一种是map,内部是按照key排序的,第二种是unordered_map,容器内部是无序的,使用hash组织内容的。对有序map中的key排序如果在有序的map中,key是int,或者string,它们天然就能比较大小,本身的就是有序的。不用额外的操作。如果map中的key是自定义类型呢?#include#include #include #inc

2017-10-18 15:40:32 1859

原创 c的编译链接与执行

使用gcc hello.c可以将我们的源代码翻译成a.out这个可执行文件如果要指定可执行文件的名字,如下:gcc hello.c -o myhello或者gcc hello.c -o hello.out-o指定的文件名可以有后缀也可没有如果没有就生成out.a 这个可执行文件我们具体的说,gcc hello.c -o myhello上面这个指令,至少包含了四步预处理,编译,汇编和连接预处理 就是

2017-10-13 11:05:00 267

原创 使用Jsoup加代理发送get请求

public static String get(String uri){ System.setProperty("https.proxySet", "true"); System.getProperties().put("https.proxyHost", ip); System.getProperties().put("https.proxyP

2017-04-26 22:27:24 4907 2

原创 bootstrap的模态框

bootstrap的模态框还是很好用的。之前做了一个项目,对modal有一点理解,现在记录一下,希望对大家有帮助。首先让大家看看项目中modal的效果。如上图1,我们点击删除图书,会弹出图2,如下:点击确定,会删除图书,同时会再次加载主界面(当然,你就看不到刚才已经删除的那本书了),如果点击取消,就直接关闭modal。OK 咱们先解释这个效果的实现。删除图书的按钮的html如下:<button t

2017-04-20 11:28:35 615

原创 从tomcat下载文件

其实最开始的需求,就是希望使用tomcat下载服务器上的一些文件。当然如果文件就放在{tomcat_home}/webapp/myproject/下那一切都好办。但是把自己放在这里,每次eclipse那边一启动,东西就没了。不合适。方案一从网上查到的资料,是这样的。1、在tomcat 安装目录\conf\Catalina\localhost下建立任意文件名xml文件,比如:download_fil

2017-04-09 20:48:41 11307 2

原创 一个ExtJs实例

聊聊ExtJS这几天接触了一个项目 前台用的是extjs 发现这个东西还是有点意思的 就把前台的部分 剥离了下来 有兴趣的朋友可以当做模板学习不多说先上效果图这篇文章 可以看作是ext知识的一个汇总因此我不想讲太多细碎的知识点 但我会一一之命这些知识点在哪里可以找到另一方面 ext细碎的知识点确实太多 自己没有精力也不想搞的太清楚 够用就行我会说一些 我认为最重要的部分首先 希望大家看看这篇文章h

2017-02-28 20:19:22 2154 1

原创 ShardedJedis的一致性hash

ShardedJedis是redis客户端分片的实现。但问题是,一个key到底经过了怎样的过程,最终才找到她应该存储的Redis实例呢?我们先看一下ShardedJedis是如何使用的 List shards = Arrays.asList( new JedisShardInfo("localhost",6379), new JedisShard

2017-02-27 16:07:21 576

原创 几种高并发下写的处理策略

假定存在这样一种情况多个用户对数据库进行写,我们的业务逻辑规定,每个用户只能写一次,大部分用户也只发一次请求。public void write(Uers u){ // do something}但是有一种情况(1%的情况下吧)的就是有的用户会发两次甚至更多次写请求(因为数据库限制,我们不方便在主键上做文章)。如果这个特殊的用户发送的两次请求时间间隔比较大,那就简单了,再每次写入的时候,写去

2017-02-27 09:52:23 5341 1

原创 银行业务调度系统的实现

需求:银行业务调度系统模拟实现银行业务调度系统逻辑,具体需求如下: 银行内有6个业务窗口,1 - 4号窗口为普通窗口,5号窗口为快速窗口,6号窗口为VIP窗口。 有三种对应类型的客户:VIP客户,普通客户,快速客户(办理如交水电费、电话费之类业务的客户)。 异步随机生成各种类型的客户,生成各类型用户的概率比例为:        VIP客户 :普通客户 :快速客户  =  1 :6 :3。 客户办理

2017-02-22 11:08:21 3381 2

原创 谈谈Jedis的连接池技术

其实这篇文章的题目,应该叫谈谈Apache common pool的连接池技术这篇博客,就不怎么分析源码了,咱们尽量把观察的层次提高一下,主要分析流程。下图是JedisPool里面用到的一些类(有些类我省略了,例如closeable)PooledObjectFactory,是一个泛型接口,里面有makeObjcet,destroyObject,validateObjec

2016-12-28 14:04:11 2786

原创 RedisCluser(v-3.2.0)与Tomcat7的Session整合

一般情况下,一个web系统的架构是类似这样的:一个或多个nginx做负载均衡,后面连多个tomcat(或别的类型的web服务器)。nginx做负载的时候,关于request的分流,至少就有两种策略,第一种就是根据请求的ip做hash,这样能保证同一个ip的请求都映射到同一个tomcat上。第二种,就是直接按照时间或者后端服务器的性能,负载等条件进行分流,那么这样,比如就会产生session

2016-12-27 23:39:41 1272 2

原创 Nginx静态资源性能测试

基本配置硬件 1核cpu 1g内存tomcat1 端口8080tomcat2 端口1314Nginx 1.10.2Nginx配置如下:我启用了压缩传输,还有负载,还有nginx的缓存(把静态内容放到nginx的内存里)#user nobody;worker_processes 1;events { worker_connections 10

2016-12-26 17:54:47 3091

原创 linux查看文件夹大小

du -sh 可以查看当前文件夹的大小du -sh * 可以查看当前文件夹下各个文件或者文件夹的大小du -sh *| sort -n 按顺序参考资料http://blog.csdn.net/huangyanlong/article/details/28101849

2016-12-23 16:18:44 395

原创 redis的内存分析

redis的内存分析可以使用redis-rdb-tools这个工具这个工具是使用python开发的,我们用pip安装它。pip是个什么东西?python pip是一个安装和管理 Python 包的工具。怎么安装,当然至少可以在线安装呀。但是在线安装是在是太慢了。怎么办?把下载的tar.gz上传到你的服务器然后# tar -xzvf pip-1

2016-12-22 17:36:25 1429

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