自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 vim总结

当你意识到你不得不学习的时候,心中的那种躁动的心情,又有谁会体会到呢?比如:当同事vim 用的很溜的时候,在他看来,这些基本的操作,是从事linux 开发必须具备的技能,是不需要别人来指导的。其实知识最怕的不是你不断的去学,而是你不停的学习应用的过程中,不断的总结归纳。vim 快速编辑快捷键,总结如下:1. 为什么使用hjkl作为方向键?hjkl : 为什么用 HJKL 键作为方向键?当 Bill Joy 创建 Vi 文本编辑器时,他使用的机器机器是 ADM-3A 终端...

2020-07-01 10:34:17 172

原创 git 专栏

git的服务器端(remote)端包含多个repository,每个repository可以理解为一个项目。而每个repository下有多个branch。"origin"就是指向某一个repository的指针。服务器端的"master"(强调服务器端是因为本地端也有master)就是指向某个repository的一个branch的指针。这是服务器端(remote)的情况:而在本地电脑(local)上:"master"就是指向刚刚从remote server传到本地的副本branch。$g

2020-05-13 22:49:06 290

原创 shell中引号得使用

单引号:可以说是所见即所得:即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就会输出什么。单引号''是全引用,被单引号括起的内容不管是常量还是变量者不会发生替换。双引号:把双引号内的内容输出出来;如果内容中有命令、变量等,会先把变量、命令解析出结果,然后在输出最终内容来。双引号""是部分引用,被双引号括起的内容常量还是常量,变量则会发生替换,替换成变量内容...

2019-11-27 10:29:16 656

原创 shell特殊符号的含义以及用法

