- 博客(17)
- 资源 (1)
- 收藏
- 关注
原创 JAVA 生成一维码、讲多个图片合称为一个大图
近期做的一个项目,其中有一个批量生成一维码,然后将多个一维码放到一个图片输出的功能。自己做了一个小Demo,在这里记录一下。生成一维码的功能使用的是barcode,一下是代码,代码很简单,就一下帖处理,不在每块做详细描述了:import com.google.common.collect.Lists;import org.krysalis.barcode4j.HumanReadablePlace
2017-06-20 14:58:50 1258
原创 Java重排序和happens-before原则
重排序重排序是编译器和处理器为了优化性能而对指令执行的顺序进行重排序。大多数现代处理器都会采用将指令乱序执行的方法,在条件允许的情况下,直接运行当前有能力立即执行的后续指令,避开获取下一条指令所需数据时造成的等待。通过乱序执行的技术,处理器可以大大提高执行效率。也就是说程序的执行,并不是严格按照程序语句编写的顺序执行,在运行期间可能是被打乱的。重排序发生位置编译器重排序指令级并行重排序内存系统
2017-03-11 10:12:35 1433
原创 实现dubbo服务降级
dubbo降级服务使用dubbo在进行服务调用时,可能由于各种原因(服务器宕机/网络超时/并发数太高等),调用中就会出现RpcException,调用失败。服务降级就是指在由于非业务异常导致的服务不可用时(上面举得例子),可以返回默认值,避免异常影响主业务的处理。dubbo服务降级配置mock 配置方式dubbo官方文档上使用一个mock配置,实现服务降级。mock只在出现非业务异常(比如超时,网络
2017-03-11 09:19:57 14161 4
原创 Java JUC并发 AbstractQueuedSynchronizer学习
前言java.util.concurrent包(简称JUC)相比大家都应该很熟悉了。JUC包含许多线程安全、测试良好、高性能的并发构建块,之前一直没有研究过其核心锁的机制。前些日子,使用到了countDownLatch,没事点开了其源码,发现其核心功能是由AbstractQueuedSynchronizer的一个内部子类Syn实现的,进而发现在JUC中如ReentrantLock等很多常用类都实现了
2017-02-25 17:50:23 432
原创 Elasticsearch 5.0版本 学习二、修改数据
前言elasticsearch是个全文搜索工具,就是用来搜索的。现在来简单体验一下他的一些基本功能。基本概念在进行搜索之前,先了解一下elasticsearch的一些基本概念。文档(document)文档(document)是可以被索引的基本单位,在elasticsearch中文档用json格式来进行标示。如一个人员信息、某个产品信息。elasticsearch是面向文档的,这意味着它可以存储整个对
2017-02-07 15:03:26 918
原创 Elasticsearch 5.0版本 学习一、安装
介绍最近在学elasticsearch,虽然官网上的学习文档已经够详细了,但是我是一个英文渣,所以还是更喜欢看到中文的教程。但是elasticsearch版本更新很快,而且5.0又是一次很大的版本更新。在网上搜索到的教程说明大多都是5.0之前的,实体书就更不用想了。和现在的版本有很多的出入,所以碰了很多壁,所以就只能硬着头皮去看官网英文的教程,再次就记录下来。先说明一下elasticsearch是什
2017-02-07 13:09:36 4880
原创 Intellij IDEA Tomcat 启动报错, Unable to ping server at localhost:1099
最近在学着用Intellij IDEA ,第一次新建java web项目,配置好tomcat后,无法启动,报错如下:Intellij IDEA Tomcat Application Server was not connected before run configuration stop, reason: Unable to ping server at localhost:1099查询了半天,s
2016-09-10 15:01:59 23604 1
原创 Java网络爬虫基础
概述网络爬虫的工作流程: 1. 模拟浏览器访问网页 2. 从返回的响应数据中抓取关键点或全部数据保存到本地在java中我们会使用URLConnection 或者 Httpclient 进行一个网页接连,然后给网页发送get或者post方法请求,以获取网页的响应数据,然后再响应数据中抓取到我们需要的东西保存下来。简单爬取一个网页首先我们先来完整的爬取一个页面,我们以百度为例:这是百度的网址http
2016-05-19 12:21:44 491
原创 JVM学习笔记三:JVM类加载机制
概述Class文件最终需要加载到虚拟机中之后才能运行和使用。虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制。类加载过程类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用、卸载 7个阶段。其中验证、准备、解析部分统称为连接。七个阶段发生顺序如
2016-04-16 11:05:29 698
原创 JVM学习笔记二:GC 垃圾回收
概述学过一点java的都知道,java的GC是有JVM自动执行的。java内存运行时区域的各个部分,其中程序计数器、栈(虚拟机栈、本地方法栈)这些区域随着线程而生随线程灭而亡,这些区域内存分配和回收都有其确定性。Java堆和方法区则不同,这部分内存的分配和回收都是动态的,垃圾回收所关注的就是这部分内存区域。如何判断对象已“死”垃圾收集器在对堆内存进行回收之前,一定要确定内存中的对象中那些存活,那些死
2016-04-11 17:14:47 509
原创 Java23中设计模式一:单例模式
概述单例模式大概是最基础的设计模式了,大家大概都知道单例模式类中的几个要点: 1. 构造方法私有 2. 具有一个指向自己实例的私有静态引用 3. 返回静态引用的静态公共方法单例模式说明定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 类图: 优点:在内存中只有一个对象,节省内存空间。避免频繁的创建销毁对象,可以提高性能。避免对共享资源的多重占用。可以全局访问。
2016-04-01 10:44:49 455
原创 Java23种设计模式简介与原则
设计模式分类创建型模式:共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式:共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式:共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。设计模式原则1、开闭原则(Open Close Princ
2016-04-01 10:27:38 367
原创 Java并发:ThreadLocal详解
前言最近看多线程的时候看到ThreadLocal这个类,就baidu查了一下。在最开始查到的文章对这个类最多的说明就是ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。现在请忘掉这些说明,因为他彻底地错了!!!看了这些blog后会让你更加混乱,因为他们的对ThreadLocal的描述根本无法推出如何解决多线程并发。这让你看了之后根本
2016-03-31 12:03:06 575
转载 JAVA内存模型(Java Memory Model)
Java内存模型(JMM),不同于Java运行时数据区,JMM的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中读取数据这样的底层细节。JMM规定了所有的变量都存储在主内存(主存)中,但每个线程还有自己的工作内存(cache),线程的工作内存中保存了被该线程使用到的变量的主内存副本拷贝。线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内存中的变量,工作内存是
2016-03-29 16:57:01 416
原创 Tomcat 启动报错:SEVERE: Error listenerStart
Tomcat 启动报错:SEVERE: Error listenerStart问题今天处理一个问题,修改代码后部署到服务器后,启动tomcat时报错,错误信息如下:org.apache.catalina.core.StandardContext startInternalSEVERE: Error listenerStartorg.apache.catalina.core.StandardCon
2016-03-21 14:43:59 15872 2
原创 Java Enum枚举
java枚举类 (enum),之前在我的印象里只是一个提供定义一些具体常量的一个类,在工作以后用它比较少,也就没在意过,直到我在《开发者头条》中看到一片关于java单例模式最佳实践的文章,在文章的最后写到最好的单例模式写法其实是用枚举实现单例模式,让我有点云里雾里,所以就研究了下enum。1. 枚举的认知java一个最基础的枚举类建立如下:public enum EnumTest { ONE
2015-12-15 15:19:20 701
原创 JVM学习笔记一:Java内存区域
在虚拟机自动内存管理机制的帮助下,java程序员不需要去关心每一个对象的内存回收,不容易出现内存泄露和内存溢出问题,由虚拟机管理内存,看起来不需要程序员知道jvm是如何分配和回收内存的。但是不明白jvm底层的运行机理,对于java程序的优化、以及jvm的一些错误改正就无从谈起。1. 运行时数据区域JVM所管理下的内存将会包括一下几个运行时数据区域:程序计数器虚拟机栈本地方法栈方法区堆程
2015-07-18 10:40:59 464
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人