自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 几种负载均衡实现方式

DNS负载均衡:   对同一个请求的域名,映射为不同的服务器IP地址。    HTTP重定向:   http代理(比如浏览器)向Web服务器请求某一url后,Web服务器根据http响应头信息中的location标记来返回一个新的url,然后http代理继续请求访问这个新的url。    反向代理负载均衡:   普通的代理方式是客户端指定代理服务器,然后将对Web服务器的请求url先发

2017-02-26 17:46:41 1063

原创 synchronized实现原理

我们用一个文本文档写一个java类:public class TestSynchronized{public void f(){synchronized(this){System.out.println("ffffffff invoke");}}}  打开cmd,执行javac [.java文件的路径]编译该.java文件,会生成TestSynchronized.class,然后执行java

2017-02-25 19:32:13 2725 1

原创 使用redis部署集群

我们现在在一台服务器上,通过6个端口来模拟一下redis集群部署,要搭建出的模型为:三个主数据库7001,7002,7003,它们各有一个从数据库7004,7005,7006。首先创建目录/usr/local/redis-cluster,然后在其中创建6个目录7001-7006:然后先复制一份redis配置文件redis.conf到7001目录下,执行vi命令编辑redis.conf,需要修改的地方

2017-02-24 12:12:06 735

原创 python3爬取新浪新闻内容

代码如下:#commentsUrl用于获取新闻评论数等json信息commentsUrl = 'http://comment5.news.sina.com.cn/page/info?version=1&format=js&channel=gn&newsid=comos-{}&group=&compress=0&ie=utf-8&oe=utf-8&page=1&page_size=20&jsvar=

2017-02-20 15:05:43 3287 2

原创 python的strip(),lstrip()和rstrip()

strip(rm)会移除整个字符串中所有包含在rm中的字符,注意,是所有字符,例如s = 'abccbaaXcbabca'print(s.strip('abc'))  这段代码的输出会移除s中的所有字符,而不只是满足顺序为‘abc’的字符,运行结果:            当执行strip()时,即不带参数,会移除字符串左边和右边的所有空格,不会移除字符串中间的空格:s = ' ab cc

2017-02-20 13:37:44 938

原创 python3爬虫-爬取新浪新闻首页所有新闻标题

准备工作:安装requests和BeautifulSoup4。打开cmd,输入如下命令pip install requestspip install BeautifulSoup4打开我们要爬取的页面,这里以新浪新闻为例,地址为:http://news.sina.com.cn/china/按F12打开开发人员工具,点击左上角的图片,然后再页面中点击你想查看的元素:我点击了新闻标题处的元素,查看到该元

2017-02-20 11:01:11 14989 5

原创 python3数据结构

列表Python中列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和元组不能。 以下是 Python 中列表的方法: 方法 描述 list.append(x) 把一个元素添加到列表的结尾,相当于 a[len(a):] = [x]。 list.extend(L) 通过添加指定列表的所有元素来扩充列表,相当于 a[len(a):] = L。 li

2017-02-19 20:14:51 451

原创 Java设计模式之单例模式

