自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(292)
  • 资源 (12)
  • 收藏
  • 关注

原创 三色标记法

前言本文主要介绍了三色标记法的基本思路、多标导致的浮动垃圾、漏标的处理方案等。1. 垃圾回收的简单回顾关于垃圾回收算法,基本就是那么几种:标记-清除、标记-复制、标记-整理。在此基础上可以增加分代(新生代/老年代),每代采取不同的回收算法,以提高整体的分配和回收效率。无论使用哪种算法,标记总是必要的一步。这是理算当然的,你不先找到垃圾,怎么进行回收?垃圾回收器的工作流程大体如下:标记出哪些对象是存活的,哪些是垃圾(可回收); 进行回收(清除/复制/整理),如果有移动过对象(复制/整理

2022-02-15 20:11:42 8219 6

转载 自动拆装箱(int,Integer)

包装类型Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class)。包装类均位于java.lang包,包装类和基本数据类型的对应关系如下表所示在这八个类名中,除了Integer和Character类以后,其它六个类的类名和基本数据类型一致,只是类名的第一个字母大写即可。为什么需要包装类很多人会

2021-04-02 23:38:23 779 1

转载 理解 Spring ApplicationListener

ApplicationContext事件机制是观察者设计模式的实现,通过ApplicationEvent类和ApplicationListener接口,可以实现ApplicationContext事件处理。如果容器中有一个ApplicationListener Bean,每当ApplicationContext发布ApplicationEvent时,ApplicationListener Bean将自动被触发。这种事件机制都必须需要程序显示的触发。其中spring有一些内置的事件,当完成某种操作时会

2020-09-03 16:39:54 419

转载 RocketMQ——广播消费模式与集群消费模式

RocketMQ有两种消费模式:BROADCASTING广播模式,CLUSTERING集群模式,默认的是 集群消费模式。本博客主要以广播模式为例!!!1.简介广播消费指的是:一条消息被多个consumer消费,即使这些consumer属于同一个ConsumerGroup,消息也会被ConsumerGroup中的每个Consumer都消费一次,广播消费中ConsumerGroup概念可以认为在消息划分方面无意义。在CORBA Notification规范中,消费方式都属于广播消费。在JMS

2020-09-02 18:13:46 2134

转载 RocketMQ(6)---发送普通消息(三种方式)

RocketMQ 发送普通消息有三种实现方式:可靠同步发送、可靠异步发送、单向(Oneway)发送。注意:顺序消息只支持可靠同步发送。GitHub地址:https://github.com/yudiandemingzi/SpringBootBlog一、概念1、可靠同步发送原理:同步发送是指消息发送方发出数据后,会在收到接收方发回响应之后才发下一个数据包的通讯方式。应用场景:此种方式应用场景非常广泛,例如重要通知邮件、报名短信通知、营销短信系统等。2、可靠异步发送原理...

2020-09-02 17:16:30 453

转载 RocketMQ(5)---RocketMQ重试机制

