- 博客(84)
- 资源 (4)
- 收藏
- 关注
转载 CentOS7使用firewalld打开关闭防火墙与端口
转自:https://www.cnblogs.com/moxiaoan/p/5683743.html1、firewalld的基本使用启动: systemctl start firewalld关闭: systemctl stop firewalld查看状态: systemctl status firewalld开机禁用 : systemctl disable firewalld开机启用...
2018-10-18 21:58:28
392
转载 Java 多线程分段下载原理分析和实现
多线程下载介绍 多线程下载技术是很常见的一种下载方案,这种方式充分利用了多线程的优势,在同一时间段内通过多个线程发起下载请求,将需要下载的数据分割成多个部分,每一个线程只负责下载其中一个部分,然后将下载后的数据组装成完整的数据文件,这样便大大加快了下载效率。常见的下载器,迅雷,QQ旋风等都采用了这种技术。实现方案原理很清楚,但是其中涉及到两个关键问题:需要请求的数据如何分段。 分段下载的数据如何
2017-07-14 13:27:32
6444
8
原创 三、Java内存模型---重排序和顺序一致性
3.2 重排序 重排序是指编译器和处理器为了优化程序性能而对指令序列进行重新排序的一种手段。 3.2.1 数据依赖性 如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间 就存在数据依赖性。数据依赖分为下列3种类型,如表3-4所示。 上面3种情况,只要重排序两个操作的执行顺序,程序的执行结果就会被改变。 前面提到过,编译器和处理器可能会对操作做重排序。编译
2017-06-15 14:12:31
1342
原创 三、Java内存模型---Java内存模型的基础
3.1 Java内存模型的基础 3.1.1 并发编程模型的两个关键问题 并发编程中,有两大关键问题:线程之间如何通信和线程之间如何同步。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。 在共享内存的并发模型里,线程之间共享程序的公共状态,通过写-读内存中的公共状态 进行隐式通信。 在消息传递的并发模型里,线程之间没有公共状态,线程之间必须
2017-06-15 13:31:24
455
原创 二、Java并发机制的底层实现原理
Java代码编译后变成java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,java中所使用的并发机制依赖于JVM的实现和CPU的执行。2.1 volatile的应用 在多线程并发编程中,synchronized和volatile都扮演重要的角色,volatile是轻量级的synchronized,它在多处理器开发中保证共享变量的“可见性”。可见
2017-06-07 14:45:20
833
1
原创 一、并发编程的挑战
Java并发编程的目的是为了让程序运行的更快,但不是启动更多的线程就能让程序最大限度的执行,因为在并发编程中,启动更多的线程,会面临上下文切换、死锁、以及所使用的软件和硬件的资源限制等问题。 1.1上下文切换 单核处理器下,多线程执行代码,cpu给每个线程分配cpu时间片来实现多线程,cpu不停地切换线程执行,让我们感觉多个线程是同时执行的。 Cpu通过时间片分配算法来循环执行任务,当任务A执
2017-06-07 11:26:52
325
原创 Java三种移位运算符
java中有三种移位运算符1、<< : 左移运算符,value<< num,相当于value乘以2的num次方 方法:丢掉最高位移动的位数,最低移动的位数补0,若num大于value转为二进制后的最大位数n,则取模num%n例如:9 <<2 9—int类型,对应的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1001; 2—代表该数字高位(左侧)的两个零
2017-06-06 11:52:33
693
转载 Java HashMap的死循环
在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历过,本来觉得没什么好写的,因为Java的HashMap是非线程安全的,所以在并发下必然出现问题。但是,我发现近几年,很多人都经历过这个事(在网上查“HashMap Infinite Loop
2017-06-05 18:02:28
413
转载 Java并发编程:Thread类的使用
今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知识:线程的几种状态、上下文切换,然后接着介绍Thread类中的方法的具体使用。 以下是本文的目录大纲: 一.线程的状态 二.上下文切换 三.Thread类中的方法一.线程的状态 在正式学习Thread类中的具体方法之前,我们先来了解一下线程有哪些状态,这个将会有助于后面对Thread类中的方法的理解。 线程从创
2017-06-05 16:54:02
297
转载 LinkedHashMap源码剖析
前言:有网友建议分析下LinkedHashMap的源码,于是花了一晚上时间研究了下,分享出此文(这个系列的最后一篇博文了),希望大家相互学习。LinkedHashMap的源码理解起来也不难(当然,要建立在对HashMap源码有较好理解的基础上)。LinkedHashMap简介LinkedHashMap是HashMap的子类,与HashMap有着同样的存储结构,但它加入了一个双向链表的头结点,将所有p
2017-06-02 12:46:27
331
原创 简单选择排序 java实现
简单选择排序基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。代码实现如下public class SimpleSelectSort { public static void main(String[] args) { int[] arr={34,23,4,52,3
2017-06-01 10:48:23
679
原创 希尔排序 java实现
希尔排序属于插入排序的一种,也称为缩小增量法,是插入排序的一种改进版本,其基本思想是,先取一个小于n的整数i1作为第一个增量,所有距离为a的记录放在同一组,把数组的全部记录分成了a组子序列,再对各组子序列进行直接插入排序,然后,取第二个增量i2作为第二个增量,重复分组和排序,直到最后一个增量为1时,对所有元素进行直接插入排序。希尔排序是对直接插入排序算法的优化,实质上是一种分组插入排序算法。代码pa
2017-05-26 11:00:10
402
转载 HttpServletRequest常用的方法
1、假设客户端地址是: http://user.cbice.com/cbice/BoardAction.do?operation=doSearch&index=index&boardIndex=boardIndex 通过request对象得到客户端url方法如下: 1、request.getRequestURL:http://user.cbice.com/cbice/BoardAction.do—
2017-05-25 16:10:32
4451
转载 HTTP消息中header头部信息的讲解
HTTP消息中header头部信息的讲解 本文导读:HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和可选的消息体组成。HTTP的头域包括通用头,请求头,响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成 HTTP Request的Header信息 1、HTTP请求方式 如下表:G
2017-05-25 15:31:40
2433
原创 直接插入排序 java实现
直接插入排序的算法思路是: 基于给定的一个数组,初始时假设第一个记录自成一个有序序列,其余记录为无序序列。接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直至最后一个记录插入到有序序列中为止。package demo;public class InsertSort { public static void main(String[] args) {
2017-05-25 14:34:49
416
转载 request.getRequestURI()、getRequestURL()、getContextPath()、getServletPath()区别
request.getRequestURI() 、request.getRequestURL() 、request.getContextPath()、request.getServletPath()区别request.getRequestURI() /jqueryWeb/resources/request.jsp request.getRequestURL() http://localhost:8
2017-05-25 09:46:14
511
转载 几种常用的设计模式介绍
几种常用的设计模式介绍 1.设计模式的起源 最早提出“设计模式”概念的是建筑设计大师亚力山大Alexander。在1970年他的《建筑的永恒之道》里描述了投计模式的发现,因为它已经存在了千百年之久,而现代才被通过大量的研究而被发现。 在《建筑的永恒之道》里这样描述:模式是一条由三个部分组成的通用规则:它表示了一个特定环境、一类问题和一个解决方案之间的关系。每一个模式描述了一个不断重复发生的问题
2017-05-03 00:16:08
657
转载 单例模式的八种写法
单例模式是最常用到的设计模式之一,熟悉设计模式的朋友对单例模式都不会陌生。一般介绍单例模式的书籍都会提到 饿汉式 和 懒汉式 这两种实现方式。但是除了这两种方式,本文还会介绍其他几种实现单例的方式,让我们来一起看看吧。简介单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服
2017-05-02 23:58:18
317
转载 用Java对JSON字符串进行格式化输出
工作中进行http相关接口测试时经常会收到返回的json数据,因为没有格式化输入到控制台后看起来很不直观。早上写了一个小工具类,对这JSON串进行格式化输出,代替System.out.print/** * 格式化输入工具类 * * @author lizhgb * @date 2015-10-14 * @Modified 2017-04-28 * */public final c
2017-05-01 20:06:36
9493
2
转载 Java如何从HttpServletRequest中读取HTTP请求的body
注意:下面方法已验证通过。HTTP请求中的是字符串数据://字符串读取void charReader(HttpServletRequest request) {BufferedReader br = request.getReader();String str, wholeStr = "";while((str = br.readLine()) != null){wholeStr += str;
2017-05-01 12:38:53
2306
原创 linux配置网卡
1、首先查看linux网卡 执行 ifconfig2、编辑网卡配置 vi /etc/sysconfig/network-scripts/ifcfg-eth0 将BOOTPROTO从dhcp改为static 将ONBOOT从no改为yes 添加从BROADCAST到NETMASK,将网卡ip地址设置成和主机一个网段的。重启网络服务 service network restart 或
2017-04-26 17:43:34
661
转载 Linux下安装Tomcat服务器和部署Web应用
一、上传Tomcat服务器 二、安装Tomcat服务器 2.1、解压tomcat服务器压缩包 2.2、配置环境变量 tomcat服务器运行时是需要JDK支持的,所以必须配置好JDK用到的那些环境变量 编辑/etc下的profile文件,加上如下内容: 2.3、修改tomcat服务器的启动端口 修改将Tomcat服务器启动时使用的端
2017-04-26 17:20:36
371
转载 Linux下Tomcat的启动、关闭、杀死进程
打开终端 cd /Java/tomcat 执行 bin/startup.sh #启动tomcat bin/shutdown.sh #停止tomcat tail -f logs/catalina.out #看tomcat的控制台输出;看是否已经有tomcat在运行了 ps -ef |grep tomcat 如果有,用kill; kill -9 pid #pid 为相应的进程号例如 p
2017-04-26 16:57:54
434
转载 linux配置java环境变量(详细)
linux配置java环境变量(详细) 一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586.bin 这时会出现一段协议,连继敲回车,当询问是否同意的时候,输入yes,回车。之后会在当前目录下生成一个jdk1.6.0_14目录,你可以将它复制到 任何一个目录下。 二. 需要配置的环境
2017-04-26 16:54:46
557
转载 Java中类加载机制及反射
JVM 全称是Java Virtual Machine ,Java 虚拟机,也就是在计算机上再虚拟一个计算机,这和我们使用 VMWare 不一样,那个虚拟的东西你是可以看到的,这个JVM 你是看不到的,它存在内存中。我们知道计算机的基本构成是:运算器、控制器、存储器、输入和输出设备,那这个JVM 也是有这成套的元素,运算器是当然是交给硬件CPU 还处理了,只是为了适应“一次编译,随处运行”的情况,需
2017-04-25 14:13:12
451
转载 java中的synchronized(同步代码块和同步方法的区别)
问题的由来:看到这样一个面试题://下列两个方法有什么区别public synchronized void method1(){}public void method2(){ synchronized (obj){}}synchronized用于解决同步问题,当有多条线程同时访问共享数据时,如果不进行同步,就会发生错误,Java提供的解决方案是:只要将操作共享数据的语句在某一时段让一个线程执
2017-04-20 17:21:15
643
转载 java后台面试题
java后台开发面试题java基础JVM相关JUC并发相关Spring分布式相关算法数据结构设计模式数据库Redis缓存相关网络相关其他java基础Arrays.sort实现原理和Collection实现原理 foreach和while的区别(编译之后) 线程池的种类,区别和使用场景 分析线程池的实现原理和线程的调度过程 线程池如何调优 线程池的最大线程数目根
2017-04-06 11:37:54
6101
转载 sendredirect()和forward()的区别
sendRedirect() 和forward()的区别HttpServletResponse.sendRedirect与RequestDispatcher.forward方法都可以实现获取相应URL资源。sendRedirect实现请求重定向,forward实现的是请求转发。在web服务器内部的处理机制也是不一样的。1.跳转方式 运用forward方法只能重定向到同一个Web应用程序中的一个
2017-04-06 11:28:33
470
转载 Java线程:概念与原理
HashMap详讲HashMap详讲操作系统中线程和进程的概念Java中的线程Java线程创建与启动Java线程线程栈模型与线程的变量Java线程线程状态的转换Java线程线程的同步与锁Java线程线程的交互Java线程线程的调度-休眠Java线程线程的调度-优先级Java线程线程的调度-让步Java线程线程的调度-合并Java线程线程的调度-守护线程Java线程线程的同步
2017-03-29 21:10:42
4647
转载 spring的注入bean的几种方式
平常的Java开发中,程序员在某个类中需要依赖其它类的方法。 通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理。 Spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过Spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。 依赖注入的另一种说法是”控制反转”。通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员
2017-03-24 15:27:43
17667
1
原创 Java HashMap遍历的三种方式
public class TestHashMap { public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); for (int i = 0; i < 5; i++) { map.put(i + ""
2017-03-23 20:52:14
11327
4
转载 Java中反射的实现方式
所谓反射,是指在运行时状态中,获取类中的属性和方法,以及调用其中的方法的一种机制。这种机制的作用在于获取运行时才知道的类(Class)及其中的属性(Field)、方法(Method)以及调用其中的方法,也可以设置其中的属性值。 在Java中实现反射最重要的一步,也是第一步就是获取Class对象,得到Class对象后可以通过该对象调用相应的方法来获取该类中的属性、方法以及调用该类中的方法。 Jav
2017-03-23 20:13:53
587
原创 java集合框架
最近专门抽空看了一下java面试宝典的时候,又一次的看到了java集合之间的对比,感觉有必要进行一下整理,不然每次都要去重新翻阅。 首先看一下java集合框架图: 实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,长虚线边框的是抽象类,比如AbstractCollection,AbstractList,AbstractMap等,而短虚线边框的是接口,比如Coll
2017-03-20 13:04:13
307
原创 java I/O 输入输出流
最近观看了关于java 输入输出流的视频,在此做一下总结:1、在我们平常使用的window电脑中,编码格式是ANSI,如果创建一个文本文件设置为UTF-8格式,中文会造成乱码;2、将字符串转换为字节序列,利用的是默认的编码,一般是gbkString s="我是lyt";byte[] bytes=s.getBytes(); 3、把字节转换为int 以16进制表示:可以用方法Integer.toHe
2017-03-10 15:48:13
408
转载 Java泛型详解
转载请注明出处: http://blog.csdn.net/seu_calvin/article/details/522300321.为什么需要泛型泛型在Java中有很重要的地位,网上很多文章罗列各种理论,不便于理解,本篇将立足于代码介绍、总结了关于泛型的知识。 先看下面的代码:List list = new ArrayList(); list.add("CSDN_SEU_Calvin");
2017-03-07 22:21:30
411
原创 JSP九大内置对象及四个作用域
内置对象(又叫隐含对象,有9个内置对象):不需要预先声明就可以在脚本代码和表达式中随意使用1、out: javax.servlet.jsp.JspWriter类型,代表输出流的对象。作用域为page(页面执行期)2、request:javax.servlet.ServletRequest的子类型,此对象封装了由WEB浏览器或其它客户端生成地HTTP请求的细节(参数,属性,头标和数据)。作用域为req
2017-03-02 20:54:22
318
转载 java中==和“equals”的区别
平时在学Android和Java语言的时候,总是碰到“equals”和“==”这两个字符,老感觉差不多;其实还是有一些区别的,今天干脆把它们彻底弄清楚。一、java当中的数据类型和“==”的含义:基本数据类型(也称原始数据类型) :byte,short,char,int,long,float,double,boolean。它们之间的比较,应用双等号(==),比较的是它们的值。 复合数据类型(类):
2017-03-02 13:58:58
413
原创 Java中final和static的用法
1、 final 含义是最终的,可以用来修饰非抽象类、非抽象方法、和变量final修饰的类不能被继承,没有子类,final类中的方法默认是final的; final修饰的方法不能被子类的方法覆盖重写,但可以被继承; final修饰的成员变量表示常量,只能被赋值一次,赋值后不能再被改变; final修饰的形参只能读取,不能修改; private不能被子类方法覆盖,private类型的方法
2017-03-02 11:59:54
860
转载 hashcode和equals的作用
hashCode是用于查找使用的,而equals是用于比较两个对象的是否相等的。以下这段话是从别人帖子回复拷贝过来的:1.hashcode是用来查找的,如果你学过数据结构就应该知道,在查找和排序这一章有 例如内存中有这样的位置 0 1 2 3 4 5 6 7 而我有个类,这个类有个字段叫ID,我要把这个类存放在以上8个位置之一,如果不用hashcode而任意存放,那么当查找时就需
2017-02-08 14:16:16
452
原创 HashMap原理详讲
对于HashMap的学习我们需要注意的概念和问题有 1、什么是HashMap以及HashMap的构成 2、HashMap的基本存储原理以及存储内容的组成 3、HashMap的工作原理以及存取方法过程 4、HashMap中解决碰撞的方法 5、 equals()和hashCode()的应用,以及它们在HashMap中的重要性 6、 不可变对象的好处 6、 HashMap多线程的条件竞
2017-02-08 13:34:45
15052
linux 64位 tomcat压缩包
2017-05-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人