自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

转载 java原子类和CAS

本文转载自:http://blog.csdn.net/jijianshuai/article/details/70853776 什么是CAS     CAS的全称为Compare-And-Swap,直译就是对比交换。是一条CPU的原子指令,其作用是让CPU先进行比较两个值是否相等,然后原子地更新某个位置的值,经过调查发现,其实现方式是基于硬件平台的汇编指令,就是说CAS是靠硬件实现的,

2017-05-31 12:49:20 382

原创 Linux脚本功略学习笔记15

众多处理文本命令的综合应用 (1):统计特定文件中的词频 统计文件中使用单词的频率是一个经常用到的任务,在这里能够应用我们业已习得的文本处理技巧。词频统计的方法有很多种。先来看一个脚本: 运行结果如下: 工作原理: egrep -o "\b[[:alpha:]]+\b" $filename 只用于输出单词。用-o 选项打印出由换行符分割的匹配字符序列。这样我们就可以在每行

2017-05-31 11:24:53 269

原创 编程题赏析4之微信红包

春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。 给定一个红包的金额数组gifts及它的大小n,请返回所求红包的金额。 若没有金额超过总数的一半,返回0。 测试样例: [1,2,3,2,2],5 返回:2 此题是剑指offer上的题目,其实

2017-05-31 11:11:28 450

转载 Leetcode 3sumcloset, 3sum, 4sum问题详解

本文转载自:http://www.cnblogs.com/TenosDoIt/p/3649607.html 3Sum Closest Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the s

2017-05-31 10:58:11 304

原创 mybatis和hibernate的区别

Mybatis技术特点: 1、  通过直接编写SQL语句,可以直接对SQL进行性能的优化; 2、  学习门槛低,学习成本低。只要有SQL基础,就可以学习mybatis,而且很容易上手; 3、  由于直接编写SQL语句,所以灵活多变,代码维护性更好。 4、  不能支持数据库无关性,即数据库发生变更,要写多套代码进行支持,移植性不好。 Hibernate技术特点: 1、 标准的orm框架,

2017-05-31 10:55:18 179

原创 spring中bean的生命周期

