自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 用户数据安全性

1. 注册页面用HTTPS而不是HTTP来增强安全性。2. 公钥加密私钥解密。3. 用户密码加盐防止破解。4. 对于下发的唯一标识要设置有效期。5. 单一平台单点登录,登录IP异常检验。6. 用户状态的权限判断。7. 添加验证码机制,防止爆破和批量注册。...

2018-05-11 16:11:03 1242

原创 Java实现多线程的方式以及三种方式的区别

实现多线程的方式   --继承Thread类,重写run函数   --实现Runnable接口   --实现Callable接口三种方式的区别  --实现Runnable接口可以避免Java单继承特性而带来的局限;增强程序的健壮性,代码能够被多个线程共享,代码与数据是独立的;适合多个相同程序代码的线程去处理同一资源的情况。  --继承Thread类和实现Runnable方法启动线程都是使用star...

2018-05-09 22:45:49 2929

原创 Java序列化,如何实现序列化和反序列化,常见的序列化协议有哪些?

Java序列化定义  将那些实现了Serializable接口的对象转换成一个字节序列,并且能够在以后将这个字节序列完全恢复为原来的对象,序列化可以弥补不同操作系统之间的差异。Java序列化的作用  Java远程方法调用(RMI)  对JavaBeans进行序列化如何实现序列化和反序列化  实现序列化的方法      1. 实现Serializable接口           --该接口是一个可序...

2018-05-09 22:22:58 1711

原创 String有重写Object的hashcode和toString吗?如果重写equals不重写hashcode会出现什么问题?

String有重写Object的hashcode和toString吗?    String重写了Object类的hashcode和toString方法。当equals方法被重写时,通常有必要重写hashcode方法,以维护hashCode方法的常规协定,该协定声明相对等的两个必须有相同的hashcode。   1. object1.equals(object2)为true时, object1.ha...

2018-05-07 11:42:40 3108

原创 String、StringBuffer、StringBuilder以及对String不变性的理解

String、StringBuffer、StringBuilder  1. 都是final类,都不允许被继承。  2. String长度是不可变的,StringBuffer、StringBuilder长度是可变的。  3. StringBuffer是线程安全的,StringBuilder不是线程安全的,但它们两个中的所有方法都是相同的,StringBuffer在StringBuilder的方法之上...

2018-05-07 11:31:50 428

原创 HashMap和ConcurrentHashMap的区别,ConcurrentHashMap线程安全吗,ConcurrentHashMap如何保证线程安全?

HashMap和ConcurrentHashMap的区别? 1. HashMap是非线程安全的,ConurrentHashMap是线程安全的。 2. ConcurrentHashMap将整个Hash桶进行了分段segment,也就是将这个大的数组分成了几个小的片段segment,而且每个小的片段segment上面都有锁的存在,那么在插入元素的时候就需要先找到应该插入到哪一个片段segment,然后...

2018-05-06 20:54:25 1222

原创 HashMap和HashTable的区别,HashMap中的key可以是任何对象或数据类型么?HashTable是线程安全的么?

HashMap和HashTable的区别  1.HashTable的方法是同步的,HashMap未经同步,所以在多线程场合要动手同步HashMap这个区别就像Vector和ArrayList。  2.HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)  3.两者的遍历方式大同小异,HashTable仅仅比HashMap多一个e...

2018-05-05 17:57:05 1381

转载 spring、spring boot与spring mvc的区别是什么?

转自:https://www.zhihu.com/question/64671972/answer/223383505Spring 框架就像一个家族,有众多衍生产品例如 boot、security、jpa等等。但他们的基础都是Spring 的 ioc和 aop ioc 提供了依赖注入的容器 aop ,解决了面向横切面的编程,然后在此两者的基础上实现了其他延伸产品的高级功能。Spring MVC是基...

2018-05-04 22:35:23 2050

原创 static和final的区别和用途

static  修饰变量:静态变量随着类加载时被完成初始化,内存中只有一个,且JVM也只会为它分配一次内存,所有类共享静态变量。  修饰方法:在类加载的时候就存在,不依赖任何实例;static方法必须实现,不能用abstract修饰。  修饰代码块:在类加载完之后就会执行代码块中的内容。  父类静态代码块 --> 子类静态代码块 --> 父类非静态代码块 --> 父类构造方法 -...

2018-05-04 17:16:41 449

原创 面向对象开发的六个基本原则,迪米特法则

