面试题
文章平均质量分 54
hanruikai
aaa
展开
-
Java设计模式篇工厂方法结合模版方法实战实例
摘要另外一篇文章写了如何运用工厂方法加模版方法,文中的例子是依靠记录写了当时的应用,感觉不够清晰,今天再次运用,给出全新的,更加容易理解的常见。背景需求是导入白名单,一个excel文件,再完成之后,又需要导入一个通知名单,也是一个excel文件。为了复用代码,利用工厂方法加模版方法重构原来的代码,隔离变与不变,把变化的逻辑由子类继承去实现。类图CommonI...原创 2018-09-03 19:21:58 · 546 阅读 · 0 评论 -
java框架篇spring cloud之spring config server
1.前言什么是spring cloud?Spring cloud为用户提供了一整套快速开发分布式应用的解决方案,包括配置管理,服务发现,断路开关,智能路由,微代理,控制总线,一次token,全局锁,leader选举,分布式session,集群状态等功能。spring boot作为spring cloud等基础应用,可以快速搭建一个微服务。2.功能点Distributed/versi...原创 2018-09-10 14:29:48 · 1920 阅读 · 0 评论 -
Java算法篇在一个int数组中寻找最大的k个数字
背景在一个int数组中,寻找最大的k个数字,时间复杂度是O(n)。数组不大情况下思路:类似于基本排序中的基数排序,利用空间换时间,待排序数组的值是新数组的索引,新数组的值就是出现的次数,考虑重复的情况 新数组如果值为空,则表示这个索引值在原来数组根本不存在,如果大于1则该数字在原来数组出现多次第一步:找到原数组最大值,利用比较计算第二步:新建数组,size是第一步中...原创 2018-09-07 12:08:25 · 2013 阅读 · 0 评论 -
Java架构篇rest api 幂等性
为什么需要幂等性在设计rest api的时候,调用方由于逻辑问题或者网络问题,超时导致的retry都可能对rest接口进行多次调用,所以rest api设计的时候注意幂等性。哪些是幂等操作安全:不改变资源的representation幂等:多次调用不会产生副作用如何实现如果是put操作,本身就是幂等的。如果是post操作,不具有幂等性,可以根据唯一标示判断是否进行过p...原创 2018-09-14 11:08:03 · 1563 阅读 · 0 评论 -
java框架篇spring cloud之服务发现consul
1 前言 上篇文章提到利用eureka做服务发现,spring config server做集中配置,但是由于eureka 2.0已经停止开源开发,建议开发者切换到consul或者zookeeper上。除了上篇文件提到的架构:我们可以考虑利用consul实现集中配置和服务发现。2 服务发现spring cloud提供了多个服务发现框架集成,euerka已经停止开发了,目...原创 2018-09-11 10:55:58 · 2997 阅读 · 0 评论 -
java算法篇给定一个数组找出第一个重复(不重复)的元素
第一个重复算法分析(倒序放入map,最后一个重复的元素)第一个想到的是用hashmap存储元素,计算出现次数,然后遍历hashmap,输入值为1的元素。但是后来发现不对,输出的是所有出现一次的元素,因为map是无序的,不一定是第一个。怎么办?在遍历数组,存入hashmap的时候,判断如果不存在,就设置index=i,记录索引。但是此时map没有内容,根本无法判断是否重复?怎么办?倒序遍...原创 2018-09-14 15:30:37 · 7974 阅读 · 1 评论 -
Java框架篇spring sleuth分布式日志查询
前言随着微服务数量不断增长,需要跟踪一个请求从一个微服务到下一个微服务的传播过程, Spring Cloud Sleuth 正是解决这个问题,它在日志中引入唯一ID,以保证微服务调用之间的一致性,这样你就能跟踪某个请求是如何从一个微服务传递到下一个。 如果你有使用AOP拦截Servlet的经验,做一个基于AOP的简单服务统计和跟踪很容易。但要像Zipkin那样能够跟踪服务调用链就比较困难...原创 2018-09-19 19:58:00 · 916 阅读 · 1 评论 -
java算法篇KMP算法及应用
算法背景给定两个字符串,判断是否一个字符串包含另外一个字符串,如果包含,返回起始位置。比如:String str1=“abceacmk32acmzq”String str2=“acm”可以看出,str1包含两处str2,下面红色地方:abceacmk32acmzq返回4和10.常见思路1遍历str1,先匹配第一个,如果不相同,跳过,继续寻找,如果相同,截取和str...原创 2018-09-21 16:42:58 · 1390 阅读 · 0 评论 -
LeetCode刷题Easy篇在整型数组寻找两个数的和等于指定数
题目:Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the ...原创 2018-10-12 11:39:46 · 374 阅读 · 0 评论 -
LeetCode刷题Medium篇int型数组,求满足和等于k的连续子数组个数
题目Given an array of integers and an integer k, you need to find the total number of continuous subarrays whose sum equals to k.Example 1:Input:nums = [1,1,1], k = 2Output: 2Note:The lengt...原创 2018-10-16 17:01:30 · 1535 阅读 · 0 评论 -
LeetCode刷题Medium篇寻找字符串中最长的不重复子串(滑动窗口解法)
题目Given a string, find the length of the longest substring without repeating characters.Example 1:Input: "abcabcbb"Output: 3 Explanation: The answer is "abc", with the length of 3. Example...原创 2018-10-19 14:55:18 · 1169 阅读 · 0 评论 -
LeetCode刷题Medium篇int型数组,求k个连续数的最大和(滑动窗口解法)
题目Given an array of integers of size ‘n’.Our aim is to calculate the maximum sum of ‘k’ consecutive elements in the array.Input : arr[] = {100, 200, 300, 400} k = 2Output : 700Input ...原创 2018-10-25 17:45:11 · 846 阅读 · 0 评论 -
LeetCode刷题Medium篇两个倒序链表数字相加
题目You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and retu...原创 2018-10-26 10:30:01 · 411 阅读 · 0 评论 -
java面试总结宝典上部
目录1.@postconstruct @init-method @afterPropertiesSet 顺序2. JVM常用命令3.Xss攻击4.CSRF5.CORS6. Mysql索引7. Mysql事务隔离级别8. Mysql调优注意事项8.1 慢查询9 Mysql 锁研究9.1 行锁:记录锁(Record Locks)9.2 间隙锁 [ Ga...原创 2019-05-29 15:57:03 · 1385 阅读 · 0 评论 -
Java设计模式篇单例模式
1 饿汉式-不要求延迟加载的情况下使用饿汉方式一:Enumpublic enum Singleton { INSTANCE; public void whateverMethod() { } }饿汉方式二:静态类变量如果不需要延迟初始化,饿汉式可以接受,那么可以采用下面的简单方法实现:线程安全 实现简单 类加载时便初始化实例 in...原创 2018-09-05 17:15:36 · 467 阅读 · 0 评论 -
Java设计模式篇适配器模式
目的适配器模式为了把不符合的接口实现,转换为调用方期待的接口。类图实战案例比如我的项目中,原来的一部分业务数据查询的是数据库,现在需要改为Hsqldb查询。原来的代码结构如下:代码原来的数据操作接口DbDao:package com.puhui.goosecard.web;/** * 2 * @Author: kerry * 3 * @Date: 2...原创 2018-09-05 11:51:22 · 758 阅读 · 0 评论 -
Java设计模式篇工厂方法结合模版方法
前言学习设计模式的同学第一个接触的大多数都是工厂模式,工厂模式又包括简单工厂,工厂方法,抽象工厂等模式。很多文章说的都不是很明白,而且抽象工厂也经常用不到。大多数情况下我们用到的是本文说的这种结合模式,跟工厂方法,抽象工厂不一样。具体看本文的例子。目的父类定义行为,具体的逻辑依靠子类实现,便于扩展 模版方法约定好共有的一段逻辑块,逻辑中的各个方法或者依靠子类具体实现,如果是通用...原创 2018-08-24 11:54:06 · 746 阅读 · 0 评论 -
英文自我介绍
My name is Han Rui kai! But you can call me Kerry,that is my english name. I am from Xing Tai, a small city in the south of HeBei Province.It is a greate honor to have this opportunity for an interv原创 2012-05-29 23:57:29 · 628 阅读 · 0 评论 -
英文问题
1、工作意愿Watson: Why do you consider yourself qualified for the job? Tom: I have the educational background and relevant experience required for the position. Besides, I am a very good team...原创 2012-06-04 21:41:22 · 577 阅读 · 0 评论 -
存储过程优缺点
存储过程的优点: 1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。 2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。 3.存储过程可以重复使用,可减少数据库开发转载 2012-06-05 17:00:40 · 616 阅读 · 0 评论 -
CMMF Project Description
cmmf: 扩展:object-oriented reflect ploymorphic Java,formerly known as oak,is an object-oriented programming language developed by Sun it shares many similarites with C,C++ and objecti原创 2012-06-11 16:36:45 · 651 阅读 · 0 评论 -
CMMF Project Description
cmmf: 扩展:object-oriented reflect ploymorphic Java,formerly known as oak,is an object-oriented programming language developed by Sun it shares many similarites with C,C++ and objecti原创 2012-06-11 16:43:07 · 739 阅读 · 0 评论 -
知识点补充
1. 项目架构总结,分析2. spring生命周期, interceptor和filter的区别3. Jvm 生命周期,原理4. Nio5.Sentinal原创 2016-08-05 10:32:58 · 950 阅读 · 0 评论 -
Integrate cache的易错点
public class Test{ public static void main(String[] args) { Integer a=100; Integer b=100; Integer c=new Integer(100); Integer d=new Integer(100);原创 2017-11-08 16:40:21 · 281 阅读 · 0 评论 -
Java数据库篇mysql数据库索引B+Tree
1 Mysql 索引结构B+TreeB+Tree数据结构适合读取外存数据,不适合内存数据 B+Tree分为叶子节点和非叶子节点,非叶子节点仅仅包含key以及左右指针,通过与key比较判断查找方向,与B-tree不同,B-tree除了key还保存有其它信息,减少存储节点空间,降低树的高度,减少IO读取次数 叶子节点包括全部数据,并且升序排序,便于进行范围查找 平衡树,具有相同的深度 为什...原创 2018-08-01 17:02:06 · 845 阅读 · 0 评论 -
Java分布式篇一篇文章搞明白分布式锁
前言以前一直用redis作为分布式锁的实现,也知道zookeeper可以实现,但是对于分布式锁没有系统梳理,忽略了数据库作为分布式锁的重要应用,本文主要梳理分布式锁实现的主要思路:按照加锁位置,分为在应用层,缓存层,数据库层加锁按照加锁的类型,分为乐观锁和悲观锁悲观锁顾名思义,悲观锁在修改整个过程中保持对修改数据的加锁,一直到修改结束,防止其它线程或者进程对数据修改。悲观锁...原创 2018-08-06 19:33:30 · 1990 阅读 · 0 评论 -
Java数据库篇之mysql VS postgresql
目录1.综述2.索引方面2.1 Postgresql: 单列,多列,唯一,表达式索引,部分索引2.2 Mysql四大索引:主键,唯一,普通,全文2.3 mysql索引注意事项2.4 何时使用聚集索引或非聚集索引3面向对象方面3.1 自定义类型create domain,创建具有一定约束的数据类型3.2 自定义类型create type,创建复合类型,作为函数的...原创 2018-08-02 17:52:14 · 2974 阅读 · 0 评论 -
Java算法篇寻找字符串中最长的重复元素子串
package com.puhui.goosecard.web.utils; // Java program to find the maximum consecutive// repeating character in given stringclass GFG { // function to find out the maximum repeating // cha...原创 2018-08-08 11:59:18 · 5318 阅读 · 0 评论 -
Java项目经验之交易密码安全机制
如果保护交易密码安全是个很重要的问题,本文梳理一下自己实际开发用的方式,欢迎大家一起讨论!常见的安全机制1 摘要式验证设置密码主要验证流程:1: 密码MD5生成摘要2 入库交易密码验证主要流程:1 把用户输入的密码生成MD5摘要2 MD5串与数据库中设置的比较,是否相等除了MD5,也可以利用SHA1,SHA256,SHA512等hash算法123456→S...原创 2018-08-15 19:55:02 · 1432 阅读 · 0 评论 -
Java设计模式篇spring中的IoC和DI
1. 什么是IoC和DIIoC:控制反转是个设计原则,自定义的程序可以从通用框架接受控制流DI:依赖注入,是一个技术实现,一个对象可以提供另一个对象的依赖。比如利用组合关系引入另外的对象,其实就是依赖注入Spring框架拥有一个IoC容器,负责对象创建,装配,配置,管理整个生命周期,直到完全销毁。IoC容器通过依赖注入,也就是DI管理beans。2 IoC之自定义程序接受Be...原创 2018-08-22 19:47:31 · 673 阅读 · 0 评论 -
Java设计模式篇代理模式
什么是代理代理对象一般用来对既有对象增加或者修改一些功能使用,是源对象的副本。一般拥有源对象的所有方法,java中一般都是继承原来的对象。可以不修改原来对象前提下,实现我们期待的行为。在实际应用中,根据单一职责原则,代理对象一般只是负责代理,不负责其它处理逻辑,处理逻辑一般有handler完成如何创建代理静态代理:利用组合关系实现静态代理,组合关系注入源对象,然后可以在外层对象进行...原创 2018-08-27 12:16:30 · 2616 阅读 · 2 评论 -
Java设计模式篇spring中抽象工厂模式
Spring部分源码先给出spring中常用的一段代码,典型的工厂模式:import org.springframework.context.ApplicationContext;import org.springframework.context.support.FileSystemXmlApplicationContext;public class App { public ...原创 2018-08-23 16:09:44 · 6052 阅读 · 0 评论 -
java面试宝典下部
1. ArrayBlockingQueue原理基于数组实现的、有界的(构造方法传入)阻塞队列 内部存储是数组,保证FIFO,阻塞利用notEmpty = lock.newCondition()实现 ReentrantLock 利用ReentrantLock加锁,保证线程安全。ReentrantLock的lock方法调用的是Sync.lock方法。Sync继承自A...原创 2019-08-02 15:27:09 · 2187 阅读 · 0 评论