饿汉式单例class MySingleton2 { private static MySingleton2 mySingleton2 = new MySingleton2(); private MySingleton2() { } public static MySingleton2 getInstance(){ return mySingleton2;

2017-02-15 00:14:17 506

原创 悲观锁,乐观锁,行锁,表锁,页锁,共享锁,排他锁

悲观锁:  顾名思义,很悲观,就是每次拿数据的时候都认为别的线程会修改数据,所以在每次拿的时候都会给数据上锁。上锁之后,当别的线程想要拿数据时,就会阻塞,直到给数据上锁的线程将事务提交或者回滚。传统的关系型数据库里就用到了很多这种锁机制,比如行锁,表锁,共享锁,排他锁等,都是在做操作之前先上锁。    行锁:  下面演示行锁,打开两个mysql命令行界面,两个线程分别执行如下操作:(左边先执行)

2017-02-14 21:32:22 13075 4

原创 使用NIO实现非阻塞式的网络通信

实现这样一个程序:客户端读取键盘输入,并发送到服务器端,服务器端接收信息并打印。   首先先写一个阻塞式的程序:package nio;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;imp

2017-02-12 14:14:33 2103

原创 Fork/Join框架测试

Fork/Join框架介绍:            下面使用该框架计算0-50000000000的和,并比较普通计算方法、Fork/Join框架、Java8新特性三种计算方式的计算时间:import java.time.Duration;import java.time.Instant;import java.util.concurrent.ForkJoinPool;import ja

2017-02-11 00:43:29 969

原创 Java线程池介绍

什么是线程池?线程池提供了一个线程队列,队列中保存着所有等待状态的线程。避免了创建与销毁额外开销,提高了响应的速度。作用类似于数据库连接池。      Java中线程池的体系结构如下: java.util.concurrent.Executor : 负责线程的使用与调度的根接口  |–ExecutorService Executor的子接口: 线程池的主要接口    |–Thr

2017-02-11 00:15:47 392

原创 一道面试题:多个线程按顺序输出

题目:编写一个程序,开启 3 个线程,这三个线程的 ID 分别为 A、B、C,每个线程将自己的 ID 在屏幕上打印 10 遍,要求输出的结果必须按顺序显示。如:ABCABCABC……      解题源码:package concurrent;import java.util.concurrent.locks.Condition;import java.util.concurrent.lock

2017-02-10 22:04:37 6916

原创 通过生产者消费者案例理解等待唤醒机制和虚假唤醒

首先引入下面这段生产者和消费者的程序,店员类作为生产产品和消费产品的中介,其中的数据product为共享数据,产品最多只能囤积5个,当产品达到5个还在生产时,就会提示“产品已满!”,类似地,如果产品只有0个了还在消费,会提示“缺货!”:package concurrent;//店员类class Clerk { private int product = 0; // 进货 pu

2017-02-10 20:33:32 1908

原创 sleep(),wait(),yield()和join()方法的区别

sleep()   sleep()方法需要指定等待的时间,它可以让当前正在执行的线程在指定的时间内暂停执行,进入阻塞状态,该方法既可以让其他同优先级或者高优先级的线程得到执行的机会,也可以让低优先级的线程得到执行机会。但是sleep()方法不会释放“锁标志”,也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。    wait()   wait()方法需要和notif

2017-02-10 17:59:37 24016 4

转载 Lock与synchronized 的区别

多次思考过这个问题,都没有形成理论,今天有时间了,我把他总结出来,希望对大家有所帮助  1、ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等候     线程A和B都要获取对象O的锁定,假设A获取了对象O锁,B将等待A释放对O的锁定,     如果使用 synchronized ,如果A不

2017-02-10 14:59:59 414

原创 使用Callable和FutureTask创建线程

使用Callable和FutureTask,可以实现有返回值的线程创建,并且可以抛出异常:package concurrent;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.FutureTask;class Callab

2017-02-10 11:18:23 3694 1

原创 闭锁CountDownLatch的用法

现在有十个线程各自输出0-50000中的所有偶数,假设我们试图使用下面这段代码计算整个程序的执行时间:package concurrent;class LatchDemo implements Runnable { @Override public void run() { for (int i = 0; i <= 50000; i++) Sys

2017-02-10 10:50:15 425

转载 聊聊并发-Java中的Copy-On-Write容器

Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOnWrite机制实现的并发容器,它们是CopyOnWriteArrayList和CopyOnWriteArraySet。

2017-02-10 10:16:19 343

转载 HashMap与ConcurrentHashMap的区别

从JDK1.2起,就有了HashMap,正如前一篇文章所说,HashMap不是线程安全的,因此多线程操作时需要格外小心。在JDK1.5中,伟大的Doug Lea给我们带来了concurrent包,从此Map也有安全的了。ConcurrentHashMap具体是怎么实现线程安全的呢,肯定不可能是每个方法加synchronized,那样就变成了HashTable

2017-02-10 10:10:41 501

原创 原子变量和CAS算法

先运行下面一段程序:package concurrent;class AtomicDemo implements Runnable { private int serialNumber = 0; public int getSerialNumber() { return serialNumber++; } @Override public void

2017-02-10 00:46:07 3516

原创 volatile关键字

先看一段程序:package concurrent;class ThreadDemo implements Runnable{ private boolean flag = false; public boolean isFlag() { return flag; } public void setFlag(boolean flag) {

2017-02-09 21:13:54 608 2

转载 通过TreeMap理解红黑树

本文以Java TreeMap为例,从源代码层面,结合详细的图解,剥茧抽丝地讲解红黑树(Red-Black tree)的插入,删除以及由此产生的调整过程。总体介绍Java TreeMap实现了SortedMap接口,也就是说会按照key的大小顺序对Map中的元素进行排序,key大小的评判可以通过其本身的自然顺序(natural ordering),也可以通过构造时传入的比较器(

2017-02-09 17:37:42 4427

原创 Hashtable和HashMap的区别

1. Hashtable继承自陈旧的Dictionary类;而HashMap继承自AbstractMap类。2. Hashtable的方法使用了Synchronize修饰,Hashtable是线程安全的;而HashMap不是,所以在多线程环境下,需要为HashMap提供外同步。(由于非线程安全,所以HashMap效率上可能高于Hashtable)3. Hashtable的键或值都不能为null,如果

2017-02-09 13:22:56 637

转载 Java HashSet和HashMap源码剖析

原文地址:http://www.cnblogs.com/CarpenterLee/p/5440428.html总体介绍之所以把HashSet和HashMap放在一起讲解,是因为二者在Java里有着相同的实现,前者仅仅是对后者做了一层包装,也就是说HashSet里面有一个HashMap(适配器模式)。因此本文将重点分析HashMap。HashMap实现了Map接口,允许放入n

2017-02-09 12:39:12 526

原创 Java集合框架总结

Java集合类框架如下图所示:         Collection  Collection接口概括了序列的概念——一种存放一组对象的方式。Collection接口继承了迭代接口Iterable,有三个主要的子接口List,Set和Queue,需要注意,Map不是Collection的子接口。      Collection接口包含的方法如下:         List  List会

2017-02-08 23:33:49 548

原创 Eclipse在JDK源码中设置断点进行调试报错Unable to install breakpoint的解决方法

第一步:依次点击Window->Preferences->Java->Installed JREs,编辑选中的JRE,选择目录为JDK的安装目录:点击Restore Default,然后Finish -> Apply -> OK。第二步:依次点击Window->Preferences->Java->Compiler->取消勾选Add line number attr

2017-02-07 13:05:17 4541

原创 shiro实现不同身份使用不同Realm进行验证

假设现在有这样一种需求:存在两张表user和admin,分别记录普通用户和管理员的信息。并且现在要实现普通用户和管理员的分开登录,即需要两个Realm——UserRealm和AdminRealm,分别处理普通用户和管理员的验证功能。   但是正常情况下,当定义了两个Realm,无论是普通用户登录,还是管理员登录,都会由这两个Realm共同处理。这是因为,当配置了多个Realm时,我们通常使用的认证

2017-02-01 00:14:00 31629 30

Git-2.11.0-64-bit.exe

Git安装程序,2.11.0版本,64位

2017-01-07

mybatis-generator-core-1.3.2.jar 

通过数据表逆向生成po,映射文件和mapper接口

2017-01-05

maven核心程序apache-maven-3.3.9-bin

maven核心程序,版本为3.3.9,可以配合最新版的eclipse4.6.1使用,可以指定通过maven创建的工程的jdk版本为1.8

2017-01-02

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

TA关注的人

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