自定义博客皮肤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)
  • 资源 (4)
  • 收藏
  • 关注

原创 如何动态地将对象托管给Spring进行管理

引言IoC可以说是spring最核心的部分,是spring家族任意组件的基本。我们可以将Java Bean托管给Spring,Spring通过其IOC功能可以依次解析出Java Bean依赖的其他实例。能够使我们从复杂繁琐的对象依赖中解脱出来,专注于业务本身。但是有时候我们需要动态地创建一些Java Bean,并且希望将这些对象托管给Spring或者使用Spring的IOC功能对对象依赖的各个...

2019-11-21 09:48:15 2142

原创 如何获取某个类的所有子类

如何获取某个类的所有子类引言解决方案(获取基础与IAnimal的所有子类)总结引言在我们写工厂类的时候,可能会根据不同的类型(type)生成不同的对象。但在工厂类初始化的时候,我们需要将某个类型的所有类全部初始化才能达到我们的目的。举个例子,我们定义了很多动物(Animal),我们需要一个AnimalFactory根据动物类型(type)去构建不同的动物实例。如下代码所示:我们先构建一个动...

2019-11-14 09:46:16 21090 2

原创 如何优雅地优化代码中的的if else和switch

引言 一般来说,随着我们项目的迭代以及业务的越来越复杂,项目中的分支判断会原来越多。当项目中涉及到复杂的业务判断或者分支逻辑时,我们就需要考虑是否需要对项目进行重构了,或者if else和switch case是否能够满足当前项目的复杂度。我们举一个简单的例子,假如我们是马戏团的老板,在训练一些动物去做一些指令,刚开始很简单,只训练了一条狗,当狗握了一下手后,给她奖励一些狗粮...

2019-11-12 19:10:09 354

原创 闲聊Redis分布式锁

引言:目前很多系统都是使用redis作为分布式锁,如果redis是单节点部署,基本上不会出现什么问题。但如果redis是多节点的集群部署,那么使用redis集群作为分布式锁就会存在一些问题。这两篇文章进行了详细的讲解。http://zhangtielei.com/posts/blog-redlock-reasoning.html http://zhangtielei.com/posts/bl...

2019-11-12 18:55:30 195

原创 ThreadLocal的原理及正确使用方法

对于Java程序员来说,相信对于ThreadLocal并不陌生。ThreadLocal是线程本地变量的意思,主要用于多线程对同一个变量的读写操作,且相互之间又不会依赖于原始值的改变而影响线程的业务逻辑。主要表现为以下两个方面:每一个线程对ThreadLocal变量都保存着一份副本,任何一个线程的操作只是对这个副本的操作,并不会对原始数据进行修改。 由于ThreadLocal变量是线程本地变量...

2018-10-28 19:49:08 3697

原创 并发编程(volatile和synchronized)

并发编程(volatile和synchronized)大家都知道,并发编程主要是运用多线程来提高程序的运算速度并提高机器的使用率。而并发程序运行的最大挑战就是公共资源的访问冲突。对于公共资源的访问主要分为读和写 公共资源读:需要保证各个线程读到的公共资源时最新的 公共资源写:需要防止多个线程对公共资源的写冲突 在Java中,利用volatile关键字和synchronize...

2018-10-20 16:38:43 3905

原创 MySql InnoDB锁类型

MySql InnoDB锁类型从类型上来分类,InnoDB存储引擎实现了两种标准的锁 共享锁(S-Lock):允许事务读一行数据 排它锁(X-Lock):允许事务删除或者更新一行数据 如果一个事务获取了S锁,那么其他事务也可以立即获得S锁,但如果要对记录加X锁,必须等待该记录的所有锁(S或X)释放后才能加成功。如下表所示为S和X锁的兼容性— X S X...

2018-10-20 10:56:14 4189

转载 深入分析事务的隔离级别

本文详细介绍四种事务隔离级别,并通过举例的方式说明不同的级别能解决什么样的读现象。并且介绍了在关系型数据库中不同的隔离级别的实现原理。文章转载于http://www.hollischuang.com/archives/943在DBMS中,事务保证了一个操作序列可以全部都执行或者全部都不执行(原子性),从一个状态转变到另外一个状态(一致性)。由于事务满足久性。所以一旦事务被提交之

2016-07-19 10:14:21 3619 1

原创 ScheduleThreadPoolExecutor源码分析(二)

DelayedWorkQueue:       DelayedWorkQueue实现了BlockingQueue接口,因此其可以作为线程池的任务队列。BlockingQueue的主要属性有以下几个:private RunnableScheduledFuture[] queue:作为最小堆的实现数组,主要存储ScheduledFutureTask任务列表。private final Reentra

2016-07-18 19:34:57 343

原创 ScheduleThreadPoolExecutor源码分析

