自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 贝壳面试

一面:自我介绍说一下项目,自己负责的部分有用过JUC下的那些工具类(仔细讲了CountDownLatch)(顺便讲了CyclicBarrier ,Semaphore ,Exchanger各自的功能,应用场景)线程池参数讲一下HashMap数据结构 并发下的 问题 怎么解决(讲了原理 死锁 Arrays下的安全的HashMap )ConcurrentHashMap(JDK 1.7...

2018-09-12 10:22:12 2805 1

原创 存储引擎

MySql两种存储引擎的区别MyISAM:不支持事务,但是每次查询都是原子的;支持表级锁,即每次操作是对整个表加锁;存储表的总行数;一个MYISAM表有三个文件:索引文件、表结构文件、数据文件;采用非聚集索引,索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致,但是辅索引不用保证唯一性。支持可压缩 应用场景:访问速度快,对事物完整性无要求或以Seclect/In...

2018-08-28 22:50:24 283

原创 索引的设计和使用

 InnoDb和MyISAM存储引擎的表默认创建的都是BTREE索引,mysql不支持函数索引,但是支持前缀索引(对索引字段的前N个字符创建索引),只有MyISAM支持全文索引。 1.创建索引:CREATE index author_name on t_author(tname(10)); 2.删除索引:drop index author_name ON t_autho...

2018-08-28 22:45:06 401

原创 网易杭研两面技术面+hr面

一面:自我介绍以下都要手写(写不了就说思想)集合框架内容及常用实现类(Set,List他们的常用实现类),map,重点讲了HashMap线程池Synchronized和Lock区别了解哪些设计模式?写一下生产者消费者模式手写SQL(给一个表 查出给定分数段学生人数 )5G文件,2G内存给他排序怎么办?了解哪些排序?写一下快排和归并给10万文档 找出 ...

2018-08-24 15:18:27 2253

原创 线程池

我们可以通过ThreadPoolExecutor来创建一个线程池。new ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime,milliseconds,runnableTaskQueue, handler);  通过下图理解参数 工作线程实现核心方法 public void run() {try {Runna...

2018-08-12 01:09:28 386

原创 Java剑指offer面试题3, 二维数组的查找

/** * @author ldy * @date 2018/8/7 10:17 *//** * 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。 * 请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 * <p/> * 规律:首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束: ...

2018-08-07 10:50:50 162

转载 Cookie和Session详解

           会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。1.1  Cookie机制        理论上,一个用户的所有请求操作都应该属于同一个会话,而另一个用户的所有请求操作则应该属于另一个会话,二者不...

2018-08-04 17:10:43 189

原创 http和https的区别与联系

一、HTTP和HTTPS的基本概念HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL二、HTT...

2018-08-04 16:31:20 521

原创 Jmeter4.0安装教程

先安装好JDK下载地址:http://jmeter.apache.org/download_jmeter.cgi安放目录:标题 配置环境: 桌面上选择“我的电脑”(右键),高级, 环境变量, 在“系统变量”--->“新建”, 在变量名中输入:JMETER_HOME,变量值中输入:D:\software\apache-jmeter-4.0,再修改CLASSPA...

2018-08-04 02:06:56 468

原创 大疆后台开发一面面经

一上来就项目,项目讲了差不多20分钟。秒杀相关,事务,安全,并发,问题,优化等其他还行,最后面试官想知道压测的相关问题以及怎么解决。。。数据结构:红黑树,由红黑树讲到容器中线程安全的类有哪些,(vector,hashtable,juc下的ConcurreatHashMap,ConcurrentLinkQueue)大体满意设计模式:代理模式(从静态代理讲到动态代理),大体满意http和h...

2018-08-03 23:15:50 2038

原创 静态代理和动态代理

主要参考了一个学长的分享,在此表示感谢 动态代理是一种强大的功能,它可以在运行时动态的创建一个类,实现一个接口,可以在不修改原有类的基础上动态为通过该类获取的对象添加方法、修改行为,应用广泛。动态代理是面向切面编程的基础,切面的例子有日志,安全,声明式事务,缓存等,它们在程序中得到很多地方都会用到,代码都差不多,但与某个具体的业务逻辑的也不太密切,如果在每个用到的地方都写,代码会很冗余...

2018-07-30 16:44:44 144

转载 对线程安全的集合类(例如Vector)的操作不一定是线程安全的

 对线程安全的集合类(例如Vector)的操作不一定是线程安全的,甚至单线程违反了规则,同样也有可能会抛出改异常。同步容器中的所有自带方法都是线程安全的,因为方法都使用synchronized关键字标注。但是,对这些集合类的复合操作无法保证其线程安全性。需要客户端通过主动加锁来保证如果你看过JDK的源码,那么你会发现,像Vector这样的同步容器的所有共有方法全都是synchroniz...

2018-07-27 00:45:24 787

原创 int和Integer有什么区别?

无意中又看到了这个问题,今天总结一下    一、  int就是我们常说的java八大(primitive types : blooean、 byte 、 short 、 char 、int 、 float 、 double 、 long)原始数据类型之一。java虽然号称一切皆对象但是基本数据类型是例外。【八种基本数据类型的包装类】byte ——Byteshort ——Short...

2018-07-26 20:37:38 10393 1

原创 Java并发编程基础

Java并发编程基础4.1 线程简介4.1.1 什么是线程?现代操作系统调度的最小单元是线程,也叫轻量级进程(LightWeight Process),在一个进程里可以创建多个线程,这些线程都拥有各自的计数器、堆栈和局部变量等属性,并且能够访问共享的内存变量。处理器在这些线程上高速切换,让使用者感觉到这些线程在同时执行。4.1.2 为什么要使用多线程?(1)更多的处...

2018-07-25 09:57:52 127

原创 Synchonized原理

总述:先来看下利用synchronized实现同步的基础:Java中的每一个对象都可以作为锁。具体表现为以下3种形式。·对于普通同步方法,锁是当前实例对象。 ·对于静态同步方法,锁是当前类的Class对象。 ·对于同步方法块,锁是Synchonized括号里配置的对象一、从JVM规范中可以看到Synchonized在JVM里的实现原理,JVM基于进入和退出Monitor对象来实现方法...

2018-07-23 19:51:37 682

原创 单例与双重检查锁

双重检查锁定与延迟初始化在Java多线程程序中,有时候需要采用延迟初始化来降低初始化类和创建对象的开销。双重检查锁定是常见的延迟初始化技术,但它是一个错误的用法。本文将分析双重检查锁定的错误根源,以及两种线程安全的延迟初始化方案。下面是非线程安全的延迟初始化对象的示例代码public class UnsafeLazyInitialization {private stati...

2018-07-23 19:30:29 231

原创 volatile

 一、变量自身具有下列特性。可见性。对一个volatile变量的读,总是能看到(任意线程)对这个volatile变量最后的写入。 原子性:对任意单个volatile变量的读/写具有原子性,但类似于volatile++这种复合操作不具有原子性。 volatile变量的写-读可以实现线程之间的通信。 从内存语义的角度来说,volatile的写-读与锁的释放-获取有相同的内存效果:vola...

2018-07-23 13:00:08 186

转载 从LongAdder看更高效的无锁实现

原文链接:https://blog.csdn.net/baidu_33116785/article/details/52276307LongAdder确实用了很多心思减少并发量,并且,每一步都是在”没有更好的办法“的时候才会选择更大开销的操作,从而尽可能的用最最简单的办法去完成操作。追求简单,但是绝对不粗暴。接触到AtomicLong的原因是在看guava的LoadingCache相关代码...

2018-07-22 07:47:17 212

原创 CAS的ABA问题及解决方法

一、什么是ABA问题?考虑如下操作: 并发1(上):获取出数据的初始值是A,后续计划实施CAS乐观锁,期望数据仍是A的时候,修改才能成功 并发2:将数据修改成B 并发3:将数据修改回A 并发1(下):CAS乐观锁,检测发现初始值还是A,进行数据修改  上述并发环境下,并发1在修改数据时,虽然还是A,但已经不是初始条件的A了,中间发生了A变B,B又变A...

2018-07-21 22:30:06 8797 1

转载 设计模式-代理模式

静态代理模式:----代理模式的作⽤是:为其他对象提供⼀种代理 以控制对这个对象的访问。代理模式⼀般涉及到的⻆⾊有:--抽象⻆⾊:声明真实对象和代理对象的共同接⼝。(租房⼦)--代理⻆⾊:代理对象⻆⾊内部含有对真实对象的 引⽤。相当于对真实对象进⾏封装。(中介)---真实⻆⾊:代理⻆⾊所代表的真实对象,是我们 最终要引⽤的对象。(房东)————————————————————————实例:pa...

2018-07-21 00:26:06 142

转载 深入理解ThreadLocal

来自一个学长大佬的分享,在此谢谢学长。JavaSE Thread JUC前言以前虽然也接触过ThreadLocal,但是每当细问它的实现原理时,总是有一些地方说不清,归根到底还是对ThreadLocal的理解不够深入,只是停留在表面,今天就来总结一下ThreadLocal。接下来的源码分析会用到,所以先放在前面温故一下。简述java.lang.ThreadLocal可用来存放...

2018-07-19 23:04:25 154

原创 线程池(JUC)

什么是池?例子----->买火车票、医院挂号数据库连接池常量池线程池基本概念线程池,就是一个线程的池子,里面有若干线程,它们的目的就是执行提交给线程池的任务,执行完一个任务后不会退出,而是继续等待或执行新任务。--->JDK1.5优点它可以重用线程,避免线程创建的开销在任务过多时,通过排队避免创建过多线程,减少系统资源消耗和竞争,确保任务有序完成ThreadPo...

2018-07-19 12:39:55 200

原创 JUC之Future/Task框架

 引入了一个"执行服务"的概念,它将"任务的提交"和"任务的执行"相分离,"执行服务"封装了任务执行的细节,对于任务提交者而言,它可以关注于任务本身,如提交任务、获取结果、取消任务,而不需要关注任务执行的细节,如线程创建、任务调度、线程关闭等。基本接口任务执行服务涉及的基本接口:Runnable和Callable:表示要执行的异步任务Executor和ExecutorServic...

2018-07-18 22:06:42 499

原创 Redis持久化

Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务器。 Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也...

2018-07-18 12:05:02 90

原创 Redis底层数据结构

 1.简单动态字符串(simple dynamic string, SDS)组成:leng(长度)+free(空闲长度)+buf(二进制数组用于存储内容)优点:查询字符串长度更快因为有free,可以杜绝溢出减少内存重分配(更改内容先检查len,不够时补free,且len小于1m时,新增free=len,len大于1m时,free=len)1.简单动态字符串  2.链...

2018-07-17 22:05:58 139

转载 Linux常用命令

1、cd命令这是一个非常基本,也是大家经常需要使用的命令,它用于切换当前目录,它的参数是要切换到的目录的路径,可以是绝对路径,也可以是相对路径。如:? 1 2 3 cd /root/Docements # 切换到目录/root/Docements cd ./path     # 切换到当前目录下的path目录中,“.”表示当前目录 ...

2018-07-17 12:44:22 95

原创 Redis初识1

Redis是一个开源的,基于内存的结构化数据存储媒介,可以作为数据库、缓存服务或消息服务使用。 Redis支持多种数据结构,包括字符串、哈希表、链表、集合、有序集合、位图、Hyperloglogs等。 Redis具备LRU淘汰、事务实现、以及不同级别的硬盘持久化等能力,并且支持副本集和通过Redis Sentinel实现的高可用方案,同时还支持通过Redis Cluster实现的数...

2018-07-17 12:37:07 155

原创 Redis初识2(数据淘汰机制)

Redis提供了5种数据淘汰策略:   volatile-lru:使用LRU算法进行数据淘汰(淘汰上次使用时间最早的,且使用次数最少的key),只淘汰设定了有效期的key allkeys-lru:使用LRU算法进行数据淘汰,所有的key都可以被淘汰 volatile-random:随机淘汰数据,只淘汰设定了有效期的key allkeys-random:随机淘...

2018-07-16 23:00:54 110

原创 Linux常用命令

1. Linux中的桌面与命令终端之间的相互切换从桌面切换到命令状态:ctrl+alt+f2/f3/f4等从命令状态切换到桌面:ctrl+alt+f1 2. 虚拟机中Linux系统与本机windows系统之间的相互切换ctrl+alt 3. Linux操作系统备份将linux安装的整个文件夹复制一遍4.常用命令:1. cd命令:切换到某一个指定的目录(文件夹)之下语法规则:cd 文件夹名(相对路径...

2018-07-02 10:44:41 104

原创 Linux下载、安装图解详解

  安装过程中只列出主要步骤其他的根据常识安装或者下一步一、VM(vmware workstation)安装1. VM安装步骤先创建两个文件夹disk1和disk2,首先安装在disk1分配60G存储空间接下来安装在disk2一、Linux系统安装(*)1. 在VM上创建一个Linux虚拟机1. 给Linux系统分区...

2018-07-02 10:03:41 324

原创 linecode 99. 重排链表java 实现AC

/* 99. 重排链表给定一个单链表L: L0→L1→…→Ln-1→Ln,重新排列后为:L0→Ln→L1→Ln-1→L2→Ln-2→…必须在不改变节点值的情况下进行原地操作。样例给出链表 1->2->3->4->null,重新排列后为1->4->2->3->null */方案1: class Node1{ int ...

2018-04-16 23:13:00 996

转载 java 剑指Offer 二进制中1的个数 AC

题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。public class Solution {    public int NumberOf1(int n) {        int count =0;        boolean flag=true;        while(flag){            if(n==0)                break...

2018-04-07 23:41:53 116

转载 linecode7. 二叉树的序列化和反序列化已AC

 linecode7. 二叉树的序列化和反序列化AC 描述 笔记 数据 评测设计一个算法,并编写代码来序列化和反序列化二叉树。将树写入一个文件被称为“序列化”,读取文件后重建同样的二叉树被称为“反序列化”。如何反序列化或序列化二叉树是没有限制的,你只需要确保可以将二叉树序列化为一个字符串,并且可以将字符串反序列化为原来的树结构。 注意事项There is no limit of how you d...

2018-03-22 23:57:17 16550

转载 linecode 1. A + B 问题 java实现

给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。 注意事项你不需要从输入流读入数据,只需要根据aplusb的两个参数a和b,计算他们的和并返回就行。您在真实的面试中是否遇到过这个题?说明a和b都是 32位 整数么?是的我可以使用位运算符么?当然可以样例如果 a=1 并且 b=2,返回3思路:利用二进制异或(^)运算实现相加但是相加的结果不包含进位;利用按位相与(&)为真时...

2018-03-20 23:13:17 1334

翻译 剑指Offer 面试题42 左旋转字符串java实现

public class Solution {    /**     * @param str: an array of char     * @param offset: an integer     * @return: nothing     */    public void rotateString(char[] str, int offset) {        // write yo...

2018-03-20 22:59:04 158

空空如也

空空如也

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

TA关注的人

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