六个基本原则单一职责:一个类只做它该做的事情(高内聚)。在面向对象中,如果只让一个类完成它该做的事,而不设计与它无关的领域就是践行了高内聚的原则,这个类就只有单一职责。开放封闭:软件实体应当对扩展开放,对修改关闭。要做到开闭有两个要点。第一、抽象是关键,一个系统中如果没有抽象类或接口系统就没有扩展点;第二、封装可变性,将系统中的各种可变因素封装到一个继承结构中,如果多个可变因素混杂在一起,系统将变...

2018-05-03 17:50:39 1292

原创 重载和重写,如何确定调用哪个函数

重载 : 重载发生在同一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者两者都不同)则视为重载。重写:重写发生在子类与父类之间,重写要求子类被重写的方法与父类被重写的方法有相同的返回类型,比父类被重写的方法更好访问,不能比父类被重写方法声明更多的异常(里式替换原则)。根据不同子类对象确定调用哪个方法。...

2018-05-03 11:20:22 1644

原创 面向对象和面向过程的区别

  面向过程就像是一个细心的管家,事无巨细的都要考虑到。而面向对象就像是个家用电器,你只需要知道他得功能,不需要知道它的工作原理。  “面向过程”是一种事件为中心的编程思想。就是分析出解决问题所需的步骤,然后用函数把这些步骤实现,并按顺序调用。面向对象是以“对象”为中心的编程思想。    简单地举个例子:汽车发动、汽车到站    这对于“面向过程”来说,是两个事件,汽车启动是一个事件,汽车到站是另...

2018-05-03 11:14:11 337

原创 Java的四个基本特性,对多态的理解,以及在项目中哪些地方用到多态

Java的四个基本特性  抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。  继承 : 继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段。  封装 ...

2018-05-03 11:03:37 3730 1

原创 华为勇敢星一面二面

今天下午面得两面一面:1. 自我介绍2. 项目讲解3. 对长春市做一个电子地图,用户能够查到自己要去的地方的路线,如何考虑。4. 一个酒店的wifi被客人连接上了,如何查看客人在酒店的位置。二面:1. 自我介绍。2. 通过什么渠道知道华为招聘的。3. 说一下华为通讯公司和互联网公司的区别。4. 说一下你对华为的了解。5. 你认为什么样的程序叫好的程序。...

2018-04-21 23:02:21 3360 2

原创 京东一面

今天上午面的京东1. 项目介绍2. 写一段死锁的代码3. synchronized的用法4. 给一个10G的文件,1G内存,排序。5. 什么是线程安全,什么是非线程安全。

2018-04-21 22:57:46 435

原创 腾讯一面

2018年4月20日春招,最近较忙,才整理一下。1. 项目经历2. 一个字符数组a[], 一个字符数组b[],求a与b的差集c。3. 64匹马,8个跑道,至少比赛多少场能决出前4名。4. Java的网络编程。5. 进程间的通信方式。6. epoll linux 7. hadoop。...

2018-04-21 22:55:20 369

原创 Advice的类型

前置通知(Before advice):在某连接点(join point)之前执行的通知,但不能阻止连接点前的执行(除非它抛出了一个异常)。返回后通知(After returning advice):在某连接点(join point)正常完成后执行的通知。抛出异常后通知(After throwing advice):在方法抛出异常退出时执行的通知。后通知(After(finally)advice)...

2018-04-08 22:33:23 532

原创 AOP的几个相关概念

切面(Aspect):一个关注点的模块化,这个关注点可能会横切多个对象。连接点(JoinPoint):程序执行过程中的某个特定的点。通知(Advice):在切面的某个特定的连接点上执行的动作。切入点(Pointcut):匹配连接点的断言,在AOP中通知和一个切入点表达式关联。引入(Introduction):在不修改类代码的前提下,为类添加新的方法和属性。目标对象(Target Object):被...

2018-04-08 22:27:31 603

原创 春招阿里一面-- 认识自我

今天下午16:55,阿里进行了第一次电话面试,感觉自己好多东西没有真正理解,前路漫漫~~开始:自我介绍:从技术、研究方向、成绩、平时学习的方法介绍。1.40亿个ip,4G内存,查找频次最多的10个。2.头条资讯项目的站内信SQL是怎么做的。3.数据库:如何设计共享锁4.HashMap介绍,HashMap中存的元素如果不使用的要能自动回收应该怎么办?5.LRU算法6.Java两个变量相互引用,能不能...

