自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(122)
  • 资源 (7)
  • 收藏
  • 关注

原创 大型网站技术架构演进与性能优化(九)九、网站高可用建设:大型网站的稳定性建设

九、网站高可用建设:大型网站的稳定性建设稳定性是决定网站生死的命脉1、故障带来的影响导致极差的用户体验、严重影响公司声誉2、网站的可用性指标网站可用性即网站正常运行时间的百分比,业界用N个9来量化可用性,最常说的是“4个9(99.99%)”。网站可用性如果对达到4个9基本上就算及格了,即网站一年的不可用时间不超过52分钟。为了保障整个网站的全部服务完全不出错,有必要对服务进行分级,以保...

2020-02-06 21:47:16 975

原创 大型网站技术架构演进与性能优化(八)八、全局基础设施优化:资源调度优化

八、全局基础设施优化:资源调度优化基础设施包括JDK、Tomcat、VM、操作系统和文件系统甚至硬件设备,它们其实都有优化空间,而且由于基础设施的优化是事关全局的,所以通用性会更广、收益会更大。1、什么是资源调度资源调度分为两个阶段:一是实现物理资源的虚拟化,二是将资源虚拟化后进一步在时间和空间上实现更细粒度的编排、优化资源的使用。对物理机资源进行虚拟化可以提升资源的利用率,而对资源的良好...

2020-02-06 09:18:47 411

原创 大型网站技术架构演进与性能优化(七)七、链路优化:大秒系统的极致优化思路

七、链路优化:大秒系统的极致优化思路全链路的优化案例,即用户端->中间的链路->服务端->数据库的整条链路的极致优化思路。主要介绍大秒系统以及这种典型的读数据的热点问题的解决思路和实践经验。1、一些数据2013年的小米秒杀,使用的就是大秒系统。下面介绍秒杀系统的设计原则,让大家有整体的认识。2、热点隔离秒杀系统的第一个设计原则就是隔离热点数据,即禁止1%的请求影响剩...

2020-02-05 00:17:47 477

原创 大型网站技术架构演进与性能优化(六)六、应用架构探索:合并部署

六、应用架构探索:合并部署1、什么是架构业务架构抽象面向用户的,主要考虑给用户带来什么价值、什么体验,如帮助用户完成一系列需求的集合。应用架构面向技术人员,如何用更低的成本更快更好地实现用户的需求,是应用架构要解决的问题。平台(服务)架构应用架构复杂到一定程度后,需要单独抽出一层平台架构治理层,解决业务和应用的扩展性问题,以实现业务模型抽象、灵活扩展业务能力水平、灵活定制和组装应用等...

2020-02-04 12:02:29 541

原创 大型网站技术架构演进与性能优化(五) 五、应用程序优化:代码级优化

五、应用程序优化:代码级优化1、优化思路做优化首先要知道从哪里入手,也就是要知道系统的瓶颈在哪里。一个请求会消耗很多资源:CPU、内存、网络、磁盘等。这些资源中总会有一个到达瓶颈,只有优化最先到达瓶颈的资源才会产生效果。压测工具Java有两个经典的代码热点分析工具:JProfiler和YourkitApache ab压测工具这些具体使用参考文档。发现瓶颈Jstack,可以看看当前的...

2020-02-03 15:22:00 284

原创 大型网站技术架构演进与性能优化(四) 全球化下的网站演进:全球部署方案

四、全球化下的网站演进:全球部署方案全球化部署需要解决以下几个问题:第一,业务核心单元的梳理。这些核心单元必须可以裁剪或添加。第二,核心单元必须可以快速部署到国防的机房,最好能够一键部署,即首先要实现单元化部署。第三,实现全球数据连通。第四,处于研发效率的考虑,部署在全球的业务系统要有良好的定制型和扩展性。1、国际化的背景国际化一般有两种类型:一种是进口业务,像天猫国际和全球购;一种...

2020-02-02 23:17:11 1073

原创 大型网站技术架构演进与性能优化(三) 大型网站平台化演进:大中台小前台

