自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

转载 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 188

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

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

2019-11-23 15:32:31 641 1

转载 快速排序算法

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

2019-11-13 15:58:01 88

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

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

2019-02-12 16:11:13 408

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

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

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

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

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

2019-01-07 10:54:26 566 1

转载 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 598

转载 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 1403

转载 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 1323

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

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

2018-06-07 17:16:06 2407 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 4995 2

转载 JVM性能调优

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

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

转载 聊聊JVM的年轻代

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

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

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

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

2018-01-30 16:20:26 1109

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

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

2018-01-12 15:08:06 12112 2

转载 Base64使用案例

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

2018-01-10 17:14:08 1442

转载 Java IO流分析整理

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

2018-01-10 16:31:13 557

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

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

2017-05-19 18:24:46 2025 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 2438

转载 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 1940 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 1708 3

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

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

2016-09-26 18:43:24 13649 3

转载 MongoDB之索引

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

2016-09-08 14:43:23 1456 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 25186 5

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

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

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

转载 Spring线程池开发实战

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

2016-05-25 14:58:00 6934 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 6159 4

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

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

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

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

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

2016-04-25 17:44:19 12140 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 9484 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 5467 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 9379 6

原创 MongoDB 初识(一)

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

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

原创 Session 详解

Session 对象可以使用 Session 对象存储特定用户会话所需的信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Httpsession具有如下A

2016-03-03 15:26:42 3452 5

转载 解决nginx负载均衡的session共享问题

查了一些资料,看了一些别人写的文档,总结如下,实现nginx session的共享php服务器有多台,用nginx做负载均衡,这样同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态,我们使用session无非是扩大变量的作用域,让我们在一次请求中可以随意获取session中存储的数据。详细信息查看:JSP中 Session和作用

2016-03-03 12:51:53 12541 3

转载 Spring 事务配置

要了解事务配置的所有方法,请看一下《Spring事务配置的5种方法》本文介绍两种配置方法: 一、      XML,使用tx标签配置拦截器实现事务一、      Annotation方式以下所使用环境为Spring4.0.3、Hibernate4.3.5 一、      XML,使用tx标签配置拦截器实现事务Entity类User.java,持久化类,对应数据库表userpackage com.l

2016-03-02 16:56:10 2508 3

原创 JAVA 并发编程-应用篇

提到java多线程不免有些人会头大,很多概念都是很理解但是真正到了实战的时候又是不知道如何操作了,下面就结合实际项目来说说多线程的应用。业务需求:    举例:批量插入10万条用户的相关活动优惠券    操作方式:使用固定10个大小的线程池来做,并每次处理1000条插入数据线程类:注实现Callable接口的是能得到返回值的线程类对应的业务实现类:问题在于,当我们需要使用多线程操作时,一般会先查询

2016-03-02 15:27:32 3511 4

转载 聊聊jvm内存模型及垃圾回收算法

jvm内存模型 1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代(Perm)  其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,有虚拟机直接分配,但可以通过-XX:PermSize -XX:MaxPermSize 等参数调整其大小。 年轻代(New):年轻代用来存放JVM刚分配的J

2016-03-01 15:16:10 4541 6

转载 JAVA 生成随机数,并根据概率、比率

做一个翻宝程序,通过返回数字0-5来判断中奖情况,012345,这几个数字的出现的概率是0出现最高,1出现比0少,2出现比1少,依次下去 /** * JAVA 返回随机数,并根据概率、比率 * @author zhanglei * */ public class MathRandom { /**

2016-03-01 10:07:02 12015 7

原创 MyBatis 模糊匹配

s

2016-02-29 16:46:02 3772 5

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