- 博客(27)
- 资源 (7)
- 问答 (1)
- 收藏
- 关注
转载 会话技术及用户认证-Cookie、Session与 Token
前言最早互联网只是用于简单的浏览文档信息、查看黄页及门户网站等等,并没有交互这个说法。但是随着互联网慢慢发展,宽带、服务器等硬件设施得到了很大的提示,互联网允许人们可以做更多的事情,所以交互式Web逐渐兴起,而HTTP无状态的特点却严重阻碍了其发展。HTTP 是无状态的协议,每个请求都是完全独立的(对于事务处理没有记忆能力,每次客户端和服务端会话完成时,服务端不会保存任何会话信息)。也就是说,无法根据之前的状态进行本次的请求处理——服务端无法确认当前访问者的身份信息,无法分辨上一次的请求发送者和这一次
2021-04-03 16:03:30 505
原创 线程相关
Thread.currentThread():currentThread()是Thread类的静态方法,该方法总是返回当前正在执行的线程对象(表示当前代码段正在被哪个线程调用) getName():该方法是Thread类的实例方法,返回调用该方法的线程名字通过继承Thread类来获得当前对象比较简单,直接使用this就可以了;而通过实现Runnable接口来获得当前对象,则必须使用Thread...
2019-11-29 19:31:20 140
原创 Eclipse中的Spring开发环境搭建
一、首先,查看自己的Eclipse版本,选择help->About Eclipse二、目前spring官网(http://spring.io/tools/sts/all)上可下载的spring插件只有:springsource-tool-suite-3.8.4(sts-3.8.4)。但这只针对指定的eclipse版本适用。如何为自己的eclipse下载历史版本的sts呢?拼下载的ur...
2019-10-28 09:33:26 1237
转载 Java 四种线程池的使用
1,线程池的作用线程池作用就是限制系统中执行线程的数量。根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果。少了浪费了系统资源,多了造成系统拥挤效率不高。用线程池控制线程数量,其他线程排 队等候。一个任务执行完毕,再从队列的中取最前面的任务开始执行。若队列中没有等待进程,线程池的这一资源处于等待。当一个新任务需要运行时,如果线程池 中有等待的工作线程,就...
2019-09-27 00:20:23 136
转载 ThreadPoolExecutor线程池的分析和使用
1. 引言系统启动一个新线程的成本是比较高的,因为它设计与操作系统交互,在这种情形下,使用线程池可以很好地提高性能,尤其是当程序中需要创建大量生存期很短暂的线程时,更应该考虑使用线程池。合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。|| java中所有的池化技术都有一个好处,就是通过复用池中的对象,降低系统资源消耗。设想一下...
2019-09-26 22:22:50 144
转载 深入理解JVM-内存模型(jmm)和GC
2. Java内存区域Java程序内存的分配是在JVM虚拟机内存分配机制下完成。Java内存模型(Java Memory Model ,JMM)就是一种符合内存模型规范的,屏蔽了各种硬件和操作系统的访问差异的,保证了Java程序在各种平台下对内存的访问都能保证效果一致的机制及规范。简要言之,jmm是jvm的一种规范,定义了jvm的内存模型。它屏蔽了各种硬件和操作系统的访问差异,不像c...
2019-09-26 19:28:49 235
转载 java中的锁
基础知识之:java线程阻塞的代价java的线程是映射到操作系统原生线程之上的,如果要阻塞或唤醒一个线程就需要操作系统介入,需要在户态与核心态之间切换,这种切换会消耗大量的系统资源,因为用户态与内核态都有各自专用的内存空间,专用的寄存器等,用户态切换至内核态需要传递给许多变量、参数给内核,内核也需要保护好用户态在切换时的一些寄存器值、变量等,以便内核态调用结束后切换回用户态继续工作。如果线...
2019-09-26 16:41:08 98
转载 java多线程之单例模式和其DCL问题
首先介绍一下单例模式: 单例模式(Singleton),也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方...
2019-09-25 22:45:14 205
转载 volatile关键字
一、原子性、有序性、可见性1、原子性:原子是世界上的最小单位,具有不可分割性。比如 a=0;(a非long和double类型) 这个操作是不可分割的,那么我们说这个操作时原子操作。再比如:a++; 这个操作实际是a = a + 1;是可分割的,所以他不是一个原子操作。非原子操作都会存在线程安全问题,需要我们使用同步技术(sychronized)来让它变成一个原子操作。一个操作是原子操作,那...
2019-09-25 20:39:38 96
转载 java线程安全
什么是线程安全?《Java Concurrency In Practice》作者Brian Goetz对“线程安全”有一个比较恰当的定义:当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安全的。首先从内存模型来了解一下什么是多线程的安全...
2019-09-25 20:21:20 106
转载 JAVA线程中sleep()和wait()方法
JAVA线程sleep和wait方法区别一sleep 是线程类(Thread)的方法,是个native方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复,调用sleep 不会释放对象锁。由于没有释放对象锁,所以不能调用里面的同步方法。sleep()使当前线程进入停滞状态(阻塞当前线程),让出CUP的使用、目的是不让当前线程独自霸占该进程所获的...
2019-09-25 19:42:42 374
转载 Java JVM内存结构
jvm的内存结构jvm的内存结构如图所示1.程序计数器程序计数器是一块较小的内存空间,它可以看做是当前线程执行的字节码写的行号指示器。他是线程私有的,按照我的理解就是,它相当于马路上的路标,当程序执行的时候,他会获取相应的指令,让代码运行下去,程序计数器是java虚拟机中唯一没有 OutOfMemoryError情况的区域2.Java虚拟机栈Java虚拟机栈和程序计数器一样是线程...
2019-09-25 17:57:40 83
转载 并发三大性质总结:原子性,有序性,可见性
1. 三大性质简介在并发编程中分析线程安全的问题时往往需要切入点,那就是两大核心:JMM抽象内存模型以及happens-before规则(在这篇文章中已经经过了),三条性质:原子性,有序性和可见性。关于synchronized和volatile已经讨论过了,就想着将并发编程中这两大神器在原子性,有序性和可见性上做一个比较,当然这也是面试中的高频考点,值得注意。2. 原子性原子性是指一...
2019-09-24 20:48:20 288
原创 List集合
List集合代表一个元素有序、可重复的集合,集合中的每个元素都有其对应的顺序索引。List集合允许使用重复元素,可以通过索引来访问指定位置的集合元素。List集合默认按元素的添加顺序设置元素的索引。由于List是有序集合,因此List集合中增加了一些根据索引来操作集合元素的方法。void add(int index, Object element):将元素element插入到List集合的in...
2019-09-23 15:30:34 619
转载 HashMap、Hashtable、ConcurrentHashMap的原理与区别
HashTable底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化 初始size为11,扩容:newsize = olesize*2+1 计算index的方法:index = (hash & 0x7FFFFFFF) % tab.lengthHa...
2019-09-23 15:29:06 144
原创 Java8中增强的工具类:Arrays
Java8提供的Arrays类里包含的一些static修饰的方法可以直接操作数组,这个Arrays类里包含了如下几个static修饰的方法int binarySearch(type[] a, type key):使用二分法查询key元素值在a数组中出现的索引;如果a数组不包含key元素值,则返回负数。调用该方法时要求数组中元素已经按升序排列,这样才能得到正确结果。 int binarySea...
2019-09-23 11:38:34 143
原创 抽象类与接口
抽象方法和抽象类 抽象方法和抽象类必须用abstract修饰符来定义,有抽象方法的类只能被定义成抽象类,但抽象类里面可以没有抽象方法。抽象类必须用abstract修饰符来修饰,抽象方法也必须用abstract修饰符来修饰,抽象方法不能有方法体 抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类的实例。即使抽象类里不包含抽象方法,这个抽象类也不能创建实例...
2019-09-23 11:38:07 80
转载 ReentrantLock和synchronized
一、synchronized和lock的用法区别synchronized:在需要同步的对象中加入此控制,synchronized可以加在方法上,也可以加在特定代码块中,括号中表示需要锁的对象。lock:需要显示指定起始位置和终止位置。一般使用ReentrantLock类做为锁,多个线程中必须要使用一个ReentrantLock类做为对象才能保证锁的生效。且在加锁和解锁处需要通过lock...
2019-09-16 17:27:33 255
转载 并发编程—CAS(Compare And Swap)
锁(lock)的代价锁是用来做并发最简单的方式,其代价也是最高的,Java在JDK1.5之前都是靠synchronized关键字来加锁。但是加锁机制会有如下几个问题:加锁、释放锁会需要操作系统进行上下文切换和调度延时,在上下文切换的时候,cpu之前缓存的指令和数据都将失效,这个过程将增加系统开销。(操作系统对多线程的锁进行判断就像两姐妹在为一个玩具在争吵,然后操作系统就是能决定他们谁能拿到...
2019-09-16 10:49:55 126
翻译 方法重载与方法重写
Java类允许同一个类中定义多个同名方法,只要形参列表不同就行。如果一个类中包含了两个或两个以上的方法名相同,但形参列表不同,则被称为方法重载。 方法重载的要求就是两同一不同:同一个类中方法名相同,形参列表不同。至于方法的其他部分,如方法返回值类型、修饰符等,与方法重载没有任何关系。 子类包含父类同名方法的现象被称为方法重写(Override),也被称为方法覆盖。...
2019-08-23 10:13:20 120
转载 操作集合的工具类:Collections
Java提供了一个操作Set、List和Map等集合的工具类:Collections,该工具类里提供了大量的方法对集合元素进行排序、查询和修改等操作,还提供了将集合对象设置为不可变、对集合对象实现同步控制等方法。Collections提供了如下常用的类方法用于对List集合元素进行排序。void reverse(List list):反转指定List集合中元素的顺序 void shuff...
2019-06-25 14:56:05 89
翻译 Java8增强的Map集合
Map用于保存具有映射关系的数据,因为Map集合中保存着两组值,一组值用于保存Map里的key,另外一组值用于保存Map里的value,key和value都可以是任何引用类型的数据。Map里的key不允许重复,即同一个Map对象的任何两个key通过equals方法比较总是返回false。key和value之间存在单向一对一关系,即通过指定的key,总能找到唯一的、指定的value。从Map中取出数...
2019-06-25 14:52:32 125
翻译 Java集合
Java集合大致可分为Set、List、Queue、Map四种体系,其中Set代表无序、不可重复的集合;List代表有序、可重复的集合;Map代表具有映射关系的集合;Java5新增了Queue体系集合,代表一种队列集合实现。Java集合就像一种容器,可以把多个对象(实际上是对象的引用)“丢进”该容器中。在Java 5之前,Java集合会丢失容器中所有对象的数据类型,把所有对象都当成Object...
2019-06-17 17:10:39 124
翻译 Java中的String、StringBuffer、StringBuilder类
String是不可变类,一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。StringBuffer对象则代表一个字符序列可变的字符串,当一个StringBuffer被创建以后,通过StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变这个字符串对象的字符序列...
2019-06-14 15:56:46 83
转载 常用的Dos命令
dir:列出当前目录下的文件以及文件夹md:创建目录rd:删除目录cd:进入指定目录 (若要进入某盘如D盘,直接输入“d:”即可)cd..:退回到上一级目录cd\:退回到根目录del:删除文件exit:退出Dos命令行echo 内容 > 文件名:写入内容到指定文件...
2019-03-04 19:45:48 218
原创 Python数据类型常用方法
数字 int - int a=“123” b=int(a) 将字符串转化为数字 num = “0011” v = int(num, base = …) base指定转换进制...
2018-09-11 15:19:38 200
转载 PyCharm快捷操作
1、编辑(Editing)Ctrl + Space 基本的代码完成(类、方法、属性)Ctrl + Alt + Space 快速导入任意类Ctrl + Shift + Enter 语句完成Ctrl + P 参数信息(在方法中调用参数)Ctrl + Q 快速查看文档Shift + F1 外部文档Ctrl + 鼠标 简介Ctrl + F1 显示错误描述或警告信息Alt + Inser...
2018-09-11 09:11:13 122
设计模式.rar
2019-08-28
VS中搭建OpenGL
2018-04-25
用FFT实现快速卷积 包含中间过程的图形描述
2018-04-25
序列的谱分析及特性
2018-04-25
三维模型文件中的OBJ格式在OpenGL中的输入与处理
2018-04-18
OpenGL绘图颜色设置无效(MFC环境下)
2020-01-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人