- 博客(275)
- 收藏
- 关注
原创 用户数据安全性
1. 注册页面用HTTPS而不是HTTP来增强安全性。2. 公钥加密私钥解密。3. 用户密码加盐防止破解。4. 对于下发的唯一标识要设置有效期。5. 单一平台单点登录,登录IP异常检验。6. 用户状态的权限判断。7. 添加验证码机制,防止爆破和批量注册。...
2018-05-11 16:11:03 1285
原创 Java实现多线程的方式以及三种方式的区别
实现多线程的方式 --继承Thread类,重写run函数 --实现Runnable接口 --实现Callable接口三种方式的区别 --实现Runnable接口可以避免Java单继承特性而带来的局限;增强程序的健壮性,代码能够被多个线程共享,代码与数据是独立的;适合多个相同程序代码的线程去处理同一资源的情况。 --继承Thread类和实现Runnable方法启动线程都是使用star...
2018-05-09 22:45:49 2979
原创 Java序列化,如何实现序列化和反序列化,常见的序列化协议有哪些?
Java序列化定义 将那些实现了Serializable接口的对象转换成一个字节序列,并且能够在以后将这个字节序列完全恢复为原来的对象,序列化可以弥补不同操作系统之间的差异。Java序列化的作用 Java远程方法调用(RMI) 对JavaBeans进行序列化如何实现序列化和反序列化 实现序列化的方法 1. 实现Serializable接口 --该接口是一个可序...
2018-05-09 22:22:58 1795
原创 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 3164
原创 String、StringBuffer、StringBuilder以及对String不变性的理解
String、StringBuffer、StringBuilder 1. 都是final类,都不允许被继承。 2. String长度是不可变的,StringBuffer、StringBuilder长度是可变的。 3. StringBuffer是线程安全的,StringBuilder不是线程安全的,但它们两个中的所有方法都是相同的,StringBuffer在StringBuilder的方法之上...
2018-05-07 11:31:50 477
原创 HashMap和ConcurrentHashMap的区别,ConcurrentHashMap线程安全吗,ConcurrentHashMap如何保证线程安全?
HashMap和ConcurrentHashMap的区别? 1. HashMap是非线程安全的,ConurrentHashMap是线程安全的。 2. ConcurrentHashMap将整个Hash桶进行了分段segment,也就是将这个大的数组分成了几个小的片段segment,而且每个小的片段segment上面都有锁的存在,那么在插入元素的时候就需要先找到应该插入到哪一个片段segment,然后...
2018-05-06 20:54:25 1266
原创 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 1406
转载 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 2078
原创 static和final的区别和用途
static 修饰变量:静态变量随着类加载时被完成初始化,内存中只有一个,且JVM也只会为它分配一次内存,所有类共享静态变量。 修饰方法:在类加载的时候就存在,不依赖任何实例;static方法必须实现,不能用abstract修饰。 修饰代码块:在类加载完之后就会执行代码块中的内容。 父类静态代码块 --> 子类静态代码块 --> 父类非静态代码块 --> 父类构造方法 -...
2018-05-04 17:16:41 510
原创 面向对象开发的六个基本原则,迪米特法则
六个基本原则单一职责:一个类只做它该做的事情(高内聚)。在面向对象中,如果只让一个类完成它该做的事,而不设计与它无关的领域就是践行了高内聚的原则,这个类就只有单一职责。开放封闭:软件实体应当对扩展开放,对修改关闭。要做到开闭有两个要点。第一、抽象是关键,一个系统中如果没有抽象类或接口系统就没有扩展点;第二、封装可变性,将系统中的各种可变因素封装到一个继承结构中,如果多个可变因素混杂在一起,系统将变...
2018-05-03 17:50:39 1327
原创 重载和重写,如何确定调用哪个函数
重载 : 重载发生在同一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者两者都不同)则视为重载。重写:重写发生在子类与父类之间,重写要求子类被重写的方法与父类被重写的方法有相同的返回类型,比父类被重写的方法更好访问,不能比父类被重写方法声明更多的异常(里式替换原则)。根据不同子类对象确定调用哪个方法。...
2018-05-03 11:20:22 1709
原创 面向对象和面向过程的区别
面向过程就像是一个细心的管家,事无巨细的都要考虑到。而面向对象就像是个家用电器,你只需要知道他得功能,不需要知道它的工作原理。 “面向过程”是一种事件为中心的编程思想。就是分析出解决问题所需的步骤,然后用函数把这些步骤实现,并按顺序调用。面向对象是以“对象”为中心的编程思想。 简单地举个例子:汽车发动、汽车到站 这对于“面向过程”来说,是两个事件,汽车启动是一个事件,汽车到站是另...
2018-05-03 11:14:11 391
原创 Java的四个基本特性,对多态的理解,以及在项目中哪些地方用到多态
Java的四个基本特性 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。 继承 : 继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段。 封装 ...
2018-05-03 11:03:37 3791 1
原创 华为勇敢星一面二面
今天下午面得两面一面:1. 自我介绍2. 项目讲解3. 对长春市做一个电子地图,用户能够查到自己要去的地方的路线,如何考虑。4. 一个酒店的wifi被客人连接上了,如何查看客人在酒店的位置。二面:1. 自我介绍。2. 通过什么渠道知道华为招聘的。3. 说一下华为通讯公司和互联网公司的区别。4. 说一下你对华为的了解。5. 你认为什么样的程序叫好的程序。...
2018-04-21 23:02:21 3382 2
原创 京东一面
今天上午面的京东1. 项目介绍2. 写一段死锁的代码3. synchronized的用法4. 给一个10G的文件,1G内存,排序。5. 什么是线程安全,什么是非线程安全。
2018-04-21 22:57:46 476
原创 腾讯一面
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 393
原创 Advice的类型
前置通知(Before advice):在某连接点(join point)之前执行的通知,但不能阻止连接点前的执行(除非它抛出了一个异常)。返回后通知(After returning advice):在某连接点(join point)正常完成后执行的通知。抛出异常后通知(After throwing advice):在方法抛出异常退出时执行的通知。后通知(After(finally)advice)...
2018-04-08 22:33:23 567
原创 AOP的几个相关概念
切面(Aspect):一个关注点的模块化,这个关注点可能会横切多个对象。连接点(JoinPoint):程序执行过程中的某个特定的点。通知(Advice):在切面的某个特定的连接点上执行的动作。切入点(Pointcut):匹配连接点的断言,在AOP中通知和一个切入点表达式关联。引入(Introduction):在不修改类代码的前提下,为类添加新的方法和属性。目标对象(Target Object):被...
2018-04-08 22:27:31 642
原创 春招阿里一面-- 认识自我
今天下午16:55,阿里进行了第一次电话面试,感觉自己好多东西没有真正理解,前路漫漫~~开始:自我介绍:从技术、研究方向、成绩、平时学习的方法介绍。1.40亿个ip,4G内存,查找频次最多的10个。2.头条资讯项目的站内信SQL是怎么做的。3.数据库:如何设计共享锁4.HashMap介绍,HashMap中存的元素如果不使用的要能自动回收应该怎么办?5.LRU算法6.Java两个变量相互引用,能不能...
2018-03-31 18:15:50 640
原创 2018春招便利蜂--你的准备永远不能覆盖面试官的提问
这两天投了一波简历,昨天陪女友去听的宣讲会,之后答了笔试题,今天面试,给了口头offer。 --记2018春招第一面笔试题:1.一个数组里全是正整数,将这个数组中的数字排序后,从前向后...
2018-03-31 16:44:29 1827
原创 JavaBean概念
JavaBean的标准1. 提供无参public的构造方法(默认提供)2. 每个属性,都有public的getter和setter3. 如果属性是boolean,那么就对应is和setter方法
2018-03-19 20:59:31 309
原创 Lock和synchronized的相同点与不同点
相同点:Lock是一个接口,为了使用一个Lock对象,需要用到 Lock lock = new ReentrantLock();与 synchronized (someObject) 类似的,lock()方法,表示当前线程占用lock对象,一旦占用,其他线程就不能占用了。与 synchronized 不同的是,一旦synchronized 块结束,就会自动释放对someObject的占用。 loc...
2018-03-02 22:15:57 908
转载 默认方法-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 286
转载 Java内部类详解
转自:http://how2j.cn/k/interface-inheritance/interface-inheritance-inner-class/322.html#nowhere内部类分为四种: 非静态内部类 静态内部类 匿名类 本地类非静态内部类非静态内部类 BattleScore “战斗成绩”非静态内部类可以直接在一个类里面定义比如:战斗成绩只有在一个英雄对象存在的时候才有意义。所以实...
2018-02-12 19:44:01 260
原创 RocksDB的术语表
Iterator: 迭代器,用户使用迭代器按排序顺序查询范围内的key。Point lookup: 点查询,在RocksDB中,点查找是指使用Get()读取一个键。Range lookup: 范围查找,范围查找意味着使用迭代器读取一系列键。SST File(Data file 数据文件/SST table SST表): SST代表分类序列表。它们是存储数据的...
2018-02-12 16:30:02 3736
原创 运行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 9506
原创 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 210
原创 Java中的Object类
Object类是所有类的父类声明一个类的时候,默认是继承了Object public class Person extends ObjecttoString()Object类提供一个toString方法,所以所有的类都有toString方法toString()的意思是返回当前对象的字符串表达通过 System.out.println 打印对象就是打印该对象的toString()返回值finaliz...
2018-02-12 11:46:31 206
原创 Java隐藏
与重写类似,方法的重写是子类覆盖父类的对象方法 隐藏,就是子类覆盖父类的类方法父类:public class Person { public String name; protected float hp; /** * 类方法,静态方法 * 通过类就可以直接调用 */ public static void battlewin(){ ...
2018-02-12 11:24:06 1543
原创 Java Util包里的Arrays类
数组复制 与使用System.arraycopy进行数组复制类似的, Arrays提供了一个copyOfRange方法进行数组复制。 不同的是System.arraycopy,需要事先准备好目标数组,并分配长度。 copyOfRange 只需要源数组就就可以了,通过返回值,就能够得到目标数组了。 除此之外,需要注意的是 copyOfRange 的第3个参数,表示源数组的结束位置,是取不到的。...
2018-02-12 11:10:43 860
原创 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 313
转载 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 232
原创 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 439
原创 分区索引过滤器
随着DB /内存比变大,过滤器/索引块的内存占用变得不重要。 虽然cache_index_and_filter_blocks允许只将其中的一部分存储在块缓存中,但是它们相对较大的尺寸通过以下方式对性能产生负面影响: i)占用可用于缓存数据的块缓存空间。 ii)通过将磁盘存储装载到错过之后的缓存。这里我们更详细地说明这些问题,并解释如何划分索引/过滤器来减轻开销。索引/过滤块有多大? R...
2018-02-11 16:03:35 792
原创 Varint64
ZigZag编码将带符号整数映射为无符号整数,因此具有小绝对值(例如-1)的数字也具有小varint编码值。 它以一种在正整数和负整数之间来回“锯齿”的方式实现,所以-1编码为1,1编码为2,-2编码为3,依此类推可以在下表中看到:签名原件 编码为0 0-1 11 ...
2018-02-11 11:47:21 596
原创 RocksDB的高级架构
RocksDB是一个嵌入式的键值存储,其中键和值是任意的字节流。 RocksDB组织所有数据的排序顺序和常用操作Get(key),Put(key),Delete(key)和NewIterator()。 RocksDB的三个基本结构是memtable,sstfile和logfile。 memTable是一个存储器内数据结构-新的写入被插入的memTable和任选地写入到日志文件。该日志文件...
2018-02-11 11:09:46 5403
原创 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 233
转载 Vim快速入门
转自:https://www.shiyanlou.com/courses/runningvim模式介绍以下介绍内容来自维基百科Vim 从vi演生出来的Vim具有多种模式,这种独特的设计容易使初学者产生混淆。几乎所有的编辑器都会有插入和执行命令两种模式,并且大多数的编辑器使用了与Vim截然不同的方式:命令目录(鼠标或者键盘驱动),组合键(通常通过control键(CTRL)和alt键(ALT)组成...
2018-02-09 15:52:16 267
原创 MyBatis入门
平时我们都用JDBC访问数据库,除了需要自己写SQL之外,还必须操作Connection, Statment, ResultSet 这些其实只是手段的辅助类。 不仅如此,访问不同的表,还会写很多雷同的代码,显得繁琐和枯燥。 那么用了Mybatis之后,只需要自己提供SQL语句,其他的工作,诸如建立连接,Statement, JDBC相关异常处理等等都交给Mybatis去做了,那些重复性的工...
2018-02-08 20:25:57 240
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人