- 博客(176)
- 资源 (6)
- 收藏
- 关注
原创 Java技术“悟”道
DA伟的技术成长路技术人的成长过程里 必不可少 的一个过程 那就是 “悟”。但是这一个“悟”字很多人即使过很多年都没法意识到。到底怎样才能及早的“悟”出自己的技术格局呢?我在百家号里记录了自己一个“悟”的过程。希望给年轻的小伙伴们一些参考。Java入门容易,但技术上的“悟”很难。...
2021-10-26 09:20:43
263
原创 Spark(六-2)交互式数据分析怎么对外提供数据分析服务?
六-1中我们分析了我们实际场景中的一个需求,但是如果要完全支持需求的话我们得考虑一下整个系统怎么跑起来了?我们自己测试的时候都是单机跑,难不成线上我们也这么做?显然不可能。我的交互式的理解:选择一个条件 --> 跑该条件的spark 作业 -->生成结果 -->反馈结果(达到交互式的效果)因此基于此,有如果的架构图:Spark1作业 ,Spark2作业, Spark3作业针对的是用户选择的不同的条件...
2020-07-11 16:07:43
481
原创 Spark(六-1)交互式用户行为数据实时分析(top10商品)
经过前期的了解和项目搭建,相信大家最关心的是能不能跑个demo出来,基于一些常见的需求场景,来跑一波数据分析,这样学习才能有继续的动力。因此后续也不会有先去看它的代码实现原理啥的,还是那句话,现在这个阶段如果一头扎进去,出不来的。数据准备:网站埋点数据。需求:后台运营想知道我们当前哪些的访问量是最高的,基于火爆商品的访问做一些运营活动。需求分析:我们要基于埋点数据找到包含商品访问的记录,解析数据成<K,V> K为商品Id,V为次数。然后排序取Top10或者Top20等等数据存储:当前
2020-07-11 15:23:27
471
原创 Spark(五)Standalone模式架构图和运行流程图
本地测试的部署方式就是Standalone模式,因此会着重先分析一波它的架构图和运行流程。Yarn的模式本质上一样。只不过是概念做了替换。术语基于第四篇的总结。Standalone模式架构图Standalone模式运行流程图...
2020-07-05 19:21:37
1077
原创 Spark(四)专业术语
经过完成我们的第一个程序之后,我们大概知道了Spark是怎么样的一个简单开发过程。我们要写main方法,写完我们要提交,提交完之后Spark去执行。那么趁热打铁,我们去了解一下有关Spark的专业术语吧ApplicationSpark应用程序,其实就是指上一篇我们编写的代码,包含了Driver代码和分布式集群中多个节点的Executor代码。Driver可以理解为main()函数。创建SparkContext【准备Spark应用程序的运行环境】和ClusterManager通信,进行资源的申请
2020-07-05 19:17:56
254
原创 Spark(三)第一个Spark程序
学习过程我们先不去关注Spark的运行环境和部署方式,只要起来了能用,咱就开始先用着,如果一开始就深入研究里面的运行原理,会发现根本出不来了,所以我们先动手实现程序,在过程中慢慢去理解里面的执行原理。首先我们先去百度看下,要怎么写自己的第一个程序呢?我们可以选择Python,Java,Scala。不过多数推荐Scala,Java现在也能写,但是我稍微去查了些资料,看见Java编写的技术文档不多,很多都是Scala的技术文档和问题解决。所以需要准备下面的东西:开发环境:IDEA。Spark版本:spar
2020-07-05 18:33:58
930
原创 Spark(二)部署方式
第一篇中,我们启动了Spark,有没有发现我们启动了三个节点,一个是Spark master节点,另外两个是slaves节点。这其实就是用的Spark自带的standalone模式启动的。我们来总结下,有几种方式啊。local模式:local模式就是本地模式,这种模式多用于开发和测试,和有没有Spark环境没多大关系,你可以在本地项目里写一段Spark程序,以这种模式启动,都无需连接到Spark环境内。standalone(集群模式)。这就是第一篇里说的,master/salves模式。但是这种模式
2020-07-05 16:41:24
303
原创 Spark系列文章专栏
由于之前一直从事互联网的Java开发工作。技术有了一定积累并且自己的知识图谱有关互联网的部分积累比较多了。但是一直就是大数据部分没有机会接触到。刚好最近公司有大数据方向的机会,因此借此机会,积累一些大数据部分的图谱。下面就是系列文章:Spark(一)安装...
2020-07-05 16:14:25
287
原创 Spark(一)安装
安装过程不复杂,主要是由于没有接触过Hadoop,一下子进入Spark,有点不知所措,所以建议如果没有Hadoop经验,又想先搞Spark的同学,可以找一些视频入入门,先从一个总体的流程感知下Spark。官网下载地址:http://spark.apache.org/downloads.html简单介绍一下:...
2020-07-05 16:07:59
325
原创 common-pool2 (三)------ 链接池实现详解
GenericObjectPool是用来作为链接池实现的,用来和PooledObjectFactory组合使用可以对外提供一个健壮的链接池。基本参数 //最大空闲链接 private volatile int maxIdle = GenericObjectPoolConfig.DEFAULT_MAX_IDLE; //最小空闲链接 private volati...
2019-09-05 17:23:23
1683
2
原创 Java设计模式(七)----策略模式
策略模式的思想不难理解,在Java里就是利用继承和多态,从而实现同一行为在不同场景下有不同的实现。废话不多说,从最近的一个例子入手。最近有一个功能,是发送短信验证码接口【SendVerifyCodeService】,只接入了平台A,最初代码如下:public class SendVerifyCodeServiceImpl implements SendVerifyCodeServic...
2019-08-28 17:05:07
259
原创 common-pool2 (二)------ 链接池配置参数详解
在(一)中说到此次实践FTP链接池内是通过GenericObjectPool做池子的,那么参数的话主要就针对它去做分析,GenericObjectPool是继承自BaseGenericObjectPool,所以有些参数是BaseGenericObjectPool内的,另外构造方法内默认给的是GenericObjectPoolConfig,有些在这其中,还有些在BaseObjectPoolConfi...
2019-08-27 22:17:26
3181
原创 common-pool2 (一)------ 池技术导航目录
最早接触的链接池应该是在数据库那边了,早期自己设置过一些参数,最大链接数,空闲链接数,超时时间等等,但是一直没去研究过,这次的契机是公司现有的一个文件上传服务是用FTP做文件服务器,因此需要把FTP链接做池化。因此特来了解。翻开dbcp链接池,本质上是基于common-pool2做的,另外Druid也是基于common-pool2,因此决定FTP也基于它来实现,毕竟如果自己去实现一个完整的池子...
2019-08-26 22:20:55
1718
原创 Shiro源码----认证
上篇分析了加载的过程shiro加载这次我们来看下认证流程,上篇我们知道最终返回的对象是SpringShiroFilter,因此所有的请求拦截都是走它。private static final class SpringShiroFilter extends AbstractShiroFilter { protected SpringShiroFilter(WebSecurit...
2019-05-31 17:34:33
361
原创 Shiro源码----加载
之前的项目的授权框架用的是spring-sercet,其实Shiro和它类似,都是用于用户认证,授权。所以看Shiro的源码理解起来不是很费劲,如果你之前没有阅读过有关权限框架的,或者没有接触过的话,可以先去了解下内部过程。此篇主要分析下Shiro的加载过程。老规矩,从web.xml入手,因为这种类似的权限框架大多是通过Filter来实行过滤的。1. web.xml <!...
2019-05-31 15:19:53
533
原创 lambda表达式
业务开发中有个很常见的场景:比如我现在有个List<Student> list 集合,我现在只想获取id集合或者我想做成Map<sId,sName>的格式,以便我在下面的逻辑里能够直接通过Map.get(sId)获取业务数据。1. 代码里循环list转成map。2.做成工具类,传入list,返回想要的key,value,方便。但是好痛苦,,工具类要不断复制,...
2019-05-05 17:26:28
175
原创 SQL优化(一) ---- in和exist
1.背景:基础表:原始场景不贴了,贴出一个相似场景,有3张表,学生表(t_student) --> 100000条数据,总共有10万个学生课程表(t_course) --> 30条数据,总共有30种课程得分表(t_score) --> 300万数据,每个学生的每一门课程的得分需求:查询出语文得分是87分的学生Id。最早版本的sql:selec...
2019-04-29 16:05:20
2682
1
转载 Java设计模式(六)----责任链模式
定义:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,抽象非核心的部分,将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理他为止。参考博客:责任链模式场景:小明去上学,先洗头,再洗脸,再吃饭,最后出门到学校学习。常规做法:1. 比如定义一个动作集合,存储小明的动作。public class PreparationList { ...
2019-04-23 20:19:17
193
原创 关于APP端接口设计的几点思考
对于做服务端开发的人来说,一般只关注接口的入参擦传入和数据的组装返回,以前在做web系统时,一般会根据页面展示数据的不同去实现不同的接口,有新的业务就做新的接口设计,有需要修改的旧业务,就在以前的接口里去更新业务逻辑。但是这套做法不适用于针对APP端的接口,原因就在于APP的业务需要靠升级去呈现出不同的功能以及不同的数据,举个例子:获取用户信息接口getUserInfo在V1.0.0里和在...
2019-04-21 09:21:11
896
原创 【算法】归并排序
主要思想:归并排序主要思想是采用分治法,将大问题分成多个小问题,然后在治的阶段将分阶段得到的小问题合并起来,就是分而治之。分治概略图:合并策略:代码实现:public class MergeSort { public static void main(String []args){ int []arr = {8,4,5,7,1,3,6,2};...
2019-04-15 11:39:58
195
原创 【算法】快速排序
既然开了算法和数据结构一栏,那么这些算法还是要重新再写一遍,其实平时都看过,也都研究过,就是没有形成文档,现在发现在写博客时,还是要斟酌下应该怎么去写,自己也发现现在和几年前看的时候感觉完全不一样了,说不出的感觉。原理:找出一个基准数A,将序列里比A小的放左边,比A大的放右边。然后递归。样例:第一次交换找出30的基础位置是index = 3:第二次就以index = 3 为...
2019-04-13 15:55:48
210
原创 【数据结构】前缀树
结构Trie树,又叫字典树、前缀树(Prefix Tree)、单词查找树或键树,是一种多叉树结构。如下图:基本性质:①根节点不包含字符,除根节点外的每一个子节点都包含一个字符。②从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串。③每个节点的所有子节点包含的字符互不相同。④从第一字符开始有连续重复的字符只占用一个节点,比如上面的body,boy和boa...
2019-04-12 16:05:09
695
原创 【算法】堆排序
既然开了算法和数据结构目录,那这些以前都看烂的一些排序算法还是补充一下吧,毕竟这些排序算法还是挺重要的。堆排序1. 堆排序是利用堆这种数据结构而设计的一种排序算法。2. 堆排序是一种选择排序。3. 它的最坏,最好,平均时间复杂度均为O(nlogn),也是不稳定排序。堆1. 堆是一棵顺序存储的完全二叉树。2. 大顶堆和小顶堆小顶堆: 每个结点的关键字都不大于其孩子结点...
2019-04-11 23:18:07
152
原创 【算法】DFA敏感词过滤
最近刚好有群友问到关于敏感词过滤的问题,当时有人给出了一些办法。1. 利用HashSet,对传多来的字符串进行比较。或者将敏感词存储到数据库或者其他地方,然后和传入的词做匹配。2. 正则表达式匹配。上述两个方法不用想肯定都是很慢的。后来有人说道可以利用DFA算法,因此我去研究了一下,增加自己的知识面。参考博客:https://www.cnblogs.com/zyguo/p/47...
2019-04-11 11:38:37
746
原创 【算法】variable-precision SWAR--计算汉明重量
输入一个int型整数,输出该数二进制表示中1的个数。其中负数用补码表示。1.常规想法利用Integer中的方法转成字符串,循环比较 public static int countNum(int n){ String s = Integer.toBinaryString(n); int count = 0; for (int i =...
2019-04-09 19:24:14
742
1
原创 【数据结构】BitMap的理解与应用
场景:给出10亿个无序不重复整数,对于某个整数M,是否存在于这10亿个数内,机器内存限定2G,怎么实现?考虑几个方面的问题:1.10亿个整数的内存占用时多大?一个整型int占用4个字节(byte),32位(bit)。10亿个整数的内存大小就是(10亿 * 4[byte])/(1024[KB]* 1024[M] * 1024[G]) = 3.72G。很明显,超出当前机器内存。2...
2019-04-08 17:42:05
2809
原创 读大型网站技术架构---第二篇---第五章---架构高可用
网站的可用性的度量和考核可用性度量网站不可用被称作网站故障,QQ的可用性是4个9,即QQ服务99.99%可用,也就是一年中大约最多53分钟不可用。网站不可用时间 = 故障修复时间点 - 故障发现时间点;网站年度可用性指标 = (1 - 网站不可用时间/年度总时间)* 100 %;网站可用性考核高可用的网站架构高可用的架构设计主要目的就是保证服务器硬件故障时服务依然可...
2018-10-18 16:09:59
192
原创 读大型网站技术架构---第二篇---第四章---架构优化
此书第二章主要针对架构方面怎么实现一些具体的优化手段,4.1节主要描述的是性能测试方面的,暂时不想去关注性能测试方面的知识。主要关注一下其他地方的优化手段。4.2 Web前端性能优化Web前端指网站业务逻辑之前的部分,包括浏览器加载,网站试图模型,图片服务,CND服务。4.2.1. 浏览器访问优化减少http请求HTTP协议是无状态的应用层协议,意味着每次HTTP请求都需要建立通信链...
2018-10-18 13:35:25
223
原创 读大型网站技术架构---第一篇---第三章---架构要素
大型网站的架构要素分为5个大类,有5个大类的一些标准。1.性能网站的性能优化手段有很多,主要分为下面几种:1.1 浏览器端:浏览器缓存,使用页面压缩,合理布局页面,减少Cookie传输手段,CDN;1.2 应用服务器端:服务器本地缓存和分布式缓存,加速请求处理过程,减轻数据库负载压力;异步操作通过消息队列处理任务;1.3 集群:组成集群共同对外提供服务;1.4 ...
2018-10-16 15:52:04
186
原创 读大型网站技术架构---第一篇---第二章---架构模式
关于大型网站架构模式,我觉得只要看看阿里的就足够了,它成功了,所以它的架构模式就是指路明灯以及行业的正确架构模式,所以关于架构其实现在即使你没有参与进去,但是模式就是那样。1.分层分层是一种常见的架构模式,主要是将系统在横向维度上切分成几个部分,每个部分负责相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统。分层好处:可以将一个庞大系统切分成不同部分;各层之间...
2018-10-16 14:26:40
167
原创 读大型网站技术架构---第一篇---第一章---架构演化过程
最近开始读此书,主要为了增加自己知识的广度,首要目的是即使自己没有参与过此类项目,但是也能知道在某些场景或者某些架构处理时应该往哪些方向思考。大型网站系统特点1.高并发,大流量2.高可用3.海量数据4.用户分布广泛,网络情况复杂5.安全环境恶劣6.需求快速变更,发布频繁7.渐进式发展(主要是由小到大)大型网站架构演化发展历程1.初始阶段小网站,一台服务器...
2018-10-15 16:04:32
206
转载 一致性Hash算法
hash算法想去了解一致性Hash算法,想必你已经了解过hash算法了,典型的Java里的HashMap里面就使用了hash算法,它的目的就是将需要存储的key均匀的分散到16位的数组内。但是HashMap是有个扩容的概念的,而且扩容的时候需要将原有的映射关系重新映射一遍,这其实就是hash算法所表现出的不足的部分。一致性hash算法 引入为了弥补hash算法中当发生改变...
2018-10-11 16:31:25
244
原创 记2018/9月3年Java的面试感悟
我是从2015年12月开始从事Java的开发工作的,坐标南京,期初是在一个创业公司里,做一些交付项目。然而好景不长,倒闭了。哎,只能重新找工作。稳定下来是在2016年5月。其实算时间的话,还没满3年。。期间也没做过一些像样的互联网项目。只不过当前公司里使用了当下比较火的互联网技术,但是并没有相应的场景或者数据量来支撑,因此比较困惑,所以想跳槽了。面试经过:1家上市公司+3家独角兽。第一...
2018-09-25 13:45:28
312
原创 Java-Serializable
Serializable关键字平时我们应该很少有机会去使用到,平时的业务中不需要我们去做对象状态的保存,而且一般都是中间件或者框架内才使用到。但是关于Serializable应该要去理解和学习。1. 怎么理解序列化1.首先,在我们平时运行项目时,JVM处于运行中,此时工程内的对象是存活状态,因此这些对象的生命周期是会比JVM的生命周期短的。然后有的情况下,我们需要持久化一些特殊对象,以便将...
2018-08-30 16:30:39
1222
原创 区块链学习之Fabric的Java应用层搭建
自从上篇Java-sdk跑通之后,今天已经是8/17号了,这期间干嘛了呢?一直在尝试搭建出一个Java应用层,好对外提供简单的接口以便将来能够实现一些自己的存储。此篇博客记录时,CA容器没有单独起,而仅仅是在客户端读取已经生成好的CA文件来成功访问。下面说下一些步骤。1. 搭建出一个Fabric环境。搭建过程1.1 这边需要注意1.3 用工具生成的私钥和证书,我们需要拷贝到工程中去...
2018-08-17 14:58:15
6685
4
原创 区块链学习之Fabric的java-sdk的部署
由于一些客观原因,本机电脑没法使用git命令去下载,因此,每次我都是down一份到本地来。一、前期环境准备1. jdk1.82.maven(本机由于现有项目在使用,因此使用了IDEA自带的Maven3)二、导入导入过程按照IDEA的maven正常导入即可。2.1 protobuf support安装(不清楚是干嘛的,其他博客都安装了,跟着做,估计后续要用)2.2导入...
2018-08-03 11:26:41
3482
1
原创 区块链学习之Fabric的chaincode的部署
上一节环境部署ok了,就不自觉的手痒想要自己跑一个小demo看看,据我了解,fabric的开发分为两个,一个是chaincode,一个是applicaiton开发(这需要调用sdk,这是后话了)。开发环境准备:atom(百度看说用这个顺手,就下了一个,本人是Java出身,IDEA玩的比较熟)。chaincode代码实例:chaincode001.go(做一个简单的set和get操作...
2018-07-30 17:03:59
3807
2
转载 区块链学习之Fabric的环境搭建-手动搭建
借鉴博客深蓝居步骤的话也是基于上一篇从第7步开始换成下面的具体步骤。1. 1生成cryptogencd ~/go/src/github.com/hyperledger/fabricmake cryptogendell@dell-OptiPlex-3050:~/go/src/github.com/hyperledger/fabric$ make cryptogenbuil...
2018-07-26 16:49:06
4445
6
原创 区块链学习之Fabric的环境搭建
说实话,学习这个也是赶鸭子上架,公司需要进行区块链的开发,因此我就去了,一是区块链确实比较火,第二,也是一个全新的技术理念。关于环境搭建,我找了两个博客,非常nice,感谢他们。Fabric环境搭建这一篇写的很细节,非常好。深蓝居这一篇也很好,好像上一个就是借鉴的下一篇。后续的研究也是基于此博客。本人遇到的问题:1.文件路径不存在Building cryptoge...
2018-07-26 09:15:44
3149
redis设计与实现
2017-11-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人