ScheduleThreadPoolExecutor源码分析(一)      Java中ScheduleThreadPoolExecutor主要用于执行延迟任务或者按照一定的频率执行任务。其中scheduleAtFixedRate函数是按照一定频率执行任务,scheduleWithFixedDelay可以根据延迟一定时间再执行任务。本文将参考ScheduleThreadPoolExecutor的源码

2016-07-18 11:13:41 549

原创 Scala基础

基本类型 像其他语言一样,scala拥有基本的数值类型,其中包包括Byte,Short,Int,Long,Char,Float,Double,Boolean和String类型。其极本类型所表示范围和结构和Java类似。函数 Scala是一门集中面向对象和函数式编程为一体的语言。在Scala程序中,函数被称为第一公民。开发者可以将函数作为参数进行传递。如下图所示为Scala中函数定义格

2016-06-05 00:10:38 397

原创 ERROR 2003 (HY000): Can't connect to MySQL server on '223.3.46.114' (111)

远程登录MySQL出现如题所示错误,则可以通过注释掉my.cnf中的bind-address = 127.0.0.1来解决。一般来说my.cnf存放在/etc/mysql/my.cnf,如果在这个文件里没有找到bind-address,则可以在/etc/mysql/mysql.conf.d/mysqld.cnf里面寻找。

2016-03-15 22:37:05 325

原创 单例模式分析

