自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (7)
  • 问答 (1)
  • 收藏
  • 关注

转载 会话技术及用户认证-Cookie、Session与 Token

前言最早互联网只是用于简单的浏览文档信息、查看黄页及门户网站等等,并没有交互这个说法。但是随着互联网慢慢发展,宽带、服务器等硬件设施得到了很大的提示,互联网允许人们可以做更多的事情,所以交互式Web逐渐兴起,而HTTP无状态的特点却严重阻碍了其发展。HTTP 是无状态的协议,每个请求都是完全独立的(对于事务处理没有记忆能力,每次客户端和服务端会话完成时,服务端不会保存任何会话信息)。也就是说,无法根据之前的状态进行本次的请求处理——服务端无法确认当前访问者的身份信息,无法分辨上一次的请求发送者和这一次

2021-04-03 16:03:30 450

原创 线程相关

Thread.currentThread():currentThread()是Thread类的静态方法,该方法总是返回当前正在执行的线程对象(表示当前代码段正在被哪个线程调用) getName():该方法是Thread类的实例方法,返回调用该方法的线程名字通过继承Thread类来获得当前对象比较简单,直接使用this就可以了;而通过实现Runnable接口来获得当前对象,则必须使用Thread...

2019-11-29 19:31:20 106

原创 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 1216

转载 Java 四种线程池的使用

1,线程池的作用线程池作用就是限制系统中执行线程的数量。根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果。少了浪费了系统资源,多了造成系统拥挤效率不高。用线程池控制线程数量,其他线程排 队等候。一个任务执行完毕,再从队列的中取最前面的任务开始执行。若队列中没有等待进程,线程池的这一资源处于等待。当一个新任务需要运行时,如果线程池 中有等待的工作线程,就...

2019-09-27 00:20:23 123

转载 ThreadPoolExecutor线程池的分析和使用

1. 引言系统启动一个新线程的成本是比较高的,因为它设计与操作系统交互,在这种情形下,使用线程池可以很好地提高性能,尤其是当程序中需要创建大量生存期很短暂的线程时,更应该考虑使用线程池。合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。|| java中所有的池化技术都有一个好处,就是通过复用池中的对象,降低系统资源消耗。设想一下...

2019-09-26 22:22:50 115

转载 深入理解JVM-内存模型(jmm)和GC

2. Java内存区域Java程序内存的分配是在JVM虚拟机内存分配机制下完成。Java内存模型(Java Memory Model ,JMM)就是一种符合内存模型规范的,屏蔽了各种硬件和操作系统的访问差异的,保证了Java程序在各种平台下对内存的访问都能保证效果一致的机制及规范。简要言之,jmm是jvm的一种规范,定义了jvm的内存模型。它屏蔽了各种硬件和操作系统的访问差异,不像c...

2019-09-26 19:28:49 208

转载 java中的锁

基础知识之:java线程阻塞的代价java的线程是映射到操作系统原生线程之上的,如果要阻塞或唤醒一个线程就需要操作系统介入,需要在户态与核心态之间切换,这种切换会消耗大量的系统资源,因为用户态与内核态都有各自专用的内存空间,专用的寄存器等,用户态切换至内核态需要传递给许多变量、参数给内核,内核也需要保护好用户态在切换时的一些寄存器值、变量等,以便内核态调用结束后切换回用户态继续工作。如果线...

2019-09-26 16:41:08 89

转载 java多线程之单例模式和其DCL问题

首先介绍一下单例模式: 单例模式(Singleton),也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方...

2019-09-25 22:45:14 167

转载 volatile关键字

一、原子性、有序性、可见性1、原子性:原子是世界上的最小单位,具有不可分割性。比如 a=0;(a非long和double类型) 这个操作是不可分割的,那么我们说这个操作时原子操作。再比如:a++; 这个操作实际是a = a + 1;是可分割的,所以他不是一个原子操作。非原子操作都会存在线程安全问题,需要我们使用同步技术(sychronized)来让它变成一个原子操作。一个操作是原子操作,那...

2019-09-25 20:39:38 85

转载 java线程安全

