CSDN博客地址---http://blog.csdn.net/bug_moving GitHub地址---https://github.com/androidwolf
在java线程中,在run方法中,我们要在run()方法中,把一切的异常有处理掉,也就try-catch掉。不能让这个线程抛出异常,因为如果我们不使用特殊的方式的话,我们是无法捕获从这个线程中逃逸的异常的。异常一旦抛出了,那么这个线程就会停止运行,但是不会影响主线程和其它的线程。因为主线程和其它的线程都不知道它抛出了异常。 线程在run方法抛出异常,没有catch
我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。 $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').le
Netty的特性 设计统一的API,适用于不同的协议(阻塞和非阻塞)基于灵活、可扩展的事件驱动模型高度可定制的线程模型可靠的无连接数据Socket支持(UDP) 性能更好的吞吐量,低延迟更省资源尽量减少不必要的内存拷贝 安全完整的SSL/TLS和STARTTLS的支持能在Applet与Android的限制环境运行良好 健壮性不再因过快、过慢或超负载连接导致OutOfMem
概念 归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,归并排序将两个已排序的表合并成一个表。 归并排序基本原理 通过对若干个有序结点序列的归并来实现排序。 所谓归并是指将若干个已排好序的部分合并成一个有序的部分。 单链表实现归并排序 找到中间点拆分链表 //找到中间点,然后分割
普通快排的思路 选择1个结点为中心点,保证中心点左边比中心点小,中心点右边比中心点大即可。这就是一次快排,确定一个数的正确位置,然后进行递归。 单链表的实现为 使第一个节点为中心点 创建2个指针(p,q),p指向头结点,q指向p的下一个节点 q开始遍历,如果发现q的值比中心点的值小,则此时p=p->next,并且执行当前p的值和q的值交换,q遍历到链表尾即可
字体颜色 <font face="黑体">我是黑体字</font> <font face="微软雅黑">我是微软雅黑</font> <font face="STCAIYUN">我是华文彩云</font> <font color=#0099ff size=7 face="黑体">color=#
AOP的拦截功能是由java中的动态代理来实现的。说白了,就是在目标类的基础上增加切面逻辑,生成增强的目标类(该切面逻辑或者在目标类函数执行之前,或者目标类函数执行之后,或者在目标类函数抛出异常时候执行。不同的切入时机对应不同的Interceptor的种类,如BeforeAdviseInterceptor,AfterAdviseInterceptor以及ThrowsAdvis
Java中synchronized用在静态方法和非静态方法上面的区别 在Java中,synchronized是用来表示同步的,我们可以synchronized来修饰一个方法。也可以synchronized来修饰方法里面的一个语句块。那么,在static方法和非static方法前面加synchronized到底有什么不同呢?大家都知道,static的方法属于类方法,它属于这个
在程序开发中只要是多线程肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下好处: 避免点继承的局限,一个类可以继承多个接口。 适合于资源的共享 因为Java本来就是面向接口的,所以第一个特性应该很容易理解,下面我们以买票为例,通过Thread类完成要卖出30张票。虽然现在程序中有三个线程,但是一共卖了10张票,也就是说使用R
题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输出它的后序遍历序列。 分析: 前序遍历的第一个节点时根,在中序中找到这个根节点,然后左边就是左子树,右边就是右子树,这样就可
题目: 输入一个链表的头结点,从尾到头反过来打印出每个结点的值。 考虑用栈 public void invertedList1(ListNode head) { if (head == null) { return; } ListNode p = head; Stack<I
题目: 实现一个函数,把字符串中的每个空格替换成“%20”。加入输入“we are happy.”,则输出“we%20are%20happy.”。 它想说的思想: 如果是字符数组来存储的话,每次扫描遇到空格都会导致后面的字符向后移动,然后为了节省这么多移动的时间,就先统计空格的个数,然后数组整体扩容空格数乘以3的空间,把那里当作结束,再从尾到头遍历,找到空格就移,这样整
题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 基本思想: 首先选取数组中右上角的数字。如果等于要找的数字,结束。如果大于要找的数字,剔除这个数字所在的列;如果小于要找的数字,剔除这个数字所在的行。 public static boolean
终于把简直offer看完了一遍 所以第二遍我决定要美一个题自己去实现一遍,会加入自己的理解(但是不一定对哈) 题目:设计一个类,我们只能生成该类的一个实例。 饿汉试 package T2Singleton; /** * 饿汉式 * @author yxx * */ public class Singleton { //私有构造方法
1. HTTP简介 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。 在了解HTTP如何工作之前,我们先了解计算机之间的通信。
表结构: student(s#,sname,sage,ssex)学生表 course(c#,cname,T#)课程表 sc(s#,c#,score)成绩表 Teacher(T#,tname)教师表 1.查询001课程比002课程成绩高的所有学生的学号: select sc1.s# from sc sc1 join sc sc2 on sc1.s# = sc2.s
一、索引优化 1、合理使用索引,在经常查询而不经常增删改操作的字段加索引,一个表上的索引不应该超过6个。 2、Order by与group by后应直接使用字段,而且字段应该是索引字段。 3、索引字段长度应较短而长度固定。 4、索引字段重复不能过多。 5、Hash索引与BTree索引区别(MyISAM与InnoDB不支持Hash索引) (1)、BTree索引使用多
我们先看2个类的源码 HashMap Hashtable实现源码 可见Hashtable 继承自 Dictiionary 而 HashMap继承自AbstractMap Hashtable的put方法如下 public synchronized V put(K key, V value) { // Make sure the value i
原文出处:http://www.cnblogs.com/ccdev/p/3341234.html 上篇 链接地址:http://blog.csdn.net/bug_moving/article/details/54955392 中篇 链接地址:http://blog.csdn.net/bug_moving/article/details/54955441 现在接着设计我
原文出处:http://www.cnblogs.com/ccdev/p/3340484.html 上篇(链接) 我们完成了在此分布式系统中,一个group的设计。那么接下来,我们设计系统的其他部分。如前文所述,我们的业务及其数据以group为单位,显然在此系统中将存在many many的groups(别告诉我你的网站总共有一个业务,像我们的“山推”,那业务是一堆一堆地),
原文出处:http://www.cnblogs.com/ccdev/p/3338412.html 又是快一年没写博客了,2013年也只剩尾巴,也不知道今年都忙了些什么。写这篇文章的目的,主要是把今年以来学习的一些东西积淀下来,同时作为之前文章《高性能分布式计算与存储系统设计概要》的补充与提升,然而本人水平非常有限,回头看之前写的文章也有许多不足,甚至是错误,希望同学们看到了
我们要部署的网站是 http://zlingspace.com 专注于众包的网站,理念是我们的程序猿遍布天下。所以在这个基础上,我们对服务器的稳定还有安全性可靠性的要求非常之高。 首先在阿里云上必须有一台自己的服务器,我装的Linux操作系统,非常的稳定高效,那我们就谈谈选择阿里云 选择阿里云 我就是看中了阿里云的高可用性 网站最重要的就是高可用性了,以及数据的安
double a, b; ... if(a==b) ... 不用考虑初始化的问题哈,此处不是说明那个问题。 不能直接 if(a==b) 而是要equal(a,b) equal 函数自己写 public boolean equal(double a, double b) { if ((a- b> -0.00
(error) DENIED Redis is running in protected mode because protected mode is enabled Redis protected-mode 是3.2 之后加入的新特性,在Redis.conf的注释中,我们可以了解到,他的具体作用和启用条件 链接redis 时只能通过本地localhost (127.
在Redis官网上可以找到好多语言的客户端编写,我们选择其中我们熟悉的Java语言,会带你来到如下的redis中java实现的git仓库,可以选择download它的zip或者关联git。 我选择的是看他的readme,然后用pom实现。 redis中java实现的jedis的git仓库 在eclipse中搭建maven工程 我们搭建好maven工程,然后导入这
其实这篇是为了Redis的Replication服务的 先看看redis的多重服务器吧。 先查看进程,是一个redis的服务器在跑,而且监听的是6379。 我们把redis文件夹下的redis.conf复制一份变成redis6380.conf,然后我们编辑 编辑主要是 改端口 让从服务器只读,不然就乱了 我们还是查看进程,只有默认端口的6
一、Redis提供了哪些持久化机制: 1). RDB持久化: 该机制是指在指定的时间间隔内将内存中的数据集快照写入磁盘。 2). AOF持久化: 机制将以日志的形式记录服务器所处理的每一个写操作,在Redis服务器启动之初会读取该文件来重新构建数据库,以保证启动后数据库中的数据是完整的。比如,一直在执行自加一的命令,然后我们可以直接用一个set来代替N个自加啊,自
一、概述: 和众多其它数据库一样,Redis作为NoSQL数据库(不注重表的关系,跟关系型数据库不同)也同样提供了事务机制。在Redis中,MULTI/EXEC/DISCARD/WATCH这四个命令是我们实现事务的基石。相信对有关系型数据库开发经验的开发者而言这一概念并不陌生,即便如此,我们还是会简要的列出Redis中事务的实现特征: 1). 在事务中的所有命令都将会被
一、概述: 在该系列的前几篇博客中,主要讲述的是与Redis数据类型相关的命令,如String、List、Set、Hashes和Sorted-Set。这些命令都具有一个共同点,即所有的操作都是针对与Key关联的Value的。而该篇博客将主要讲述与Key相关的Redis命令。学习这些命令对于学习Redis是非常重要的基础,也是能够充分挖掘Redis潜力的利器。 在这篇博客中
一、概述: Sorted-Sets和Sets类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中。它们之间的主要差别是Sorted-Sets中的每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序。然而需要额外指出的是,尽管Sorted-Sets中的成员必须是唯一的,但是分数(score)却是可以重复的
一、概述: 在Redis中,我们可以将Set类型看作为没有排序的字符集合,和List类型一样,我们也可以在该类型的数据值上执行添加、删除或判断某一元素是否存在等操作。需要说明的是,这些操作的时间复杂度为O(1),即常量时间内完成次操作。Set可包含的最大元素数量是4294967295。 和List类型不同的是,Set集合中不允许出现重复的元素,这一点和C++标
一、概述: 我们可以将Redis中的Hashes类型看成具有String Key和String Value的map容器。所以该类型非常适合于存储值对象的信息。如Username、Password和Age等。如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。每一个Hash可以存储4294967295个键值对。 非常适合储存一个对象,比如张三,有性别、姓
一、概述: 在Redis中,List类型是按照插入顺序排序的字符串链表。和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素。在插入时,如果该键并不存在,Redis将为该键创建一个新的链表。与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除。List中可以包含的最大元素数量是4294967295。 从元素插入和删除的
一、概述: 字符串类型是Redis中最为基础的数据存储类型,它在Redis中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等。在Redis中字符串类型的Value最多可以容纳的数据长度是512M。 二、相关命令列表: 命令原型 时间复杂度 命令描述 返回值 APPEND key value
SpringBoot 入门小程序CSDN下载 SpringBoot 入门小程序GitHub下载 老规矩,先看项目结构。 有必要参考前面的博客。maven构建web工程 我们构建好maven工程之后,用pom导入jar包。 pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xm
项目报这个错,我发现是因为eclipse中的core配置文件有问题。 改成了现在我自己设置的tomcat的名字之后,与eclipse相对应起来,一刷新就好了 $(function () { $('pre.prettyprint code').each(function () {
1 首先用命令检查是否安装了vsftpd vsftpd -version 如果未安装用一下命令安装 apt-get install vsftpd 安装完成后,再次输入vsftpd -version命令查看是否安装成功 2 新建一个文件夹用于FTP的工作目录 mkdir /home/ftp 3 新建FTP用户并设置密码以及工作目录 ftpna
sftp 是一个交互式文件传输程式。它类似于 ftp, 但它进行加密传输,比FTP有更高的安全性。下边就简单介绍一下如何远程连接主机,进行文件的上传和下载,以及一些相关操作。 举例,如远程主机的 IP 是 120.25.12.92或者是域名www.hust.edu.cn,用户名是 yexx ,在命令行模式下: sftp yexx@120.25.12.92或者
https://redis.io/ 在Redis官网下载stable版本即可 然后我用的是WinSCP来与服务器相互传文件,可以通过百度,也可以通过我给的百度云链接自行安装 百度云链接:WinSCP 密码:plu7 用WinSCP将WIN的压缩包传到Linux服务器上的local文件夹中 解压 tar -zxvf redis-3.2.6.tar.gz
先看看我们真实机器的IP分配,我们听过网关就可以访问外网。 虚拟机上有三种方式 先说第一种,NAT方式,其实安装好虚拟机,比如VM后,我们会发现我们的网络适配器里面多了两个网卡,那就是VM给我们虚拟出来的网卡,供虚拟机和我们的主机连接用。下图中,黄颜色的圈圈完全是虚拟出来的网络,我们的Linux通过VM虚拟的交换机也会有自己的IP地址,这个地址我们可以在VM的设置中自
常见系统管理(凡是涉及到修改,就一定要用root权限) 轻易不要使用su去切换到root的身份 普通用户使用sudo来执行root权限的命令 如,将hadoop用户添加到sudoers文件中去 vi /etc/sudoers root ALL=(ALL) ALL hadoop ALL=(ALL) ALL 磁盘空间信
rwx就是分别表示可读、可写、可执行(也就是可以在上面执行一些命令,或者自己本身就是一个命令,看可不可以执行) 第一个rwx 是说这个文件所属的用户(拥有者)对这个文件的权限 第二个rwx是说这个文件所属的组,组成员对这个文件的权限(下图就是,a.avi属于root用户(第一个root意思是用户),root组) 第三个rwx是说这个文件对其他人的权限。既不是所属者,也不
我们得通过SSH协议来连接Linux。因为Linux本身就自带SSH服务 -ls 命令 查看目录信息 看到图片之后基本就明白了 单独的ls是查看文件夹的文件,而ls -l 就可以显示详细信息,如果是ls -la 或者是 ll 就可以查看包括隐藏文件的详细信息。如果前面有个d就是表示这是个文件夹。ls -R aa/ aa文件夹下的文件层次 然后我们可以通过l
查询缓存 缓存的意义 将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。 基本由此图可以看出,我们在每一层都需要相应的缓存。 mybatis持久层缓存 mybatis提供一级缓存和二级缓存 mybatis一级缓存是一个SqlSession级别,s
shiro缓存 针对项目资源或者角色授权需要频繁查询数据库,需要使用shiro缓存。 缓存流程 shiro中提供了对认证信息和授权信息的缓存。shiro默认是关闭认证信息缓存的,对于授权信息的缓存shiro默认开启的。主要研究授权信息缓存,因为授权的数据量大。 用户认证通过。 该 用户第一次授权:调用realm查询数据库 该 用户第二次授权:不调用realm查
shiro于SSM整合所有的jar包 web.xml中配置shiro的filter 在web系统中,shiro也通过filter进行拦截。filter拦截后将操作权交给spring中配置的filterChain(过虑链儿) shiro提供很多filter。 applicationContext-shiro.xml 在applicationContext-
授权流程 三种授权方法 Shiro 支持三种方式的授权: 编程式:通过写if/else 授权代码块完成: Subject subject = SecurityUtils.getSubject(); if(subject.hasRole(“admin”)) { //有权限 } else { //无权限 } 注解式:通过在执行的Java
这个问题基本上是你的项目之前出了问题,但是你解决了,不过系统并不能自己把红叉去掉,clean也没有用的情况下,直接去error那个框框里把它删掉就行了额。 $(function () { $('pre.prettyprint code').each(function () {
在eclipse中,编写servlet时,不能导入 HttpServlet 解决方法为:在build path中将 servlet-api.jar 导入即可。(servlet-api.jar在tomcat中的lib目录下) 点击项目 肯定是因为tomcat没有指定,系统无法自己找到。基本上指定一下就好了。 这里推荐使用方式,如果是版本很多不一致的情况下。
默认的ini文件读取方式是系统的记事本 如下图,在eclipse里面进行配置就行了, 让它以资源文件的形式打开。 $(function () { $('pre.prettyprint code').each(function () { var li