个人总结
一新一意
这个作者很懒,什么都没留下…
展开
-
List 去除重复数据的 5 种正确姿势!
1、双重for循环去重 (不建议使用)for (int i = 0; i < list.size(); i++) {for (int j = 0; j < list.size(); j++) {if(i!=j&&list.get(i)==list.get(j)) {list.remove(list.get(j));}}}2、利用List的contains方法循环遍历,重新排序,只添加一次数据,避免重复:private static void removeDup原创 2020-11-19 11:50:44 · 338 阅读 · 0 评论 -
Session 、Cookie和token
Session 、Cookie和token一、session保存在服务端,可以用于记录客户状态;比如我们经常会用 Session 保存客户的基本信息、权限信息等;用户第一次登录之后,服务器就会创建一个 Session ,并将 SessionID 返回给浏览器,浏览器通常将其写入到 Cookie 中,这种 Cookie 也叫做 SessionCookie ,浏览器再次访问时,只需要拿着 Ses...原创 2020-01-16 16:24:28 · 255 阅读 · 0 评论 -
前后端分离的接口规范是什么?
一、为何要分离1、前端开发重度依赖开发环境,开发效率低。2、前后端职责依旧纠缠不清。3、对前端发挥的局限。关注点分离职责分离对的人做对的事更好的共建模式快速的反应变化二、开发流程1、后端编写和维护接口文档,在 API 变化时更新接口文档2、后端根据接口文档进行接口开发3、前端根据接口文档进行开发 + Mock平台4、开发完成后联调和提交测试5、Mock 服务器根据接口...原创 2019-12-06 10:30:13 · 1206 阅读 · 0 评论 -
Java中最大的数据结构:LinkedHashMap
Map 家族数量众多,其中 HashMap 和 ConcurrentHashMap 用的最多,而 LinkedHashMap 似乎则是不怎么用的,但是他却有着顺序。两种,一种是添加顺序,一种是访问顺序。LinkedHashMap 继承了 HashMap。那么如果是你,你怎么实现这两个顺序呢?1、如果实现添加顺序的话,我们可以在该类中,增加一个链表,每个节点对应 hash 表中的桶。这样,循环遍...原创 2019-11-25 09:50:44 · 291 阅读 · 0 评论 -
ConcurrentHashMap也有可能会造成CPU 100%的异常现象
1、JDK7A、JDK7中的HashMap在多线程环境下不止只有CPU 100%这一共怪异现象B、HashMap在多线程环境下它还可能造成插入的数据丢失JDK7中的HashMap在多线程环境下可能造成CPU 100%的现象,这个由于在扩容的时候put时产生了死循环,由此会在get时造成了CPU 100%。所以在并发情况下不能使用HashMap,这个问题在JDK8中的HashMap获得了解决。...原创 2019-10-29 10:21:56 · 1489 阅读 · 0 评论 -
hashmap解决冲突的方法
常用的序列化方式都有哪些?答:常用的序列化方式有以下三种:Java 原生序列化方式请参考以下代码:JSON 格式,可使用 fastjson 或 GSONJSON 是一种轻量级的数据格式,JSON 序列化的优点是可读性比较高,方便调试。我们本篇以 fastjson 的序列化为例,请参考以下代码:Hessian 方式序列化:Hessian 序列化的优点是可以跨编程语言,比 Ja...原创 2019-10-26 13:50:25 · 377 阅读 · 0 评论 -
List指定参数排序
for (TaskSetVo taskSetVo : taskSetVoList) {List task_list = taskSetVo.getTask_list();if(taskSetVo.getTask_type()==TaskTypeEnum.DAILY.getCode()){task_list.add(taskvo3);taskSetVo.setId(2);} else if...原创 2019-09-27 18:47:19 · 357 阅读 · 0 评论 -
mysql 数据类型
mysql 数据类型浮点型(float和double)char和varchar:1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(...原创 2019-09-12 10:01:48 · 82 阅读 · 0 评论 -
Redis集群
redis cluster方案Redis Cluster中,Sharding采用slot(槽)的概念,一共分成16384个槽,这有点儿类pre sharding思路。对于每个进入Redis的键值对,根据key进行散列,分配到这16384个slot中的某一个中。使用的hash算法也比较简单,就是CRC16后16384取模。Redis集群中的每个node(节点)负责分摊这16384个slot中的一...原创 2019-09-10 17:51:14 · 67 阅读 · 0 评论 -
redis存储方法
1、存储Stringprivate final String MusicStatu = “Statu:”;public void setSignProtocol(Integer userId, Integer status) { String key = MusicStatu + userId; ValueOperations<String, Integer> operatio...原创 2019-03-15 18:23:02 · 217 阅读 · 0 评论 -
我们为什么做分布式使用Redis?
一、为什么使用 Redis在项目中使用 Redis,主要考虑两个角度:性能和并发。如果只是为了分布式锁这些其他功能,还有其他中间件 Zookpeer 等代替,并非一定要使用 Redis。性能:如下图所示,我们在碰到需要执行耗时特别久,且结果不频繁变动的 SQL,就特别适合将运行结果放入缓存。这样,后面的请求就去缓存中读取,使得请求能够迅速响应。特别是在秒杀系统,在同一时间,几乎所有人都在点...原创 2019-03-21 14:46:12 · 128 阅读 · 0 评论 -
MySQL 学习笔记
数据库操作– 查看当前数据库SELECT DATABASE();– 显示当前时间、用户名、数据库版本SELECT now(), user(), version();– 创建库CREATE DATABASE[ IF NOT EXISTS] 数据库名 数据库选项数据库选项:CHARACTER SET charset_nameCOLLATE collation_name– 查看已有库...原创 2019-03-27 14:16:57 · 91 阅读 · 0 评论 -
你与阿里大神差在哪里?
Java多线程线程池的原理,为什么要创建线程池?线程的生命周期,什么时候会出现僵死进程;什么实现线程安全,如何实现线程安全;创建线程池有哪几个核心参数? 如何合理配置线程池的大小?synchronized、volatile区别、synchronized锁粒度、模拟死锁场景、原子性与可见性;JVM相关JVM内存模型,GC机制和原理;GC分哪两种;什么时候会触发Full GC?JVM里...原创 2019-04-10 18:33:38 · 88 阅读 · 0 评论 -
系统CPU飙高和频繁GC,我要怎么排查
1. Full GC次数过多相对来说,这种情况是最容易出现的,尤其是新功能上线时。对于Full GC较多的情况,其主要有如下两个特征:线上多个线程的CPU都超过了100%,通过jstack命令可以看到这些线程主要是垃圾回收线程通过jstat命令监控GC情况,可以看到Full GC次数非常多,并且次数在不断增加。首先我们可以使用top命令查看系统CPU的占用情况,如下是系统CPU较高的一个示...原创 2019-09-04 16:43:49 · 1007 阅读 · 0 评论 -
大厂在用的分库分表方案
一、数据库瓶颈不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。1、IO瓶颈第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分库和垂直分表。第二种:网络IO...原创 2019-09-04 16:54:17 · 107 阅读 · 0 评论 -
API 网关是什么鬼?
API网关接管所有的入口流量,类似Nginx的作用,将所有用户的请求转发给后端的服务器,但网关做的不仅仅只是简单的转发,也会针对流量做一些扩展。比如鉴权、限流、权限、熔断、协议转换、错误码统一、缓存、日志、监控、告警等,这样将通用的逻辑抽出来,由网关统一去做,业务方也能够更专注于业务逻辑,提升迭代的效率。通过引入API网关,客户端只需要与API网关交互,而不用与各个业务方的接口分别通讯,但多...原创 2019-09-04 17:05:05 · 351 阅读 · 0 评论 -
如何设计一个权限管理模块?
这样,就构造成“用户-角色-权限”的授权模型。在这种模型中,用户与角色之间、角色与权限之间,通常都是多对多的关系。如下图:如果用户的数量非常大的时候,就需要给系统的每一个用户逐一授权(分配角色),这是件非常繁琐的事情,这时就可以增加一个用户组,每个用户组内有多个用户,除了给单个用户授权外,还可以给用户组授权。这样一来,通过一次授权,就可以同时给多个用户授予相同的权限,而这时用户的所有权限就是...原创 2019-09-04 17:17:00 · 1077 阅读 · 1 评论 -
Spring Boot 集成 Swagger
1、添加依赖Maven依赖示例:io.springfoxspringfox-swagger2io.springfoxspringfox-swagger-ui2、在 Spring Boot 配置文件中添加配置参数。swagger:title: API标题description: API描述version: 1.0terms-of-service-url: http://...原创 2019-03-19 15:13:30 · 71 阅读 · 0 评论