随笔分类 -  Java研究

摘要:Redis对于过期键有三种清除策略: 被动删除:当读/写一个已经过期的key时,会触发惰性删除策略,直接删除掉这个过期key 主动删除:由于惰性删除策略无法保证冷数据被及时删掉,所以Redis会定期主动淘汰一批已过期的key 当前已用内存超过maxmemory限定时,触发主动清理策略 被动删除 只有 阅读全文
posted @ 2018-10-18 18:28 williamcai
摘要:安装maven 参考https://www.cnblogs.com/EasonJim/p/9021372.html 安装jekins https://shimo.im/docs/oeG7YHbJVdwX7eiS 阅读全文
posted @ 2018-10-17 17:37 williamcai
摘要:https://start.spring.io/ 阅读全文
posted @ 2018-09-13 16:46 williamcai
摘要:1、Bean的设计 API Bean:外部(DTO) extends ApiBean(来自api-common) 异常 ApiException(以Exception结尾) 入参 AbstractRequest(以Request结尾)ApiParam/ApiExtParam(以Param结尾) 出参 阅读全文
posted @ 2018-08-06 14:51 williamcai
摘要:http://idea.youbbs.org http://idea.congm.in http://intellij.mandroid.cn/ http://idea.imsxm.com/ http://idea.iteblog.com/key.php 阅读全文
posted @ 2018-07-15 19:35 williamcai 阅读(2338) 评论(0) 推荐(0)
摘要:在maven发包的时候,一般不会把test发布过去,因为有可能有其他的报错,影响发包,所以最好test不给打包,只需要在pom.xml加上: <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>mave 阅读全文
posted @ 2018-04-21 20:51 williamcai
摘要:扩展性 指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。表现在系统基础设施稳定不需要经常变更,应用之间较少依赖和耦合,对需求变更可以敏捷响应。 它是系统架构设计层面的开闭原则(对扩展开放,对修改关闭),架构设计考虑未来功能扩展,当系统增加新功能时,不需要对现有系统的结构和代码进行修改。 阅读全文
posted @ 2018-04-07 10:49 williamcai
摘要:一、代理模式的定义 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不合适或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 RealSubject 和Proxy使用同一个接口,这样在使用真实对象的时候,可以用proxy代替。 二、代理模式的理解 三 阅读全文
posted @ 2018-03-28 16:37 williamcai
摘要:悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。 乐观锁(Op 阅读全文
posted @ 2018-03-22 17:39 williamcai
摘要:ActionServlet是一个标准的Servlet,在web.xml文件中配置,该Servlet用于拦截所有的HTTP请求。因此,应将Servlet配置成自启动Servlet,即为该Servlet配置load-on-startup属性。 类似于spring中的 DispatcherServlet, 阅读全文
posted @ 2018-03-05 17:21 williamcai
摘要:Map俗称映射表,是通过键来映射对象。HashMap是通过散列key的来存储和查找对象。 如果要按照key的顺序进行排序,就需要使用TreeMap。 阅读全文
posted @ 2017-10-11 11:22 williamcai
摘要:Hash又称散列,在java中,它是通过链表数组实现,每个链表被称为桶。要想查找表中对象的位置,就先要计算它的散列值,然后与桶的总数取余,所得的 余数就是这个元素桶的索引。当插入一个元素到hash表中时,如果这个桶中没有其他任何元素,就将元素直接插入到桶中即可。有时候会发现桶被沾满,这种 现象被称为 阅读全文
posted @ 2017-10-08 17:38 williamcai
摘要:List 的集合可以通过2种方法访问: (1)获取迭代器,使用List.iterator() 或 List.listIterator(); (2) 使用 get(int index) 或set(int index,Object element) 方法。 对于List集合如果有多个迭代器,一个迭代器, 阅读全文
posted @ 2017-10-08 10:08 williamcai
摘要:1、商品目录全查询时间超过1000ms的解决方案 (1) 后台定时任务推送目录查询到缓存。 (2)在新增,删除,修改目录时,会重新推送到缓存。 (3)查询的时候,首先从缓存获取,如果缓存为空,直接查数据,将查询的结果缓存。 这样优化以后,1000多条的记录查询平均50ms,速度快了20倍。 2、jm 阅读全文
posted @ 2017-09-25 20:05 williamcai
摘要:1、? extends Demo 确定了泛型的上届,所有的继承Demo的对象可以写入,读取的话不建议。 2、? super Demo 确定了泛型的下届,所有Demo的父类都可以读取,不建议写入。 3、? 即可读,又可写。 阅读全文
posted @ 2017-09-18 17:52 williamcai
摘要:一般情况下,Date所提供的功能非常的有限,所以比较常用的是GregorianCalendar. 1、设置时间 GregorianCalendar.setTime(new Date()); 2、获取时间 GregorianCalendar.getTime(); 3、改变月份,天数 Gregorian 阅读全文
posted @ 2017-08-09 15:36 williamcai
摘要:在产品的预生产的环境中,查询目录的时候,出现了 一个问题:加载目录的时候,总共1000条左右的数据,差不多需要8秒多,这是无法容忍的。 所以就分析耗时较多的地方,步骤如下: 1、查看查询sql的是否有瓶颈,是否可以优化一下。 2、查看代码逻辑,是否有多层循环。 如果这2项都没有的话,可以使用缓存来解 阅读全文
posted @ 2017-07-17 09:54 williamcai
摘要:CAS CAS:Compare and Swap, 翻译成比较并交换。 java.util.concurrent包中借助CAS实现了区别于synchronouse同步锁的一种乐观锁。 CAS应用 CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V 阅读全文
posted @ 2017-07-16 15:40 williamcai
摘要:一、线程安全的概念 所谓线程安全问题是指当多个线程同时读写一个状态变量,并且没有任何同步措施时候,导致不正确数据或者其他不可预见的结果的问题。 二、共享变量的可见性 Java内存模型规定了所有的变量都存放于朱内存中,当线程使用变量时候把朱内存里面的变量拷贝到了自己的工作空间或者工作内存。 当线程操作 阅读全文
posted @ 2017-07-16 11:57 williamcai
摘要:1、必须装有maven插件,并且配置好相应的maven路径。 2、new >Java Project,点击下一步,知道项目新建完成。 3、右击 >Configure >Convert to Maven Project. 4、删除src文件,新建如下源码文件: src/main/java 存储java 阅读全文
posted @ 2017-07-07 15:59 williamcai