自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 面试复习问题 1

1.算法:判断一棵树是否是镜像https://blog.csdn.net/cuit/article/details/78639682递归解法:首先判断根是否有左右节点,如果左右节点都有,则判断左节点的右子节点和右节点的左子节点是否有相同的值,并进行递归。非递归解法:用队列来代替递归过程,把要比较的节点成对放入队列中。 public boolean isSymmetric(Tree...

2019-03-21 12:12:54 718 1

原创 socket编程实例

client:package excercise;import java.io.*;import java.net.*;import java.util.Scanner;public class Client { public static void main(String args[]) throws Exception { int []a=new int[2] ; ...

2019-03-18 18:17:07 410

原创 ThreadLocal可能引起的内存泄露

ThreadLocal原理ThreadLocal的原理:每个Thread内部维护着一个ThreadLocalMap,它是一个Map。这个映射表的Key是一个弱引用,其实就是ThreadLocal本身,Value是真正存的线程变量Object。也就是说ThreadLocal本身并不真正存储线程的变量值,它只是一个工具,用来维护Thread内部的Map,帮助存和取。注意上图的虚线,它代表一...

2019-03-18 16:45:50 273

原创 TCP/IP HTTP 总结

IP协议位于网络层,TCP/UDP协议位于传输层,HTTP位于应用层,如下图:说明:TCP是传输层协议,主要解决数据如何在网络中传输;HTTP协议是应用层协议,是TCP协议的上层协议,主要用于客户端与服务器之间的数据传输 socket是对TCP协议的封装,是一个调用接口。TCP头部由TCP模块负责添加,头部格式如下:(最小20字节)发送方端口号接收方端口号序号(发...

2019-03-15 12:08:47 181

原创 NIO

java nio的io模型是同步非阻塞,这里的同步异步指的是真正io操作(数据内核态用户态的拷贝)是否需要进程参与。而说java nio提供了异步处理,这个异步应该是指编程模型上的异步。基于reactor模式的事件驱动,事件处理器的注册和处理器的执行是异步的。JAVA NIO是同步非阻塞io。同步和异步说的是消息的通知机制,阻塞非阻塞说的是线程的状态 。下面说说我的理解,clien...

2019-03-15 11:44:04 118

原创 redis 分布式锁 位图 HyperLogLog 布隆过滤器

分布式锁分布式锁本质上要实现的目标就是在 Redis 里面占一个“茅坑”,当别的进程也要来占时,发现已经有人蹲在那里了,就只好放弃或者稍后再试。占坑一般是使用 setnx(set if not exists) 指令,只允许被一个客户端占坑。先来先占, 用完了,再调用 del 指令释放茅坑。// 这里的冒号:就是一个普通的字符,没特别含义,它可以是任意其它字符,不要误解> s...

2019-03-14 18:26:07 835

原创 Redis五种数据类型

在没有redis之前,客户端访问后端应用时,当并发大的时候,存储层如mysql是支撑不了的,可能会将存储层mysql压死,存储层一旦宕机,整个应用就完了。为了很高效的加速应用的读写速度,同时也可以降低后端负载在一定程度上可以通过AOF和RDB机制保证在一定的情况下(如缓存层宕机)快速恢复数据为应用提供服务。缓存层可以通过主从复制+哨兵或集群实现高可用。Redis(REmote DIctionary...

2019-03-14 17:49:59 321

原创 Mysql(一)索引与算法

INNODB存储引擎概述存储引擎的索引分类(安装索引的内部实现不同):B+树索引 哈希索引(INNODB是自适应哈希索引) 全文索引B+树索引就是传统意义上的索引,也就是上面提到过那种类型的索引,这是目前关系型数据库系统中查找最为常用和最为有效的索引。B+树索引的构造类似于二叉树。哈希索引,INNODB存储引擎是自适应的,INNODB存储引擎会根据表的使用情况自动为表生成哈希索引...

2019-03-11 23:00:11 147

原创 深入理解java虚拟机(五)线程安全与锁优化

线程安全当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方法进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那么这个对象是线程安全的。Java语言中的线程安全这里讨论的线程安全,就限定于多个线程之间存在共享数据访问的这个前提。按照线程安全的“安全程度”由强到弱排序,可以把Java中各个操作共享的数据分为...

2019-03-11 15:57:19 270

原创 深入理解java虚拟机(四)java内存模型和线程

硬件的效率与一致性由于计算机的存储设备和处理器的运算速度有几个数量级的差距,所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存Cache来作为内存与处理器之间的缓冲:将运算需要使用到的数据复制到缓存中,让运算能快速的执行,当运算结束后再从缓存同步回内存中,这样处理器就无须等待暖man的内存读写了。而这样就会引起“缓存一致性”的问题,因为在多处理系统中,每个处理器都...

2019-03-10 19:28:15 180

原创 深入理解java虚拟机(三)虚拟机类加载机制

1虚拟机类加载机制的概念虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化。最终形成可以被虚拟机最直接使用的java类型的过程就是虚拟机的类加载机制。Java语言的动态加载和动态连接另外需要注意的很重要的一点是:java语言中类型的加载连接以及初始化过程都是在程序运行期间完成的,这种策略虽然会使类加载时稍微增加一些性能开销,但是会为java应用程...

2019-03-10 17:48:33 118

转载 java反射

反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码))一、反射的概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类...

2019-03-06 17:21:32 99

转载 Java面向对象三大特性 封装 继承 多态

1.封装封装的定义:首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系为什么需要封装:封装符合面向对象设计原则的第一条:单一性原则,一个类把自己该做的事情封装起来,而不是暴露给其他类去处理,当内部的逻辑发生变化时,外部调用不用因此而修改,他们只调用开放的接口,而不用去关心内部的实现public class Human{ ...

2019-03-02 18:55:16 111

原创 图的邻接矩阵和遍历 拓扑排序 java

图的表示有三种,邻接表,邻接矩阵和十字链表我使用邻接矩阵表示图邻接矩阵中[i][j]表示i节点指向j节点,大小为[i][j]的值比如这样若是无向图,矩阵则是按照对角线对称的。首先是深度遍历,深度遍历是沿着一个节点往下走,当某个节点的下一个节点被访问过,或者就没有下一个节点时,返回。和二叉树的深度遍历类似,使用递归 /** * 深度遍历 ...

2019-03-02 18:07:37 618

原创 01背包问题 java

01背包问题是动态规划中的经典问题一、问题描述:有n 个物品,它们有各自的重量和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?解决这个题有两种方法,和其它的动态规划问题一样数组w[]为物品的重量,v[]为物品的价值一种是递归的思想,从后向前考虑,背包决定是否放一个物品是根据两个值的大小判断(一个值是背包没有放入这个物品的价值,另一个值是背包放入这个物品,...

2019-03-02 01:05:59 515

原创 深入理解java虚拟机(二)jvm 垃圾收集器

可达性分析使用可达性分析来判断对象的存活,基本思路就是通过一系列成为“GC Roots”的对象作为起点,从这些起点开始向下搜索,搜索到所走过的路径成为引用链,当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的比如图中Object5,6,7,虽然之间有关系,但是GC Roots不可达,所以他们将会被判断为可回收的对象。可作为GC Roots的对象有:虚拟机栈中引...

2019-03-01 16:13:57 133

转载 枚举根节点 GC

GC Roots 枚举根节点描述:GC Roots 被虚拟机用来判断对象是否存活。一、可以做为GC Roots的对象位置 对象虚拟机栈 栈帧中的本地变量表本地方法栈 JNI(一般指的Native方法)引用的对象方法区 静态属性引用对象方法区 常量引用对象二、枚举根节点可达性分...

2019-02-27 18:33:12 271

原创 深入理解java虚拟机(一)java内存区域和内存异常

java与c++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来写得好 jvm内存区域划分java的虚拟机(jvm)是运行java程序的地方,主要分为五部分:方法区,堆,虚拟机栈,本地方法栈和程序计数器程序计数器:是当前线程所执行的字节码的行号指示器,每个线程都需要有一个独立的程序计数器,为了线程切换后能恢复到正确的执行位置。...

2019-02-26 18:45:08 140

原创 java 堆与堆排序

1.堆:堆是一种树,由它实现的优先级队列的插入和删除的时间复杂度都是O(logn),用堆实现的优先级队列虽然和数组实现相比较删除慢了些,但插入的时间快的多了。当速度很重要且有很多插入操作时,可以选择堆来实现优先级队列。一般用在动态数据的排列上堆分大根堆和小根堆,在这里主要说大根堆。堆的插入,由于使用数组来实现堆,所以插入的元素一般在数组末尾,也就是堆得最后一个叶子结点,插入后,要是堆维...

2019-02-25 21:46:38 134

原创 java值传递和引用传递

由于java不像c++那样可以使用引用(&)(不同于引用传递)但是为什么上一篇排序时,将数组作为方法的参数却可以全局的改变数组呢?java中存在两种传递,一种是值传递,一种是引用传递值传递是针对8种基本数据类型的(int,short,float,double,char,baye,long,boolean)和String类, Integer, Double等immutable的类...

2019-02-23 22:39:35 168

原创 java 排序算法

今天重新复习了一下排序的算法,一般分为O(n2)(冒泡排序,插入排序,选择排序)O(nlogn)(快速排序,归并排序,堆排序)直接上代码:public interface Sort { void bubbleSort(int[] data); void insertSort(int[] data); void quickSort(int[] data,int ...

2019-02-23 22:17:46 100

原创 二叉树的遍历 前中后序,层序

二叉树是很重要的数据结构,它的遍历也同样很重要首先先建造一个二叉树: private class Node{ private int data; private Node leftChind; private Node rightChind; public Node(int data, Node leftChind, N...

2019-02-22 22:20:00 653

原创 单链表实现队列和栈

单链表实现队列很简单,因为队列是先入先出FIFO,所以入队就是在单链表的头插入数据,出队就是在单链表的尾得到数据,然后删除。队列的接口:public interface Queue { void put(int data); int pop(); void display();}接口实现:public class QueueImpl implemen...

2019-02-22 19:42:12 777 1

转载 单链表的操作

参考:https://www.cnblogs.com/ysocean/p/7928988.html 链表是一种使用广泛的通用数据结构,它也可以用来作为实现栈、队列等数据结构的基础,基本上除非需要频繁的通过下标来随机访问各个数据,否则很多使用数组的地方都可以用链表来代替。 单向链表(Single-Linked List)  单链表是链表中结构最简单的。一个单链表的节点(Node)...

2019-02-21 15:29:21 140

原创 String 时间戳 转 Date 时间格式 java

今天遇到一个问题是从数据库提取出String类型的时间戳,然后将他转换为Date类型(yyyy-MM-dd HH:mm:ss)再存入数据库那么就总结一下时间类型的转换吧首先这个转换为 String seconds = toutiaoArticle.get("article_publish_time").toString(); Simple...

2019-02-20 17:53:07 2985

转载 Java并发编程:volatile关键字解析

Java并发编程:volatile关键字解析   volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。  volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模...

2019-02-18 17:19:00 110

转载 Java的线程安全

线程安全我们这里讨论的线程安全,就限定于多个线程之间存在共享数据访问这个前提,因为如果一段代码根本不会与其他线程共享数据,那么从线程安全的角度来看,程序是串行执行还是多线程执行对它来说是完全没有区别的。共享的数据可以将Java语言中各种操作共享的数据分为以下5类:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立。不可变不可变(Immutable)的对象一定是线程安全的,无...

2019-02-18 17:11:25 146

转载 分布式系统与网络分区

在OpenStack中,数据库是主要系统“状态”的主要来源。大部分Core Projects都使用传统关系型数据库作为系统数据和状态的存储,另外如Ceilometer使用了MongoDB,还有其他Incubator Projects使用了Redis作为队列或者状态存储。数据库给OpenStack提供了状态组件并把状态的“共享”问题交给了数据库,因此解决OpenStack的扩展问题实际上就是解决使用...

2019-02-18 17:03:46 6303

转载 深入了解Token认证的来龙去脉

转载至:https://blog.csdn.net/niugang0920/article/details/80615137Token 是在服务端产生的,如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位。  不久前,我在前后端分离实践中提到了基于 Token 的认证,现在我...

2019-02-15 17:39:02 471

转载 转载:HttpClient学习整理

转自:https://www.cnblogs.com/ITtangtang/p/3968093.html  HttpClient简介HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程...

2019-02-14 18:06:30 122

原创 es学习之节点启动流程

1 选举主节点基于bully算法,对节点ID进行排序,去ID值最大的节点作为master。有三个附加约定条件: a参选人数需要过半(有可能导致选举结果的不同) b得票数需要过半(解决a中结果不同的问题) c当探测到节点离开事件时,必须判断当前节点数是否过半(否则可能产生双主(脑裂)) 2 选举集群元信息选举出master并不意味着master中的信息是最新的,这一步...

2019-02-13 18:04:13 1529

原创 java程序打成jar包上传服务器

今天第一次将自己的程序上传到服务器运行,还是有点小激动的,过程在此记录一下。IDE是idea,下载了一个小工具,可以maven项目打包的然后 右键pom.xml,选到run maven-> clean, compile, package三步都完成之后,开始导入依赖的包(在pom.xml中添加的) 选择run maven-> new goal 添加depency:copy...

2019-01-30 16:54:44 2939

原创 java转义json出现\u0000 等乱码处理思路

今天遇到了String乱码怎么都去不了的问题,最后的解决方法很简单,也不是方法的问题,是数据过滤之后进行的数据处理,在处理阶段生成了乱码,难怪我在过滤阶段怎么去都去不掉- -,不过花时间知道了很多处理乱码的方法,在这里记录一下。在将中文数据转成json格式的时候,碰到了很多char型直接显示出来的,比如\u0000, \u201d, \u201c首先我想到的是我的数据筛选出现了问题,于是去...

2019-01-29 14:38:42 19950 1

原创 工程java代码的规范

这几天公司把我的代码风格规范了一下,现在才知道以前写的是那么的随心所欲。首先是工程的命名方式,是小写的字母然后用 - 隔开,for example: ai-weibo-upload启动类:main数据库的操作:dao工具类:untils配置:config 类的命名方式:参考 阿里巴巴Java开发手册终极版v1.3.0 配置(config文件夹):账号,密码,数据...

2019-01-18 18:04:06 179

原创 数据库数据倒入es(一)

昨天完成设置爬虫的任务后,今天又要开始es的学习了,捣鼓了这几天,方法都是错误的,跟需求不一样。领导昨天给了我参考的代码,今天带着参考的代码继续学习。之前连接数据库用的是logstash,也可以用kafka带的包,但是我们的需求要灵活并且需要稳定,所以需要自己写一个数据库的连接,正好昨天用到了jdbctemplate,今天就用上了。首先是jdbctemplate连接数据库,就不详细写了...

2019-01-17 09:35:11 9513 2

原创 神箭手 爬虫操作(1)

今天有一个任务,是要将微博用户的昵称从数据库导入到神箭手中。以前一直是手动操作,现在有一个需求是要直接导入到设置中。数据库使用的是mysql,数据库连接使用的是JDBCtemplate,使用spring构建,还要用到神箭手的SDK。之前没有接触过JDBCtemplate,一直使用的是JPA和Mybatis,所以趁着这个机会,学习一个JDBCtemplate。  一、大体框架...

2019-01-15 19:07:13 1455 1

原创 elasticsearch java api 的增删改查

上一篇写了es在springboot中的实现,今天在maven中实现一下首先是建立maven工程,然后在pom.xml中添加es,log4j,junit依赖: <dependencies> <dependency> <groupId>org.elasticsearch.client</groupId&...

2019-01-11 16:05:30 259

原创 elasticsearch 的增删改查 json和springboot

首先是json直接的增删该查,在Postman里直接通过Json语句修改ES里的索引POST 127.0.0.1:9200/people{    "settings":{        "number_of_shards": 3,        "number_of_replicas": 1    },    "mappings":{        "man":{    ...

2019-01-10 21:29:53 1304

原创 elasticsearch 的搭建2

单节点模式安装head插件因为elasticsearch的界面是json,不太友好,安装head插件之后,有有好的web界面前置程序node,npm:https://www.cnblogs.com/tianhei/p/7430050.html    (node版本应为最新)更新node版本:https://blog.csdn.net/u010277553/article/detai...

2019-01-09 17:09:13 125

原创 elasticsearch mysql ubuntu安装

首先需要安装java1.8https://blog.csdn.net/williamyi96/article/details/78268595安装MySQL5.7.23sudo apt install mysql安装ideahttps://blog.csdn.net/weixx3/article/details/81136822 安装elasticsearch ...

2019-01-08 17:23:20 147

空空如也

空空如也

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

TA关注的人

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