- 浏览: 11846 次
- 性别:
- 来自: 北京
最新评论
文章列表
/**
* 将指定的时间段,减去多个指定的已用的时间段,最终返回有效的时间段
* 整体思路就是将所有时间打散,变成集合,然后求指定时间段的补集,最终将结果中连续的时间放到一起,返回开始结束时间的列表
* @param startDay 指定时间段的开始时间 比如1月1日
* @param endDay 指定时间段的结束时间 比如1月30日
* @param usedDay 指定的已用的时间段 比如[1-3到1-6],[1-18到1-20],[1-25到2-6]
* @return 返回[1-1到1-2],[1-7到1-17],[1-21到2-24]
*/
publi ...
/**
* 将指定的时间段,减去多个指定的已用的时间段,最终返回有效的时间段
* 整体思路就是将所有时间打散,变成集合,然后求指定时间段的补集,最终将结果中连续的时间放到一起,返回开始结束时间的列表
* @param startDay 指定时间段的开始时间 比如1月1日
* @param endDay 指定时间段的结束时间 比如1月30日
* @param usedDay 指定的已用的时间段 比如[1-3到1-6],[1-18到1-20],[1-25到2-6]
* @return 返回[1-1到1-2],[1-7到1-17],[1-21到2-24]
*/
pub ...
一、伪共享和CPU的缓存机制有关
二、cpu缓存结构
三、缓存是以行为单位存在在cache中的,通常而言,一个缓存行大概是64byte。对于java类而言,一个javalong的对象长度为8字节,因此一个缓存行就是8个long的长度。
四、对于位于同一个缓存行上的两个变量,被不同线程操作,会引起竞争消耗
五、解决方式
1、使用注解@sun.misc.Contended,且在jvm启动参数增加-XX:-RestrictContended
2、定义多个无效变量,用来填充隔离这两个变量
volatile long x;
//这些变量的存在,会使x, ...
一、伪共享和CPU的缓存机制有关
二、cpu缓存结构
三、缓存是以行为单位存在在cache中的,通常而言,一个缓存行大概是64byte。对于java类而言,一个javalong的对象长度为8字节,因此一个缓存行就是8个long的长度。
四、对于位于同一个缓存行上的两个变量,被不同线程操作,会引起竞争消耗
五、解决方式
1、使用注解@sun.misc.Contended,且在jvm启动参数增加-XX:-RestrictContended
2、定义多个无效变量,用来填充隔离这两个变量
volatile long x;
//这些变量的存在,会使x, ...
# 高效的JDK多任务执行框架 在并发编程中,我们经常用到非阻塞的模型,在之前的多线程的三种实现中,不管是继承Thread类还是实现Runnable接口,都无法保证获取到之前的执行结果。通过实现Callback接口,并用Future可以来接收多 ...
以下内容来自文章:
https://blog.csdn.net/wangbiao007/article/details/53183764
FactoryBean是一个接口,当在IOC容器中的Bean实现了FactoryBean后,通过getBean(String BeanName)获取到的Bean对象并不是FactoryBean的实现类对象,而是这个实现类中的getObject() ...
一、查看是否关闭 SIP
1、查看 SIP 状态:csrutil status
2、关闭 SIP:
关机 -> 关机后,按住 command + R 直到开机画面显示到进度条 -> 顶部菜单栏:实用工具 -> 终端命令输入:csrutil disable
二、设置挂载:sudo mount -uw /
三、设置权限:chmod 777 具体文件
四、上述设置会在重启失效,可以通过设置软连接解决。
Map<Integer,Integer> a = new HashMap<Integer,Integer>(); a.put(3,3); a.put(18,18); a.put(33,33); a.put(48,48); a.put(71,71); a.put(86,86); a.put(101,101); a.put(116,116); a.put(138,138); a.put(155,155); a.put(16 ...
说一种情况:比如我的订单,缓存是按照pin做key来做的突然加一个过滤条件,比如轻松购订单不显示了,有以下几种解决方式1、数据库条件改一下,缓存查询时简单按过滤一下,问题是,分页1-10页,可能第一页有3条,所以返回前端的就是7条
缺点:不严谨,并且要看前端分页是怎样判断最后一页的,如果是根据“当前页条数”<“每页固定条数”就算最后一页,那这种做法不可取2、还是简单过滤,如果发现当前页不足10条,继续查,补足
缺点:处理复杂,并且有可能影响一点性能3、强制缓存失效,重新放到缓存中,要做标记,比如pin:XXXX已经做过强制更新这种
具体做法,建立缓存标记位(增加一份新缓存,但空间 ...
import org.apache.log4j.Level;import org.apache.log4j.LogManager;import org.slf4j.Logger;import org.slf4j.LoggerFactory;
private void updateLogLevel(String levelString) { if (StringUtils.isNotBlank(levelString) && !"null".equalsIgnoreCase(levelString)) { En ...
小乌龟的方式
1、show log,找到想要还原的历史节点
2、右键reset “分支” to this
3、revert掉需要commit的代码
4、push(选中force,否则提交不上)
命令的方式:
查看git的提交版本和id 拿到需要恢复的版本号
命令:git log
2. 恢复到指定版本
命令:git reset --hard 44f994dd8fc1e10c9ed557824cae50d1586d0cb3 //后面这一大串44f994dd8fc1e10c9ed557824cae50d1586d0cb3就是版本id
...
一、杂
apt-get(Advanced Package Tool),主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统sudo使一般用户取代超级用户作为管理帐号,不需要知道管理员密码RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序”wget 下载工具、rpm应用管理安装、apt-get:ubuntu下的软件安装、yum:redhat,centos下的软件安装方式df -行号:vim set nu下载文件:sz 文件名查看端口:ps -ef解压:jar -xvf project.war
二、 ...
type显示的是访问类型,是较为重要的一个指标,结果值从好到坏依次是:
system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL
一般来说,得保证查询至少达到range级别,最好能达到ref。
参考链接:http://database.51cto.com/art/201108/284783.htm
命令:ps -aux
列stat的值有很多如:S,Ss,S<,SN,Sl,Ss等,示意如下:
D 不可中断 Uninterruptible sleep (usually IO) R 正在运行,或在队列中的进程 S 处于休眠状态 T 停止或被追踪 Z 僵尸进程 W 进入内存交换(从内核2.6开始无效) X 死掉的进程 < 高优先级 N 低优先级 L 有些页被锁进内存 s 包含子进程 + 位于后台的进程组; l 多线程,克隆 ...
浅谈设计模式----改变依赖关系,依赖倒置
- 博客分类:
- 设计模式
说一下这篇文章的目的,很重要的一点,是针对上一篇文章中最后提到的 1、消除不恰当的依赖 2、通过其它方式依赖,可参考倚赖倒置原则 那我们就从如何通过其它依赖的方法,解决类的依赖关系(需要强调的是,要想完全 ...