![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础知识
trainingCL
这个作者很懒,什么都没留下…
展开
-
如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例
wait, notify 和 notifyAll,这些在多线程中被经常用到的保留关键字,在实际开发的时候很多时候却并没有被大家重视。本文对这些关键字的使用进行了描述。在 Java 中可以用 wait、notify 和 notifyAll 来实现线程间的通信。。举个例子,如果你的Java程序中有两个线程——即生产者和消费者,那么生产者可以通知消费者,让消费者开始消耗数据,因为队列缓冲区中有内转载 2017-11-30 16:43:12 · 120 阅读 · 0 评论 -
Thrift
一. 与 Thrift 的初识也许大多数人接触 Thrift 是从序列化开始的。每次搜索 “java序列化” + “方式”、“对比” 或 “性能” 等关键字时,搜索引擎总是会返回一大堆有关各种序列化方式的使用方法或者性能对比的结果给你,而其中必定少不了 Thrift,并且其性能还不错嘞,至少比那战斗力只有1的渣渣 java 原生序列化要强很多(好吧原谅我的小情绪……)。然而,我最初转载 2018-01-03 20:56:13 · 200 阅读 · 0 评论 -
介绍Java中的内存泄漏
Java语言的一个关键的优势就是它的内存管理机制。你只管创建对象,Java的垃圾回收器帮你分配以及回收内存。然而,实际的情况并没有那么简单,因为内存泄漏在Java应用程序中还是时有发生的。下面就解释下什么是内存泄漏,它为什么会发生,以及我们如何阻止它的发生。1. 什么是内存泄漏?内存泄漏的定义:对象已经没有被应用程序使用,但是垃圾回收器没办法移除它们,因为还在被引用着。转载 2017-12-29 10:29:07 · 113 阅读 · 0 评论 -
深入理解 Java中的 流 (Stream)
最近在看《Hadoop:The Definitive Guide》,对其分布式文件系统HDFS的Streaming data access不能理解。基于流的数据读写,太抽象了,什么叫基于流,什么是流?Hadoop是Java语言写的,所以想理解好Hadoop的Streaming Data Access,还得从Java流机制入手。流机制也是JAVA及C++中的一个重要的机制,通过流使我们能够自由地操作转载 2017-12-29 10:44:14 · 159 阅读 · 0 评论 -
详解synchronized与Lock的区别与使用
技术点:1、线程与进程:在开始之前先把进程与线程进行区分一下,一个程序最少需要一个进程,而一个进程最少需要一个线程。关系是线程-->进程-->程序的大致组成结构。所以线程是程序执行流的最小单位,而进程是系统进行资源分配和调度的一个独立单位。以下我们所有讨论的都是建立在线程基础之上。122、Thread的几个重要方法:我们先了解一下Thread的几个重要方法。a、start转载 2017-12-30 09:05:28 · 167 阅读 · 0 评论 -
Java 7中的Try-with-resources
利用Try-Catch-Finally管理资源(旧的代码风格)在java7以前,程序中使用的资源需要被明确地关闭,这个体验有点繁琐。下面的方法读取文件,然后用System.out打印:01private static void printFile() throws IOException {02转载 2017-12-30 10:11:24 · 116 阅读 · 0 评论 -
forward和redirect的区别
1.从地址栏显示来说 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.2.从数据共享来说 forward:转发页面和转载 2017-12-30 11:37:09 · 175 阅读 · 0 评论 -
Volatile原理
Java语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值。 在访问volatile变量时转载 2017-11-29 16:18:25 · 329 阅读 · 0 评论 -
wait和sleep区别
共同点: 1. 他们都是在多线程的环境下,都可以在程序的调用处阻塞指定的毫秒数,并返回。 2. wait()和sleep()都可以通过interrupt()方法 打断线程的暂停状态 ,从而使线程立刻抛出InterruptedException。 如果线程A希望立即结束线程B,则可以对线程B对应的Thread实例调用interrupt方法。如果此刻线程B正在wait/sleep /转载 2017-12-18 09:28:01 · 190 阅读 · 0 评论 -
Java多线程编程:Callable、Future和FutureTask浅析
Java多线程:Callable、Future和FutureTask浅析(多线程编程之四)通过前面几篇的学习,我们知道创建线程的方式有两种,一种是实现Runnable接口,另一种是继承Thread,但是这两种方式都有个缺点,那就是在任务执行完成之后无法获取返回结果,那如果我们想要获取返回结果该如何实现呢?还记上一篇Executor框架结构中提到的Callable接口和Future接转载 2017-11-30 11:13:59 · 167 阅读 · 0 评论 -
后端必须了解的密码学技术
对称加密与非对称加密按照密钥的使用形式,加密算法可以分为对称加密和非对称加密(又叫公钥加密)。对称加密在加密和解密的过程中,使用相同的秘钥;而非对称加密在加密过程中使用公钥进行加密,解密使用私钥。对称加密的加密和解密需要使用相同的密钥,所以需要解决密钥配送问题。非对称加密的处理速度远低于对称密钥密钥:一个加密算法中,输入为明文和密转载 2017-12-10 09:28:20 · 379 阅读 · 0 评论 -
三十分钟学会AWK
本文大部分内容翻译自我开始学习AWK时看到的一篇英文文章 AWK Tutorial ,觉得对AWK入门非常有帮助,所以对其进行了粗略的翻译,并对其中部分内容进行了删减或者补充,希望能为对AWK感兴趣的小伙伴提供一份快速入门的教程,帮助小伙伴们快速掌握AWK的基本使用方式,当然,我也是刚开始学习AWK,本文在翻译或者补充的过程中肯定会有很多疏漏或者错误,希望大家能够帮忙指正。概述AW转载 2017-12-02 11:22:46 · 4582 阅读 · 0 评论 -
java 中几种常用数据结构
java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),而程序中最终使用的数据结构是继承自这些接口的数据结构类。其主要的关系(继承关系)有: (----详细参见java api文档!)Collection---->Collections转载 2017-11-23 10:54:17 · 170 阅读 · 0 评论 -
缓存穿透与缓存雪崩
缓存穿透什么是缓存穿透?一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就应该去后端系统查找(比如DB)。如果key对应的value是一定不存在的,并且对该key并发请求量很大,就会对后端系统造成很大的压力。这就叫做缓存穿透。 如何避免?1:对查询结果为空的情况也进行缓存,缓存时间设置短一点,或者该key对应的数据insert了之后清理转载 2017-12-02 16:35:17 · 122 阅读 · 0 评论 -
JVM client模式和Server模式的区别
这里向大家描述一下JVM client模式和Server模式两者的区别和联系,JVM如果不显式指定是-Server模式还是-client模式,JVM能够根据下列原则进行自动判断(适用于Java5版本或者Java以上版本)。JVM client模式和Server模式JVM Server模式与client模式启动,最主要的差别在于:-Server模式启动时,速度较慢,但是一旦运行起来后转载 2017-11-24 11:26:44 · 284 阅读 · 0 评论 -
JDK中tools.jar、dt.jar和rt.jar的作用
1、 tools.jar 位于{Java_Home}\lib下; 是系统用来编译一个类的时候用到的,即执行javac的时候用到 javac XXX.java实际上就是运行java -Calsspath=%JAVA_HOME%\lib\tools.jar xx.xxx.Main XXX.java javac就是对上面命令的封装 所以t转载 2017-11-24 15:39:02 · 4023 阅读 · 0 评论 -
四层和七层负载均衡的区别
负载均衡设备也常被称为"四到七层交换机",那么四层和七层两者到底区别在哪里?第一,技术原理上的区别。所谓四层负载均衡,也就是主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器。以常见的TCP为例,负载均衡设备在接收到第一个来自客户端的SYN 请求时,即通过上述方式选择一个最佳的服务器,并对报文中目标IP地址进行修改(改为后端服务转载 2017-12-16 22:48:06 · 192 阅读 · 0 评论 -
Maven依赖中的scope详解
compile默认就是compile,什么都不配置也就是意味着compile。compile表示被依赖项目需要参与当前项目的编译,当然后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去。testscope为test表示依赖项目仅仅参与测试相关的工作,包括测试代码的编译,执行。比较典型的如junit。runntimerunntime转载 2017-12-31 09:46:48 · 130 阅读 · 0 评论 -
WebSocket
WebSocket类似HTTP 协议,是为了弥补HTTP 协议的缺陷:通信只能由客户端发起,HTTP 协议做不到服务器主动向客户端推送信息。WebSocket 协议在2008年诞生,2011年成为国际标准。所有浏览器都已经支持了。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。 ...转载 2018-11-19 14:32:19 · 140 阅读 · 0 评论