- 博客(174)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 LeetCode 大纲
自己刷LeetCode的题目链接汇总以及分类数组问题1.K sum问题 求数组内K个元素之和为某定值的集合Leetcode 1.Two Sum2Sum通过HashMap辅助,找到相加为target的值 Leetcode 15.3Sum3Sum确定一个数,然后找另外两个数相加等于其相反数即可 Leetcode 16.3Sum Closest Leetcode 18. 4
2018-01-09 17:17:54
386
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Java后台面试题 总结(合集)(持续更新)
看了很多面经,Java后台的知识点太多太杂,想写一篇知识点的总结,把繁杂的知识点连成网。也是对自己的一个总结。 Java基础方面面试总结 Java多线程并发方面面试总结Java集合方面面试总结 JVM方面相关面试总结技术框架部分面试题计算机网络部分面试题...
2017-09-10 19:36:14
3490
原创 FastJson API
Maven依赖重要的三个类APIJSON格式字符串与JSONObject之间的转换JSON字符串(数组类型)与JSONArray之间的转换Maven依赖<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</a...
2018-04-12 00:16:06
1011
1
原创 zookeeper学习笔记(3) - Paxos算法
Paxos究竟在解决什么问题?Paxos如何在分布式系统中应用?例子Paxos核心思想 Paxos是一种提高分布式容错性的一致性算法,google chubby系统的创建者Mike Burrows就说过,世界上只有一种分布式一致性协议,就是Paxos,其他不过是Paxos的变种而已。首先要了解,Paxos中有三个角色Proposer:提议发起者。Propose...
2018-04-11 15:56:56
437
原创 zookeeper学习笔记(2)一致性协议 - 2PC 3PC
一致性协议主要思想二阶段提交协议 2PC协议说明缺点三阶段提交协议 3PC协议说明优缺点一致性协议主要思想当一个事务操作需要跨越很多分布式节点的时候,为了保持事务的ACID,需要引入一个“协调者(Coordinator)”的组件来统一调度所有分布式节点的逻辑,被调度的节点被称为“参与者(Participant)”协调者负责调度参与者的行为,并决定...
2018-04-10 19:56:36
436
原创 Linux学习笔记(8) adduser和useradd的区别
useradd和adduser的区别 useradd与adduser都是创建新的用户在CentOs下useradd与adduser是没有区别的都是在创建用户,在home下自动创建目录,没有设置密码,需要使用passwd命令修改密码。而在Ubuntu下useradd与adduser有所不同1、useradd在使用该命令创建用户是不会在/home下自动创建与用户名同名的用户目录,而且不会...
2018-04-10 19:09:41
450
原创 zookeeper学习笔记(1)分布式架构 - ACID、CAP、BASE分布式理论
集中事务处理 - ACID分布式事务处理 - CAP分布式事务处理 - BASE集中事务处理 - ACID 集中式系统:集中式系统指由一台或者多台主机组成中心节点,数据集中存储在中心节点中。 分布式系统:分布式系统是一个硬件或者软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信协调。ACID,指数据库事务正确执行的四个基本要素的缩写。...
2018-04-10 15:57:55
506
原创 Linux学习笔记(7)Spring boot项目部署到Linux
1.在Linux上安装好所需要的环境(比如Java环境、Mysql)2.将Spring boot工程下的Java项目打包成Jar包3.将Jar包传输到Linux4.持续执行1.在Linux上安装好所需要的环境(比如Java环境、Mysql)整个项目的部署,只需要用maven将项目打包,上传至linux服务器,运行java -jar xx.jar 则可。 无需...
2018-04-04 15:47:47
4671
原创 Linux学习笔记(6) Linux中的文件权限
User, Group 及 OthersLinux 文件属性改变文件拥有者改变文件群组改变文件权限User, Group 及 Others[用户与群组]的功能可是相当健全而好用的一个安全防护, 由于 Linux 是个多人多任务的系统,因此可能常常会有多人同时使用这部主机来进行工作的情况发生, 为了考虑每个人的隐私权以及每个人喜好的工作环境。在 Linux 里...
2018-03-27 17:48:12
291
2
原创 Linux学习笔记(5) find中的 - exec
实例1.find 命令匹配到了当前目录下的所有普通文件,并在 -exec 选项中使用 ls -l 命令将它们列出。实例2:在目录中查找更改时间在14日以前的文件并删除它们实例3:查找文件并移动到指定目录实例4.用exec选项执行 cp 命令实例5.-exec 中使用 grep 命令我们使用find来查找想要的文件,但是我们一般查找出来的额并不仅仅是看看而已,还会有进一步...
2018-03-27 15:57:59
286
原创 Linux学习笔记(4)Shell 脚本
如何执行Shell脚本?执行环境shell 变量if..then条件判断for条件判断while条件判断Case .. esac条件判断如何执行Shell脚本?比如脚本未知在 /home/shell.sh//-x显示执行流程# sh -x /home/shell.sh执行环境#!/bin/bash因为我们使用的是 bash ,...
2018-03-27 11:49:58
239
原创 Linux学习笔记(2) 重要操作指令
ps lsyum (CentOS)apt-get (Debian ubuntu) grepsuechowgetfindscprzps s命令用于显示当前进程 (process) 的状态。ps [options] [--help]-A 和 -e 列出所有的进程ps -ef 是用标准的格式显示进程 UID //用户ID、但...
2018-03-20 11:39:44
322
原创 Linux学习笔记(1)
常用的shell指令常用快捷键Linux根目录文件/etc 重要子目录文件Linux文件管理常用的shell指令date :显示时间 cal :显示日历 bc :为计算器 (用完注意quit) shotdown :关机 cd :变换目录 (Change Directroy) pwd :显示当前目录 (Print Working Directory...
2018-03-20 11:28:23
326
1
原创 OpenStack学习 (6) - Neutron
Linux Bridge这是学习Neutron的基础,如何使硬件上的每台虚拟机都能连上外部网络呢?我们使用的就是Linux Bridge多个网络设备可以连接到同一个Linux Bridge,当某个设备收到数据包时,Linux Bridge 会将数据转发给其他设备。 当有数据到达 eth0 时,br0 会将数据转发给 vnet0,这样 VM1 就能接收到来自外网的数据; 反过来,...
2018-03-16 17:09:51
299
原创 OpenStack学习 (5) - Cinder
Cinder框架Block Storage Service提供对 volume 从创建到删除整个生命周期的管理。 OpenStack 提供 Block Storage Service 的是 Cinder,其具体功能是: (1)提供 REST API 使用户能够查询和管理 volume、volume snapshot 以及 volume type (2)提供scheduler...
2018-03-15 19:17:33
871
原创 OpenStack学习 (4) - Nova
Nova整体架构Nova控制着虚拟机的生老病死,管理他们的计算资源分配。我们来看Nova的一个执行流程案例。 Step1:首先用户执行Nova Client提供的用于创建虚拟机的指令Step2:nova-api service监听到来自于Nova Client的HTTP请求,并将这些请求转换为AMQP消息之后加入消息队列QueueStep3:通过消息队列Queue调用nova...
2018-03-15 16:18:08
454
原创 OpenStack学习 (3) - OpenStack整体架构
OpenStack首先我们要明白,OpenStack的作用。 OpenStack 为虚拟机提供并管理三大类资源:计算、网络和存储。 所以我们的学习重点就是: 搞清楚 OpenStack 是如何对计算、网络和存储资源进行管理的。OpenStack架构OpenStack众多组件中,最为重要的部分如下。 其中Compute Service Nova 是 OpenSta...
2018-03-15 10:27:44
789
原创 OpenStack学习 (2) - KVM 与 Qemu
QemuQEMU是一个主机上的VMM(virtual machine monitor),通过动态二进制转换来模拟CPU,并提供一系列的硬件模型,使guest os认为自己和硬件直接打交道,其实是同QEMU模拟出来的硬件打交道,QEMU再将这些指令翻译给真正硬件进行操作。通过这种模式,Guest os可以和主机上的硬盘,网卡,CPU,CD-ROM,音频设备和USB设备进行交互。但由于所有指令都需...
2018-03-14 19:19:53
478
原创 OpenStack学习 (1)- 虚拟化
虚拟化虚拟化是云计算的基础。简单的说,虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的 CPU、内存、IO 硬件资源。HypervisorHost 是如何将自己的硬件资源虚拟化,并提供给 Guest 使用的呢? 这个主要是通过一个叫做 Hypervisor 的程序实现的。 根据 Hypervisor 的实现方式和所处的位置,虚拟化又分为两种: 对于...
2018-03-14 17:38:13
413
原创 剑指Offer 链表相关算法
剑指Offer 16 翻转链表剑指Offer 17 合并两个排序的链表剑指Offer 18 链表中倒数第k个结点剑指Offer 16 翻转链表输入一个链表,反转链表后,输出链表的所有元素。public class solution{ public ListNode ReverseList(ListNode head){ if(head...
2018-02-28 22:37:40
262
原创 Cookie和Session
1.由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session.典型的场景比如购物车,当你点击下单按钮时,由于HTTP协议无状态,所以并不知道是哪个用户操作的,所以服务端要为特定的用户创建了特定的Session,用用于标识这个用户,并且跟踪用户,这样才知道购物车里面有几本书。这个Session是保存在服务端的,有一个唯一标识。在服务端...
2018-02-28 14:09:04
276
原创 一致性哈希
首先我们可以看看为什么需要一致性哈希算法。假设我们有3台Redis缓存服务器,编号为0,1,2.现在我们想将3万张图片均匀的缓存存到这3台服务器上。因为不想在缓存中找某张图片时去遍历3台服务器,所以我们原始的做法是对缓存项的键进行哈希,将哈希后的结果对服务器的数量进行取模操作。hash(图片名称) % 3 这样当我们访问任意一张图图片时,就能快速的找出该图片被缓存在哪个服务器上 ...
2018-02-27 16:29:34
420
原创 Java Collections Framework - 红黑树
红黑树在Java中的应用在Java集合类中,TreeMap和TreeSet的底层就是基于红黑树实现的,在JDK 1.8中如果HashMap和ConcurrentHashMap的某Bucket的链表的数量大于8,就会自动转换成红黑树结构,所以红黑树是一种应用很广的二叉查找树。红黑树和AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。它虽然是...
2018-02-27 11:41:11
271
原创 RabbitMQ的安装和使用
RabbitMQ 特点RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。AMQP :Advanced Message Queue,高级消息队列协议。它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、开发语言等条件的限制。RabbitMQ 最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性、扩展...
2018-02-26 18:12:06
2046
原创 秒杀系统中的接口优化
在秒杀系统中我们如何对接口进行优化呢? 1.Redis预减库存减少数据库的访问 2.内存标记减少Redis的访问 3.请求先入队缓冲(RabbitMQ),异步下单 4. Nginx水平扩展解决超卖 1.数据库加唯一索引:防止用户重复购买 2.SQL加库存数量判断:防止库存变成负数 1.Redis预减少数据库的访问整个优化的核心思路还是减少对数据库...
2018-02-26 13:30:13
342
原创 秒杀系统中的页面优化
秒杀系统中,并发的瓶颈在数据库,如何有效的减少对数据库的访问呢?最有效的方法就是加缓存,页面静态化、前后端分离、1.页面缓存什么是页面缓存呢,就是我们在访问页面时,不是直接让系统帮我们渲染页面,而是去缓存中去取,如果找到了就直接返回给客户端,如果没有我们就手动渲染模板,返回给客户端的同时,将结果缓存到如redis之类的缓存中,以便下次使用。这里我们使用Redis来缓存。以前,我...
2018-02-25 20:17:13
457
原创 JSR 303参数校验 Bean Validation
参数校验是我们程序开发中必不可少的过程。用户在前端页面上填写表单时,前端js程序会校验参数的合法性,当数据到了后端,为了防止恶意操作,保持程序的健壮性,后端同样需要对数据进行校验。后端参数校验最简单的做法是直接在业务方法里面进行判断,当判断成功之后再继续往下执行。但这样带给我们的是代码的耦合,冗余。当我们多个地方需要校验时,我们就需要在每一个地方调用校验程序,导致代码很冗余,且不美观。那么如何...
2018-02-22 20:36:06
911
原创 JavaSE 详细了解泛型中的边界问题
< ? extends T>和< ? super T>< ? extends T>和< ? super T>是Java泛型中的“通配符(Wildcards)”和“边界(Bounds)”的概念。< ? extends T>:是指 “上界通配符(Upper Bounds Wildcards)”< ? super T>:是指 “...
2018-02-12 02:50:14
616
原创 LeetCode 215. Kth Largest Element in an Array
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element. For example, Given [3,2,1,5,6,4] and k = 2, return 5.N
2018-01-12 13:02:59
266
原创 LeetCode 80. Remove Duplicates from Sorted Array II
Follow up for “Remove Duplicates”: What if duplicates are allowed at most twice?For example, Given sorted array nums = [1,1,1,2,2,3],Your function should return length = 5, with the first five e
2018-01-10 14:11:02
191
原创 LeetCode 26.Remove Duplicates from Sorted Array
Given a sorted array, remove the duplicates in-place such that each element appear only once and return the new length.Do not allocate extra space for another array, you must do this by modifying th
2018-01-09 17:48:27
223
原创 LeetCode 27. Remove Element
Given an array and a value, remove all instances of that value in-place and return the new length.Do not allocate extra space for another array, you must do this by modifying the input array in-plac
2018-01-09 17:07:07
254
原创 Leetcode 283. Move Zeros
Given an array nums, write a function to move all 0’s to the end of it while maintaining the relative order of the non-zero elements.For example, given nums = [0, 1, 0, 3, 12], after calling your fu
2018-01-09 16:16:21
430
原创 Leetcode 18. 4Sum
Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target.Note: The solution set
2018-01-08 16:01:29
240
原创 Leetcode 16.3Sum Closest
Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would have exactly
2018-01-08 15:23:50
255
原创 Leetcode 15.3Sum
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.Note: The solution set must not contain dup
2018-01-08 14:02:28
270
原创 HTTP状态码
HTTP状态码2XX:表示成功。 3XX:重定向。 4XX:客户机中出现的错误 5XX:服务器中出现的错误 2xx这一类型的状态码,代表请求已成功被服务器接收、理解、并接受 。200 OK 请求已成功,请求所希望的响应头或数据体将随此响应返回。出现此状态码是表示正常状态。201 Created 请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其 URI 已经随Locatio
2017-12-30 23:48:45
285
原创 Spring AOP底层实现- JDK动态代理和CGLIB动态代理
Spring AOP是运行时织入的,那么运行时织入到底是怎么实现的呢?答案就是代理对象。 代理又可以分为静态代理和动态代理。 静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。 动态代理:在程序运行时,运用反射机制动态创建而成。静态代理的每一个代理类只能为一个接口服务,这样一来程序开发中必然会产生过多的代理,而且...
2017-12-21 16:40:11
6766
原创 Spring 通过注解了解AOP
先抛开那些复杂的的名词,我们来看个简单的例子。假如我们在编写一个网站网站主页的controller@Controllerpublic class IndexController{ @RequestMapping(path = {"/","/index"} ,method ={RequestMethod.GET}) @ResponseBody public String in
2017-12-20 21:49:31
400
原创 技术框架部分面试题
1. Spring 是干嘛用的,为什么要用 Spring?让java开发模块化,并且全面。贯穿逻辑层,表现层,持久层。让每一个功能模块都可以独立分开,降低耦合,提高代码复用率! spring通过控制反转降低耦合性,一个对象的依赖通过被动注入的方式而非主动new。Spring整个系列的最最核心的概念当属IoC, AOP,什么是IoC和AOP就不展开了,简而言之,将对象创建过程的职责赋予容器,通过容器
2017-12-19 21:51:32
1504
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人