自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java并发(2)一些基本问题

一些问题:synchronized原理,特点、volatile的作用、如何提升索性能、各种锁的适用场景、CAS描述 ,ABA问题的产生及解决方案、银行家算法的过程、缺点。1.Java的线程安全    当对个线程访问同一个对象时,不管运行时环境采用何种方式调度或者这些线程如何交替执行,也不需要进行额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。2线程安全三要素:...

2018-03-26 00:54:21 491

原创 数据库原理

基本内容:ACID与CAP、数据库事务可能引发的问题、数据库锁的类型、三级封锁协议、两段锁协议、数据库隔离级别、MVCC的实现步骤、MySQL事务如何实现、数据库锁如何实现、XA两段提交协议。1.ACID是数据库事务正确执行的四个基本要素:原子性:事务是数据库并发控制的最小单位,要么全部提交成功,要么全部回滚失败;一致性:事务执行前后,数据的完整性必须保证一致。事务执行...

2018-03-25 18:46:16 444

原创 10类排序算法及改进

测试平台http://www.lintcode.com/zh-cn/problem/sort-integers/1.冒泡排序: 稳定,O(n*n)。 public void bubbleSort(int[] arr) { for(int i=0;i<arr.length-1;i++){//n个元素,只需要n-1趟,每趟固定一个元素到后面 for(...

2018-03-21 05:44:19 295

原创 JVM内存模型

一些问题:描述运行时数据区、垃圾回收GC(GC时机,3类GC算法,GC ROOT有哪些)、说说4种引用类型、类的生命周期(类加载过程、类初始化时机、类卸载的条件...)1.JVM内存模型a.结构 运行时数据区,执行引擎,本地库接口,本地方法库b.详细说明'运行时数据区' 5个子区域:方法区,虚拟机栈,本地方法栈,程序计数器,堆区; 方法区:存放加载的类...

2018-03-18 01:11:55 258

原创 Java并发(1)API

一些问题:说说wait(),sleep(),yield()这3个方法、notify(),notifyAll()各自可能出现的问题、说说copyOnWrite机制以及适用场景、说说AQS、阻塞队列的实现原理、线程池的4种实现,原理。与线程相关的几个基本方法 :     wait():Object类的final native方法,抛中断异常。在一个线程中调用某个对象A的wait()方法,当前线程立即放...

2018-03-16 20:51:05 233

原创 MySQL

几个问题:说说MySQL的优化,说说索引、范式与反范式各自的特点、对InnoDB引擎的了解、常见的limit语句优化、如何修改一个大表的结构,单点问题与主从复制,数据库复制与备份。MySQL优化: (1)数据库表结构优化、索引优化、SQL语句优化 (2)系统配置优化与服务器硬件优化。表的范式化设计:3范式的内容,范式与反范式各自的优缺点 (a)数据库3范式:...

2016-07-02 14:35:03 312

原创 skiplist

