- 博客(133)
- 收藏
- 关注
原创 算法-刷题
剑指Offer快速过了一遍字节-飞书高频题-前15各公司的高频面试算法题,可在 CodeTop查询146. LRU 缓存机制我的实现:class LRUCache { ArrayDeque<Integer> queue; Map<Integer, Integer> cacheMap; private int capacity; private int size; public LRUCache(int capacity) {
2021-08-29 13:08:16
319
原创 得物一面-20210825
1、自我介绍此次没有特意准备,需要归纳总结:个人信息介绍、学习经历介绍、工作经历介绍、项目介绍2、说一下做的项目项目背景、项目架构、项目难点、如何克服;在介绍项目的过程中会问相关细节及技术点;3、分布式一致性问题4、Redis此问题是由分布式锁引出的:部署架构使用场景5、分布式锁分布式锁实现方式存在的问题及解决优化6、Java 并发相关自旋锁RetreenLockSynchronized7、数据库索引覆盖索引覆盖索引,有下面三种理解:一: 就是select查询的数
2021-08-25 23:05:29
778
原创 java 自定义注解
背景在平时开发过程中经常看到各种各样的注解,例如@Component、@Resource、@Override 等等,注解极大方便了我们开发,今天就了解下注解,看下我们如何自定义注解。自定义注解前 我们必须要了解元注解和相关定义注解的语法。元注解元注解的作用是负责注解其他注解,Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解:@Target@Retention@Documented@Inherit
2020-06-21 10:02:14
374
原创 JAVA中的DO、DTO、BO、AO、VO、POJO
定义DO( Data Object):与数据库表结构一一对应,通过DAO层向上传输数据源对象。DTO( Data Transfer Object):数据传输对象,Service或Manager向外传输的对象。BO( Business Object):业务对象。 由Service层输出的封装业务逻辑的对象。AO( Application Object):应用对象。 在Web层与Service层之间抽象的复用对象模型,极为贴近展示层,复用度不高。VO( View Object):显示层对象,通常是We
2020-06-20 17:31:30
1541
原创 JAVA对象转换利器—MapStruct
一、背景我们在使用JAVA开发项目的过程中经常遇到很多对象转换的场景,例如 DO、DTO、BO、AO、VO等对象间的转换,之前自己都是手写,最近发现了一个好用的工具—MapStruct,下面推荐给大家。二、MapStruct1. git地址:https://github.com/mapstruct/mapstruct?spm=ata.13261165.0.0.49823fc0pcr5Q92.示例:下面有两个类,需要进行转换:public class Car { private St
2020-06-20 17:26:32
3440
原创 微软OWA服务
微软 OWA 官方指南:https://technet.microsoft.com/zh-cn/library/jj219455百度文库中的Office Web apps Server安装详细步骤:http://wenku.baidu.com/link?url=OrVEuCuDPE1tWN4lKqGkm4WeP3oFBCN0-fmAIZOWLbAv9Uh1MQ97AU5zq_1C-Gzr5zk4aHue-Q78M-u1Rzv8Kdsll3B3CpekRVMMFkKYe9_&qq-pf-to=p
2020-05-31 17:53:26
1162
原创 为什么JAVA中long后面要加L?float要加F ?
问题背景今天在写代码时,将之前的一个变量进行了修改,运行单测的时候发现单测跑不过了,有点疑惑:原代码简化下:Long fileSize = 3 * 1024 * 1024 * 1024L;
2020-05-31 17:48:59
1142
原创 MySQL数据库相关知识点汇总
MySQL索引背后的数据结构及算法原理http://blog.codinglabs.org/articles/theory-of-mysql-index.html
2020-04-26 08:37:51
148
原创 LeetCode—二叉树最短路径
题目:leetcode-Minimum Depth of Binary TreeGiven a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf n...
2020-04-19 16:36:33
2828
原创 面试必问排序算法汇总—JAVA实现
排序算法排序算法是程序员面试时被问的频率较高的算法,同时也是很多复杂算法题的常用工具算法,所以熟练掌握常用的几种排序算法是十分必要的,鉴于网络上已经有大神做了很好的总结,此处我借花献佛,在此做个汇总。郭耀华’s Blog作者对排序算法做了非常深刻细致的总结,为方便大家更直观的理解,每个算法还配有动态图,非常棒,推荐:https://www.cnblogs.com/guoyaohua/p/8...
2020-04-15 09:15:23
183
原创 我在钉钉等你来
钉钉(DingTalk)-JAVA服务端技术专家-文档中心【极速招聘】工作地点:北京、杭州岗位描述:1.负责钉钉文档中心业务落地及持续迭代更新2.负责钉钉文档后台的设计和研发工作,交付高质量的后台服务岗位要求:1.计算机或相关专业,5年以上计算机相关工作经验,精通Java, SpringBoot2.有大型办公软件开发经验者优先3.有协同办公软件开发经验者优先4.有丰富的Linux...
2019-09-25 23:39:17
190
原创 数据库事务详解
为什么需要事务?转账是生活中常见的操作,比如从A账户转账100元到B账号。站在用户角度而言,这是一个逻辑上的单一操作,然而在数据库系统中,至少会分成两个步骤来完成:1.更新A账户的金额,减少100元2.更新B账户的金额,增加100元。在这个过程中可能会出现以下问题:1.转账操作的第一步执行成功,A账户上的钱减少了100元,但是第二步执行失败或者未执行便发生系统崩溃,导致B账户并没有相应增...
2019-04-14 00:40:06
774
原创 Java技术栈.基础篇—浅拷贝与深拷贝
浅拷贝与深拷贝是什么浅拷贝和深拷贝本质都是对一个已有引用对象进行拷贝操作,但二者存在一定的区别。在 Java 中,数据类型分为 基本数据类型(元类型)和 引用数据类型。而一般使用 『 = 』号做赋值操作的时候,对于基本数据类型,实际上是拷贝的它的值,但是对于引用数据类型而言,其实将原对象的引用传递过去,它们实际是指向同一个对象。而浅拷贝和深拷贝的区别就在于:在拷贝某个对象的时候,如果只对基本...
2019-01-13 21:02:35
398
原创 Linux常用命令—grep
简介grep命令(Global Regular Expression Print)是 Linux系统中一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来 。grep 是linux中最为常用的三大文本(awk,sed,grep)处理工具之一,所以有必要掌握其用法。grep家族总共有三个成员构成:grep、egrep、fgrep。使用格式grep [选项] ...
2018-12-15 23:15:33
4335
转载 CSDN 编辑器使用教程
CSDN 编辑器使用教程改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;全新的 KaT...
2018-12-15 21:10:49
720
1
转载 Java技术栈.基础篇—详说集合之二
上一篇文章Java技术栈.基础篇—详说集合之二介绍了List接口和其实现类,今天对Set接口和其实现类做下介绍。Set简介Set:用于存储无序(存入和取出的顺序不一定相同)元素,值不能重复。对象的相等性 引用到堆上同一个对象的两个引用是相等的。如果对两个引用调用hashCode方法,会得到相同的结果,如果对象所属的类没有覆盖Object的hashCode方法的话,hashC...
2018-06-10 19:38:03
253
转载 Java技术栈.基础篇—详说集合之一
一、集合与数组数组:(可以存储基本数据类型)是用来存取对象的一种容器,数组的长度固定,不适合在对象数量未知的情况下使用。 集合:(只能存储对象,对象类型可以不一样)集合与数组最大不同:长度可变,可在对象数量未知的情况下使用,使用比较广泛。集合总览Collection:接口是集合类的根接口,Java中没有提供这个接口的直接实现类。但是却被继承产生了两个接口:Set和List。S...
2018-06-01 08:47:35
796
转载 logback的使用详解
logback简介Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch。它当前分为下面几个模块: logback-core:其它两个模块的基础模块 logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging ...
2018-05-16 18:38:08
903
1
转载 Java多线程那点事
Java多线程入门本文主要介绍java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。进程和线程的区别:进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1–n个线程。(进程是资源分配的最小单位,操作系统中运行的一个个软件就是一个个进程) 线程:同一进程中的线程共享代码和数据空间,每个线程有独立的运...
2018-05-13 23:04:01
248
原创 AWK入门学习
AWK入门学习AWK简介用AWK,起码要知道它是什么。AWK是贝尔实验室于1977年研发处理文本文件的语言,是一个强大的文本处理、分析工具。我们在日常开发中排查线上问题、分析日志时经常需要用到AWK。其名字是取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Name的首字符。AWK使用调用方式1.命令行...
2018-05-06 22:30:48
156
原创 剑指Offer-62
题目:请实现两个函数,分别用来序列化和反序列化二叉树。实现public class Solution62 { public static void serialize(BinaryTreeNode root, List<Integer> result) { Queue<BinaryTreeNode> queue = new Ar...
2018-05-06 21:32:30
272
原创 京东二面—Java 后台开发
1、3+5*2+(1+4) 如何求值?面试官其实是考 四则运算表达式求值,是栈的一种应用方式。 栈的应用—四则运算表达式求值2、抽象类和接口的区别?若抽象类支持多继承,接口还有存在的意义么?抽象类与接口3、面向对象的思想是什么?知乎上一个同样问题的答案4、你对Java 语言的看法?5、单CPU情况下,单线程与多线程的效率对比?6、Spring 默认的 bean 是单例还是多例?7、线程的调度算法有
2017-09-20 18:10:43
1969
原创 Java—求一个数组的所有子数组
最近在忙秋招,投了各种公司,参加了各种线上笔试,在线上笔试的过程中,经常遇到一些题目,想要求得最终结果的话需要获取某一数组的所有子集(暴力破解)。import java.util.ArrayList;import java.util.List;/** * Created by byuwa on 2017/9/15. */public class SubArrays { public
2017-09-15 14:54:23
8377
1
原创 最常用的Unix/Linux命令
1. tar压缩文件夹tar zcvf archive_name.tar dirname/解压文件夹tar xvf archive_name.targrep在文件中查找字符串 不区分大小写grep -i "the" demo_file输出成功匹配的行,以及该行之后的三行grep -A 3 -i "example" demo_text...
2017-09-11 09:08:05
2735
原创 常见面试题整理—Linux系统常用操作
1. crontab的使用crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。 -u user_a 是指设定指定 user_a 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设 定自己的时程表。 基本格式 : * * * * * command 分 时
2017-09-08 14:28:57
11060
原创 JVM的Server模式和Client模式
在看JVM GC资料的时候,看到JVM分Client模式和Server模式,有点迷惑,所以特此查下资料,搞明白。 JVM有Client和Server两个版本,分别针对桌面应用程序和服务端应用做了相应的优化,Client版本加载速度较快,Server版本加载速度较慢但运行起来较快。JVM工作在Server模式可以大大提高性能,但应用的启动会比client模式慢大概10%。 服务器的CPU、内存和硬
2017-09-07 09:47:40
689
原创 Java常见面试题—实现多线程的三种方式
多线程优势: 进程之间不能共享内存,但线程之间共享内存非常容易; 系统创建线程所分配的资源相对创建进程而言,代价非常小。 第一种实现方法—继承Thread类继承Thread类,重写run()方法,加入线程所要执行的代即可。 实例:public class ThreadTest { public static void main(String[] args) {
2017-09-01 16:33:47
1520
原创 Java常见面试题—Future与FutureTask
FutureFuture就是对于具体的Runnable或者Callable任务的执行结果进行取消、查询是否完成、获取结果等操作。必要时可以通过get方法获取执行结果,该方法会阻塞直到任务返回结果。 Future类位于java.util.concurrent包下,它是一个接口:/** * @see FutureTask * @see Executor * @since 1.5 * @a
2017-09-01 16:31:13
6982
原创 Java常见面试题—Callable与Runnable接口
RunnableRunnable应该是比较熟悉的接口,它只有一个run()函数,用于将耗时操作写在其中,该函数没有返回值,不能将结果返回给客户程序。然后使用某个线程去执行runnable即可实现多线程,Thread类在调用start()函数后就是执行的是Runnable的run()函数。Runnable的声明如下 :public interface Runnable { /**
2017-09-01 16:25:04
1164
原创 Java中String、StringBuffer、StringBuilder的区别
概览在Java中处理字符串常用的类有三种:String、StringBuffer、StringBuilder。String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 异同点: 1) 都是 final 类, 都不允许被继承; 2) String 长度是不可变的, StringBuffer、StringBuilder 长
2017-09-01 15:29:04
447
转载 Java中的逃逸分析
大家一般认为new出来的对象都是被分配在堆上,但这并不是完全正确,通过对Java对象分配过程分析,我们发现对象除了可以被分配在堆上,还可以在栈或TLAB中分配空间。而栈上分配对象的技术基础是逃逸分析和标量替换,本文主要介绍下逃逸分析。逃逸分析的定义逃逸分析,是一种可以有效减少Java 程序中同步负载和内存堆分配压力的跨函数全局数据流分析算法。 通过逃逸分析,Java Hotspot编译器能够分析出
2017-09-01 14:40:56
2916
原创 剑指Offer-63
题目:给定一棵二叉搜索树,请找出其中的第k大的结点。实现public class Solution63 { public static BinaryTreeNode kthNode(BinaryTreeNode root,int k){ if(root==null || k<1){ return null; } List
2017-09-01 10:08:16
327
原创 剑指Offer-62
题目:请实现两个函数,分别用来序列化和反序列化二叉树。实现public class Solution62 { public static void serialize(BinaryTreeNode root, List<Integer> result) { Queue<BinaryTreeNode> queue = new ArrayDeque<BinaryTreeNode>(
2017-09-01 09:33:54
297
原创 剑指Offer-61
题目实现public class Solution61 { public static void printTree(BinaryTreeNode root) { if (root == null) { return; } List<BinaryTreeNode> current = new LinkedList<>()
2017-08-31 16:37:47
310
2
原创 剑指Offer-60
题目从上到下按层打印二叉树,同一层的结点按从左到右的顺序打印,每一层打印一行。实现public class Solution60 { public static void printTree(BinaryTreeNode root) { if (root == null) { return; } Queue<BinaryT
2017-08-31 16:24:02
284
原创 剑指Offer-59
题目:请实现一个函数来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。实现public class Solution59 { public static boolean isSymmetrical2(BinaryTreeNode root) { return isSymmetrical2(root, root); } private st
2017-08-31 15:37:28
269
原创 剑指Offer-58
题目:给定一棵二叉树和其中的一个结点,如何找出中序遍历顺序的下一个结点?树中的结点除了有两个分别指向左右子结点的指针以外,还有一个指向父节点的指针。实现public class Solution58 { public static BinaryTreeNode2 getNext(BinaryTreeNode2 node) { if (node == null) {
2017-08-31 15:13:05
332
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人