08 2019 档案

摘要:1、引言 本文以设计淘宝网的后台架构为例,介绍从一百个并发到千万级并发情况下服务端的架构的14次演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知。文章最后汇总了一些架构设计的原则。 2、程序员成长线 这是一条成长线的表意图,有两个部分:图上左侧的路径,是匹配不同成 阅读全文
posted @ 2019-08-30 10:32 SoyWang 阅读(405) 评论(0) 推荐(0)
摘要:/** * 根据物理实体文件在开发工程中创建实体文件 */ @Override public void getEntityFilesByErFile(IFile erfile, IFolder entityFolder) { if (null == erfile || null == entityFolder) { ... 阅读全文
posted @ 2019-08-29 15:14 SoyWang 阅读(843) 评论(0) 推荐(0)
摘要:(1) File转IFile 第一种方法: IFile[] ifile = ResourcesPlugin.getWorkspace().getRoot().findFilesForLocationURI(file.toURI()); 第二种方法: String filepath =file.get 阅读全文
posted @ 2019-08-29 10:37 SoyWang 阅读(606) 评论(0) 推荐(1)
摘要:源码包分析 MyBatis 源码下载地址:https://github.com/MyBatis/MyBatis-3 MyBatis源码导入过程: 下载MyBatis的源码 检查maven的版本,必须是3.25以上,建议使用maven的最新版本 MyBatis的工程是maven工程,在开发工具中导入, 阅读全文
posted @ 2019-08-28 13:32 SoyWang 阅读(441) 评论(2) 推荐(0)
摘要:1.1为什么需要ORM框架? 传统的JDBC编程存在的弊端: ü 工作量大,操作数据库至少要5步; ü 业务代码和技术代码耦合; ü 连接资源手动关闭,带来了隐患; MyBatis前身是iBatis,其源于“Internet”和“ibatis”的组合,本质是一种半自动的ORM框架,除了POJO和映射 阅读全文
posted @ 2019-08-26 23:33 SoyWang 阅读(337) 评论(0) 推荐(0)
摘要:1.1. ZAB协议是什么? ZAB协议是为分布式协调服务Zookeeper专门设计的一种支持崩溃恢复的原子广播协议。 ZAB协议包括两种基本的模式:崩溃恢复和消息广播。 当整个zookeeper集群刚刚启动或者Leader服务器宕机、重启或者网络故障导致不存在过半的服务器与Leader服务器保持正 阅读全文
posted @ 2019-08-24 13:18 SoyWang 阅读(2333) 评论(0) 推荐(0)
摘要:1.1. 集群模式 1.1.1. 数据同步总流程 1.1.1.1. OBSERVING 1.1.1.2. FOLLOWING 1.1.1.3. LEADING 1.1.2. 领导选举 1.1.2.1. 领导选举初始化 1.1.2.2. 线程逻辑 1.1.2.2.1. 发送请求用到的线程 1.1.2. 阅读全文
posted @ 2019-08-24 13:16 SoyWang 阅读(279) 评论(0) 推荐(0)
摘要:1.1. 一致性协议概述 前面已经讨论过,在分布式环境下,有很多不确定性因素,故障随时都回发生,也讲了CAP理论,BASE理论 我们希望达到,在分布式环境下能搭建一个高可用的,且数据高一致性的服务,目标是这样,但CAP理论告诉我们要达到这样的理想环境是不可能的。这三者最多完全满足2个。 在这个前提下 阅读全文
posted @ 2019-08-21 23:08 SoyWang 阅读(491) 评论(0) 推荐(1)
摘要:1.1. 客户端源码 1.1.1. 总体流程 启动客户端 zkCli.sh文件里面的配置 实际运行 Main方法流程: 在ZookeeperMain的构造方法里面,重点是 最终在connectToZK方法里面也就是使用原生的Zk客户端进行连接的。 public void start() { send 阅读全文
posted @ 2019-08-21 22:48 SoyWang 阅读(803) 评论(0) 推荐(0)
摘要:1.1.1.1. 客户端基本操作 package cn.enjoy.javaapi; import org.apache.zookeeper.*; import java.io.IOException; import java.util.concurrent.CountDownLatch; publ 阅读全文
posted @ 2019-08-21 22:41 SoyWang 阅读(388) 评论(0) 推荐(0)
摘要:今天终于可以闲一天,想来想去就乱写点东西吧,说不定对有些新人有点帮助呢~_~ 用Eclipse API的方式来打开编辑器,可能对任何一个插件开发者都不是很陌生的操作了。但是,还是建议你忍着看一下,全当是复习吧~_~。 【打开editor的接口讨论】 先来看一下workbench吧,workbench 阅读全文
posted @ 2019-08-20 15:28 SoyWang 阅读(1824) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2019-08-15 01:03 SoyWang 阅读(157) 评论(0) 推荐(0)
摘要:15.1. 传统的高可用思路 tomcat的高可用的思路,是在tomcat集群前面加一层负载服务nginx。如下图 这种做法,解决了tomcat的高可用问题。但是引入了前面的负载机器的高可用问题(Nginx如果挂了,玩完) 如果nginx沿用此思路,总会有一个最前端是单机的,存在宕机玩完的风险(鸡生 阅读全文
posted @ 2019-08-15 01:02 SoyWang 阅读(1050) 评论(1) 推荐(1)
摘要:14.1. 对称加密 安全隐患:钥匙除我之外,还有多个人拥有。泄露风险较大,钥匙传递的过程风险较大 14.2. 非对称加密 优缺点:私钥很安全。但是非对称算法开销很大,大批量应用于业务,会导致性能成本过高(太败家)。 14.3. https加密方案 综合上述方案优缺点,各取所长,得到自己的方案 1、 阅读全文
posted @ 2019-08-15 00:59 SoyWang 阅读(270) 评论(0) 推荐(0)
摘要:13.1. 跨域处理 问题由来:浏览器拒绝执行其它域名下的ajax运作 如果浏览器在static.enjoy.com对应的html页面内,发起ajax请求偷盗www.enjoy.com域名下的内容来填充自己的页面,整个互联网秩序将混乱. 为了防止这种混乱,W3C组织制定了浏览器安全规范,即html页 阅读全文
posted @ 2019-08-15 00:57 SoyWang 阅读(164) 评论(0) 推荐(0)
摘要:OpenResty是一个全功能的 Web 应用服务器。它打包了标准的 Nginx 核心,常用的第三方模块以及大多数依赖项。 可以把它看成是Nginx附加众多的第三方插件的合集。其主体是嵌入lua脚本的支持,让你能够使用lua灵活地处理运算逻辑。 本课程主要讲lua为Nginx带来的新的处理方式,及O 阅读全文
posted @ 2019-08-15 00:54 SoyWang 阅读(940) 评论(0) 推荐(1)
摘要:语法格式: upstream 负载名 { [ip_hash;] server ip:port [weight=数字] [down]; server ip:port [weight=数字]; } []内容为可选项 11.1. 轮询(默认) upstream order { server 192.168 阅读全文
posted @ 2019-08-15 00:51 SoyWang 阅读(280) 评论(0) 推荐(0)
摘要:Nginx 处理请求的全过程一共划分为 11 个阶段(如图),按阶段由上到下依次执行 (上一阶段的所有指令执行完毕,才进入下一阶段) 各阶段的含义如下: ² post-read: 接收到完整的http头部后处理的阶段,在uri重写之前。一般跳过 ² server-rewrite: location匹 阅读全文
posted @ 2019-08-15 00:50 SoyWang 阅读(746) 评论(0) 推荐(0)
摘要:rewrite regex replacement [flag]; flag=【break/last/redirect/permanent】 ² regex 是正则表达式 ² replacement 是替换值,新值 ² flag -- 后续处理标识 flag=break 发生nginx内部重定向,p 阅读全文
posted @ 2019-08-15 00:49 SoyWang 阅读(460) 评论(0) 推荐(0)
摘要:一、 路由--Location的使用 9.1. Location语法规则 语法规则: location [=|~|~*|^~] /uri/ {… } 首先匹配 =,其次匹配^~,其次是按文件中顺序的正则匹配,最后是交给 /通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。 符号 含义 = 阅读全文
posted @ 2019-08-15 00:48 SoyWang 阅读(2167) 评论(0) 推荐(0)
摘要:要使用第三方模块ngx_echo的功能,请重新配置添加到nginx插件中 ##下载第三方模块 wget https://github.com/openresty/echo-nginx-module/archive/v0.61.tar.gz tar -zxvf v0.61.tar.gz ##解压 cd 阅读全文
posted @ 2019-08-15 00:46 SoyWang 阅读(444) 评论(0) 推荐(0)
摘要:Nginx日志对于统计、系统服务排错很有用。 Nginx日志主要分为两种:access_log(访问日志)和error_log(错误日志)。 通过访问日志我们可以得到用户的IP地址、浏览器的信息,请求的处理时间等信息。 错误日志记录了访问出错的信息,可以帮助我们定位错误的原因。 因此,将日志好好利用 阅读全文
posted @ 2019-08-15 00:44 SoyWang 阅读(249) 评论(0) 推荐(0)
摘要:一、 nginx模型概念: Nginx会按需同时运行多个进程: 一个主进程(master)和几个工作进程(worker),配置了缓存时还会有缓存加载器进程(cache loader)和缓存管理器进程(cache manager)等。 所有进程均是仅含有一个线程,并主要通过“共享内存”的机制实现进程间 阅读全文
posted @ 2019-08-15 00:43 SoyWang 阅读(373) 评论(0) 推荐(0)
摘要:3.1. 源码编译方式: 安装make:yum -y install autoconf automake make 安装g++: yum -y install gcc gcc-c++ #一般系统中已经装了了make和g++,无须再装 yum -y install pcre pcre-devel yu 阅读全文
posted @ 2019-08-15 00:41 SoyWang 阅读(166) 评论(0) 推荐(0)
摘要:1.1. 什么是 Nginx Nginx 是俄罗斯人编写的十分轻量级的 HTTP 服务器,Nginx,它的发音为“engine X”,是一个高性能的HTTP和反向代理服务器,同时也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 因为它的稳定性、丰富的模块库、灵活的配置和低系统资源的消 阅读全文
posted @ 2019-08-15 00:38 SoyWang 阅读(3372) 评论(0) 推荐(0)
摘要:一.Java2平台有3个版本: 1.Java ME:适用于小型设备和智能卡的Java 2平台Micro版(Java 2 Platform Micro Edition) 2.Java SE:适用于桌面系统的Java 2平台标准版(Java 2 Platform Standard Edition) 3. 阅读全文
posted @ 2019-08-14 15:45 SoyWang 阅读(246) 评论(0) 推荐(0)
摘要:1. Zookeeper基础 1.1. 部署 先把ZK安装起来,后面的很多操作,都是的前提都是由ZK的操作环境,先来把ZK安装好, 1.1.1. Zookeeper windows环境安装 环境要求:必须要有jdk环境,本次讲课使用jdk1.8 1.安装jdk 2.安装Zookeeper. 在官网h 阅读全文
posted @ 2019-08-14 13:35 SoyWang 阅读(398) 评论(0) 推荐(1)
摘要:1.1. 分布式系统基础知识 一个tomcat打天下的时代,不能说完全淘汰了,在一个管理系统,小型项目中还经常使用,这并不过分,出于成本的考虑,这反而值得提倡。 1.1.1. 分布式系统是什么 分布式系统:一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统 这是 阅读全文
posted @ 2019-08-14 13:27 SoyWang 阅读(576) 评论(0) 推荐(0)
摘要:说明: 博主的Google浏览器版本:75.0.3770.142,如果运行异常,需要自行查找对应版本的驱动(chromedriver.exe) 需要的jar包: https://pan.baidu.com/s/1KeBhp--zc6BZdoUsrGSkbQ 需要的驱动文件(放在Google浏览器.e 阅读全文
posted @ 2019-08-13 11:20 SoyWang 阅读(4392) 评论(0) 推荐(0)
摘要:创建项目 > 导入需要的jar > 代码实现 需要的jar: https://pan.baidu.com/s/1MEZ1S0LnKSMGQm24QWgmCw 代码: package browserTest; /** * Java内嵌浏览器 * @author WangSong */ import o 阅读全文
posted @ 2019-08-13 09:19 SoyWang 阅读(6676) 评论(0) 推荐(0)
摘要:本文主要讲解了: 1、什么是消息队列; 2、消息队列可以为我们带来什么好处; 3、一个消息队列可能会涉及到哪些问题。 一、什么是消息队列? 消息队列,一般我们会简称它为MQ(Message Queue),嗯,就是很直白的简写。 我们先不管消息(Message)这个词,来看看队列(Queue)。这一看 阅读全文
posted @ 2019-08-07 17:39 SoyWang 阅读(172) 评论(0) 推荐(0)
摘要:驱动下载 创建maven工程,让maven来维护我们的jar,maven最重要的pom文件内容如下: Session获取 官方给的Quick start案例 代码中的(1) ~ (5)分别表示或者代表什么 (1):Cluster对象是驱动程序的主入口点,它保存着真实Cassandra集群的状态(尤其 阅读全文
posted @ 2019-08-07 10:38 SoyWang 阅读(1189) 评论(0) 推荐(1)
摘要:配置环境:centOS 7 1. 编写开机启动脚本[root@cassandra-01 ~]# cd /etc/rc.d/init.d/[root@cassandra-01 init.d]# vi cassandra写入以下内容并保存关闭 #!/bin/sh# chkconfig: 2345 60 阅读全文
posted @ 2019-08-07 09:52 SoyWang 阅读(1002) 评论(0) 推荐(0)
摘要:使用场景: Cassandra非常适合存储时序类型的数据,本文我们使用一个气象站的例子(该气象站每分钟需要存储一条温度数据)。 一、方案1:每个设备占用一行 这个方案的思路就是给每个数据源创建一行,比如这里一个气象站的温度就占用一行,然后每个分钟要采集一个温度,那么就让每个时刻的时标将作为列名,而温 阅读全文
posted @ 2019-08-06 16:37 SoyWang 阅读(861) 评论(0) 推荐(0)
摘要:系统架构: Cassandra 是 一 套 开 源 分 布 式 No -SQL 数据库系统, 基于一致性哈希算法的 P2P 环形结构。 这种结构 各节点功能完全相 同, 可灵活添加节点来完成系 统的扩充或删除节点, 且无需大规模转移数据, 同 时彻底避免系 统因 单点故障 导致的不稳定性; 每个节点 阅读全文
posted @ 2019-08-06 15:01 SoyWang 阅读(2001) 评论(0) 推荐(1)
摘要:环境 Centos 7.4 java 1.8.0 安装步骤 java cassandra 修改配置cassandra.yaml 启动 查看端口是否启动功 kairosdb 启动 kairosdb 如图没有报错则成功了 遇到的问题 cassandra运行出现了Unable to gossip with 阅读全文
posted @ 2019-08-06 14:56 SoyWang 阅读(961) 评论(0) 推荐(0)
摘要:1.背景 在实际开发中,我们经常要一边开发一边测试,当然这里说的测试并不是程序员对自己代码的单元测试,而是同组程序员将代码提交后,由测试人员测试; 或者前后端分离后,经常会修改接口,然后重新部署; 这些情况都会涉及到频繁的打包部署; 手动打包常规步骤: 1.提交代码 2.问一下同组小伙伴有没有要提交 阅读全文
posted @ 2019-08-05 22:37 SoyWang 阅读(447) 评论(0) 推荐(0)
摘要:常用命令 文件与目录操作 查看文件内容 文本内容处理 查询操作 压缩、解压 yum安装器 网络相关 系统相关 XSheel 5相关操作 窗体快捷键 操作小技巧 鼠标中间键:粘贴突出显示的文本。(使用鼠标左键来选择文本。把光标指向想粘贴文本的地方。点击鼠标中间键来粘贴。) Tab:命令行自动补全。使用 阅读全文
posted @ 2019-08-02 17:17 SoyWang 阅读(243) 评论(0) 推荐(0)
摘要:版本VM14 右键源虚拟机 > 管理 > 克隆 > 开机,对克隆后的Linux进行以下修改 1.uuidgen ens33 获取新的 UUID 2.vim /etc/sysconfig/network-scripts/ifcfg-ens33 修改 IP 和 UUID 3.service networ 阅读全文
posted @ 2019-08-02 14:36 SoyWang 阅读(710) 评论(0) 推荐(0)
摘要:一、SEDA SEDA全称是:stage event driver architecture,中文直译为“分阶段的事件驱动架构”,它旨在结合事件驱动和多线程模式两者的优点,从而做到易扩展,解耦合,高并发。 各个stage之间的通信由event来传递,event的处理由stage的线程池异步处理。 上 阅读全文
posted @ 2019-08-01 17:31 SoyWang 阅读(728) 评论(0) 推荐(0)
摘要:1. 背景介绍 Cassandra 使用分布式哈希表(DHT)来确定存储某一个数据对象的节点。在 DHT 里面,负责存储的节点以及数据对象都被分配一个 token。token 只能在一定的范围内取值,比如说如果用 MD5 作为 token 的话,那么取值范围就是 [0, 2^128-1]。存储节点以 阅读全文
posted @ 2019-08-01 16:00 SoyWang 阅读(1331) 评论(0) 推荐(0)