![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 61
红衫先生_
这个作者很懒,什么都没留下…
展开
-
什么是代理模式?
前言设计模式系列文章,主要是把自己开发过程中用到的设计模式。温习一下,并且记录这个过程。什么是代理模式?代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。通过代理类这中间一层,能有效控制对委托类对象的直接访问,也可以很好地隐藏和保护委托类对象,同时也为实施不同控制策略预留了空间,从而在设计上获得了更大的灵活性。举个栗子: 我要买一套二手.原创 2021-04-19 00:13:29 · 274 阅读 · 0 评论 -
大白话讲接口和抽象类的区别
有个亲戚系列我表弟,去年大学毕业后,找工作不太顺利。听了同学的推荐去学了Java开发,昨天晚上发微信,问我接口和抽象类的区别。表弟:哥,为什么设计出接口和抽象类?他们有什么区别?我:去百度吧,上面都能查到,而且说的很全面。表弟:搜了,百度上说的都是抽象类可以有非抽象方法,接口没有非抽象方法什么的。我:是啊,没说错啊。表弟:这些是没错,可是无法说服我为什么设计出这两个东西的初衷。回想曾经,我也有过这样的疑问。一直到后来,开发过程中慢慢体会到了他们的差异抛砖引玉那些原创 2021-04-01 00:30:03 · 332 阅读 · 1 评论 -
Xrebel提供了哪些功能?如何去使用?和PINPOINT相比有哪些优势?
Xrebel是一款性能分析插件,能够提供各个部分代码性能监控。例如:方法执行时间,出现的异常,SQL执行时间,输出的Log,MQ执行时间等。在本地开发中提供应用程序性能的实时反馈,以更快地发现和修复错误。XRebel提供的功能接口中调用的应用耗时接口中IO调用耗时接口的调用日志接口出现的异常信息接口中调用的应用耗时通过这个功能可以看到各个应用的耗时,以及耗时百分比分布接口中IO调用耗时通过这个功能,可以看到各个接口的IO耗时分布情况,右上角有筛选功能,可以选择需要优化的类型,如S.原创 2021-03-29 14:42:41 · 1084 阅读 · 0 评论 -
打开Github很慢,解决方式
打开hosts文件,配置如下映射即可31.13.64.49 github.global.ssl.fastly.net192.30.253.113 github.com185.199.108.153 assets-cdn.github.com185.199.108.153 documentcloud.github.com8.7.198.45 gist.github.com185.199....原创 2020-03-24 19:51:34 · 1429 阅读 · 1 评论 -
加密方式-对称加密(AES)
对称加密中AES是比较常用,DES因为安全性比不上AES已经用的较少 对称加密:是指加密解密都是一个密钥,通过改密钥加密,也通过它解密。1.加密/** * 加密 * * @param content 需要加密的内容 * @param key 密钥 * @return */ public static byte[] encrypt(String content, String原创 2016-12-28 11:08:44 · 631 阅读 · 0 评论 -
FindBugs-IDEA插件的安装和使用
1.下载 因为使用idea在线无法下载,可下载这个链接的插件,亲测可用 https://download.csdn.net/download/libra_ts/10467779 2.安装 安装完成,重启。3.使用 a. Bad practice代码中的一些坏习惯Class names should start with an upper case letter ...原创 2018-06-08 17:53:18 · 2122 阅读 · 0 评论 -
ThreadPoolTaskExecutor参数详解、问题
前言当需要进行一项耗时操作时,就需要用到子线程,用到子线程时可以选择new一个子线程来操作,这样不是不行,但是效率会很低。而且消耗内存,所以就需要引用线程池来解决问题配置ThreadPoolTaskExecutor<bean id="taskExecutor&原创 2018-05-11 23:06:12 · 12504 阅读 · 0 评论 -
springboot无法读取mapper.xml的问题
记个坑,不知道为什么org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):搭建springboot项目的时候,报上面这个异常,说明是mapper.xml配置文件没加载,检查了各种配置之后发现没问题,百思不得其解最后在网上看到,当配置没问题的时候,把文件转移到resources文...原创 2018-04-06 22:47:16 · 4805 阅读 · 0 评论 -
springboot乱码问题汇总解决
请求参数乱码:如果试遍了网上所说的所有方法,还是不行就修改启动虚拟机参数 IDEA1.找到安装目录D:\IntelliJ_IDEA\IntelliJ IDEA 2017.2.4\bin2.idea64.exe.vmoptions文件,如果是64位的就修改这个文件,否则就修改idea.exe.vmoptions3.编辑文件,加上-Dfile.encoding=UTF-8PS:如果...原创 2018-04-10 18:08:24 · 1578 阅读 · 2 评论 -
springboot把配置实体和配置文件关联
1.实体package com.tansen.study.springbootssm.bean;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype.Component;@Component@ConfigurationProp原创 2018-04-10 15:50:30 · 853 阅读 · 0 评论 -
邮件发送工具类
工具类package com.morning.star.pt.common.component;import com.morning.star.exception.CODE;import com.morning.star.exception.MorningStarException;import com.morning.star.pt.common.entity.EmailAttachmentV原创 2018-03-13 18:57:31 · 852 阅读 · 0 评论 -
MultipartFile文件上传
file的name为files @RequestMapping ("/publish") @ResponseBody public WebJsonBean publish(@RequestParam MultipartFile[] files) throws IOException { try { for (int i = 0; i <原创 2018-03-09 17:07:38 · 1892 阅读 · 1 评论 -
ThreadLocal分析
ThreadLocal:线程局部变量在并发编程的时候,成员变量如果不做任何处理其实是线程不安全的,各个线程都在操作同一个变量,显然是不行的,并且我们也知道volatile这个关键字也是不能保证线程安全的。那么在有一种情况之下,我们需要满足这样一个条件:变量是同一个,但是每个线程都使用同一个初始值,也就是使用同一个变量的一个新的副本。这种情况之下ThreadLocal就非常使用例子比较: 不使用原创 2018-03-01 19:13:58 · 131 阅读 · 0 评论 -
如何设计一个秒杀系统?
本文作为许令波老师“如何设计一个秒杀系统?”这一课程的学习记录。同时也记录下今年项目中的一些原因导致秒杀、抢购服务器宕机秒杀系统的关键点秒杀系统其实主要解决2个问题,一个是并发读,一个是并发写。整体概况为“稳、准、快”高性能。 秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键。本文将从设计数据的动静分离方案、热点的发现与隔离、请求的削峰与分层过滤、服务端的极致优化这 4 ...原创 2018-12-29 16:17:04 · 15640 阅读 · 6 评论 -
RocketMQ部署采坑记录
org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout发送消息时报错问题原因不明,按照下面教程指定IP就可以了#进入任意目录,编写配置文件,并写好配置#echo &quot;brokerIP1=服务器的外网IP&quot; &amp;gt; broker.propertie...原创 2019-01-30 18:21:11 · 597 阅读 · 0 评论 -
Java面试题分享
本文意在分享最近的一些面试题明源云1.熔断用了吗,怎么用的2.分布式锁怎么实现 超时时间设置多少合适3.首页为什么要拆分单独的服务4.springcould资源隔离5.为什么那么多分布式框架要选择springcould6.mysql主从同步原理,有延时吗7.读写分离是怎么去做的。8.一张1000w数据的订单表,10个字段,还有一张500w数据的用户表。8个字段。现在要得到任...原创 2019-08-27 11:11:45 · 2493 阅读 · 0 评论 -
为什么要有volatile?volatile的三大特性是什么?
volatile是虚拟机提供的轻量级的同步机制volatile三大特性保证可见性不保证原子性禁止指令重排(有序性)可见性:每个线程创建时JVM都会为他创建一个工作内存,工作内存是每个线程的私有数据区域,Java内存模型中所有的变量都存在主内存,线程对变量的读取和赋值都要在工作内存中完成。所以首先要将变量拷贝到工作内存,修改后再写回主内存,如果有多个线程都读取了这个变量。修改后则需要...原创 2019-06-16 18:25:12 · 355 阅读 · 0 评论 -
记录开发中遇到的坑
此ip地址不允许调用接口,如有需要请登录微信支付商户平台更改配置微信支付企业付款到零钱接口,需要配置IP白名单。配置了服务外网IP之后死活不对原因是服务器出口IP和外网IP不一致。通过下面方式获取出口IP即可curl http://members.3322.org/dyndns/getip...原创 2019-05-27 16:29:06 · 328 阅读 · 0 评论 -
生产事件实录-浅谈XXE漏洞
问题起源微信商户平台收到了微信的安全通知,如下所示,漏洞详情则是XEE漏洞。所以就去了解了XEE早在2018年7月初有国外白帽子就发现了这个漏洞,作为一线技术人员竟然全然不知(自我检讨ing…)什么是XEE漏洞?XXE是指基于xml的,xml外部实体攻击下面看一段简单的xml文档代码,其中‘username’,‘password’,'address’被称为xml的元素<?xm...原创 2019-04-19 10:44:35 · 349 阅读 · 0 评论 -
生产事件实录-CPU报警超负载原因查找
线上环境在无秒杀、营销活动等情况下,出现CPU满载,报警线上环境在无秒杀、营销活动等情况下,出现CPU满载,报警top命令找到消耗CPU的进程top -Hp 29751(shift+p 按cpu排序,shift+m 按内存排序)找到进程中消耗CPU的线程printf ‘%x\n’ 7065 得到16进制PIDjstack 29751 |grep 1b99 -A 30 打印当前时...原创 2019-04-15 20:32:27 · 611 阅读 · 0 评论 -
加密方式-非对称加密(RSA加密与签名)
上一篇讲到了对称加密,本文主要讲非对称加密。 非对称加密就是指加密解密使用不同的密钥。 经常有人问我公钥私钥到底哪个用来加密哪个用来解密,哪个用来加签,哪个验签。今天就讲一个比较通俗易懂的方法: 你只要去想:既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密;同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布原创 2016-12-30 09:29:12 · 3289 阅读 · 0 评论 -
AOP切面编程
注意:jar包版本必须和jdk版本一致,否则会出现错误 jdk1.8==>1.8<!-- aspectj 支持 --><dependency> <groupId>aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.8.7</version></dependency><dependency> <g原创 2018-03-07 15:24:35 · 203 阅读 · 0 评论 -
Thread中start()与run()的区别
在Java当中,线程通常都有五种状态,创建、就绪、运行、阻塞和死亡: 创建:当new出线程对象,并没有调用该对象的start方法,这是线程处于创建状态。 就绪:当调用了线程对象的start方法之后,该线程就进入了就绪状态,但是此时线程调度程序还没有把该线程设置为当前线程,只是告诉CPU我已经进入了等待被调用的状态了,此时处于就绪状态。在线程运行之后,从等待或者睡眠中回来之后,也会处于就原创 2018-01-09 16:28:51 · 6358 阅读 · 0 评论 -
Eclipse 反编译插件JadClipse安装
http://www.cnblogs.com/java-class/p/4279261.html原创 2017-09-14 13:10:10 · 253 阅读 · 0 评论 -
官网下载Eclipse地址,可选择版本
下载地址 http://www.eclipse.org/downloads/packages/release/Mars/2原创 2017-08-13 23:15:11 · 434 阅读 · 0 评论 -
简单的抽奖随机策略
public Integer getPrizeResult() { // 10W内的随机数 try { while (true) { int index = new Random().nextInt(100001); log.info("【随机数】"+index);原创 2017-07-04 16:50:41 · 852 阅读 · 0 评论 -
多线程的三种实现方式
多线程的三种实现方式继承Thread类实现Runnable接口实现Callable接口第一种是继承Thread类 实现方法run() 不可以抛异常 无返回值第二种是实现Runnable接口 实现方法run() 不可以抛异常 无返回值第三种是实现Callable接口,接口中要覆盖的方法是 public call() 注意:此方法可以抛异常,而前两种不能 而且此方法可以有返回值 第三种如原创 2017-02-24 17:35:00 · 342 阅读 · 0 评论 -
项目获取真实的IP地址
获得真实IP地址,如果通过代理进来,则透过防火墙获取真实IP地址 /** * @author tansen * @date 2017-1-7 21:20:18 * @see 获得真实IP地址 */ public static String getIpAddress(HttpServletRequest request) { Str原创 2017-01-07 21:22:23 · 340 阅读 · 0 评论 -
fastjson的使用
1、把JSON文本parse为JSONObject或者JSONArray public static final Object parse(String text); 2、把JSON文本parse成JSONObject public static final JSONObject parseObject(String text); 3、把JSON文本parse为JavaBean原创 2016-12-19 17:19:21 · 302 阅读 · 0 评论 -
Maven下载jar很慢怎么办?
Maven为我们下载jar包很方便,但是小伙伴有没有遇到过这种情况,你在pom.xml新增了一个jar节点,保存…发现电脑卡了…卡死了,其实是maven请求了国外的下载地址超时等原因,只需要修改maven下载源的地址 ① 找到maven的安装地址② 找到setting.xml文件③ 新增节点① 找到maven的安装地址② 找到setting.xml文件 这里就不给大家演示了原创 2016-11-30 15:19:44 · 994 阅读 · 2 评论 -
Maven有什么用?怎么用?
Maven用了那么久,感觉自己还一无所知,就查阅了一系列的博客和论坛下面分享给各位Maven的作用① 帮你下载jar包② 寻找依赖,帮你下载依赖③ 热部署,热编译① 帮你下载jar包 maven项目会有一个 pom.xml文件, 在这个文件里面,只要你添加相应配置,他就会自动帮你下载相应jar包,不用你铺天盖地的到处搜索你需要的jar包了下面是示范配置文件pom.xml<dependenc原创 2016-11-30 14:36:10 · 2267 阅读 · 0 评论 -
spring定时器表达式cron
秒(0~59) 分钟(0~59) 小时(0~23) 天(月)(0~31,但是你需要考虑你月的天数) 月(0~11) 天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT) 7.年份(1970-2099)//每隔30秒调用一次0/30 * * * * ?//每隔一分钟调用一次0 0/1 * * * ?//每个月的1号10:10触发0 10 10原创 2017-07-05 18:09:57 · 553 阅读 · 0 评论 -
IntelliJ IDEA和我的重构之旅(一)
package com.ts.test;public class Test { public static void main(String[] args) { int a1 = new Test().add(1,2); int a2 = new Test().sub(1,2); System.out.println(a1);原创 2017-09-26 16:54:37 · 364 阅读 · 0 评论 -
Eclipse安装反编译插件
1:Help——Eclipse Marketplace2:输入 Decompiler 搜索并安装此插件3:默认全选5:没得选,不接受,就不能继续玩了6:当然要继续了7:好啦!反编译插件安装完成了,重启Eclipse之后就能玩了,那就Yes吧!8:想看一下反编译插件安装后的设置选项 Window——Preferences9:下图为Eclipse Class Decompiler的首选项页面,可以选择转载 2017-10-26 14:39:23 · 425 阅读 · 0 评论 -
Tapestry的使用
"@Insert" value="ognl:t4start" /> 在上面的代码中,调用了Tapestry的官方组件Insert,value属性是Insert组件的参数之一。 "@"符号用于区分jwcid是一个组件类型还是一个组件ID,如果是一个组件ID,tapestry将在HTML模板对应的页面规范中寻找对应该组件ID的组件调用配置。 (亦可这样理解,"@"为官原创 2018-01-07 10:45:30 · 2228 阅读 · 0 评论 -
Java动态代理解析
假如有1个service,用来办证 没有动态代理会怎么样?需要写三个这样的实现类CertService certService = new CertServiceImpl();//办证方法certService.banCert("办了一个证");如果现在要记录是谁办证的,就需要去改这个实现类,如果是100个service都需要加功能,那就改100个。如果使用动态代理package com.ts原创 2017-07-11 18:35:20 · 303 阅读 · 0 评论 -
在Spring容器中Bean的几种初始化、销毁方法的实现和先后顺序
1.实现方式通过实现InitializingBean/DisposableBean 接口来定制初始化之后/销毁之前的操作方法。通过 元素的 init-method/destroy-method属性指定初始化之后 /销毁之前调用的操作方法;在方法上加上@PostConstruct或@PreDestroy注解来实现该方法是在初始化之后还是销毁之前调用。2.代码实现package com.tans原创 2017-12-14 10:49:49 · 341 阅读 · 0 评论 -
Spring boot中没有application.properties的解决方式
新建maven项目,引入springboot的依赖,没看到application.properties的配置文件只需要在src/main/resources目录下新建application.properties文件怎么测试成功与否?只需将端口修改试试,默认是8080server.port=8081原创 2017-12-21 18:12:08 · 17552 阅读 · 0 评论 -
Spring boot中logback的应用
添加依赖将logback.xml添加到resources目录(否则无法加载)使用方式配置文件详细信息配置文件参数配置解析====>logback.xml日志内容解析1.添加依赖 因为springboot已经对logback做了兼容,不需要再导入别的spring相关的logback包<dependency> <groupId>ch.qos.logback</groupId>原创 2017-12-21 17:41:53 · 244 阅读 · 0 评论 -
logback.xml配置解析
1.只需要控制台打印<?xml version="1.0" encoding="UTF-8"?><configuration> <property name="log.base" value="D:/data/logs/"/> <!-- 生成的日志文件存放地址,如果不需要生成到本地则不需要配置file节点 --> <property name="log.moduleName" va原创 2017-12-21 17:48:31 · 492 阅读 · 0 评论