2018-03-31 18:15:50 613

原创 2018春招便利蜂--你的准备永远不能覆盖面试官的提问

这两天投了一波简历,昨天陪女友去听的宣讲会,之后答了笔试题,今天面试,给了口头offer。                                                                                                             --记2018春招第一面笔试题:1.一个数组里全是正整数,将这个数组中的数字排序后,从前向后...

2018-03-31 16:44:29 1785

原创 JavaBean概念

JavaBean的标准1. 提供无参public的构造方法(默认提供)2. 每个属性,都有public的getter和setter3. 如果属性是boolean,那么就对应is和setter方法

2018-03-19 20:59:31 288

原创 服务端跳转与客户端跳转图示

2018-03-18 00:26:58 391

原创 Lock和synchronized的相同点与不同点

相同点:Lock是一个接口,为了使用一个Lock对象,需要用到 Lock lock = new ReentrantLock();与 synchronized (someObject) 类似的,lock()方法,表示当前线程占用lock对象,一旦占用,其他线程就不能占用了。与 synchronized 不同的是,一旦synchronized 块结束,就会自动释放对someObject的占用。 loc...

2018-03-02 22:15:57 872

转载 默认方法-JAVA8的新特性

转自:http://how2j.cn/k/interface-inheritance/interface-inheritance-default-method/676.html  默认方法是JDK8新特性,指的是接口也可以提供具体方法了,而不像以前,只能提供抽象方法。  Mortal 这个接口,增加了一个默认方法 revive,这个方法有实现体,并且被声明为了default。public inte...

2018-02-12 19:51:19 268

转载 Java内部类详解

转自:http://how2j.cn/k/interface-inheritance/interface-inheritance-inner-class/322.html#nowhere内部类分为四种: 非静态内部类 静态内部类 匿名类 本地类非静态内部类非静态内部类 BattleScore “战斗成绩”非静态内部类可以直接在一个类里面定义比如:战斗成绩只有在一个英雄对象存在的时候才有意义。所以实...

2018-02-12 19:44:01 244

原创 RocksDB的术语表

Iterator:    迭代器,用户使用迭代器按排序顺序查询范围内的key。Point lookup:    点查询,在RocksDB中,点查找是指使用Get()读取一个键。Range lookup:    范围查找,范围查找意味着使用迭代器读取一系列键。SST File(Data file 数据文件/SST table SST表):            SST代表分类序列表。它们是存储数据的...

2018-02-12 16:30:02 3623

原创 运行RocksDB的一个简单示例(c++)

