自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Learning

Change the world by program.

原创 Shell中的if结合正则表达式使用

在字符串的处理中,有时候需要使用正则表达式来进行判断。如何将if和正则表达式进行有效的结合那,是这个博客的主题思想。Shell中的if结合正则表达式使用通过resylt = $() 进行实现 问题描述:选出当前目录下,以XML结尾的文件。for filename in `ls`do result=$(echo "$filename" | grep "xml$" ) if [ "$r

2017-12-22 16:27:10 7525

原创 字符串的压缩

题目描述通过键盘输入一串小写字母(a-z)组成的字符串,编写一个字符串压缩程序,将字符串中连续出现的重复字母进行压缩,压缩字段的格式为,”字符重复的次数+字符”。 1.比如,字符串”abcbc”由于无连续重复字符,压缩后的字符串还是”abcbc”。 2.比如,字符串”xxxyyyyyyz”,压缩后为”3x6yz”.代码实现第一种实现方法/** * 暴力破解,因为使用了两个for循环,效

2017-10-12 15:58:28 710

原创 Shell中函数的定义和使用

和其他语言一样,在Shell语言中也有着函数。尽管在Shell中函数并非是必须的编程元素,但是通过使用函数,可以对程序进行更加好的组织。将一些相对独立的代码变成函数,可以提高程序的可读性和重用性。避免重复编写大量相同的代码。函数的定义在Shell中可以通过下面的两种语法来定义函数,分别如下:function_name (){ statement1 statement2 .

2017-09-02 16:28:01 56497 1

原创 Shell中的if和case判断语句

在程序的执行过程中,总会遇到各种各样的情况。而作为一个功能相对完善的程序来讲,应该可以根据不同的情况来选择执行不同的代码。此时,我们需要用到条件判断语句。条件判断语句是一种最简单的控制语句,该语句是的程序根据不同的条件来执行不同的程序分支。使用if语句进行条件判断条件判断语句可以使用if语句来实现,最简单的if语句的语法如下:if expressionthen statement1

2017-09-02 14:40:58 4430

原创 使用Hexo+GitHub搭建个人博客

使用Hexo+GitHub搭建一个属于自己的博客.准备注册GitHub账号,并建立新仓库你需要在 Github 上创建一个属于自己的账户,然后新建一个仓库(new repository),并命名为 YourSiteName.github.io,此时 Github 会帮助你初始化一个静态网页,你可以根据自己的喜好选择一些模版(这都不是重点),接着尝试访问下你所建的站点,成功后就可以开始动工了。安装H

2017-08-27 16:40:32 1083 1

原创 Xshell在Linux和Windows上传和下载文件

在一些时候,需要将Windows上的文件上传到Linux,有的时候也需要将Linux上的文件下载到Windows上进行分析。下面就使用XShell在Linux和Windows上上传和下载文件进行实现。使用sftp实现何为sftpsftp是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。连接sftp username@remo

2017-08-22 20:28:25 9663 1

原创 Shell脚本中整数的测试

在程序设计中,两个整数的比较是经常遇到的情况,也是算术运算中比较简单的运算。例如,当某个Shell程序执行结束后,会返回一个整数值,用户可以根据这个返回值是否大于0来判断程序是否执行成功。Shell中的整数测试与字符串类似,整数测试也有两种形式的语法:tets number1 op number2或者[ number op number2 ] 其中, number1和mumber2表示参与比较的两

2017-08-21 21:32:52 1161

原创 Shell脚本中的字符串测试

作为一个实用的、能解决实际问题的Shell脚本程序,必须能够根据执行过程中的各种实际情况来做出正确的选择。Shell提供了一系列的条件测试来处理程序执行过程中的各种情况,并进一步操作。本节将介绍各种条件测试的基本语法,以及Shell程序的基本流程控制语句判断语句的使用。条件测试 在Shell程序中,用户可以使用测试语句来测试指定的条件表达式的真或假。当指定的条件为真时,整个条件的测试返回值为0

2017-08-21 20:52:24 5363

原创 Shell脚本计算2-100的偶数和

使用Shell脚本来进行 2+4+6…+100,也就是2-100的偶数和的实现。使用for循环和 let#!/bin/sh SUM=0for (( i=0; i<=100; i++ ))do if test $((i%2)) -eq 0 ; then let SUM=SUM+i fidoneecho $SUM注意:使用let命令可以执行一个或者多个算

2017-08-21 20:16:42 6659

原创 Shell好的学习资料

在github发现的一个好的Shell学习内容,在此记录一下。网址https://github.com/billie66/TLCL

2017-08-21 19:54:27 504

原创 Shell判断字符串包含关系的方法小结

用Shell脚本的编写中,常用到字符串包含关系的判断。利用grep查找strA="long string"strB="string"result=$(echo $strA | grep "${strB}") if [[ "$result" != "" ]] then echo "包含"else echo "不包含"fi 先打印长字符串,然后在长字符串中 grep 查找

2017-08-21 19:49:27 6742

原创 查找指定目录下包含"xml"的文件

寻找当前母目录下包含”xml”这三个字符的文件。如果找到的胡话,就在当前的屏幕上打印出来。获取/目录下的内容[root@VM_156_149_centos ~]# ls -l /total 68lrwxrwxrwx. 1 root root 7 Apr 21 2016 bin -> usr/bindr-xr-xr-x. 4 root root 4096 Jul 25 15:2

2017-08-19 20:17:29 1790

原创 spring容器在初始化Bean时前和后的操作

在某些情况下,Spring容器在初始化Bean的时候,希望在初始化bean前和销毁bean前进行一些资源的加载和释放的操作。可以通过一下三种方式完成。Bean的方法加上@PostConstruct和@PreDestroy注解在xml中定义init-method和destory-method方法Bean实现InitializingBean和DisposableBean接口@PostConstru

2017-06-23 21:49:09 2744

原创 Spring中注入List Set Map Properties的配置文件

对于Spring中注入List Set Map Properties的配置文件如下:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

2017-06-23 21:22:15 2827

原创 小车相关的

就是那serial1 改成serial2还有一个就是serialEvent1 改成serialEvent2dealy_time 调节速度的,越大越快

2017-06-21 09:00:13 343

原创 quartz与spring4整合的第一种方式

近日项目开发中需要执行一些定时任务,借此机会整理了一下定时任务的几种实现方式,由于项目采用spring框架,所以我都将结合spring框架来介绍。分类从实现的技术上来分类,目前主要有三种技术Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少,这篇文章将不做

2017-06-19 17:22:19 4862

原创 Spring Context 工具类

在web的开发过程中,有时需要获取在beans中配置的bean.使用下面的方式可以实现.Spring Context 工具类@Componentpublic class SpringContextUtils implements ApplicationContextAware { public static ApplicationContext applicationContext;

2017-06-19 13:46:24 482

原创 spring更好的处理泛型

由于泛型擦除,使得Generic无法获取自己的Generic的Type类型。实际上BadClass()实例化以后Class里面就不包括T的信息了,对于Class而言T已经被擦拭为Object,而真正的T参数被转到使用T的方法(或者变量声明或者其它使用T的地方)里面(如果没有那就没有存根),所以无法反射到T的具体类别,也就无法得到T.class。* 而getGenericSuperclass()是Ge

2017-06-18 22:53:54 2269

原创 spring定时任务的用法

Spring Task,可以将它比作一个轻量级的Quartz,而且使用起来很简单,除spring相关的包外不需要额外的包,而且支持注解和配置文件两种.XML配置文件方式编写作业类就是即普通的Java类,如下, * 定时任务1import java.util.Date;public class TaskJob { public void myMethod() { Syst

2017-06-18 20:21:41 797 4

原创 Spring中线程池的用法

多线程并发处理起来通常比较麻烦,如果你使用spring容器来管理业务bean,事情就好办了多了。spring封装了java的多线程的实现,简化了开发。简单的Hello程序需要执行的线程类一般是对于业务的封装.将具体的业务逻辑放到,线程内执行。public class MessagePrinterTask implements Runnable { private String messag

2017-06-18 19:35:14 830

原创 ThreadPoolExecutor的参数介绍

ThreadPoolExecutor的介绍线程池类为java.util.concurrent.ThreadPoolExecutor,常用构造方法为:ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit u

2017-06-18 17:16:30 665

原创 ListenableFutureTask的异步回调

Java在JDK1.6提供了Future,FutureTask,ExecutorService等用于支持异步编程,但是Future,FutureTask没有提供Callback机制,只能主动轮询,通过get去获取结果。Spring的ListenableFutureTask对此做了扩展,支持callback机制。使得编程变得更加的简单。测试代码import java.util.concurrent.

2017-06-18 16:23:31 1603

原创 好的博客地址

在学习过程中,遇到的好的博客地址。记录下来方便以后学习.好的博客地址http://blog.csdn.net/pistolove/article/details/51428562http://www.cnblogs.com/chenpi/category/778984.html http://www.cnblogs.com/nick-huang/p/4848843.html

2017-06-18 11:02:35 356

转载 Guava ListenableFuture实现异步非阻塞调用

为了保证系统响应迅速,需要寻找一种方法能够使调取接口能够异步执行,而Java正好提供了类似的方法,在java.util.concurrent中包含了Future相关的类,运用其中的一些类可以进行异步计算,以减少主线程的等待时间。比如启动一个main方法,main中又包含了若干个其它任务,在不使用Java future的情况下,main方法中的任务会同步阻塞执行,一个执行完成后,才能去执行另一个;如果

2017-06-18 10:52:35 2881 1

原创 Quartz将定时任务持久化到数据库

如果用内存记录定时任务信息,应用重新启动后,定时任务信息将会丢失。比如,用户A通过系统设置1小时后执行Z操作,设置好后的,因系统重新启动,新启动的系统将会丢失“1小时后执行Z操作”的定时任务。如果,我们需要在系统意外(或非意外)重新启动后,仍保留定时任务信息,可以使用数据库存储定时任务信息。优秀的参考文章Lesson 9: Job Stores用数据库存储定时任务信息在上一节就到的quartz的简

2017-06-17 19:46:03 4741

原创 Quartz的搭建和在Web中的使用

Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Quartz是一个完全由Java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制。Quartz允许开发人员根据时间间隔来调度作业。它

2017-06-17 19:24:37 4564 1

原创 Java主线程等待线程池所有任务完成--线程池的封装

用线程池编写多线程程序时,当所有任务完成时,要做一些统计的工作。而统计工作必须要在所有任务完成才能做。所以要让主线程等待所有任务完成。可以使用ThreadPoolExecutor.awaitTermination(long timeout, TimeUnit unit)。封装的线程池public interface BaseExecutor { /** * @Title: init

2017-06-14 17:07:31 4015 1

原创 Java主线程等待子线程执行完毕-CountDownLatch

主线程代码//Main主线程 publicclassMainThread { publicstaticvoid main(String[] args) throwsInterruptedException { longstartTime = System.currentTimeMillis(); intthreadNum = 5;//线程数

2017-06-14 16:54:47 367

转载 Guava中的RateLimiter

昨天CodeReview的时候看到同时使用RateLimiter这个类用作QPS访问限制.学习一下这个类.RateLimiter是Guava的concurrent包下的一个用于限制访问频率的类.1.限流每个API接口都是有访问上限的,当访问频率或者并发量超过其承受范围时候,我们就必须考虑限流来保证接口的可用性或者降级可用性.即接口也需要安装上保险丝,以防止非预期的请求对系统

2017-06-14 16:25:10 431

原创 Guava中Cache的使用

缓存的主要作用是暂时在内存中保存业务系统的数据处理结果,并且等待下次访问使用。在日常开发的很多场合,由于受限于硬盘IO的性能或者我们自身业务系统的数据处理和获取可能非常费时,当我们发现我们的系统这个数据请求量很大的时候,频繁的IO和频繁的逻辑处理会导致硬盘和CPU资源的瓶颈出现。缓存的作用就是将这些来自不易的数据保存在内存中,当有其他线程或者客户端需要查询相同的数据资源时,直接从缓存的内存块中返回数

2017-06-14 14:39:20 1369

原创 Guava中Splitter和Joiner的用法

字符串的分隔和连接是一个常用的操作.Guava提供了Spliiter和Joiner来帮助我们简化开发。Splitter的用法基本用法测试代码public static void main(String[] args) { String str = "a,b, c,,d"; Iterable<String> result = Splitter.on(',')/

2017-06-14 13:58:26 2041

原创 Throwables帮你抛出异常,处理异常

Guava类库中的Throwables提供了一些异常处理的静态方法,这些方法的从功能上分为两类,一类是帮你抛出异常,另外一类是帮你处理异常。也许你会想:为什么要帮我们处理异常呢?我们自己不会抛出异常吗?假定下面的方法是我们要调用的方法。public void doSomething() throws Throwable { //ignore method body}public void

2017-06-14 11:09:31 1725

原创 Guava中的TypeToken,解决泛型运行时类型擦除的问题

关于对于Type的理解泛型是一种类型 关于Type,是一个标示接口,该标示接口描述的意义是代表所有的类型public interface Type {}Type的分类Class<T>ParameterizedType 泛型......泛型的结构public Person<T> { }public interface ParameterizedType extends Type

2017-06-14 10:56:46 1898

原创 Preconditions优雅的检验参数

在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按照正常流程执行下去。对于可预知的一些数据上的错误,我们一定要做事前检测和判断,来避免程序流程出错,而不是完全通过错误处理来保证流程正确执行,毕竟错误处理是比较消耗资源的方式。Guava类库中提供了一个作参数检查的工具类–Preconditions类, 该类可以大大地简化我们代码中对于参数的预判断和处理,让我们对方法输入

2017-06-13 20:23:49 370

原创 重写Object常用的方法

在Java中Object类是所有类的父类,其中有几个需要override的方法比如equals,hashCode和toString等方法。 Guava也提供了提供了覆写这几个方法的工具类。equals方法的介绍equals是一个经常需要覆写的方法, 可以查看Object的equals方法注释, 对equals有几个性质的要求: 1. 自反性reflexive:任何非空引用x,x.equals(x

2017-06-13 20:01:04 1192

原创 Properties配置文件数据加密

在一些情况下,需要对properties中的配置数据进行加密。比如Mysql数据库的密码,不应该以明文的形式直接保存在properties中,应该以密文的形式保存.PropertiesUtil用于读取properties配置文件的数据,并且将加密的密文进行解密./** * Parsing The Perperties Configuration File */public final cla

2017-06-10 16:58:42 3061 3

原创 Ztree创建带有复选框的树

需要增加的属性check: { enable: true}封装的工具代码function createTree(url, treeId) { var zTree; //用于保存创建的树节点 var setting = { //设置 check: { enable: true }, view: {

2017-05-14 11:18:27 11598 1

原创 Ztree的简单使用

ZTree的简介 ZTree 是一个依靠 jQuery 实现的多功能 “树插件”。优异的性能、灵活的配置、多种功能的组合是 zTree 最大优点。目录节点信息的判断通过setting的callback中的beforeClick回调函数,在单击前对是不是类目信息,进行判断。通过点击获取ZTree的节点信息通过在setting的callback中的onClick回调函数,获取单击的信息,并做处理。

2017-05-14 09:44:27 2224 1

原创 Shell编程中的引用和替换

通常对于弱类型的程序设计语言来说,变量的功能都比较单薄。但是对于Shell来说,变量的功能却非常强大。为了加强变量的功能,Shell对变量的使用方法进行了极大的扩展。本节将介绍其中的引用和替换。引用所谓引用,就是指将字符串用引号包括起来,以防止其中的特殊字符被Shell解释为其他含义。在Shell中,一共有4种引用符号,如下表所示, 引用符号 说明 双引号 除$、单引号、反引号和反斜

2017-05-01 21:24:35 711

原创 Vi编辑器的常用命令

Vi编辑器是Linux上最常用的编辑器,很多Linux发行版本都默认安装了Vi.Vi具有很多的命令,但是正因为Vi具有很多的命令,才使得Vi的功能非常的灵活和强大。下面详细介绍Vi编辑器的使用方法,主要包括Vi的使用模式、文件的打开、关闭和保存、插入文本、删除恢复字符,以及搜索等。一般模式当用户刚刚进入Vi编辑器的时候,当前的模式就是一般模式。插入文本是编辑器的一项基本功能。为了能够快速的在指定的

2017-05-01 20:09:27 476

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