package com.ls.hfvj;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.List;/** * 跳表:实现对有序链表的类似二分查找 * 思路:<node,nodelevel>二元组共同确定了下一个候选结点c...

2019-07-05 20:59:03 246

转载 maven6 属性

原文:https://www.cnblogs.com/EasonJim/p/6815365.html?tdsourcetag=s_pcqq_aiomsg引用官方的说明https://maven.apache.org/pom.html#Properties:Properties属性是了解POM基础知识的最后一个要素。Maven属性是值占位符,如Ant中的属性。它们的值可以通过使用符号${...

2019-06-23 13:55:45 325

转载 maven 7 快照版本

原文:http://www.huangbowen.net/blog/2016/01/29/understand-official-version-and-snapshot-version-in-maven/Maven中建立的依赖管理方式基本已成为Java语言依赖管理的事实标准,Maven的替代者Gradle也基本沿用了Maven的依赖管理机制。在Maven依赖管理中,唯一标识一个依赖项是由该依...

2019-06-23 13:50:48 281

转载 maven5 依赖域scope

Maven的一个哲学是惯例优于配置(Convention Over Configuration), Maven默认的依赖配置项中,scope的默认值是compile,项目中经常傻傻的分不清,直接默认了。今天梳理一下maven的scope。scope的分类compile默认就是compile,什么都不配置也就是意味着compile。compile表示被依赖项目需要参与当前项目的编译,当然后续...

2019-06-23 13:38:09 256

原创 base64编码实现

package com.ls.hfvj;/** * 思路:base64只有64个字符,因此只需要6个二进制位来表示 实现:每3个字节为一组凑4个base64字符。 * 多余一个字节补4个0bit位(共12位),凑成2个base64字符;多余两个字节补2个bit位(共18位),凑成3个base64字符。 * 为了知道添加了bit位,(便于解码),一个=表示添加了2个bit位,两个=表示添...

2019-06-16 20:54:59 309

原创 protobuf varint编解码实现

varint:int数字用变长字节数组表示。package com.ls.hfvj;import java.util.Arrays;/** * varint:把整数用变长字节数组表示,每个int用1-5个byte表示。一个字节内,低7位是有效数据位,第8位是标识位,1表示有后续字节,0则表示该整数的结束没有后续字节。 * 当整数是小正数时,得到的字节序列明显比较小一些。 * 编...

2019-06-16 20:52:00 1059

原创 网络编程基础

基本内容:NIO,unix五种网络编程模型,大小端模式,读写缓冲区与死锁,future模式基本雏形1.NIO与BIOBIO:同步阻塞IO。接收一个客户端连接请求时,新建一个线程为该客户端服务;在客户端释放连接前,该线程将一直被该客户端占用;当客户端释放连接时,该线程被销毁。线程数与并发量呈1:1的关系。问题:1.存在高占用问题、2.大量创建/销毁线程的资源消耗、3.服务器响应缓慢,...

2019-06-16 17:45:51 185

原创 maven4 常用插件

基本内容:1.maven-compiler-plugin编译插件、2.spring-boot-maven-plugin打包插件、3.autoconfig-maven-pluginmaven-compiler-plugin编译插件1.该插件用于编译项目源代码。maven3.0以后,默认用javax.tools.JavaCompiler编译器编译源代码(jdk1.6之后默认的编译器)。如果想强制该...

2019-06-15 00:31:55 235

转载 maven2 生命周期与插件

原文:https://blog.csdn.net/worn_xiao/article/details/80875489maven插件生命周期Maven作为一个构建工具由于遵循了约定优于配置的原则,只要编写比Ant所需少得多的脚本就能实现同样的构建。并且Maven还有很多Ant没有的高级特性,例如依赖管理等,这一切使得Maven不仅是构建工具,更是项目管理工具,并越发流行起来。由于Mav...

2019-05-29 01:13:12 123

转载 maven1 maven生命周期详解

原文:https://juvenshun.iteye.com/blog/2139591.Maven强大的一个重要的原因是它有一个十分完善的生命周期模型(lifecycle),这个生命周期可以从两方面来理解,第一,顾名思义,运行Maven的每个步骤都由它来定义的,这种预定义的默认行为使得我们使用Maven变得简单,相比而言,Ant的每个步骤都要你手工去定义。第二,这个模型是一种标准,在不同的项目...

2019-05-29 00:55:43 199

原创 设计模式

基本内容:模板方法模式AQS、主题观察者模式(事件源-事件监听器)、责任链模式(netty handle链)、策略模式(spi)、状态模式、装饰者模式(io流)、代理模式(dubbo invoke)、桥接模式(slf4切换底层实现的桥接包)、适配器模式、外观模式、单例模式、bulid建造器模式1.模板方法模式:父类定义算法骨架,具体实现延迟到子类实现,子类可以自由的替换某个小步骤的实现。如AQ...

2019-05-24 21:40:27 141

原创 kafka

基本内容:消息中间件优点、pull消费模型优点、分区模型意义、reblance分区分配算法(range,round,sticky)、reblance触发条件、消费者如何优雅退出、可靠性(精确一次语义、副本集)、物理存储1.消息中间件优点:解耦,削峰,异步。2.pull消费模型优点:a.push模型与poll模型对比1.push模型:服务端主动推送数据给客户端。优点: ...

2019-05-01 21:06:41 175

原创 Netty

基本内容:链路有效性与心跳检测、内存池、主从reactor模型、直接内存与堆内存、源码分析(fastthreadlocal为什么快、对象池之recycle)1.心跳检测: (a)目的:链路的有效性检测一般采用心跳检测,确认通信对方是否还活着能够继续正常发送/接收消息。(b)两类基本心跳检测机制:1.ping-pong机制,若连续N个周期发送ping而没有收到对方的pong...

2018-06-05 19:55:36 218

原创 redis

基本内容:redis特点,优点、redis持久化,主从复制、领导者选举算法、redis缓存穿透,雪崩,热点key及解决方案、redis缓存更新策略、分布式锁的几种实现方式db/redis/zk。redis特点,优点:内存数据库、后端缓存、单线程。加速客户端读写速度、降低后端服务器,数据库服务器的读/写压力。redis持久化: redis是内存数据库,它把数据保存在内存中,这样再加...

2018-05-08 14:14:00 175

原创 操作系统

几个问题:中断,异常,陷入、操作系统的4个基本特征、说说中断机制、说说进程与线程、5种进程调度算法、说说死锁、优先级反转问题及解决、说说虚存、5种页面置换算法、磁盘调度算法、链接。中断,异常,陷入:操作系统为了及时对中断进行相应,在进程执行过程中,如果检测到中断信号,先陷入内核态执行中断处理程序,完成后再切换到用户态继续运行当前进程。为了与外部事件引起的中断相区别,把内部事件引起的中断叫做异常。因...

2018-04-26 23:14:49 286

原创 JSP/Servlet

1.Jsp与Servlet    当接收到一个请求时,将.jsp文件转化为.class文件,加载.class文件,在内存中构造Servlet对象,执行处理方法,把输出作为响应体内容。    一般情况下,Jsp引擎会检查.jsp文件对应的Servlet类是否已经存在,并且检查.jsp的更新日期是否早于Servlet。如果.jsp的更新日期是否早于Servlet,那么容器就可以确定.jsp文件没有被修...

2018-03-29 00:58:36 123

原创 Java集合容器

基本内容:ArrayList、HashMap、HashSet、TreeMap、LinkedHashMap、ConcurrentHashMap1.ArrayList,支持随机访问,插入删除操作时间复杂度为O(n)。 (a) 默认初始容量为10:private static final int DEFAULT_CAPACITY = 10; (b)扩容时,扩充为原来的1.5倍:i...

2018-03-27 01:53:38 538

原创 计算机网络

TCP,UDP各自特点,优缺点,TCP可靠传输/滑动窗口/流量控制/拥塞控制、OSI分层结构。 TCP:面向连接,提供可靠传输;把用户数据报拆分封装成为报文;适合传输大量数据,对可靠性要求较高的场景。 UDP:非面向连接,不可靠;不拆分用户数据报,直接加UDP头;适合传输少量数据,对可靠性要求不高的场景。 UDP没有建立/释放连接、可靠传输、拥塞控制等过程,速度更快。...

2018-03-27 01:24:56 334

原创 leetcode200. Number of Islands(DFS,BFS,UnionFound)

独立连通分量的个数: class Solution { private char[][] grid; public int numIslands(char[][] grid) { if(grid.length==0){ return 0; } this.grid=gri...

2018-03-26 14:07:50 445

原创 leetcode146. LRU Cache

class LRUCache { private class Node{ private int key; private int value; private Node pre; private Node next; public Node(int key,int value){ this.key=key; ...

2018-03-20 18:50:34 126

原创 BST,AVL,红黑树;B/B+树的概念及部分题解

leetcode98.验证二叉查找树、leetcode230.查找二叉查找树中第K小的元素、leetcode110.验证一颗二叉树是否是平衡二叉树1.BST(Binary Search Tree)二叉搜索树:    a.性质:        1.左子树上的所有结点都小于根节点        2.右子树上的所有结点都大于根节点        3.左右子树分别也是二叉查找树(树结构一般采用递归定义,因...

2018-03-18 16:30:03 466

原创 leetcode101. Symmetric Tree判断一棵树是否是镜像二叉树

思路:转化为求两个二叉树是否是镜像二叉树class Solution { //判断一颗二叉树是否是镜像的 public boolean isSymmetric(TreeNode root) { if(root==null){ return true; } return isSymmetric(root.left, r...

2018-03-18 01:17:16 1058

原创 leetcode37. Sudoku Solver解数独

思路:枚举回溯+剪枝Your runtime beats 98.85 % of java submissionsclass Solution { private char[][] board; private boolean[][] rows; private boolean[][] cols; private boolean[][] su...

2018-03-18 01:13:59 769

原创 leetcode407. Trapping Rain Water II 接雨水2

思路:用优先队列维护一个'圈’(边界),从圈的短板处内溢的过程。广度优先搜索结合优先队列。class Solution{ private class Cell implements Comparable&lt;Cell&gt;{ int row; int col; int height; public Cell(int row, int col,...

2018-03-17 01:58:05 780

原创 leetcode767. Reorganize String

思想:贪心,子问题,借助大堆实现。贪心:先尽量用频次高的元素;若一轮使用后还有剩余,则交给子问题。class Solution{ private class Cell implements Comparable&lt;Cell&gt;{ char ch; int count; public Cell(char ch,int co...

2018-03-17 01:47:28 675

原创 leetcode214. Shortest Palindrome构造最短回文串

问题:给定一个字符串str,只允许在首部添加字符,求构造的最短回文串的长度。思路:找到以str[n-1]为结尾的最长回文串,设为str[i,n-1];再用前半部分的翻转链接到该串即可:reserve(str[0,i-1])+str实现:若str[i,n-1]是以str[n-1]为结尾的最长回文串,则反转str后,有reserve(str)[0,n-i-1] equals str[i,n-1],于是...

2018-03-17 01:40:41 692

原创 leetcode268.Missing Number缺失的数

给定一个大小为n的数组,值为0, 1, 2, ..., n,且不含重复元素,找到数组中缺少的那个数字。class Solution { //268*.给定一个包含n个不同数字的数组0, 1, 2, ..., n,找到数组中缺少的数字。异或运算.将索引和值均一起进行异或运算 //索引为[0,n-1]--&gt;索引提供值{0,n-1}个一次;若nums缺失的是n,则nums提供值{0...

2018-03-17 01:27:36 199

原创 leetcode23. Merge k Sorted Lists合并K个排序链表

思路:小堆class Solution { public ListNode mergeKLists(ListNode[] lists) { if(lists.length==0){//初始化PriorityQueue如果initialCapacity&lt;1会抛出llegalArgumentException return null; } ...

2018-03-17 01:22:09 209

原创 leetcode91.解码方式

暴力递归---有重叠子问题---&gt;记忆化搜索(自顶向下)---子问题比较有规律---&gt;动态规划(自底向上)。对于dp,要明确变量语义,如同递归,要明确函数意义。定义问题要清晰,整个过程要严格遵循语义。class Solution { public int numDecodings(String s) { int n=s.length(); if(n==0){...

2018-03-17 01:17:11 770

原创 leetcode32.Longest Valid Parentheses最长有效括号序列

主要利用了有效序列是连续的性质class Solution { public int longestValidParentheses(String s) { Stack&lt;Integer&gt; stack=new Stack&lt;Integer&gt;();//存贮左括号的索引 int max=0; int start=0;//...

2018-03-17 01:04:47 248

原创 leetcode154. Find Minimum in Rotated Sorted Array II

找含有重复元素回旋数组最小值,数组也可能没有旋转。Your runtime beats 100.00 % of java submissions.class Solution { public int findMin(int[] nums) { int low=0,high=nums.length-1; int middle; while(nums[low]&...

2018-03-17 00:53:46 132

原创 leetcode76. Minimum Window Substring最小包含子串

思路:模拟挖坑填坑Your runtime beats 97.00 % of java submissions.class Solution { //76. Minimum Window Substring*,包含t中所有字符的最短子串。假设输入范围为ascii public String minWindow(String s, String t) { if(s.leng...

2018-03-17 00:46:00 347

原创 leetcode81. Search in Rotated Sorted Array II

思路:先找到回旋点(右段起点)同154,再对左右两段分别进行二分搜索Your runtime beats 100.00 % of java submissions.class Solution { public boolean search(int[] nums, int target) { if(nums.length==0){ return false; ...

2018-03-17 00:34:20 146

原创 SQL注入

SQL注入基本原理:1)对于非数字字符(串),如果没有加引号,数据库默认的把它当做一个数据库字段处理。      SELECT     *      FROM    sql_injection     where   id=age;2)注意一些常用的sql注释符,比如:双横杠(--)、井字符(#)。3)理解逻辑运算or的分块作用。and短路(一旦出错,后面的条件将不再考虑),or(一旦成功,后面的...

2016-08-07 22:53:48 430 6

空空如也

空空如也

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

TA关注的人

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