
java
文章平均质量分 53
JAVA拾贝
纵横捭阖,冷心为上
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
算法实战-Hacker News内容热度推荐算法
基于Hacker News的内容热度推荐算法来推荐网站热点数据原创 2022-06-29 11:24:38 · 1356 阅读 · 0 评论 -
基于Hacker News的内容热度推荐算法
近期公司产品需要做一个内容推荐的功能,但限于人员和能力有限,经过调研,确定了一个简单相对我们可以实现的方案。一篇文章产生,随着用户浏览、点赞、分享、收藏、评论,热度逐渐攀升,进入榜单到推荐页面,但随着时间的推移,这篇文章也不能永久的霸占榜单,让后面新产生的文章没有机会到推荐页,因此也就有了时间衰减的因素,从而可以让榜单能够动态的变化,除了上面基本的原理以外,还需要人为干预因素,通过加权或者降权的方式来影响排名。......原创 2022-06-28 22:40:01 · 1295 阅读 · 0 评论 -
websocket开启https
前段时间无聊发了篇博客,java实现tail -f 日志实时输出到页面实现了日志的实时输出,今天打算配置下域名,让大家直接访问查看效果,结果发现配置ssl证书后,https无法输出了!度娘后发现要换wss,地址变化ws://ip:8080/log -> wss://域名/lognginx配置upstream tail {# ip_hash; server ip:8080;}server { server_name tail.a..原创 2020-12-23 16:08:36 · 4349 阅读 · 0 评论 -
基于mybatis实现流式查询
什么是流式查询?流式查询指的是查询成功后不是返回一个集合而是返回一个迭代器,应用每次从迭代器取一条查询结果。流式查询的好处是能够降低内存使用。如果没有流式查询,我们想要从数据库取 1000 万条记录而又没有足够的内存时,就不得不分页查询,而分页查询效率取决于表设计,如果设计的不好,就无法执行高效的分页查询。因此流式查询是一个数据库访问框架必须具备的功能。⚠️流式查询的过程当中,数据库连接是保持打开状态的,因此要注意的是:执行一个流式查询后,数据库访问框架就不负责关闭数据库连接了,需要应用.原创 2020-12-23 09:23:25 · 6419 阅读 · 0 评论 -
Elasticsearch实战
第一课时:Elasticsearch、Kibana安装原创 2020-12-02 09:06:50 · 18538 阅读 · 0 评论 -
@FastJsonView优雅的接口响应
看过我之前的博客的人应该知道我定义了一个基于fastjson的接口过滤组件接口返回大量无用或者敏感字段怎么办?;其实fastjson已经有封装好的实现,今天给大家演示下:pom <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fa原创 2020-12-11 14:07:03 · 8924 阅读 · 0 评论 -
接口返回大量无用或者敏感字段怎么办?
背景 地点:xxxx公司会议室 前端A: 你们后端接口返回的json太复杂啦!我这例只需要用户的真实姓名和年龄就可以了,结果你们返回了我一大串,好几十个字段…… 前端B: 是呀!是呀!身份证信息是敏感的,这里也不需要用,你们竟然页返回了,还有密码都返回来!幸亏是加密的~ 后端小菜:多余的字段你们不要管就好啦,又不影响你们~,实在不行我拷贝个新对象给你!思考 ????接口传输大量无用数据占用带宽资源、影响性能、甚至泄漏敏感信息!拷贝新对象...原创 2020-11-24 14:37:32 · 29021 阅读 · 0 评论 -
常用设计模式-模板方法模式
模式简介模板方法(Template Method)模式的定义如下:定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。它是一种类行为型模式。该模式的主要优点如下。它封装了不变部分,扩展可变部分。它把认为是不变部分的算法封装到父类中实现,而把可变部分算法由子类继承实现,便于子类继续扩展。 它在父类中提取了公共的部分代码,便于代码复用。 部分方法是由子类实现的,因此子类可以通过扩展方式增加相应的功能,符合开闭原则。该模式的主原创 2020-11-23 11:19:20 · 27199 阅读 · 0 评论 -
java上传本地jar包到maven中央仓库
Step1前往https://issues.sonatype.org/secure/Dashboard.jspa 注册JIRA账号,按提示完善个人信息。Step2点击创建按钮来创建一个新的 issues 工单Step3等待一段时间就会收到一封邮件,内容如下:意思就是询问你该 GroupId 设置的域名是否为你自己所拥有,如果是就需要证明一下,两种方法1、设置github page当做域名。 2、在域名 DNS 解析中添加一条类型为 Txt 的记录。由...原创 2020-11-23 09:25:27 · 27219 阅读 · 0 评论 -
常用设计模式-单例模式
模式简介保证一个类仅有一个实例,并提供一个访问它的全局访问点。实际应用场景Spring中的BeanUML类图talk is cheap, show me the codepackage com.aeert.design.singleton;import lombok.NoArgsConstructor;/** * 懒汉,线程不安全 * 这种写法lazy loading很明显,但是致命的是在多线程不能正常工作。 **/@NoArgsConstructorp.原创 2020-11-20 16:32:32 · 29694 阅读 · 0 评论 -
常用设计模式-工厂方法
模式简介工厂模式主要是为创建对象提供了接口。工厂模式按照《Java与模式》中的提法分为三类:1. 简单工厂模式(Simple Factory)2. 工厂方法模式(Factory Method)3. 抽象工厂模式(Abstract Factory)工厂方法模式是对简单工厂模式的抽象升级,定义一个用于创建对象的接口,让子类决定实例哪个类。工厂方法使一个类实例化延迟到其子类。与简单工厂模式相比,简单工厂模式使得工厂的负担过重,而且每次添加新产品,都需要修改工厂,不符合开闭原则。工厂方法模式原创 2020-11-19 14:12:05 · 30735 阅读 · 0 评论 -
常用设计模式-抽象工厂
模式简介工厂模式主要是为创建对象提供了接口。工厂模式按照《Java与模式》中的提法分为三类:1. 简单工厂模式(Simple Factory)2. 工厂方法模式(Factory Method)3. 抽象工厂模式(Abstract Factory)工厂方法模式,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。在抽象工厂模式中,接口是负责创建一原创 2020-11-19 17:18:48 · 30613 阅读 · 0 评论 -
常用设计模式-策略模式
模式简介它定义了算法家族,分别封装起来,让它们间可以相互替换,此模式让算法的变化,不会影响到使用算法的用户。模式实现环境类(Context)用一个ConcreteStrategy对象来配置。维护一个对Strategy对象的引用。可定义一个接口来让Strategy访问它的数据。抽象策略类(Strategy)定义所有支持的算法的公共接口。 Context使用这个接口来调用某ConcreteStrategy定义的算法。具体策略类(ConcreteStrategy)以Strategy...原创 2020-11-20 09:51:54 · 29897 阅读 · 0 评论 -
Sentinel 无需代码一行配置搞定限流
Sentinel是阿里巴巴开源的限流器熔断器,并且带有可视化操作界面。在日常开发中,限流功能时常被使用,用于对某些接口进行限流熔断,譬如限制单位时间内接口访问次数;或者按照某种规则进行限流,如限制ip的单位时间访问次数等。之前我们已经讲过接口限流的工具类ratelimter可以实现令牌桶的限流,很明显sentinel的功能更为全面和完善。来看一下sentinel的简介:https://github.com/spring-cloud-incubator/spring-cloud-alibaba/wik原创 2020-10-22 09:28:58 · 32631 阅读 · 0 评论 -
为什么需要Code Review?
经常进行Code Review(1)要Review的代码越多,那么要重构,重写的代码就会越多。而越不被程序作者接受的建议也会越多,唾沫口水战也会越多。(2)程序员代码写得时候越长,程序员就会在代码中加入越来越多的个人的东西。(3)越接近软件发布的最终期限,代码也就不能改得太多。Code Review不要太正式,而且要短忘了那个代码评审的Checklist吧,走到你的同事座位跟前,像请师父一样请他坐到你的电脑面前,然后,花5分钟给他讲讲你的代码,给他另外一个5分钟让他给你的代码提提意见,这比什么都原创 2020-11-09 15:51:24 · 32032 阅读 · 0 评论 -
otter基于docker安装
项目介绍名称:otter ['ɒtə(r)]译意: 水獭,数据搬运工语言: 纯java开发定位: 基于数据库增量日志解析,准实时同步到本机房或异地机房的mysql/oracle数据库. 一个分布式数据库同步系统工作原理原理描述:1. 基于Canal开源产品,获取数据库增量日志数据。 什么是Canal, 请点击2. 典型管理系统架构,manager(web管理)+node(工作节点) a. manager运行时推送同步配置到node节点 b. no...原创 2020-07-22 13:17:08 · 33516 阅读 · 1 评论 -
docker 搭建响应式个人博客
效果:安装:原创 2020-07-15 15:03:45 · 32296 阅读 · 0 评论 -
HashMap初始容量指定规则
public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { Map<String, Object> map = new HashMap<>(8); for (int i = 0; i < 13; i++) { map.put(Stri...原创 2020-06-25 16:20:59 · 35492 阅读 · 0 评论 -
jdk8 三行代码实现数据递归
菜单对象import com.fasterxml.jackson.annotation.JsonIgnore;import com.zcckj.common.model.dto.BaseDTO;import io.swagger.annotations.ApiModel;import io.swagger.annotations.ApiModelProperty;import lo...原创 2020-03-24 15:30:38 · 33211 阅读 · 0 评论 -
Drools规则引擎Workbench搭建
Drools Workbench搭建https://www.drools.org/download/download.html选择docker方式原创 2020-05-20 14:55:00 · 32412 阅读 · 0 评论 -
jar引用异常排查
项目使用docker打包,由maven的插件切换谷歌jib,发现原来的项目会提示方法不存在,java.lang.NoSuchMethodError: com.zcckj.common.utils.JsonUtils.toJsonString(Ljava/lang/Object;)Ljava/lang/String;可是原来插件打包的项目,包括现在本地启动都是ok的!排查方式:使用-...原创 2019-11-11 09:37:55 · 32176 阅读 · 0 评论 -
异步短信通知
背景: 公司的老系统用户反馈,短信发送异常……检查发现是批量短信接口超时,前端直接抛异常了,改为异步发送…… @Autowired private ThreadPoolTaskExecutor executor;// mobileMessageReadService.batchSend(messages);// store.setS...原创 2019-10-31 17:20:15 · 32166 阅读 · 0 评论 -
java 日常小技巧
字符串不足补0String str = String.format("%06d", 12);原创 2019-10-18 10:41:14 · 31895 阅读 · 0 评论 -
优雅的java线程池
前言线程池想必大家也都用过,JDK的Executors 也自带一些线程池。但是不知道大家有没有想过,如何才是最优雅的方式去使用过线程池吗? 生产环境要怎么去配置自己的线程池才是合理的呢?今天周末,刚好有时间来总结一下自己所认为的’优雅’, 如有问题欢迎大家指正。线程池使用规则要使用好线程池,那么一定要遵循几个规则:线程个数大小的设置线程池相关参数配置利用Hook嵌入你的行为线程...原创 2019-10-14 09:22:25 · 32188 阅读 · 0 评论 -
JAVA - 设计模式整理
前言介绍 写本文的目的仅为了对设计模式学习做个总结,同时也为了后期重温做个记录。相关代码都已发布在GitHub,个人能力有限,如有不恰当的地方欢迎批评指正(QQ交流群: 132381997)。最后对参考的网络作者表示感谢,相关引用文中都已标明出处,如涉及侵权,请及时联系本人,感谢!一、什么是设计模式 ...原创 2019-10-11 13:50:01 · 32079 阅读 · 0 评论 -
jdk8 vavr函数式编程库
直接上代码:个人感觉option,try,match在日常开发中比较有意义import io.vavr.*;import io.vavr.API.Match;import io.vavr.control.Option;import io.vavr.control.Try;import lombok.Data;import java.util.Comparator;impo...原创 2019-08-29 15:53:51 · 33101 阅读 · 0 评论 -
常用设计模式-责任链
模式简介 责任链模式是一种对象的行为模式.在责任链模式里面,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上进行传递,直到这个链上的某一个对象来处理请求,发送这个请求的客户端并不知道哪一个对象最终来处理这个请求.这使得系统可以在不影响客户端的情况下来动态的重新组织和分配责任.案例(申请加薪和请假)模拟日常公司请假和申请调薪流程,有经理、cto、bo...原创 2019-08-05 10:07:11 · 31954 阅读 · 0 评论 -
常用设计模式-简单工厂
模式简介在三种工厂模式中,简单工厂模式是最基础的一个。该模式的核心思想是把创建对象过程和对象本身业务处理分离。假设需要创建多个对象,每个对象的创建模式比较复杂,那么我们把这些过程放在逻辑代码中,会使得逻辑代码非常混乱;而且每当有新的产品出现,就需要修改逻辑代码,不符合“开闭原则”。但是,该模式使得工厂的负担过重,而且每次添加新产品,都需要修改工厂,不是很符合开闭原则,但是比直接在业务逻辑里添...原创 2019-05-13 10:34:59 · 32295 阅读 · 0 评论 -
设计模式-代理模式
模式简介代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。中介隔离作用:在某些情况下,一个客户类不想或者不能直接引用一个委托对象,而代理类对象可以在客户类和委托对象之间起到中介的作用,其特征是代理类和委托类实现相同的接口。 开闭原则,增加功能:代理类除了是客户类和委托类的中介之外,我们还可以通过给代理类增加额外的功能来...原创 2019-05-15 16:31:18 · 32265 阅读 · 0 评论 -
设计模式-装饰模式
模式简介1、意图:动态地给一个对象添加一些额外的职责。就增加功能来说, Decorator模式相比生成子类更为灵活。该模式以对客 户端透明的方式扩展对象的功能。2、适用环境(1)在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。(2)处理那些可以撤消的职责。(3)当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的 ...原创 2019-05-15 14:58:05 · 32208 阅读 · 0 评论