3 渣渣洒泪成长记

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 3w+

实战建造者模式-示例根据不同画质加载不同场景画面

建造者模式:建造需要的产品,建造者模式侧重于一个对象构建很复杂,需要很多步骤,那么我们可以把对象的构建和最后的组装分离出来,就像汽车装修组件车厂,通过组合创建自己需要的完整的产品。下面是在网上找到的一个示例,觉得还是蛮一目了然,更清晰的理解建造者模式。假如我们有一款游戏哈,可能由于网络的原因导致画质加载不出来出现用户体验不好的情况,就比如打王者荣耀,他那个场景会有树,会有石头,天气,地面等等的可能。那遇到这种情况我怎么才能按照不同的画质加载不同的场景呢?来,首先咱们要有地图抽象接口!用来加载天气

2020-10-29 17:55:22

采用lua脚本做高可用分布式锁的优化

上一次博客用lua实现了分布式锁,这次来说说分布式锁在某种场景情况下会出现的问题,然后并解决。博客地址:LUA脚本实现分布式锁分布式锁可能会出现什么问题呢?假如a服务器设置锁超时时间是1分钟,这个服务器的执行任务超过锁的时间还没执行完,那么锁超时自己会释放。但是此时a服务器任务还没执行完哦 此时b进程进来执行了,发现没锁,加锁,然后b开始执行任务,那现在正好a的任务执行完了,a此时要释放锁,因为key是一样的,此时出现问题就是a把正在执行任务的b的锁给释放了,导致b处在无锁当中。 往复循

2020-10-26 14:34:47

聊一聊计算机源头-二进制

我们都知道,计算机的起源是数学中的二进制计数法。可以说,没有二进制,就没有如今的计算机系统,因为只有计算机才能读懂二进制,那什么是二进制呢?为什么计算机要使用二进制,而不是我们日常生活中的十进制呢?(十进制就是我们日常生活中常用的计数方法,一般用于人机交流用的),如何在代码中操作二进制呢?我们就从计算机认知的起源——二进制出发,学习一下。什么是二进制计数法?我们接触的数字从 0 到 9 这样 10 个计数组成,并采取进位制法,位在左,低位在右,从左往右书写。日常中我们广泛使用十进制计数法,十进制最容

2020-10-24 21:50:57

实战工厂模式-结合业务实现多种订单接口下单场景

工厂设计模式:顾名思义,就是现实中工厂生产模式的思想设计实现,咱们来实现个简单工厂模式,什么又是简单工厂模式呢,个人理解就是小工厂没有很大的规模,也没有复杂的工程,一个工厂生产几个产品流水线的模式,在代码里可能也会有这样的简单的需求,那今天我们就一起实现这个设计模式。我今天就来按照我在工作中接触的业务需求给大家实战工厂模式。我们商城下订单的操作需要对接财务系统,对接不是一种模式,1.直播下订单的情况,2.自营下订单的情况,3.供应商下订单的情况而调用对接财务系统基本需要这几种方法,订单保存-订单

2020-10-09 15:12:08

Java实现指定红包数量获取随机红包金额

