- 博客(44)
- 资源 (105)
- 问答 (1)
- 收藏
- 关注
原创 学习JVM
所谓虚拟机,就是一台虚拟的机器。它是一款软件,用来执行一系列虚拟计算机指令,大体上虚拟机可以分为系统虚拟机和程序虚拟机,大名鼎鼎的Visual Box、VMware就属于系统虚拟机,他们完全是对物理计算机的仿真,提供了一个可运行完整操作系统的软件平台。程序虚拟机典型代表就是Java虚拟机,它专门为执行单个计算机程序而设计,在java虚拟机中执行的指令我们成为Java字节码指令。无论是系统虚拟机还是
2017-06-30 17:10:13 2549 1
原创 在jenkins服务器上部署一个工程
直接上图,下面是Jenkins的管理页面,点击"新建"。 会看到下图所示界面,在"Enter an item name"的输入框中输入要部署的工程名,注意:这个工程必须是已经在git上创建的工程。点击那个"构建一个maven项目",然后点击"OK"。 我们会看到如下图所示界面按下图所示填写信息。 其中在上图中我们写的
2017-06-30 09:12:54 2810
原创 学习互联网架构第十一课(并发类容器之Queue)
在并发队列上JDK提供了两套实现,一个是以ConcurrentLinkedQueue为代表的高性能队列,一个是以BlockingQueue接口为代表的阻塞队列,无论哪种都继承自Queue。如下图所示。 首先我们来学ConcurrentLinkedQueue,ConcurrentLinkedQueue:是一个适用于高并发场景下的队列,通过无锁的方式,实现了
2017-06-28 23:41:27 1584 2
原创 学习互联网架构第十课(并发类容器)
并发类容器是专门针对并发设计的,使用ConcurrentHashMap来代替给予散列的传统的HashTable,而且在ConcurrentHashMap中,添加了一些常见复合操作的支持。以及使用了CopyOnWriteArrayList代替Vector,并发的CopyOnWriteArraySet,以及并发的Queue,ConcurrentLinkedQueue和LinkedBlockingQue
2017-06-27 22:12:51 1008
原创 学习互联网架构第九课(同步类容器)
同步类容器,常见的有Vectorr和HashTable,这些容器的同步功能其实都是由JDK的Collections.synchronized***等工厂方法去创建的。其底层的机制无非就是用传的synchronized关键字对每个共用的方法都进行同步,使得每次只能有一个线程访问容器的状态。这很明显不满足我们今天互联网时代高并发的需求,在保证线程安全的同时,也必须要有足够好的性能。
2017-06-26 23:20:45 1023
原创 学习互联网架构第八课(单例和多线程)
单例模式,最常见的就是饥饿模式和懒汉模式,一个直接实例化对象,一个在调用方法时进行实例化对象。 大家见的最多的莫过于下面这种单例模式了,这种模式是懒汉模式,就是说只有你调用getInstance方法的时候,它才会创建实例。但是这种方式有个非常致命的问题就是在多线程的情况下不能正常工作。public class Singleton { private static S
2017-06-26 20:20:25 1372 1
原创 学习淘淘商城终结篇(系统部署演示)
首先说下淘淘商城在真实环境中要部署的话需要多少台服务器 服务所需的服务器数量至少是24台,如下所示。需要24台服务器。 24Mysql 2Solr 7Redis 6图片服务器 2Nginx 2注册中心 3Activemq 2 工程共12个,如下所示,本着高可用的原则,每个工程至少有两台服务器。12个工程至少需要24台服务器。
2017-06-25 00:00:06 9431 17
原创 学习淘淘商城第一百零九课(tomcat热部署)
首先,大家需要先学会安装tomcat,可以参考http://blog.csdn.net/u012453843/article/details/73656374这篇博客进行学习。 我们要登录tomcat管理页面,但需要进行一些配置,那么怎么配置呢?tomcat首页可以给我们一些提示,我们点击tomcat首页的"Manager App"。 这时会弹出一个对
2017-06-23 23:59:41 2878 9
原创 CentOS6安装tomcat
第一步:搭建虚拟机 大家可以参考http://blog.csdn.net/u012453843/article/details/68947589这篇博客进行学习 第二步:配置静态IP并且要能上网 大家可以参考http://blog.csdn.net/u012453843/article/details/52839105这篇博客进行学习 第三步
2017-06-23 22:09:10 1309
原创 学习淘淘商城第一百零八课(Mycat的读写分离)
数据库读写分离对于大型系统或访问量很高的互联网应用来说,是必不可少的一个重要功能。对于MySQL来说,标准的读写分离是主从模式,一个写节点Master后面跟着多个读节点,读节点的数据取决于系统的压力,通常是1-3个读节点的配置。读写分离如果不用mycat的话,就需要配置两套数据源,读的时候用一套数据源,写的时候用另外一套数据源,然后配置数据库主从复制,然而这种做法无法进行分片,也就是说,当数据量很
2017-06-22 23:03:43 1922 2
原创 学习淘淘商城第一百零七课(Mycat的数据库分片)
一:需求 把商品表分片存储在三个数据节点上二:环境 mysql节点1环境 操作系统版本:centos6.8 数据库版本:mysql-5.6 mycat版本:1.4 release 数据库名:db1、db3 ip:192.168.156.41
2017-06-21 18:01:58 3494 2
原创 学习淘淘商城第一百零六课(Mycat简单入门)
一:什么是Mycat? 简单的说,Mycat就是: 一个彻底开源的,面向企业应用开发的"大数据库集群" 支持事务、ACID、可以替代Mysql的加强版数据库 一个可以视为"Mmysql"集群的企业级数据库,用来代替昂贵的Oracle集群。 一个融合内存缓存技术、Nosql技术、HDFS大数据的新型SQL Server
2017-06-20 18:03:12 1989
原创 linux系统安装mysql
我们以CentOS6为例来安装mysql。第一步:Linux环境 首先大家新建一个虚拟机,配置静态IP并且要能上网。第二步:安装wget命令[root@taotao-mysql ~]# yum install -y wget第三步:创建存放所有安装文件的目录 我一般习惯于把所有安装文件都放到/usr/local/software目录下,但是s
2017-06-20 14:30:05 765
原创 学习淘淘商城第一百零五课(定时任务---Quartz)
一、什么是Quartz Quartz是OpenSymphony开源组织在Job scheduling领域的开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个、百个、甚至好几万个Jobs这样复杂的日程程序表。Jobs可以做成标准的Java组件或EJBs。 Quartz是一个任务日程管理系统,一个在预先确
2017-06-19 21:32:38 3030
原创 学习淘淘商城第一百零四课(生成订单)
首先提醒一下,我2017-06-17日上午补充了下上篇博客,没有看完的同学可以回到上篇博客进行学习。这节课我们一起学习下生成订单。第一部分:订单数据库分析 我们先来看下tb_order表,如下图所示,可以看到,主键order_id是字符串类型,不是自增长的,因此我们需要自己生成订单编号。payment字段是实付金额,需要从前台传过来,保留小数点后2位,payment_type
2017-06-17 15:12:47 4825
原创 学习淘淘商城第一百零三课(利用拦截器实现登录功能及订单确认页面展示)
我们上节课一起搭建了订单的服务工程和web工程,我们参考京东可以知道,京东在没有登录时就可以使用购物车,但是当要真正付款的时候,一定是要求登录的。也就是说由购物车列表页面直接跳转到登录页面去登录。这显然用到了拦截器的功能,这节课我们便一起实现登录功能。 下图便是购物车列表页面,我们点击"去结算",如果当前用户还没登录,是必须要先登录的。 下面我们便来写
2017-06-16 22:09:24 3884
原创 学习互联网架构第七课(ThreadLocal的使用)
在说我们的主人公ThreadLocal前,我先给大家说一个场景,大家想想应该怎么做。场景: 路由器、交换机在运行的过程中有可能出现问题,现在我们想收集各个设备的日志信息,收集到的日志我们要存到本地文件当中的,每台设备要有专门一个文件夹与之对应,文件夹的名称就以设备的IP为名,在文件夹内记录是哪天的日志,每天建一个文件夹,如果某设备当天的日志太多,一个文件存放的话不利于阅读,
2017-06-16 09:11:15 955
原创 学习淘淘商城第一百零二课(订单系统服务端和客户端工程搭建)
首先我们还是先看一眼淘淘商城的系统架构,如下图所示,可以看到订单模块是单独的模块,有服务端还有客户端,服务端负责存储订单,客户端负责展示订单。 下面我们便来搭建订单服务,点击File---->New----->Other...如下图所示。 选择"Maven Project",然后点击"Next",如下图所示。
2017-06-15 23:00:46 2312
原创 学习淘淘商城第一百零一课(删除购物车商品及购物车总结)
上节课我们一起学习了修改购物车商品数量,这节课我们一起学习下删除购物车商品。 我们在购物车列表页面点击"删除"链接,如下图所示。 我们会看到如下图所示界面,可以看到请求的url是/cart/delete/{itemId}.html,与购物车列表页面的url地址/cart/cart.html不一致,但是我们点击"删除"链接后页面应该仍然留在当前页面,我们怎么做
2017-06-14 22:55:07 3892
原创 学习淘淘商城 第一百课(修改购物车商品数量)
上节课我们一起学习了展示购物车列表,这节课我们继续完善购物车,实现购物车商品数量的修改功能。 当前购物车列表,如果我们修改商品数量,总价格不变,而且页面刷新后还会回到原来的数字 我们首先看看上节课我们展示的购物车列表,如下图所示,当前商品数量是3,总价格是20997元。 下面我们点击那个"+"让商品数量加1,发现商品数量变
2017-06-14 22:06:25 3300
原创 学习互联网架构第六课(使用wait/notify模拟Queue)
BlockingQueue:顾名思义,首先它是一个队列,并且支持阻塞的机制,阻塞的放入和得到数据。我们要实现LinkedBlockingQueue下面两个简单的方法put和take。 put(anObject):把anObject加到BlockingQueue里,如果BlockingQueue没有空间,则调用此方法的线程被阻断,直到BlockingQueue里面有空间再继续。
2017-06-14 15:29:35 757
原创 学习互联网架构第五课(多线程通信---wait和notify)
线程通信概念:线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能成为一个整体,线程间的通信就成为整体的必用方式之一。当线程存在通信指挥,系统间的交互性会更大,在提高CPU利用率的同时还会使开发人员对线程任务在处理的过程中进行有效的把控与监督。 使用wait/notify方法实现线程间的通信。(注意这两个方法都是object的类的方法,换句话说java为所有的对象都提
2017-06-14 10:18:16 785 1
原创 学习淘淘商城第九十九课(展示购物车列表)
上节课我们一起学习了下添加购物车功能,这节课我们一起学习下展示购物车列表。 我们点击下图的"去购物车结算"。 可以看到会报404的错误,这是由于我们还没实现购物车列表展示功能,但是我们可以从地址栏中看到请求的url,如下图所示。 我们首先看一下购物车商品列表的jsp文件,如下图所示。我们需要给这
2017-06-13 23:27:52 2157
原创 学习淘淘商城第九十八课(添加购物车)
上节课我们一起改造了下商品详情页面关于购物车的部分,这节课我们一起分析下添加购物车功能。 我们以京东为例,比如我们选了一款手机,然后点击"加入购物车",注意,此时我们并没有登录。 我们会看到如下图所示界面,可以看到,我们并没有直接进入购物车列表,而是到了一个中间页面,只是提醒我们成功加入购物车。如果想进购物车列表的话,就点击那个"去购物车结算"按钮。
2017-06-13 22:30:20 4437
原创 学习互联网架构第四课(volatile关键字)
volatile概念:volatile关键字的主要作用是使变量在多个线程间可见。 在说volatile关键字之前,先来看两个小例子package com.internet.thread;public class RunThread extends Thread{ private int num = 0; public void setNum(int nu
2017-06-13 14:42:39 899
原创 学习淘淘商城第九十七课(商品详情页面对加入购物车进行改造)
我们访问淘淘商城首页(前提是启动了所有的服务及工程,虽然有个别工程用不上,不过也没关系),在搜索框中输入要搜索的商品,我以前添加过"金立M2017"这款手机,我就搜索它。 搜索到的结果页面如下图所示。 我们再点击这款手机,查看详情,如下图所示。 如果我们这时点击上图的"加入购物车",如下图所示,可以看到地址并不正
2017-06-11 22:27:29 2857 5
原创 学习淘淘商城第九十六课(购物车实现分析及工程搭建)
关于购物车模块,京东和淘宝并不一样,京东允许用户在没有登录的情况下就使用购物车,而且加到购物车里面的商品可以一直保存着(其实是放到了Cookie当中,如果清空了Cookie也就清空购物车了)。而淘宝则是必须先登录才能将商品添加到购物车当中,就用户体验来说,京东的购物车模块用户体验更好。 我们看下京东购物车,如下图所示,可以看到域名是cart.jd.com,这与商品详情页面的ite
2017-06-11 20:17:59 2560
原创 学习淘淘商城第九十五课(jsonp的原理及两种实现方式)
首先,说下什么是跨域?有以下两种:1.域名不同2.域名相同,端口不同 接着说下什么是jsonp? jsonp不是新技术,它只是一种解决方案,使用js的特性绕过跨域请求,利用的特性便是js可以跨域加载js文件!!举个非常常见的例子,我们在html头部一般都会引入很多js,甚至我们直接引用在线的js,比如我们引用官方网站的jQuery路径加载进来也是可以的。JQ
2017-06-11 16:55:32 2083 1
原创 学习淘淘商城第九十四课(js跨域分析)
上节课我们一起学习了登录,登录的时候我们把token写到了cookie当中,登录成功后,我们查看Cookie信息,如下图所示,发现是有token信息的。 我们回到登录页面,可以看到token信息。如下图所示。可以看到与淘淘商城首页的token信息是完全一致的。 不同的端口就已经属于跨域了,而我们就是要解决跨域问题。 首先
2017-06-11 14:48:42 1822
原创 学习淘淘商城第九十三课(用户登录的实现)
我们来看下login.jsp页面,如下图所示。可以看到标签中并没有定义onclick方法,只是定义了个id="loginsubmit",那么onclick事件在哪儿定义了呢? 其实是在js当中,如下图所示,页面加载完后就给id为loginsubmit的按钮添加了onclick事件,当点击这个按钮的时候,会触发LOGIN对象的login方法,login方法要先检查用户名
2017-06-11 11:48:09 1887
原创 学习淘淘商城第九十二课(用户注册页面实现)
首先,我们还是先看一下注册页面,如下图所示。 上图箭头指向的链接在register.jsp的代码当中的位置如下图所示。 由于我现在对css不是很熟悉,注册页面对输入合法性的校验就不像正规网站那种校验方式了,我只是在点击"立即注册"的时候统一做下校验,如果不合法就弹出一个alert警告框(注意:实际工作中是绝不允许用alert来提示校验信息的,cs
2017-06-11 09:44:34 1492
原创 学习淘淘商城第九十一课(单点登录、注册页面展示)
首先我们将单点登录系统所需要的静态资源文件放到taotao-sso-web工程的WEB-INF目录下,静态资源文件大家可以到:这个地址进行下载。 由于web.xml文件当中配置的拦截形式是"/",这也就意味着它会拦截所有的请求,包括我们的静态资源文件,我们直接访问的话就会报404(找不到资源的错误),可能有些小白跟我一样,对拦截请求不明白,之所以有拦截器就是为了系统的安
2017-06-10 22:17:05 1828 2
原创 学习淘淘商城第九十课(单点登录之安全退出)
首先还是先看下接口文档,所谓的安全退出其实就是将token从redis当中删除,由于现在跨域还没学,参数中的callback就先不用。 先在UserService接口类中添加安全退出的接口,如下图所示。 添加的代码如下://安全退出TaotaoResult logout(String token); 下面我们到UserSer
2017-06-09 15:28:11 3375 4
原创 学习淘淘商城第八十九课(单点登录之通过token获取用户信息)
首先还是看接口文档关于通过token获取用户信息的说明,如下图所示。 看了说明文档我们便知道该怎么做了,在taotao-sso-interface工程的UserService接口类中添加一个接口,如下图所示。 添加的接口代码如下://通过token获取用户信息TaotaoResult getUserByToken(String t
2017-06-09 14:50:54 4872 1
原创 学习淘淘商城第八十八课(单点登录用户登录--Controller层及测试)
首先看接口文档,如下图所示 我们需要把token保存到cookie当中,为了方便的操作cookie,我们特意封装了一个工具类,由于该工具类有可能被多个服务使用,因此我们最好把该工具类放到utils。如下图所示。 可以看到当前引入是有错误的,要解决这个问题就要在taotao-common工程添加对servlet-api的依赖,添加完依赖之后Coo
2017-06-08 20:30:11 2197 2
原创 学习淘淘商城第八十七课(单点登录用户登录流程分析及用户登录Service层)
我们先来看下登录流程图,如下图所示。 用户登录涉及到三个部分,第一部分是淘淘商城前台工程,第二部分是单点登录服务,第三部分是Redis服务。具体流程下图已经说的很明白了,我就不再啰嗦一遍了,相比于传统的登录,我们没有把用户登录信息存在session当中,而是存放到了Redis当中。 下面我们来实现服务端登录业务 首先是在UserServ
2017-06-08 16:27:50 3048
原创 学习淘淘商城第八十六课(单点登录用户注册Controller层实现及测试)
上节课我们一起学习了用户注册Service层的实现,这节课我们实现Controller层并且测试接口是否好用。 在taotao-sso-web工程的UserController类添加如下图所示标注的代码。 添加的代码如下(GET请求不需要在RequestMapping中指定,但是POST就需要指定): @RequestMapping(value
2017-06-08 14:22:55 2462
原创 学习淘淘商城第八十五课(单点登录用户注册--Service层)
首先我们还是看关于单点登录手册中关于注册的说明,如下图所示。请求方式是POST类型,URL为我们明确指定好了,参数有四个,需要校验完合法性之后再提交。 下面我们先在taotao-sso-interface工程添加注册接口,如下图所示 接口内容如下://注册TaotaoResult register(TbUser tbUser);
2017-06-07 22:57:04 1659 1
原创 学习互联网架构第三课(synchronized重入锁)
关键字synchronized拥有锁重入的功能,也就是在使用synchronized时,当一个线程得到了一个对象的锁后,再次请求此对象时是可以再次得到该对象的锁。关于重入锁的理解,大家可以参考http://blog.csdn.net/u012453843/article/details/72884920这篇博客进行学习。 下面我们来看一个示例,如下所示:package com.i
2017-06-07 18:18:20 762 1
转载 轻松学习java可重入锁(ReentrantLock)的实现原理)
前言相信学过Java的人都知道 synchronized 这个关键词,也知道它用于控制多线程对并发资源的安全访问,兴许,你还用过Lock相关的功能,但你可能从来没有想过java中的锁底层的机制是怎么实现的。如果真是这样,而且你有兴趣了解,今天我将带领你轻松的学习下java中非常重要,也非常基础的可重入锁-ReentrantLock的实现机制。听故事把知识掌握了在一个村子里面,有
2017-06-06 16:46:07 817 3
restclient-ui-3.5-jar-with-dependencies.jar
2017-06-08
QRCode.zip
2017-05-10
RabbitMQ实战:高效部署分布式消息队列
2019-01-29
SpringBoot+Security 发送短信验证码的实现
2018-08-14
Modbus协议中文版
2018-06-01
算法(第四版)
2018-05-18
微服务那些事儿
2017-09-13
微服务设计(中文完整版)
2017-09-13
MongoDB权威指南第2版.pdf
2017-09-07
Mycat-server-1.4-release-20151019230038-linux.tar.gz
2017-06-21
mongodb执行计划和实际查询执行结果不一致
2018-03-01
TA创建的收藏夹 TA关注的收藏夹
TA关注的人