自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(36)
  • 收藏
  • 关注

原创 Linux安装jdk、tomcat、mysql等

1.linux_jdk/usr/java/jdk1.8.0_181 <--- /usr/jdk1.查看当前目录pwd 2.查看linux位数sudo uname --m i686 //32位 x86_64 //64位 3.安装jdk 3.1 在usr目录下建立java目录 mkdir usr/java 3.2 将jdk-8u181-linux-x64.tar解压到java目录下 tar -zxvf jdk-8u181-linux-x64.

2021-01-31 17:37:57 192

原创 RSA(加密解密、签名验签)

加密解密(公钥加密,私钥解密)签名验签(私钥加签,公钥验签)//生成公钥私钥KeyPairs key = RSAEncryption.initKey();String publicKey = key.getPublicKey();String privateKey = key.getPrivateKey();System.out.println("公钥:"+publicKey);System.out.println("私钥:"+privateKey);System.out.pri

2021-01-26 17:29:07 316

原创 Jackson自定义序列化器(针对null,针对指定name的属性)

public class JsonObjectMapper extends ObjectMapper { /** * */ private static final long serialVersionUID = 8034942567620323925L; public JsonObjectMapper() { super(); this.setSerializerFactory(this.getSerializerFactory().withSerializerMod...

2021-01-26 15:33:13 657

原创 netty(IO模型和线程模型)

IO模型传统阻塞IO模型IO多路复用模型线程模型

2021-01-26 09:47:06 228

原创 SPI机制

JDK SPI//resources/META-INF/services //com.xxx.Logcom.xxx.impl.Log4j com.xxx.impl.Logback //public class Main { public static void main(String[] args) { ServiceLoader<Log> serviceLoader = ServiceLoader.loa

2021-01-25 17:40:27 148

原创 jackson适配fastjson写法的代码

public class JSON { private static ObjectMapper mapper; static { mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); mapper.

2021-01-24 13:10:10 270

原创 资金体系(收银台、支付、提现、清算、账户)

收银台支付提现清算账户

2021-01-24 13:07:02 295

原创 交易体系(订单、交易、账单、服务单、评价)

订单交易账单服务单评价

2021-01-24 13:05:27 713

原创 营销体系(预算、活动、优惠券、CMS、PUSH)

预算活动优惠券CMSPUSH

2021-01-24 13:03:58 402

原创 商品体系(品类、SPU、SKU、价格、库存)

品类SPUSKU价格库存

2021-01-24 13:02:25 1925

原创 招聘体系(简历、职位、投递、邀请、面试)

简历职位投递邀请面试

2021-01-24 13:00:42 231

原创 账户体系(账户、认证、会员、登录)

账户认证会员登录

2021-01-24 12:57:09 480

转载 HttpClient工具类

原文链接文章目录 1. 什么是HttpClient 2. 功能介绍 3. 版本比较 4. HttpClient不能做的事情 5. HttpClient使用流程 6. HttpClient工具类 6.1 添加依赖 6.2 编写spring-boot启动类 6.3 编写get和post请求测试controller 6.4 创建httpClient响应结果对象 6.5 重点,编写httpclient工具类 6.6 启动spring-boot,测

2021-01-21 09:50:09 3160

原创 微信支付(PC扫码支付和H5公众号支付)

最近在做微信支付,微信支付比较坑,官方居然只有.NET、C#、PHP的demo居然没有java的demo。然后微信支付是不提供测试账号的需要直接用正式的公众号。首先来介绍下微信扫码支付吧,微信扫码有两种方式,这里采用第二种方式统一下单(JSAPI)。需要提前在微信公众号后台申请微信支付开通,具体的开通规则详细文档见点击打开链接其实微信支付挺简单的无非就是拼装参数给微信发送请求,要注意的几点就是支付的金额是分,微信没有同步回调地址,只有异步回调的地址。这样的话就不能实时反馈支付结果到PC端页面。网上大多数

2021-01-20 17:48:03 913

原创 分批执行大批量数据

List dataList = new ArrayList();for(int i=0;i<999;i++) dataList.add(4);int splitSize = 500;int arryLength = dataList.size();int result = 0;int group = 0;if (arryLength % splitSize != 0) { group = 1;}result = arryLength / splitSize;result.

2021-01-20 17:44:13 500

原创 Idea配置

原文链接

2021-01-20 17:31:32 35

转载 本地缓存高性能之王Caffeine

原文链接本地缓存高性能之王Caffeine前言随着互联网的高速发展,市面上也出现了越来越多的网站和app。我们判断一个软件是否好用,用户体验就是一个重要的衡量标准。比如说我们经常用的微信,打开一个页面要十几秒,发个语音要几分钟对方才能收到。相信这样的软件大家肯定是都不愿意用的。软件要做到用户体验好,响应速度快,缓存就是必不可少的一个神器。缓存又分进程内缓存和分布式缓存两种:分布式缓存如redis、memcached等,还有本地(进程内)缓存如ehcache、GuavaCache、Caffeine

2021-01-20 17:00:19 151

转载 Java8的CompletionService使用与原理

原文链接CompletionService是Java8的新增接口,JDK为其提供了一个实现类ExecutorCompletionService。这个类是为线程池中Task的执行结果服务的,即为Executor中Task返回Future而服务的。CompletionService的实现目标是任务先完成可优先获取到,即结果按照完成先后顺序排序。CompletionService的使用非常简单。从源码查看ExecutorCompletionService类,该类只有三个成员变量:public cla

2021-01-20 16:07:06 357

原创 页面修改线程池参数_4

Java8CompletionService 处理线程池public class ThreadChangeDemo { //创建 private static ThreadPoolExecutor createExecutor(int corePoolSize, int maximumPoolSize, .

2021-01-20 15:59:22 302

原创 阿里四面你都知道吗?

阿里四面你都知道吗?最近一个朋友跟我说,现在面试太难了,再也不是以前那种随便背几个面试题然后就能拿到offer的时候了。最近朋友准备换工作面试了阿里,然后和我交流了下他遇到的一些面试题,然后我整理了一下,然后就分享给有需要的朋友们顺便也查漏补缺一下。一面1.开始是自我介绍;2.HashMap的实现原理,什么是hash碰撞,怎样解决hash碰撞?3.ConcurrentHashMap的原理,与HashTable的区别?4.HashSet和TreeSet的区别以及底层实现原理5.HashMap

2021-01-20 15:40:32 43

转载 黑名单(诸如反爬虫等)

原文链接可恶的爬虫直接把生产6台机器爬挂了!引言正在午睡,突然收到线上疯狂报警的邮件,查看这个邮件发现这个报警的应用最近半个月都没有发布,应该不至于会有报警,但是还是打开邮件通过监控发现是由于某个接口某个接口流量暴增,CPU暴涨。为了先解决问题只能先暂时扩容机器了,把机器扩容了一倍,问题得到暂时的解决。最后复盘为什么流量暴增?由于最近新上线了一个商品列表查询接口,主要用来查询商品信息,展示给到用户。业务逻辑也比较简单,直接调用底层一个soa接口,然后把数据进行整合过滤,排序推荐啥的,然后吐给前端

2021-01-20 14:41:41 976

原创 页面修改线程池参数_3

允许核心线程数回收executor.allowCoreThreadTimeOut(true);

2021-01-20 14:33:36 99

原创 页面修改线程池参数_2

除了修改核心线程数和最大线程数,实际中还经常需要修改阻塞队列长度,但是发现没有修改队列长度的方法,因为 LinkedBlockingQueue 的 capacity 被 final 修饰了。我们可以按照这个思路自定义一个队列,让其可以对 capacity 参数进行修改即可。操作起来也非常方便,把 LinkedBlockingQueue 粘贴一份出来,修改个名字,然后把 capacity 参数的 final 修饰符去掉,并提供其对应的 get/set 方法。//拷贝一份LinkedBlockin

2021-01-20 14:16:21 273 2

原创 页面修改线程池参数_1

public class ThreadChangeDemo { //创建 private static ThreadPoolExecutor createExecutor(int corePoolSize, int maximumPoolSize){ return new ThreadPoolExecutor(corePoolSize, .

2021-01-20 11:07:38 182

原创 状态模式实战

//返奖状态public abstract class RewardState { abstract void deal(String userId, String orderId);}//订单检查状态public class OrderCheckState extends RewardState { @Override void deal(String userId, String orderId) { System.out.println("order.

2021-01-19 17:15:30 194

原创 策略模式实战

//返奖策略接口public interface RewardStrategy { void reward(String userId);}//新用户返奖策略public class NewUserRewardStrategy implements RewardStrategy { @Override public void reward(String userId) { System.out.println("new user [" + userId .

2021-01-19 16:04:46 181

转载 设计模式在外卖营销业务中的实践

原文链接策略模式//定义一个策略接口public interface Strategy { void strategyImplementation();}​//具体的策略实现(可以定义多个具体的策略实现)public class StrategyA implements Strategy{ @Override public void strategyImplementation() { System.out.println("正在执行策略A");

2021-01-19 15:09:39 53

转载 新一代垃圾回收器ZGC的探索与实践

原文链接ZGC(The Z Garbage Collector)是JDK 11中推出的一款低延迟垃圾回收器,它的设计目标包括:停顿时间不超过10ms; 停顿时间不会随着堆的大小,或者活跃对象的大小而增加; 支持8MB~4TB级别的堆(未来支持16TB)。从设计目标来看,我们知道ZGC适用于大内存低延迟服务的内存管理和回收。本文主要介绍ZGC在低延时场景中的应用和卓越表现,文章内容主要分为四部分:GC之痛:介绍实际业务中遇到的GC痛点,并分析CMS收集器和G1收集器停顿时间瓶颈; ZGC原

2021-01-19 14:42:33 98

转载 Java中9种常见的CMS GC问题分析与解决

原文链接1. 写在前面| 本文主要针对 Hotspot VM 中“CMS + ParNew”组合的一些使用场景进行总结。重点通过部分源码对根因进行分析以及对排查方法进行总结,排查过程会省略较多,另外本文专业术语较多,有一定的阅读门槛,如未介绍清楚,还请自行查阅相关材料。| 总字数 2 万左右(不包含代码片段),整体阅读时间约 30min ,文章较长,可以选择你感兴趣的场景进行研究。1.1 引言自 Sun 发布 Java 语言以来,开始使用 GC 技术来进行内存自动管理,避免了手动管理带来

2021-01-19 14:25:38 529

转载 Java线程池实现原理及其在美团业务中的实践

原文链接随着计算机行业的飞速发展,摩尔定律逐渐失效,多核CPU成为主流。使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器。J.U.C提供的线程池:ThreadPoolExecutor类,帮助开发人员管理线程并方便地执行并行任务。了解并合理使用线程池,是一个开发人员必修的基本功。本文开篇简述线程池概念和用途,接着结合线程池的源码,帮助读者领略线程池的设计思路,最后回归实践,通过案例讲述使用线程池遇到的问题,并给出了一种动态化线程池解决方案。一、写在前面1.1 线程池是什么线程池(

2021-01-19 11:53:36 138

转载 美团在O2O场景下的广告营销

美团作为中国最大的在线本地生活服务平台,覆盖了餐饮、酒店、旅行、休闲娱乐、外卖配送等方方面面生活场景,连接了数亿用户和数百万商户。如何帮助本地商户开展在线营销,使得他们能快速有效地触达目标用户群体提升经营效率,是美团的核心问题之一,而机器学习相关技术在本地在线营销场景下发挥着非常关键作用。本文将从5个方面来介绍。首先,介绍O2O场景下广告业务的特点,及其与B2B和B2C广告业务的差别;其次,从商户效果感知、用户体验和媒体平台收益三个维度,介绍O2O广告业务的最重要的考量指标;第三,从前两节阐述的业务特点

2021-01-19 10:07:03 494 1

原创 netty

rpc: 不同计算机之间进行远程通信实现数据交互的一种技术。 分server, client, server stub,client stub四部分。 client stub就是将服务的请求的参数,请求方法,请求地址通过打包封装给成一个对象统一发送给server端。server stub就是服务端接收到这些参数之后进行拆解得到最终数据的结果。dubbo内部的线程池: dubbo的服务提供者包含两类线程池,一类叫io线程池,一类叫业务线程池。netty里面的粘包和.

2021-01-18 11:44:29 153

原创 @DubboReference 之 interfaceName 和 interfaceClass

//不推荐interfaceName(易写错)@DubboReference(group = "sys-cnf", interfaceName = "sysUserService", version = "0.0.1")private CnfSysUserService sysUserService;//更推荐interfaceClass(简单,不易错)@DubboReference(group = "sys-cnf", interfaceCl.

2021-01-14 09:08:13 2856

原创 手写HashMap

public class MyHashMap<K,V> { Node<K,V>[] table; class Node<K,V> { int hash; K key; V value; Node<K,V> next; Node(int hash, K key, V value, Node<K, V> next) { this.

2021-01-13 15:06:43 122

原创 maven scope

1.test范围是指测试范围有效,在编译和打包时都不会使用这个依赖2.compile范围是指编译范围内有效,在编译和打包时都会将依赖存储进去3.provided依赖,在编译和测试过程中有效,最后生成的war包时不会加入 例如: servlet-api,因为servlet-api tomcat服务器已经存在了,如果再打包会冲突4.runtime在运行时候依赖,在编译时候不依赖默认依赖范围是compile...

2021-01-12 19:13:26 72

原创 Redis分布式锁(实例)

//加锁public Boolean tryLock(String key, String value, ExpireTime expire){ return smsRedisService.setIfAbsent(key, String.valueOf(System.currentTimeMillis()), ExpireTime.FIVE_MINUTES);}//解锁public void unLock(String key){ if(smsRedisService.hasK.

2021-01-07 14:01:28 87

空空如也

空空如也

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

TA关注的人

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