三、大型网站平台化演进:大中台小前台中台这个概念早期是由美军的作战体系演化而来的,技术上所说的“中台”主要是指学习这种高效、灵活和强大的指挥作战体系。电商经过十几年的发展,组织已经庞大而复杂,业务不断细化拆分,也导致野蛮发展的系统越来越不可维护,开发和改造效率极低,也有很多新业务不得不重复造轮子,所以中台的目标是为了解决效率问题,同时降低创新成本。1、为什么需要中台本质上是为了解决业务实现的...

2020-02-01 16:50:14 445

原创 大型网站技术架构演进与性能优化(二) 无线化:无线时代下的架构演进

二、无线化:无线时代下的架构演进1、无线环境下的新挑战端的问题无线场景下的端屏幕更小,但是端的控制力更强,端上的交互可以做得更加流畅,更主要的是客户端能保持大量的状态数据,减少与后台的交互;客户端能对底层系统有更多的交互,如本地缓存;客户端的网路不稳定,但是网络调用会更加可控。服务端的问题由于同一个业务需要暴露给多个终端,那么我们要考虑如何做到一个业务逻辑能够多端复用,前端的交互逻辑如何...

2020-01-31 21:20:57 307

原创 大型网站技术架构演进与性能优化(一) 构建大型网站:分布式改造

一、构建大型网站:分布式改造1、为什么要做分布式化随着业务的扩展和流量的爆发式增长,该系统很快达到了瓶颈,是不是一定要对它做分布式改造呢?其实我们早期也尝试用过一些高端的服务器(IOE),但一方面价格昂贵,另一方面这样也阻挡不了瓶颈的到来,分布式改造成为必由之路。分布式改造必须先解决以下几个问题:第一,应用需要微服务化。即将大量粗粒度的应用逻辑拆小做服务化改造第二,必须先建立分布式服务框...

2020-01-31 18:38:06 410

原创 读领域驱动设计的领悟

领域驱动设计,个人领悟,主要是一种解决问题的方法论。在互联网公司中,大力提倡敏捷开发的今天,领域驱动设计会增加开发的复杂度,需要增加很大的开发工作量。在我工作的几家公司中,只有一家公司曾经提出过要进行领域驱动设计,但是领域驱动设计,大部分开发人员并不是很懂,对开发人员的能力要求也比较高,每个人的理解也都不一样,因此当时只是个别人的开发习惯。有这种领域驱动设计的思想,可以极大提高代码重用率、代码...

2020-01-31 14:49:18 352

原创 jackson使用