最近要做的功能是用户发布短视频获取随机红包,针对红包领取会有规则限制,下面只说下红包领取的规则1.用户总共能够获取5个红包2.用户5个红包都领取完不能超过设置的最大金额3.每一次领取的金额最小值不能超过设置金额,最大值不能超过设置金额红包规则代码如下:采用二倍均数法获取领取红包数最大金额的范围:不能超过的最大获取的金额= 剩余红包金额 / 红包剩余数量 * 2注意:因为有金额计算,所以需要用BigDecimal,浮点会丢失金额准确性 /** * 发布视频-随机获.

2020-09-28 15:06:55

Java使用融云SDK,推送聊天信息

最近我们在做机器人业务,机器人进来会随机聊天,聊天功能要集成sdk推给融云,融云再把结果推给app,app解析展示在直播里或者其他聊天自己设定场景里。首先主播开播的聊天室创建我们是由app创建的,所以我的机器人的逻辑就是要调用融云的推送用户信息和聊天信息,其实我们都是聊天室消息的服务,因为怎么推送app已经定义好,哪个类型传过去就会放到聊天内容,哪个类型传过去就会对应展示用户都是已经定义好的。当然想要测试调通融云的服务也可使用融云通过的api调用测试。调用融云sdk推送消息代码 /*

2020-09-25 13:58:03

Java实现RSA+AES+签名进行加解密

最近的工作是用户需要提现操作,所以需要对接第三方打款接口,但是交互过程需要加解密这个复杂的过程,然后就梳理学习了一番,那就把RSA+AES混合加密形式并对数据进行加签讲一下,也会贴上相应的代码。1.RSA密钥RSA密钥很重要,开始加密的起源第一步。1.首先我们通过一些工具可以生成RSA密钥对,Java也有生成密钥对的代码,密钥对顾名思义就是一对钥匙,我自己平台生成RSA时会有公钥和私钥,我们会把自己平台的公钥交给第三方,私钥自己保存,同样第三方按照规则生成RSA公私钥,给我们平台公钥,自己保留私

2020-08-21 18:14:49

Java-Http远程调用超时/服务不可用调试

我相信大家基本都使用过http进行远程调用,httpclient也好,UrlConnection也好,Okhttp也好,其实都有网络异常时超时设置,但是我发现我有设置没有测试过超时异常情况,心血来潮,觉得测试一下,因为我目前用的是Okhttp,所以这里用下Okhttp请求来讲一下,其实其他工具都差不了多少,下面是okhttp设置超时的配置,我这里就拿get方法测试,所以这个工具类就只给下Get方式的这里注意超时时间设置的是5秒public class WebUtils { public

2020-08-13 16:04:20

springboot配置swagger2 header头部添加token参数

项目里有拦截器,这个拦截器要截取token进行校验,swagger测试发现没办法输入token值,然后就想能不能配置一下就让swagger测试的时候也能输入token,下面的配置就可以实现这样的操作。@Configurationpublic class SwaggerConfig { // swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等 @Bean public Docket createRestApi() { //

2020-08-10 11:35:43

springboot下tomcat性能优化-http请求压缩配置

某然的一天调用自己写的接口发现返回的数据有点多,而且还有可能会更多,我在想有没有对返回值进行压缩的方式,结果就有了这篇博客,我用的是springboot,所以就在application.yml配置就可以了,nginx也可以配置压缩的,方式也类似,在nginx的配置文件进行配置。server: compression: enabled: true min-response-size: 2048 mime-types: - text/html - app

2020-07-29 11:00:20

2020年7月java开发面经汇总

这一阵都没有更博客,忙着找工作呢,我找工作算上没时间去面,最后电话面试这种的总共6家,都是普通的公司,现已收到3家offer,但是面试过程中是发现这6家都还蛮中意我的,那在这里就谈谈我面试的情况把,从面试到确定应该就用了两周的时间,但是第一周从周一投的直到周五才有面试机会,所以那几天比较郁闷,猜想是不是疫情原因,因为我知道疫情原因多多少少影响找工作的困难性,最后就收到了一个面试邀请,在2020年7月17号下午面试了元支点,当时我知道是创业公司规模较小,所以打算练练手,面试过程中主要围绕项目开讲,然后面试官云

2020-07-27 15:45:31

集合Collection-set-List讲解

Collection是集合最上层的接口,List,Set和Queue都要继承它,那么顺嘴说一句Collections是啥呢,别背,嗯说的就是我,我之前就死记硬背的,但是我们的科目所有的理论最终都是java实现,所以还是查看Collections类就能明白了看Collections能排序看Collections还能实现同步map点进Collections发现有同的对集合操作的方法到这里我说那句Collection是集合的父类,Collections是对java集合的工具类,你应该明

2020-07-24 16:24:33

Orecle SQL查询每组最新的数据(可以多条)

今天的需求是表里有大量的重复字段,但是因为是每一次用户请求审核的结果,所以保存不能去重,只能取的时候按某一个id分组然后按时间获取最新的数据。那么用什么函数能解决这个问题呢,答案是rank () over ()是对结果进行排序怎么使用呢?SELECT * FROM (select ID,ruleid,createdate,rank () over (partition by ruleid order by createdate nulls last) as rnkfrom gsa_ru.

2020-07-07 15:34:13

一文带你熟悉Redis的事务机制

Redis也是支持事务的,相对来说是要比MySQL这样的数据库简单很多,那么接下来讲一下Redis的事务。1Redis事务1.1 MULTI与EXEC命令MULTI:中文是多的意思,没有明白为什么用这个单词来表示开始事务,MULTI相当于MySQL的beginEXEC:中文是执行的意思,相当于MySQL的commit以MULTI开始一个事务,然后再多个命令入队到事务中,最后由EXEC命令触发事务,一并执行事务中的所有命令。你可能想到那么ROBACK呢,Redis没有ROBACK,在执

2020-06-28 17:53:37

一看就会的java阻塞队列与非阻塞队列篇

1.队列介绍今天要来讲一下java里的队列,队列,顾名思义,排队的列,既然按排队形来做的话,生活中的银行排队啊,上车排队啊,都是先到先办理或者先上车,队列存取数据元列也一样,这就是先进先出,使用队列的规则是:使用队素时,数据元素只能从表的一端进入队列,另一端出队列。称进入队列的一端为“队尾”,出队列的一端为“队头”。数据元素全部从队尾陆续进队列,由对头陆续出队列。特点:先进先出效率:插入数据项和移除数据项的时间复杂度都是O(1),因为插入是一个一个而且只能在一端插入,取出也只能一个一个从

2020-06-26 12:03:53

剑指offer编程题--用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

首先看图大概知道考察的是队列和栈基本知识,需要知道jdk的stack的方法的使用,以及栈队列先进后出,队列先进先出的知识栈先进先出,队列先进后出stack1.push(1);stack1.push(2);stack1.push(5);上面这样顺序存储的化栈的输出是:521,队列就是:125栈的基本方法:push存数据,pop只能取出栈顶并移除顶部思考:调用push的时候stack1存1,2,5以后,再调用pop的时候,我们从stack1取,那肯定是5,2,1的顺序,然后存到st

2020-06-16 15:47:00

你不得不了解的JAVA线程池!

阿里巴巴规范说过,使用线程最好是用线程池,那就是说使用线程池有一定的好处,能够管理线程连接,开启用户使用的线程数,用完回归池中,可以让其他线程使用,减少连接线程的资源消耗。那么Java中有提供ThreadPoolExecutor线程池的类实现,Java也对其封装了Executors的四种静态使用方法,先来讲一下四种线程池的使用。1.newFixedThreadPoolfixed的意思就是固定, 见名知意就是创建一个固定容量的线程池,用户传要创建几个线程,那么所有的任务都由这几个线程来工作。代码示

2020-06-15 14:27:00

MySQL事务与锁机制

MySQL的事务特性都知道ACDI么,原子性,一致性,隔离性,持久性,那么今天来聊一下如何保证事务特性。1.事务并发的三大问题?1.1脏读什么是脏读?举个例子上图展示了事务A执行了查询操作,查询了id为1的数据,此时事务B执行了update的语句,但没有提交事务,此时事务A再次查询发现结果和之前查询的数据不一样,而事务B的update语句此时不一定成功也有可能会被回滚,所以没有真正写入磁盘里,这种就是读取了脏数据也叫脏读。1.2不可重复读什么又是不可重复读呢?举个例子..

2020-06-04 16:28:05

SpringBoot自动装载详解

自动装配前的了解阶段如果一上来就说这些注解是这样的,那个注解是干那个功能的,那么就会完全不理解,肯定会懵,所以咱们边实战边了解注解,带着思考看这些问题。首先在使用SpringBoot之前,我们还没有开始写业务代码,搭建框架可能就需要很多时间,假如SringMVC就需要添加依赖,考虑版本,还需要添加SpringMVC XML的文件等等等都需要配置,然后才能写业务代码,然后最后部署到tomcat步骤相当繁琐,相当麻烦。但是springboot的出现解决了spring默认添加的依赖版本问题,也不需要写

2020-05-29 17:38:04

如何在一个不知道长度的LinkedList中,找到LinkedList的中间元素?

不得不说这家面试题很有水准,回来以后搜相同的题目是搜不到信息的,回来以后对于这道题我就有点不明白的地方,是要我自己实现链表再查找中间元素,还是在已有的LinkedList中查找中间元素?所以刚开始的猜想我是直接用jdk已有的LinkedList来实现的。public static void main(String[] args) { LinkedDemo(); } public static void LinkedDemo() { LinkedList

2020-05-28 16:18:14

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv3
    阅读者勋章Lv3
    授予在CSDN APP累计阅读博文达到30天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。
  • 分享小兵
    分享小兵
    成功上传3个资源即可获取