- 博客(156)
- 收藏
- 关注
原创 浅谈高并发业务系统设计
序言笔者工作近一年期间在做一些营销平台相关的事,负责一部分营销活动。这些营销活动并发度比较高,此处整理一下一个高并发业务系统设计的一些方法论。(嗯...其实技术沉淀是我的一个KPI)1、什么是高并发高并发是一种短时间内有大量请求到服务端的现象。对于这种现象,我们需要关注的系统指标有: 响应时间(Response Time),也就是我们常说的RT。它表示的是我们的系统对一个请...
2020-03-03 22:12:18
1271
原创 我在阿里的第一年
写在前面 从2018年5月开始收到菜鸟offer实习到本科毕业,我不小心实习了一年。这一年get到了很多东西,也有一些想法,这篇文章本来早就该写了,因为自己“忙”,就一直没去把这篇总结落实下来。今天实在忍不住了,开始动身欲写在菜鸟实习一年的所思所得。 在我实习的时候,我的老板就问过我实习了这么久觉得自己得到了哪些东西,自己还欠缺哪些东西,有没有认真去思考过。当时的我支支吾吾也没能对这位...
2019-08-24 23:19:08
1011
原创 浅谈数据库
写在前面 从去年四月中旬拿到阿里offer之后就再也没写过博客,平时工作的确也比较忙,但是每天晚上回来沉淀一下的机会还是有的。还是希望自己不要工作之后就把很多基础知识都忘了,从这篇文章开始还是继续没事总结一些基础知识。本文简单谈一下数据库,更多的只是一个泛谈,很多东西不会展开,主要从数据库自底向上进行一个概述。什么是数据库? 什么是数据库,听名字能感觉到这是某种存储数据...
2019-03-19 00:33:49
1607
1
原创 华中科技大学毕业电影
华中科技大学毕业电影寻求赞助,华科是华中区域唯一在拍毕业电影的学校,毕业电影会在华科、武大等武汉高校联盟播映。 线下播映预计覆盖60000人次。 线上上投放预计覆盖30万人次。在腾讯,爱奇艺,优酷,搜狐等累计播放点击量超过 100 万。历年毕业电影都吸引了很多人: 1.2014年毕业电影《1014》,首映1500张门票在2小时内售空,在体育馆放映三 次,座无虚席...
2018-11-08 22:21:45
1232
原创 京东二面面经详谈
收到了京东的二面电话,我觉得这次面试有一定的广度和深度,也和面试官发生了一些争论,是一次挺有意思的面试,遂详细记录之。面经:首先一上来面试官让我做了一下自我介绍,经过了总共大约四五次电话面试,遇到这样的问题已经是很多次了,但是我还是简单表述了一下自己的技能栈就结束了,这个其实还可以再多说很多。接着面试官问了一下我的学习过程(刚开始我没搞懂面试官说的学习过程是什么意思,后来了解到是自己的教育经历)。...
2018-04-23 14:06:28
8827
原创 京东一面面经
参加了京东的京东云部门的一面,面试问题如下:1、聊项目,然后延展出了一些负载均衡、哈希一致性、数据热备、TCP与UDP的问题;2、聊了聊线程池,从线程池使用原因到JUC中线程池的实现细节;3、如何设计一个像京东商城那样的高并发网站,聊了挺多(答案参见《大型网站技术架构核心原理与案例分析》);4、一道算法题,仅仅只是说思路:0-99共100个数字,现在缺失了两个,如何快速找出缺失那两个? 我简...
2018-04-20 13:04:15
1501
转载 Java中的函数式编程
原文转载自https://www.cnblogs.com/snowInPluto/p/5981400.htmlJDK 8 函数式编程入门[TOC]1. 概述1.1 函数式编程简介我们最常用的面向对象编程(Java)属于命令式编程(Imperative Programming)这种编程范式。常见的编程范式还有逻辑式编程(Logic Programming),函数式编程(Functional Prog...
2018-04-07 14:43:56
461
原创 阿里现场三面+HR面
二面之后等了大约一个星期,收到了阿里的现场面试邀请,很开心地赶往了现场,开始了第三次技术面试。进入阿里办公楼,在休息区等候了一段时间,便开始了自己的第三次技术面试。三面面试官给人感觉很nice,问题如下:1、说一下常见的多线程设计模式(之前我正好在我的博客整理过一本名叫Java多线程设计模式的书,于是便说了几个,但是说的不是很全);2、Java虚拟机内存模型;3、volatile关键字的作...
2018-04-02 16:50:47
15914
5
原创 阿里二面面经
很荣幸等来了阿里的二面,感觉自己发挥得很不好,但是我还是想记录一下我的面试问题,希望自己好好反思反思自己的问题出在哪:1、聊学习2、聊项目3、第三范式的特点和缺陷4、如何抽象出数据库的表5、对juc的认识和理解6、为什么低版本的ReentrantLock在高并发下比synchronized效率高7、JVM的GC、内存模型、区域划分8、不用juc中的阻塞队列,自己实现一个阻塞队列9、两个文件,里面各...
2018-03-23 00:00:05
3092
原创 腾讯一面二面面经
腾讯一面二面结束了...之前没写一面过程,因为腾讯一面一直在问我前端知识,我就拖着没写。现在整理一下一面面试问题(可能记不太清了):1、介绍自己2、介绍项目3、HHTML和HTML的关系4、对XMLHttpRequest的了解程度5、AJAX6、XML和JSON的区别和安全性问题7、对session的了解8、禁用cookie的情况下如何使用session9、js的事件处理10、dom的关系有哪些1...
2018-03-20 18:53:26
4549
原创 我的阿里一面面经
等了六天了,看到周围的人都收到了阿里面试电话,我迟迟没有。我默默重写了一份简历....终于在今天准备去吃饭的时候来了一个电话,我一看来自杭州一下子就惊了,都在角落接起电话开始面试。下面分享我的面经:(以下文字均被精简了)1、简单介绍一下自己吧2、面试官开始谈项目3、tcp和udp的区别4、tcp如何实现可控传输5、说说synchronized(这个地方我把jvm对synchronized的优化也说...
2018-03-12 21:20:03
2002
2
原创 数据结构--二叉树
二叉树的实现、广度优先遍历和递归、非递归的深度优先遍历,思路在注释中:package 二叉树;import java.util.Deque;import java.util.LinkedList;import java.util.Queue;public class BinaryTree<E> { public static class TreeNode<E&...
2018-02-25 15:36:25
322
转载 数据结构--图
部分转载自http://blog.youkuaiyun.com/hguisu/article/details/7712813图的表示1、邻接表邻接表的核心思想就是针对每个顶点设置一个邻居表。2、邻接矩阵邻接矩阵的核心思想是针对每个顶点设置一个表,这个表包含所有顶点,通过True/False来表示是否是邻居顶点。概述图的遍历是指从图中的任一顶点出发,对图中的所有顶点访问一次且只访问一次。图的遍历操作和树的遍历操...
2018-02-24 20:33:38
602
原创 计算机网络和操作系统常见问题私人memo
本文仅仅是私人memo,由于时间原因存在一些排版问题,本人将抽空重排版并对大概进行扩展。中断和轮询的特点: 都是对IO设备程序轮询的方式,是早期计算机系统对IO设备的一种管理方式。定时对各种设备轮询问一遍有无处理请求。轮询之后,有要求的就处理,处理完后处理机继续工作。 轮询需要时间,但是轮询比IO设备速度快很多,但是比IO速度快很多。但是轮询依然是效率很低的一种方式。 程序中断简...
2018-02-24 01:51:58
576
转载 操作系统常见题目
转载自http://www.blogjava.net/qileilove/archive/2012/08/22/386010.html 1、什么是进程(Process)和线程(Thread)?有何区别? 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位...
2018-02-23 19:50:35
809
转载 红黑树
转载自http://www.cnblogs.com/CarpenterLee/p/5525688.html本文以Java TreeMap为例,从源代码层面,结合详细的图解,剥茧抽丝地讲解红黑树(Red-Black tree)的插入,删除以及由此产生的调整过程。总体介绍Java TreeMap实现了SortedMap接口,也就是说会按照key的大小顺序对Map中的元素进行排序,key大小的评判可以通...
2018-02-22 00:08:52
320
转载 字典树
转载自https://www.cnblogs.com/TheRoadToTheGold/p/6290732.html一、引入字典是干啥的?查找字的。字典树自然也是起查找作用的。查找的是啥?单词。看以下几个题:1、给出n个单词和m个询问,每次询问一个单词,回答这个单词是否在单词表中出现过。答:简单!map,短小精悍。好。下一个2、给出n个单词和m个询问,每次询问一个前缀,回答询问是多少个单词的前缀。...
2018-02-21 17:12:45
280
原创 面试准备私人MEMO
本文仅仅是私人MEMO,仅仅起到私人记录大纲之用AbstractQueuedSynchronizer,简称AQS,是Java并发包里一系列同步工具的基础实现,原理是根据状态位来控制线程的入队阻塞、出队唤醒来处理同步。 AQS内部维护一个CLH队列来管理锁。线程会首先尝试获取锁,如果失败,则将当前线程以及等待状态等信息包成一个Node节点加到同步队列里。接着会不断循环尝试获取锁(条件是当前节点...
2018-02-21 02:59:57
542
转载 B树、B-树、B+树、B*树介绍,和B+树更适合做文件索引的原因
转载自http://blog.youkuaiyun.com/cangchen/article/details/44817807 今天看数据库,书中提到:由于索引是采用 B 树结构存储的,所以对应的索引项并不会被删除,经过一段时间的增删改操作后,数据库中就会出现大量的存储碎片,这和磁盘碎片、内存碎片产生原理是类似的,这些存储碎片不仅占用了存储空间,而且降低了数据库运行的速度。如果发现索引中存在过多的...
2018-02-20 00:51:56
363
原创 23种设计模式的简单实现(下 13-23)
我的上一篇文章介绍了第1-12种设计模式,现在介绍剩下的设计模式,上篇文章链接:http://mp.blog.youkuaiyun.com/postedit/79321122行为型模式十三、策略模式定义一系列算法,把它们一个个封装起来,并且使它们可替换。本模式使得算法可独立于使用它的客户而变化。这个模式实际上在《effective java》中提及过,本质上是用宿主类模拟其他语言的函数指针来进行传递函数。代码...
2018-02-15 18:07:46
440
原创 23种设计模式的简单实现(上 1-12)
设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。本文将对23种设计模式每个都进行一个简单的说明和实现。 设计模式很大程度上是面向对象设计原则的体现,首先来看一下这些oop设计原则:创建类的设计模式一、工厂方法模式 工厂父类(接口)负责定义产品对象的公共接口,而子类工厂则负责创建具体的产品对...
2018-02-14 01:12:44
601
转载 java的动态代理机制详解
转载自https://www.cnblogs.com/xiaoluo501395377/p/3383130.htmljava的动态代理机制详解在学习Spring的时候,我们知道Spring主要有两大思想,一个是IoC,另一个就是AOP,对于IoC,依赖注入就不用多说了,而对于Spring的核心AOP来说,我们不但要知道怎么通过AOP来满足的我们的功能,我们更需要学习的是其底层是怎么样的一个原理,而...
2018-02-13 01:42:20
278
转载 自旋锁、排队自旋锁、MCS锁、CLH锁
转载自https://coderbee.net/index.php/concurrent/20131115/577自旋锁(Spin lock)自旋锁是指当一个线程尝试获取某个锁时,如果该锁已被其他线程占用,就一直循环检测锁是否被释放,而不是进入线程挂起或睡眠状态。自旋锁适用于锁保护的临界区很小的情况,临界区很小的话,锁占用的时间就很短。简单的实现import java.util.concurren...
2018-02-10 00:40:54
330
原创 私人MEMO--JVM与并发
本文是私人MEMO,仅仅是大纲作用。因为时间关系没有整理排版,有时间会进行重写和扩充。类加载过程为:加载、连接(包括验证、准备、解析)、初始化,类加载在Java中是在程序运行阶段完成的,这也使得Java程序更灵活。 加载:1、通过全限定名获得这个类的二进制字节流 2、将这个字节流代表的静态存储结构转化为方法区的运行时数据结构 3、在内存中生成一个代表这个类的java.lang.Cl...
2018-02-09 17:56:28
280
转载 java中Hashtable和HashMap的区别
文转自 http://www.importnew.com/7010.htmlHashMap和Hashtable的比较是Java面试中的常见问题,用来考验程序员是否能够正确使用集合类以及是否可以随机应变使用多种思路解决问题。HashMap的工作原理、ArrayList与Vector的比较以及这个问题是有关Java 集合框架的最经典的问题。Hashtable是个过时的集合类,存在于Java API中很...
2018-02-08 10:15:49
464
转载 Java中的基本数据类型类型提升现象
本文转载自http://blog.youkuaiyun.com/wang740209668/article/details/57416778一般来说,在运算的时候,要求参与运算的数据的类型须一致,这就好比我们能用1+1进行运算,而不能用1+a进行运算,而在java中更为严格,同为数值的数字有byte short int long 四种不同的类型,它们在运算的时候也要求类型一致,如果不一致,就涉及到我们今天要说...
2018-02-08 09:25:57
336
转载 Java中的Error和Exception
本文转载自http://blog.youkuaiyun.com/goodlixueyong/article/details/47122487Error和Exception的联系继承结构:Error和Exception都是继承于Throwable,RuntimeException继承自Exception。Error和RuntimeException及其子类称为未检查异常(Unchecked exception)...
2018-02-07 23:56:04
460
原创 私人MEMO--性能调优 包括JVM常用调优和系统调优
本文是我的私人Memo,仅仅是大纲备忘作用。一段时间后我会整理好。JVM调优 主要是内存方向的调优 各个代的大小,GC策略等等。(GC会导致应用线程挂起 严重影响性能 降低GC导致的应用暂停时间很有必要) JVM内存 = 新生代+老年代+持久代(方法区) -Xms :初始JVM内存大小 -Xmx :最大JVM内存大小 这俩一般一样 避免运行期间内存变大 -Xmn :年...
2018-02-07 17:18:35
264
原创 私人MEMO--java.util.concurrent
以下是我私人的Memo,由于时间问题排版有点散漫,过段时间会整理好。ConcurrentHashMap//分段锁 SegmentCopyOnWriteArrayList//写入时复制 会出现脏数据 使用ReentrantLock实现CopyOnWriteArraySet//基于CopyOnWriteArrayList实现 唯一不同在于add时调用CopyOnWriteArrayList的addIf...
2018-02-07 16:19:28
278
转载 Java中的反射常用方法
转载自https://www.cnblogs.com/sargeles/p/6605945.htmljava通常是先有类再有对象,有对象我就可以调用方法或者属性。反射其实是通过Class对象来调用类里面的方法。通过反射可以调用私有方法和私有属性。大部分框架都是运用反射原理。 如何获得Class对象:1. 通过一个对象获得完整的包名和类名packa
2018-02-07 13:47:44
284
转载 InputStream和OutputStream
文章转载自:http://blog.youkuaiyun.com/dww410/article/details/53990941.InputStream ◇ 从流中读取数据: int read( ); //读取一个字节,返回值为所读的字节 int read( byte b[ ] ); //读取多个字节,放置到字节数组b中,通常读取的字节数量为b的长度,返回值为实际读取的字节的数量
2018-02-07 00:47:10
507
原创 准备春招 优快云博客不定期脱更 见谅
准备春招了,时间比我想象的还要紧,没办法博客暂时脱更了,望见谅。 春招的收获与反思我也会在这里不定期更新。 希望自己能取得不错的成绩。...
2018-02-05 17:39:19
240
原创 Java同步工具类
上一篇文章我们介绍了一些Java平台类库的并发基础构建模块,介绍了一种Java同步工具类--阻塞队列(链接点击此处)。实际上还有一些其他的同步工具类,本文将介绍这些除阻塞队列之外的同步工具类,信号量、栅栏、闭锁。 一、闭锁 CountDownLatch 闭锁是一种同步工具类,可以延迟线程的进度直到其达到终止状态。闭锁相当于门闩,闭锁到达结束状态之前,这扇门一直是关闭的
2018-02-04 19:47:43
985
原创 Java平台类库并发基础构建模块
Java平台类库包含了大量的并发基础构建模块,我们简单介绍其中的一部分。 1、同步容器类 同步容器类包括Vector、Hashtable以及它们的子类,还有通过Collections.synchronizedXxx的一些工厂方法创建的同步封装器类。 对于这类同步容器类,它们是线程安全的,但是它们实现线程安全的方式是对其方法使用synchronized关键字进行修饰,当
2018-02-01 01:42:05
479
原创 算法技术--动态规划
本文介绍一种算法技术--动态规划。 一、什么是动态规划 动态规划与分治方法相似,通过组合子问题的解来求解问题。分治法会在计算时做许多不必要的工作(记不记得之前的一篇博客分析过没有优化过的斐波那契数列递归实现的时间复杂度高达指数级),然而动态规划则会把求过的子问题记录到一个容器中,从而避免了一些重复的工作。 我们常常使用动态规划来求解最优化问题,步骤如下: 1
2018-01-27 22:59:45
511
转载 Java情诗
If 我未曾 遇到你如同 故事类 还未加载到 虚拟机在 茫茫人海中 循环遍历直到邂逅 true的唯一If 我日渐 倾慕你嵌套循环 也包裹不住 思念满溢慌乱心跳 抛出的 异常信息会捕获到 心灵的秘密If 我沉迷 依恋你穷极 八种数据类型 也难言表心意
2018-01-27 19:53:37
564
原创 拉链法解决哈希冲突的方式和几种常见的散列函数
本文探讨拉链表解决哈希冲突的方式和几种常见的散列函数。 首先,什么是散列表? 对于一个数组,我们在O(1)时间复杂度完成可以完成其索引的查找,现在我们想要存储一个key value的键值对,我们可以根据key生成一个数组的索引,然后在索引存储这个key value键值对。我们把根据key生成索引这个函数叫做散列函数。显而易见,不同的key有可能产生相同的索引,这就叫做哈希碰撞,
2018-01-24 16:10:34
8155
原创 几种基本数据结构--栈、队列、双向链表、有根树的分析和简单实现
本文介绍几种基本数据结构--栈、队列、双向链表、有根树。一、栈 栈不用多说了,一种LIFO(后进先出)的数据结构,我们使用Java实现其入栈(PUSH),出栈(POP)的基本操作:public class Stack { public final static int DEFAULTSIZE = 10; private final E[] elements;
2018-01-23 17:17:46
1606
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人