自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 IDEA启动--JVM内存不足

环境说明:WINDOWS本地 + IDEA2018.3.5问题背景:项目突然启动报错:# There is insufficient memory for the Java Runtime Environment to continue.# Native memory allocation (malloc) failed to allocate 2426160 bytes for Chunk::new# An error report file with more information is sav

2022-03-03 16:02:40 4340

原创 Mybatis映射异常:Invalid bound statement (not found)

环境说明:WINDOWS本地 + IDEA + gradle + mapper与xml文件都放在一个包下问题背景:项目启动的时候,会去数据库查询一些配置信息,但是只要涉及到sql的执行,就会报错:Invalid bound statement (not found)很明显,这是mybatis的mapper与xml文件绑定异常定位思路:这时候可以检查下mapper的路径是否一致,命名是否一致等等我这里很显然不是这样的原因,那既然报错信息是绑定异常,not found会不会是xml文件压

2022-03-03 15:23:22 1229

原创 rabbitmq监听报错:Execution of Rabbit message listener failed

rabbitmq监听端出现报错Execution of Rabbit message listener failed.Caused by: java.lang.IllegalStateException: Channel closed; cannot ack/nackChannel shutdown: channel error; protocol method: #method<channel.close>(reply-code=406经排查验证:是因为监听端代码里加入了手动ACK

2022-03-03 10:15:13 8369

原创 MqSend使用说明

V1.3.0版本插件库安装好mqSend后,首先会在IDEA上方菜单栏多一个菜单,如下:启用后界面如下,每次发送前请先点击ENV选择环境(DEV/FAT/PRO),选择一个环境即可之后填写必要的配置以及发送信息(如无virtualHost可不填)填写发布点击发送(go go go),结果会回显在上方下次再次发送会自动回显,或者自己下拉选择插件会以版本迭代的方式持续优化,如有更好的建议,下方留言联系我!吐槽样式的话,可以算我一个!!!...

2021-03-17 11:24:09 785

原创 记一次linux故障排查---发送请求耗时较长

在我们的测试环境linux主机上,我们接口访问时长都比较耗时,所以开始排查问题首先我们的接口是这样的:A服务调用B服务(6s左右),B服务调用三方API(6s左右),耗时12sps:A服务和B服务都在一台linux主机上,请求A服务接口后,1s后调用B服务,但是B服务5s后才收到请求,第6s开始请求三方,询问了三方,三方显示11s才收到请求排查:首先我本地启动A服务,访问本地接...

2019-12-05 17:13:41 1098

原创 关于并发的一些了解(待补全)

jdk8提供的一些原子类:AtomicInteger:线程安全的类内部调用了UnSafe.compareAndSwap(CAS理论,即乐观锁的思想,底层实现由native修饰,即非Java写的底层实现)AtomicLong---LongAdder...

2019-12-02 16:40:20 99

原创 oracle vs mysql

最近工作中用到了oracle,因为以前一直用的mysql这里记录一下orcale与mysql一些不同的地方,后续会继续添加1》oracle没有limit在mysql中如果要查询结果集的第一条,可以这么写:SELECT * FROM T WHERE NUM = 6768 ORDER BY ID DESC LIMIT 1在oracle中只有这么写:SELECT * F...

2019-10-08 15:52:52 127

原创 面试的一些不足之处

