java基础
hcmony
不积跬步,无以至千里;不积小流,无以成江海
展开
-
idea Sources not found for: org.springframework.cloud
行执行如下命令mvn dependency:resolve -Dclassifier=sources原创 2021-11-03 13:58:09 · 553 阅读 · 0 评论 -
时间窗口算法基于redis -zset 实现
时间窗口算法又名滑动时间算法,所谓的滑动时间算法指的是以当前时间为截止时间,往前取一定的时间,比如取1s的时间,在这1s时间内最大的访问数为1000。把这1秒分为1000格,每格是1毫秒。滑动时间窗口如下图所示:转存失败重新上传取消其中每一个小格子代表1ms,比如1s允许200次请求,那么就分成1000个小格。如何实现?借助Redis的有序集合ZSet来实现时间窗口算法限流,实现的过程是:第一步:先使用ZSet的key存储限流的ID,score用来存储请求的时间。第...原创 2020-08-12 17:43:50 · 1996 阅读 · 1 评论 -
Java面试笔记(强烈推荐)
本文是我自己在秋招复习时的读书笔记,整理的知识点,也是为了防止忘记,尊重劳动成果,转载注明出处哦!如果你也喜欢,那就点个小心心,文末赞赏一杯豆奶吧,嘻嘻。 让我们共同成长吧……第一部分:目录一、算法剑指 Offer 题解目录根据原书第二版进行编排,代码和原书有所不同,尽量比原书更简洁。Leetcode 题解对题目...转载 2020-03-16 15:46:25 · 822 阅读 · 1 评论 -
Tomcat线程数占满而导致的线上事故
事故表现形式:昨天下午4点多的时候,有同学反映说,某个服务响应时间过长,怀疑是负载均衡的问题。排查过程:1,查看阿里云负载均衡表现正常,排除。2,查看单台服务日志出现OOM,可以断定是服务出问题了。分析原因:1,先重启服务。2,下载 *.hprof 日志,用MAT分析结果如下图:3,结果明显指示tomcat线程池满了,并指向了其中一个controller的外部请求。...原创 2020-03-10 09:30:00 · 5672 阅读 · 0 评论 -
通过redis生成分布式自增的订单编号
在我们电商交易系统里面经常会生成订单号,一般采用UUID直接生成字符串,理论情况下不会重复,但是还是有可能重复的,并且这种订单号可读性特别差,所以我们会选择用redis来生成订单号,具体代码如下:1,用DateHelper生成由年月日时分秒生成14位数,再通过redis生成6位数。这种可以用BigInteger存储,理论上可以支持1秒产生100万个订单,如果实际生产会更大,可以把倍数值调大。...原创 2019-10-24 19:51:39 · 2776 阅读 · 0 评论 -
Spring AOP--返回通知,异常通知和环绕通知
在本文中,将继续上篇的学习,继续了解返回通知、异常通知和环绕通知。具体的含义详见代码注释 1 package com.yl.spring.aop; 2 3 import java.util.Arrays; 4 5 import org.aspectj.lang.JoinPoint; 6 import org.aspectj.lang.ProceedingJoinPoint;...转载 2019-05-28 14:54:39 · 2989 阅读 · 0 评论 -
idea创建springcloud项目图文教程(Zipkin进行服务跟踪)(十三)
一,建立 Zipkin服务 它将存储我们服务的所有操作步骤,每一步操作都会发送到该服务器用来进行跟踪识别。1,引入jar包,pom.xml文件如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="htt...原创 2019-04-26 11:22:53 · 1088 阅读 · 6 评论 -
idea创建springcloud项目图文教程(Spring Boot Admin 监控应用)(十四)
前言:Spring Boot Admin是属于springboo应用的,它是在 Spring Boot Actuator 的基础上提供简洁的可视化 WEB UI。SpringBootAdmin是一个用于管理和监控SpringBoot微服务的社区项目,可以使用客户端注册或者Eureka服务发现向服务端提供监控信息,例如服务健康检查信息、CPU、内存、操作系统信息等。话不多说,先上两张图看看:...原创 2019-05-30 20:27:08 · 1098 阅读 · 0 评论 -
基于Finchley.SR2的springcloud系列代码(父pom.xml)(一)
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/P...原创 2019-05-30 20:31:27 · 569 阅读 · 0 评论 -
TCP协议与UDP协议的区别,个人认为比较容易懂
TCP协议与UDP协议的区别 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信!TCP/IP协议是一个协议簇。里面包括很多协议的。UDP只是其中的一个。之所以命名为TCP/IP协议,因为TCP,IP协议是两个很重要的协议,就用他两命名了。TCP/IP协议集包括应用层,传输层...转载 2017-07-20 11:36:49 · 338 阅读 · 0 评论 -
The temporary upload location [/tmp/tomcat.3056330638826298336.18601/work/Tomcat/localhost/ROOT] is
org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request;nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.3056330638826298336...原创 2019-03-14 10:31:59 · 461 阅读 · 0 评论 -
windows10环境下的RabbitMQ安装步骤(图文)
第一步:下载并安装erlang原因:RabbitMQ服务端代码是使用并发式语言Erlang编写的,安装Rabbit MQ的前提是安装Erlang。下载地址:http://www.erlang.org/downloads根据本机位数选择erlang下载版本。下载完是这么个东西:双击,点next就可以。选择一个自己想保存的地方,然后next、finish就可以。安装完事...转载 2019-03-05 19:09:16 · 604 阅读 · 0 评论 -
LocalDateTime相关日期时间类转换
package com.hcmony.sword.date;import java.time.*;import java.time.format.DateTimeFormatter;import java.util.Date;/** * <h3>此类方法基于LocalDateTime,LocalDate,LocalTime</h3> * <p>...原创 2019-02-28 13:46:27 · 1071 阅读 · 0 评论 -
自定义注解通过aop拦截用户访问信息并存入到数据库中(二)
目地:我们很多程序每天有大量用户访问,特别是一些增删改操作,如果每一笔操作都写一条SQL插入对程序的侵入太大了,但是这些操作又非常有必要保存。方案:这里考虑使用AOP拦截器,在接口请求时对@LogAround的注解进行切面拦截,通过前置通知获取返回的对象,然后遍历对象中的请求的属性和参数进行记录。前置拦截与公共的3,4,5请看自定义注解通过aop拦截用户访问信息并存入到数据库中(-...原创 2019-01-24 21:09:59 · 511 阅读 · 0 评论 -
自定义注解通过aop拦截用户访问信息并存入到数据库中
目地:我们很多程序每天有大量用户访问,特别是一些增删改操作,如果每一笔操作都写一条SQL插入对程序的侵入太大了,但是这些操作又非常有必要保存。方案:这里考虑使用AOP拦截器,在接口请求时对@Logbefore的注解进行切面拦截,通过前置通知获取返回的对象,然后遍历对象中的请求的属性和参数进行记录。环绕拦截请看自定义注解通过aop拦截用户访问信息并存入到数据库中(二)前置拦截具体...原创 2019-01-24 21:05:28 · 950 阅读 · 0 评论 -
自定义注解拦截web请求对返回结果进行有针对的替换
目地:很多程序页面中会用到很多的静态资源文件(image/css/js),有些是页面中初始化加载的,有些是通过后台接口返回给页面动态加载的。这些静态资源文件的域名是写死的(www.xxx.com/ss.xxx.com),目前有些浏览器或平台会对这些域名封禁,我们需要一个能快速替换静态资源文件地址中域名的方案。方案:后台的接口,在返回结果时对有包含指定的域名进行替换。这里考虑使用AOP拦...原创 2019-01-24 20:52:11 · 887 阅读 · 0 评论 -
基于Finchley.SR2的springcloud系列代码(eureka注册中心)(二)
备注:源代码已经全部上传到github,有错误地方请指正,谢谢!地址:https://github.com/hcmony/springcloud1,pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="htt...原创 2019-05-30 20:34:11 · 366 阅读 · 0 评论 -
基于Finchley.SR2的springcloud系列代码(admin 监控应用)(三)
备注:源代码已经全部上传到github,有错误地方请指正,谢谢!地址:https://github.com/hcmony/springcloud1,pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="htt...原创 2019-05-30 20:36:54 · 309 阅读 · 0 评论 -
基于Finchley.SR2的springcloud系列代码(provider 服务提供者,多台就可以实现负载均衡)(四)
备注:源代码已经全部上传到github,有错误地方请指正,谢谢!地址:https://github.com/hcmony/springcloud1,pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="htt...原创 2019-05-30 20:40:59 · 246 阅读 · 0 评论 -
查找字符串中出现过两次以上的字符
package com.hcmony.sword.dataStructure.array;import com.alibaba.fastjson.JSON;import java.util.*;/** * <h3>查找字符串中出现过两次以上的字符</h3> * * @author hcmony * @since V1.0.0, 2019/9/23 16...原创 2019-09-23 17:53:22 · 1487 阅读 · 0 评论 -
SpringFactoriesLoader解析META-INF/spring.factories配置加载成为bean
private static Map<String, List<String>> loadSpringFactories(@Nullable ClassLoader classLoader) { MultiValueMap<String, String> result = cache.get(classLoader); if (result != n...原创 2019-08-16 18:15:30 · 2019 阅读 · 0 评论 -
基于Finchley.SR2的springcloud系列代码(zuul 网关服务)(十)
备注:源代码已经全部上传到github,有错误地方请指正,谢谢!地址:https://github.com/hcmony/springcloud1,pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="htt...原创 2019-07-04 19:45:45 · 355 阅读 · 0 评论 -
基于Finchley.SR2的springcloud系列代码(Zipkin进行服务跟踪)(九)
备注:源代码已经全部上传到github,有错误地方请指正,谢谢!地址:https://github.com/hcmony/springcloud1,pom.xml 注意这里的父pom是直接引用springboot的1.5.6版本<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apa...原创 2019-07-04 19:38:57 · 1006 阅读 · 0 评论 -
基于Finchley.SR2的springcloud系列代码(bus 消息总线,不重启更新配置)(八)
备注:源代码已经全部上传到github,有错误地方请指正,谢谢!地址:https://github.com/hcmony/springcloud前言: 1,我是基于github做的配置中心:https://github.com/hcmony/config 2,使用bug必须安装消息队列,我这里安装的是rabbitmq1,pom.xml<?xml v...原创 2019-06-20 10:43:02 · 339 阅读 · 0 评论 -
基于Finchley.SR2的springcloud系列代码(config-client 文件配置应用示例)(七)
备注:源代码已经全部上传到github,有错误地方请指正,谢谢!地址:https://github.com/hcmony/springcloud前言:我是基于github做的配置中心:https://github.com/hcmony/config1,pom.xml<?xml version="1.0" encoding="UTF-8"?><project xm...原创 2019-06-20 10:36:18 · 290 阅读 · 0 评论 -
基于Finchley.SR2的springcloud系列代码(config-server 文件配置服务)(六)
备注:源代码已经全部上传到github,有错误地方请指正,谢谢!地址:https://github.com/hcmony/springcloud前言:我是基于github做的配置中心:https://github.com/hcmony/config1,pom.xml<?xml version="1.0" encoding="UTF-8"?><project xm...原创 2019-06-20 10:31:54 · 361 阅读 · 0 评论 -
Spring AOP前置通知和后置通知
Spring AOP AspectJ:Java社区里最完整最流行的AOP框架 在Spring2.0以上的版本中,可以使用基于AspectJ注解或基于XML配置的AOP在Spring中启用AspectJ注解支持 要在Spring应用中使用AspectJ注解,必须在classpath下包含AspectJ类库:aopalliance.jar、aspectj.weaver.jar和spr...转载 2019-05-28 14:57:11 · 3544 阅读 · 0 评论 -
Spring AOP
AOP简介 AOP(Aspect-Oriented Programming,面向切面编程):是一种新的方法论,是对传统OOP的补充 AOP的主要编程对象时切面(aspect),而切面模块化横切关注点 在应用AOP编程时,仍然需要定义公共功能,但可以明确的定义这个功能在哪里,以什么方式应用,并且不必修改受影响的类。这样一来横切关注点就被模块化到特殊的对象(切面)里。 AOP的好处 ...转载 2019-05-28 14:56:15 · 155 阅读 · 0 评论 -
基于Finchley.SR2的springcloud系列代码(consumer 服务消费者)(五)
备注:源代码已经全部上传到github,有错误地方请指正,谢谢!地址:https://github.com/hcmony/springcloud1,pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="htt...原创 2019-05-30 20:44:54 · 206 阅读 · 0 评论 -
md5加密以及生成可验证流水号方法
package com.hcmony.date;import org.apache.commons.codec.digest.DigestUtils;import org.apache.commons.lang3.StringUtils;import java.io.UnsupportedEncodingException;import java.security.MessageDi...原创 2018-12-19 18:31:55 · 487 阅读 · 2 评论 -
RSA非对称加密解密方法
package com.hcmony.date;import javax.crypto.Cipher;import java.io.UnsupportedEncodingException;import java.security.*;import java.security.interfaces.RSAPrivateKey;import java.security.interfac...原创 2018-12-19 18:30:30 · 1224 阅读 · 1 评论 -
java Properties获取本地文件的变量
package com.demo.utils;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.Iterator;import java.util.Properties;public class SysConfig {原创 2017-11-03 17:37:42 · 695 阅读 · 0 评论 -
java 获取客户端真实ip
package com.hcmony.utils;import javax.servlet.http.HttpServletRequest;import com.alibaba.dubbo.common.utils.StringUtils;/** * 获取客户端IP * @Creator hcmony * @Created 2017-10-17 15:52:00 * @Modi原创 2017-10-20 16:54:08 · 399 阅读 · 0 评论 -
java实现https请求
package com.hcmony.;import org.codehaus.jackson.JsonGenerationException;import org.codehaus.jackson.map.JsonMappingException;import org.codehaus.jackson.map.ObjectMapper;import javax.net.ssl.Hos原创 2017-10-20 16:49:21 · 507 阅读 · 0 评论 -
okhttp get post 使用源代码
package com.hcmony.utils;import java.io.IOException;import java.net.URLEncoder;import java.util.Map;import java.util.Map.Entry;import java.util.concurrent.TimeUnit;import okhttp3.FormBody;imp原创 2017-10-20 16:43:41 · 289 阅读 · 0 评论 -
java.lang.String cannot be cast to com.alibaba.fastjson.JSONObject解决办法
java.lang.ClassCastException: java.lang.String cannot be cast to com.alibaba.fastjson.JSONObject at com.alibaba.fastjson.JSONObject.getJSONObject(JSONObject.java:109)ResultModel> rs =原创 2017-10-20 11:59:47 · 40065 阅读 · 3 评论 -
一个java面试题:一个农夫养了一头牛,三年后,这头牛每年会生出一头牛,生出来的牛三年后又可以每年生出一头牛,不考虑牛的性别和生死,问农夫10年后有多少头牛?
package com.hcmony.test;/** * Created by hcmony on 2017/9/7. */public class CowTest { /** * 问题:一个农夫养了一头牛,三年后,这头牛每年会生出一头牛, * 生出来的牛三年后又可以内年生出一头牛,不考虑牛的性别和生死 * 问农夫10年后有多少头牛? */原创 2017-09-07 20:03:57 · 4317 阅读 · 0 评论 -
项目启动时,控制台不停的输出log日志。
项目启动时不停的打印日志,却没有提示哪里错了,通过各种排查原来是这里的String 后面加上了一个空格,所以在不停的打印日志一般出现这样的问题,都是配置mybatis 配置文件出现了问题,仔细对照查找问题的关键点。原创 2017-07-06 19:20:26 · 11589 阅读 · 1 评论 -
java 网络通信socket实现简单实例
Socket通信的步骤 ① 创建ServerSocket和Socket ② 打开连接到Socket的输入/输出流 ③ 按照协议对Socket进行读/写操作 ④ 关闭输入输出流、关闭Socket服务器端: ① 创建Se原创 2017-08-17 09:59:21 · 1779 阅读 · 1 评论 -
Gearman 的使用
版权所有:转载请标明出处:-------------------一.Gearman 的 Job Server 调度程序的使用1. 启动Job: gearman默认端口号为4730。./gearmand -L 172.16.23.132 -p 4730 -u root -d-d deamon-L 监听 IP-p 端口2. Gearman转载 2017-07-18 19:33:28 · 1003 阅读 · 0 评论