Shell中的特殊字符有1、$ 美元符2、\ 反斜杠3、` 反引号4、" 双引号5、< ,>;,*,?,[,]下面我一一举列说明一、$符号1、echo $? 显示的是上一条指令退出状态2、echo "$?" 效果同上3、echo '$?' 显示的是$?4、echo \$? 显示的是$?5、echo "\$?" 显示的是$?  大家可能...

2019-11-21 14:29:41 1008

原创 linux 下shell中if的“-e,-d,-f”是什么意思

文件表达式-e filename 如果 filename存在,则为真-d filename 如果 filename为目录,则为真-f filename 如果 filename为常规文件,则为真-L filename 如果 filename为符号链接,则为真-r filename 如果 filename可读,则为真-w filename 如果 filename可写,则为真-x f...

2019-11-21 11:03:56 518

原创 echo -e 命令详解

echo(选项)(参数)选项-e:激活转义字符。使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:•\a 发出警告声;•\b 删除前一个字符;•\c 最后不加上换行符号;•\f 换行但光标仍旧停留在原来的位置;•\n 换行且光标移至行首;•\r 光标移至行首,但不换行;•\t 插入tab;•\v 与\f相同;•\\ 插入\字符;•\nnn...

2019-11-21 10:51:51 11255

原创 分布式CAP定理,为什么不能同时满足三个特性?

在弄清楚这个问题之前,我们先了解一下什么是分布式的CAP定理。根据百度百科的定义,CAP定理又称CAP原则,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),最多只能同时三个特性中的两个,三者不可兼得。 一、CAP的定义Consistency (一致性):“all nodes ...

2018-08-27 13:59:27 389

原创 枚举单例 最安全的单例,可以有效防止反射,序列化

 单例的枚举实现在《Effective Java》中有提到,因为其功能完整、使用简洁、无偿地提供了序列化机制、在面对复杂的序列化或者反射攻击时仍然可以绝对防止多次实例化等优点,单元素的枚举类型被作者认为是实现Singleton的最佳方法。其实现非常简单,如下:public enum Singleton {    INSTANCE;    private Singleton()...

2018-08-26 14:36:49 2072 2

原创 并发下HashMap引发死循环及元素丢失

HashMap不是线程安全的。那么HashMap在多线程环境下又会有什么问题呢?  public class HashMapThread extends Thread{ private static AtomicInteger ai = new AtomicInteger(0); private static Map&lt;Integer, Integer&gt; ...

2018-08-14 10:25:20 3308 4

原创 交换两个数不用变量怎么交换

  如果要交换两个变量的值,我们首先想到的就是定义一个第三方变量暂存其中一个变量的值:                  如果我们不使用第三方变量怎么交换两个变量的值呢?         1.利用两数之和减去另一个数的方式:                  这样也能成功交换两个数的值,但这种方法,如果两个数很大,可能会超出类型范围,造成数据丢失精度。所以不常用。     ...

2018-08-14 09:57:17 417

原创 编程输入问题总结

next()和nextLine()方法。两者一个是能读取空格一个是不能读取空格就像下面的样子nextLine()中可以输入空格,但是next()不可以如果在输入一个整数以后,想输入一行数据,后边必须有跟一个nextLine()接受回车。如果输入多行数据,while(scanner.hasNext())的时候再输入crL+z,结束输入循环  ...

2018-08-11 19:27:02 152

原创 jvm中string的底层分析

一、String对象一旦被创建就是固定不变的了,对String对象的任何改变都不影响到原对象,相关的任何change操作都会生成新的对象”。因为Sring源码是被final修饰的。 二、字符串常量池字符串常量池位于方法区,常量池分为两种,一种是静态常量池,一种是运行时常量池      我们知道字符串的分配和其他对象分配一样,是需要消耗高昂的时间和空间的,而且字符串我们使用的非常多。...

2018-08-11 10:47:16 1946 1

原创 大型网站系统与java中间件实践 读书笔记

 分布式系统介绍 大型网站的框架演进过程大型网站访问量和数据量缺一不可大型网站最核心的就是计算和存储应用服务器从一台变为两台,,需要解决两个问题用户对服务器如何选择(负载均衡) Session问题session问题如何解决Session sticky需要负载均衡器对每次会话的标志进行请求转发,让同样的session每次都送到同一个服务器上会产生一些问题:...

2018-08-10 11:17:10 876

原创 《Redis设计与实现总结》

Redis 基本数据类型,以及数据结构String-动态字符串Hash –字典List-列表Set-集合Sorted-set有序集合 跳跃表第一章动态字符串Struct sdshdr{         Int  len;//保存字符串的长度         Int free;//记录buf中未使用的字节的数量         char []buf;}...

2018-07-10 08:29:09 531

转载 深入理解Java并发之synchronized实现原理

【版权申明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/72828483 出自【zejian的博客】关联文章:深入理解Java类型信息(Class对象)与反射机制深入理解Java枚举类型(enum)深入理解Java注解类型(@Annotation)深入理解Java类加载器(ClassLoad...

2018-06-13 16:06:05 178

转载 【深入理解JVM】:Java类继承关系中的初始化顺序

Java类初始化的顺序经常让人犯迷糊,现在本文尝试着从JVM的角度,对Java非继承和继承关系中类的初始化顺序进行试验,尝试给出JVM角度的解释。非继承关系中的初始化顺序对于非继承关系,主类InitialOrderWithoutExtend中包含了静态成员变量(类变量)SampleClass 类的一个实例,普通成员变量SampleClass 类的2个实例(在程序中的顺序不一样)以及一个静态代码块,...

2018-05-13 16:02:47 169

转载 String:字符串常量池

作为最基础的引用数据类型,Java 设计者为 String 提供了字符串常量池以提高其性能,那么字符串常量池的具体原理是什么,我们带着以下三个问题,去理解字符串常量池:字符串常量池的设计意图是什么?字符串常量池在哪里?如何操作字符串常量池?字符串常量池的设计思想字符串的分配,和其他的对象分配一样,耗费高昂的时间与空间代价,作为最基础的数据类型,大量频繁的创建字符串,极大程度地影响程序的性能JVM为...

2018-05-10 16:44:25 255

转载 海量数据处理-分而治之和hash映射

什么是Hash     Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。 ...

2018-04-19 10:31:55 656

原创 0-1背包问题和部分背包(fractional knapsack)问题分析(动态规划,贪心算法)

简介    背包问题已经是一个很经典而且讨论很广泛的算法问题了。最近学习到这一部分,打算结合自己思考和编码的过程做一个思考总结。这里主要讨论的0-1背包问题和部分背包问题解决方法背后其实隐藏了两种我们比较常见的算法解决思路,动态规划和贪婪算法。正好通过这两个问题的讨论可以好好的加深一下理解。 问题描述    假设我们有n件物品,分别编号为1, 2...n。其中编号为i的物品价值为vi,它的重量为w...

2018-04-17 13:43:09 8739 1

转载 java内部类

匿名内部类:简化书写的内部类。前提:内部类需要继承或者实现外部的类或者接口。格式:new 父类or接口名(){子类的内容}匿名内部类其实就是一个子类对象。小面试:(多态+匿名内部类)[java] view plain copyclass Outer  {      public void method(){  /*1.         new Object(){             publi...

2018-04-12 14:15:13 97

转载 java多态实现原理

众所周知,多态是面向对象编程语言的重要特性,它允许基类的指针或引用指向派生类的对象,而在具体访问时实现方法的动态绑定。C++ 和 Java 作为当前最为流行的两种面向对象编程语言,其内部对于多态的支持到底是如何实现的呢,本文对此做了全面的介绍。注意到在本文中,指针和引用会互换使用,它们仅是一个抽象概念,表示和另一个对象的连接关系,无须在意其具体的实现。Java 的实现方式Java 对于方法调用动态...

2018-03-30 20:00:41 138

转载 关于.getClass()和.class的区别

一直在想.class和.getClass()的区别,思索良久,有点思绪,然后有网上搜了搜,找到了如下的一篇文章,与大家分享。原来为就是涉及到Java的反射~~~~~Java反射学习所谓反射,可以理解为在运行时期获取对象类型信息的操作。传统的编程方法要求程序员在编译阶段决定使用的类型,但是在反射的帮助下,编程人员可以动态获取这些信息,从而编写更加具有可移植性的代码。严格地说,反射并非编程语言的特性,...

2018-03-30 10:32:43 297

原创 Lock和synchronized的区别和使用

今天看了并发实践这本书的ReentantLock这章,感觉对ReentantLock还是不够熟悉,有许多疑问,所有在网上找了很多文章看了一下,总体说的不够详细,重点和焦点问题没有谈到,但这篇文章相当不错,说的很全面,主要的重点都说到了,所有在这里转载了这篇文章。  在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,

2018-01-17 21:17:33 278

原创 Java四种线程池的使用

Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。

2018-01-16 20:23:29 159

原创 多线程

引如果对什么是线程、什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内。用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟,当然也没法说能用单线程来实现:比如最常见的“生产者,消费者模型”。很多人都

2018-01-16 18:58:41 147

原创 SringBuffer的方法

当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不

2018-01-08 16:21:42 319

原创 Java集合类相关面试题

1、Collection和Collections的差别java.util.Collection 是一个集合接口,Collection接口在Java类库中有非常多详细的实现。比如List、Setjava.util.Collections 是针对集合类的一个帮助类,它提供了一系列的静态方法实现对各种集合的搜索、排序、线程安全化等操作。2、ArrayList与Vector的差别

2018-01-05 14:18:43 517

原创 代理设计模式

定义:为其他对象提供一种代理以控制对这个对象的访问。代理模式的结构如下图所示。动态代理使用java动态代理机制以巧妙的方式实现了代理模式的设计理念。代理模式示例代码public interface Subject { public void doSomething(); } public class RealSubject

2018-01-04 16:42:13 146

原创 Java类加载器总结

1.类的加载过程  JVM将类加载过程分为三个步骤:装载(Load),链接(Link)和初始化(Initialize)链接又分为三个步骤,如下图所示:1) 装载:查找并加载类的二进制数据;2)链接:验证:确保被加载类的正确性;准备:为类的静态变量分配内存,并将其初始化为默认值;解析:把类中的符号引用转换为直接引用;3)初始

2017-12-29 14:47:06 134

原创 java的HashMap类提供的方法

voidclear()Removes all of the mappings from this map.Objectclone()Returns a shallow copy of this HashMap instance: the keys and values themselves are not cloned.boolean

2017-12-08 09:44:26 306

原创 关于0x80000000为什么等于-2147483648和负数在内存上储存的问题

1·先说明负数怎么储存(1)十进制负数是以其补码储存在内存上。验证:求-8在内存上以二进制形式1的个数思路是:拿变量,令值为1,与-8的二进制码的每一位做与运算,若与运算结果为1,则该位为1。代码:[cpp] view plain copyint NumberOf1(int n) {    int count = 

2017-12-05 10:38:50 1101

原创 求有环单链表中的环长、环起点、链表长

1.判断单链表是否有环  使用两个slow, fast指针从头开始扫描链表。指针slow 每次走1步,指针fast每次走2步。如果存在环,则指针slow、fast会相遇;如果不存在环,指针fast遇到NULL退出。  就是所谓的追击相遇问题:    2.求有环单链表的环长   在环上相遇后,记录第一次相遇点为Pos,之后指针slow继续每次走1步,fast每

2017-11-24 10:02:56 181

原创 新生代和老年代

以下为我学习java新生代和老年代所整理的笔记。摘自《深入理解java虚拟机》一书。java堆可以细分为新生代和老年代新生代:生命周期比较短的对象。老年代:生命周期比较长的对象。1、新生代常采用的算法:复制算法现在商业虚拟机都采用这种收集算法来回收新生代。新生代的对象98%都是“朝生夕死”,将内存分为一块较大的Eden空间和from su

2017-11-23 22:12:10 215

转载 jvm-常量池

Java中的常量池,实际上分为两种形态:静态常量池和运行时常量池。     所谓静态常量池,即*.class文件中的常量池,class文件中的常量池不仅仅包含字符串(数字)字面量,还包含类、方法的信息,占用class文件绝大部分空间。     而运行时常量池,则是jvm虚拟机在完成类装载操作后,将class文件中的常量池载入到内存中,并保存在方法区中,我们常说的常量池,就是指方法区

2017-11-13 16:47:10 314

原创 二叉排序树的建立

最近看了一下二叉排序树的建立,自己写了一段代码,用来建立二叉排序树,给定一个数组,对这个数组中的数字进行建立二叉排序树。分两种情况:     1  数组中的数字是随机的,也就是说没有顺序 eg : int  a [ ] = {3,1,2,5,0,7,9,8} ,用这个数组中的数字建立二叉排序树,注意这里的二叉排序树是随便的,没有特殊的要求(比如建立高度最小的二叉排序树),可知二叉排序树是不

2017-11-09 09:52:50 6359

原创 广度/宽度优先搜索(BFS)

1.前言广度优先搜索(也称宽度优先搜索,缩写BFS,以下采用广度来描述)是连通图的一种遍历策略。因为它的思想是从一个顶点V0开始,辐射状地优先遍历其周围较广的区域,故得名。 一般可以用它做什么呢?一个最直观经典的例子就是走迷宫,我们从起点开始,找出到终点的最短路程,很多最短路径算法就是基于广度优先的思想成立的。算法导论里边会给出不少严格的证明,我想尽量写得通俗一点,因此采用

2017-11-02 15:11:34 216

原创 深度优先搜索(DFS)

1.前言深度优先搜索(缩写DFS)有点类似广度优先搜索,也是对一个连通图进行遍历的算法。它的思想是从一个顶点V0开始,沿着一条路一直走到底,如果发现不能到达目标解,那就返回到上一个节点,然后从另一条路开始走到底,这种尽量往深处走的概念即是深度优先的概念。你可以跳过第二节先看第三节,:)2.深度优先搜索VS广度优先搜索2.1演示深度优先搜索的过程还是引用上篇文章的样例图,

2017-11-02 15:09:01 146

原创 Object 类中的 equals方法

1 相等与同一如果两个对象具有相同的类型以及相同的属性值,则称这两个对象相等。如果两个引用对象指的是同一个对像,则称这两个变量同一。Object类中定义的equals 函数原型为:public boolean equals(Object);他是判断两个对象是否同一,并不是是否相等。2 equals方法由于Object 类是所有类的最高基类,所有其他类都继承类Object类的

2017-11-01 14:45:07 403

原创 Java中基本数据类型和包装器类型的关系

在程序设计中经常用到一系列的数据类型,在Java中也一样包含八中数据类型,这八种数据类型又各自对应一种包装器类型。如下表:基本类型包装器类型booleanBooleancharCharacterintIntegerbyteByteshortShort

2017-10-31 09:33:17 199

原创 Java中泛型 类型擦除

Java 泛型(Generic)的引入加强了参数类型的安全性,减少了类型的转换,但有一点需要注意:Java 的泛型在编译器有效,在运行期被删除,也就是说所有泛型参数类型在编译后都会被清除掉,看下面一个列子,代码如下:public class Foo { public void listMethod(List stringList){ } public v

2017-10-30 11:17:18 216

空空如也

空空如也

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

TA关注的人

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