消息重试分为两种:Producer发送消息的重试和Consumer消息消费的重试。一、Producer端重试Producer端重试是指: Producer往MQ上发消息没有发送成功,比如网络原因导致生产者发送消息到MQ失败。看一下代码:@Slf4jpublic class RocketMQTest { /** * 生产者组 */ private static String PRODUCE_RGROUP = "test_producer"; .

2020-09-02 16:58:47 884

转载 RocketMQ(7)---顺序消费

如果要保证顺序消费,那么他的核心点就是:生产者有序存储、消费者有序消费。一、概念1、什么是无序消息无序消息无序消息也指普通的消息,Producer 只管发送消息,Consumer 只管接收消息,至于消息和消息之间的顺序并没有保证。举例Producer 依次发送 orderId 为 1、2、3 的消息,Consumer 接到的消息顺序有可能是 1、2、3,也有可能是 2、1、3 等情况,这就是普通消息。2、什么是全局顺序对于指定的一个 Topic,所有消息按照严格的先入先出(FI...

2020-09-02 14:58:52 404

转载 List集合取交集、并集、去除重复数据等

如果存在两个集合,在java中如何快速的取它们的交集、并集这些操作呢?1.先给出两个List集合List<String> listA = new ArrayList<String>();List<String> listB = new ArrayList<String>();listA.add("A");listA.add("B");listB.add("B");listB.add("C");2.取交集listA.retainAll(l.

2020-05-19 17:14:03 1231 1

转载 BeanUtils.copyProperties不支持复制集合的解决方案

工作中,经常使用Spring的工具类BeanUtils.copyProperties对bean属性进行复制,这里的复制属于浅复制。且不能复制集合和数组。本文会对该工具进行一些测试。文末会提出复制集合属性的解决方案。准备工作:准备测试需要的类 @Data public class Class { private People[] member; private Peo...

2019-11-23 15:32:31 3131 2

转载 快速排序算法

最开始学习编程,遇到排序问题,一般都是用冒泡法,因为冒泡法好理解,代码量少。但是这种算法时间复杂度高,当需要排序的元素较多时,程序运行时间很长,因此产生了快速排序算法。该算法的实现可分为以下几步:1. 在数组中选一个基准数(通常为数组第一个);2. 将数组中小于基准数的数据移到基准数左边,大于基准数的移到右边;3. 对于基准数左、右两边的数组,不断重复以上两个过程,直到每个子集只有一个...

2019-11-13 15:58:01 231

转载 Spring Boot学习笔记---Spring Boot 基础及使用idea搭建项目

Spring Boot 概述首先,Spring Boot是一个框架,主要理念就是消除项目中大量的配置文件,使项目更加短小精悍。我们知道 java 的开发显得很笨重:繁多的配置、开发效率低下、复杂的布署流程以及第三方技术集成难度大。所以说,spring boot就是在此环境下产生的。Spring Boot 的核心功能独立运行的Spring 项目 Spring Boot 可以以jar包的...

2019-02-12 16:11:13 556

转载 java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String

public static void main(String[] args) { Map&lt;String,Object&gt; tt= new HashMap&lt;String,Object&gt;(); int a = 187117; tt.put("aa",a); try { long b = (l...

2019-01-16 15:42:05 27453 1

转载 Java 如何有效地避免OOM:善于利用软引用和弱引用

Java 如何有效地避免OOM:善于利用软引用和弱引用  想必很多朋友对OOM(OutOfMemory)这个错误不会陌生,而当遇到这种错误如何有效地解决这个问题呢?今天我们就来说一下如何利用软引用和弱引用来有效地解决程序中出现的OOM问题。下面是本文的目录大纲:  一.了解 强引用、软引用、弱引用、虚引用的概念  二.进一步理解软引用和弱引用  三.如何利用软引用和弱引用解决OOM...

2019-01-07 10:54:26 830 2

转载 Java内部类的实现原理与可能的内存泄漏

在使用java内部类的时候要注意可能引起的内存泄漏 代码如下package com.example;public class MyClass { public static void main(String[] args) throws Throwable { } public class A{ public void methed1()...

2019-01-07 10:52:54 1122

转载 mongoDB执行插入语句报错com.mongodb.MongoSocketReadException: Prematurely reached end of stream

写在前面,不想看分析的直接看结果:总结来说就是你使用了Decimal128的Bson类型,但是你的mongodb版本低于3.4版本,不支持这个类型。在执行插入语句的时候,报错,如下:2018-07-04 18:14:23.660 ERROR com.mongodb.MongoSocketReadException: Prematurely reached end of streamcom...

2018-12-14 14:22:46 3861

转载 FastJson之@JSONField注解

准备一个Persion类public class Person { private Integer id; private String name; private Integer age; public Integer getId() { return id; } public void setId(Integ...

2018-11-28 16:46:12 4625

转载 linux expect详解(ssh自动登录)

shell脚本实现ssh自动登录远程服务器示例:#!/usr/bin/expectspawn ssh [email protected] "*password:"send "123\r"expect "*#"interact原文链接:http://www.xuanhao360.com/linux-expects/Expect是一个用来处理交互的命令。借助Expect,我们可以将交互...

2018-06-07 17:16:06 3941 1

原创 解析csv文件

以下内容仅为记录:第一步:解析csv文件 @Test public void testcsv() throws Exception { File csv = new File("C:\\Users\\hjy\\Desktop\\attendace164_20180312.csv"); // CSV文件路径 BufferedReader br = nu...

2018-03-13 20:41:35 6660 2

转载 JVM性能调优

JVM垃圾回收与性能调优总结JVM调优的几种策略  一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代(Perm)  其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,有虚拟机直接分配,但可以通过

2018-02-24 16:44:05 858 1

转载 聊聊JVM的年轻代

1.为什么会有年轻代我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用,这样就会对堆的所有区域进行扫描。而我们的很多对象都是朝生夕死的,如果分代的话,我们把新创建的对象放到某一地方,当GC的时候先把这块存“朝生夕死”对象的区域进行回收,这样就会

2018-02-24 16:00:52 637 1

转载 你真的会用Gson吗?Gson使用指南(一)

本文为作者根据日常使用结合Gson源码注释及wiki所作的原创内容,转载请注明出处。本文链接:http://www.jianshu.com/p/e740196225a4JSON (官网) 是一种文本形式的数据交换格式,它比XML更轻量、比二进制容易阅读和编写,调式也更加方便。其重要性不言而喻。解析和生成的方式很多,Java中最常用的类库有:JSON-Java、Gson、Jackson、Fa

2018-01-30 16:20:26 1228

转载 不为人知的Excel转压缩包逆天功能

星爷要是给你一个压缩文件,然后说这是一个Excel文件,你会怎么想?Excel文件确实可以通过压缩软件打包进压缩包中,但是把Excel自身变成压缩文件,多数人应该还没有听说过。— 01 —Excel与压缩包迷之关系其实,Office三姐妹在2007(或以上版本)中采用的后缀分别是xlsx、docx、pptx。这些格式相比旧版本都多了个X,它们

2018-01-12 15:08:06 19999 5

转载 Base64使用案例

Base64是一种用64个字符来表示任意二进制数据的方法。Base64编码可用于在HTTP环境下传递较长的标识信息以及二进制数据(例如图片文件、PDF文件等等)。Base64的原理很简单,首先,准备一个包含64个字符的码表:['A', 'B', 'C', ... 'a', 'b', 'c', ... '0', '1', ... '+', '/'] 也就是52个

2018-01-10 17:14:08 2173

转载 Java IO流分析整理

之前自己总结的:java IO流Java中的流,可以从不同的角度进行分类。按照数据流的方向不同可以分为:输入流和输出流。按照处理数据单位不同可以分为:字节流和字符流。按照实现功能不同可以分为:节点流和处理流。 输出流: 输入流:因此输入和输出都是从程序的角度来说的。字节流:一次读入或

2018-01-10 16:31:13 687

转载 ZooKeeper实战应用之【统一配置管理】

大型应用通常会按业务拆分成一个个业务子系统,这些大大小小的子应用,往往会使用一些公用的资源,比如:需要文件上传、下载时,各子应用都会访问公用的Ftp服务器。如果把Ftp Server的连接IP、端口号、用户名、密码等信息,配置在各子应用中,然后这些子应用再部署到服务器集群中的N台Server上,突然有一天,Ftp服务器要换IP或端口号,那么问题来了?不要紧张,不是问 挖掘机哪家强:),而是如何快速

2017-05-19 18:24:46 2269 1

转载 性能最好的序列化反序列化,Protobuf的用法(maven项目)

首先要在pom.xml里添加Protobuf的jar包 com.dyuproject.protostuff protostuff-core 1.0.8 com.dyuproject.protostuff protostuff-runtime 1.0.8 序列化的实体类User.Jav

2017-05-03 16:50:45 2819

转载 redis中各种数据类型对应的jedis操作命令

一、常用数据类型简介:      Redis常用五种数据类型:string,hash,list,set,zset(sorted set).1.String类型String是最简单的类型,一个key对应一个valueString类型的数据最大1G。String类型的值可以被视作integer,从而可以让“INCR”命令族操作(incrby、decr、decrby),这种情况下,该integer的值限

2016-12-23 16:41:56 2358 2

转载 Redis数据过期策略探究

通过EXPIRE key seconds命令来设置数据的过期时间。返回1表明设置成功,返回0表明key不存在或者不能成功设置过期时间。在key上设置了过期时间后key将在指定的秒数后被自动删除。被指定了过期时间的key在Redis中被称为是不稳定的。当key被DEL命令删除或者被SET、GETSET命令重置后与之关联的过期时间会被清除。[plain] view plain copy redis 1

2016-09-30 15:54:22 1785 3

转载 数据库分片(Sharding)与分区(Partition)的区别

Sharding不是一个某个特定数据库软件附属的功能,而是在具体技术细节之上的抽象处理,是水平扩展(Scale Out,亦或横向扩展、向外扩展)的解决方案,其主要目的是为突破单节点数据库服务器的 I/O 能力限制,解决数据库扩展性问题。Sharding 的应用场景  任何技术都是在合适的场合下能发挥应有的作用。 Sharding 也一样。联机游戏、IM、BSP 都是比较适合 Sharding 的应

2016-09-26 18:43:24 18823 4

转载 MongoDB之索引

一、索引基础:    MongoDB的索引几乎与传统的关系型数据库一模一样,这其中也包括一些基本的优化技巧。下面是创建索引的命令:    > db.test.ensureIndex({"username":1})    可以通过下面的名称查看索引是否已经成功建立:    > db.test.getIndexes()    删除索引的命令是:    > db.test.dropIndex({"use

2016-09-08 14:43:23 1519 4

转载 IntelliJ IDEA - 热部署插件JRebel 安装使用教程

IntelliJ IDEA - JRebel 安装使用教程JRebel 能做什么?JRebel 是一款热部署插件。当你的 java-web 项目在 tomcat 中 run/debug 的时候 ,修改某一个 java 文件时,tomcat 并不能将此文件的修改 实时编译 并反映到运行的项目中去。JRebel 就可以解决在项目运行状态run/debug 状态下任意修改 java 文件并动态反馈到运行

2016-09-06 19:47:54 31096 5

转载 MongoDB使用小结:一些不常见的经验分享

最近一年忙碌于数据处理相关的工作,跟MongoDB打交道极多,以下为实践过程中的Q&A,后续会不定期更新补充。     另有《MongoDB使用小结:一些常用操作分享》,注:本文完成时MongoDB的最新版本为MongoDB 2.6。1、count统计结果错误这是由于分布式集群正在迁移数据,它导致count结果值错误,需要使用aggregate pipeline来得到正确统计结果,例如:db.co

2016-08-09 14:05:34 4210 3

转载 Spring线程池开发实战

作者:chszs,转载需注明。作者博客主页:http://blog.csdn.net/chszs本文提供了三个Spring多线程开发的例子,由浅入深,由于例子一目了然,所以并未做过多的解释。诸位一看便知。前提条件:1)在Eclipse创建一个Java项目,我取名为SpringThreadDemo。2)项目所需的JAR包如图所示: 下面开始。注:项目源码已经托管到GitHub,地址:https://

2016-05-25 14:58:00 7054 1

原创 深入理解java异常处理机制

demo1:package test.java.example;/** * Created by hejingyuan on 2016/5/2. */public class TestCatchException { public TestCatchException() { } boolean testEx1() { boolean ret =

2016-05-02 16:59:35 6400 4

转载 如何在Chrome下使用Postman进行rest请求测试

在web和移动端开发时,常常会调用服务器端的restful接口进行数据请求,为了调试,一般会先用工具进行测试,通过测试后才开始在开发中使用。这里介绍一下如何在chrome浏览器利用postman应用进行restful api接口请求测试。在chrome浏览器中搜索插件,安装即可安装完成:使用方式:Get请求:在地址栏里输入请求url:http://localhost:9998/api/user选择

2016-04-25 18:33:54 6504 3

转载 通过 spring 容器内建的 profile 功能实现开发环境、测试环境、生产环境配置自动切换

软件开发的一般流程为工程师开发 -> 测试 -> 上线,因此就涉及到三个不同的环境,开发环境、测试环境以及生产环境,通常这三个环境会有很多配置参数不同,例如数据源、文件路径、url等,如果每次上线一个新版本时都手动修改配置会十分繁琐,容易出错。spring 为我们提供了 profile 机制来解决这个问题。spring允许我们通过定义 profile 来将若干不同的 bean 定义组织起来,从而实

2016-04-25 17:44:19 12706 5

原创 IntelliJ IDEA 15和Maven创建Java Web项目

File--new输入 GroupId和ArtifacstId选择本地安装好的maven,并添加archetypeCatalog输入项目名称点击Finish ,Maven会构建新建完成后的项目结构选择安装的jdk在main文件夹下新建一个java文件夹,把它设为源代码文件夹。Facets 的web设置添加Artifacts添加tomcat启动tomcat访问端口:

2016-03-21 20:43:56 9636 4

原创 使用 Morphia 和 MongoDB 实现持久化

直接来一个简单的demo:新建一个maven java project(maven-archetype-quickstart):DBHelper:package com.mongo.dao;import com.mongodb.Mongo;import com.mongodb.MongoClient;import org.mongodb.morphia.Datastore;import

2016-03-18 18:54:41 6035 7

原创 Nginx+Memcached+Tomcat session会话共享实战

服务器说明:192.168.1.8 tomcat1 memcached(虚拟机1)192.168.1.9 tomcat2(虚拟机2)192.168.1.200 nginx (本机)对于tomcat+nginx的配置请参考博客:【Nginx-反向代理服务器】实践篇(三)之Tomcat+Nginx搭建集群 接下来我们来安装memcached,注意linux系统的用户权限问题1.分别把memcached

2016-03-12 21:19:55 9734 6

原创 MongoDB 初识(一)

第一步:下载MongoDBMongoDB官方网站,根据自己的操作系统进行选择适应的版本即可。第二步:新建目录“D:\MongoDB\bin”,解压下载到的安装包,找到bin目录下面全部.exe文件,拷贝到刚创建的目录下第三步:在“D:\MongoDB”目录下新建“data\db”文件夹,它将会作为数据存放的根文件夹第四步:在“D:\MongoDB”目录下新建“data\log”文件夹,它将会作为日

2016-03-11 19:36:17 3431 2

Spring线程池demo

Spring 线程池 demo

2016-05-25

session共享 tomcat+nginx+memcache

tomcat+nginx+memcache+session 所需jar包,包括memcache等安装包

2016-03-12

CXF Spring 整合

Web Service学习-CXF与Spring整合为JavaEE应用发布WebService(三)

2015-07-31

CXF WebService带有拦截器

Web Service学习-CXF开发Web Service的权限控制(二)

2015-07-30

CXF开发Web Service实例demo

Web Service学习-CXF开发Web Service实例demo(一)

2015-07-30

Spring Web Flow

SpringWeb Flow 中的这个 <action-state> 是专为执行业务逻辑而设的 state 。如果某个应用的业务逻辑代码既不适合放在transition 中由客户端来触发,也不适合放在 Spring Web Flow 自定义的切入点,那么就可以考虑添加<action-state> 元素专用于该业务逻辑的执行。更倾向于触发某个事件来执行。

2015-07-02

Spring Web Flow CartApp4

CartApp3 demo仅仅介绍了简单的页面跳转,接下来我们要实现与业务逻辑相关的功能。 业务的逻辑涉及到数据的获取、传递、保存,相关的业务功能函数的调用等内容,这些功能的实现都可用 Java 代码来完成,但定义 Spring Web Flow 的语法与 Java 是无关的,这就要求 Spring Web Flow 提供与 Java 代码的整合机制。

2015-06-16

Spring Web Flow CartApp3

Spring Web Flow 的目标是成为管理Web应用页面流程的最佳方案。当你的应用需要复杂的导航控制,例如向导,在一个比较大的事务过程中去指导用户经过一连串的步骤的时候,SWF将会是一个功能强大的控制器。

2015-06-15

activiti外置表单demo

activiti外置表单demo实现 运行方式: 1,修改连接的数据库 2,初始化用户,初始化脚本在src/resources目录下 3,访问地址http://localhost:8080/activitiDemo 4,登录后,需要部署流程才可以使用,流程文件在diagrams文件夹下,打成压缩包上传即可。

2015-06-08

Spring IOC实现原理demo

Spring容器的原理 其实就是通过解析xml文件 通过反射创建出我们所需要的bean 再将这些bean挨个放到集合中 然后对外提供一个getBean 方法 以便我们获得这bean

2015-03-10

Eclipse搭建SSH架构

Eclipse搭建ssh框架,详细的搭建过程,逐步的整合过程!

2014-11-13

2012电算化题

2012年最新电算化试题,抓住机遇,相信自己肯定行!

2012-05-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除