什么是线程安全?《Java Concurrency In Practice》作者Brian Goetz对“线程安全”有一个比较恰当的定义:当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安全的。首先从内存模型来了解一下什么是多线程的安全...

2019-09-25 20:21:20 89

转载 JAVA线程中sleep()和wait()方法

JAVA线程sleep和wait方法区别一sleep 是线程类(Thread)的方法,是个native方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复,调用sleep 不会释放对象锁。由于没有释放对象锁,所以不能调用里面的同步方法。sleep()使当前线程进入停滞状态(阻塞当前线程),让出CUP的使用、目的是不让当前线程独自霸占该进程所获的...

2019-09-25 19:42:42 307

转载 Java JVM内存结构

jvm的内存结构jvm的内存结构如图所示1.程序计数器程序计数器是一块较小的内存空间,它可以看做是当前线程执行的字节码写的行号指示器。他是线程私有的,按照我的理解就是,它相当于马路上的路标,当程序执行的时候,他会获取相应的指令,让代码运行下去,程序计数器是java虚拟机中唯一没有 OutOfMemoryError情况的区域2.Java虚拟机栈Java虚拟机栈和程序计数器一样是线程...

2019-09-25 17:57:40 69

转载 并发三大性质总结:原子性,有序性,可见性

1. 三大性质简介在并发编程中分析线程安全的问题时往往需要切入点,那就是两大核心:JMM抽象内存模型以及happens-before规则(在这篇文章中已经经过了),三条性质:原子性,有序性和可见性。关于synchronized和volatile已经讨论过了,就想着将并发编程中这两大神器在原子性,有序性和可见性上做一个比较,当然这也是面试中的高频考点,值得注意。2. 原子性原子性是指一...

2019-09-24 20:48:20 268

原创 List集合

List集合代表一个元素有序、可重复的集合,集合中的每个元素都有其对应的顺序索引。List集合允许使用重复元素,可以通过索引来访问指定位置的集合元素。List集合默认按元素的添加顺序设置元素的索引。由于List是有序集合,因此List集合中增加了一些根据索引来操作集合元素的方法。void add(int index, Object element):将元素element插入到List集合的in...

2019-09-23 15:30:34 517

转载 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 106

原创 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 111

原创 抽象类与接口

抽象方法和抽象类 抽象方法和抽象类必须用abstract修饰符来定义,有抽象方法的类只能被定义成抽象类,但抽象类里面可以没有抽象方法。抽象类必须用abstract修饰符来修饰,抽象方法也必须用abstract修饰符来修饰,抽象方法不能有方法体 抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类的实例。即使抽象类里不包含抽象方法,这个抽象类也不能创建实例...

2019-09-23 11:38:07 70

转载 ReentrantLock和synchronized

一、synchronized和lock的用法区别synchronized:在需要同步的对象中加入此控制,synchronized可以加在方法上,也可以加在特定代码块中,括号中表示需要锁的对象。lock:需要显示指定起始位置和终止位置。一般使用ReentrantLock类做为锁,多个线程中必须要使用一个ReentrantLock类做为对象才能保证锁的生效。且在加锁和解锁处需要通过lock...

2019-09-16 17:27:33 133

转载 并发编程—CAS(Compare And Swap)

