树森
码龄9年
关注
提问 私信
  • 博客:40,689
    问答:6,580
    47,269
    总访问量
  • 27
    原创
  • 1,408,182
    排名
  • 8
    粉丝
  • 0
    铁粉

个人简介:不积跬步,无以至千里;不积小流,无以成江海

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:浙江省
  • 加入CSDN时间: 2016-03-17
博客简介:

河湾

博客描述:
积土而为山,积水而为海
查看详细资料
个人成就
  • 获得13次点赞
  • 内容获得6次评论
  • 获得45次收藏
创作历程
  • 5篇
    2019年
  • 25篇
    2018年
成就勋章
TA的专栏
  • 计算机理论与基础
    2篇
  • Redis
  • 分布式
  • Spring
  • JVM
    1篇
  • MySQL
    4篇
  • Java
    14篇
  • 性能优化
    2篇
  • 系统安全
    1篇
  • 微服务
    2篇
  • 算法
    5篇
  • 科学
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

RPC学习笔记

什么是RPC?Remote Procedure Call Protocol,远程过程调用。什么是“远程”?先来看下什么是“近”,即“本地函数调用”。int result = Add(1, 2);这行代码的时候,到底发生了什么?传递两个入参调用了本地代码段中的函数,执行运算逻辑返回一个出参这三个动作,都发生在同一个进程空间里,这是本地函数调用。那有没有办法,调用一个跨进...
原创
发布博客 2019.09.25 ·
221 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java多线程并发:进程调度算法

一 优先调度算法1.先来先服务调度算法(FCFS)当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用 FCFS 算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机,特点是:算法比较...
原创
发布博客 2019.05.22 ·
727 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

互联网架构:从设计到开发让你少踩坑

本文作者:朱晔,熟悉.NET、Java技术栈,多年MVP,先后任职育碧软件、英孚教育、5173、空中网、饿了么等互联网公司,对技术管理、系统架构、深度学习比较感兴趣。本文出自:技术琐话这里所说的三架马车是指微服务、消息队列和定时任务。如下图所示,这里是一个三驾马车共同驱动的一个立体的互联网项目的架构。不管项目是大是小,这个架构模板的形态一旦定型了之后就不太会变,区别只是我们...
转载
发布博客 2019.05.17 ·
257 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Java多线程并发:CyclicBarrier、CountDownLatch、Semaphore 的用法

关注微信公众号:「树森笔记」1、CountDownLatch(线程计数器 )CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。 final CountDownLatch latch = new CountDow...
原创
发布博客 2019.05.17 ·
293 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

僵尸进程与孤儿进程

僵尸进程与孤儿进程1 基本概念unix/linux中,正常情况下,子进程是通过父进程创建的,子进程再创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程到底什么时候结束。当一个 进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将...
原创
发布博客 2019.03.31 ·
123 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

基本类型int和包装类型integer的比较 - == or equals

