自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

KiraRabbit

一生二,二生三,三生万物。

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

原创 2022-09-题

1、编程:假设有一个A站点,每次登陆的时候都会记录用户的登陆信息日志, 对象类型是User,有3个字段: userId, userName, loginTime 需求:统计最近10天(每天约10亿条日志)登陆最频繁的10个用户, 排序并输出出这10个用户各登陆多少次 要求:a. 不可直接使用SQL统计,请使用JAVA代码编写 b. 功能完备,逻辑正确 2、编程:实现一个生产者消费者模式.

2021-09-13 12:42:45 122

原创 数据结构ing

数组在内存中,数组是一块连续的区域链表数据需要一块连续的内存空间来存储,对内存的要求比较高。而链表恰恰相反,它并不需要一块连续的内存空间,它通过“指针”将一组零散的内存块串联起来使用。优劣数组的优点随机访问性强查找速度快数组的缺点插入和删除效率低可能浪费内存内存空间要求高,必须有足够的连续内存空间。数组大小固定,不能动态拓展链表的优点插入删除速度快内存利用率高,不会浪费内存大小没有固定,拓展很灵活。链表的缺点不能随机查找,必须从第一个开始遍历,查找效率低...

2021-09-06 14:43:27 129

原创 Java设计模式

单例模式工厂模式策略模式概述:策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。通用接口package com.joyreach.download.strategy.apkMarket;public interface IApkMarketStrategy { String downloadApk();}策略1:package com.joyreach.download.strategy.apkMarket.impl;import

2021-09-06 14:42:43 122

原创 三次握手和四次挥手的理解

网络协议网络协议是什么?在计算机网络要做到有条不紊地交换数据,就必须遵守一些事先约定好的规则,比如交换数据的格式、是否需要发送一个应答信息。这些规则被称为网络协议。网络协议分层为了使不同体系结构的计算机网络都能互联,国际标准化组织 ISO 于1977年提出了一个试图使各种计算机在世界范围内互联成网的标准框架,即著名的开放系统互联基本参考模型 OSI/RM,简称为OSI。OSI 的七层协议体系结构的概念清楚,理论也较完整,但它既复杂又不实用,TCP/IP 体系结构则不同,但它现在却得到了非常广泛的应用

2021-09-06 14:41:37 85

原创 如何保证高并发下的幂等性

前言幂等性就是同一个操作执行多次,产生的效果一样。如 http 的 get 请求,数据库的 select 请求就是幂等的在分布式系统中,保证接口的幂等性非常重要,如提交订单,扣款等接口都要保证幂等性,不然会造成重复创建订单,重复扣款,那么如何保证接口的幂等性呢?前端保证幂等性的方法防止重复点击用户点击按钮后将按钮置灰,或者显示 loading 状态提交页面重定向(RPG模式)即 Post-Redirect-Get,当客户提交表单后,去执行一个客户端的重定向,转到提交成功页面。避免用户按 F5

2021-09-06 14:40:25 128

原创 垃圾回收算法

垃圾回收算法标记清除标记-清除算法将垃圾回收分为两个阶段:标记阶段和清除阶段。在标记阶段首先通过根节点(GC Roots),标记所有从根节点开始的对象,未被标记的对象就是未被引用的垃圾对象。然后,在清除阶段,清除所有未被标记的对象。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lmVRUa6I-1630910318796)(https://i.loli.net/2020/10/21/41zyZMjVOl728Ci.png)]适用场合:存活对象较多的情况下比较高效

2021-09-06 14:39:10 67

原创 缓存常见问题

缓存穿透定义当查询Redis中没有的数据时,该查询会下沉到数据库层,同时数据库层也没有该数据,当这种情况大量出现或被恶意攻击时,接口的访问全部透过Redis访问数据库,而数据库中也没有这些数据,我们称这种现象为"缓存穿透"。缓存穿透会穿透Redis的保护,提升底层数据库的负载压力,同时这类穿透查询没有数据返回也造成了网络和计算资源的浪费。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L2j3Hww1-1630910216339)(https://i.loli.net/2

2021-09-06 14:38:21 87

原创 工具类、包装类、abstract和模板方法

工具类存放了某一类事物的工具方法的类.工具类存放的包:工具包(util,utils,tool/tools,helper,helpers),存放工具类.工具类如何设计: 工具在开发中其实只需要存在一份即可.1): 如果工具方法没有使用static修饰,说明工具方法得使用工具类的对象来调用.此时把工具类设计为单例的.2): 如果工具方法全部使用static修饰,说明工具方法只需要使用工具类名调用即可.此时必须把工具类的构造器私有化(防止创建工具类对象调用静态方法).一般的,首选第二种,简单. 在

2021-09-06 14:36:39 2375

原创 分布式锁的三种实现方式

