JAVA
文章平均质量分 56
Java日常开发积累和感悟
ChanYeeLi
这个作者很懒,什么都没留下…
展开
-
maven 打包时的web.xml问题
maven web项目在打包时,报如下的错误:[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.1.1:war (default-war) on project com.shihou.session.manager.service: Error assembling WAR: webxml attri原创 2017-11-22 11:15:40 · 1033 阅读 · 0 评论 -
JAVA 并发编程
JMM JAVA MEMRY MODLE JAVA内存模型可见性士大夫 原子性原子性顺序性顺序性 Happens-before原则程序次序法则监视器法则volatie变量法则线程启动法则线程终结法则中断法则终结法则传递性 线程生命周期Java当中,线程通常都有五种状态,创建、就绪、运行、阻塞和死亡。 第一是创建状态。在生成线程对象,并没有调用该对象的start方法,这是线程处于原创 2017-11-27 16:01:28 · 343 阅读 · 0 评论 -
spring boot 手动获取实现类
spring boot 手动获取实现类import org.springframework.web.context.WebApplicationContext;import org.springframework.web.context.support.WebApplicationContextUtils;WebApplicationContext cxt = WebApplicationCont原创 2017-12-06 16:32:33 · 1393 阅读 · 0 评论 -
并发编程 atomic collections
并发编程 atomic原创 2017-12-06 22:30:39 · 511 阅读 · 0 评论 -
从0到1认知分布式系统
从0到1整体认知分布式系统概要: 1. 分布式架构的发展历史与背景 2. 如何着手架构一套分布示式系统 3. 分布式架构所带来的成本与风险分布式架构的发展历史与背景场景一: 一家做政务OA系统的公司老板发现跟竞争对手比发现自己的系统的架构不是分布示的,找到技术负责人问,把系统架构升级成分布示架构要多长时间?技术负责人网上查了查 dubbo官网看了看 Demo 这不很简单吗,拍着胸脯一翻译 2017-12-25 21:11:51 · 476 阅读 · 0 评论 -
分布式服务架构
分布式服务架构的发展历程1. JEE架构 2. SSH强调内容架构 3. Web service 架构 4. ESB架构 5. 微服务架构 6. 微服务的团队管理 7. 微服务服务架构的精髓 8. 微服务架构的痛点 保证分布式服务一致性的最佳实战 保证分布式服务架构高性能的方法论保证分布式服务高可用的最佳实践资料来自图灵学院。想来的同学请联系我:QQ:1097704842转载 2017-12-26 23:26:15 · 512 阅读 · 0 评论 -
mybatis generator 配置文件微解
mybatis 代码生成器mybatis/generatorgithub地址 : https://github.com/mybatis/generator github文档地址:https://github.com/mybatis/generator/releases<?xml version="1.0" encoding="UTF-8"?><!DOCTY...原创 2017-12-29 17:00:58 · 264 阅读 · 0 评论 -
JAVA 集合
Java集合框架是指导java的集合类。Collection 接口是一组允许重复的对象。Set 接口继承 Collection,但不允许重复,使用自己内部的一个排列机制。 List 接口继承 Collection,允许重复,以元素安插的次序来放置元素,不会重新排列。Map接口是一组成对的键-值对象,即所持有的是key-value pairs。Map中不能有重复的key。拥有自己的内部排列机制。原创 2018-01-04 14:38:38 · 246 阅读 · 0 评论 -
consider increasing the maximum size of the cache. After eviction approximately [10,239] KB of data
console警告缓存不够。 根据apache官方文档:http://tomcat.apache.org/tomcat-8.0-doc/config/resources.html The maximum size of the static resource cache in kilobytes. If not specified, the default value is 10240 (10转载 2018-01-15 21:28:41 · 4523 阅读 · 0 评论 -
JVM 微解1
知识储备:JVM和普通虚拟机 vmvare,visualbox虚拟机:完整的一个能够提供虚拟主机的PC,所以我们需要在上边安装操作系统,是通过使用操作系统软件模拟物理CPU的指令集 jvm:程序自己的独立运行环境,比如说:对战,寄存器,虚拟硬件架构,Java字节码指令集等JVM/JDK/JRE关系 JDK : Java Development ToolKit(Java开发工具包)。J原创 2017-11-15 09:57:35 · 303 阅读 · 0 评论 -
JVM 微解2
JVM Trace跟踪参数-verbose:gc 打印GC日志信息-XX:+PrintGCDetails 打印GC日志信息-Xloggc:d:/gc.log GC日志目录-XX:+PrintHeapAtGC 每次一次GC后,都打印堆信息-XX:+TraceClassLoading 类加载信息JVM 内存分配参数详解-Xmx 最大堆–X原创 2017-11-20 00:13:04 · 399 阅读 · 0 评论 -
java 等待线程/线程池执行完毕
1.单线程开始并执行完毕 当线程开始后,需要用到join的方法 不废话直接贴代码 public static void main(String args[]) { long begin = System.currentTimeMillis(); System.out.println(begin); Thread thread = new Thr原创 2017-08-07 15:43:54 · 7990 阅读 · 0 评论 -
maven 跳过单元测试
1.使用maven.test.skip,不但跳过单元测试的运行,也跳过测试代码的编译。 mvn package -Dmaven.test.skip=true 2.使用 mvn package -DskipTests 跳过单元测试,但是会继续编译; mvn package -DskipTests原创 2017-08-08 11:20:00 · 701 阅读 · 0 评论 -
我见过的最好的websocket 介绍
转载:https://www.zhihu.com/question/20215561 作者:Ovear 链接:https://www.zhihu.com/question/20215561/answer/40316953 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。一、WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关转载 2017-08-08 16:45:19 · 2489 阅读 · 0 评论 -
servlet 3.0 版本特性
转自:https://www.ibm.com/developerworks/cn/java/j-lo-servlet30/index.htmlServlet 3.0 新特性概述重点内容Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布。该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发和部署。其中有几项转载 2017-08-16 11:19:28 · 432 阅读 · 0 评论 -
线程笔记
线程的5中状态线程的常用方法线程优先级线程礼让原创 2017-08-17 11:09:52 · 319 阅读 · 0 评论 -
微信支付 package info not match special pay url
https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_1 微信官方 统一支付接口文档,有下面的一句话, 所以将统一下单的trade_type的参数值修改为NATIVE,就解决问题了如果觉得文章真心好, 请打赏下我吧http://blog.csdn.net/assassinsshadow/article/details/7608原创 2017-08-30 03:55:02 · 1753 阅读 · 3 评论 -
获取客户端的真实IP地址
转自:http://blog.csdn.net/zelda002/article/details/45967421获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是 有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用 了反向代理软件,用request.getRemoteAddr()方法获取的转载 2017-08-30 10:38:05 · 1490 阅读 · 0 评论 -
log4j2 出现 Could not load [org.apache.logging.log4j.core.impl.Log4jLogEvent$Builder]
最近看日志忽然发现,log4j报如下错误。31-Aug-2017 11:00:00.012 INFO [Log4j2-Log4j2Scheduled-1] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading Illegal access: this web application instance原创 2017-08-31 14:24:21 · 8798 阅读 · 1 评论 -
java 多线程 乐观锁悲观锁
乐观锁原理: 有一种方式就是CAS(Compare And Swap),即修改数据之前先比较与之前读取到的值是否一致,如果一致,则进行修改,如果不一致则重新执行,这也是乐观锁的实现原理。不过CAS在某些场景下不一定有效,比如另一线程先修改了某个值,然后再改回原来值,这种情况下,CAS是无法判断的。悲观锁:大多数情况下依靠数据库的锁机制实现,以保证操作最大程度的独占性。但随之而来的就是数据库性能的大转载 2017-09-09 09:07:35 · 501 阅读 · 0 评论 -
java timer缺陷
1.Timer管理时间延迟缺陷 Timer执行周期任务时依赖系统时间,如果当前系统时间发生变化会出现一些执行上的变化ScheduledExecutorService基于时间的延迟,不会由于系统时间的改变发生执行变化。2.Timer抛出异常缺陷 timer中的任务如果有一个抛出异常, 则后边的任务不会执行。 这个缺陷可以从Timer.java中的mainLoop方法看出, 整个方法只抛出了In原创 2017-09-10 22:14:18 · 1594 阅读 · 0 评论 -
java 守护线程
守护线程与普通线程的唯一区别是:当JVM中所有的线程都是守护线程的时候,JVM就可以退出了;如果还有一个或以上的非守护线程则不会退出。(以上是针对正常退出,调用System.exit则必定会退出)转载 2017-09-11 19:42:06 · 435 阅读 · 0 评论 -
http 无连接 无状态
无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。转载 2017-09-11 20:44:13 · 747 阅读 · 0 评论 -
java 守护线程
守护线程与普通线程的唯一区别是:当JVM中所有的线程都是守护线程的时候,JVM就可以退出了;如果还有一个或以上的非守护线程则不会退出。(以上是针对正常退出,调用System.exit则必定会退出):poop:转载 2017-09-12 11:47:38 · 338 阅读 · 0 评论 -
java 运算符
^ 异或:异或运算(^)都以二进制数据为基础进行的运算。也就是说当代码中使用到异或运算时,都会先将两个条件进行转换,转换成二进制数据后,再进行运算。异域中同位如果值相同(都是0或者都是1)则为0,不同(一个是0,一个是1)为1。int a=4;int b=6;int c = a^b;//c的值是a和b的异或。值为2.运算过程:a转换为二进制:0100b转换为二进制:01100100^01原创 2017-09-12 15:42:54 · 321 阅读 · 0 评论 -
java 不常用关键字
transienttransient:临时的; 主要作用是使修饰的变量不被序列化; java序列化有两种方式: 1.实现 Serializable 2.实现Externalizablenativenative:即 JNI,Java Native Interface; 该关键字修饰的方法表示,java并不提供具体的实现,因为其实现体是由非java语言在外面实现的 具体流程 参考资料转载 2017-09-12 16:13:26 · 623 阅读 · 0 评论 -
java集合之 Map
Map是java中常用的接口。 Map所有的子接口:Bindings, ConcurrentMap<K,V>, ConcurrentNavigableMap<K,V>, LogicalMessageContext, MessageContext, NavigableMap<K,V>, SOAPMessageContext, SortedMap<K,V>所有实现该接口的实现类AbstractMap,原创 2017-09-12 22:57:37 · 433 阅读 · 0 评论 -
java 值传递和引用传递
值传递和引用传递8种基本数据类型,和其扩展的引用类型,都是值传递,也就是说是将值拷贝了一份,传递下去。除了8种基本类型和其扩展的类型之外,都是引用传递,即传递的是引用的内存地址。对于基本类型,赋值运算符会直接改变变量的值,原来的值被覆盖掉。 对于引用类型,赋值运算符会改变引用种所保存的地址,原来的地址被覆盖。但是原来的对象不会改变(非常重要)。 java中没有被任何引用所指向的对象是垃圾,会被垃原创 2017-09-14 11:05:57 · 442 阅读 · 0 评论 -
java数据类型
数据类型是程序设计语言描述事物、对象的方法。Java数据类型分为内置类型和扩展类型两大类。 内置类型就是java语言本身提供的基本数据类型。比如,整数型int,浮点型float,字符char,布尔值Boolean。 扩展类型则是java语言根据基本数据类型扩展出的其他类型,java要求所有的扩展类型都必须包括在类定义里边, 这就是java为什么是面向对象编程语言的原因。8中基本数据类型:bbc原创 2017-09-14 11:23:38 · 686 阅读 · 2 评论 -
linux 安装JAVA运行环境和apache-tomcat
yum 安装JAVA环境 1.下载jdk http://www.oracle.com/technetwork/java/index.html 选择适合自己的jdk下载 我download的版本是 http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-l原创 2017-06-06 09:57:30 · 1361 阅读 · 0 评论 -
java volatile关键字
volatile关键字是java用来解决可见性和有序性问题的。好多人认为volatilehe和synchronized一样,皆是使修饰的对象在操作的时候具有原子性。其实不然,volatile修饰的变量的单次读/写可以保证原子性。如long,double类型的变量,但是并不能保证i++和++i这种操作的原子性,为什么呢?因为本质上i++/++i是读写两次操作。要想保证操作的原子性可以通过Atomi转载 2017-09-09 10:40:17 · 254 阅读 · 0 评论 -
JAVA自带故障排查工具
jpsjinfojmapjstack 打印线程dump,发现线程目前停留在哪行代码 -l 打印线程锁信息 -F 强制dumpjstat 统计信息 >jconsolejvisialvm原创 2017-11-19 21:41:08 · 802 阅读 · 0 评论 -
微信支付上线遇到的nss问题 (openjdk引起的祸)
前段时间在做微信支付服务,和微信相关的app id,商户信息都用的是我自己的,没什么问题。 要切到公司的生产环境,遇到的首个问题就是,打的war包启动不起来了, 后来发现公司的服务器安装的是jdk1.7的版本。而我本地的开发环境是1.8。(/擦汗) 果断的把<plugin> <groupId>org.apache.maven.plugins</groupId> <artifact原创 2017-09-15 17:47:48 · 3131 阅读 · 0 评论 -
JAVA 栈内存和堆内存
java中栈内存指的是虚拟机栈,堆内存指的是java堆。栈内存 栈内存,虚拟机栈。每个方法被执行的时候都会创建一个栈帧,用来存储局部变量,操作栈,动态链接,方法出口等信息。局部变量包括各种基本类型的变量和对象的引用变量都是在方法的栈内存中分配。其中8字节(64位)长度的double和long类型的数据占用2个局部变量的空间,其他数据类型只占用一个。局部变量所需要的空间是在编译期间完成的,当进入一转载 2017-09-19 22:35:27 · 616 阅读 · 0 评论 -
java ==和equals区别
==是操作符,一般比较的是变量的引用(栈中的内存地址) equals是方法比较的是内容(比较两个实例在堆上的value)==比较的是地址equals比较的值;盗用一张图原创 2017-09-20 00:21:42 · 270 阅读 · 0 评论 -
java stringbuffer stringbuilder
*String 字符串常量 *StringBuffer 字符串变量(线程安全) *StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以转载 2017-09-26 12:26:36 · 291 阅读 · 0 评论 -
java 中变量存储位置的区别
转载:http://blog.csdn.net/yuan22003/article/details/6822221 java中的变量主要存储在以下几个地方 1.寄存器:最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new 出来的对象)或者常量池中(字符串常量对象存放在常量池中。)转载 2017-10-09 22:28:20 · 319 阅读 · 0 评论 -
java虚拟机之-内存区域
内存区域 Java虚拟机在执行Java程序的过程中会把他所管理的内存划分为若干个不同的数据区域。Java虚拟机规范将JVM所管理的内存分为以下几个运行时数据区:程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区。下面详细阐述各数据区所存储的数据类型。程序计数器(Program Counter Register) 运行时数据区域-程序计数器 一块较小的内存空间,它是当前线程所原创 2017-10-09 23:41:52 · 326 阅读 · 0 评论 -
JAVA8 lambda 微解
JAVA Lambda表达是随着Java8的诞生而出现的。 Java SE 8中新引入的lambda语言特性以及这些特性背后的设计思想。这些特性包括:lambda表达式(又被成为“闭包”或“匿名方法”)方法引用和构造方法引用扩展的目标类型和类型推导接口中的默认方法和静态方法主要语法: 1.用() -> {} 代码块替代了整个匿名类; 2.1.集合筛选,遍历List原创 2017-11-13 16:20:37 · 381 阅读 · 0 评论 -
java 获取服务器端ip
public static String getLocalhostIP(){ InetAddress address = null;//获取的是本地的IP地址 try { address = InetAddress.getLocalHost(); return address.getHostAddress();//192原创 2017-09-14 11:38:48 · 1391 阅读 · 0 评论