自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 资源 (2)
  • 收藏
  • 关注

原创 Feed流系统设计

Feed流系统简介Feed 是一种数据格式,用于给订阅的用户提供持续更新的内容,内容大多是基于时间线的方式呈现,“从上往下流动”,通常称为Feed流。移动互联网时代,国内最具代表性的Feed流类产品包括微信、微博、抖音,它们各具特点。产品特点微信双向关系,需要相互添加好友才能看到对方的动态微博单向关系,添加关注,就可以订阅对方的动态抖音个性化推荐,不需要建立关系就可以看到别人发布的内容Feed流系统要素Feed流系统是比较典型的发布-订阅模式,其本质是发布

2021-03-09 17:12:50 1370

原创 Springboot工作原理

本文通过图解的方式,介绍Springboot的工作原理、执行流程,对Filter、Interceptor、ControllerAdvice、Handler等组件的用途执行流程做了详细的介绍,并附有代码示例。

2019-09-09 18:21:25 4640

原创 深入理解Java String类

在Java语言了中,所有类似“ABC”的字面值,都是String类的实例;String类位于java.lang包下,是Java语言的核心类,提供了字符串的比较、查找、截取、大小写转换等操作;Java语言为“+”连接符(字符串连接符)以及对象转换为字符串提供了特殊的支持,字符串对象可以使用“+”连接其他对象。

2018-06-28 21:15:55 201070 44

原创 聊天机器人介绍

什么是聊天机器人聊天机器人,是一种通过自然语言模拟人类进行对话的程序,比如微软小冰、图灵机器人、Siri等。对话机器人可以干什么聊天机器人可以作为应用的入口和载体,可以作为其他运营工具,为其他业务方赋能。可以支持对话、客服、游戏、虚拟形象等多种场景可以支持SDK、HTTP、RPC等多种接入方式通过管理平台多种技能可以自由配置依托深度学习算法和大数据让机器人更智能聊天机器人案例...

2021-03-09 19:12:08 1930

原创 Netty-入门

一、Netty3/4/5版本版本特点备注3.xOLD VERSION3.x版本是比较旧的版本,跟4.x版本相比变化比较大,特别是API。4.xRECOMMENDED VERSION4.x版本是当前官方推荐,4.x版本目前一直在维护中5.xABANDONED VERSION - NOT SUPPORTED5.x是被舍弃的版本,官方不再支持!最新版本是...

2019-10-24 10:21:46 294

原创 Springboot Filter Interceptor

本篇文章主要介绍 Springboot中Filter和Interceptor的使用方法,相关过滤器 Filter 是 java 过滤器,和框架无关,是所有过滤组件中最外层的,可以控制最初的http请求,粒度最大;拦截器 Interceptor 是 Spring 框架的拦截器,可以拦截Controller外层的调用,可以控制请求的请求处理器和方法,但控制不了请求方法里的参数;Intercep...

2019-09-10 12:25:19 415

原创 Springboot统一异常处理

当服务端发生异常(Exception)时,我们往往不希望程序异常终止,也不希望暴露过多的异常信息给客户端,这时候就需要一个统一的异常处理机制,来保证客户端能够收到友好的提示。异常(exception) 是程序运行过程中发生的事件, 该事件可以中断程序指令的正常执行流程.1)当Java程序运行时出现问题时,系统能够自动检测到,并立即生成一个与该问题对应的异常对象;2)然后把该异常对象提交给Ja...

2019-09-09 11:24:41 1755

原创 HTTP 超文本传输协议

HTTP(Hyper Text Transfer Protocol),超文本传输协议,是一种建立在TCP上的无状态连接的应用层协议。请求方法HTTP/1.1协议定义了八种通用的请求方法,来以不同方式操作指定的资源:HTTP1.0 定义了 GET, POST 和 HEAD 方法;HTTP1.1 新增了 OPTIONS、PUT、DELETE、TRACE 和 CONNECT 方法;除了上述方法...

2019-08-04 17:30:11 407

原创 HTTP 获取客户端真实IP

