JAVA学习笔记
长沙刘德华
这个作者很懒,什么都没留下…
展开
-
算法:第n个丑数-java
丑数定义1是丑数只包含质因子2,3和5的数称作丑数。如8,6,15算法思路一个丑数(除1外)是排在它前边的某个丑数乘以2或者乘以3或者乘以5得到的,那么我们只要在当前得到的丑数集合中找到比当前集合中最大丑数刚刚好大的丑数即可,因为我们要保持有序,才好找到第N个丑数,现在难点是怎么在O(1)时间内就找到一个丑数,使得它乘以2或者乘以3或者乘以5刚刚好大于当前最大丑数呢?我们设置三个游标,一个表示所指丑数乘以2是下一个可能加入到丑数集合中的丑数,一个表示所指丑数乘以3是下一个可能加入到丑数集合中的原创 2020-07-29 17:19:29 · 373 阅读 · 0 评论 -
LRU的Java实现
文章目录思路代码实现思路维护两个数据结构,1个用于“淘汰最远未使用的缓存”,另一个用于“缓存数据查询”代码实现import java.util.*;/** 手写lru */class LruCache1<K,V> { private final int capacity; private final KeyHolder<K> keyHolder; // keyHolder也可以直接使用linkedHashMap。 private final原创 2020-07-29 13:41:44 · 277 阅读 · 0 评论 -
Sentinel实践-熔断和限流
文章目录sentinel简介一些基本概念资源规则资源和规则的关系springboot项目应用简单实践pom依赖AopConfigurationResourceNameDefRuleDefinetion对接口限流查看效果总结sentinel简介Sentinel 是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。Sentinel 具有以下特性:丰富的应用场景:Sentinel 承接了阿里巴巴近 10原创 2020-07-24 17:26:55 · 764 阅读 · 0 评论 -
令牌桶简单实现(Java)
令牌桶简单实现(Java)文章目录令牌桶简单实现(Java)简介实现思路codemain输出结果简介百度可得,令牌桶是一个桶,定时往里面放令牌,然后请求来了从令牌桶里取令牌,取到了继续后续逻辑,没取到就拦截不让请求,达到限流目的实现思路参考了guava的RateLimiter之后,发现并没有“一个线程定时往桶里放token”,而是在请求进来时通过当前时间戳实时计算(下一次加令牌的时间为x,此时时间为m,平均n秒放一个令牌,则此时应当增加 (m - x) / n + 1 个令牌)code/**原创 2020-07-15 14:08:30 · 5414 阅读 · 0 评论 -
Synconized,对象,锁,锁升级
锁 对于普通同步方法,锁是当前实例对象 对于静态同步方法,锁是当前class类对象 对于同步方法块,锁是括号内对象。 JVM基于进入和退出Monitor对象来实现方法和代码块同步。每个java对象都有一个Monitor与之对应。代码块同步是用monitorenter和monitorexit关键字实现。monitor的本质是依赖于底层操作系统的Mutex Lock实现。...原创 2020-04-04 10:42:06 · 411 阅读 · 0 评论 -
jenkins部署后应用不启动
在jenkins控制台看启动脚本执行(start.sh)完毕,ps查看进程发现没有对应进程在linux服务器上直接执行start.sh发现可以启动成功。其实原因很简单,在jenkins中有这个提示:jenkins Process leaked file descriptors即Jenkins默认会在Build结束后Kill掉所有的衍生进程,用官方的话来说就是:To rel...原创 2019-10-09 10:16:47 · 867 阅读 · 0 评论 -
线程池ThreadPoolExecutor简介
目录参数解释corePoolSizemaximumPoolSizekeepAliveTimeTimeUnitBlockingQueueThreadFactoryRejectedExecutionHandler线程池实现原理1. 线程池状态2. 任务的执行-execute方法3. 线程复用大致原理参数解释public ThreadPoolEx...原创 2019-06-24 00:07:18 · 194 阅读 · 0 评论 -
centos7下Docker和spring boot集成demo
以下均使用root用户操作一、构建打包环境需要的运行环境:jdk8 docker maven默认docker和java环境已经配置完毕3. maven安装首先在centos上下载mavenwget http://mirror.bit.edu.cn/apache/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.t...原创 2019-06-02 17:33:21 · 184 阅读 · 0 评论 -
201904Java面经
三年经验。最近开始找工作,记录一下遇到的问题jvm强引用,弱引用,软引用,虚引用 jvm内存模型,gc算法有哪些,具体逻辑java:nio/bio区别,epoll/poll/select有什么区别 concurrenthashmap,7和8的差别,锁怎么用的 线程池具体实现 aqs,cas实现方式 sync关键字和可重入锁区别 threadlocal原理以及内存泄漏问...原创 2019-04-04 14:59:17 · 282 阅读 · 0 评论 -
HashMap阅读(jdk1.8)
hashMap有并发问题,1.6是死锁,1.8是丢元素。先看并发会产生什么现象import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.serializer.SerializerFeature;import java.util.HashMap;import java.util.Map;import java.uti...原创 2019-01-22 10:27:17 · 151 阅读 · 0 评论 -
spring cloud 本地配置研究
已知:spring cloud先加载bootstrap,后加载远程config-server的application。对于一个服务,需要公共配置:注册中心地址;日志级别configServer的server-id,profile,label另外需要私有配置:spring.application.name服务名server.port端口名需要在application拉取的配置名。问题:目前所有服务都...原创 2018-07-09 11:41:28 · 600 阅读 · 0 评论 -
ServerSocketChannel+Selector实现多路复用io
import java.io.IOException;import java.net.Inet4Address;import java.net.InetSocketAddress;import java.net.ServerSocket;import java.net.SocketAddress;import java.nio.ByteBuffer;import java.nio.ch...原创 2018-02-11 16:10:53 · 1012 阅读 · 0 评论 -
java实现观察者模式
为了看netty源码做准备。观察者模式、发布-订阅模型、reactor模式本质上类似,通过事件回调来解耦动作执行者和观察者。观察者模式中主要分三个角色:观察者(监听器)事件(执行的动作)事件源(监视对象)具体的实现方式分两步:观察者初始化,绑定到事件源事件发生时通知绑定了该事件的观察者代码如下:观察者:public interface Listener { void onEventAttac...原创 2018-02-11 16:06:46 · 238 阅读 · 0 评论 -
enum是什么
javap ResultEnum.class 得到了如下信息Compiled from "ResultEnum.java"public final class com.wecash.business.activity.otherdb.enums.ResultEnum extends java.lang.Enum<com.wecash.business.activity.otherd...原创 2017-08-27 11:03:31 · 709 阅读 · 0 评论 -
>>>,>>的区别
思路:-32分别做>>>3和>>3的运算,然后看结果。代码如下:class Var{ public static void main(String[] args) { int a=-32; int b=-32; a=a>>>3; b=b>>3; System.out.println(a+","+b); }}结果A=536870908;B=-4。原创 2015-08-29 18:30:59 · 306 阅读 · 0 评论