
java基础
73hulu
这个作者很懒,什么都没留下…
展开
-
多线程通信
使用wait/notify方法实现线程间的通信。(注意这两个方法都是object的类的方法,换句话说java为所有的对象都提供了这两个方法)1、wait和notify必须配合synchronized关键字使用2、wait方法释放锁,notufy方法不释放锁public class ListAdd2 { private volatile static List list = ne原创 2016-10-09 22:14:18 · 321 阅读 · 0 评论 -
java编程思想之控制执行流程
程序必须在执行过程中控制它的世界,并做出选择,在java中,我们使用执行控制语句来做出选择。流程开关true和false,所有条件语句都利用条件表达式的真或假来决定执行路径。注意,java中不允许我们使用数字作为布尔表达式来使用,但是这在C和C++里是允许的(在这里“非零”是真,“零”是假)if-elseif-else是控制程序流程最基本的形式,其中else是可选的,所以可以使用如下两原创 2017-03-07 22:41:07 · 597 阅读 · 0 评论 -
多线程系列(二)---多个线程多个锁
多个线程多个锁:多个线程,每个线程都可以拿到自己指定的锁,分别获得锁之后,执行synchronized方法体内容。关键字synchronized取得的锁都是对象锁,而不是把一段代码(方法)当做锁,哪个线程先执行synchronized关键字的方法,那个线程就持有该方法所属对象的锁(Lock),两个对象,线程获得的就是两个不同的锁,他们互不影响。有一种特殊情况则是相同的锁,即在静态方法上加s原创 2016-09-28 21:50:01 · 3541 阅读 · 1 评论 -
java基础之序列化
一、概念 序列化:将对象转化成字节码的过程; 反序列化:将字节码转化为对象的过程二、作用: 1、把对象的字节码永久存在硬盘中,进行持久化 2、在网络上传送对象的字节序列三、静态变量序列化 序列化保存的是对象的状态,静态对象属于类的状态,因此,序列化不保存静态变量四、序列化版本号 虚拟机是否允许反序列化,不仅取决于类路径和功能代码是否一致,一个非常重要的一点是两个原创 2018-01-26 16:20:48 · 241 阅读 · 0 评论 -
java基础-集合底层原理分析
java集合框架主要包括两种类型的集合容器:一、Collection存储一个元素的。它又包含三个子类型:List、Set、QueueList:可以存储重复的数据、有序的List常用的类是ArrayList和LinkedListArrayList是基于数组存储数据,其原理是当调用add()方法,先计算容器的大小,重新new一个新的数组大小,并将当前的数组所有元素复制到这个新的数组中,然后将最新的值放...原创 2018-01-19 22:43:15 · 13420 阅读 · 1 评论 -
java基础-IO流
一、概念流的概念: 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称,即数据在两设备间的传输称为流。二、流的分类: 流按照操作单位分为字节流和字符流。字符流处理的单元为 2 个字节的 Unicode 字符;字节流处理单元为 1 个字节。java内是用Unicode 编码存储字符。 unicode编码简而言之就是将每一个字符用16位2进制数标识。但是通常都用4位的16进制数标识。 uni...原创 2018-01-25 16:49:14 · 181 阅读 · 0 评论 -
死锁及处理方案
一、原因: 线程间互相等待资源,但是又不释放自己自身的资源,导致无穷无尽的等待,其结果是系统任务永远无法执行完成。例如过独木桥,A和B分别走在桥上,想通过独木桥,但是他们都希望对方先退出,两个人就一直处在等待状态。二、产生条件: 1、互斥条件:一个资源每次只能被一个进程使用。独木桥每次只能通过一个人。 2、请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。乙不退...原创 2018-03-07 15:05:48 · 258 阅读 · 0 评论 -
spring源码解析-加载XML文件
最近在阅读郝佳老师编写的《Spring源码深度解析》这本书,这本书的书的1-7章可以归纳为三大模块:xml文件的载入、bean的加载以及AOP模块。接下来我们从xml文件的载入开始讲解。一、流程图二、流程说明从上面的流程图可以很清晰的看清整个spring框架关于ioc读取配置文件的整个流程,下面我们进行详细说明,本来我们是以XmlBeanFactory为载体进行说明。XmlBeanFactory继...原创 2018-03-20 15:29:08 · 719 阅读 · 0 评论 -
java中spi机制解读
关于spi机制大部分人都很陌生,因为我们在开发过程中很少用到,但是实际上这个机制从我们接触java开始就跟我们如影随形。有些人认为使用java很简单,都是调用第三方依赖包,然后结合自己的业务逻辑就可以了,这个机制就是跟第三方有关。一、概念SPI 的全名为 Service Provider Interface,目的hi提供接口,让第三方(服务厂商或扩展框架开发者)提供自定义实现的服务功能。例如,JD...原创 2018-03-29 11:14:57 · 4737 阅读 · 0 评论 -
RabbitMQ简单了解
一、消息确认消息确认是为了让消息不丢失。当消费者在处理消息的时候突然服务器宕机,这个消息还没有处理完成,而RabbitMQ代理服务器又将该消息删除这样就会造成消息的丢失,但是我们又希望这个消息不能就这样丢失而是将这个消息重新推送给新的一个消费者,为了确保消息不会丢失,RabbitMQ支持消息确认。使用者将一个ack(nowledgement)发回给RabbitMQ,告诉它已经接收、处理了一个特定的...原创 2018-07-09 13:18:49 · 278 阅读 · 0 评论 -
keyTool详解
生成公私钥:Keytool 是一个Java 数据证书的管理工具 ,Keytool 将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里,包含两种数据: (1)密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密) (2)可信任的证书实体(trusted certificate...原创 2018-08-15 10:22:22 · 5399 阅读 · 0 评论 -
java编程思想之一切都是对象
一、创建新的数据类型:类类是由一组相同属性和行为对象的结合,定义了对象的属性和行为使用class关键字来定义一个新类如:class ATypeName(){/*class body goes here*/}二、类的组成1、一旦定义了一个类,就可以在类中定义两种类型的属性:字段和方法。字段可以是任意类型的对象,也可以是基本类型的一种。每一个对象都有其用来存储字段的空间,普通字段不原创 2017-03-06 15:14:18 · 644 阅读 · 0 评论 -
多线程系列(一)
1、线程安全的概念当多个线程同时访问同一个某一个类时,这个类始终能表现出正确的行为,那个整个类就是线程安全的。synchronized:可以在任意对象及方法上加锁,而加锁的这段代码称为“互斥区”或"临界区"执行之后得到结果并不是我们预期的,我们预期的结果应该是4、3、2、1、0。下面是我们加上锁如图所示,最终的结果是跟我们预期一样的,但是线程顺序跟我们源代码原创 2016-09-27 21:58:46 · 462 阅读 · 0 评论 -
多线程系列(三)---synchronized其他概念
java中synchronized同步块是可以重入的。这就意味着如果一个java线程得到一个对象的锁之后,那个这个线程可以进入同一个对象同步的另一个java代码块。情景一:public class Reentrant{ public synchronized outer(){ inner(); } public synchronized inn原创 2016-09-29 00:55:15 · 373 阅读 · 0 评论 -
HttpURLConnection模拟post请求
import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.InetSocketAddress;import java.net.Proxy;import ja原创 2016-10-25 14:54:11 · 829 阅读 · 0 评论 -
tomcat性能优化
由于linux的内核默认限制了最大打开文件数目是1024,因此此次并发数控制在900。Tomcat Connector三种运行模式(BIO, NIO, APR)的比较和优化Tomcat Connector的三种不同的运行模式性能相差很大,有人测试过的结果如下:这三种模式的不同之处如下:BIO:一个线程处理一个请求。缺点:并发量高时原创 2016-11-08 20:39:40 · 376 阅读 · 0 评论 -
Java Web中cookie和session详解
Java web中有两个非常重要的机制就是cookie机制和session机制,虽然很基础但是很有必要深入了解一下。 1、session和cookie的区别: Cookies是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的一种技术。Cookies是当你浏览某网站时,由Web服务器置于你硬盘上的一个非常小的文本文件,它可以记录你的用转载 2016-11-15 10:41:32 · 421 阅读 · 0 评论 -
[慢查优化]慎用MySQL子查询,尤其是看到DEPENDENT SUBQUERY标记时
写在前面的话:在慢查优化1和2里都反复强调过 explain 的重要性,但有时候肉眼看不出 explain 结果如何指导优化,这时候还需要有一些其他基础知识的佐助,甚至需要了解 MySQL 实现原理,如子查询慢查优化。看到 SQL 执行计划中 select_type 字段中出现“DEPENDENT SUBQUERY”时,要打起精神了!——MySQL 的子查询为什么有转载 2016-11-21 15:13:51 · 863 阅读 · 0 评论 -
mysql中or和in的效率问题
在网上一直看到的是or和in的效率没啥区别,一直也感觉是这样,前几天刚好在看《mysql数据库开发的36条军规》的文章,里面提到了or和in的效率问题,文中提到or的效率为O(n),而in的效率为O(logn), 当n越大的时候效率相差越明显。今天刚好有时间决定对心中的疑惑进行测试,下面是详细的测试过程。第一步,创建测试表,并生成测试数据,测试数据为1000万条记录。数据库版本为5.1.6转载 2016-11-21 14:56:24 · 455 阅读 · 0 评论 -
app 与服务器交互 token
1.产生原因app 应用需要访问服务器,此过程中涉及到身份认证和权限控制的问题,如何搭建 app 和服务器之间信任的桥梁?我们都知道,session、cookie 是作为浏览器里面的用户和服务器之间认证的一个方式,而app 和服务器之间的交流也是使用的 http 请求,很明显它们遇到的问题是差不多的,但是因为 app 和浏览器又不完全一样(浏览器可以存放 cookie),所以我们可以借鉴浏转载 2016-12-07 23:55:11 · 788 阅读 · 0 评论 -
Android客户端和服务端如何使用Token和Session
对于初学者来说,对Token和Session的使用难免会限于困境,开发过程中知道有这个东西,但却不知道为什么要用他?更不知道其原理,今天我就带大家一起分析分析这东西。 一、我们先解释一下他的含义: 1、Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,To转载 2016-12-07 23:56:12 · 2438 阅读 · 0 评论 -
学习Token
Token是什么?Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。Token的引入——Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否转载 2016-12-07 23:57:04 · 1902 阅读 · 0 评论 -
四种常见的 POST 提交数据方式
HTTP/1.1 协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据,本文主要讨论 POST 提交数据的几种方式。我们知道,HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为三个部分:状态行、请求头、消息主转载 2017-02-13 10:19:11 · 293 阅读 · 0 评论 -
设计模式
设计模式: 软件设计模式是一种通用的、可重用的解决方案,用于解决软件设计中给定上下文中常见的问题。它不是可以直接转换成源代码或机器代码的已完成设计。 它是一种描述或模板,用于描述如何解决可以在许多不同情况下使用的问题。 面向对象的设计模式通常显示类或对象之间的关系和交互,而不指定涉及的最终应用程序类或对象 目的: 以设计灵活且可重用的面向对象软件,即更易于...原创 2018-08-16 17:46:38 · 174 阅读 · 0 评论