单例模式是设计模式中较为重要的一种模式,本文将会从基础分析单例模式设计遇到的一些问题。Code1import java.util.*;class Singleton{ private static Singleton instance; private Integer v; private Boolean flag; private Singleton() { v =

2016-03-13 14:20:35 367

原创 Java中整形的缓存机制

本文将介绍一下Java中关于Integer的缓存知识,首先看一下下面的代码,猜测一下会输出什么结果。/** * Created by lanxing on 16-3-13. */public class IntegerCache { public static void main(String[] args){ Integer integer1 = 3;

2016-03-13 11:34:46 1288

原创 Sublim 3中设置新的builid system

要在sublime3中设置新的build system,打开tools->build system->New System Build System将其修改如下:{    "shell_cmd": "python3 \"${file}\"",    "file_regex":"^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",    "select

2016-03-11 21:17:51 629

转载 常用排序算法稳定性分析

常用排序算法稳定性分析【1】选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法冒泡排序、插入排序、归并排序和基数排序都是稳定的排序算法。【2】研究排序算法的稳定性有何意义?首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前两个相等的数据其在序列中的先后位置顺序与排序后它们两个先后位置顺序相同。再简单具体一点,如果A i == A j,Ai 原

2015-04-23 10:48:01 502

转载 Linux system函数返回值

[cpp] view plaincopystatus = system("./test.sh");  文章转载来自于:http://blog.chinaunix.net/uid-24774106-id-3048281.html?page=3http://blog.csdn.net/cheyo/article/details/6595955

2015-01-06 14:37:32 874

转载 Linux 2.6 中的文件锁

原文链接:http://www.ibm.com/developerworks/cn/linux/l-cn-filelock/在多任务操作系统环境中,如果一个进程尝试对正在被其他进程读取的文件进行写操作,可能会导致正在进行读操作的进程读取到一些被破坏或者不完整的数据;如果两个进程并发对同一个文件进行写操作,可能会导致该文件遭到破坏。因此,为了避免发生这种问题,必须要采用某种机制来解决多个进程

2014-12-15 10:21:43 1152

原创 全排列的递归实现

对于全排列问题,假设我们有n个不同的数字,需要对其进行全排列,那么全排列的总数为f(n),f(n) = n * f(n - 1)。我们可以看做是将第一个数字固定,然后后边n-1个数字进行全排,这样第一个数字就有n中选择。同理,在求f(n - 1)时,可以看做第二个数字固定,后边n-2个数字进行全排,这样第二个数字就有n-2种选择。具体实现程序如下:int swap(int &a, int &b

2014-12-14 01:20:45 432

转载 求一个类的sizeof应考虑的问题

一、个空类class A{ };    求sizeof的结果是1,因为即使是没有成员之类的,一个类存在,至少都要给他一个空间,不然就没有存在的意义了。二、简单的类class A{    int a;    virtual fun();}    这个也好求,就是sizeof(A.a)+4(指向虚表的指针)

2014-12-09 12:46:18 509

原创 非递归二叉树遍历

非递归二叉树遍历是面试中最容易问道的问题,其可以考察应聘者对二叉树遍历的掌握程度,又可以测试出面试者的编码能力。

2014-12-08 21:45:38 865

原创 MySQL索引之B+树索引

B+树索引是是目前关系型数据库系统中查找最为常用和最为有效的索引,B+树的索引构造类似于二叉树,根据键值(key Value)快速找到数据。1、什么是B+树?首先,B+树中的B并不是二叉树(binary)的意思,这里的B表示的是blance即平衡的意思。那么B+树其实就是平衡查找树。其满足两个条件:平衡树和查找树。关于平衡树的定义我们可以再任何一个数据结构书上找到,最常用的莫过于平衡二

2014-12-05 14:06:28 4282

转载 Sql Server查询性能优化之创建合理的索引(下篇)

原文链接:http://www.cnblogs.com/lzrabbit/archive/2012/07/03/2549558.html数据库索引分为聚集索引和非聚集索引,聚集索引就是物理索引,也就是数据的物理的存储顺序,聚集索引的叶子节点就是数据行本身;非聚集索引是逻辑索引,也可以简单的认为是对聚集索引建立的索引,一般来说聚集索引的键就是非聚集索引的叶子节点(在不使用include时)。

2014-12-05 13:05:21 1004

转载 Sql Server查询性能优化之创建合理的索引(上篇)

原文链接:http://www.cnblogs.com/lzrabbit/archive/2012/06/11/2517963.html本文主要作为优化查询性能的一些知识储备,感觉知识点有些散,不知道起啥名字好,独立成文又没有达到把每个点都说透彻那样的高度,且就当做创建合理索引的一个楔子把。本文对实际应用没有太大的指导意义,但可以加深我们对SQL Server理解,夯实我们的基本功,就

2014-12-05 12:55:16 563

原创 sizeof的运用

sizeof(a)返回的是系统对在内存中对a分配的内存空间大小,单位为字节。不同操作系统(window和Linux)以及不同位数(32位或64位)的系统内存分配策略(字节对齐)不同,因此sizeof的返回值也不相同。接下来我们针对Linux和Window两种操作系统进行分析。许多计算机系统对基本数据类型合法地址作出了一些限制,要求某种类型对象的地址必须为某个K(通常为2、4或8)的倍数

2014-12-03 15:07:39 586

原创 进程调度策略

在操作系统中,几乎所有进程的I/O请求或计算都是交替突发的。例如一个进程从磁盘读取了一段数据,然后计算一段时间,将计算得到的数据重新写入磁盘,如此周而复始的循环。假如一些进程将绝大多数时间花费到计算上,我们称此类进程为计算密集型进程;而另一部分进程花费大多数时间在IO等待上,我们称此类进程为I/O密集型进程。随着CPU变得越来越快,更多的进程倾向于I/O密集型。1、调度时机     有

2014-12-02 00:54:11 5640 3

转载 PCRE使用

在C语言中利用PCRE实现正则表达式1. PCRE简介2. 正则表达式定义3. PCRE正则表达式的定义4. PCRE的函数简介5. 使用PCRE在C语言中实现正则表达式的解析6. PCRE函数在C语言中的使用小例子 1. PCRE简介    PCRE(Perl Compatible Regular Expre

2014-11-20 10:32:18 1027

原创 Linux下网络爬虫程序

网络爬虫是搜索

2014-11-20 09:03:53 1106

转载 PCRE的安装及使用

Boost太庞大了,使用boost regex后,程序的编译速度明显变慢。测试了一下,同样一个程序,使用boost::regex编译时需要3秒,而使用pcre不到1秒。因此改用pcre来解决C语言中使用正则表达式的问题。1、主页地址:http://www.pcre.org/     下载pcre-7.8.tar.bz22、解压缩:     tar xjpf pcre-7.8.t

2014-11-04 23:43:26 10525

原创 Linux监控文件事件

最近在写

2014-10-27 18:27:32 2010

转载 数据库编程方法

当前各种主流数据库有很多,包括Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, Interbase / Firebird, PostgreSQL, SQLite, SAP/DB, TimesTen, MS ACCESS等等。数据库编程是对数据库的创建、读写等一列的操作。数据库编程分为数据库客户端编程与数据库服务器端编程。数据库客户端编程主要使

2014-10-21 06:51:13 2767

转载 在linux下搭建libcap开发环境:

在linux下搭建libcap开发环境: 操作系统版本kubuntu 10.04 linux,内核版本2.6.32-22-generic gcc版本:gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) libcap版本:libcap1.1.1 下载地址 http://www.tcpdump.org/ 1.安装gcc g++编译器 直接

2014-10-15 20:05:14 612

转载 __I、 __O 、__IO是什么意思?

这是ST库里面的宏定义,定义如下:#define     __I       volatile const        /*!< defines 'read only' permissions      */#define     __O     volatile                  /*!#define     __IO    volatile          

2014-10-09 14:43:28 520

转载 从Linux程序中执行shell(程序、脚本)并获得输出结果

从Linux程序中执行shell(程序、脚本)并获得输出结果1. 前言 2. 使用临时文件 3. 使用匿名管道 4. 使用popen 5. 小结 1. 前言Unix 界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作。比如实现一个 ping程序来测试网络的连通性,实现ping函数需要写上20

2014-09-24 13:38:29 649

转载 程序员常访问的网站

要想成为优秀的程序猿,不仅要有一定天分,常与大神交流,自己多加练习才是正确的方法。下面是一些Quora用户推荐的国外网站,与广大程序猿或者希望学习编程的朋友们分享:1)编程练习和竞赛类http://www.codechef.com/http://www.spoj.com/p/http://programmingpraxis.com/http://projecteuler

2014-09-24 10:59:29 498

转载 Linux中特殊文件权限

linux中除了常见的读(r)、写(w)、执行(x)权限以外,还有3个特殊的权限,分别是setuid、setgid和stick bit1、setuid、setgid先看个实例,查看你的/usr/bin/passwd 与/etc/passwd文件的权限 [root@MyLinux ~]# ls -l /usr/bin/passwd /etc/passwd-rw-r-

2014-09-24 09:32:56 444

原创 C语言中内存动态分配应注意的问题

最近在校给老师做项目,写一个Linux下上位机的

2014-09-23 20:33:45 1384

转载 关于C语言多文件编写的一点小小总结

在多文件编写中,变量,尤其的全局变量的定义和引用显得不那么精简。很多人可能会想,把全局变量放在一个*.h文件中,然后在以后的调用中只要include一下不就可以了?想想也有道理,include不就是把*.h原封不动的复制过来吗?但是,这样存在一个问题。加入定义了10个全局变量,而在具体一个*.c文件中我只用其中一个。如果用include把全局变量全都包含进来。那利用率不就才是10%吗。而且C语言常

2014-09-22 13:03:40 442

转载 UBUNTU用户 无法进入系统

UBUNTU用户 无法进入系统,输入密码登陆后直接退回登陆界面。(部分转)  2012-12-11 14:07:26|  分类: UBUNTU|举报|字号 订阅不知为何,帐户和密码是正确的,但登陆时出现提示GDM could not write to your authorization file. This couldmean that y

2014-09-16 15:41:01 1196

转载 Lftp超时与NOOP

Lftp超时与NOOP本文来自: 郑州SEO| 焦作SEO说到空闲超时,要明白的一点是,任何FTP客户端设定的超时时间都必须参考FTP服务器软件的空闲超时设置,也就是说如果客户端设置的时间值大于服务器端设置的时间值时,FTP客户端上设置的值是没意义的,因为在此之前FTP服务端已经断开了连接. 注意,FTP服务端空闲超时与FTP客户端空闲超时的处理是不一样的,这可以在日志中得到体现,

2014-09-14 16:03:52 4054

CheckStyle-IDEA-5.34.0 (1).zip

最新版Idea CheckStyle,下载后直接打卡Idea的Preference——>Plugin——>install from disk安装即可

2019-12-26

Java jdk1.8API

For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples. Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.

2014-10-27

Unix网络编程

《UNIX网络程序设计》为普通高等教育“十一五”国家级规划教材。《UNIX网络程序设计》以当前主流操作系统UNIX为背景,由浅入深地介绍了UNIX环境下计算机通信程序设计的原理与方法。全书内容分为四篇,第一篇网络基础(第1章、第2章),包括UNIX系统的基础知识和TCP/IP基础;第二篇套接字(第3~5章),包括套接字基础、TCP套接字和UDP套接字;第三篇UNIX网络编程实用技术(第6~9章),包括并发服务器、名字解析和IP地址转换、同步及进程间通信和异常处理;第四篇高级网络编程技术(第10~15章),包括IPv4和IPv6的互操作性、守护进程、广播、多播、原始套接字和路由套接字。   《UNIX网络程序设计》内容紧凑、深浅适宜、兼顾实用,各章均有实例和习题,适合作为高等院校计算机科学与技术、通信工程、电子信息和软件工程等专业本科生或研究生的教材,也可作为从事相关专业的工程技术人员的参考书。

2014-10-27

BEGINNING C# OBJECTS中文版

《Beginning C# Objects中文版:概念到代码》关注的是软件对象:什么是软件对象?为什么它们如此神奇而直白以及如何正确使用对象去构建一个软件应用?这也是一本关于C#的书,但它并非一本“C#大全”,而是一份对该语言的温文但全面的介绍,还特别强调了如何把对象模型转换到功能完备的C#应用程序。《Beginning C# Objects中文版:概念到代码》分三部分,结合C#深入浅出地阐述面向对象理论的基本内容,即从对象基本概念到对象建模,到C#代码的整个学习过程。为了完善《Beginning C# Objects中文版:概念到代码》,我们还写了标题为“下一步”的最后章节,它给出一些建议,让你在读完《Beginning C# Objects中文版:概念到代码》后,懂得如何继续自己的面向对象发现之旅。

2014-07-27

空空如也

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

TA关注的人

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