1 生命周期   1.1 初始化和销毁  目标方法执行前后执行后,将进行初始化或销毁。 1.1.1 目标类 public class UserServiceImpl implements UserService { @Override public void addUser() { System.out.println("e_lifecycle add use

2017-05-29 16:50:06 250

原创 Linux脚本攻略学习笔记14

使用awk进行高级文本处理 awk 是一款设计用于数据流的工具。它颇为流行的原因在于可以对列和行进行操作。awk有很多内建的功能,比如数组,函数等,这是它和C语言的相同之处。 (1)预备知识 awk的脚本的结构基本如下所示:$ awk 'BEGIN{print "start"} pattern {comands} END {print "end"}' fileawk命令也可以从std

2017-05-29 10:24:17 318

原创 spring中beanfactory和applicationcontext创建bean的区别

l        BeanFactory :这是一个工厂,用于生成任意bean。        采取延迟加载,第一次getBean时才会初始化Bean l        ApplicationContext:是BeanFactory的子接口,功能更强大。(国际化处理、事件传递、Bean自动装配、各种不同应用层的Context实现)。当配置文件被加载,就进行对象实例化。        Clas

2017-05-28 14:53:34 1195

原创 编程题赏析3

小牛牛是牛牛王国的将军,为了训练出精锐的部队,他会对新兵进行训练。部队进入了n个新兵,每个新兵有一个战斗力值和潜力值,当两个新兵进行决斗时,总是战斗力值高的获胜。获胜的新兵的战斗力值就会变成对手的潜力值 + 自己的战斗力值 - 对手的战斗力值。败者将会被淘汰。若两者战斗力值一样,则会同归于尽,双双被淘汰(除了考察的那个新兵之外,其他新兵之间不会发生战斗) 。小牛牛想知道通过互相决斗之后新兵中战

2017-05-28 00:15:34 622

转载 redis应用场景介绍

1.  MySQL+Memcached架构的问题 Memcached采用客户端-服务器的架构,客户端和服务器端的通讯使用自定义的协议标准,只要满足协议格式要求,客户端Library可以用任何语言实现。 Memcached服务器使用基于Slab的内存管理方式,有利于减少内存碎片和频繁分配销毁内存所带来的开销。各个Slab按需动态分配一个page的内存(和4Kpage的概念不同

2017-05-27 23:04:55 312

原创 Linux脚本攻略学习笔记13

使用sed进行文本替换 sed是流编辑器的缩写,他是文本处理中不可或缺的工具,能够配合正则表达式使用,功能不同凡响,sed命令众所周知的一个用法是进行文本替换。 (1)sed可以替换给定文本中指定的字符串 $sed 's/pattern/replace_string/' file或者 $ cat file | sed 's/pattern/replace_string/'该命令从s

2017-05-27 21:49:25 249

原创 Linux脚本攻略学习笔记12

cut命令详解

2017-05-26 20:09:11 222

原创 编程题赏析2

1:牛牛有一个数组,里面的数可能不相等,现在他想把数组变为:所有的数都相等。问是否可行。 牛牛可以进行的操作是:将数组中的任意一个数改为这个数的两倍。 这个操作的使用次数不限,也可以不使用,并且可以对同一个位置使用多次。 输入描述: 输入一个正整数N (N <= 50) 接下来一行输入N个正整数,每个数均小于等于1e9. 输出描述: 假如经过若干次操作可以使得N

2017-05-26 15:19:43 1102 1

转载 java并发编程之阻塞队列

Java并发编程:阻塞队列  本文转载自:http://www.cnblogs.com/dolphin0520/p/3932906.html   在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了Dequeue接口)。   使用非阻塞队列的时候有一个很大问题就是:它不会对当前线程产生阻塞,那么在面对类

2017-05-26 10:15:11 231

原创 redis主从复制

Redis的主从复制 1:什么是主从复制 持久化保证了即使redis服务重启也不会丢失数据,因为redis服务重启后会将硬盘上持久化的数据恢复到内存中,但是当redis服务器的硬盘损坏了可能会导致数据丢失,如果通过redis的主从复制机制就可以避免这种单点故障,如下图: 说明:  主redis中的数据有两个副本(replication)即从redis1和从redis2,即使一台redis

2017-05-25 10:41:56 268

原创 编程题赏析

1:牛牛想对一个数做若干次变换,直到这个数只剩下一位数字。 变换的规则是:将这个数变成 所有位数上的数字的乘积。比如285经过一次变换后转化成2*8*5=80. 问题是,要做多少次变换,使得这个数变成个位数。  输入描述: 输入一个整数。小于等于2,000,000,000。 输出描述: 输出一个整数,表示变换次数。 输入例子: 285 输出例子:

2017-05-24 22:23:05 657

转载 redis入门之持久化方式

转载自:http://blog.csdn.net/freebird_lb/article/details/7778981 Redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化。redis支持四种持久化方式,一是 Snapshotting(快照)也是默认方式;二是Append-only file(缩写aof)的方式;三是虚拟内存方式;四是d

2017-05-24 19:46:57 222

转载 select, poll,epoll详解

epoll    在Linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。    相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。    相对于select和poll来说,epoll更加灵

2017-05-23 21:58:37 282

原创 redis入门1

redis是什么: Redis is an open source, BSD licensed, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets. red

2017-05-22 16:36:17 283

原创 Linux脚本攻略学习笔记11

我们已经看过了grep命令的基本用法。不过grep的本事可不止如此,他还有更多的特性。 (1):递归搜索文件 如果需要在多级目录中对文本进行递归搜索,可以使用; grep "text" . -R -n (2):忽略样式中的大小写 选项-i 可以使匹配样式不考虑字符的大小写,例如: $echo hello world | grep -i "HELLO" hello (3):用

2017-05-21 20:54:39 296

转载 Linux中的5种I/O模型详解

转载自:http://blog.csdn.net/sinat_34990639/article/details/52778562 1 概念说明 在进行解释之前,首先要说明几个概念: 用户空间和内核空间 进程切换 进程的阻塞 文件描述符 缓存 IO123456789123456789 1.1 用户空间与内核空间 现在操作系统都是采用虚拟存储器,那么对32位操作系统而

2017-05-21 18:49:44 2591

原创 Linux脚本攻略学习笔记10

今天主要说说grep吧,在讲grep之前,先上一张正则表达式的图,以供查询: grep命令作为Unix中用于文本搜索的神奇工具,能够接受正则表达式,生成各种格式的输出,除此之外,他还有大量的有趣的选项,让我们看看具体的用法。 (1)搜索包含特定模式的文本行: $grep pattern filename this is the line containing pattern(2)也可

2017-05-20 13:29:30 328

原创 2017蘑菇街编程题详解

一:现在有一张半径为r的圆桌,其中心位于(x,y),现在他想把圆桌的中心移到(x1,y1)。每次移动一步,都必须在圆桌边缘固定一个点然后将圆桌绕这个点旋转。问最少需要移动几步。 输入描述: 一行五个整数r,x,y,x1,y1(1≤r≤100000,-100000≤x,y,x1,y1≤100000) 输出描述: 输出一个整数,表示答案 输入例子: 2 0 0 0 4 输出例子:

2017-05-18 20:52:15 637

原创 Linux shell 脚本学习攻略9

1:创建不可修改的文件 chattr 能够将文件设置为不可修改。不过chattr能做的可不止这些。 (a) 使用下列命令将一个文件设置为不可修改: # chattr +i file (b)这样文件file就变成为了不可修改状态。来试试下面的命令: # rm file rm: can not remove file:operation not permitted (c) 如果

2017-05-15 21:55:23 273

转载 Java并发编程:CountDownLatch、CyclicBarrier和Semaphore

Java并发编程:CountDownLatch、CyclicBarrier和Semaphore   在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。   以下是本文目录大纲:   一.CountDownLatch用法   二.Cy

2017-05-15 17:13:13 295

原创 给定数组,将所有的数按照出现的次序由大到小输出,次数相同的,按照原数组的顺序输出

import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.ut

2017-05-15 16:29:14 3326

转载 Java线程池的使用

Java并发编程:线程池的使用   在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:   如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。   那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任

2017-05-14 17:16:47 565

转载 单例模式中解决反射和反序列化漏洞

转载自:http://blog.csdn.net/hardwin/article/details/51477359 一、懒汉式单例模式,解决反射和反序列化漏洞 [java] view plain copy   package com.iter.devbox.singleton;      import java.io.ObjectStre

2017-05-12 20:54:34 738

转载 java:volatile关键字解析

Java并发编程:volatile关键字解析    volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。   volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java

2017-05-12 19:57:21 290

原创 Linux 脚本攻略学习笔记8

今天来看根据扩展名切分名,有一些脚本是依据文件名进行各种处理的。我们可能会需要在保留扩展名的同时修改文件名,转换文件格式(保留文件名的同时修改扩展名)或提取部分文件名。shell所具备的一些内建功能可以依据不同的情况来切分文件名。    借助%操作符可以轻松将名称部分从“名称.扩展名”这种格式中提取出来。你可以按照下面的方法从sample.jpg中提取名称。 file_jpg="sample.

2017-05-11 21:02:22 213

转载 深入分析ConcurrentHashMap

深入分析ConcurrentHashMap 转载自:http://www.infoq.com/cn/articles/ConcurrentHashMap 术语定义 术语 英文 解释 哈希算法 hash algorithm 是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。  哈希表 has

2017-05-10 16:31:53 183

原创 Linux shell 脚本攻略学笔记7

一:临时文件命名与随机数 (1) 创建临时文件 $filename=`mktemp` 上面的代码创建了一个临时文件,并打印出存储在$filename中的文件名 (2)创建临时目录: $ dirname =`mktemp -d` 上面的代码创建了一个临时目录,并打印出存储在$dirname中的目录名。 (3) 如果仅仅是想生成文件名,又不希望创建实际的文件

2017-05-09 16:33:14 298

原创 最大映射

有 n 个字符串,每个字符串都是由 A-J 的大写字符构成。现在你将每个字符映射为一个 0-9 的数字,不同字符映射为不同的数字。这样每个字符串就可以看做一个整数,唯一的要求是这些整数必须是正整数且它们的字符串不能有前导零。现在问你怎样映射字符才能使得这些字符串表示的整数之和最大? 输入描述: 每组测试用例仅包含一组数据,每组数据第一行为一个正整数 n , 接下来有 n 行,每行一

2017-05-08 22:08:22 316

原创 Linux shell 脚本攻略学习笔记6

排序,唯一与重复 同文本文件打交道时,少不了要用到排序。sort命令能够帮助我们对文本文件和stdin进行排序操作。它通常会配合其他命令来生成所需要的输出。uniq是一个经常与sort一同使用的命令。它的作用是从文本或stdin中提取唯一的行。下面来看看sort和uniq命令的常见用法。 一: (1) 我们可以按照下面的方式轻松地对一组文件(例如file1.txt和file2.txt) 进行

2017-05-08 21:22:39 297

原创 Linux shell 脚本攻略学习笔记5

这次该说tr命令了~ tr 是Unix命令行专家工具箱中一件简约却不失精美的工具。他经常用来编写优美的单行命令,作用不容小视。 tr 可以对来自标准输入的内容进行字符替换,字符删除以及重复字符压缩。他可以将一组字符变成另一组字符,因而通常也被称为转换命令,我们一起来看看它的基本用法。 (1):基本用法 tr 只能通过stdin(标准输入),而无法通过命令行参数来接受输入。它的调用格式如下:

2017-05-07 22:02:05 335

转载 redis入门经典

转载自:http://blog.csdn.net/qtyl1988/article/details/39553339 Redis官网对Redis的定义是:“Redis is an open source, BSD licensed, advanced key-value cache and store”,可以看出,Redis是一种键值系统,可以用来缓存或存储数据。Redis是“Remot

2017-05-07 21:56:32 232

原创 Linux shell 脚本攻略学习笔记4

xargs:   该xargs出场了,它擅长将标准输入数据转换成命令行参数。 xargs能够处理stdin并将其转换为特定命令的命令行参数。xargs也可以将单行或者多行文本输入转换为其他格式,例如单行变多行,多行变单行。   例1:将多行输入转换成单行输出。             将单行输入转换成多行输出。    指定每行最大的参数数量n,我们可以将任何来自stdin的文本划分成多行

2017-05-06 13:27:08 228

原创 Linux shell脚本学习攻略笔记3

今天继续上一次find命令的内容,主要是find和 -exec 和xargs的结合和使用。      (9) find 命令可以借助选项-exec与其他命令进行结合。- exec算得上是find最强大的特性之一。 比如我们要将某位用户全部文件的所有权更换为另一个用户(比如root),那么就可以用 -user找出root拥有的所有文件,然后用-exec更改所有权。(注意你必须以root用户的身份

2017-05-06 12:38:51 281

原创 动态规划学习之路(2)

一: 题目描述 A、B两伙马贼意外地在一片沙漠中发现了一处金矿,双方都想独占金矿,但各自的实力都不足以吞下对方,经过谈判后,双方同意用一个公平的方式来处理这片金矿。处理的规则如下:他们把整个金矿分成n段,由A、B开始轮流从最左端或最右端占据一段,直到分完为止。 马贼A想提前知道他们能分到多少金子,因此请你帮忙计算他们最后各自拥有多少金子?(两伙马贼均会采取对己方有利

2017-05-05 15:20:26 479

原创 Linux shell 脚本攻略学习笔记2

find是Unix/Linux命令行工具箱中最棒的工具之一。该命令对于编写shell脚本所起到的功用不可小视,今天来讨论一波find的大多数常见用法。    (1)要列出当前目录及子目录下所有文件和文件夹,可以采用下面的写法 $ find base_path例如:   此外,还有如下命令: $find . -print. 指定当前目录,.. 指定父目录。这是Unix文件系统中的约定用

2017-05-05 11:24:31 290

空空如也

空空如也

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

TA关注的人

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