- 博客(91)
- 问答 (1)
- 收藏
- 关注
原创 TCP粘包问题
本篇博客从以下四个问题进行分析,来理解TCP粘包问题。 什么是TCP粘包问题? 为什么会存在TCP粘包问题? 如何解决TCP粘包问题? UDP是否存在粘包问题?为什么?什么是TCP粘包问题?TCP是面向连接的,即客户端和服务端要成对维护socket连接。如果客户端连续不断的向服务端发送数据包时,服务端接收的数据会出现两个数据包粘在一起的情况,这就是TCP协议中经常会遇到的粘包以...
2018-06-22 15:48:40 511
原创 ping
当我们遇到网络不通的问题时,会想到ping一下。那你知道ping是如何工作的吗?ping是基于ICMP协议工作的。ICMP全称Internet Control Message Protocol,互联网控制报文协议。网络包在异常复杂的网络环境中传输时,常常会遇到各种各样的问题。当遇到问题,总不能死的不明不白,要传出消息来,报告情况,这样才可以调整传输策略。这就相当于古代行军的时候,为将为帅者...
2018-06-04 19:12:45 980
原创 IP地址怎么来的
我们知道MAC地址是在网卡出厂时就确定了,那对于IP地址呢?IP地址的分类和配置都是人为设定的,那具体是怎么来的呢?我们先来看看如何配置IP地址 如果对命令行比较熟悉的,可以使用ifconfig或者ip addr进行配置ifconfig eth1 192.168.10.3/24ifconfig eth1 up或者ip addr add 192.168.10.3/24 dev ...
2018-06-04 16:23:52 8031
原创 IP地址和MAC地址
网络分层思考一个问题?为什么网络要分层?因为复杂的程序都要分层,这是程序设计的要求 计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决,计算机整个体系从上到下都是按照严格的层次结构设计的。理解计算机网路中的概念,一个很好的角度就是:想象网络包就是一段buffer,或者一块内存,是有格式的。同时,想象自己是一个处理网络包的程序,而且这个程序可以跑在电脑上,可以跑在服务器上...
2018-06-04 11:09:29 982 2
原创 分布式环境下定时任务如何做到只执行一次
问题:对于一个部署在多台机器上的应用,程序运行时,如何保证多个机器上的定时任务只有一个机器上的任务被执行? 思路:对于每一个定时任务job都有一个唯一id,当发现改job处于运行状态时,其他机器都不会去调度这个jobquartz的分布式解决方案quartz介绍Quartz是一个开源的作业调度包,能够运行在几乎任何java项目中,小到单机应用,大到电商系统。Quartz能够...
2018-05-22 15:45:52 16234 1
原创 Java的类加载器
我们所写的java程序,经过Java编译器把java代码编译为存储字节码的class文件,虚拟机所处理的正是这些Class文件。虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。类加载器Java语言是在运行期动态加载的,即我们所写的类并不是在程序启动时,一次性进行加载的,而是在实际使用到时才进行动态加载。只有...
2018-05-08 08:29:33 199
原创 如何合理确定线程池的大小
在java中,几乎所有需要异步或者并发执行任务的程序都可以使用线程池。在开发过程中,合理的使用线程池能够带来3个好处首先是降低资源消耗。通过重复利用已创建的线程降低创建线程和销毁线程所带来的开销。提高相应速度。当任务到达时,任务可以不需要等待线程创建就立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅消耗系统资源,同时降低系统的稳定性,使用线程池可以进行统一分配、调优和...
2018-05-07 22:10:21 3062
原创 快速失败(fail-fast)和安全失败(fail-safe)
快速失败(fail-fast)在用迭代器遍历一个集合对象时,如果遍历过程中对集合对象的内容进行了修改(增加、删除、修改),则会抛出Concurrent Modification Exception。原理:迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个 modCount 变量。集合在被遍历期间如果内容发生变化,就会改变modCount的值。每当迭代器使用hashNext()/n...
2018-04-22 22:01:49 375
转载 JDK1.8 HashMap的resize()源码分析
final Node<K,V>[] resize() { Node<K,V>[] oldTab = table; int oldCap = (oldTab == null) ? 0 : oldTab.length; int oldThr = threshold; int newCap, newThr = 0;...
2018-04-22 21:55:02 816
转载 Map按键排序(sort by key), 按值排序(sort by value)
Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value)。1、按键排序jdk内置的java.util包下的TreeMappublic class MapSortDemo {public static void main(String[] args) { Map<String, String> map = ne
2018-03-23 22:41:59 1821
原创 字符串操作的题目
1、按长度为8拆分每个字符串后输出到新的字符串数组; 长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。 public static void cutString(String str) { if(str == null || str.length()<=0) { return; } ...
2018-03-23 16:02:02 424
转载 Spring知识点提炼
原文出处: 朱小厮1. Spring框架的作用轻量:Spring是轻量级的,基本的版本大小为2MB控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。面向切面的编程AOP:Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开。容器:Spring包含并管理应用中对象的生命周期和配置MVC框架: Spring-MVC事务...
2018-03-04 20:01:49 232
转载 69道Spring面试题和答案
69道Spring面试题和答案 原文地址 目录Spring 概述依赖注入Spring beansSpring注解Spring数据访问Spring面向切面编程(AOP)Spring MVCSpring 概述1. 什么是spring?Spring 是个java企业级应用的开源开发框架。Spring主要用来开发J...
2018-03-04 16:01:53 2196
原创 java面试题基础
基础知识 面向对象的特征 final, finally, finalize 的区别 int 和 Integer 有什么区别 重载和重写的区别 抽象类和接口有什么区别 说说反射的用途及实现 说说自定义注解的场景及实现 HTTP 请求的 GET 与 POST 方式的区别 session 与 cookie 区别 session 分布式处理 JDBC 流程 MVC 设计思想 eq...
2018-03-04 15:59:03 224
原创 抽象类和接口的区别
参数抽象类接口默认的方法实现它可以有默认的方法实现接口完全是抽象的。它根本不存在方法的实现实现子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。子类使用关键字implements来实现接口。它需要提供接口中所有声明的方法的实现构造器抽象类可以有构造器接口不能有构造器与正常Java类的区别除了你不能实例化抽象类之外,它和
2018-02-25 10:38:38 206
原创 MySQL的row_format
在mysql中, 若一张表里面不存在varchar、text以及其变形、blob以及其变形的字段的话,那么张这个表其实也叫静态表,即该表的row_format是fixed,就是说每条记录所占用的字节一样。其优点读取快,缺点浪费额外一部分空间。若一张表里面存在varchar、text以及其变形、blob以及其变形的字段的话,那么张这个表其实也叫动态表,即该表的row_format是dynamic,就是
2018-02-21 13:51:59 612
原创 InnoDB存储引擎表
简单来说,表是关于特定实体的数据集合,这也是关系型数据库模型的核心索引组织表在InnoDB存储引擎中,表都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表。在InnoDB存储引擎表中,每张表都有个主键(primary key),如果在创建时没有显式得定义主键,则会按如下方式选择主键:首先判断表中是否存在非空的唯一索引(unique not null),如果有,该列即为主键...
2018-02-21 13:42:50 742
转载 MySQL InnoDB存储引擎 聚集和非聚集索引
B+树索引索引的目的在于提高查询效率,可以类比字典,如果要查“mysql”这个单词,我们肯定需要定位到m字母,然后从下往下找到y字母,再找到剩下的sql。如果没有索引,那么你可能需要把所有单词看一遍才能找到你想要的,如果我想找到m开头的单词呢?或者ze开头的单词呢?是不是觉得如果没有索引,这个事情根本无法完成?我们都知道CPU是很快的,磁盘是很慢的,要想提高数据库的访问效率,可以说非常大的...
2018-02-20 13:14:18 2132
原创 InnoDB存储引擎的关键特性-Insert Buffer
InnoDB存储引擎的关键特性InnoDB存储引擎的关键特性包括:插入缓冲(Insert Buffer)两次写(double write)自适应哈希索引(Adaptive Hash Index)异步I/O (Async IO)刷新邻接页(Flush Neighbor Page)插入缓冲(Insert Buffer) 和数据页一样,是物理页的一个组成部分在InnoDB存储引擎中,主键
2018-02-20 11:53:37 443
原创 InnoDB存储引擎 Checkpoint技术
缓冲池的设计是为了协调CPU速度和磁盘速度不一致,对于页的操作首先都会在缓冲池中进行。当我们执行update操作时,改变了页中的记录,那此时的页就是脏页,即缓冲池中的页的数据比磁盘的新。数据库需要把新数据刷新到磁盘,以满足数据一致性。 如果是一个页发生变化,就把新数据刷回磁盘,这个开销是非常大的。而且如果在将数据刷新到磁盘的过程中发生了宕机,那么数据就不能恢复了。 为了避免数据丢失,事务数据库...
2018-02-19 20:12:21 608
原创 InnoDB存储引擎的缓冲池管理2
LRU list,Free list,Flush list通过show engine innodb status来观察LRU列表和free列表的使用情况和运行状态 由截图可以看出,当前的Buffer pool size共有512个页,即512*16K,总共8MB的缓冲池。Free buffers表示当前Free列表中页的数量,Database pages表示LRU列表中页的数量。 截图中Free
2018-02-19 18:55:29 512
原创 InnoDB存储引擎中的缓冲池管理1
InnoDB存储引擎是基于磁盘存储的,为了平衡CPU速度和磁盘速度之间的差距,引入了缓冲池。即通过一块内存区域来弥补磁盘速度较慢对数据库性能的影响。缓冲池是一个比较大的内存区域,其中存放了各种类型的页。那么InnoDB存储引擎是如何对这块较大的内存进行管理的呢? 下面介绍几类算法。改进的LRU通常来说,数据库中的缓冲池是通过LRU(Latest Recent Used,最近最少使用)算法来进行管理
2018-02-15 15:49:01 579
原创 InnoDB存储引擎
体系架构InnoDB存储引擎体系架构如下图: 从图可见,InnoDB存储引擎有多个内存块,可以认为这些内存块组成了一个大的内存池,负责如下工作:维护所有进程/线程需要访问的多个内部数据结构缓存磁盘上的数据,方便快速地读取,同时在对磁盘文件的数据修改之前在这里缓存。重做日志(redo log)缓存……后台线程的主要作用是负责刷新内存中的数据,保证缓冲池中的内存缓存的是最近...
2018-02-15 11:38:13 379
原创 MySQL体系结构和存储引擎
数据库与实例MySQL是一个可移植的、单进程、多线程架构的数据库 数据库:物理操作系统文件或者其他形式文件类型的集合 实例:MySQL数据库由后台线程以及一个共享内存区组成。数据库实例才是真正用于操作数据库文件的。 MySQL数据库实例在系统上的表现就是一个进程。 应用程序只有通过数据库实例才能和数据库打交道数据库是由一个个文件组成的(一般来说是二进制文件),要对这些文件执行诸如select
2018-02-14 10:30:01 478
原创 单例模式
单例模式:一个类只能创建一个对象的设计模式单例模式代码实现懒汉模式/* * 要想让一个类只能构建一个对象,则不能让他随便进行new,因此构造方法是私有的 * 懒汉模式(如果单例初始值为null,则构建单例对象) */public class Singleton { //私有构造函数 private Singleton() { } //单例对象 pr
2017-12-20 22:48:40 219
原创 159. Longest Substring with At Most Two Distinct Characters
题目描述Given a string, find the length of the longest substring T that contains at most 2 distinct characters. For example, Given s = “eceba”, T is “ece” which its length is 3.思路分析这题依旧是滑动窗口的思想 要求找到最长的只
2017-12-19 22:42:38 303
原创 76. Minimum Window Substring
题目描述Given a string S and a string T, find the minimum window in S which will contain all the characters in T in complexity O(n).For example, S = “ADOBECODEBANC” T = “ABC” Minimum window is “BANC”.No
2017-12-19 19:15:00 219
原创 RabbitMQ
RabbitMQ,是一个使用erlang编写的AMQP(高级消息队列协议)的服务实现。消息队列有两种协议,一种是JMS,一种是AMQP,Spring提供了对这两种协议支持的Template,分别为JmsTemplate和AmqpTemplate,JmsTemplate的具体实现则是ActiveMqTemplate,而AmqpTemplate的具体实现是RabbitTemplate。消息队列服务有三
2017-12-18 20:18:32 317
原创 Authentication failed (rejected by the remote node), please check the Erlang cookie
安装RabbitMQ出现的问题记录: 命令行D:\soft\Rabbitmq\rabbitmq_server-3.7.0\sbin>rabbitmqctl status提示:Status of node rabbit@LAPTOP-SDG10LIN ...Error: unable to perform an operation on node 'rabbit@LAPTOP-SDG10LIN
2017-12-18 15:19:32 11451 1
原创 Spring Cloud Ribbon
Spring Cloud Ribbon是一个基于Http和TCP的客户端负载均衡工具,基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松的将面向服务的REST模板请求自动转换成客户端负载均衡的服务调用。新工具的产生往往是因为要解决旧工具存在的某些痛点,方便开发人员的开发。个人理解:Ribbon = RestTemplate+负载均衡 这里先介绍一下RestT
2017-12-17 12:47:42 381
原创 209. Minimum Size Subarray Sum
题目Given an array of n positive integers and a positive integer s, find the minimal length of a contiguous subarray of which the sum ≥ s. If there isn’t one, return 0 instead.For example, given the arra
2017-12-16 13:41:35 258 2
原创 Spring Cloud Eureka 服务注册与发现
Spring Cloud Eureka是基于Netflix Eureka的二次封装,主要负责完成微服务架构中的服务治理功能。 服务治理是微服务架构中最为核心和基础的模块,主要用来实现各个微服务实例的自动化注册和发现。Spring Cloud Eureka就是围绕这服务注册和服务发现机制来完成对微服务应用实例的自动化管理。Eureka基础架构服务端和客户端 服务端:服务注册中心 客户端:各
2017-12-16 11:17:17 347
原创 微服务构建:Spring Boot
Spring Boot——用于构建微服务的基础框架使用Spring框架时,会发现其配置文件比较复杂,许多内容经常都只是复制粘贴,比如通过Maven构建项目时,我们可以通过配置文件来自动导入依赖的jar包,但要使应用支持Spring,我们就要写不少代码,而且还要排查是否有遗漏的jar包,这不利于项目的快速构建和开发。spring boot的出现有效改善这种问题,它设计了大量的自动化配置来简化Spri
2017-12-16 09:52:27 915
原创 Spring Cloud
https://spring.io/官方对于Spring Cloud的描述: Built directly on Spring Boot’s innovative approach to enterprise Java, Spring Cloud simplifies distributed, microservice-style architecture by implementing pr
2017-12-15 22:16:05 391
原创 229. Majority Element II
题目描述Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorithm should run in linear time and in O(1) space.思路分析对于上一题,数组中个数超过n/2的数值如果存在,则仅有一个。 数组中个数超过n/3的数值可
2017-12-15 13:10:31 225
原创 169. Majority Element
题目描述Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.You may assume that the array is non-empty and the majority element alw
2017-12-15 10:29:30 197
原创 java中的线程池
Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或者并发执行任务的程序都可以使用线程池。 具体的使用场景: 举例分析使用线程池的好处降低资源消耗 创建和销毁线程需要消耗资源,线程池可以重复利用已创建的线程,减少资源消耗。提高响应速度 创建线程需要时间,当任务到达时,立即执行,无需等待线程创建,这样可以节省时间,提高响应速度。提高线程的可管理性 线程的创建、销毁、控制管理、调优等
2017-12-15 09:55:37 191
原创 454. 4Sum Ⅱ
题目描述Given four lists A, B, C, D of integer values, compute how many tuples (i, j, k, l) there are such that A[i] + B[j] + C[k] + D[l] is zero.To make problem a bit easier, all A, B, C, D have same leng
2017-12-12 10:51:43 333
原创 18. 4Sum
题目描述Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target. Note: The solution
2017-12-12 10:28:39 195
原创 16.3Sum Closest
题目描述Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that each input would have exac
2017-12-11 12:09:49 207
空空如也
Bing Maps实现地理位置的定位
2016-05-25
TA创建的收藏夹 TA关注的收藏夹
TA关注的人