javaEE
文章平均质量分 66
两点一刻
如有疑问,请发邮件:[email protected]
请关注:github:https://github.com/wangrui0/
我是一个java和大数据工程师!
展开
-
互联网高并发解决方案04-CDN内容分发
Web前端优化使用网站动静分离架构 减少Http请求的传输,CSS/JS合并传输,压缩JS、CSS技术 使用浏览器缓存静态资源,减少服务器端压力 使用CDN内容分发,减少宽带传输,获取用户Ip,分配到最近的服务器访问实战CDN内容分发DNS域名解析过程DNS即Domain Name System,是域名解析服务的意思。它在互联网的作用是:把域名转换成为网络可以识别的ip地...原创 2020-01-05 11:43:42 · 319 阅读 · 0 评论 -
互联网高并发解决方案03-高并发服务限流特技-纯手写打造RateLimiter注解框架
封装RateLimiter自定义注解封装RateLimiter.实例: @RequestMapping("/myOrder") @ExtRateLimiter(value = 10.0, timeOut = 500) public String myOrder() throws InterruptedException { Sys...原创 2020-01-05 11:35:53 · 158 阅读 · 0 评论 -
多线程 19 多线程题2
package syn; //不能改动此Test类 public class Test extends Thread{ private TestDo testDo; private String ...原创 2018-12-13 11:18:13 · 104 阅读 · 0 评论 -
原 Elasticsearch 第04节 window 上启动elasticsearch
1、安装JDK,至少1.8.0_73以上版本,java -version2、下载和解压缩Elasticsearch安装包,目录结构 3、启动Elasticsearch:bin\elasticsearch.bat,es本身特点之一就是开箱即用,如果是中小型应用,数据量少,操作不是很复杂,直接启动就可以用了 4、检查ES是否启动成功:http://localhost:9...原创 2019-01-18 22:49:10 · 424 阅读 · 0 评论 -
第05节 商品管理:文档操作
课程大纲 1、document数据格式2、电商网站商品管理案例:背景介绍3、简单的集群管理4、商品的CRUD操作(document CRUD操作) ----------------------------------------------------------------------------------------------------------------...原创 2019-01-18 22:53:26 · 240 阅读 · 0 评论 -
第06节:网站商品管理:多种搜索方式
课程大纲 1、query string search2、query DSL3、query filter4、full-text search5、phrase search6、highlight search -------------------------------------------------------------------------------...原创 2019-01-19 10:28:17 · 282 阅读 · 0 评论 -
第14 节 document id的手动与自动方式
课程大纲 1、手动指定document id2、自动生成document id ------------------------------------------------------------------------------------------------------------ 1、手动指定document id (1)根据应用情况来说,是否满...原创 2019-01-21 10:00:35 · 117 阅读 · 0 评论 -
第15 节 document的 source元数据 和 定制返回结果
课程大纲 1、_source元数据 put /test_index/test_type/1{ "test_field1": "test field1", "test_field2": "test field2"} get /test_index/test_type/1 { "_index": "test_index", &qu原创 2019-01-21 10:34:37 · 115 阅读 · 0 评论 -
第16 节 es document的全量替换、强制创建 和 图解lazy delete
课程大纲 1、document的全量替换2、document的强制创建3、document的删除 ------------------------------------------------------------------------------------------------------------------------ 1、document的全量替...原创 2019-01-21 10:37:40 · 118 阅读 · 0 评论 -
第17 节 剖析Elasticsearch并发冲突问题
深度图解剖析Elasticsearch并发冲突问题原创 2019-01-21 10:39:35 · 198 阅读 · 0 评论 -
idea快捷键
快捷键说明IntelliJ IDEA 的便捷操作性,快捷键的功劳占了一大半,对于各个快捷键组合请认真对待。IntelliJ IDEA 本身的设计思维是提倡键盘优先于鼠标的,所以各种快捷键组合层出不穷,对于快捷键设置也有各种支持,对于其他 IDE 的快捷键组合也有预设模板进行支持。关于各个快捷键的频率分类上可能每个人都有各自的看法,下面的整理也只是以我个人的使用习惯来划分的,而我应该是可...转载 2019-01-03 13:48:11 · 215 阅读 · 0 评论 -
设计模式----抽象工厂模式
抽象工厂模式:模式动机 在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法也具有唯一性,一般情况下,一个具体工厂中只有一个工厂方法或者一组重载的工厂方法。但是有时候我们需要一个工厂可以提供多个产品对象,而不是单一的产品对象。 为了更清晰地理解工厂方法模式,需要先引入两个概念: 产品等级结构 :产品等级结构即产品的继承结构...原创 2018-12-28 18:12:54 · 109 阅读 · 0 评论 -
设计模式----工厂方法模式
工厂方法模式:模式动机 现在对该系统进行修改,不再设计一个按钮工厂类来统一负责所有产品的创建,而是将具体按钮的创建过程交给专门的工厂子类去完成,我们先定义一个抽象的按钮工厂类,再定义具体的工厂类来生成圆形按钮、矩形按钮、菱形按钮等,它们实现在抽象按钮工厂类中定义的方法。这种抽象化的结果使这种结构可以在不修改具体工厂类的情况下引进新的产品,如果出现新的按钮类型,只需要为这种新类型的按钮...原创 2018-12-28 15:41:24 · 140 阅读 · 0 评论 -
java 小计:失败重试机制
有时候,我们调用第三方或者心跳检查时需要进行失败的重试机制,现在我就举例:private static final int retryLimit = 5;while (true) try { //调用其他的接口 break; } catch (Exception e) {//根据具体请求进行捕获异常,比如超时等 try...原创 2018-12-26 18:33:13 · 1087 阅读 · 0 评论 -
设计模式----单例模式
单例设计模式: 构造器私有化 提供静态私有的局部变量 提供静态公有的变量,用于获取单例对象。 调用效率非常频繁,建议采用饿汉;如果创建对象代价很高。则建议采用懒汉 饿汉式: /** * 饿汉单例模式: * 特点: * 线程安全(加载类的时候,天然的线程安全的),调用效率高(不需要同步快) * @autho...原创 2018-12-26 19:30:55 · 156 阅读 · 0 评论 -
effective java 第01条考虑用静态工厂方法代替构造器
静态工厂的定义先讲一下获取对象的方式new 一个对象 比如:new Student() 使用反射机制运用反射手段,调用Java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法. A:使用使用Class类的newInstance方法 //创建方法1 User u...原创 2018-12-26 20:04:09 · 215 阅读 · 0 评论 -
Java EE 异常 第 1 篇 异常的捕获
一:定义异常类:public class BusinessException extends RuntimeException { private Integer code; public BusinessException() { super(); } public BusinessException(Integer code, Stri...原创 2018-12-16 05:56:33 · 98 阅读 · 0 评论 -
python26 字典常见的操作,遍历
字典常见的操作,遍历 # 字典的使用 info = {"name": "张三", "age": 18} # 求键值对的长度 print(len(info)) # 2 键值对的长度 # 求所有的键的集合(Pythons2(键的列表) 和python3(对象) 返回的是不一样的类型) key_list = info.keys() print(...原创 2018-12-16 10:20:41 · 167 阅读 · 0 评论 -
设计模式----分类
设计模式总的来说分为:1:创建型模式(建立对象)单例模式,工厂模式,抽象工厂模式,建造者模式,原型模式2:结构型模式适配器模式,桥接模式,装饰模式,组合模式,外观模式,享元模式,代理模式3:行为型模式模板方法模式,命令模式,迭代器模式,观察者模式,中介者模式,备忘录模式,解释器模式,状态模式,策略模式,责任链模式,访问者模式。 如有疑问,请发邮件:117630641...原创 2018-12-28 10:41:22 · 73 阅读 · 0 评论 -
设计模式----代理模式
代理模式: 代理模式是常用设计模式的一种,我们在软件设计时常用的代理一般是指静态代理,也就是在代码中显式指定的代理。 静态代理:概念 静态代理由 业务实现类(真实类)、业务代理类(代理类) 两部分组成。业务实现类 负责实现主要的业务方法,业务代理类负责对调用的业务方法作拦截、过滤、预处理,主要是在方法中首先进行预处理动作,然后调用业务实现类的方法,还可以...原创 2018-12-28 13:11:54 · 86 阅读 · 0 评论 -
设计模式---简单工厂模式
简单工厂模式:模式动机 考虑一个简单的软件应用场景,一个软件系统可以提供多个外观不同的按钮(如圆形按钮、矩形按钮、菱形按钮等), 这些按钮都源自同一个基类,不过在继承基类后不同的子类修改了部分属性从而使得它们可以呈现不同的外观,如果我们希望在使用这些按钮时,不需要知道这些具体按钮类的名字,只需要知道表示该按钮类的一个参数,并提供一个调用方便的方法,把该参数传入方法即可返回一个相应的按...原创 2018-12-28 14:43:23 · 73 阅读 · 0 评论 -
第18 节 剖析悲观锁与乐观锁两种并发控制
深度图解剖析悲观锁与乐观锁两种并发控制方案原创 2019-01-21 10:41:21 · 112 阅读 · 0 评论 -
第19节 Elasticsearch内部如何基于_version进行乐观锁并发控制
1、图解Elasticsearch内部如何基于_version进行乐观锁并发控制 (1)_version元数据 PUT /test_index/test_type/6{ "test_field": "test test"} { "_index": "test_index", "_type": "test_type", "原创 2019-01-21 10:43:22 · 181 阅读 · 0 评论 -
第28节 分布式文档系统_document增删改内部原理图解揭秘
课程大纲 (1)客户端选择一个node发送请求过去,这个node就是coordinating node(协调节点)(2)coordinating node,对document进行路由,将请求转发给对应的node(有primary shard)(3)实际的node上的primary shard处理请求,然后将数据同步到replica node(4)coordinating nod...原创 2019-01-22 14:00:07 · 96 阅读 · 0 评论 -
第29节 :分布式文档系统_图解写一致性原理以及quorum机制深入剖析
课程大纲 (1)consistency,one(primary shard),all(all shard),quorum(default) 我们在发送任何一个增删改操作的时候,比如说put /index/type/id,都可以带上一个consistency参数,指明我们想要的写一致性是什么?put /index/type/id?consistency=quorum on...原创 2019-01-22 14:02:45 · 107 阅读 · 0 评论 -
Elasticsearch 第03节:Elasticsearch 核心概念
课程大纲 1、lucene和elasticsearch的前世今生2、elasticsearch的核心概念3、elasticsearch核心概念 vs. 数据库核心概念 --------------------------------------------------------------------------------------------------------...原创 2019-01-17 07:40:35 · 105 阅读 · 0 评论 -
try catch finally return
一般情况下,程序执行到try里面的内容一定会执行finally里面的内容。如果在try或者catch里面遇到return,那么函数在执行完return后面的表达式之后,会先去执行finally里面的语句块,然后再结束方法体,执行后面的return。但有一种特殊情况,如果在try里面有System.exit(0)这样的语句,System.exit(0)是终止Java虚拟机JVM的,连JVM都停止了,...原创 2019-03-04 12:06:14 · 153 阅读 · 0 评论 -
并发-多线程之间实现通讯
多线程之间实现通讯多线程之间如何实现通讯什么是多线程之间通讯? 多线程之间通讯,其实就是多个线程在操作同一个资源,但是操作的动作不同。 画图演示多线程之间通讯需求 需求:第一个线程写入(input)用户,另一个线程取读取(out)用户.实现读一个,写一个操作。代码实现基本实现共享资源源实体类 class Res { ...原创 2019-08-10 23:18:30 · 230 阅读 · 0 评论 -
并发-并发编程之多线程线程安全
什么是线程安全?为什么有线程安全问题?当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。但是做读操作是不会发生数据冲突问题。案例:需求现在有100张火车票,有两个窗口同时抢火车票,请使用多线程模拟抢票效果。代码: public class ThreadTrain implements Runnable {...原创 2019-08-10 23:21:43 · 117 阅读 · 0 评论 -
并发-多线程快速入门
线程与进程区别每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。使用线程可以把占据时间长的程序中的任务放到后台去处理,程序的运行速度可能加快,在一些等待的任务实现上如...原创 2019-08-10 23:23:36 · 108 阅读 · 0 评论 -
并发-线程池原理分析
并发包(计数器)CountDownLatchCountDownLatch 类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务...原创 2019-08-11 22:16:54 · 144 阅读 · 0 评论 -
第27节:document数据路由原理
课程大纲 (1)document路由到shard上是什么意思? (2)路由算法:shard = hash(routing) % number_of_primary_shards 举个例子,一个index有3个primary shard,P0,P1,P2 每次增删改查一个document的时候,都会带过来一个routing number,默认就是这个document的...原创 2019-01-22 13:58:21 · 114 阅读 · 0 评论 -
第26节:bulk批量增删改
课程大纲 1、bulk语法 POST /_bulk{ "delete": { "_index": "test_index", "_type": "test_type", "_id": "3" }}{ "create": { "_index": "test_index", "_t原创 2019-01-22 13:55:45 · 152 阅读 · 0 评论 -
第21节:elasticsearch 基于external version进行乐观锁并发控制
课程大纲 1、上机动手实战演练基于external version进行乐观锁并发控制 external version es提供了一个feature,就是说,你可以不用它提供的内部_version版本号来进行并发控制,可以基于你自己维护的一个版本号来进行并发控制。举个列子,加入你的数据在mysql里也有一份,然后你的应用系统本身就维护了一个版本号,无论是什么自己生成的,程序...原创 2019-01-21 15:32:16 · 155 阅读 · 0 评论 -
第1题 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标
package com.leetcode;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * @author: wangrui * @Date: 2019/1/21 16:46 * Two sum of numbers * 给定...原创 2019-01-21 17:33:07 · 8585 阅读 · 1 评论 -
Elasticsearch 第1篇 入门
课程大纲 大白话、什么是Elasticsearch Elasticsearch,分布式,高性能,高可用,可伸缩的搜索和分析系统 1、什么是搜索?2、如果用数据库做搜索会怎么样?3、什么是全文检索、倒排索引和Lucene?4、什么是Elasticsearch?1、什么是搜索? 百度:我们比如说想找寻任何的信息的时候,就会上百度去搜索一下,比如说找一部自...原创 2019-01-16 07:35:52 · 110 阅读 · 0 评论 -
Elasticsearch 第02节:Elasticsearch 介绍
课程大纲 1、Elasticsearch的功能,干什么的2、Elasticsearch的适用场景,能在什么地方发挥作用3、Elasticsearch的特点,跟其他类似的东西不同的地方在哪里 ---------------------------------------------------------------------------------------------...原创 2019-01-16 07:51:25 · 81 阅读 · 0 评论 -
第22节:partial update实现原理和动手实战演练
1、什么是partial update? PUT /index/type/id,创建文档&替换文档,就是一样的语法 一般对应到应用程序中,每次的执行流程基本是这样的: (1)应用程序先发起一个get请求,获取到document,展示到前台界面,供用户查看和修改(2)用户在前台界面修改数据,发送到后台(3)后台代码,会将用户修改的数据在内存中进行执行,然...原创 2019-01-22 10:59:13 · 133 阅读 · 0 评论 -
第23节 实战演练基于groovy脚本进行partial update
es,其实是有个内置的脚本支持的,可以基于groovy脚本实现各种各样的复杂操作基于groovy脚本,如何执行partial updatees scripting module,我们会在高手进阶篇去讲解,这里就只是初步讲解一下 PUT /test_index/test_type/11{ "num": 0, "tags": []} (1)内置脚本...原创 2019-01-22 11:01:47 · 144 阅读 · 0 评论 -
第24节:图解partial update乐观锁并发控制原理以及相关操作讲解
(1)partial update内置乐观锁并发控制(2)retry_on_conflict(3)_version post /index/type/id/_update?retry_on_conflict=5&version=6原创 2019-01-22 11:06:18 · 160 阅读 · 0 评论