/** * 获取客户端的IP * * @param request * @return */ public static String getRemoteAddr(HttpServletRequest request) { String ip = ""; try { ip = ...

2019-07-25 11:26:52 2089

原创 Springboot gzip解压http数据流

编写Filter/** * GZIP处理Filter */@WebFilter(filterName = "httpServletGzipFilter", urlPatterns = "/")public class HttpServletGzipFilter implements Filter { @Override public void destroy() {} ...

2019-07-25 11:00:00 5186

原创 Springboot2.0 undertow http2.0

添加依赖<dependency> <!--web 模块--> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> &l...

2019-07-25 10:36:20 1155

原创 Java gzip 压缩和解压缩

package src;import java.io.*;import java.util.zip.GZIPInputStream;import java.util.zip.GZIPOutputStream;/** * GZIP工具类 * * @author xie.pengcheng@immomo.com * @date 2019/7/19 下午7:03 */public...

2019-07-22 14:13:57 576

原创 并发编程-Java中的线程池

JDK1.5中引入了强大的concurrent包,其中最常用的莫过了线程池的实现ThreadPoolExecutor,Java 中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中合理地使用线程池能够带来 3 个好处。降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度:当任务到达时,任务可以不需要等到线程创建就能...

2018-11-05 22:46:40 971

原创 并发编程-并发机制的底层实现原理

CPU术语术语英文描述内存屏障memory barriers是一组处理器指令,用于实现对内存操作的顺序限制缓存行cache lineCPU 高速缓存中可以分配的最小存储单位。缓存行填充cache line fill当处理器识别到从内存中读取操作数是可缓存的,处理器读取整个高速缓存行到适当的缓存(L1,L2,L3 的或所有)缓存命中cache ...

2018-11-04 23:06:36 2105

原创 并发编程-并发编程的挑战

并发编程的挑战并发编程中,我们或多或少会遇到线程上下文切换、死锁、受限于软硬件资源限制的挑战。上下文切换CPU会通过时间片分配算法给各个线程分配时间片来实现多线程机制。获得CPU时间片的线程将可以执行。当前一个线程执行一个时间片后会切换到下一个线程,线程切换前需要保存执行的状态,下回该线程切换回来时再加载这个执行状态,线程状态从保存到再加载的过程就是一次上下文切换。线程上下文切换会消耗一定的...

2018-11-04 19:03:30 2032

原创 架构运维-监控设计

监控内容网络数据,针对接入层的监控。服务器数据,包括服务器的 CPU、内存、硬盘、连接数的各项使用数据。应用数据。应用数据是这三者中最难的,但也是最重要的。应用数据是和业务逻辑紧密相关的数据,业务逻辑变了,应用数据的收集也会变化。性能监控,根据日志监控接口的流量、超时率、错误率等安全监控,通过实时监控网络或主机活动,分析用户和系统的行为,识别攻击行为,对异常行为进行统计和跟踪。通知...

2018-11-04 10:09:22 1488

原创 数据结构与算法-哈夫曼树

最优二叉树又称哈夫曼树,定义为带权路径长度WPL最小的二叉树。结点的路径长度:从根结点到该结点的路径上分支的数目。树的路径长度:树中每个结点的路径长度之和。下图,树的路径长度为5。树的带权路径长度:树中所有叶子结点的带权路径长度之和,WPL(T) = ∑k=0n\sum_{k=0}^n∑k=0n​WkW_kWk​LkL_kLk​下图,WPL(T) = 7 × 2 + 5 × 2 + 2...

2018-11-03 21:21:13 1833

原创 数据结构与算法-二叉树

定义二叉树或为空树;或是由一个根结点加上两棵分别称为左子树和右子树的、互不交的二叉树组成。满二叉树指的是深度为k且含有2^k - 1个结点的二叉树。完全二叉树树中所含的 n 个结点和满二叉树中编号为 1 至 n 的结点一一对应。性质在二叉树的第 i 层上至多有xi-1 个结点。(i≥1)深度为 k 的二叉树上至多含 2k-1 个结点(k≥1)对任何一棵二叉树,若它含有...

2018-11-02 21:55:28 123675

原创 数据结构与算法-树

抽象数据类型定义若|D|=0,则称为空树;否则:(1) 在D中存在唯一的称为根的数据元素root,(2) 当n&amp;amp;gt;1时,其余结点可分为m (m&amp;amp;gt;0)个互不相交的有限集T1, T2, …, Tm,其中Ti本身是一棵符合本定义的树,称为根root的子树。例如:A是根;其余结点分成三个互不相交的子集,T1={B,E,F,K,L}; T2={C,G};T3={D,H,I,J,M};T1...

2018-11-02 21:18:59 1754

原创 LeetCode[239] Sliding Window Maximum

DescriptionGiven an array nums, there is a sliding window of size k which is moving from the very left of the array to the very right. You can only see the k numbers in the window. Each time the slid...

2018-10-29 23:16:57 2462

原创 数据结构与算法-队列

定义队列是ListInsert发生表尾、ListDelete发生在表头的线性表,主要操作:入队、出队。术语表头-队头,表尾-队尾,插入-入队,删除-出队特点先入先出(FIFO)插入的位置是length+1,删除的位置的是1,一般读取第1个数据元素循环队列顺序队列的假溢出问题队列上溢出真上溢队列真正满时再入队。假上溢rear已指向队尾,但队列前端...

2018-10-27 08:05:37 124765

原创 数据结构与算法-栈

定义栈是GetItem、ListInsert、ListDelete操作限制只能发生在表尾的线性表。术语表头 - 栈底,表尾 - 栈顶,插入 - 压栈,删除 - 出栈特点先进后出(Last In First Out)栈是线性表的特例,插入的位置是length+1,删除的位置的是length,一般也只读取第length数据元素。栈的应用函数调用数值转换括号匹配算术表达式求...

2018-10-26 22:11:02 2909

原创 LeetCode[141]Linked List Cycle

DescriptionGiven a linked list, determine if it has a cycle in it.Follow up:Can you solve it without using extra space?链表无环链表有环链表无环idea设定超时时间暴力穷举判断给定的时间内,链表是否遍历完成。使用Set判重遍历链表,每走一个节点都...

2018-10-26 21:38:09 2866

原创 LeetCode[24]Swap Nodes in Pairs

DescriptionGiven a linked list, swap every two adjacent nodes and return its head.Example:Given 1-&gt;2-&gt;3-&gt;4, you should return the list as 2-&gt;1-&gt;4-&gt;3.Note:Your algorithm should ...

2018-10-26 18:31:54 2867

原创 数据结构与算法-线性表

线性表主要由顺序表示或链式表示。在实际应用中,常以栈、队列、字符串等特殊形式使用。逻辑结构线性表是最简单、最基本、也是最常用的一种线性结构,数据结构中的元素存在一对一的相互关系。 线性表是具有相同数据类型的n(n&amp;amp;amp;amp;gt;=0)个数据元素的有限序列,通常记为: (a1,a2,… ai-1,ai,ai+1,…an) ,其中n为表长, n=0 时称为空表。 它有两种存储方法:顺序存储和链式存储,它的...

2018-10-25 21:53:37 125593

原创 数据结构与算法-概述

数据结构是计算机存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。定义数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。记为:Data_Structure=(D,R)其中D是数据元素的集合,R是该集合中所有元素之间的关系的有限集合。结构分类逻辑结构逻辑结构,指反映数...

2018-10-23 13:38:49 3823

原创 面向对象程序设计

面向对象的特征抽象抽象就是找出一些事物的相似和共性之处,然后将这些事物归为一个类,抽象包括行为抽象和状态抽象两个方面。封装封装(encapsulation)是将对象运行所需的资源封装在程序对象中(基本上,是方法和数据),即隐藏对象的属性和实现细节,仅对外公开接口,控制程序中属性的访问级别。继承继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承...

2018-10-21 21:14:56 1915

原创 Mongodb分页查询性能分析

通用的分页思路通用的分页方案是基于row_number的分页思想,也就是说取第(pageIndexpageSize)到第(pageIndexpageSize + pageSize)db.getCollection('personas').find({}).sort({"_id":1}).skip(100000).limit(50)性能分析Mongodb的官方文档提示我们,不要轻易使用Sk...

2018-10-09 16:09:17 6212

原创 面向对象设计原则

在面向对象的软件设计中,只有尽量降低各个模块之间的耦合度,才能提高代码的复用率,系统的可维护性、可扩展性才能提高。面向对象的软件设计中,有23种经典的设计模式,是一套前人代码设计经验的总结,如果把设计模式比作武功招式,那么设计原则就好比是内功心法。常用的设计原则有七个,下文将具体介绍。七种设计原则简单归纳如下单一职责原则:专注降低类的复杂度,实现类要职责单一;开放关闭原则:所有面向对象原则...

2018-09-28 15:36:19 12162 1

原创 Spring boot+Dubbo+ZooKeeper整合

teaey版https://github.com/teaey/spring-boot-starter-dubboalibaba版https://github.com/alibaba/dubbo-spring-boot-starterapache版https://github.com/apache/incubator-dubbo-spring-boot-project

2018-09-04 18:10:25 9572

原创 设计模式(六)命令模式

概述在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式(Command Pattern)。关键词:解耦UMLCommand定义命令的接口,声明执...

2018-08-25 19:05:53 10170

原创 Centos7 Python2.7 Superset安装配置

Superset(Caravel)是由Airbnb(知名在线房屋短租公司)开源的数据分析与可视化平台(曾用名Caravel、Panoramix),该工具主要特点是可自助分析、自定义仪表盘、分析结果可视化(导出)、用户/角色权限控制,还集成了一个SQL编辑器,可以进行SQL编辑查询等。官方文档:http://superset.apache.org/ 安装教程:http://superset.a...

2018-08-21 18:25:08 13971

原创 代码重构

等问题集中爆发再进行大规模代码重构,其实这并不是一个理想的方法。代码重构应该是伴随着项目的生命周期无时无刻、期循序渐进的进行的。在项目刚刚开始的时候,代码很干净,一些小问题一般影响也不大,但研发开发新功能的时间过于饱和,没有富余的时间重构这部分代码;随着项目做的时间变长,这些小的问题就会累积起来(技术债务);随着一直添加新功能,这些问题会逐渐显现出来,不可避免的,开发速度会被拖慢;随着...

2018-08-18 15:08:55 11249

原创 git分支管理

团队开发中,遵循一个合理、清晰的Git使用流程,是非常重要的。否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护。常驻分支git仓库中一般可以设置三条常驻分支,分别是master分支、alpha分支、dev分支。master分支用于正式发布,alpha分支用于QA测试,dev分支用于日常开发和联调。常驻分支之间的merge操作使用—no-ff参数。master...

2018-08-14 19:54:51 15225

原创 git常用命令

创建版本库 命令 说明 git init 创建版本库全局参数设置 命令 说明 示例 git config –global 全局参数设置 git config –global user.name “PesenX”; git config –global user.email “test@foxmail.com”提...

2018-08-14 16:05:38 14057

原创 网站安全建设

伴随着web技术的发展,针对官网安全建设的几点思考1、为保证数据传输过程的安全性,建议重要数据使用https链接,密码等极重要数据增加RSA等非对称加密算法加密传输。2、建议会员注册和修改密码等功能增加传输过程的完整性校验。3、后台管理系统使用不容易被猜到的url(当前系统的url为:网站地址/admin,很容易被猜到)。4、后台管理系统分配不同的角色,并交由专人维护。5、...

2018-08-14 14:28:03 12908

原创 大数据方案-数仓建设

阿里云日志服务方案自研方案

2018-08-14 13:50:21 17525

原创 E-R图

E-R图用于描述应用系统的概念结构数据模型,它是进行需求分析,并归纳、整理、表达和优化现实世界中数据及其联系的重要工具。在建模的过程中,E-R图以实体、关系和属性三个基本概念概括数据的基本结构。基本符号关系(1) 一对一联系是指甲实体的任何一个实例只能对应到乙实体的一个实例,并且乙实体的任何一个实例只能对应到甲实体的一个实例。比如,在一个座位分配系统中,”学生”实体和”座位”实...

2018-08-11 15:52:54 17205

原创 数据流图

数据流图(Data Flow Diagram,DFD)是描述系统中数据流的图形工具,是一种用来表示信息流和信息变换过程的图解方法,可以标识一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换为逻辑输出所需的加工处理。数据流图把软件系统看成是由数据流联系的各种功能的组合,在需求分析的过程中,可以用来建立目标系统的逻辑模型。目的数据流图的目的是在用户和系统开发人员之间提供语义的桥梁。结构化需求...

2018-08-11 13:11:31 15045

转载 Java并发编程:深入剖析ThreadLocal

转载:https://www.cnblogs.com/dolphin0520/p/3920407.html

2018-08-07 14:17:17 12252

nginx/ftp/tomcat

详细教程:http://blog.csdn.net/ifwinds/article/details/52164530 包含以下内容: Tomcat:apache-tomcat-7.0.57.tar Nginx:pcre-8.34.tar ,nginx-1.6.2.tar Ftp:vsftpd-2.2.2-6.el6_0.1.x86_64.rpm

2016-08-09

PLSQL+Developer8.0.3

包括:安装程序、汉化包、Product code、Serial number、Password

2015-04-22

空空如也

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

TA关注的人

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