java
wangtaojiushiwo
开始我的代码世界
展开
-
MqSend使用说明
V1.3.0版本插件库安装好mqSend后,首先会在IDEA上方菜单栏多一个菜单,如下:启用后界面如下,每次发送前请先点击ENV选择环境(DEV/FAT/PRO),选择一个环境即可之后填写必要的配置以及发送信息(如无virtualHost可不填)填写发布点击发送(go go go),结果会回显在上方下次再次发送会自动回显,或者自己下拉选择插件会以版本迭代的方式持续优化,如有更好的建议,下方留言联系我!吐槽样式的话,可以算我一个!!!...原创 2021-03-17 11:24:09 · 827 阅读 · 0 评论 -
RabbitMQ之延时队列
实际工作中,有这样一种需求,订单1分钟未支付直接关闭订单,这时可以考虑用rabbitMQ的延时队列大概思路:订单创建完成后生产者发送消息到mq延时队列中,一分钟后消息变为死信转发到正常队列中,而消费者则一直监听正常队列项目集成mq:1>导入依赖: <!--mq依赖--> <dependency> ...原创 2019-08-13 09:29:54 · 278 阅读 · 0 评论 -
五种方式遍历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 · 144 阅读 · 0 评论 -
三种方式循环删除ArrayList元素
撸代码时,会遇到这样一种情况,在ArrayList中循环删除元素,这里有坑!!!切记为此,写了个测试,三种方式遍历,孰优孰劣一目了然:首先新建数组并填充://新建数组并填充 List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); ...原创 2019-08-12 14:22:06 · 644 阅读 · 0 评论 -
java实现自定义异常并全局捕获
在工作过程中,我们常常需要在合适的地方抛出合适的异常,除了java自带的一些异常,我们可以在项目中定制自己的异常,并且全局捕获它,返回统一封装的信息,这样前端可以直接拿到我们的异常信息进行弹出!那么,如何自定义异常呢?1.首先需要一个自定义异常类,OrderException(需要继承RuntimeException)public class OrderException exten...原创 2019-08-09 15:50:26 · 3359 阅读 · 0 评论 -
多线程下的线程安全问题
多线程情况下,很容发生线程安全问题,那么我们在程序中应该怎样避免呢?1>全局变量使用final修饰像Integer,String这样的类其实都是用final修饰的,比如我们在代码中这样声明一个全局变量int a = 0;那么这个变量接下来是不能被更改的,否则编译会报错,但是final修饰的Map,值却可以被修改,所以说HashMap是线程不安全的!2>堆栈封闭:局部变量,无...原创 2019-07-08 15:45:09 · 324 阅读 · 0 评论 -
redis分布式锁-----实现秒杀的思路
工作中,有很多业务场景需要实现类似秒杀,抢购的功能,这种短时高并发的场景尤其需要注意防止商品出现超卖的问题,一旦超卖,各位猿们就准备删库跑路把~~~~大家可能会想,synchronized大法!别,想想拉肚子时厕所满坑的尴尬~~~~这时可以了解下用redis实现分布式锁,它能够实现分布式环境下的数据一致性,其本质是利用了redis是单线程的,或者说redis的网络模块是单线程的,其他模块还...原创 2019-07-02 09:16:08 · 729 阅读 · 0 评论 -
踩坑系列之《二》----- 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 · 124 阅读 · 0 评论 -
解决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 · 7587 阅读 · 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 · 442 阅读 · 0 评论 -
Cache Aside Pattern(缓存模式)
在一次秒杀系统中接触到这个概念--Cache Aside Pattern度娘之后,说下我的理解:为什么要用缓存模式:提升服务性能!!!而服务性能瓶颈往往都在DB,高并发情况下尤甚,我们知道数据库是持久化在硬盘上,而缓存往往是基于内存的,两个之间的读写性能不在一个量级,由此可见缓存带来的性能提升。什么时候需要使用缓存?1>需要频繁的查询数据库2>极其消耗数据库性能...原创 2019-05-13 17:08:34 · 824 阅读 · 0 评论 -
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 · 655 阅读 · 0 评论 -
GET和POST的区别
GET和POST的区别?通常来说,GET携带数据量小,而POST更加安全但本质上来说,http协议并没有规定他们之间有啥区别,而是浏览器厂商之间默认的规定,GET同样可以放在请求体里,而非一定作为路径参数放在URL后面我们使用的时候应该遵守一个原则:幂等性即:GET用来做幂等性操作,POST用作非幂等性操作什么是幂等性?简单来说就是对一个接口无论操作一次还是一万次,所得的结果都...原创 2019-05-08 09:44:36 · 99 阅读 · 0 评论 -
局域网内两台电脑ping不通
局域网内本机ping不通另一台,但是Ping其他主机可以,经检查与对方防火墙有关原创 2017-10-23 11:08:51 · 2192 阅读 · 0 评论