
Java基础
minipanda-luotj
这个作者很懒,什么都没留下…
展开
-
Java多线程(一)多线程基础
一、进程 进程是操作系统结构的基础;是一次程序的执行;是一个程序及其数据在处理机上顺序执行时所发生的活动。操作系统中,几乎所有运行中的任务对应一条进程(Process)。一个程序进入内存运行,即变成一个进程。进程是处于运行过程中的程序,并且具有一定独立功能。描述进程的有一句话非常经典——进程是系统进行资源分配和调度的一个独立单位。 进程是系统中独立存在的实体,拥有自己独立的资源,拥有自己...转载 2018-05-09 19:11:34 · 158 阅读 · 0 评论 -
java中文乱码解决之道(五)—–java是如何编码解码的
在上篇博客中LZ阐述了java各个渠道转码的过程,阐述了java在运行过程中那些步骤在进行转码,在这些转码过程中如果一处出现问题就很有可能会产生乱码!下面LZ就讲述java在转码过程中是如何来进行编码和解码操作的。编码&解码在上篇博客中LZ阐述了三个渠道的编码转换过程,下面LZ将结束java在那些场合需要进行编码和解码操作,并详序中间的过程,进一步掌握java的编码和解码过程。在java中...转载 2018-07-08 15:22:17 · 162 阅读 · 0 评论 -
java中文乱码解决之道(六)—–javaWeb中的编码解码
在上篇博客中LZ介绍了前面两种场景(IO、内存)中的java编码解码操作,其实在这两种场景中我们只需要在编码解码过程中设置正确的编码解码方式一般而言是不会出现乱码的。对于我们从事java开发的人而言,其实最容易也是产生乱码最多的地方就是web部分。首先我们来看在javaWeb中有哪些地方存在编码转换操作。编码&解码通过下图我们可以了解在javaWeb中有哪些地方有转码:用户想服务器发送一个...转载 2018-07-08 15:29:34 · 179 阅读 · 0 评论 -
java中文乱码解决之道(七)—–JSP页面编码过程
我们知道JSP页面是需要转换为servlet的,在转换过程中肯定是要进行编码的。在JSP转换为servlet过程中下面一段代码起到至关重要的作用。<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="GBK" %>在上面代码中有两个地方存在编码:pageEncoding、content...转载 2018-07-08 15:32:42 · 196 阅读 · 0 评论 -
java中文乱码解决之道(八)—–解决URL中文乱码问题
我们主要通过两种形式提交向服务器发送请求:URL、表单。而表单形式一般都不会出现乱码问题,乱码问题主要是在URL上面。通过前面几篇博客的介绍我们知道URL向服务器发送请求编码过程实在是实在太混乱了。不同的操作系统、不同的浏览器、不同的网页字符集,将导致完全不同的编码结果。如果程序员要把每一种结果都考虑进去,是不是太恐怖了?有没有办法,能够保证客户端只用一种编码方法向服务器发出请求?有!这里我主要提...转载 2018-07-08 15:38:55 · 265 阅读 · 0 评论 -
java乱码解决之道(九)—–总结
乱码,我们前台展示的杀手,可能有些朋友和我的经历一样:遇到乱码先按照自己的经验来解决,如果没有解决就google,运气好一搜就可以解决,运气不好可能够你折腾一番了。LZ之所以写这个系列博客就是因为遇到这个令人讨厌的问题,虽然是小问题但又不得不解决。在这个系列博文中LZ并没有阐述归纳乱码的方法,出现乱码的原因各式各样但根本原因就是编码转换过程中的格式不一样,所以我们只需要了解了java在运行过程中是...转载 2018-07-08 15:40:52 · 198 阅读 · 0 评论 -
ActiveMQ RabbitMQ RocketMQ KafKa对比
ActiveMQ和 RabbitMq 以及Kafka在之前的项目中都有陆续使用过,当然对于三者没有进行过具体的对比,以下摘抄了一些网上关于这三者的对比情况,我自己看过之后感觉还是可以的,比较清晰的反馈了这三个的具体情况已经使用场景,具体的对比如下:1)TPS比较:Kafka最高,RabbitMq 次之, ActiveMq 最差。2)吞吐量对比:kafka具有高的吞吐量,内部采用消息的批量处理,ze...转载 2018-07-02 19:54:52 · 4820 阅读 · 0 评论 -
java中文乱码解决之道(一)—–认识字符集
java编码中的中文问题是一个老生常谈的问题了,每次遇到中文乱码LZ要么是按照以前的经验修改,要么则是baidu.com来解决问题。阅读许多关于中文乱码的解决办法的博文后,发现对于该问题我们都(更加包括我自己)没有一个清晰明了的认识,于是LZ想通过这系列博文(估计只有几篇)来彻底分析、解决java中文乱码问题,如有错误之处望各位同仁指出!当然,此系列博文并非LZ完全原创,都是在前辈基础上总结,归纳...转载 2018-07-04 20:31:59 · 288 阅读 · 0 评论 -
java中文乱码解决之道(二)—–字符编码详解:基础知识 + ASCII + GB**
在上篇博文(java中文乱码解决之道(一)-----认识字符集)中,LZ简单介绍了主流的字符编码,对各种编码都是点到为止,以下LZ将详细阐述字符集、字符编码等基础知识和ASCII、GB的详情。一、基础知识在了解各种字符集之前我们需要了解一些最基础的知识,如:编码、字符、字符集、字符编码基础知识。编码计算机中存储的信息都是用二进制表示的,我们在屏幕上所看到文字、图片等都是通过二进制转换的结果。编码是...转载 2018-07-04 20:38:20 · 264 阅读 · 0 评论 -
java中文乱码解决之道(三)—–编码详情:伟大的创想—Unicode编码
随着计算机的发展、普及,世界各国为了适应本国的语言和字符都会自己设计一套自己的编码风格,正是由于这种乱,导致存在很多种编码方式,以至于同一个二进制数字可能会被解释成不同的符号。为了解决这种不兼容的问题,伟大的创想Unicode编码应时而生!!UnicodeUnicode又称为统一码、万国码、单一码,它是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码...转载 2018-07-04 20:45:00 · 335 阅读 · 1 评论 -
java中文乱码解决之道(四)—–java编码转换过程
前面三篇博客侧重介绍字符、编码问题,通过这三篇博客各位博友对各种字符编码有了一个初步的了解,要了解java的中文问题这是必须要了解的。但是了解这些仅仅只是一个开始,以下博客将侧重介绍java乱码是如何产生的、存在哪些乱码的情况、该如何从根本上解决乱码问题。各位随博主一起征服令人厌烦的java乱码问题吧!!!java编码转换过程我们总是用一个java类文件和用户进行最直接的交互(输入、输出),这些交...转载 2018-07-04 20:50:17 · 186 阅读 · 0 评论 -
java锁总结
之前做过一个测试,详情见这篇文章《多线程 +1操作的几种实现方式,及效率对比》,当时对这个测试结果很疑惑,反复执行过多次,发现结果是一样的: 1. 单线程下synchronized效率最高(当时感觉它的效率应该是最差才对); 2. AtomicInteger效率最不稳定,不同并发情况下表现不一样:短时间低并发下,效率比synchronized高,有时甚至比LongAdder还高出一点,但是...转载 2018-06-01 17:20:31 · 4733 阅读 · 1 评论 -
jdk各版本特性
对于很多刚接触java语言的初学者来说,要了解一门语言,最好的方式就是要能从基础的版本进行了解,升级的过程,以及升级的新特性,这样才能循序渐进的学好一门语言。JDK Version 1.1于1997-02-19发行.新特性包括:引入JDBC(Java DataBase Connectivity);支持内部类;引入Java Bean;引入RMI(Remote Method Invocation);引...翻译 2018-05-07 20:05:53 · 470 阅读 · 0 评论 -
Java并发编程:线程池的使用
在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 在Java中可以通过线程池来达到这样的效果。今...转载 2018-05-12 11:06:01 · 180 阅读 · 0 评论 -
Java多线程(二)——常用的实现多线程的两种方式
一、继承Thread类创建线程类 Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。每个线程的作用是完成一定的任务,实际上就是执行一段程序流即一段顺序执行的代码。Java使用线程执行体来代表这段程序流。Thread类的声明如下:public class Thread implements Runnable {}可以看到,Thread本身就实现了Runn...转载 2018-05-09 19:18:53 · 157 阅读 · 0 评论 -
Java多线程(三)—— synchronized关键字详解
一、多线程的同步1、为什么要引入同步机制在多线程环境中,可能会有两个甚至更多的线程试图同时访问一个有限的资源。必须对这种潜在资源冲突进行预防。解决方法:在线程使用一个资源时为其加锁即可。访问资源的第一个线程为其加上锁以后,其他线程便不能再使用那个资源,除非被解锁。2、程序实例用一个取钱的程序例子,来说明为什么需要引入同步。在使用同步机制前,整体程序如下:package com.demo;pub...转载 2018-05-09 20:26:37 · 135 阅读 · 0 评论 -
Java多线程(四)—— synchronized关键字续
1、synchronized原理在java中,每一个对象有且仅有一个同步锁。这也意味着,同步锁是依赖于对象而存在。当我们调用某对象的synchronized方法时,就获取了该对象的同步锁。例如,synchronized(obj)就获取了“obj这个对象”的同步锁。不同线程对同步锁的访问是互斥的。也就是说,某时间点,对象的同步锁只能被一个线程获取到!通过同步锁,我们就能在多线程中,实现对“对象/方法...转载 2018-05-10 18:54:20 · 134 阅读 · 0 评论 -
Java多线程(五)——线程等待与唤醒
一、wait()、notify()、notifyAll()等方法介绍 在Object.java中,定义了wait(), notify()和notifyAll()等接口。wait()的作用是让当前线程进入等待状态,同时,wait()也会让当前线程释放它所持有的锁。而notify()和notifyAll()的作用,则是唤醒当前对象上的等待线程;notify()是唤醒单个线程,而notifyAl...转载 2018-05-10 19:01:26 · 133 阅读 · 0 评论 -
Java多线程(六)——线程让步
一、yield()介绍 yield()的作用是让步。它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权;但是,并不能保证在当前线程调用yield()之后,其它具有相同优先级的线程就一定能获得执行权;也有可能是当前线程又进入到“运行状态”继续运行!二、yield()示例下面,通过示例查看它的用法。package com.demo.Thread;pu...转载 2018-05-10 19:05:12 · 194 阅读 · 0 评论 -
Java多线程(七)——线程休眠
一、sleep()介绍sleep() 定义在Thread.java中。sleep() 的作用是让当前线程休眠,即当前线程会从“运行状态”进入到“休眠(阻塞)状态”。sleep()会指定休眠时间,线程休眠的时间会大于/等于该休眠时间;在线程重新被唤醒时,它会由“阻塞状态”变成“就绪状态”,从而等待cpu的调度执行。二、sleep()示例下面通过一个简单示例演示sleep()的用法。package c...转载 2018-05-10 19:09:23 · 143 阅读 · 0 评论 -
Java多线程(八)——join()
一、join()介绍join() 定义在Thread.java中。join() 的作用:让“主线程”等待“子线程”结束之后才能继续运行。这句话可能有点晦涩,我们还是通过例子去理解:// 主线程public class Father extends Thread { public void run() { Son s = new Son(); s.start...转载 2018-05-10 19:12:18 · 183 阅读 · 0 评论 -
Java多线程(九)—— interrupt()和线程终止方式
一、interrupt() 说明interrupt()的作用是中断本线程。本线程中断自己是被允许的;其它线程调用本线程的interrupt()方法时,会通过checkAccess()检查权限。这有可能抛出SecurityException异常。如果本线程是处于阻塞状态:调用线程的wait(), wait(long)或wait(long, int)会让它进入等待(阻塞)状态,或者调用线程的join(...转载 2018-05-10 19:18:42 · 187 阅读 · 0 评论 -
Java多线程(十)——线程优先级和守护线程
一、线程优先级的介绍 java 中的线程优先级的范围是1~10,默认的优先级是5。“高优先级线程”会优先于“低优先级线程”执行。 java 中有两种线程:用户线程和守护线程。可以通过isDaemon()方法来区别它们:如果返回false,则说明该线程是“用户线程”;否则就是“守护线程”。用户线程一般用于执行用户级任务,而守护线程也就是“后台线程”,一般用来执行后台任务。需要注意的是...转载 2018-05-10 19:27:02 · 188 阅读 · 0 评论 -
Java多线程之ReentrantLock与Condition
一、ReentrantLock1、ReentrantLock简介 ReentrantLock是一个可重入的互斥锁,又被称为“独占锁”。ReentrantLock 类实现了 Lock ,它拥有与 synchronized 相同的并发性和内存语义,但是添加了类似锁投票、定时锁等候和可中断锁等候的一些特性。此外,它还提供了在激烈争用情况下更佳的性能。(换句话说,当许多线程都想访问共享资源时,JV...转载 2018-05-12 10:01:02 · 195 阅读 · 0 评论 -
《Java编程思想》读书笔记1--感受
很厚的一本书,在大一末的时候导师推荐了这本书,在学校怀着完成学业的目的读完它。2016年,工作之后,发现真正写代码的时候,很多都是一知半解。比如,容器和泛型应该怎么用,并发该怎么写,异常该如何处理,IO的框架是怎么回事。不过,总算知道这些东西的存在。又花了半年的时间,第二遍。这次,带着问题有目的性地把相应的章节仔细地重读了一遍。工作中的问题得到顺利解决了,但是好奇心没有得到充分的满足,很多...原创 2018-09-10 18:39:48 · 674 阅读 · 0 评论