前言在分布式的环境中,变量A存在JVM1、JVM2、JVM3三个JVM内存中(这个变量A主要体现是在一个类中的一个成员变量,是一个有状态的对象,例如:UserController控制器中的一个整形类型的成员变量),如果不加任何控制的话,变量A同时都会在JVM分配一块内存,三个请求发过来同时对这个变量操作,显然结果是不对的!即使不是同时发过来,三个请求分别操作三个不同JVM内存区域的数据,变量A之间不存在共享,也不具有可见性,处理的结果也是不对的!分布式锁应该具备的条件在分布式系统环境下,一个方法在同

2021-09-06 14:35:36 106

原创 分布式事务

XA、2PC、TCC、Saga、阿里Seata为什么不用XA性能(阻塞性协议,增加响应时间、锁时间、死锁);数据库支持完善度(MySQL 5.7之前都有缺陷);协调者依赖独立的J2EE中间件(早期重量级Weblogic、Jboss、后期轻量级Atomikos、Narayana和Bitronix);运维复杂,DBA缺少这方面经验;并不是所有资源都支持XA协议;大厂懂所以不使用,小公司不懂所以不敢用。准确讲XA是一个规范、协议,它只是定义了一系列的接口,只是目前大多数

2021-09-06 14:34:30 68

原创 布隆过滤器

