Java中23种设计模式
一、创建型模式 1.单例模式(Singleton Pattern) 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 1.1 饿汉式 特点:类加载时就初始化…
Java中常见问题探索讨论
前言:本文只是记录博主遇到的或者博主认为比较值得一起探索谈论的,本文仅代表博主个人观点。如果正在看这篇博文的你有你认为比较常见而我没有记录的,欢迎评论,我会挑选记录,方便大家一起探索讨论。(不定时更新) 1.HashMap的底层原理 HashMap可以接受null的键值对,是线程不安全的,它是基于hashing的原理,jdk8后采用数组+链表+红黑…
Java常用代码工具类
一、线程池 public class ThreadPool { /** * 核心线程 */ public static final int CORE_POOL_SIZE = Runtime.getRuntime().availableProcessors() + 1; /** * 线程池最大线程数 */ public static final in…
软件的七大设计原则
1.开闭原则 对扩展开放,对修改关闭。在程序需要进行扩展的时候,不能去修改原有的代码,要去实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。 下面是输入法设置皮肤的例子: // 抽象皮肤接口 public interface Skin { // 显示的方法 void display(); } // 默认皮肤类 public cl…
天天基金中持仓收益率和持有收益率的区别
前言:在天天基金养基这么久,之前在基金详情页面上看到持仓收益率和持有收益率,由于我止盈过一次,所以导致持仓收益率和持有收益率不一致,这个问题困扰我许久,他们到底有什么区别呢?(仅代表个人理解,如有错误请在评论区指正) 首先,当你买入以后,从来没有卖出,那么他们是一样的,有区别的是当你有止盈或者止损的情况,有部分卖出的情况,才会有所区别。 止盈的情况…
在N个球中用天平称最少次数找出坏球
以前在上学的时候,应该会常常听到这个问题,有N个球,比如9个,其中有一个是坏球,且质量较轻或者较重(已知,这里假设较轻),现在只有一个天平,则最少需要几次才能找出那个坏球? 以这里例子为例,应该需要两次就可以找出那个坏球了,那么具体怎么做呢?首先先把球分为三堆A、B、C,每堆三个球,先用天平称A和B,那么假如A堆或者B堆中有较轻的,那么就取出那堆分…
MySQL新增排名字段
前言:MySQL在5.X的版本中,没有排名相关函数,如row_number()、rank()、dense_rank()等,所以需要用变量的方式去实现这个需求,下面本文简单对三种情况进行情况说明。 如下图为简单的测试数据: 测试数据 一、同分情况下,排名连续 SELECT t1.*, @rownum := @rownum + 1 AS rank FR…
金融上的做多做空和杠杆
以下内容谨代表博主个人理解观点~ 做多,通俗易懂的来说,只要涨了就赚 做空,通俗易懂的来说,只要跌了就赚 原理呢,个人理解来说就是做多是借钱,做空是借货 做多,举个例子来说,比如现在是一块钱一斤苹果,你有10块钱,你买了10斤,然后等到第二天的时候,苹果变成了两块钱一斤了,然后你再卖给别人就能卖20块钱了,那么就相当于你赚了10块钱,相当于赚了50…
JVM调优常用的调优参数
一、堆内存参数配置 -Xms10g :JVM启动时申请的初始堆内存值 -Xmx20G :JVM可申请的最大Heap值 -Xmn3g : 新生代大小,一般设置为堆空间的1/3 1/4左右,新生代大则老年代小 -Xss :Java每个线程的Stack大小 -XX:PermSize :持久代(方法区)的初始内存大小 -XX:MaxPermSize : 持…
基于EasyExcel的配置型导入导出V1.0
前言 想自己写一个可以很方便的在工作中使用的配置多sheet页,复杂表头之类的导出导入工具类,第一版比较简单,还得受限制于实体类的配置,将来在第二第三版,或者更多版本中考虑实现一下全配置全自动导入导出。如果电脑屏幕前的你恰好能看到这篇文章,又恰好有些想法,欢迎评论区留言~ PS:请结合EasyExcel文档食用哦 导出 public static …