JAVA
文章平均质量分 80
shiyuezhong
从事java web开发
展开
-
实现关闭订单
在电商、支付等领域,往往会有这样的场景,用户下单后放弃支付了,那这笔订单会在指定的时间段后进行关闭操作,细心的你一定发现了像某宝、某东都有这样的逻辑,而且时间很准确,误差在1s内;那他们是怎么实现的呢?一般的做法有如下几种:定时任务关闭订单 rocketmq延迟队列 rabbitmq死信队列 时间轮算法 redis过期监听。原创 2022-12-23 14:16:16 · 197 阅读 · 1 评论 -
JAVA性能调优
JAVA性能调优程序设计优化tomcat优化JVM优化数据库优化操作系统优化程序设计优化减少MYSQL,REDIS访问异步,批量减少事务REDIS大对象tomcat优化pstree -p [pid] | wc -l参数:server.tomcat.accept-count:等待队列长度,默认100server.tomcat.max-connections:最大可被连接数,默认10000server.tomcat.max-threads:最大工作线程数,默认200server.tomc原创 2020-12-29 17:18:59 · 160 阅读 · 0 评论 -
Kafka相关知识
Kafka 是一个优秀的分布式消息中间件,许多系统中都会使用到 Kafka 来做消息通信。对分布式消息系统的了解和使用几乎成为一个后台开发人员必备的技能。今天就从常见的 Kafka 面试题入手和大家聊聊 Kafka 的那些事儿。思维导图讲一讲分布式消息中间件面试问题: 什么是分布式消息中间件? 消息中间件的作用是什么? 消息中间件的使用场景是什么? 消息中间件选型? 消息队列分布式消息是一种通信机制,和 RPC、HT...转载 2020-10-14 14:35:55 · 250 阅读 · 0 评论 -
Java Mission Control
参考文档JMC官方用户操作指南:jmc 5.5 JFR官方用户操作指南:jfr 5.5 JDK Java Management Extensions JMX最佳实践(如何实现自己的JMX MBean) Java SE Monitoring and Management keytool官方文档 Enabling remote JMX with password authentication and SSL缩略语缩写 全称 含义 JDK Jav转载 2020-08-12 09:59:54 · 2874 阅读 · 0 评论 -
java list按照 对象 指定多个字段属性进行排序
package PjectUtils;import java.lang.reflect.Field;import java.text.NumberFormat;import java.util.Collections;import java.util.Comparator;import java.util.Date;import java.util.List;/** * ...转载 2019-11-27 16:11:48 · 1396 阅读 · 0 评论 -
高并发秒杀系统的设计思考!
前言秒杀大家都不陌生。自2011年首次出现以来,无论是双十一购物还是 12306 抢票,秒杀场景已随处可见。简单来说,秒杀就是在同一时刻大量请求争抢购买同一商品并完成交易的过程。从架构视角来看,秒杀系统本质是一个高性能、高一致、高可用的三高系统。而打造并维护一个超大流量的秒杀系统需要进行哪些关注,就是本文讨论的话题。整体思考首先从高维度出发,整体思考问题。秒杀无外乎解决两个核心问...转载 2019-11-21 17:40:57 · 271 阅读 · 0 评论 -
深入理解分布式事务,高并发下分布式事务的解决方案
1、什么是分布式事务分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。2、分布式事务的产生的原因转载 2017-11-28 18:07:54 · 188 阅读 · 0 评论 -
分布式事务一些总结与思考
对于程序员,事务等价于Transaction,是指一组连续的操作,这些操作组合成一个逻辑的、完整的操作。即这组操作执行前后,系统需要处于一个可预知的、一致的状态。因此,这一组操作要么都成功执行,要么都不能执行;如果部分成功,部分失败,成功的部分需要回滚(rollback)。关系型数据库事务大多数人可能和我一样,第一次听说事务是在学习关系型数据库(mysql、sql serv转载 2017-12-11 15:23:03 · 1557 阅读 · 0 评论 -
Java高并发,如何解决,什么方式解决
对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了。而并发问题是绝大部分的程序员头疼的问题,但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一起来研究一下常见的并发和同步吧。为了更好的理解并发和同步,我们需要先明白两个重要的概念:同步和异步1. 同步和异步的区别和联系所谓同步,可以理解为在执行完一个函数或方法转载 2017-11-28 15:42:40 · 257 阅读 · 0 评论 -
JAVA静态代理和动态代理
代理模式最大的特点就是代理类和实际业务类实现同一个接口(或继承同一父类),代理对象持有一个实际对象的引用,外部调用时操作的是代理对象,而在代理对象的内部实现中又会去调用实际对象的操作。定义:为其他对象提供一种代理以控制对这个对象的访问。代理接口(Subject)代理类(ProxySubject)委托类(RealSubject)代理模式一般涉及到的角色有:原创 2017-08-01 11:38:32 · 274 阅读 · 0 评论 -
mybatis获取数据库表字段名+数据
dao:List> getTest();map.xml: <![CDATA[ select * from sw_flow_before_approve ]]> bo:List> allList = new ArrayList>();List> map = dao.getTest();int index = 0;fo原创 2017-06-14 11:34:26 · 16435 阅读 · 2 评论 -
使用springfox整合SpringMVC和Swagger
Swagger 是一系列对 RESTful 接口进行规范描述和页面展示的工具. 通过 springfox-swagger 将 Swagger 与 Spring-MVC 整合, 可从代码中的注解获取信息, 并生成相应的文档. 效果如下所示.目前 Swagger 的 api 版本规范已经更新到 2.0 版本, 中文网络上基本上都是 1.0 的 api 版本规范的教程. 捣鼓了一天终于搞定了,转载 2017-07-03 14:51:07 · 1085 阅读 · 0 评论 -
Spring事务失效的原因
5种大的原因 1.如使用mysql且引擎是MyISAM,则事务会不起作用,原因是MyISAM不支持事务,可以改成InnoDB假如有兴趣了解 MySQL中 ” engine=innodb ” 以及 ” engine=innodb 和engine=myisam的区别 “,可以读读这篇文章:http://blog.sina.com.cn/s/blog_6ac4c6cb01018pb1.htm转载 2017-06-09 16:02:19 · 614 阅读 · 0 评论 -
Spring MVC @Transactional注解方式事务失效的解决办法
项目用SpringMVC + Spring JdbcTemplate。搭框架时,发现了一个事务无法正常回滚的问题,记录如下:首先展示问题:Spring applicationContext.xml配置: java:comp/env/jdbc/will <bean id="txMan转载 2017-06-05 10:26:55 · 600 阅读 · 0 评论 -
微信朋友圈分享
1.wechat.appId以及wechat.accessToken从配置文件读取2.getTicketCache方法以及getAccessTokenCache方法为了缓存jsapi_ticket跟access_token写的,直接缓存在系统中了,可以考虑换成保存到数据库3.WechatTicket.java配合上面缓存方法用的,改用数据库存取的话可不用此类控制层代码:We原创 2017-01-23 10:45:26 · 981 阅读 · 0 评论 -
时间工具类
import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class DateUtil { private static原创 2016-06-16 10:40:08 · 462 阅读 · 0 评论 -
mybatis foreach
参数是map:Map searchDataMap ${key} = #{searchDataMap[${key}]} 参数是ListList cloumList 0"> max(CASE原创 2016-08-05 22:57:53 · 690 阅读 · 0 评论 -
java合成图片
import java.awt.AlphaComposite;import java.awt.Graphics2D;import java.awt.Image;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileInputStream;import java.io.FileNo原创 2016-12-02 09:15:29 · 2046 阅读 · 1 评论 -
微信验证域名
@RequestMapping(value = "/weixin", method = { RequestMethod.POST, RequestMethod.GET }, headers = "Accept=application/xml") @ResponseBody public String doService(HttpServletRequest servletReq原创 2016-11-21 13:39:34 · 1817 阅读 · 0 评论 -
Java实现微信JS-SDK【一】配置篇
http://blog.csdn.net/sevenlm/article/details/45067815转载 2016-11-21 19:11:09 · 941 阅读 · 0 评论 -
httpclient 4.3.2 post get的工具类
import java.util.ArrayList;import java.util.List;import java.util.Map;import org.apache.commons.lang.StringUtils;import org.apache.http.HttpEntity;import org.apache.http.NameValuePair;import or原创 2017-01-05 17:06:15 · 512 阅读 · 0 评论 -
taskExecutor使用
applicationContext.xml: @Autowired private TaskExecutor taskExecutor;taskExecutor.execute(new Runnable() { public void run原创 2017-01-05 17:09:43 · 3649 阅读 · 0 评论 -
eclipse安装JAVA反编译插件
前言:在实际的开发中几乎都会使用到一些框架来辅助项目的开发工作,对于一些框架的代码我们总怀有一些好奇之心,想一探究竟,有源码当然更好了,对于有些JAR包中的代码我们就需要利用反编译工具来看一下了,下面是我常使用的一种安装JAVA反编译工具的方法,操作比较简单,不过时间长了也容易忘记,还是在此小记一笔吧!毕竟好记性不如烂笔头(插件市场中有好多好玩的,自己可以尝试玩玩看!) 1:Help——E转载 2017-02-17 21:05:35 · 1132 阅读 · 0 评论 -
Spring Cloud微服务架构实践与经验总结
什么是微服务微服务的概念源于 2014 年 3 月 Martin Fowler 所写的一篇文章“Microservices”。文中内容提到:微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful AP转载 2017-12-14 10:40:43 · 1025 阅读 · 0 评论 -
Java IO流
IO框架流是一种抽象的数据总称,本质是能够进行数据的传输。按流的方向分为:输入流和输出流。按处理数据的单位分为:字节流和字符流。字节就是1个Byte,8位,字符是占2个Byte,16位,字节是有符号类型,字符是无符号类型的。字节输入流:InputStream,字节输出流:OutputStream字符输入流:Reader,字符输出流:Writer 一、以字节为单位的输入流的框架图原创 2017-12-28 22:04:24 · 197 阅读 · 0 评论 -
多线程
进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程。(进程是资源分配的最小单位)线程:线程是进程的一个实体,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小。(线程是cpu调度的最小单位),它可与同属一个进程的其他的线程共享进程所拥有的全部资源。线程和进程一样分为五个阶段:创建、就绪、运行、阻原创 2017-12-28 22:10:00 · 196 阅读 · 0 评论 -
CAP理论被应用在何方?
But:这个文章的重点并不是讨论 CAP 理论和细节,重点是说说 CAP 在微服务中的开发怎么起到一个指引作用,会通过几个微服务开发的例子说明,尽量的去贴近开发。CAP 定理又被称为布鲁尔定理,是加州大学计算机科学家埃里克·布鲁尔提出来的猜想,后来被证明成为分布式计算领域公认的定理。不过布鲁尔在出来 CAP 的时候并没有对 CAP 三者(Consistency,Availability,P...原创 2019-09-06 09:42:05 · 330 阅读 · 0 评论 -
springcloud:配置中心示例
git为例:随着线上项目变的日益庞大,每个项目都散落着各种配置文件,如果采用分布式的开发模式,需要的配置文件随着服务增加而不断增多。某一个基础服务信息变更,都会引起一系列的更新和重启,运维苦不堪言也容易出错。配置中心便是解决此类问题的灵丹妙药。Spring Cloud Config在我们了解spring cloud config之前,我可以想想一个配置中心提供的核心功能应该有什么提...原创 2019-07-30 15:35:51 · 175 阅读 · 0 评论 -
CopyOnWrite
读多写少的场景下引发的问题?大家可以设想一下现在我们的内存里有一个 ArrayList,这个 ArrayList 默认情况下肯定是线程不安全的,要是多个线程并发读和写这个 ArrayList 可能会有问题。好,问题来了,我们应该怎么让这个 ArrayList 变成线程安全的呢?有一个非常简单的办法,对这个 ArrayList 的访问都加上线程同步的控制。比如说一定要在...转载 2019-06-01 10:22:43 · 1008 阅读 · 1 评论 -
nginx配置https
#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;events { worker_connections ...原创 2019-02-25 14:33:47 · 151 阅读 · 0 评论 -
redis到codis的数据迁移
目的本文档适用于redis到codis的数据迁移。文档附带迁移程序。迁移前请确保需要部署的业务程序(如商城)的缓存访问方式已从redis更新到codis。目前有两种方式来迁移缓存: 自动同步:适用于迁移程序可同时访问到redis和codis服务的情景,无需下线原有的redis业务程序,可等到同步程序部署完成后,逐台更新部署业务程序,并下线所有redis服务; 手动导入:适用于迁移...转载 2019-02-25 14:17:47 · 1149 阅读 · 1 评论 -
ElasticSearch和kibana安装文档
一、环境:三台ElasticSearch 机器,至少4G内存,硬盘容量可按线上标配配置 一台Kibanna可视化平台机器,至少2G内存,为节省线上资源,可共用 Centos 7.x 64bit JDK 1.8 + 64bit ElasticSearch 5.5.2 Kibana 5.5.2二、准备 节点信息 es01.xxx.com 192.168.103.87 es...原创 2019-02-25 14:13:21 · 197 阅读 · 0 评论 -
Windows下搭建ELK日志分析平台
ELK介绍需求背景:业务发展越来越庞大,服务器越来越多 各种访问日志、应用日志、错误日志量越来越多,导致运维人员无法很好的去管理日志 开发人员排查问题,需要到服务器上查日志,不方便 运营人员需要一些数据,需要我们运维到服务器上分析日志为什么要用到ELK:一般我们需要进行日志分析场景:直接在日志文件中 grep、awk 就可以获得自己想要的信息。但在规模较大也就是日志量多而复杂的...原创 2018-09-28 16:08:38 · 4569 阅读 · 0 评论 -
spring boot druid mybatis 多数据源配置
1.application.propertiesspring.datasource.url = jdbc\:mysql\://192.168.1.1\:3306/business?autoRconnect\=true&useUnicode\=true&characterEncoding\=UTF8&zeroDateTimeBehavior\=convertToNull...原创 2018-08-15 12:59:54 · 494 阅读 · 0 评论 -
java实现接口通过Groovy加载
接口实体类:InterfaceServiceCache.javapublic class InterfaceServiceCache implements Serializable { private static final long serialVersionUID = -5855556857352346121L; private Integer serviceId;//主键 priva...原创 2018-05-25 09:40:58 · 1263 阅读 · 1 评论 -
上传下载文件、导出excel
FileUploadController.javaimport org.json.JSONObject;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Value;import org.springframework.ster...原创 2018-04-13 19:14:47 · 451 阅读 · 0 评论 -
Java代码解压RAR/ZIP文件
pom.xml<!-- 导入zip解压包 --><dependency> <groupId>ant</groupId> <artifactId>ant</artifactId> <version>1.6.5</version></dependen原创 2018-04-18 20:23:48 · 12794 阅读 · 1 评论 -
Kafka在Windows安装运行及入门实例(JAVA)
一、安装JDK以及zooeleeper这里省略二、安装与运行Kafka下载http://kafka.apache.org/downloads.html下载后解压到任意一个目录,笔者的是D:\Java\Tool\kafka_2.11-0.10.0.11. 进入Kafka配置目录,D:\Java\Tool\kafka_2.11-0.10.0.12. 编辑文件“server.properties”3. ...原创 2018-04-11 15:57:15 · 2981 阅读 · 2 评论 -
SpringBoot ActiveMQ 整合使用
安装 ActiveMQ(见上一篇)整合IDEA 创建 SpringBoot 项目,1.打开IDEA,创建新项目,选择Spring Initializr2.输入Artifact3.勾选Web4.点击finish完成5.进入项目,可以将以下内容删除因为 SpringBoot 已经内置了对 ActiveMQ 的支持,所以直接引入依赖 spring-boot-starter-activemq 就行。整体项...原创 2018-04-09 22:38:48 · 2740 阅读 · 0 评论 -
ActiveMQ简单教程
一。名词:1.JMS:即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信【提供产生-发送-接收消息接口】。Java消息服务是一个与具体平台无关的API,绝大多数MOM(消息中间件)提供商都对JMS提供支持。2.MQ:Message Queue消息队列3.A...原创 2018-04-09 17:58:17 · 1208 阅读 · 0 评论