- 博客(65)
- 资源 (1)
- 收藏
- 关注
原创 springboot 项目实现分布式限流
项目需求:做到对业务号码实现限流,一分钟不能超过5条短信实现方式:经过查询,可以使用cloud Gateway + redis去实现,但是在实际使用过程中,出现了jar不兼容问题;最后采用自己逻辑实现的lua+java实现的分布式限流网上有关于限流比较常见的楼桶法,具体可参考分布式限流漏桶法的实现,我使用 了自己的逻辑实现,对redis使用一个定长队列,采取redis的lpush,lpop的方式去实现插入数据和去掉首部数据,队列里面存储的是时间戳,这样才能对长度和时间进行对比基于java
2020-09-29 17:56:06
297
原创 Phoenix链接hbase尝试
一、什么是Phonenix?Phoenix是构建在HBase上的一个SQL层,能让我们用标准的JDBC APIs而不是HBase客户端APIs来创建表,插入数据和对HBase数据进行查询。Phoenix完全使用Java编写,作为HBase内嵌的JDBC驱动。Phoenix查询引擎会将SQL查询转换为一个或多个HBase扫描,并编排执行以生成标准的JDBC结果集。直接使用HBase API、协...
2020-01-20 17:49:01
581
原创 SpringBoot Actuator的使用
在线上工程中,对服务可用性或者是中间件可用性的检测,是十分有必要的,具体实现,可以自己写一个特殊的接口,接口的实现可以自己实现对中间件比如redis,hbase,jms等服务可用性的监测,但springboot有一个十分便捷的工具,能提供服务的监测,就是本次的主题:SpringBoot Actuator简单地使用,就是引入jar,配置一下application.yml就行了<dep...
2019-12-16 15:10:00
293
原创 关于JUnit和Mockito的一些基本实践
从事java研发两年半,两年时间在接触OSGI框架,物联网相关协议,对java底层略显熟悉,基本没接触过平台开发,近几个月开始做平台研发,独立部署模块,因为要做单元测试,于是就有了单测的一些基本坑基本背景:需要做单测的接口中,有调用http服务器的地方,但是在开发环境,是连接不上的,因此,需要考虑mock来模拟数据直接复制我代码里的一些实现:/*** PhoneQueryContr...
2019-12-13 10:16:17
529
原创 记录Hbase get查询的一些坑
本次的业务是基于短信发送之前,去做黑名单的校验和发送内容的检测,因此,在进行下一步业务之前,我需要等待黑名单的查询结果,由于线上环境的Hbase出故障,导致整个业务堵塞,因此,想到了对hbase异常做上容错机制,因此,有了以下的内容try { counts = hbaseService.get("cmcc_sms_blacklist",serviceId,"counts","coun...
2019-11-30 14:37:21
1853
原创 Hadoop和Hbase环境的搭建
起因是测试,使用自己的Hadoop环境下的Hbase的时候,发现hbase不能使用,基于原有环境问题十分复杂的情况下,我对该环境重新进行了部署要求:三台服务器,分别做zookeeper和Hadoop、hbase1、需要准备3台linux x64 服务器,一台作为master,2台作为prepare备份机 master 192.168.1.132 pr...
2019-11-29 14:44:36
517
原创 Hadoop以及Hbase故障排查的一次心得
起因:发现测试环境的Hbase不能使用,插入数据出现异常,正如上一篇博客所介绍,通过df和du的方式,查看到hbase和Hadoop的log部分占据了大量内存,然后删除一些日志数据后,Hbase 使用不了,具体症状为:使用Hbase shell语句,查看list,会出现如下异常:Can't get master address from Zookeeper;znode data == ...
2019-11-28 10:16:47
550
原创 linux查看磁盘空间和删除文件的一些基本操作
基本情况就是:df -h 显示磁盘占用100%,但是具体不知道是哪个目录下的文件占据大小因此,可采用以下方法: 1、进入根目录:cd / 2、使用命令 : du -sh * 查看根目录下每个文件夹的大小 3、进入占用空间比较大的文件夹,然后再使用2中命令查找大文件。经过一系列追踪,可发现一些日志文件占用了太多的空间,可以采用通配删除日志的方法rm hba...
2019-11-26 16:31:46
571
原创 Hbase 的基本使用和高阶使用
一、HBASE shell指令的一些使用Hbase部署服务器使用的几点常用指令:进入hbase指令的方式:hbase shell直接backspace是无法直接进行删除的,需要配合ctrl+backspace进行删除操作增加列簇:alter '表明','列簇名'alter 'cmcc_sms','safeSurvey'删除列簇:alter 'cmcc_sms',...
2019-11-19 19:11:41
218
原创 Hbase以及Hadoop的 一点心得
一、HBASE中简单统计某列个数的情况思路:将hbase表中数据输出到本地文件中,通过linux命令查找指定字符串个数。echo "scan 'TestTable'"|hbase shell |grep column > test.txtcat test.txt |grep "TestColumn" |wc -l2、HADOOP单进程启动。sbin/star...
2019-11-06 17:57:17
210
原创 查看Java哪个线程占用CPU资源
1. 首先确定进程的 ID ,可以使用top命令直接查看,结果如下(以PID为11281为例):2. 查看该进程中哪个线程占用大量 CPU,执行top -H -p 11281 结果如下:我们以11373这个线程为例,首先将 11373转成 16 进制是2c6d(可以用开源中国在线工具转换)3. 接下来我们将进程中的所有线程输出到一个文件中,执行:jstack 11281...
2019-10-21 19:21:56
1845
转载 HBase基本概念与基本使用
1. HBase简介1.1 什么是HBaseHBASE是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群。HBASE的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。HBASE是Google Bigtable的开源实现,但是也有很多不同之处。比...
2019-09-20 09:16:19
194
转载 OSGI技术分析
l 什么是模块化与面向对象一样,模块化的目的也是松耦合,高内聚。我们可以理解为模块化是将对象间的互访做了边界划分,即对一组业务相关的对象进行封装,并且提供可能的更高层次的代码访问隔离机制。 l 物理模块化 VS 逻辑模块化物理模块化是指应用中的类文件被物理的分割放在不同的模块中,但是每个模块间的互访不受控制,各个模块可以访问模块间的内部对象,只要对象是可访问的。只是是对代码本...
2018-08-03 13:58:22
544
转载 java静态变量的加载顺序
public class test { //1.第一步,准备加载类 public static void main(String[] args) { new test(); //4.第四步,new一个类,但在new之前要处理匿名代码块 } s...
2018-07-16 16:12:50
703
转载 单例的使用
所谓单例,指的就是单实例,有且仅有一个类实例,这个单例不应该由人来控制,而应该由代码来限制,强制单例。 单例有其独有的使用场景,一般是对于那些业务逻辑上限定不能多例只能单例的情况,例如:类似于计数器之类的存在,一般都需要使用一个实例来进行记录,若多例计数则会不准确。 其实单例就是那些很明显的使用场合,没有之前学习的那些模式所使用的复杂场景,只要你需要使用单例,那你就使用单例,简单易理解。 所...
2018-07-06 09:27:17
359
转载 史上最简单的 IntelliJ IDEA 教程
版权声明:Follow your heart and intuition.目录(?)[+]1 简介 IntelliJ IDEA(简称 IDEA),是 Java 语言开发的集成环境,IDEA 在业界被公认为最好的 Java 开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE 支持、各类版本工具(Git、SVN、GitHub 等)、JUnit、
2017-09-05 11:30:15
415
转载 发送Https请求(Java)
可以用来发送Https 的Get 请求 与 Post请求的一个Java类import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.URL;import java.net.URLC
2017-06-29 14:50:34
804
转载 JAVA实现AES加密
Java实现AES加密1. 因子 上次介绍了《JAVA实现AES加密》,中间提到近些年DES使用越来越少,原因就在于其使用56位密钥,比较容易被破解,近些年来逐渐被AES替代,AES已经变成目前对称加密中最流行算法之一;AES可以使用128、192、和256位密钥,并且用128位分组加密和解密数据。本文就简单介绍如何通过JAVA实现AES加密。2. JAVA实现闲话少许
2017-06-22 19:32:50
1653
转载 AES加密的四种模式详解
对称加密和分组加密中的四种模式(ECB、CBC、CFB、OFB)一. AES对称加密: AES加密 分组 二. 分组密码的填充
2017-06-22 19:30:36
11632
2
转载 AES加密与Base64编码(加解密、签名系列)
0:前情回顾通过wx.getUserInfo()的success回调得到的加密数据( encryptedData )对加密数据( encryptedData )解密后可得到openId和unionId。如何解密,官方文档是这样解释的!首次看到如上解密说明时,我只知道encryptedData和session_key获得方式。session_key在上篇有介绍,如下:
2017-06-22 19:27:22
18950
1
转载 JAVA-AESCB加密
package ***;import javax.crypto.Cipher;import javax.crypto.spec.IvParameterSpec;import javax.crypto.spec.SecretKeySpec;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;/*** AES
2017-06-22 19:12:22
271
转载 java-base64编码和解码
一、反射/*** * encode by Base64 */ public static String encodeBase64(byte[]input) throws Exception{ Class clazz=Class.forName("com.sun.org.apache.xerces.internal.impl.dv.util.
2017-06-22 19:10:06
366
转载 Java创建和解析Json数据方法(二)——org.json包的使用
简介 工具包org.json.jar,是一个轻量级的,JAVA下的json构造和解析工具包,它还包含JSON与XML, HTTP headers, Cookies, CDL的转换。 这篇学习笔记,主要介绍常用的一些类如:JSONObject、JSONArray、JSONStringer等的一些用法;介绍了如何将Map、Collection、Java Bean等对象转化为
2017-06-20 16:45:47
480
转载 java读取文件与写文件
前言java中io流一直是一个令人头疼的东西,主要是各种流,各种缓冲器太多,不好记忆,所以感觉学起来很费劲,选择起来也比较烦恼。本文主要针对java的io流读取数据使用io流读取文件和向文件中写数据,并根据个人经验讲解应该怎么选择和使用。 需要的知识点:1.字节流和字符流选择字节流:字节流读取的时候,读到一个字节就返回一个字节; 主要用于读取图片,MP3,AVI视频文件。
2017-06-14 17:12:52
326
转载 java写入文件的几种方法分享
一,FileWritter写入文件FileWritter, 字符流写入字符到文件。默认情况下,它会使用新的内容取代所有现有的内容,然而,当指定一个true (布尔)值作为FileWritter构造函数的第二个参数,它会保留现有的内容,并追加新内容在文件的末尾。1. 替换所有现有的内容与新的内容。new FileWriter(file);2. 保留现有的内容和附加在该文件的末尾的新内容。
2017-06-14 16:21:58
214
转载 MyBatis传入参数与parameterType
Mybatis的Mapper文件中的select、insert、update、delete元素中有一个parameterType属性,用于对应的mapper接口方法接受的参数类型。可以接受的参数类型有基本类型和复杂类型。mapper接口方法一般接受一个参数,可以通过使用@Param注释将多个参数绑定到一个map做为输入参数。简单数据类型mapper接口方法:
2017-01-17 15:00:41
303
转载 浏览器缓存详解详细说明
近在对CDN进行优化,对浏览器缓存深入研究了一下,记录一下,方便后来者画了一个草图:每个状态的详细说明如下:1、Last-Modified在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记(HttpReponse Header)此文件在服务期端最后被修
2017-01-17 14:56:50
282
转载 Java中事务的处理
2013.8.29号在家时阿里巴巴的电话面试里面问了一个关于Java 事务的问题,当时只知道跟数据库有关,然后依稀记得commit,rollback什么的 ,具体就不知道了,这篇文章关于java事务讲的很详细,因此转载java的事务处理,如果对数据库进行多次操作,每一次的执行或步骤都是一个事务.如果数据库操作在某一步没有执行或出现异常而导致事务失败,这样有的事务被执行有的就没有被执
2017-01-17 14:54:53
663
转载 架构设计:系统间通信(32)——其他消息中间件及场景应用(下2)
5-3、解决方案二:改进半侵入式方案5-3-1、解决方法一的问题所在方案一并不是最好的半侵入式方案,却容易理解架构师的设计意图:至少做到业务级隔离。方案一最大的优点在于日志采集逻辑和业务处理逻辑彼此隔离,当业务逻辑发生变化的时候,并不会影响日志采集逻辑。但是我们能为方案一列举的问题却可以远远多于方案一的优点:需要为不同开发语言分别提供客户端API包。上文中我
2017-01-17 14:53:22
492
转载 全面理解HTTP协议
目录(?)[+]引言:作为一名软件工程Web专业学生,对于HTTP的熟悉掌握是必不可少的,特此做记录,打造自己的HTTP栈。URL与URI我们经常接触到的就是URL了,它就是我们访问web的一个字符串地址,那么URI是什么呢?他们是什么关系呢?URL:uniform resource location 统一资源定位符URI:uniform resourc
2017-01-17 14:52:08
413
转载 Spring MVC 流程图
ing MVC工作流程图图一图二 Spring工作流程描述 1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获; 2. DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该UR
2017-01-17 14:51:12
278
转载 Java 并发工具包 java.util.concurrent 用户指南
译序本指南根据 Jakob Jenkov 最新博客翻译,请随时关注博客更新:http://tutorials.jenkov.com/java-util-concurrent/index.html。本指南已做成中英文对照阅读版的 pdf 文档,有兴趣的朋友可以去 Java并发工具包java.util.concurrent用户指南中英文对照阅读版.pdf[带书签] 进行下载。
2017-01-17 14:50:00
287
转载 数据库索引的实现原理
说白了,索引问题就是一个查找问题。。。数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。为表设置索引要付出代价的:一是增
2017-01-17 14:47:27
297
转载 java 利用httpclient 3.1 和 httpclient4.1.2发送post请求
ttpclient3和httpclient4都有连接池的概念,但两个版本的接口相差较大。使用HttpClient发送请求、接收响应很简单,一般需要如下几步即可。1. 创建HttpClient对象。2. 创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。3. 如果需
2017-01-17 14:46:28
5769
转载 Spring MVC 解读——@Autowired、@Controller、@Service从原理层面来分析
pring MVC 解读——@Autowired一、@Autowired 作为一个spring开发者对@Autowired注解必定是非常了解了, 顾名思义自动装配,应该是Spring会自动将我们标记为@Autowired的元素装配好,与其猜测不如看看它的定义:[java] view plain copy@Targ
2017-01-17 14:45:19
816
转载 Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)
lass文件简介及加载 Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class 文件内的信息,生成对应的 Class对象: class字节码文件是根据JVM虚拟机规范中规定
2017-01-17 14:42:34
243
转载 spring框架学习
什么是spring框架spring是J2EE应用程序框架,是轻量级的IoC和AOP的容器框架,主要是针对javaBean的生命周期进行管理的轻量级容器,可以单独使用,也可以和Struts框架,ibatis框架等组合使用。 2,架构概述 1)IoC(Inversion of Control)控制反转,对象创建责任的反转,在spring中
2017-01-17 14:41:14
174
转载 JAVA CAS原理深度解析
看了一堆文章,终于把Java CAS的原理深入分析清楚了。感谢GOOGLE强大的搜索,借此挖苦下百度,依靠百度什么都学习不到! 参考文档:http://www.blogjava.NET/xylz/archive/2010/07/04/325206.htmlhttp://blog.hesey.Net/2011/09/resolve-aba-by-atomics
2017-01-17 14:40:08
234
转载 Java线程池的设计与实现
权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[+]1 设计思路多线程技术主要是针对CPU解决高效执行任务的问题,使用多线程技术可以增加CPU的并行处理能力,但是在服务器上创建线程和销毁线程却是比较花费时间的,而线程的执行时间取决于任务的本身。如果在服务器上创建线程和销毁线程的时间之和大于线程的执行时间,那么就可以考虑采用线程池。
2017-01-17 14:38:36
4711
转载 java并发编程
为了方便各位网友学习以及方便自己复习之用,将Java并发编程系列内容系列内容按照由浅入深的学习顺序总结如下,点击相应的标题即可跳转到对应的文章 【Java并发编程】实现多线程的两种方法 【Java并发编程】线程的中断 【Java并发编程】正确挂起、恢复、终止线程 【Java并发编程】守护线程和线程阻塞 【Java并发编程】Vol
2017-01-17 14:37:14
596
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人