java中有两种类型基本类型:基本数据类型存的是数值本身引用类型:引用类型变量在内存放的是数据的引用基本类型通过==比较的是它们的值大小,而引用类型比较的是他们的引用地址。 基本类型和包装类型通过==比较的是值的大小,通过equals比较的也是值得大小。public boolean equals(Object obj) { if (obj instanceof In...
原创
发布博客 2018.05.15 ·
3138 阅读 ·
2 点赞 ·
0 评论 ·
8 收藏

排序算法之归并排序

归并排序是建立在归并操作上的一种有效的排序算法,1945年由约翰·冯·诺伊曼首次提出。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。基本思想归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而...
原创
发布博客 2018.05.13 ·
242 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

排序算法之快速排序

快速排序(Quicksort)是对冒泡排序的一种改进,借用了分治的思想,由C. A. R. Hoare在1962年提出。1、基本思想快速排序的基本思想:挖坑填数+分治法。首先选一个轴值(pivot,也有叫基准的),通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。 2、算法描述快速排...
原创
发布博客 2018.05.13 ·
505 阅读 ·
1 点赞 ·
1 评论 ·
1 收藏

排序算法之堆排序

1991年的计算机先驱奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德(Robert W.Floyd) 和威廉姆斯(J.Williams) 在1964年共同发明了著名的堆排序算法(Heap Sort).堆的定义如下:nn个元素的序列 {k1,k2,⋅⋅⋅,kn}{k1,k2,···,kn} 当且仅当满足下关系时,称之为堆。 把此序列对应的二维数组看成一个完全二叉树。那么堆的含义就是:...
原创
发布博客 2018.05.13 ·
297 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

排序算法之希尔排序

希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序,同时该算法是冲破O(n2)的第一批算法之一。本文会以图解的方式详细介绍希尔排序的基本思想及其代码实现。基本思想希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,...
原创
发布博客 2018.05.13 ·
568 阅读 ·
1 点赞 ·
3 评论 ·
1 收藏

排序算法之3种简单排序 - 选择、冒泡、直接插入

排序是数据处理中十分常见且核心的操作,虽说实际项目开发中很小几率会需要我们手动实现,毕竟每种语言的类库中都有n多种关于排序算法的实现。但是了解这些精妙的思想对我们还是大有裨益的。本文简单温习下最基础的三类算法:选择,冒泡,插入。先定义个交换数组元素的函数,供排序时调用/** * 交换数组元素 * @param arr * @param a * @...
原创
发布博客 2018.05.13 ·
304 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

初识Java垃圾回收

垃圾回收机制是 Java 非常重要的特性之一,也是面试题的常客。它让开发者无需关注空间的创建和释放,而是以守护进程的形式在后台自动回收垃圾。这样做不仅提高了开发效率,更改善了内存的使用状况。本文将从以下几个方面对垃圾回收机制进行讲解,希望读完可以对垃圾回收有个初步认识。一、什么是Java堆内存堆是在 JVM 启动时创建的,主要用来维护运行时数据,如运行过程中创建的对象和数组都是基于...
原创
发布博客 2018.05.10 ·
241 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

微服务架构设计

一、微服务概述1、什么是微服务?微服务就是一些可独立运行、可协同工作的小的服务。从概念中我们可以提取三个关键词:可独立运行、可协同工作、小。这三个词高度概括了微服务的核心特性。下面我们就对这三个词作详细解释。可独立运行 微服务是一个个可以独立开发、独立部署、独立运行的系统或者进程。可协同工作 采用了微服务架构后,整个系统被拆分成多个微服务,这些服务之间往往不是完全独立的...
原创
发布博客 2018.05.09 ·
3575 阅读 ·
2 点赞 ·
0 评论 ·
11 收藏

对JAVA集合进行遍历删除

本文转自对JAVA集合进行遍历删除时务必要用迭代器 有以下代码:public static void main(String args[]) { List<String> famous = new ArrayList<String>(); famous.add("liudehua"); famous.add("madehua"); ...
转载
发布博客 2018.05.08 ·
334 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

CSRF 攻击

本文转自CSRF 攻击的应对之道CSRF 背景与介绍CSRF(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一。其他安全隐患,比如 SQL 脚本注入,跨站域脚本攻击等在近年来已经逐渐为众人熟知,很多网站也都针对他们进行了防御。然而,对于大多数人来说,CSRF 却依然是一个陌生的概念。即便是大...
转载
发布博客 2018.05.08 ·
205 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java服务端性能优化的常见方案

作为一个Java后端开发,我们写出的大部分代码都决定着用户的使用体验。如果我们的后端代码性能不好,那么用户在访问我们的网站时就要浪费一些时间等待服务器的响应,造成极差的用户体验,这就可能导致用户投诉甚至用户的流失。性能优化是一个很大的话题。《Java程序性能优化》说性能优化包含五个层次:设计调优、代码调优、JVM调优、数据库调优、操作系统调优等。而每一个层次又包含很多方法论和最佳实践。本文只举...
原创
发布博客 2018.05.05 ·
3897 阅读 ·
0 点赞 ·
0 评论 ·
18 收藏

HashMap的死循环-HashMap Infinite Loop

问题的症状从前我们的Java代码因为一些原因使用了HashMap这个东西,但是当时的程序是单线程的,一切都没有问题。后来,我们的程序性能有问题,所以需要变成多线程的,于是,变成多线程后到了线上,发现程序经常占了100%的CPU,查看堆栈,你会发现程序都Hang在了HashMap.get()这个方法上了,重启程序后问题消失。但是过段时间又会来。而且,这个问题在测试环境里可能很难重现。Ha...
原创
发布博客 2018.05.02 ·
402 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

解读Java中的clone方法

对象的创建clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象。那么在java语言中,有几种方式可以创建对象呢?使用new操作符创建一个对象使用clone方法复制一个对象那么这两种方式有什么相同和不同呢? new操作符的本意是分配内存。程序执行到new操作符时...
原创
发布博客 2018.04.26 ·
381 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

从String源码看-为什么JDK中的String不可变

什么是不可变对象?       我们都知道, 在Java中, String类是不可变的。那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的。不能改变状态的意思是,不能改变对象内的成员变量,包括基本数据类型的值不能改变,引用类型的变量不能指向其他的对象,引...
原创
发布博客 2018.04.26 ·
431 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

重写equals()方法就必须重写hashCode()方法

       最近看了Object类的源码,对hashCode() 和equals()方法有了更深的认识。重写equals()方法就必须重写hashCode()方法的原因,需要从源头Object类讲起。public native int hashCode();public boolean equals(Object ...
原创
发布博客 2018.04.26 ·
615 阅读 ·
2 点赞 ·
0 评论 ·
2 收藏
加载更多