java中的锁乐观锁(CAS操作--比较与交换)与悲观锁公平锁(公平锁是指多个线程按照申请锁的顺序来获取锁)与非公平锁(ReetrantLock/,通过构Synchronized造函数指定该锁是否是公平锁。非公平锁的优点在于吞吐量比公平锁大)互斥锁(ReentrantLock)与读写锁(ReadWriteLock)分段锁(ConcurrentHashMap---当需要put元素的时...

2019-09-18 21:48:44 362

原创 springboot集成阿里OSS上传文件

开发前的准备:自己在阿里云上申请免费的Oss对象存储,新建Bucket---读写权限选择公共读,我开始这里忘了导致后来踩了小坑接下来是代码中的一些配置:我用的是springboot1》添加pom依赖: <!--OSS上传--> <dependency> <groupId>com.aliyu...

2019-09-11 16:17:01 5268

原创 记mysql5.7.27安装实操

网上有很多安装过程,但是没有可能是由于环境或者版本的问题,安装过程中遇到了一些问题,最终成功安装,记录一下自己的安装过程,看看大家有没有踩到同一个坑的首先是我的环境:windows10、64位 mysql版本5.7.271》下载mysql5.7.27解压包https://dev.mysql.com/downloads/mysql/,选择Windows x86,64-b...

2019-09-11 11:23:03 1511 1

原创 netty的一些简单了解

netty基于NIO基础(同步非阻塞)可以定制编码解码协议,如果将编解码协议定位http协议,即可成为http服务器4.X 5有bugdubbo、rocketmq等都使用了它ByteBuf是netty的一个字节容器,netty通过粘包拆包发送和接收数据执行步骤1、创建ServerBootStrap实例2、设置并绑定Reactor线程池:EventLoopGrou...

2019-08-21 17:33:58 107

原创 LINUX报错系列之《二》-----jenkins启动失败

jenkins突然启动报错,一直起不来[root@172 var]# service jenkins status● jenkins.service - LSB: Jenkins Automation Server Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled) Active: f...

2019-08-21 14:31:24 4786

原创 LINUX报错系列之《一》----- java.net.UnknownHostException

起因是服务在windows上部署运行ok,转而在linux就炸锅:java.net.UnknownHostException: izbp11ht: izbp11ht: System error.........查看代码发现getLocalHost()方法总是抛异常,该方法为获取本地主机名称以及ip度娘很多都是说更改linux /etc/hosts文件 添加127.0.0.1 主机名的...

2019-08-20 11:58:54 764

原创 java设计模式系列之《三》----- 状态模式

状态模式,我是这么理解的:用多态实现替换多重if嵌套它和策略模式看起来很像,都可以消除if else,但是策略模式针对点在于算法,而状态模式针对点在于状态的切换demo:宾馆对房间的操作首先,假设他有这么几种状态:空闲、预订、入住有这么几种操作:预订、取消预定、入住、退房针对这种有多个状态且互相之间有操作的情景就可以使用状态模式,消除大量if else接下来:No code...

2019-08-15 14:43:29 131

原创 java设计模式系列之《二》----- 观察者模式

观察者模式主要就是说观察者与被观察者之间的关系,通常是一个被观察者被多个观察者观察,一对多的关系!举例:被观察者可以理解为微信,观察者自然就是微信用户。1>定义被观察者接口:/** * 功能描述: 被观察者(微信) * @date: 2019/7/31 */public interface ObserverNo { /** * 功能描述: 微信可以添...

2019-08-13 11:46:57 115

原创 RabbitMQ之延时队列

实际工作中,有这样一种需求,订单1分钟未支付直接关闭订单,这时可以考虑用rabbitMQ的延时队列大概思路:订单创建完成后生产者发送消息到mq延时队列中,一分钟后消息变为死信转发到正常队列中,而消费者则一直监听正常队列项目集成mq:1>导入依赖: <!--mq依赖--> <dependency> ...

2019-08-13 09:29:54 255

原创 五种方式遍历HashMap

遍历HashMap,在代码中很常见,那么,你更倾向那种呢?下面我将介绍五种写法,看看孰优孰劣:新建Map并填充 Map<String, String> map = new HashMap<String, String>(); map.put("1", "value1"); map.put("2", "value2"); ...

2019-08-12 15:21:33 119

原创 三种方式循环删除ArrayList元素

撸代码时,会遇到这样一种情况,在ArrayList中循环删除元素,这里有坑!!!切记为此,写了个测试,三种方式遍历,孰优孰劣一目了然:首先新建数组并填充://新建数组并填充 List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); ...

2019-08-12 14:22:06 612

原创 java实现自定义异常并全局捕获

在工作过程中,我们常常需要在合适的地方抛出合适的异常,除了java自带的一些异常,我们可以在项目中定制自己的异常,并且全局捕获它,返回统一封装的信息,这样前端可以直接拿到我们的异常信息进行弹出!那么,如何自定义异常呢?1.首先需要一个自定义异常类,OrderException(需要继承RuntimeException)public class OrderException exten...

2019-08-09 15:50:26 3257

原创 java设计模式系列之《一》----- 单例模式

单例模式-----饿汉模式(执行效率高但是会有资源的浪费,因为只在启动时创建实例,所以不存在线程安全问题)/** * 功能描述: 单例模式-----饿汉模式(执行效率高但是会有资源的浪费,因为只在启动时创建实例,所以不存在线程安全问题) * @date: 2019/8/6 */public class Order { //JVM保证类的静态成员只能被加载一次 pub...

2019-08-06 15:01:21 104

原创 IDEA常用快捷键

我用的是Eclipse风格:(windows)ctrl+shift+A:调出Actions搜索ctrl+E:最近浏览的文件alt+左箭头:之前浏览的地方ctrl+shift+F11:打书签shift+F11:书签列表ctrl+F:当前文件搜索ctrl+H/ctrl+alt+shift+N:全局搜索ctrl+alt+L:格式化ctrl+alt+O:去除无用引入...

2019-07-26 10:53:28 91

原创 HashMap

聊聊咱们javaer撸代码过程中经常遇到的一个类:HashMap先说说自己了解的一些简单概念:1>HashMap就是一个键值对(key-value)2>可以有一个key值为NULL,多个value值为NULL3>线程不安全的类度娘之后了解到:1>java8之后,结构为:数组+链表,链表长度大于8结构为:数组+红黑树2>虽然是线程不安全的,但...

2019-07-25 17:18:46 86

原创 踩坑系列之《三》----- mysql之int与boolean

工作中有遇到这样一种情况:数据库的status字段这么定义:`status` int(11) DEFAULT NULL COMMENT '状态(0未支付/1交易成功/2交易关闭)'那么我在列表筛选交易成功的时候应该这么写:SELECT * from order where status = 1后来再一次bug定位中发现同事的sql这么写:SELECT * from t...

2019-07-23 20:40:05 955

原创 多线程下的线程安全问题

多线程情况下,很容发生线程安全问题,那么我们在程序中应该怎样避免呢?1>全局变量使用final修饰像Integer,String这样的类其实都是用final修饰的,比如我们在代码中这样声明一个全局变量int a = 0;那么这个变量接下来是不能被更改的,否则编译会报错,但是final修饰的Map,值却可以被修改,所以说HashMap是线程不安全的!2>堆栈封闭:局部变量,无...

2019-07-08 15:45:09 286

原创 redis分布式锁-----实现秒杀的思路

工作中,有很多业务场景需要实现类似秒杀,抢购的功能,这种短时高并发的场景尤其需要注意防止商品出现超卖的问题,一旦超卖,各位猿们就准备删库跑路把~~~~大家可能会想,synchronized大法!别,想想拉肚子时厕所满坑的尴尬~~~~这时可以了解下用redis实现分布式锁,它能够实现分布式环境下的数据一致性,其本质是利用了redis是单线程的,或者说redis的网络模块是单线程的,其他模块还...

2019-07-02 09:16:08 706

原创 踩坑系列之《二》----- equals引发的小问题

Integer i = 1; System.out.println(i == 1); System.out.println(i.equals("1")); System.out.println(i.equals(1)); String s = "1"; System.out.println(s.e...

2019-06-18 19:24:35 106

原创 让代码变优雅系列之《三》----- 多线程之Future模式

情景:类似于这样的统计,四张表,四种统计!像这种完全可以用多线程让代码飞起来!传统的写法为单线程,只会等一张表的统计完成才会走到下一张表的统计,阻塞式!这里我用了多线程的Future模式,其他模式如CountDownLatch,FutureTask模式大同小异!springboot集成过程参考如下:https://blog.csdn.net/xiongmaojiuxian...

2019-06-14 10:40:56 153

原创 解决PageHelper无法进行多表查询分页

起因:PageHelper--bug:com.github.pagehelper.Page<Map<String, Object>> page = PageHelper.startPage(vo.getPageNo(), vo.getPageSize());网上的PageHelper工具类有个bug,只会对上面代码紧跟着的sql语句查询结果进行分页,但是工作中难免...

2019-06-06 17:46:23 7535 2

原创 让代码变优雅系列之《二》-----List求和结合Lamda

情景:List<Map<String, Object>>,需要对Map中的discount字段求和,类型为BigDecimal,找了很多文章,因为想用lamda语法,not for!发现很多list中放的是实体类,可这么写://计算 总金额BigDecimal discount= appleList.stream().map(Apple::getDis...

2019-05-31 17:58:58 420

原创 让代码变优雅系列之《一》-----Optional<T>结合Lambda

起因:一个项目中必不可少的代码可能长这样: Order order = orderCourseMapper.selectByPrimaryKey(vo.getOrderId()); if(order == null) throw new OrderException(ErrorCode.ERROR_NOCOURSEORDER); ...

2019-05-22 20:28:24 868

原创 踩坑系列之《一》----- mybatis踩坑之0变空串

踩坑:在与前端的一次对接接口的过程中,发现前端传过来的一个过滤条件orderType为0时的筛选效果与不传该字段即查询所有的筛选效果是一样的,但是传1或者2或者其他值时可以匹配到相应的结果。之前我的xml是这么写的: <if test="orderType != null and orderType != ''">AND o.order_type = #{orderTyp...

2019-05-22 20:26:39 222

原创 mysql---order by多字段排序

order by id,create_time默认id,create_time都会按照升序排列若要降序,请加DESC排序时会先按照id进行比较排序,若出现id一致则会比较create_time进行排序ps:DATE_FORMAT(o.create_time,'%Y-%m-%d %H:%i:%s') createTime...

2019-05-15 10:36:54 147

原创 MD5彩虹表

MD5算法,本来是单向转换,无法被反向破解,今天了解到原来还有彩虹表这么一说。什么是彩虹表?提前构造一张从原串到md5的映射表, 一张非常庞大的表。 这样, 就可以破解一些常见的原串了。 这就是彩虹表的思想。自测之后,发现只能破解一些简单的密码!如这里:cmd5或这里:cmd5.la甚至网上还有一些破解的工具,还有大容量的文本映射表!...

2019-05-15 10:22:06 2689

原创 分布式唯一ID算法之snowflake算法

1>mysql数据库索引用的是B+树2>分布式唯一ID算法--snowflake算法1.UUID--长度32位的全局唯一识别码uuid可以保证全局唯一,但是占用32位字节有些太长,并且由于是无序的,数据入库性能较差!为什么说入库性能较差呢?当我们插入主键自增的id时,会插入到索引分裂的最后一个节点上,饱和了之后会分裂出新的节点,这样节点的分裂次数最少,并且充分利用了...

2019-05-15 10:07:27 262

原创 Cache Aside Pattern(缓存模式)

在一次秒杀系统中接触到这个概念--Cache Aside Pattern度娘之后,说下我的理解:为什么要用缓存模式:提升服务性能!!!而服务性能瓶颈往往都在DB,高并发情况下尤甚,我们知道数据库是持久化在硬盘上,而缓存往往是基于内存的,两个之间的读写性能不在一个量级,由此可见缓存带来的性能提升。什么时候需要使用缓存?1>需要频繁的查询数据库2>极其消耗数据库性能...

2019-05-13 17:08:34 805

原创 springmvc与springboot在配置文件引入常量的区别

对于springboot来说:1>在yml中引入需要配置的常量:如fdfs:webserver: 123.12.12.123:80842>写配置类FdfsProperties@ConfigurationProperties(prefix = "fdfs")public class FdfsProperties { private String web...

2019-05-10 16:37:49 640

原创 GET和POST的区别

GET和POST的区别?通常来说,GET携带数据量小,而POST更加安全但本质上来说,http协议并没有规定他们之间有啥区别,而是浏览器厂商之间默认的规定,GET同样可以放在请求体里,而非一定作为路径参数放在URL后面我们使用的时候应该遵守一个原则:幂等性即:GET用来做幂等性操作,POST用作非幂等性操作什么是幂等性?简单来说就是对一个接口无论操作一次还是一万次,所得的结果都...

2019-05-08 09:44:36 77

原创 对CSS的执着

沉下去有多深,浮上来就有多高!非常好看的一款3d效果:3D

2019-04-26 16:02:00 78

转载 同源策略与跨域的一点了解

什么是同源?协议+域名+端口-----全部一致则说明同源!!!下表给出了相对http://store.company.com/dir/page.html同源检测的示例:URL 结果 原因 http://store.company.com/dir2/other.html 成功 只有路径不同 http://store.company.com/dir/inn...

2019-04-22 11:15:56 97

原创 一张图带你看懂https

https一定安全?别扯淡了。。。https比http安全?没毛病。。。一张图带你看懂(第一次画UML,大家凑合凑合)

2019-04-18 19:49:53 173

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除