`
文章列表

docker

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个操作的原子性 ...

jvm

当前商业虚拟机的垃圾收集都采用“分代收集”(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 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官方网站的描述 ...
Global site tag (gtag.js) - Google Analytics