后台开发
文章平均质量分 77
宫羽卫-银飞羽
主要从事与Java后台开发,目前就职与上海美团公司作为后台开发,擅长于多线程并发开发、数据库设计、属性Spring、mybatis等基础主流框架。
展开
-
切面打日志
@Slf4j@Aspect@Componentpublic class LogAspect { @Pointcut("execution(* com.sankuai.credit.caselibrary.server.service.impl.*.*(..))") private void service() { } @Around("service()||@annotation(com.sankuai.credit.caselibrary.server.aop..原创 2020-10-26 20:56:29 · 147 阅读 · 0 评论 -
jackson 序列化
package com.dianping.credit.prevention.admin.config;import com.fasterxml.jackson.core.JsonGenerator;import com.fasterxml.jackson.databind.*;import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;import com.fasterxml.jackson.databind.ser.BeanSer.原创 2020-10-26 13:54:42 · 494 阅读 · 0 评论 -
文件下载常见问题(乱码、文件白版、黑版、文件只有一半、文件打不开)
问题1:为什么我下载的图片只有半张。或者我下的文件打开报文件损坏。原因:你可能采用的是写法是:https://www.jianshu.com/p/0951086020d9byte[] buffer = new byte[inputStream.available() 这个是罪魁祸首。这个返回的仅仅是可读取字节数。并不一定是我们文件的大小。所以我们应该采用的方式是:byte[] b...原创 2020-03-13 10:42:57 · 832 阅读 · 0 评论 -
最简单的快排序
public static void quickSort(int[] array, int low, int high) { if (low >= high) { return; } int i, j, key; i = low; j = high; key = array[low]; while (i < j...原创 2020-02-14 16:55:34 · 158 阅读 · 0 评论 -
JsonUtils 弃用fastJson
场景:目前fastJson其实也是经常报漏洞,动不动要升级,确实是一个让人头疼的事情,所以,现在打算弃用fastJosn。自己写了个基础的常用的Java代码来专门做这个处理,后续会完善补充:@Slf4jpublic class JsonUtils { private static Gson gson = new Gson(); private static final o...原创 2020-01-16 10:17:00 · 506 阅读 · 0 评论 -
全局异常处理模版:@ControllerAdvice/@RestControllerAdvice
场景:在日常代码中,后端同学与前端同学交互过程中,异常的返回总是要遵循一套规定。后端的调用不同的rpc接口,异常的反馈总是不一样,所以要统一处理,下面是比较通用的模式:采用@ControllerAdvice异常通用处理方法:import com.dianping.credit.audit.disposal.exception.DisposeException;import com.di...原创 2020-01-16 09:52:04 · 342 阅读 · 0 评论 -
redis LRU 实现
真实面试中会让你写LUR算法,你可别搞原始的那个,那真TM多,写不完的,你要么怼上面这个,要么怼下面这个,找一个数据结构实现下Java版本的LRU还是比较容易的,知道啥原理就好了。public class LRUCache<K,V> extends LinkedHashMap<K,V> { private final int cash_size; ...原创 2020-01-09 20:40:02 · 155 阅读 · 0 评论 -
关于JAVA8 List 去除重复方法
学习地址:https://www.jianshu.com/p/34b338059be2 https://juejin.im/post/5cc124a95188252d891d00f2#heading-7代码写法:public static void main(String[] args) { List<Intelligen...原创 2019-11-12 14:46:32 · 319 阅读 · 0 评论 -
CompletableFuture学习
学习地址:https://colobu.com/2016/02/29/Java-CompletableFuture/CompletableFuture类实现了CompletionStage和Future接口:创建方法:public static CompletableFuture<Void> runAsync(Runnable runnable)public stati...原创 2019-11-11 17:12:22 · 221 阅读 · 0 评论 -
redis学习笔记
redit允许的数据结构String、Hash、List、Set、SortedSet。相关文章:https://juejin.im/post/5db66ed9e51d452a2f15d833BloomFilter原理(布隆过滤器)布隆过滤器(英语:Bloom Filter)是1970年由一个叫布隆的小伙子提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于...原创 2019-11-08 17:59:28 · 160 阅读 · 0 评论 -
常规数据迁移接口设计
需求描述:在一份mysql数据库中存在一张旧数据表,期望将老数据中的数据迁移到一张新的数据库表中。并且在迁移过程中做一些逻辑操作。方案一:先迁移数据在根据新数据进行逻辑操作方案二:在迁移新数据的同时进行逻辑操作逻辑操作的设计:1.先将数据分批次取出,每一个数据创建一个线程。对于抛出异常的线程数据,进行记录,并且打印到日志。2.接口设计采用一个密钥,和关键词list数据。...原创 2019-11-05 16:20:41 · 990 阅读 · 0 评论 -
常见项目结构设计
1.项目划分项目纬度总体划分主要是分为:api包:其内部包括:bean包、exception包、api包exception包:主要是包括异常码、对外的异常code。个人认为整个项目、甚至整个部门都公用一套异常码。至少基础的异常码是相同的。异常码的定义可以设计为:基础异常码+业务异常码common 包:主要是通用的功能。一般有:缓存包、异常包、json包、kafka、...原创 2019-11-04 11:40:06 · 1260 阅读 · 0 评论 -
Java开发知识掌握
JAVA架构师内功心法做任何事之前,需要先打好基础。想入行Java,就必须掌握JavaSE基础;其次是各种设计模式都要会,常用的就二十几种,像单例模式、工厂模式等等,一定要运用得滚瓜烂熟;然后就是JavaWeb,这也是基本技能,核心有哪些,如何去运用,这个要在平时工作之中反复训练,提升熟练度。 Java架构师实战招式理论基础打好后,项目实战尤为重要,看你们公司团队的氛围,一般都会有...转载 2019-01-17 14:53:27 · 270 阅读 · 0 评论 -
为什么使用 Redis 及其产品定位
为什么使用 Redis 及其产品定位田琪阅读数:541142011 年 7 月 19 日话题:Java.NETRubyMySQL架构DevOps语言 & 开发AI传统 MySQL+ Memcached 架构遇到的问题实际 MySQL 是适合进行海量数据存储的,通过 Memcached 将热点数据加载到 cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量...转载 2019-01-17 17:22:53 · 135 阅读 · 0 评论 -
查看jvm常用命令
jinfo:可以输出并修改运行时的java 进程的opts。 jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。 jstat:一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。 jmap:打印出某个java进程(使用pid)内存内的所有'对象'的情况(如:产生那些对象,及其数量)。 jconsol...转载 2019-01-28 16:37:48 · 231 阅读 · 0 评论 -
类目中城市,省份可多选情况下数据库设计
需求背景:在很多场景中常见的情况:选择一些城市,城市是多选,省份是多选,且城市和省份是有层级关系。主要需求是,当选择一个城市范围,获取与该范围有交集的所有返回对象。例子:选择江苏,得查询数据库总江苏-(南京、扬州)、江苏、江苏-(南京)等。这个需求中层级只有两层、存在一对多的关系、需要根据ID去查询一棵树。解决方案:在sql反模式书中概括了常用解决该方案方法解决:参考:...原创 2019-01-29 15:23:47 · 1767 阅读 · 10 评论 -
关于数据库字段模糊查询
原始需求:数据库中存储了很多微信名称然后得进行模糊查询。Q1:为什么不进行一对多的设计,可以采用一对多的设计?A:有时候仅仅为了一个属性进行建立一张表,会将表的数量变多,在插入和查询时候进行大量的操作。数据库demo设计:CREATE TABLE `WeNickName` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMME...原创 2019-01-30 11:49:48 · 6506 阅读 · 0 评论 -
java中方法的参数传递机制
自己写了一段代码:public class main { public static void testPara(Integer value ){ value++; } public static void test3(Student student){ student.setAge(1); } public static void main(...原创 2019-03-19 14:41:19 · 167 阅读 · 0 评论 -
List去重复方法总结
1.情况1,对于基础变量,采用set方式进行处理,demo:public List<String> hitZongBao(List<String> hitRules) { Set<String> result = new HashSet<>(); hitRules.forEach(hitRule -> {...原创 2019-03-18 10:32:50 · 568 阅读 · 0 评论 -
要想搞爬虫,看这篇就够了-------------记一次微博爬虫系统设计与实现
需求:用户喜欢在微博上发布*****的问题,但是由于人工处理的时效性原因,没法及时有效的对其中负面的信息做发现和回复,影响用户对于*******的认知感受。微博爬取的实现代码:/** * 根据不同关键字查询 * 根据URL获取网页信息 * * @param Url * @return */private ResponseEntity<String> get...原创 2019-04-16 15:11:37 · 916 阅读 · 0 评论 -
Mac/Linux/Centos终端中上传文件到Linux云服务器
1、mac上传文件到Linux服务器scp 文件名 用户名@服务器ip:目标路径如:scp /Users/test/testFile test@www.linuxidc.com:/test/2、mac上传文件夹到Linux服务器,与上传文件相比多加了-rscp -r 文件夹目录 用户名@服务器ip:目标路径如:scp -r /Users/test/testFolder te...转载 2019-05-10 14:32:26 · 243 阅读 · 0 评论 -
记一次远程代码没有覆盖导致浪费时间事件
事件发生原因:某次负责项目要迁移项目的某个接口,所以用git reset --hard origin/master代码,将代码强制与远程代码同步到一致,结果是线上代码和自己本地代码不一致,还是之前的老代码,在发布的时候将老代码错误的以为是现在最新的代码。之前老代码当时有对其他接口进行变更,对接口名进行权限管理,所以将代码发布到新环境时候,代码直接报错:com.dianping.pigeon...原创 2019-05-30 11:23:58 · 126 阅读 · 0 评论 -
springMVC中的注解@RequestParam与@PathVariable的区别
@PathVariable绑定URI模板变量值@PathVariable是用来获得请求url中的动态参数的@PathVariable用于将请求URL中的模板变量映射到功能处理方法的参数上。//配置url和方法的一个关系@RequestMapping("item/{itemId}")/* @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,类似于s...转载 2019-05-30 11:54:47 · 137 阅读 · 0 评论 -
在美团工作14个月
时间过的好快。。。。原创 2019-06-20 19:03:53 · 605 阅读 · 3 评论 -
魔都记----在美团工作
在上海美团点评公司工作100天未到,所以写点博客来纪念下在美团点评工作感觉。下面是2017年到2016年国内互联网的市场市值排名。“美团大众点评”由美团与大众点评于2015年10月8日合并成立。业务结构来看,美团点评拥有到店餐饮、酒店旅游、在线外卖和移动出行四大板块,其中外卖是公司估值最重要的支撑。其主要历程是:2015年,美团和大众点评合并。据美团点评CEO王兴在2018年2月份披露的数...原创 2018-07-04 15:23:12 · 5883 阅读 · 8 评论 -
并发锁的总结
前言Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。下面给出本文内容的总体分类目录: 1. 乐观...转载 2018-12-26 10:22:34 · 8640 阅读 · 2 评论 -
JSON 处理map属性展开的问题
package com.dianping.credit.bean;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.annotation.JSONField;import com.fasterxml.jackson.annotation.JsonAnyGetter;import com.fasterxml.jack...原创 2018-12-25 11:49:01 · 1105 阅读 · 0 评论 -
缓存穿透、缓存击穿和缓存雪崩实践
我们使用缓存的主要目是提升查询速度和保护数据库等稀缺资源不被占满。而缓存最常见的问题是缓存穿透、击穿和雪崩,在高并发下这三种情况都会有大量请求落到数据库,导致数据库资源占满,引起数据库故障。今天我主要分享一下layering-cache缓存框架在这个三个问题上的实践方案。概念缓存穿透在高并发下,查询一个不存在的值时,缓存不会被命中,导致大量请求直接落到数据库上,如活动系统里面查询一个不...转载 2019-01-03 15:14:01 · 154 阅读 · 0 评论 -
2018记面美团同学的焦虑
2018年九月,说实话是很多学弟学妹将要步入社会的前站,在这段时间中,我收到好多学弟学妹在面美团时候的焦虑。具体场景是:2018.9月,美团公司正在启动2019年校招聘。每年都是十几号开始,其实美团招聘的流程和其他公司的招聘查不到,都是以考察基本功为主。就像我师傅说的,现在的简历都差不多,会一到两门语言,学习了计算机基本的知识如数据库、编译原理、网络编程等之类的。然后就是会有一些项目经历,有的...原创 2018-09-30 17:49:13 · 311 阅读 · 0 评论 -
ref注解@Autowired
@Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 通过 @Autowired的使用来消除 set ,get方法。在使用@Autowired之前,我们对一个bean配置起属性时,是这用用的<property name="属性名" value=" 属性值"/> 1 .<bean id="batchReviewRecover" c...原创 2018-09-05 17:36:01 · 586 阅读 · 0 评论 -
java中方法的参数传递机制
java中方法的参数传递机制 问:当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是该对象的引用一个副本。指向同一个对象,对象的内容可以在被调用的方法中改变,但对象的引用(不是引用的副本)是永远不会改变的。...转载 2018-08-29 11:47:48 · 116 阅读 · 0 评论 -
HashMap源码注解tableSizeFor()
源码:static final int tableSizeFor(int cap) { int n = cap - 1; n |= n >>> 1; n |= n >>> 2; n |= n >>> 4; n |= n >>> 8; n |= n >>&g原创 2018-08-01 17:40:02 · 633 阅读 · 0 评论 -
Java中Math.pow()的用法
1.问题描述 153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。输出格式 按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。 public class Main { static int a ,b ,c; public static void funct...转载 2018-07-26 17:16:28 · 9775 阅读 · 0 评论 -
Intger Long Int long基础类型比较
public static void main(String[] args) { Map<String,String> map = new HashMap<String, String>(); String pp = map.get(""); System.out.println(pp); long p = 5L; int ppu ...原创 2018-07-26 11:54:32 · 262 阅读 · 0 评论 -
JAVA序列化
深入理解JAVA序列化 如果你只知道实现 Serializable 接口的对象,可以序列化为本地文件。那你最好再阅读该篇文章,文章对序列化进行了更深一步的讨论,用实际的例子代码讲述了序列化的高级认识,包括父类序列化的问题、静态变量问题、transient 关键字的影响、序列化 ID 问题。在笔者实际开发过程中,就多次遇到序列化的问题,在该文章中也会与读者分享。引言 将Java对象序...转载 2018-07-20 16:56:06 · 142 阅读 · 0 评论 -
git上传merge IDEA
1.git commit 点击项目,右键git,点击commit2.右键点击pull,下拉你要合并的分支,点击确定3.存在冲突会在目标栏框中显示4.消除confilct,然后点击add,将冲突文件添加到上传文件中5.在点击git commit 上传6点击git push 文件上传到分支上...原创 2018-07-18 15:00:10 · 343 阅读 · 0 评论 -
记一次定位查询服务错误过程
美团点评后台定位服务查询:1.cat大盘查看是否存在failure服务 定位出FindPoisByIdsHandler.findPoisByIdsV2服务失败效果2.根据服务名代码全体搜索失败代码全局定位失败代码为resultDO = mdcApiPoiClient.findPoisByIdsV2(shopIdList, fields);调用者为mdcApiPo...原创 2018-07-18 12:06:06 · 205 阅读 · 0 评论 -
计算机目前九种编程语言大对比
图解九种主流编程语言,从Python、Java到Objective-C。码农世界,哪种才是最好的编程语言?这9张信息图囊括了九种主流编程语言:Python、Java、C、C++、JavaScript、C#、Ruby、PHP以及Objective-C。对于每种编程语言,大家都能够看到由其打造的顶级应用成果,相关职位的平均薪酬(美国)以及该语言的优势与弊端。 ...转载 2018-07-23 16:01:11 · 98566 阅读 · 10 评论 -
巧用Abstract类对象解决多线程不同业务场景
业务场景描述:业务场景A和业务场景B都单个实现某查询功能。A查询A业务订单详情,B查询B业务订单的业务详情。问题需求,编写一个线程池同时查询A或者B业务的多个详情。解决方案:接口A:Class AInte{public List getServelarDetail(List<Integer> Id);public Bean getDetail(Integer I...原创 2018-11-27 15:58:21 · 231 阅读 · 0 评论 -
序列化问题,重复定义对象
hessian的序列化问题最近在项目中发现一个很奇怪的问题,将ProductDraftDO对象传输到远程服务上,远程服务获取的ProductDraftDO对象的ActionTrace为null。而在传输之前明明是有值的。ActionTrace类已经实现了序列化接口,它的所有属性都是可序列化的。 最后查明了原因,是序列化的问题。由于项目中的远程服务用dubbo实现,Hessian是dubbo的...转载 2018-11-28 11:04:14 · 412 阅读 · 0 评论