下面列举了json的常用方法:1、对象转json2、json字符串转对象3、 json字符串转为jsonNode4、支持泛型public class Jackson2Helper { private static final ObjectMapper mapper = new ObjectMapper(); /** * 对象转为json * @par...

2020-01-16 22:41:13 200

原创 使用joda-time封装的日期工具类

1、Joda-time简介Joda-Time这个专门处理日期时间的库2、类说明Instant:不可变类,代表时间线上的一个瞬时的时间点DateTime:不可变类,它以毫秒级的精度封装时间上的某个瞬间时刻,用来替换JDK的Calendar类LocalDate:不可变类,该类封装了一个年/月/日的组合。没有时区信息LocalTime:不可变类,表示一个本地的时间,而不包含日期部分。没有时区...

2020-01-16 18:45:35 296

原创 spring boot 、mybatis-plus、shiro整合入门教程(五)——采用mybatis-plus动态数据源配置,读写分离

接续上一篇,spring boot 、mybatis-plus、shiro整合入门教程(四)——自定义日志注解、缓存注解本项目采用的读写分离,使用的是mybatis-plus动态数据源切换的方案,官方文档项目中的数据库配置示例如下:代码中的数据源切换使用注解的方式,代码地址到这里,本项目的主要技术框架搭建完善,其中的技术细节,没有详细说明,比如shiro的注解@RequiresPe...

2019-05-26 23:12:45 870 2

原创 spring boot 、mybatis-plus、shiro整合入门教程(四)——自定义日志注解、缓存注解

接续上一篇,spring boot 、mybatis-plus、shiro整合入门教程(三)——shiro使用在使用shiro进行spring boot、mybatis-plus的整合中,使用了日志注解、缓存注解,主要原理利用了AOP切面进行的开发,代码如下:/** * @author liuyi * @date 2019/5/20 * * 缓存注解 */@Documented...

2019-05-26 22:55:54 438

原创 spring boot 、mybatis-plus、shiro整合入门教程(三)——shiro使用

接续上一篇,spring boot 、mybatis-plus、shiro整合入门教程(二)——mybatis-plus常用操作这篇主要介绍下shiro在项目中是如何使用的,前期的主要工作是数据库表的设计,上篇文章已经给出表的设计,详细的数据库初始化sql,可以参考代码库的sql,简单说下登录原理,用户每次登录的时候生成token,同时根据用户id更新数据库中的token有效时间和toke...

2019-05-26 22:45:56 1198

原创 spring boot 、mybatis-plus、shiro整合入门教程(二)——mybatis-plus常用操作

接续上一篇,spring boot 、mybatis-plus、shiro整合入门教程(一)——mybatis-plus代码生成器项目中的数据库表设计如下:菜单管理页面功能:新增、修改、删除、查询新增代码如下:SysMenuController类的代码如下:@Resource private SysMenuServiceImpl sysMenuService; /*...

2019-05-26 21:55:55 882

原创 spring boot 、mybatis-plus、shiro整合入门教程(一)——mybatis-plus代码生成器

最近在研究spring boot、mybatis-plus、shiro等技术框架的整合,为此设计了一套简单的权限系统,在其中实现了主要的业务功能,增加一些功能代码和技术技巧,提高自己的代码能力项目整体结构图:项目整体依赖的pom文件:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.ap...

2019-05-26 18:22:20 3123 1

原创 自定义Java web框架(六)

接续上一篇文章自定义Java web框架(五)本章主要讲解请求转发到后端之后如何处理的请求转发,也叫路由。实现思路如下:我们需要编写一个Servlet,让它来处理所有的请求,从HttpServletRequest对象中获取请求方法与请求路径,通过ControllerHelper#getHandler方法来获取Handler对象。当拿到这个Handler对象之后,可以获取Controller的...

2018-10-28 17:21:19 364 3

原创 自定义Java web框架(五)

接续上一篇文章自定义Java web框架(四)本章主要讲解框架的初始化。实现思路如下:主要是把前几篇文章中定义的相关帮助类初始化,类加载器助手类、Bean助手类、IOC助手类、Controller助手类。核心代码如下:public final class HelperLoader { public static void init() { Class&amp;lt;?&amp;...

2018-10-28 10:42:00 286

原创 自定义Java web框架(四)

接续上一篇文章自定义Java web框架(三)本章主要讲解如何处理Controller类,请求进入Controller类之后,根据请求的方法和路径找到Controller类中的Action方法执行业务逻辑处理。实现思路如下:获取所有定义了Controller注解的类,可以通过反射获取该类的中所有带有Action注解的方法,获取Action注解中的请求表达式,进而获取请求方法与请求路径,封装一...

2018-10-28 09:46:27 231

原创 自定义Java web框架(三)

接续上一篇文章自定义Java web框架(二)本章内容主要是讲解如何实现IOC功能。所谓的IOC,控制反转,bean的实例化通过框架自身来实现,也叫依赖注入。平时我们自己编程的实例化,都是通过new的方式实现,IOC把这个过程交给框架去处理,不需要手动编程。实现思路如下:先获取所有的Bean Map,然后遍历这个map容器,分别取出Bean类与Bean实例,进而通过反射获取类中所有的成员变...

2018-10-27 22:56:08 322

原创 自定义Java web框架(二)

接续上一章自定义Java web框架(一)的内容,这章主要是讲解如何实现类加载器,实现个Bean容器,用于生产Bean实例。先看文件目录如下:做开发思路是很重要的。首先,我们的目的是要获取Bean的实例,这样就需要一个Bean的容器,通过这个容器动态的获取Bean实例,如何实现这个Bean的容器呢?Java中使用反射的方式得到Bean实例放置到Map容器中。如何得到Bean实例呢?参考Sp...

2018-10-27 21:41:13 421

原创 自定义Java web框架(一)

通用Java语言实现一个完整的框架设计,主要是分为七个小节,每个小节,介绍了 Web框架的每个步骤的实现方式,这样可以让读者更加清晰的认识一个Java web框架的原理和实现方式。本人主要是通过实现一个简单的MVC设计模式的框架来介绍。写代码之前,要做简单的设计,这样可以思路清晰的去开发,避免遇到不必要的坑。先简单介绍下实现原理:Servlet来处理所有请求(步骤6),根据请求信息从con...

2018-10-14 23:57:25 1097

原创 slf4j log4j logback之间的关系,哪个更好些

slf4j是一系列的日志接口,而log4j logback是具体实现了的日志框架。而log4j和logback就是两个受欢迎的日志框架。但两者又有不同。log4j是apache实现的一个开源日志组件。(Wrapped implementations)logback同样是由log4j的作者设计完成的,拥有更好的特性,用来取代log4j的一个日志框架。是slf4j的原生实现。(Native im...

2018-10-13 21:52:11 1142

原创 Idea maven项目不能新建package和class的解决

参考下图示例

2018-10-13 19:25:05 157

原创 IntelliJ IDEA 编译报错:Error:java: Compilation failed: internal java compiler error

idea编译报错,按照如下图修改java 编译版本,没有编译版本添加即可

2018-10-13 19:21:50 482

原创 搭建dubbo zookeeper服务

最近研究dubbo原理,参考官方文档的demo,自己搭建了demo。 1、git clone https://github.com/apache/incubator-dubbo.git 先把dubbo的源码下载到本地,源码中有dubbo-demo的项目,其中包括dubbo-demo-api,dubbo-demo-consumer,dubbo-demo-provider三个子模块。其中api的是J...

2018-05-16 23:04:08 288

转载 git命令操作

一、clone Repository clone Github 上的Repository,如下:git clone [email protected]:FBing/design-patterns.git 二、管理分支 1、查看本地分支 使用 git branch命令,如下: $ git branch * master *标识的是你当前所在的分支。2、查看远程分支 命令如下: g...

2018-04-03 22:27:31 222

原创 python 安装MySQLdb记录日常

我本人使用的IDE是pycharm,Mac Os的环境下,我使用的是自带的在偏好设置的地方,安装MySQLdb,提示我pip的版本是9.0.1,只有在9.0.3才能找到MySQLdb的模块包,因此我又去升级pip包。 这里升级pip包注意用到sudo权限,sudo pip install –upgrade pip 然后使用升级后的pip再去安装MySQLdb,但是还报错。sudo pip in...

2018-03-29 23:56:19 221

原创 Java序列化深入解析

最近经常用到序列化,但是对于Java序列化没有一个系统的理解,查找了很多资料,做了个总结。 1、什么是序列化 序列化可以将一个java对象以二进制流的方式在网络中传输并且可以被持久化到数据库、文件系统中,反序列化则是可以把之前持久化在数据库或文件系统中的二进制数据以流的方式读取出来重新构造成一个和之前相同内容的java对象。 2、序列化作用 第一种:用于将java对象状态储存起来,通常放到...

2018-03-27 23:14:05 236

原创 应用部署启动停止脚本

参考spring boot部署到linux服务器 应用部署到linux之后,需要启动停止服务器,我查阅了一些资料,整理出了两个简单的启动停止脚本积累用于以后使用 start.sh#!/bin/bashPROJECTNAME=hellopid=`ps -ef |grep $PROJECTNAME |grep -v "grep" |awk '{print $2}'`if [ $pi...

2018-02-21 21:47:13 311

原创 idea开发调试

参考https://github.com/hengyunabc/spring-boot-inside/tree/master/demo-expected-single 这个文章可以看idea调试springboot启动的时候出现2个bean如何处理的情况,以及在debug模式下添加exception断点 https://www.cnblogs.com/ShaYeBlog/p/6881720.h...

2018-02-21 15:09:20 203

原创 spring boot部署到linux服务器

最近一直在研究springboot服务器,之前受到springmvc等框架的困扰,思路不对,一直想把springboot打包成war包然后部署到tomcat容器下,今天突然想到既然springboot我再本地可以使用jar包的形式访问,部署到Linux服务器上也是可以的,我查了下资料。步骤如下: 第一:在pom文件中需要配置springboot的maven插件&lt;build&gt;...

2018-02-20 23:48:37 6568

原创 linux服务器环境配置

linux服务器下的jdk tomcat配置参考这篇文章 http://blog.csdn.net/wangli61289/article/details/37922601/ 我自己的不同地方是使用了secureCRT的SFTP协议上传文件,使用的put命令上传文件到服务器,但是这个put命令只是把文件上传当前目录下,需要再把压缩包文件解压之后再移动到/usr/local目录下 我之前错误的...

2018-02-17 20:51:53 227

原创 idea修改包目录结构显示

公司用到idea开发工具,不熟悉新的ide,不像eclipse那么熟悉,因此,遇到不少问题,我想像在eclipse中那样看项目的目录结构,一直困扰,今天特意抽出时间来研究了下,记录下,怕以后忘记了。 idea的工程显示的右边有个齿轮一样的图标,点击之后,有这样的目录:Flatten Packages(收缩目录结构)和Compact Empty Middle Packages(隐藏空的包目录),主

2018-01-14 00:47:44 24666 2

原创 mac上实现切换python版本

最近在学习python,在自己的Mac电脑上安装了python,需要同时学习python2和python3,提供python2和python3的环境。 首先在自己的电脑上安装好brew,安装pyenv,然后选择安装python版本。 参考这个blog安装多个版本的python。 [http://blog.csdn.net/feifeilyj/article/details/62418916]

2017-08-27 11:03:09 6461

原创 两年Java程序员面试经

工作两年有余,本人第一份工作是在一家外包公司,第二份工作是在一家做SAAS平台的公司,第一家公司让我入门,进入了软件开发的行业,了解了一些基础的东西;第二家公司由于规模不大,很多活儿都是一个人来做,从产品到开发、测试、运维我都了解了,对于整体的软件开发流程有了很大的了解。但是,为了自己的更好发展,决定去一家大公司,于5月初提出了离职,虽然领导挽留,但是我还是离职了,然后我自己面试了很多家公司,大公司

2017-06-21 00:03:40 10821 7

原创 重写equals()方法同时还需要重写hashCode()方法

Java编程语言

2017-04-05 13:49:14 479

原创 模拟登陆csdn

Selenium 模拟登陆

2017-04-01 14:59:27 412

原创 Apache common Csv读写文件

common-csv.jar

2017-01-12 20:41:12 6798 1

java从入门到精通 实例代码

java从入门到精通 实例资源 非常实用书上所有的实例代码

2013-09-10

在线考试系统

java web 开发 在线考试系统 非常实用 代码

2013-09-09

java从入门到精通 PPT

适合新手学习实用PPT java从入门到精通 PPT电子版

2013-09-09

十个java项目

BBS论坛 聊天系统 超市管理系统 电子商城系统 酒店管理系统 企业快信系统 企业门户新闻网 企业人事管理系统 手机网络游戏 图书馆管理系统

2013-09-08

电子商城系统

基于java代码的电子商城系统,不用手打,可以完全运行,可以收藏哦!

2013-09-02

BBS论坛系统

Java代码 BBS论坛 很实用 完全能够运行 不用手打 可以完全运行 非常有用 一定要收藏哦!

2013-09-01

超市管理系统

关于Java代码的超市管理系统 非常实用 可以在eclipse中完全运行

2013-09-01

空空如也

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

TA关注的人

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