1.发布服务引入相关依赖pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.a
单实例EurekaServer配置1.依赖pom.xml:<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http
1.AQS基本属性CAS算法:CAS,CPU指令,在大多数处理器架构,包括IA32、Space中采用的都是CAS指令,CAS的语义是“我认为V的值应该为A,如果是,那么将V的值更新为B,否则不修改并告诉V的值实际为多少”,CAS是项乐观锁技术,当多个线程尝试使用CAS同时更新同一个变量时,只有其中一个线程能更新变量的值,而其它线程都失败,失败的线程并不会被挂起,而是被告知这次竞争中失败,并可以再次
1.SpringMVC重要组件1.DispatcherServletSpringMVC的中央Servlet,所有请求的入口,重写了doService()方法。核心方法:doService()、doDispatch()。2.HandlerMapping处理映射,负责根据HttpServletRequest找到对应的Handler,这里返回Handler的辅助类HandlerExecutionChai
1.判断对象是否已死的方法可达性分析可作为GCRoots的对象包括下面几种:虚拟机栈(栈帧中的本地变量表)中引用的对象。方法区中类静态属性引用的对象。方法区中常量引用的对象。本地方法栈中JNI(即一般说的Native方法)引用的对象。2.垃圾收集算法:标记-清除(MarkSweep)算法:分标记和清除两个阶段,缺点:一是两个阶段效率低,二是产生内存碎片。复制(Copying)算法:把内存平均分为两
1.对象的创建类加载虚拟机遇到一条new指令时,首先检查这个指令的参数是否能在常量池中定位到一个类到符号引用,并检查这个符号引用代表到类是否已经被加载、解析和初始化。如果没有,那必须先执行相应的类加载过程。分配内存接下来虚拟机将为新生对象分配内存。对象所需内存的大小在类加载完成后便可完全确定,为对象分配空间的任务等同于把一块确定大小的内存从Java堆中划分出来。内存初始化内存分配完成后,虚拟机需要
1.class文件结构1.魔数与Class文件的版本Class文件头4个字节为魔数(MagicNumber),为0xCAFEBABE。紧接着4个字节为Class文件的版本号,第5、6字节为次版本号,第7、8字节为主版本号。2.常量池常量池中主要存放两大类常量:字面量和符号引用。字面量比较接近于java语言层面的常量概念,如文本字符串、声明为final的常量值等。而符号引用则属于编译原理方面的概念,
1,如果我们只是想要mock某一组件可以这样:依赖pom.xml<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0http://mav
事务特性ACID1.Atomicity(原子性)2.Consistency(一致性)3.Isolation(隔离性)4.Durability(持久性)查看事务隔离级别select@@tx_isolation;开始关闭事务//开始事务starttransaction/begin;//提交或回滚commit/rollback设置事务自动提交开关SETautocommit={0|1}设置事务隔离级别SE
BeanFactory的具体实现为DefaultListableBeanFactory,下面是一个简单的小例子:DefaultListableBeanFactoryfactory=newDefaultListableBeanFactory();XmlBeanDefinitionReaderreader=newXmlBeanDefinitionReader(factory);reader.loadB
以编程的方式使用spring提供的AOP功能,下面是一个简单的例子:package com.zws.spring.core.aop.springAop; import java.lang.reflect.Method; import org.springframework.aop.MethodBeforeAdvice; import org.spring
基于环形队列的超时触发算法只需要一个timer即可实现批量超时任务的触发,CPU消耗低,效率高。下面是此算法的简单实现。1,TaskHolder.javapackage com.zws.timer; /** * * @author wensh.zhu * @date 2018-04-22
公司的很多项目都陆陆续续引入了Spring Boot,通过对Spring Boot的接触了解发现其真的是大大地简化了开发、简化了依赖配置,很多功能注解一下就可以实现,真的是太方便了。下面记录了一个Spring Boot的入门程序实现。1,pom.xml文件:<project xmlns="http://maven.apache.o
现场反馈tomcat假死,已不能访问
JVM命令行工具汇总
1. 程序计数器(Program Counter Register)当前线程所执行的字节码的行号指示器。如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是native方法,这个计数器值则为空(Undefined)。线程私有。唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域。2. Java虚拟机栈(Java
synchronized实现同步的基础:Java中的每一个对象都可以作为锁。具体表现为以下3种形式。对于普通同步方法,锁是当前实例对象。对于静态同步方法,锁是当前类的Class对象。对于同步方法块,锁是Synchonized括号里配置的对象。从JVM规范中可以看到Synchonized在JVM里的实现原理,JVM基于进入和退出Monitor对象来实现方法同步和代码块同步。monitorenter指
对一个volatile变量的读,总是能看到(任意线程)对这个volatile变量最后的写入。对任意单个volatile变量的读/写具有原子性,但类似于volatile++这种复合操作不具有原子性。
1,缓存的引入:计算机的运算任务不可能只靠处理器计算就能完成,处理器至少要与内存交互。由于计算机的存储设备与处理器的运算速度以几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存来作为内存与处理器之间的缓冲:将运算需要使用的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存中,这样处理器就无需等待缓慢的内存读写了。基于高速缓存的存储交互很好
深入了解业务,最好的设计就出自你的手。强调对业务的了解对程序设计尤为重要。放弃修改历史的想法吧,一个项目的基本路径应该是这样的:项目开发、重构、测试、投产、运维,其中的重构可以对原有的设计和代码进行修改,运维尽量减少对原有代码的修改,保持历史代码的纯洁性,提高系统的稳定性。在维护的时候尽量通过继承、实现等手段实现,尽量不要修改原有代码。这样做的前提是顶层抽象的很完美,如果抽象不是很完美呢?1、考虑
使用线程池的好处:重用线程,线程的创建和销毁是很耗时的。控制线程的数量。线程池工具类:ThreadPool.javapackage com.zws.thread.pool; import java.util.concurrent.Callable; import java.util.concurrent.Future; /** *
(二) Bean对象实例化 上面程序中前三行对applicationContext.xml解析完成之后并没有生成bean实例,那么bean对象是在哪里实例化的?答案是在第一次获取bean实例的时候,也就是在调用DefaultListableBeanFactory的getBean的时候,注意,这里只是针对BeanFactory而言的并不是针对Appl
broker.idbroker的唯一标识符,如果不配置则自动生成,建议配置且一定要保证集群中必须唯一,默认-1log.dir日志数据存放的目录,默认/tmp/kafka-logslog.dirs日志数据存放的目录,如果没有配置则使用log.dir,建议此项配置。zookeeper.connectZookeeper主机地址,如果zookeeper是集群则以逗号隔开,如:172.6.14.61:218
Redis(Remote Dictionary Server,远程数据字典服务器)是一个开源的高性能内存数据库,常用作缓存服务器使用,也做消息队列使用。因其高性能、丰富的数据类型、可扩展等特性受开发者青睐,这里介绍在java中使用Jedis操作Redis的基本用法。1. 字符串String。package com.zws.redis.examples; im
zookeeper是apache下面一个高性能分布式协调调度框架,很多分布式计算框架都需要用到它,例如Hadoop。最近项目中用到了kafka,kafka的集群也需要用到zookeeper,所以这里记一下zookeeper集群的搭建。zookeeper正常运行有一个前提,那就是要求集群中过半服务器正常运
相比于GET请求,POST报文多了如下几个要素:1,Content-Length,这个是上送报文的长度,以字节为单位2,Content-Type,这主要是涉及到报文的格式和字符集。3,就是主报文 主类SimpleHttpPost:package com.zws.http; import java.io.IOException; i
HTTP协议可以说是WEB项目中最常用的协议了,项目开发中一般使用Httpclient进行HTTP接口的请求,Httpclient封装了HTTP协议的细节,如果不用Httpclient如何进行HTTP请求呢,下面是一个简单的实现HTTP协议的小程序:主要类SimpleHttpGet:package com.zws.http; imp
1,--log-slave-updates 系统变量名:log_slave_updates 一般情况下slave不会把从master接收到的binlog记录写入自己的binlog,这个参数会使slave通过SQL线程把从master接受到的binlog写进自己的binlog,但是前提是slave一定要开启自己的binlog,此参数一般用于级联复制,例如需要A复制到B,B复制
给客户做了两张报表,导出两张图片,但是客户非要导出到一张图片,然后就用java把两张图片合成一张了。package com.zws; import java.awt.Graphics; import java.awt.p_w_picpath.BufferedImage; import java.io.ByteArrayInputStream;
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号