锁(lock)的代价锁是用来做并发最简单的方式,其代价也是最高的,Java在JDK1.5之前都是靠synchronized关键字来加锁。但是加锁机制会有如下几个问题:加锁、释放锁会需要操作系统进行上下文切换和调度延时,在上下文切换的时候,cpu之前缓存的指令和数据都将失效,这个过程将增加系统开销。(操作系统对多线程的锁进行判断就像两姐妹在为一个玩具在争吵,然后操作系统就是能决定他们谁能拿到...

2019-09-16 10:49:55 89

翻译 方法重载与方法重写

Java类允许同一个类中定义多个同名方法,只要形参列表不同就行。如果一个类中包含了两个或两个以上的方法名相同,但形参列表不同,则被称为方法重载。 方法重载的要求就是两同一不同:同一个类中方法名相同,形参列表不同。至于方法的其他部分,如方法返回值类型、修饰符等,与方法重载没有任何关系。 子类包含父类同名方法的现象被称为方法重写(Override),也被称为方法覆盖。...

2019-08-23 10:13:20 103

转载 操作集合的工具类:Collections

Java提供了一个操作Set、List和Map等集合的工具类:Collections,该工具类里提供了大量的方法对集合元素进行排序、查询和修改等操作,还提供了将集合对象设置为不可变、对集合对象实现同步控制等方法。Collections提供了如下常用的类方法用于对List集合元素进行排序。void reverse(List list):反转指定List集合中元素的顺序 void shuff...

2019-06-25 14:56:05 77

翻译 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 109

翻译 Java集合

Java集合大致可分为Set、List、Queue、Map四种体系,其中Set代表无序、不可重复的集合;List代表有序、可重复的集合;Map代表具有映射关系的集合;Java5新增了Queue体系集合,代表一种队列集合实现。Java集合就像一种容器,可以把多个对象(实际上是对象的引用)“丢进”该容器中。在Java 5之前,Java集合会丢失容器中所有对象的数据类型,把所有对象都当成Object...

2019-06-17 17:10:39 113

翻译 Java中的String、StringBuffer、StringBuilder类

String是不可变类,一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。StringBuffer对象则代表一个字符序列可变的字符串,当一个StringBuffer被创建以后,通过StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变这个字符串对象的字符序列...

2019-06-14 15:56:46 75

转载 常用的Dos命令

dir:列出当前目录下的文件以及文件夹md:创建目录rd:删除目录cd:进入指定目录 (若要进入某盘如D盘,直接输入“d:”即可)cd..:退回到上一级目录cd\:退回到根目录del:删除文件exit:退出Dos命令行echo 内容 > 文件名:写入内容到指定文件...

2019-03-04 19:45:48 187

原创 Python数据类型常用方法

数字 int          - int            a=“123”                            b=int(a)    将字符串转化为数字                            num = “0011”                            v = int(num, base = …)   base指定转换进制...

2018-09-11 15:19:38 167

转载 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 86

设计模式.rar

我希望这本书的阅读者具备最基本的代码编写能力,您是一个初级的coder,可以从中领会到怎么设计 一段优秀的代码;您是一个高级程序员,可以从中全面了解到设计模式以及Java 的边角技术的使用;您是 一个顶级的系统分析师,可以从中获得共鸣,寻找到项目公共问题的解决办法 (内含 Java 之23种设计模式解析、Java设计模式、Java设计模式经典搞笑珍藏版、设计模式java)

2019-08-28

MFC画图软件 支持颜色调整

使用MFC框架开发的画图软件,可以实现线段、折线、圆、多边形等各种图形的绘制,并且支持颜色调整,功能齐全

2018-05-04

bunny和dragon模型ply格式

ply格式的bunny和dragon模型,是斯坦福大学的3D模型,用于3D渲染实验室用的

2018-04-26

VS中搭建OpenGL

在VS集成开发中搭建OpenGL环境所需的所有文件,包括各种.dll,.lib,.h。包含各个版本的VS所需资源,可能不需要全部用到,具体请参看相应版本的教程

2018-04-25

用FFT实现快速卷积 包含中间过程的图形描述

设计并编写程序来实现线性卷积运算,可以在重叠相加法和重叠保留法中任选一种方法实现 要求给出输入信号和输出信号的图形描述,以及简要的说明 给出计算中间过程的图形描述及简要说明

2018-04-25

序列的谱分析及特性

画出序列的时域波形图; 求出序列的傅里叶变换; 画出序列的幅度谱及相位谱,并对相关结果予以理论分析; 对序列进行时移,画出时移后序列的频谱图,验证傅里叶变换的时移性质;(幅度不变,只影响相位)

2018-04-25

三维模型文件中的OBJ格式在OpenGL中的输入与处理

一篇详解OBJ格式以及实现读入的文章,可以参考参考(介绍了当今流行的三维作图工具Maya,阐述了Maya 生成的OBJ 三维格式,如何将OBJ 格式文件在OpenGL(Open Graphic Library)中进行输入和处理。重点介绍了OBJ 文件的文件格式及怎样利用程序代码来构建模型数据结构、绘制对象模型,然后运用 OpenGL 的强大功能实现三维显示和交互操作。)

2018-04-18

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除