Java中的一些基础代码片段_3

=Start=

缘由:

在学习Java的过程中不断用文章进行整理总结(常用功能的Java实现),争取早日能较为熟练的使用Java进行开发。

正文:

参考解答:
7. Java中 文件操作 的方法总结

8. Java中 MySQL 的操作总结

&

现在一般都是通过Maven管理的jar包依赖了,所以,根据本机的实际情况,在项目的pom.xml进行相应的添加,以避免「java.lang.ClassNotFoundException: com.mysql.jdbc.Driver」错误:

9. Java中 redis 的操作总结

 

参考链接:
  • 如上

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/3978.html

《Java中的一些基础代码片段_3》上有5条评论

  1. 对高并发流量控制的一点思考
    http://blog.51cto.com/zhangfengzhe/2066683

    限流的常用处理手段有:计数器、滑动窗口、漏桶、令牌。

    限流神器:Guava RateLimiter
    Guava不仅仅在集合、缓存、异步回调等方面功能强大,而且还给我们封装好了限流的API!
    Guava RateLimiter基于令牌桶算法,我们只需要告诉RateLimiter系统限制的QPS是多少,那么RateLimiter将以这个速度往桶里面放入令牌,然后请求的时候,通过tryAcquire()方法向RateLimiter获取许可(令牌)。

    上面所说的限流的一些方式,都是针对单机而言的,其实大部分的场景,单机的限流已经足够了。分布式下限流的手段常常需要多种技术相结合,比如Nginx+Lua,Redis+Lua等去做。本文主要讨论的是单机的限流,这里就不在详细介绍分布式场景下的限流了。

  2. Java中如何将日期字符串转换成ms的形式
    https://stackoverflow.com/questions/8826270/how-to-convert-hhmmss-sss-to-milliseconds
    https://www.mkyong.com/java/how-do-get-time-in-milliseconds-in-java/

    private static final String TIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
    private static SimpleDateFormat sdf = new SimpleDateFormat(TIME_FORMAT);

    private long datetimeToLong(String datetime) {
    Date date = null;
    try {
    date = sdf.parse(datetime);
    return date.getTime();
    } catch (ParseException e) {
    e.printStackTrace();
    return -1;
    }
    }

  3. 你应该知道的缓存进化史
    https://mp.weixin.qq.com/s/wnPrE4MglmCFxyAwtTh_5A

    第一阶段:数据同步加redis
    通过消息队列进行数据同步至redis,然后Java应用直接去取缓存 这个阶段优点是:由于是使用的分布式缓存,所以数据更新快。缺点也比较明显:依赖Redis的稳定性,一旦redis挂了,整个缓存系统不可用,造成缓存雪崩,所有请求打到DB。

    第二,三阶段:JavaMap到Guava cache
    这个阶段使用进程内缓存作为一级缓存,redis作为二级。优点:不受外部系统影响,其他系统挂了,依然能使用。缺点:进程内缓存无法像分布式缓存那样做到实时更新。由于java内存有限,必定缓存得设置大小,然后有些缓存会被淘汰,就会有命中率的问题。

    第四阶段:Guava Cache刷新
    为了解决上面的问题,利用Guava Cache可以设置写后刷新时间,进行刷新。解决了一直不更新的问题,但是依然没有解决实时刷新。

    第五阶段:外部缓存异步刷新
    这个阶段扩展了Guava Cache,利用redis作为消息队列通知机制,通知其他java应用程序进行刷新。

发表评论

电子邮件地址不会被公开。 必填项已用*标注