自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java的生命旅程

开头小贴士:不做博客的搬运工,答应我,好吗?由于篇幅流程很长, 整个流程也很复杂, 请耐心阅读。总的执行流程图 (实际执行并非这样,画这个流程图只是为了加深理解)实例代码主程序package debug.jvm;public class JvmTest { public static void main(String[] args) { Parent parent = new Parent(); Parent son1 = new Son1().

2020-05-17 20:16:23 499

原创 记录成长(7.13-7.27)

大搜车记录2018年7月13号来公司报道,转眼间今天就7月27号了,整整两个星期了,总的工作时间是十天,在这十天中,我知道了如下:1.我的部门是共享开发部,负责的是公司的店铺服务方面的开发,我负责的部分是企业认证,主要是熟悉企业认证的流程。2.公司的各种环境的地址:测试环境:http://项目名.stable.dasouche.net预发环境:http://项目名.prepub...

2018-07-27 22:03:26 279

原创 大型网站架构及演化【3】- 架构要素

关于什么事架构,一种比较通俗的说法就是“最高层次的规划,难以改变的决定”,这些规划和决定奠定了事物未来发展的方向和最终的蓝图!一般来说,除了当前的系统功能需求外,软件架构还需要关注性能、可用性、伸缩性、扩展性和安全性这五个架构要素。3.1 性能性能是一个网站的重要指标,正是由于性能问题几乎无所不在,所以优化网站性能的手段也非常多。在浏览器端,可以通过浏览器缓存、使用页面压缩、合理布...

2018-06-07 21:27:14 322

原创 大型网站架构及演化【1】-网站演化

1.1大型网站软件的特点高并发,大流量,高可用,海量数据,用户分布广泛,网络情况复杂,安全环境恶略,需求快速变更,发布频繁,渐进式发展1.2 大型网站架构演化发展历程1.2.1 初始阶段的网站架构一台服务器1.2.2 应用服务和数据服务分离三台服务器: 应用服务器:需要更快更强大的CPU 文件服务器:更大的硬盘 数据库服务器:需要快速磁盘检索和数据缓存,更快的硬盘...

2018-06-05 16:48:22 279

原创 Spring源码系列-事务解析

1.简介1.1 什么是事务1.2 事务特性1.3 事务的隔离级别1.4 事务混乱导致的问题2.重要的接口和类3.Spring事务3.1 事务的传播属性3.2 事务隔离级别3.3 事务超时3.4 事务只读属性3.5 事务回滚规则4.执行流程5.在Spring中配置事务管理器5.1 编程式配置5.2 声明式配置5.3 注解式配置1.简介...

2018-05-05 12:23:14 1101

原创 我所理解的并发系列教程——线程池

我所理解的并发系列教程——线程池1.简介2.线程池实现原理2.1主要处理流程图2.2 执行execute3.线程池的使用3.1参数详细解释3.2实例代码3.3执行流程4.提交任务的方式:5.关闭线程池6.线程池优化7.线程池的监控我所理解的并发系列教程——线程池1.简介优点: 第一:降低资源消耗。通过重复利用已创建的线程降低线程...

2018-05-01 20:14:48 332

原创 SpringMVC源码系列-拦截器

1.简介2.重要的接口及类2.1 HandlerInterceptor2.2 HandlerInterceptorAdapter3.执行流程4.拦截器的使用4.1 继承HandlerInterceptorAdapter4.2 在spring-mvc.xml配置拦截器4.3 Controller编写5.源码分析6.多拦截器的执行情况6.1配置多个拦截器6.2 各种...

2018-05-01 20:12:26 334

原创 redis集群搭建【2】-Windows中Redis集群搭建

Windows 配置Reids集群 Redis Cluster1. 准备材料1.1 下载安装Redis地址: https://github.com/MSOpenTech/redis/releases 步骤: 1.解压后拷贝到自己的目录下 2.打开cmd,切换到Redis目录下,输入命令,启动服务器端 redis-server redis.windows.conf ...

2018-04-25 21:39:45 233

原创 内存映射文件

内存映射文件允许我们创建和修改那些因为太大而不能放入内存的文件。有了内存映射文件,我们就可以假定整个文件都放到内存中,而且可以完全把他当作非常大的数组来访问。这种方法极大的简化了用于修改文件的代码1.类 MappedByteBuffer1.1描述public abstract class MappedByteBufferextends ByteBuffer ...

2018-04-14 20:19:26 190

原创 位操作应用与总结

基本的位操作符有与、或、异或、取反、左移、右移这6种,它们的运算规则如下所示:位操作符 符号 描述 运算规则 & 与 两个位都为1时,结果才为1 | 或 两个位都为0时,结果才为0 ^ 异或 两个位相同为0,相异为1 ~ 取反 0变1,1变0 << 左移 各二进...

2018-04-14 20:16:52 489

原创 RabbitMQ 学习教程

RabbitMQ 学习教程 简介:消息组件一 、安装RabbitMQ1. 安装Erlang/OTP 17.3下载地址:http://www.erlang.org/downloads 2. 安装rabbitmq-server-3.7.2下载地址:http://www.rabbitmq.com/install-windows.html 3. 安装完...

2018-04-14 20:15:29 536

原创 使用MockMvc测试 Controller

概述  对模块进行集成测试时,希望能够通过输入URL对Controller进行测试,如果通过启动服务器,建立http client进行测试,这样会使得测试变得很麻烦,比如,启动速度慢,测试验证不方便,依赖网络环境等,这样会导致测试无法进行,为了可以对Controller进行测试,可以通过引入MockMVC进行解决。简介  MockMvc实现了对Http请求的模拟,能够直接使用网络的...

2018-04-14 20:14:24 9574

原创 接口测试

2018/4/12 今天知道了项目的三个组成部分, api:负责和app交互 admin:后台管理系统 web:网页应用明天写接口测试文档流程今天写了测试类,很好用的测试类,使用额Mimport com.shangfu.controller.LoginController;import org.junit.Before;import org.junit.Test;im...

2018-04-12 20:34:47 341

原创 2.公司各种应用环境

2018/4/11 今天我接到了一个任务,写一个修改用户手机号的需求,我本来以为很简单,但是万万没有想到,我搞了一天,到晚上的时候还没有弄好! 中间还出现了笑话,我把uat,说成了uit 真的很是无奈,晚上回来后写了这篇博客各种开发环境的介绍1.开发环境开发环境是程序猿们专门用于开发的服务器,配置可以比较随意, 为了开发调试方便,一般打开全部错误报告。2.测试环境...

2018-04-12 20:13:28 424

原创 1.前后端分离开发模式

2018/4/10 今天是一个特殊的日子,我做为一个实习生,终于有机会接触到公司的代码,和大佬交谈了一会,知道了现如今的开发模式!接着上网查了一些资料,写了这篇博客。1.为什么分离2.前后端分离2.1交互形式2.2代码的组织方式2.3开发模式2.4接口规范流程3.线上部署4.总结1.为什么分离这个问题就涉及到web应用的发展历史了...

2018-04-11 21:00:08 7423 3

原创 Boyer-Moore Voting算法

Leetcode 169.Majority Element Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.You may assume that the array is n...

2018-04-08 21:13:53 678

原创 kadane的算法

下面来介绍一道LeetCode上的题: Find the contiguous subarray within an array (containing at least one number) which has the largest sum. For example, given the array [-2,1,-3,4,-1,2,1,-5,4], the con...

2018-04-08 09:08:56 568

原创 动态规划算法

动态规划的英文名叫Dynamic Programming,是一种分阶段求解决策问题的数学思想。它不仅用于编程领域,也应用于管理学、经济学、生物学 总结一点就是大事化小,小事化了 题目:求楼梯阶数有一座高度是10级台阶的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶。要求用程序来求出一共有多少种走法。 比如,每次走1级台阶,一共走10步,这是其中一种走法。我们可以简写...

2018-03-28 11:40:52 416

转载 哈希表(散列表)

什么是哈希表?哈希表(Hash table,也叫散列表)根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。记录的存储位置=f(关键字)这里的对应关系f称为散列函数,又称为哈希(Hash函数),采用散列技术将记录存储在一块连续的存储空间中,这块连...

2018-03-16 15:45:58 249

原创 字符串问题

字符串作为Java中最常用的工具,我们应该了解它的基本算法,下面来介绍一些常用的算法:1.求某个字符串的所有子串1.1二进制算法:给定任意一个字符串,比如 “123” 结果是: [3, 2, 23, 1, 13, 12, 123] 例如: 123 转化为二进制就是2的3次方=8 所以就是0-7的二进制数 000 001 ...

2018-03-16 13:56:32 245

B树、B-树、B+树、B*树的定义和区分

B树树的概念: 节点: 叶子节点: 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;如: B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,如果查询关键字比结点关键字小,就进入左儿子...

2018-03-16 08:58:17 284

转载 位操作来轻松高效的解决问题

维基 位操作是通过算术操作位或其他短于数据的数据段的操作。需要位操作的计算机编程任务包括低级设备控制,错误检测和纠正算法,数据压缩,加密算法和优化。对于大多数其他任务,现代编程语言允许程序员直接使用抽象而不是代表抽象的位。进行位操作的源代码使用按位操作:AND,OR,XOR,NOT和位移。 在一些情况下,位操作可以避免或减少循环遍历数据结构的需要,并且可以提供多倍的加速,因为位操...

2018-03-12 10:45:40 309

转载 大型网站架构演变

处于这个互联网开发时代,作为一名软件工程师,我们经常会听到大型网站架构这个字眼,那到底什么是大型网站呢,这样的网站又是一种什么样的架构设计呢?今天我们就开始谈谈大型网站架构设计系列,首先我们今天讲讲大型网站架构设计是如何演变的,跟着我一起出发吧。一、大型网站系统的特点 高并发,大流量:需要面对高并发用户,大流量访问; 高可用:系统24小时不间断的提供服务; 海量数据:...

2018-03-08 17:16:52 245

原创 Java虚拟机类加载机制

类从被加载到虚拟机内存开始,到卸载出内存为止,它的整个生命周期包括:加载,验证,准备,解析,初始化,使用和卸载7个阶段。其中验证、准备、解析3个部分统称为连接,这7个阶段的发生顺序如图: 加载这个流程中的加载是类加载机制中的一个阶段,这两个概念不要混淆,这个阶段需要完成的事情有: 1.通过一个类的全限定名来获取定义此类的二进制字节流。 2.将这个字节流所...

2018-03-07 18:22:36 185

原创 图的DFS和BFS算法解析

图是一种灵活的数据结构,一般作为一种模型用来定义对象之间的关系或联系。对象由顶点(V)表示,而对象之间的关系或者关联则通过图的边(E)来表示。 在图的基本算法中,最初需要接触的就是图的遍历算法,根据访问节点的顺序,可分为广度优先搜索(BFS)和深度优先搜索(DFS)。本文将给出给出BFS和DFS的以下几种实现方式: 1、使用队列Queue实现图的BFS遍历 2、递...

2018-03-07 16:04:24 1824

原创 ETL详解

ETL(Extract-Transform-Load的缩写,ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。 ETL是BI项目重要的一个环节。 通常情况下,在BI项目中ETL会花掉整个项目至少1/3的时间,ETL设计的好坏直接关接到BI项目的成败。 ETL的设计分三部分:...

2018-03-05 17:24:01 997 1

原创 JVM垃圾回收机制

对于垃圾JVM的垃圾回收机制这里我们称为GC,众所周知,java语言不需要像c++那样需要自己申请内存,自己释放内存,这些都是JVM帮我们做好了的,但是对于一名java程序员,想要更近自己的水平更上一层楼,就要去了解GC的工作原理,根据原理才能写出更好的更优的程序,这里我们先初步讲解一下GC的工作原理JVM内存运行时数据存储的三个重要的地方:判断一个对象是否可以被回收1.引用...

2018-03-01 16:42:48 214

原创 RabbitMQ 安装教程

RabbitMQ 安装教程 简介:消息组件一 、安装RabbitMQ1. 安装Erlang/OTP 17.3下载地址:http://www.erlang.org/downloads 2. 安装rabbitmq-server-3.7.2下载地址:http://www.rabbitmq.com/install-windows.html 3. 安装完成

2018-02-06 18:03:14 594

原创 Dockerfile创建镜像

Dockerfile创建镜像简介: Dockerfile是一个文本格式的配置文件,用户可以使用Dockerfile快速创建自定义的镜像一、Dockerfile基本结构Dockerfile文件分为四部分: - 基础镜像信息 - 维护者信息 - 镜像操作指令 - 容器启动时执行指令 例如:#第一行必须指令基于的基础镜像From ubutu#维护者

2018-02-06 18:01:28 224

原创 Java内存分析

Java程序运行时,数据都保存到什么地方? 程序运行时,我们最好对数据保存到什么地方做到心中有数。特别要注意的是内存的分配。有六个地方都可以保存数据:Java内存区域程序计数器程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一跳需要执行的字节码指令,分支、循环、跳转、异常处理、线程回复等基...

2018-02-06 18:00:08 182

原创 SpringBoot系列——Java配置(SpringMVC配置)

接下来我们来学习SpringMVC的Java配置方式,现在让我们来快速的搭建一个springMVC项目。实例:1. 构建Maven项目 pom.xml内容:project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instanc

2018-02-06 17:51:13 1418

转载 RabbitMQ详细教程【1】-RabbitMQ中的重要的概念

简介: 首先来介绍一下AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。 AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。 RabbitMQ是一个开源的AMQP

2018-01-24 18:08:57 335

原创 Docker-详细教程

Docke实战 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。 Docker是一个重新定义了程序开发测试、交付和部署过程的开放平台,Docker则可以称为构建一次,到处运行,这就是docker提出的“Build once,Run anywhere”。 简单来说,就是你需要一个Tom

2018-01-23 09:20:55 2067 2

原创 使用Hystrix实现微服务的容错处理

使用Hystrix实现微服务的容错处理微服务 容错处理 Hystrix一、实现容错的手段如果服务提供者响应非常缓慢,那么消费者对提供者的请求就会被强制等待,直到提供者响应或超时。在高负荷的场景下,如果不作任何处理,此类可能导致服务消费者的资源耗尽,甚至整个系统的崩溃。 如图:A作为服务提供者(基础服务),B为A的服务消费者,C和D是B的服务消费者,当A不可用引起不了B

2018-01-19 10:02:47 1688

原创 SpringBoot项目在IntelliJ IDEA中实现热部署

SpringBoot项目在IntelliJ IDEA中实现热部署热部署 SpringBootSpringBoot项目在IntelliJ IDEA中实现热部署步骤一开启idea自动make功能在IDEA界面按CTRLSHIFT-查找 make project automatically -选中如图CTRLSHIFTA查找Registry找到并勾选compilerau

2018-01-18 21:56:01 1525

原创 SpringCloud - 第一天

SpringCloud - 第一天 简介: spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等。它运行环境简单,可以在开发人员的电脑上跑。另外说明spring cloud是基于springboot的,所以需要开发中对springboot有一定的了解,如果不了解的话可以看这

2018-01-18 08:37:08 312

原创 前端框架Bootstrap的使用

前端框架Bootstrap的使用 Bootstrap简洁、直观、强悍的前端开发框架,让web开发更迅速、简单。1. 下载Bootstrap下载地址:https://v3.bootcss.com/ 进入后下载这个标题的Bootstrap 下载完成后,将所需的css,js复制到工程中即可2. 拷贝官方的模块文件<!DOCTYPE html><html lang="zh-CN"> <h

2018-01-11 21:56:17 707

原创 SSM框架下使用JSON和AJAX进行前后端数据传输

SSM框架下使用JSON和AJAX进行前后端数据传输 随着前后端分离开发,前端使用ajax发送请求,后台提供相应的服务,之间的数据传递用JSON来完成!(本节内容需要你有javascript基础)接下来用登陆功能来演示前后端通过JSON交互1. 前端页面<%-- Created by IntelliJ IDEA. User: Administrat

2018-01-10 23:17:12 4743 3

原创 Tomcat详解

Tomcat详解在经历了云服务器的配置吹残后,我决定深刻的研究一下Tomcat服务器!1. 安装TomcatTomcat的官方站点为http://tomcat.apache.org/,要安装Tomcat,(首先需要安装JDK),下载后解压就在指定目录就可以了,添加一下脚本启动即可[root@localhost tomcat]# vim /etc/init.d/tom

2018-01-10 21:19:38 9232 1

原创 解决github访问及上传慢的问题

解决github访问及上传慢的问题解决方法绕过dns解析,在本地直接绑定host,该方法也可加速其他因为CDN被屏蔽导致访问慢的网站。实现在本地host文件中添加映射,步骤如下:用文本编辑器打开hosts文件,位于C:\Windows\System32\drivers\etc目录下打开 http://tool.chinaz.com/dns ,这是一个查询域名映射关系的工

2018-01-07 21:20:34 6374

空空如也

空空如也

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

TA关注的人

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