- 浏览: 60844 次
- 性别:
- 来自: 上海
最新评论
文章列表
Docker是linux容器的封装,提供了简单易用的容器使用接口。
1.下载Mac docker:
https://docs.docker.com/docker-for-mac/install/
运行
docker version
docker info
2.image
一个image就是一个应用程序及其所有依赖。通过image文件生成docker容器。一个image文件,可以生成多个容器实例。
docker image ls -a
docker images
Docker image rm pid
Docker rmi pid
doc ...
DockerFile command
1.Docker忽略大小写,但是约定关键字大写
2.# docker文件注释
3.FROM
FROM imagename(:latest) OR
FROM imagename:specific version(tag)
FROM命令,是用于描述该dockerfile的基础依赖镜像,写在最前
如:
FROM centos:centos7
4.MAINTAINER 标识dockerfile文件的所有者和维护者
5.RUN
RUN 命令:
在当前镜像中旅,执行相应的命令,将结果作用于该镜像(im ...
@Scheduled(cron = "0 0 * * * ?")public void saveDailyScoreScheduled() {try {logger.info("loadDeviceEvents start>>>>" + new Date());loadDeviceEvents(ZonedDateTime.now().toEpochSecond(),null);logger.info("loadDeviceEvents end >>>>" + new D ...
过滤器
过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上。它是随你的web应用启动而启动的,只初始化一次,以后就可以拦截相关请求,只有当你的web应用停止或重新部署的时候才销毁。作用请求和回应的过滤,传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者struts的action前统一设置字符集,或者去除掉一些非法字符(聊天室经常用到的,一些骂人的话)。
Serv ...
方案1–业务方自己实现
假设消息中间件没有提供“事务消息”功能,比如你用的是Kafka。那如何解决这个问题呢?
解决方案如下: (1)Producer端准备1张消息表,把update DB和insert message这2个操作,放在一个DB事务里面。
(2)准备一个后台程序,源源不断的把消息表中的message传送给消息中间件。失败了,不断重试重传。允许消息重复,但消息不会丢,顺序也不会打乱。
(3)Consumer端准备一个判重表。处理过的消息,记在判重表里面。实现业务的幂等。但这里又涉及一个原子性问题:如果保证消息消费 + insert message到判重表这2个操作的原子性 ...
当前商业虚拟机的垃圾收集都采用“分代收集”(Generational Collection)算法,这种算法并没有什么新的思想,只是根据对象的存活周期的不同将内存划分为几块。一般是把Java堆分为新生代和老年代,这样就可以根据各个年代的特点采用最适当的收集算法。在新生代中,每次垃圾收集时都发现有大批对象死去,只有少量存活,那就选用复制算法,只需要付出少量存活对象的复制成本就可以完成收集。而老年代中因为对象存活率高、没有额外空间对它进行分配担保,就必须使用“标记-清理”或“标记-整理”算法来进行回收。方法区永久代,回收方法同老年代。
对象分类
分代搜集算法是针对对象的不同特性,而使用适合的算 ...
众所周知,Java中是JVM负责内存的分配和回收,这是它的优点(使用方便,程序不用再像使用c那样操心内存),但同时也是它的缺点(不够灵活)。为了解决内存操作不灵活这个问题,可以采用软引用等方法。 在JDK1.2以前的版 ...
问题背景:
1.内存泄漏:OSGi容器中,不同版本的类永久共存。
OSGi 动态化模块系统,允许不同版本的相同类共存,OSGi只需在方法区内存加载新的classloader。
但是客观上会占用更多的内存。如果对OSGi动态性使用不当,可能会因为不正确持有某个过期模块(被更新或卸载的模块)中一个类的实例,导致该类的类加载器无法被回收,进而导致该类加载器下所有类都无法被GC回收掉。
为了防止保留类加载器带来的内存泄露,我们必须使用弱键和弱值。目标是不在内存中保持一个已卸载的bundle的类空间。我们必须使用弱值,因为每个映射项目的值(BridgeClassLoader)都强引用 ...
在项目中,开发阶段监控程序可以使用断点完成调试,对于线上的项目,要监控时候:
1.日志分析,
2.JConsole工具
3.Btrace跟踪和监控线程
安装Btrace:在windows环境下,可以直接利用jdk自带的jvisualvm工具来 安装Btrace插件,具体操作如下:
1.进入jdk安装目录,进入bin目录,找到jvisualvm.exe ,打开之后,在工具栏——>工具——>插件 ,搜索插件BTrace Workbench,然后安装
2.启动你程序所在的Tomcat,在jvisualvm.exe 窗口你会发现有个Tomcat的菜单图标,右键——&g ...
简介
ConcurrentHashMap 是 util.concurrent 包的重要成员。本文将结合 Java 内存模型,分析 JDK 源代码,探索 ConcurrentHashMap 高并发的具体实现机制。
由于 ConcurrentHashMap 的源代码实现依赖于 Java 内存模型,所以阅读本文需要读者了解 Java 内存模型。同时,ConcurrentHashMap 的源代码会涉及到散列算法和链表数据结构,所以,读者需要对散列算法和基于链表的数据结构有所了解。
Java 内存模型
由于 ConcurrentHashMap 是建立在 Java 内存模型基础上的,为了更好的理解 ...
目标
在这篇文章中,我希望能够让各位对下面的问题能有一个清晰的答案:
ConcurrentHashMap的内部结构是怎样的?
ConcurrentHashMap为何能够保证多线程线程安全地更新数据?
ConcurrentHashMap内部为何大量使用Unsafe类?
ConcurrentHashMap中,写操作会阻塞读操作吗?
ConcurrentHashMap如何保证写线程的操作能够对读线程立即可见?
前提条件
在各位往下读之前,我强烈建议各位了解一下Java内存模型.
这里我会简单介绍一下.
上面这幅图是从周志明老师的<& ...
HashMap
HashMap可以接受null键值和值,而Hashtable则不能;HashMap是非synchronized;HashMap很快;以及HashMap储存的是键值对等等。
工作原理
“HashMap是基于hashing的原理,我们使用put(key, value)存储对象到HashMap中,使用get(key)从HashMap中获 ...
为什么在重写equals方法时都要重写hashCode方法呢: 首先equals与hashcode间的关系是这样的:
1、如果两个对象相同(即用equals比较返回true),那么它们的hashCode值一定要相同;
2、如果两个对象的hashCode相同,它们并不一定相同(即用equals比较返回false)
自我的理解:
由于为了提高程序的效率才实现了hashcode方法,先进行hashcode的比较,如果不同,那没就不必在进行equals的比较了,这样就大大减少了equals比较的次数,这对比需要比较的数量很大的效率提高是很明显的,一个很好的例子就是在集合中的使用;
我们 ...
位运算符主要针对二进制,它包括了:“与”、“非”、“或”、“异或”。从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算。下面详细介绍每个位运算符。
1.与运算符与运算符用符号“&”表示,其使用规律如下:两个操作数中位都为1,结果才为1,否则结果为0,例如下面的程序段。public class data13{public static void main(String[] args){int a=129;int b=128;System.out.println("a 和b 与的结果是:" ...
摘要:Oracle Coherence是一个企业级的分布式集群缓存框架。具有自管理,自恢复,高可用性,高扩展性等优良特点,在电信BOSS等项目中有很大的应用价值。本文对它的特点,架构,基本使用方法,JMX管理,调优等进行简要但快捷的介绍,并对于Hibernate的集成过程进行说明,为BOSS,CMP等移动项目提供一个的参考。 关键词:分布式缓存 Coherence 网上除了官方用户指南,关于Coherence的介绍文章资料很少,因此总结出此文,从原理到快速指南和基本最佳实践,希望对需要的人提供一个参考。 1 Coherence 概述 1.1 Coherence是什么 Oracle官方网站的描述 ...