摘要:
request.getParameter(“xxx”)的参数的取值的几种可能: 1. Html中form表单中标签的name属性: <form name="form" method="post" action="checkUser"> 请输入用户姓名:<input type="text" name= 阅读全文
随笔档案-2019年01月
Request的getParameter和getAttribute方法的区别
2019-01-07 21:08 by GarfieldEr007, 243 阅读, 收藏, 编辑
摘要:
HttpServletRequest.getParameter("modelName"); 能取到想要的modelObject吗?经过测试之后,发现是不能的。后来想想,其他道理挺简单的,当两个Web组件之间为转发关系时,转发源会将要共享 request范围内的数据先用setAttribute将数据放 阅读全文
request.getParameter() 和request.getAttribute() 区别
2019-01-07 21:07 by GarfieldEr007, 275 阅读, 收藏, 编辑
摘要:
getParameter 是用来接受用post个get方法传递过来的参数的.getAttribute 必须先setAttribute.(1)request.getParameter() 取得是通过容器的实现来取得通过类似post,get等方式传入的数据,request.setAttribute()和 阅读全文
request.getParameter();的意思
2019-01-07 21:06 by GarfieldEr007, 28403 阅读, 收藏, 编辑
摘要:
对于httprequrest的request.getParameter()的作用,之前我只是在用它而不知道它到底有什么作用,今天看了一遍文章突然明白了其中的意思。 大致的内容如下: <form action="xxxxxxx.do" ><input name="name" value="哈哈"/>< 阅读全文
Java并发编程:线程池的使用
2019-01-06 23:07 by GarfieldEr007, 196 阅读, 收藏, 编辑
摘要:
在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务 阅读全文
Java并发(理论知识)—— 线程安全性
2019-01-06 23:06 by GarfieldEr007, 283 阅读, 收藏, 编辑
摘要:
1、什么是线程安全性 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些进程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。 在线程安全类中封装了必要的同步机制,因此客户端无需进一步采取同步错失。 2、原子性 要编写线程 阅读全文
java线程安全之并发Queue
2019-01-06 23:05 by GarfieldEr007, 652 阅读, 收藏, 编辑
摘要:
关闭 关闭 原 java线程安全之并发Queue(十三) 2017年11月19日 23:40:23 小彬彬~ 阅读数:12092更多 所属专栏: 线程安全 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33524158/article/det 阅读全文
一篇文章看懂Java并发和线程安全
2019-01-06 23:04 by GarfieldEr007, 390 阅读, 收藏, 编辑
摘要:
一、前言 长久以来,一直想剖析一下Java线程安全的本质,但是苦于有些微观的点想不明白,便搁置了下来,前段时间慢慢想明白了,便把所有的点串联起来,趁着思路清晰,整理成这样一篇文章。 二、导读 1、为什么有多线程? 2、线程安全描述的本质问题是什么? 3、Java内存模型(JMM)数据可见性问题、指令 阅读全文
java并发之如何解决线程安全问题
2019-01-06 23:03 by GarfieldEr007, 399 阅读, 收藏, 编辑
摘要:
并发(concurrency)一个并不陌生的词,简单来说,就是cpu在同一时刻执行多个任务。 而Java并发则由多线程实现的。 在jvm的世界里,线程就像不相干的平行空间,串行在虚拟机中。(当然这是比较笼统的说法,线程之间是可以交互的,他们也不一定是串行。) 多线程的存在就是压榨cpu,提高程序性能 阅读全文
Java并发/多线程系列——线程安全篇(1)
2019-01-06 23:01 by GarfieldEr007, 276 阅读, 收藏, 编辑
摘要:
创建和启动Java线程 Java线程是个对象,和其他任何的Java对象一样。线程是类的实例java.lang.Thread,或该类的子类的实例。除了对象之外,java线程还可以执行代码。 创建和启动线程 在Java中创建一个线程是这样完成的: 要启动Java线程,您将调用其start()方法,如下所 阅读全文
当面试官问线程池时,你应该知道些什么?
2019-01-06 22:56 by GarfieldEr007, 441 阅读, 收藏, 编辑
摘要:
Java面试中,线程池也算是一个高频的问题,其实就JDK源码来看线程池这一块的实现代码应该算是写的清晰易懂的,通过这篇文章,我们就来盘点一下线程池的知识点。 本文基于JDK1.8源码进行分析 首先看下线程池构造函数: public ThreadPoolExecutor(int corePoolSiz 阅读全文
java 线程池 使用实例
2019-01-06 22:53 by GarfieldEr007, 10028 阅读, 收藏, 编辑
摘要:
在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务 阅读全文
多线程-Executors和Executor,线程池
2019-01-06 22:49 by GarfieldEr007, 335 阅读, 收藏, 编辑
摘要:
jdk1.5之前,所有的线程都是需要自己手动创建的,由jvm销毁,当请求过多的时候,频繁的创建和销毁线程是非常浪费资源的。jdk1.5为此做了优化,提供了 java.util.concurrent 包,该包下有个 Executor 接口,官方解释为: 执行已提交的 Runnable 任务的对象。此接 阅读全文
从阿里Java开发手册学习线程池的正确创建方法
2019-01-06 22:48 by GarfieldEr007, 2804 阅读, 收藏, 编辑
摘要:
前言 最近看阿里的 Java开发手册,上面有线程池的一个建议: 【强制】线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。 结合最近面试的经历,发现这条建议还是十分有用的,因为自 阅读全文
什么时候使用CountDownLatch
2019-01-05 19:16 by GarfieldEr007, 271 阅读, 收藏, 编辑
摘要:
本文由 ImportNew - 张涛 翻译自 howtodoinjava。欢迎加入翻译小组。转载请见文末要求。 正如每个Java文档所描述的那样,CountDownLatch是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。在Java并发中,countdownlatc 阅读全文
CountDownLatch使用场景及分析
2019-01-05 19:08 by GarfieldEr007, 360 阅读, 收藏, 编辑
摘要:
JDk1.5提供了一个非常有用的包,Concurrent包,这个包主要用来操作一些并发操作,提供一些并发类,可以方便在项目当中傻瓜式应用。 JDK1.5以前,使用并发操作,都是通过Thread,Runnable来操作多线程;但是在JDK1.5之后,提供了非常方便的线程池(ThreadExecutor 阅读全文
Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore
2019-01-05 19:07 by GarfieldEr007, 139 阅读, 收藏, 编辑
摘要:
原文出处: 海子 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。 以下是本文目录大纲: 一.CountDownLatch用法 二.CyclicBarri 阅读全文
浅谈volatile与automicInteger
2019-01-05 19:00 by GarfieldEr007, 1588 阅读, 收藏, 编辑
摘要:
在并发环境中有三个因素需要慎重考量,原子性、可见性、有序性。 voatile 保证了有序性(防止指令冲排序)和变量的内存可见性(每次都强制取主存数据),每次取到volatile变量一定是最新的 volatile主要用于解决可见性,它修饰变量,相当于对当前语句前后加上了“内存栅栏”。使当前代码之前的代 阅读全文
AtomicInteger类和int原生类型自增鲜明的对比
2019-01-05 18:57 by GarfieldEr007, 377 阅读, 收藏, 编辑
摘要:
AtomicInteger这个类的存在是为了满足在高并发的情况下,原生的整形数值自增线程不安全的问题。比如说 int i = 0 ; i++;12上面的写法是线程不安全的。 有的人可能会说了,可以使用synchronized关键字啊。 但是这里笔者要说的是,使用了synchronized去做同步的话 阅读全文
java中关于AtomicInteger的使用
2019-01-05 18:53 by GarfieldEr007, 230 阅读, 收藏, 编辑
摘要:
在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。咳哟参考我之前写的一篇博客http://www.cnblogs.com/sharkli/p/5597148.html,今天 阅读全文
【Java并发】JUC—ReentrantReadWriteLock有坑,小心读锁!
2019-01-05 13:22 by GarfieldEr007, 517 阅读, 收藏, 编辑
摘要:
好长一段时间前,某些场景需要JUC的读写锁,但在某个时刻内读写线程都报超时预警(长时间无响应),看起来像是锁竞争过程中出现死锁(我猜)。经过排查项目并没有能造成死锁的可疑之处,因为业务代码并不复杂(仅仅是一个计算过程),经几番折腾,把注意力转移到JDK源码,正文详细说下ReentrantReadWr 阅读全文
深入理解读写锁ReentrantReadWriteLock
2019-01-05 13:19 by GarfieldEr007, 217 阅读, 收藏, 编辑
摘要:
1.读写锁的介绍 在并发场景中用于解决线程安全的问题,我们几乎会高频率的使用到独占式锁,通常使用java提供的关键字synchronized(关于synchronized可以看这篇文章)或者concurrents包中实现了Lock接口的ReentrantLock。它们都是独占式获取锁,也就是在同一时 阅读全文
可重入读写锁ReentrantReadWriteLock基本原理分析
2019-01-05 13:18 by GarfieldEr007, 315 阅读, 收藏, 编辑
摘要:
前言 本篇适用于了解ReentrantLock或ReentrantReadWriteLock的使用,但想要进一步了解原理的读者。见于之前的分析都是借鉴大量的JDK源码,这次以流程图的形式代替源码,希望读者能有更好的阅读体验。有兴趣了解源码的读者也可以借鉴本篇的分析成果做源码分析。 在《从源码分析Re 阅读全文
深入分析ReentrantLock公平锁和非公平锁的区别
2019-01-05 13:12 by GarfieldEr007, 344 阅读, 收藏, 编辑
摘要:
在ReentrantLock中包含了公平锁和非公平锁两种锁,通过查看源码可以看到这两种锁都是继承自Sync,而Sync又继承自AbstractQueuedSynchronizer,而AbstractQueuedSynchronizer又继承自AbstractOwnableSynchronizer,下 阅读全文
在 JDK 9 中更简洁使用 try-with-resources 语句
2019-01-02 21:56 by GarfieldEr007, 469 阅读, 收藏, 编辑
摘要:
本文详细介绍了自 JDK 7 引入的 try-with-resources 语句的原理和用法,以及介绍了 JDK 9 对 try-with-resources 的改进,使得用户可以更加方便、简洁的使用 try-with-resources 语句。 在 JDK 7 之前,资源需要手动关闭。 例如下面一 阅读全文
java try-with-resource语句使用
2019-01-02 21:55 by GarfieldEr007, 4426 阅读, 收藏, 编辑
摘要:
定义 JDK7之后,Java多了个新的语法:try-with-resources语句, 可以理解为是一个声明一个或多个资源的 try语句(用分号隔开), 一个资源作为一个对象,并且这个资源必须要在执行完关闭的, try-with-resources语句确保在语句执行完毕后,每个资源都被自动关闭 。 阅读全文
深入理解 Java try-with-resource 语法糖
2019-01-02 21:51 by GarfieldEr007, 827 阅读, 收藏, 编辑
摘要:
背景 众所周知,所有被打开的系统资源,比如流、文件或者Socket连接等,都需要被开发者手动关闭,否则随着程序的不断运行,资源泄露将会累积成重大的生产事故。 在Java的江湖中,存在着一种名为finally的功夫,它可以保证当你习武走火入魔之时,还可以做一些自救的操作。在远古时代,处理资源关闭的代码 阅读全文
什么时候用异常,什么时候用断言?
2019-01-02 21:47 by GarfieldEr007, 827 阅读, 收藏, 编辑
摘要:
assert用在那些你知道绝对不会发生的事情上,但是因为人总是会犯错误,保不准你写出来的东西跟你想的不一样。所以assert用来捕捉的是程序员自己的错误。 同理,exception捕捉的是用户或者环境的错误。 作者:晨池链接:https://www.zhihu.com/question/244619 阅读全文
Java断言绝对不是鸡肋
2019-01-02 21:45 by GarfieldEr007, 1165 阅读, 收藏, 编辑
摘要:
在防御式编程中经常会用断言(Assertion)对参数和环境做出判断,避免程序因不当的输入或错误的环境而产生逻辑异常,断言在很多语言中都存在,C、C++、Python 都有不同的断言表示形式。在Java 中的断言使用的是assert 关键字,其基本的用法如下: assert < 布尔表达式> ass 阅读全文
Java陷阱之assert关键字
2019-01-02 21:45 by GarfieldEr007, 399 阅读, 收藏, 编辑
摘要:
Java陷阱之assert关键字 一、概述 在C和C++语言中都有assert关键,表示断言。 在Java中,同样也有assert关键字,表示断言,用法和含义都差不多。 二、语法 在Java中,assert关键字是从JAVA SE 1.4 引入的,为了避免和老版本的Java代码中使用了assert关 阅读全文
Java 条件编译
2019-01-02 21:37 by GarfieldEr007, 578 阅读, 收藏, 编辑
摘要:
在C/C++中,使用#ifdef…#endif的代码,如果不满足条件,编译器是不会对这部分代码进行编译的。Java中并没有这种“条件编译”特性。这种特性在C语言里是用来解决代码的跨平台问题的,可以通过让代码的不同部分根据其运行的具体平台进行编译。由于Java本身就设计为一种跨平台的语言,因此这种特性 阅读全文
Java 语法糖详解
2019-01-01 17:28 by GarfieldEr007, 469 阅读, 收藏, 编辑
摘要:
语法糖 语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法。 这种语法对语言的功能并没有影响,但是更方便程序员使用。简而言之,语法糖让程序更加简洁,有更高的可读性。 有意思的是,在编程领域,除了语法 阅读全文
Java中有哪些语法糖?
2019-01-01 17:27 by GarfieldEr007, 463 阅读, 收藏, 编辑
摘要:
不要你写汇编,Java句句是糖 不能同意上面的这句话,要说为什么,首先要定义下面要讲的“语法糖”。 语法糖指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,并没有给语言添加什么新东西,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。语法糖_百度百 阅读全文
Java中部分常见语法糖
2019-01-01 17:25 by GarfieldEr007, 286 阅读, 收藏, 编辑
摘要:
语法糖(Syntactic Sugar),也称糖衣语法,指在计算机语言中添加的某种语法,这种语法对语言本身功能来说没有什么影响,只是为了方便程序员的开发,提高开发效率。说白了,语法糖就是对现有语法的一个封装。 参考:https://blog.csdn.net/danchu/article/detai 阅读全文
Java中的语法糖
2019-01-01 17:24 by GarfieldEr007, 197 阅读, 收藏, 编辑
摘要:
一、范型 1. C#和Java范型的区别 在C#中范型是切实存在的,List<int>和List<String>就是两种不同的类型,它们在系统运行期间生成,有自己的虚方法表和类型数据,这种实现称为类型膨胀,基于这种方法实现的范型称为真实范型。 Java语言中的范型则不一样,它只存在于源码中,在编译后 阅读全文
java中的字符编码方式
2019-01-01 17:15 by GarfieldEr007, 1577 阅读, 收藏, 编辑
摘要:
1. 问题由来 面试的时候被问到了各种编码方式的区别,结果一脸懵逼,这个地方集中学习一下。 2. 几种字符编码的方式 1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个 阅读全文