java
文章平均质量分 58
倾听心动旋律
这个作者很懒,什么都没留下…
展开
-
Springboot2.0+Spring5.0 reactor Controller&Handler 实战
前面初体验之后,我们尝试一下进行route Path的迁移,我们实战只写日常用到的配置实现方式,不具体分析原理,具体原理后续分析。在传统springMvc项目中我们使用Controller来处理serverlet的请求,在spring 5.0中的reactive方式中,对这些做了基本的兼容,如果把传统编码方式的项目迁移到react,只需要做一些特定的调整,在react mvc中,推荐使用handl原创 2018-01-31 11:20:51 · 2840 阅读 · 1 评论 -
java JVM栈和堆
JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method)堆区:1.存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身栈区:1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆...原创 2018-04-17 16:51:09 · 254 阅读 · 0 评论 -
java 线程状态
一. 线程状态类型1. 新建状态(New):新创建了一个线程对象。2. 就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。3. 运行状态(Running):就绪状态的线程获取了CPU,执行程序代码。4. 阻塞状态(Blocked):阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到...原创 2018-04-17 16:51:46 · 139 阅读 · 0 评论 -
Java 系列之性能优化建议
1.没有必要时请不用使用静态变量 使用Java的开发者都知道,当某个对象被定义为stataic变量所引用,这个对象所占有的内存将不会被回收。有时,开发者会将经常调用的对象或者变量定义为static,以便提高程序的运行性能。因此,不是常用到的对象或者变量,不要定义为static类型的变量,尤其是静态类对象的定义,一定要仔细考虑是否有必要。例如 public class X{ ...转载 2018-04-17 16:53:43 · 181 阅读 · 0 评论 -
Gradle系列之 复制文件(copy任务)
复制文件你可以使用复制任务( Copy )去复制文件. 复制任务扩展性很强,能够过滤复制文件的内容, 映射文件名.使用复制任务时需要提供想要复制的源文件和一个目标目录,如果你要指定文件被复制时的转换方式,可以使用 复制规则. 复制规则被 CopySpec 接口抽象,复制任务实现了这个接口. 使用 CopySpec.from() 方法指定源文件.使用 CopySpec.into() 方法指定目标目录...原创 2018-04-12 14:47:08 · 29861 阅读 · 1 评论 -
Gradle系列之Zip打包
/** * 执行zip打包操作 */task zip(type: Zip,dependsOn:copyToZip) { from 'build/libs/zip' destinationDir file('build/temp2')}依赖的copyToZip task为复制需要的文件到指定目录,然后执行zip task,生成zip包,可以使用destinationDir来指定生成zip...原创 2018-04-12 15:35:23 · 11740 阅读 · 0 评论 -
分布式事务处理分析
1.问题解析 要想做架构,必须识别出问题,即是谁的问题,什么问题。明显的,分布式架构解决的是高并发的问题,高并发下服务高可用和数据一致性问题问题;当规模规模较小时,单库HA即可满足请求,当业务规模持续增加,单库已经无法满足业务需求,业界主流做法,是对业务进行分表、分库,那么原来的有些业务,现在则要在一个事务中,保证两个库同时操作成功或操作不成功(一个库成功,一个库失败,要么重新尝试失败库操作...原创 2018-04-25 18:29:50 · 224 阅读 · 0 评论 -
JDK1.8源码解读之WeakHashMap解读
WeakHashMap 继承:AbstractMap 实现:Map 1、key value皆可以为null 2、非线程安全的,线程安全可以使用Collections#synchronizedMap方式获得 3、本Map中被Weak的是key,value还是强引用的,在实现的源码中,调用get resize getTable方式时候通过expungeStale...原创 2019-01-23 18:06:11 · 671 阅读 · 0 评论 -
Java基础之四种引用
Java四种引用包括强引用,软引用,弱引用,虚引用。强引用:只要引用存在,垃圾回收器永远不会回收Object obj = new Object();//可直接通过obj取得对应的对象 如obj.equels(new Object());而这样 obj对象对后面new Object的一个强引用,只有当obj这个引用被释放之后,对象才会被释放掉,这也是我们经常所用到的编码形式。软引用...原创 2019-01-19 12:23:18 · 280 阅读 · 0 评论 -
JAVA基础之:reflection和introspector 简单介绍
接触JAVA语言后就会发现这样两个词:反射(Reflection)和内省(Introspector),经常搞不清楚这到底是怎么回事,在什么场合下应用以及如何使用?今天把这二者放在一起介绍,因为它们二者是相辅相成的。反射 相对而言,反射比内省更容易理解一点。用一句比较白的话来概括,反射就是让你可以通过名称来得到对象(类,属性,方法)的技术。例如我们可以通过类名来生成一个类的实例;知道了方...原创 2019-02-06 13:49:39 · 258 阅读 · 0 评论 -
JDK动态代理解析
动态代理,这个词在Java的世界里面经常被提起,尤其是对于部分(这里强调“部分”二字,因为有做了一两年就成大神的,实力强的令人发指,这类人无疑是非常懂动态代理这点小伎俩的)做了一两年新人来说,总是摸不清楚来龙去脉,一两年是个坎,为什么是一两年,才入门的新人可能对这东西没什么感觉,没到这一步,做了很久开发的人显然是明白这其中原理的,而做了一两年的,知其然而不知其所以然,所以一两年工作经验的人很多是很...转载 2019-02-21 15:28:37 · 251 阅读 · 0 评论 -
Java wait和sleep的异同
首先,要记住这个差别,“sleep是Thread类的方法,wait是Object类中定义的方法”。尽管这两个方法都会影响线程的执行行为,但是本质上是有区别的。Thread.sleep不会导致锁行为的改变,如果当前线程是拥有锁的,那么Thread.sleep不会让线程释放锁。如果能够帮助你记忆的话,可以简单认为和锁相关的方法都定义在Object类中,因此调用Thread.sleep是不会影响锁的相关...原创 2018-04-17 09:47:48 · 163 阅读 · 0 评论 -
JS判断pc mobile几种方式
方法一:function IsPC(){ var userAgentInfo = navigator.userAgent; var Agents = new Array("Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"); var flag = true;转载 2018-04-11 15:33:59 · 1992 阅读 · 0 评论 -
HTML5 JS常见问题汇总
1、Form表单中Button按钮,点击刷新整个页面 button,input type=button按钮在IE和w3c,firefox浏览器区别: a、当在IE浏览器下面时,button标签按钮,input标签type属性为button的按钮是一样的功能,不会对表单进行任何操作。 b、但是在W3C浏览器,如Firefox下就需要注意了,button标签按钮会提交表单,而in...原创 2018-04-08 13:33:25 · 290 阅读 · 0 评论 -
Dubbo命令行详解
dubbo 命令行1、invoke 调用服务 方式一:invoke 服务.方法invoke com.test.dubbo.xxxxService.findDatas(null,null,null,null,null,null) 方式二:invoke 方法----方法名称唯一时会自动寻找服务信息invoke getData(1,null)参数:1、参数使用json原创 2018-01-26 14:30:58 · 8524 阅读 · 0 评论 -
Springboot2.0+Spring5.0 react 初体验
springboot2.0 和spring5.0开始支持noblock模式,据官方测试可以对于速度性能没有明显提高,但是对于服务器利用率,可以提高50%以上,对于此种说法是否真的能到这么到,后续进行测试,并且今日dubbo开始开发3.0,将全面使用back pressure的no block技术,也宣布机器利用率能提高50%以上,静待三个月后的结果。另外spring 官方已经提供了redis、原创 2018-01-30 10:07:33 · 5106 阅读 · 0 评论 -
ES(ElasticSearch) 集群搭建
环境:os:centos 7 jdk:java 81、下载ES https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.2.zip2、下载kibana(图形管理界面 )https://artifacts.elastic.co/downloads/kibana/kibana-6.2.2-linux-...原创 2018-03-07 11:27:22 · 392 阅读 · 0 评论 -
Redis、Memcached 和MonogoDB的异同
Redis(内存数据库) 是一个key-value存储系统(布式内缓存,高性能的key-value数据库)。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这...原创 2018-03-07 14:08:26 · 713 阅读 · 0 评论 -
java 高cpu问题排查
1、top 查看高占用的pid2、ps -mp 34668(pid) -o THREAD,tid,time | sort -rn 查看长时间占用cpu的线程id3、printf "%X\n" 35186 将线程id转换为16进制(结果为886A)4、jstack 34668 |grep 886A 使用java自带的工具查看对应的线程信息,排查问题...原创 2018-03-07 14:35:48 · 315 阅读 · 0 评论 -
Java8 HashMap解析
实现接口:Map、Cloneable、Serializable继承:AbstractMapHashMap继承自Map接口,也就意味着HashMap提供了所有的map操作。1、允许null值的key、value2、非线程安全,可以使用Map m = Collections.synchronizedMap(new HashMap(...))方式获取安全的map3、get、put操作时间复杂度为O(1)...原创 2018-03-09 08:10:31 · 164 阅读 · 0 评论 -
dubbo-spring-boot-starter
资源地址:https://github.com/alibaba/dubbo-spring-boot-starterDubbo Spring Boot Starter。支持jdk版本为1.6或者1.6+(在修改源码前,请导入googlestyle-java.xml以保证一致的代码格式)dubbo-spring-boot-starter 很简单,也很方便使用,它同时集成了dubbo 的 provid...转载 2018-03-09 15:34:33 · 1807 阅读 · 0 评论 -
Java 内存模型以及垃圾收集
一、JVM体系结构程序计数器:是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。虚拟机栈:是描述java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。本地方法栈:跟虚拟机栈类似,虚拟机栈是为虚拟机执行java...转载 2018-03-09 15:46:20 · 155 阅读 · 0 评论 -
Google Java代码规范
原文地址:https://google.github.io/styleguide/javaguide.htmlGIthub上GoogleCode风格的配置文件(支持Eclipse IDE和IntelliJ IDE):https://github.com/codeset/google-java-styleguide1简介本文档作为Java编程语言中源代码的Google编码标准的完整定义。当且仅当它遵...原创 2018-03-09 16:09:59 · 8177 阅读 · 2 评论 -
java8 Hashtable 解析
实现接口:Map<K,V>, Cloneable, java.io.Serializable继 承:Dictionary1、线程安全,通过方法synchronized实现2、key 、value均不能为空3、两个重要参数initial capacity(初始化容量)、load factor(扩容因子) 这两个参数对性能影响很大,决定了对时间和空间的使用,默认值分别为16、0....原创 2018-03-09 17:06:00 · 314 阅读 · 0 评论 -
Java Web Servlet 生命周期
Servlet运行在Servlet容器中,其生命周期由容器来管理。Servlet的生命周期通过javax.servlet.Servlet接口中的init()、service()和destroy()方法来表示Servlet的生命周期包含了下面4个阶段:1.加载和实例化2.初始化3.请求处理4.服务终止 Web服务器在与客户端交互时Servlet的工作过程是:...转载 2019-02-11 16:59:32 · 12661 阅读 · 0 评论