笔者的开发环境是Centos7,不过相信Linux环境下的都不会有问题。1.用git将代码从github上clone到本地(rocksdb的github:  https://github.com/facebook/rocksdb.git  )。2.在父目录下输入shell命令编译文件:  make static_lib3.编译所有示例文件: cd examples; make all此为Rocks...

2018-02-12 15:10:24 9269

原创 Java的final修饰符

final修饰类,方法,基本类型变量,引用的时候分别有不同的意思。final修饰类当Hero被修饰成final的时候,表示Hero不能够被继承其他类如果继承会出现编译错误final修饰方法父类的u方法被修饰成final,那么该方法在子类中,不能够被重写。final修饰基本类型变量final修饰基本类型变量,表示该变量只有一次赋值机会 比如:final int hp;hp = 5;hp = 6;(错...

2018-02-12 14:30:56 198

原创 Java中的Object类

Object类是所有类的父类声明一个类的时候,默认是继承了Object public class Person extends ObjecttoString()Object类提供一个toString方法,所以所有的类都有toString方法toString()的意思是返回当前对象的字符串表达通过 System.out.println 打印对象就是打印该对象的toString()返回值finaliz...

2018-02-12 11:46:31 190

原创 Java隐藏

与重写类似,方法的重写是子类覆盖父类的对象方法 隐藏,就是子类覆盖父类的类方法父类:public class Person { public String name; protected float hp; /** * 类方法,静态方法 * 通过类就可以直接调用 */ public static void battlewin(){ ...

2018-02-12 11:24:06 1497

原创 Java Util包里的Arrays类

数组复制  与使用System.arraycopy进行数组复制类似的, Arrays提供了一个copyOfRange方法进行数组复制。  不同的是System.arraycopy,需要事先准备好目标数组,并分配长度。 copyOfRange 只需要源数组就就可以了,通过返回值,就能够得到目标数组了。  除此之外,需要注意的是 copyOfRange 的第3个参数,表示源数组的结束位置,是取不到的。...

2018-02-12 11:10:43 823

原创 Java中数组的复制

把一个数组的值,复制到另一个数组中System.arraycopy(src, srcPos, dest, destPos, length)src: 源数组srcPos: 从源数组复制数据的起始位置dest: 目标数组destPos: 复制到目标数组的起始位置length: 复制的长度public static void main(String [] args){ int [] a ...

2018-02-12 10:40:51 290

转载 Java的反射机制

转自:http://how2j.cn/k/reflection/reflection-class/108.html一、什么是类对象  类对象,就是用于描述这种类,都有什么属性,什么方法的。二、获取类对象获取类对象有3种方式1. Class.forName2. Hero.class3. new Hero().getClass()在一个JVM中,一种类,只会有一个类对象存在。所以以上三种方式取出来的类...

2018-02-11 20:17:37 204

原创 JDBC示例

JDBC连接示例1.加载mysql-jdbc的jar包mysql-connector-java-5.0.8-bin.jar。2.初始化驱动  通过Class.forName("com.mysql.jdbc.Driver");  初始化驱动类com.mysql.jdbc.Driver3.建立与数据库的Connection连接    这里需要提供:    数据库所处于的ip:127.0.0.1 (本机...

2018-02-11 19:45:23 396

原创 分区索引过滤器

  随着DB /内存比变大,过滤器/索引块的内存占用变得不重要。  虽然cache_index_and_filter_blocks允许只将其中的一部分存储在块缓存中,但是它们相对较大的尺寸通过以下方式对性能产生负面影响:  i)占用可用于缓存数据的块缓存空间。  ii)通过将磁盘存储装载到错过之后的缓存。这里我们更详细地说明这些问题,并解释如何划分索引/过滤器来减轻开销。索引/过滤块有多大?  R...

2018-02-11 16:03:35 730

原创 Varint64

  ZigZag编码将带符号整数映射为无符号整数,因此具有小绝对值(例如-1)的数字也具有小varint编码值。  它以一种在正整数和负整数之间来回“锯齿”的方式实现,所以-1编码为1,1编码为2,-2编码为3,依此类推可以在下表中看到:签名原件             编码为0                     0-1                     11             ...

2018-02-11 11:47:21 552

原创 RocksDB的高级架构

  RocksDB是一个嵌入式的键值存储,其中键和值是任意的字节流。  RocksDB组织所有数据的排序顺序和常用操作Get(key),Put(key),Delete(key)和NewIterator()。  RocksDB的三个基本结构是memtable,sstfile和logfile。  memTable是一个存储器内数据结构-新的写入被插入的memTable和任选地写入到日志文件。该日志文件...

2018-02-11 11:09:46 5347

原创 Vim基本命令

一、进入vim界面   vim 编辑文件的名字   或者直接vim ,在进入命令行模式后输入:e  文件路径,也可以打开文件。   在进入vim后,按下i键进入插入模式(该模式下可以输入文本信息)。二、按Esc进入普通模式,在该模式下使用方向键或者h,j,k,l键可以移动游标。按键     说明h     左l     右(小写L)j     下k     上w     移动到下一个单词b    ...

2018-02-09 16:04:38 205

转载 Vim快速入门

转自:https://www.shiyanlou.com/courses/runningvim模式介绍以下介绍内容来自维基百科Vim  从vi演生出来的Vim具有多种模式,这种独特的设计容易使初学者产生混淆。几乎所有的编辑器都会有插入和执行命令两种模式,并且大多数的编辑器使用了与Vim截然不同的方式:命令目录(鼠标或者键盘驱动),组合键(通常通过control键(CTRL)和alt键(ALT)组成...

2018-02-09 15:52:16 244

原创 MyBatis入门

  平时我们都用JDBC访问数据库,除了需要自己写SQL之外,还必须操作Connection, Statment, ResultSet 这些其实只是手段的辅助类。 不仅如此,访问不同的表,还会写很多雷同的代码,显得繁琐和枯燥。   那么用了Mybatis之后,只需要自己提供SQL语句,其他的工作,诸如建立连接,Statement, JDBC相关异常处理等等都交给Mybatis去做了,那些重复性的工...

2018-02-08 20:25:57 217

空空如也

空空如也

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

TA关注的人

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