使用场景布隆过滤器用于在海量数据中检索一个元素是否在一个集合中,并且他的空间效率和查询时间都远远超过大部分的数据结构。但其仍然存在些缺陷并且是难以修复的。最重要的一点,是能够容许些许误差。不存在漏报(False Negative),即某个元素在某个集合中,肯定能报出来。但是可能存在误报(False Positive),即某个元素不在某个集合中,可能会被误报为存在,这是由hash函数的性质所决定的。能够预先知悉大致不重复数据量规模和可接受错误率,这点其实挺重要的,决定了bitmap的大小(直接决定内存大

2021-09-06 14:33:42 74

原创 解压工具类

解压工具类package com.rabbit.download.util;import java.io.File;/** * @Author: * @Date: 2020/5/11 21:17 */public class ZipUtil{ private static final int buffer = 2048; /** * 解压Zip文件 * @param path 文件目录 */ public static void u

2020-08-23 02:22:46 126

原创 Nginx upstream的5种权重分配方式

Nginx upstream的5种权重分配方式一、关于Nginx的负载均衡描述:负载均衡用于从“upstream”模块定义的后端服务器列表中选取一台服务器接受用户的请求。一个最基本的upstream模块是这样的,模块内的server是服务器列表:二、Nginx负载均衡策略负载均衡用于从“upstream”模块定义的后端服务器列表中选取一台服务器接受用户的请求。一个最基本的upstream模块是这样的,模块内的server是服务器列表:#动态服务器组 upstream dynamic_z

2020-08-23 02:21:56 1412

原创 2020-08-23

package com.rabbit.flush.controller;import java.util.ArrayList;import java.util.List;import java.util.Random;public class test { public static void main(String[] args){ List<WeightCategory> categoryList=new ArrayList<&

2020-08-23 02:21:10 144

原创 Stream流 转换

Stream流List -->map<String, String>Map<String, String> map = list.stream().collect(Collectors.toMap(Person::getName, Person::getWork));List -->map<String, T> 操作属性 Map<String, String> map = list.stream().collect(Collectors.

2020-08-23 02:19:52 287

原创 Java 根据url异步下载文件

maven依赖<dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.5.0</version></dependency>package com.caiji.apkdownload;import okhttp3.*;import org.sl

2020-08-23 02:19:26 2027

原创 工具类、包装类、abstract和模板方法

工具类存放了某一类事物的工具方法的类.工具类存放的包:工具包(util,utils,tool/tools,helper,helpers),存放工具类.工具类如何设计: 工具在开发中其实只需要存在一份即可.1): 如果工具方法没有使用static修饰,说明工具方法得使用工具类的对象来调用.此时把工具类设计为单例的.2): 如果工具方法全部使用static修饰,说明工具方法只需要使用工具类名调用即可.此时必须把工具类的构造器私有化(防止创建工具类对象调用静态方法).一般的,首选第二种,简单. 在

2020-08-23 02:18:04 471

原创 各种注解

@ResponseBodyresponse body 中,一般在异步获取数据时使用【也就是AJAX】,在使用 @RequestMapping后,返回值通常解析为跳转路径,但是加上 @ResponseBody 后返回结果不会被解析为跳转路径,而是直接写入 HTTP response body 中。 比如异步获取 json 数据,加上 @ResponseBody 后,会直接返回 json 数据。作用:把方法的返回值转换为json返回@Component spring扫描这个组件,将这个注解的类初始化为be

2020-08-23 02:16:55 177

原创 Jdk动态代理和Cglib动态代理

Jdk动态代理和Cglib动态代理ICustomerService接口public interface ICustomerService { void save(); int find();}CustomerServiceImpl实现类public class CustomerServiceImpl implements ICustomerService { @Override public void save() { System.out.p

2020-08-23 02:16:21 108

翻译 spring AspectJ的Execution表达式

在使用spring框架配置AOP的时候,不管是通过XML配置文件还是注解的方式都需要定义pointcut"切入点"例如定义切入点表达式 execution (* com.sample.service.impl….(…))execution()是最常用的切点函数,其语法如下所示:整个表达式可以分为五个部分:1、execution(): 表达式主体。2、第一个*号:表示返回类型,号表示所有的类型。3、包名:表示需要拦截的包名,后面的两个句点表示当前包和当前包的所有子包,com.sample.ser

2020-08-23 02:15:31 123

原创 策略模式的实现demo

策略模式概述:策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。通用接口package com.joyreach.download.strategy.apkMarket;public interface IApkMarketStrategy { String downloadApk();}策略1:package com.joyreach.download.strategy.apkMarket.impl;import com.joyre

2020-08-23 02:13:30 172

原创 StringRedisTemplate常用方法

stringRedisTemplate.opsForValue().set(“test”, “100”,60*10,TimeUnit.SECONDS);//向redis里存入数据和设置缓存时间stringRedisTemplate.boundValueOps(“test”).increment(-1);//val做-1操作stringRedisTemplate.opsForValue().ge...

2020-01-16 14:26:51 818

原创 include refid ="base_column_list" 详解

include refid =“base_column_list” 详解mybatis 之数据库 include refid ="base_column_list"详解。用来封装SQL语句, 来调用,如果用了refid="base_column_list"则:1、首先定义一个sql标签,一定要定义唯一id字段名1,字段名22、然后通过id引用<select id="selectAl...

2019-12-29 23:22:53 9570 4

原创 datalist效果实现

datalist效果实现,包括模糊搜索,自动补全,下拉选项<input style="width: 150px;height: 30px;" id="select-sdkInt-group" list="sdkIntList" placeholder="SdkInt"><datalist id="sdkIntList" style="display: none;">...

2019-11-25 23:39:24 424

原创 Lombok常用注解

注解说明备注@Setter生成setter方法,final变量不包含@Getter生成getter方法,final变量不包含@NoArgsConstructor生成空参构造@AllArgsConstructor生成全部参数构造@RequiredArgsConstructor将标记为@NoNull的属性生成一个构造器如果运行中标记为@...

2019-11-17 21:56:37 108

原创 代码格式规范(菜就要遵守规则)

一、java命名规范1、项目名全部小写2、包名全部小写3、类名首字母大写,若类名由多个单词构成,每个单词首字母大写,即大驼峰命名,包和类名可以不一样public class HelloWorld(){ }4、变量名、方法名首字母小写,若其由多个单词构成,每个单词首字母大写,即小驼峰命名法shift+alt+u 快速转换驼峰式 插件已下好public void sayHello(){ ...

2019-11-17 21:44:49 444

原创 mysql分时段查询

```sql#查询今天24小时 (按小时段) SELECT * FROM tableName where TO_DAYS(create_time) = TO_DAYS(NOW()) GROUP BY DATE_FORMAT(create_time,'%H'); ##查询昨天24小时(按小时段) S...

2019-11-17 21:42:49 282

原创 idea快捷键(windows) idea中的设置不要换eclipse的!!!

平时常用的快捷键Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Shift+Click,可以关闭文件Ctrl+[ OR ],可以跑到大括号的开头与结尾Ctrl+F12,可以显示当前文件的结构Ctrl+F7,可以查询当前元素在当前文件中的引用,然后按 F3 可以选择Ctrl+N,...

2019-10-19 18:01:25 232

原创 Mac系统下 Mysql的操作命令

启动MySQL服务(也可以在系统偏好设置-Mysql中开启服务)sudo /usr/local/mysql/support-files/mysql.server start停止MySQL服务(也可以在系统偏好设置-Mysql中停止服务)sudo /usr/local/mysql/support-files/mysql.server stop重启MySQL服务sudo /u...

2019-10-13 21:40:18 124

原创 Mac系统下,mysql忘记密码怎么办?

Mac系统下,mysql忘记密码怎么办?在系统偏好 中,中止MYSQL服务.;cd/usr/local/mysql-…/binsudo ./mysqld_safe–skip-grant-tables登录MySQL;mysql置空root用户的密码;mysql>update user set password=PASSWORD(‘RNNrnn123456’) where us...

2019-10-13 21:37:20 191

空空如也

空空如也

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

TA关注的人

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