- Objective-C高级特性浅析与实践指南
小鹿撞出了脑震荡
objective-c学习
OC的学习笔记(二)文章目录OC的学习笔记(二)@property访问控制符点语法自定义`init`方法内存管理retain和release@class处理发生异常的方法NSSrting的常用方法类方法对象方法lengthcharacterAtIndexisEuqalStringcompare@autorelease和自动释放池自动释放池Category类别与扩展category的运用NSNumb
- 509,关于@autoreleasepool(面试点:1,如果你正在编写不基于UI 框架的程序,比如命令行工具。2, 如果你编写的循环创建了很多临时对象。 你可以在循环中使用自动释放池bloc...
枫叶1234
面试经常会有这样的问题:1.什么是@autoreleasepool?2.里面对象的内存什么时候释放?3.什么时候要用@autoreleasepool?回答:1.@autoreleasepool是自动释放池,让我们更自由的管理内存2.当我们手动创建了一个@autoreleasepool,里面创建了很多临时变量,当@autoreleasepool结束时,里面的内存就会回收3.ARC时代,系统自动管理自
- autoreleasepool自动释放池(就问你点不点心了...)
best_su
送一波干货:所谓自动释放池:自动释放池是用来存放对象的,存储在自动释放池中的对象,在自动释放次销毁的时候会给池子中的每一个对象发送一个release消息,即调用对象的relesae方法可以解决的问题:将创建的对象存入到自动释放池中,就不需要在手动的relese这个对象了。因为池子销毁的时候就会自动的调用对象的release方法好处:将创建的对象存储到自动的释放池中,不需要在写release如何创建
- 019-C++跨平台开发内存检测
一亩三分甜
《C++文章汇总》上一篇介绍了《018-智能指针》,本文介绍实际开发中利用Xcode工具对内存进行检测。在音视频开发中,不可避免要使用C++,需要我们自己管理内存,不像OC可通过自动释放池autoreleasepool管理内存,如何知道我们写的C++代码是否有内存忘记释放,内存泄露,内存破坏呢?可充分利用Xcode检测调试工具进行检测调试1.开发中遇到的问题需求图片.png图片.png现实开发中图
- iOS底层 -- 内存管理之autorelase、autoreleasepool原理
happy神悦
自动释放池自动释放池的主要底层数据结构是:__AtAutoreleasePool、AutoreleasePoolPage调用了autorelease的对象最终都是通过AutoreleasePoolPage对象来管理的__AtAutoreleasePool结构体struct__AtAutoreleasePool{__AtAutoreleasePool(){//构造函数,在创建结构体的时候调用atau
- AutoreleasePool探究
飞奔的小鲨鱼
虽然现在已经是arc的时代了,不用我们自己管理对象的释放问题,但在面试的过程中难免会被问到这方面的问题,另一方了解AutoreleasePool的实现原理也会使我们对内存管理这方面有更加清晰的认识。再看这篇文章之前,先回到我们的题目中来,假如你现在正在面试,面试官问你,说说你对AutoreleasePool的了解。。。AutoreleasePool就是我们常说的自动释放池,在mrc的时候采用引用计
- Objective-C编译成C++代码报错
堕落白天使
由于想要了解oc语言中的@autorelease自动释放池的源码,所以转成的C++代码是什么样子的,在进入项目目录中,执行clang-rewrite-objcViewController.m时如下错:简单的解释就是,当我们在语言转换的时候,无法识别库此时我们需要在编译的时候让系统识别objective-c的系统库,所以要在编译的时候为期制定相应的sdk路径,那么可以进行一下操作clang-xobj
- 理解 ARC 实现原理 -- 详细总结
想名真难
ARC是iOS中管理引用计数的技术,帮助iOS实现垃圾自动回收,具体实现的原理是由编译器进行管理的,同时运行时库协助编译器辅助完成。主要涉及到Clang(LLVM编译器)和objc4运行时库。本文主要内容由修饰符__strong、__weak、__autorelease拓展开,分别延伸出引用计数、弱引用表、自动释放池等实现原理。在阅读本文之前,你可以看看下面几个问题:在ARC下如何存储引用计数?如
- iOS内存管理(三)AutoReleasePool & NSRunLoop 底层分析
辉辉岁月
本文主要分析AutoReleasePool以及NSRunLoop的底层实现AutoReleasePool自动释放池自动释放池是OC中的一种内存自动回收机制,它可以将加入AutoreleasePool中的变量release的时机延迟,简单来说,就是当创建一个对象,在正常情况下,变量会在超出其作用域的时立即release。如果将对象加入到了自动释放池中,这个对象并不会立即释放,会等到runloop休眠
- 拾陆:AutoreleasePool实现原理
FY_Chao
前言通过前面runloop文章中,我们知道在mainRunloop存在两个关于autoreleasePool的RunLoopObserver,分别监听了runloop的①.进入(Entry)、②.BeforeWaiting(准备进入休眠)和Exit(即将退出Loop)进入(Entry):监听到进入后会调用_objc_autoreleasePoolPush()函数创建自动释放池。准备进入休眠(Bef
- iOS-内存管理分析(下)
似水流年_9ebe
前言iOS-内存管理分析(上)以及iOS-内存管理分析(中)分析了内存的分区,布局,散列表,弱引用计数表等相关知识,这篇文章继续分析内存管理。1自动释放池初探在我们的demo工程的main文件代码如下#importintmain(intargc,constchar*argv[]){@autoreleasepool{NSLog(@"Hello,World!");}return0;}我们通过clang
- ios开发 之 多线程
TO_ZRG
SDKiosobjective-c
目录第一节:多线程简介线程执行原理主线程多线程解决方案pthread__bridgeNSThread线程的状态第二节:多线程访问资源@Synchronizednonatomic、atomic自动释放池属性修饰符第三节:消息循环消息模式第四节:GCDBarrierdispatch_once、dispatch_after构建单例模式调度组第五节:NSOperationGCD与NSOperation的区
- 内存管理、自动释放池与循环引用
简国了
引用自:内存管理、自动释放池与循环引用一、内存布局1.堆栈解释栈(stack):方法调用,局部变量等,是连续的,高地址(0xc0000000)往低地址(0xc8048000)扩展堆(heap):通过alloc等分配的对象,是离散的,低地址往高地址扩展,需要手动控制未初始化数据(bss):未初始化的全局变量等已初始化数据(data):已初始化的全局变量等代码段(text):程序代码2.64bit和3
- OC 学习记录随笔 之AutoreleasePool
jimboRen
iOS/Mac学习
总资料全是随笔笔记与学习资料。没有规律。自动释放池数据结构classAutoreleasePoolPage:privateAutoreleasePoolPageData继承与AutoreleasePoolPageData,经过综合后的主要结构为:classAutoreleasePoolPage{magic_tconstmagic;__unsafe_unretainedid*next;//能够存储的
- Cocos备战面试
猿宅
操作系统jstses6前端面向对象性能优化Cocos相关1.内存管理引用计数来管理内存,创建时计数为1,调用retain计数加1,release计数减1,为0时释放内存。常见的addChild和removeChild会分别加1减1。autoRelease把节点加到自动释放池中,在当前帧结束时,池中的节点会调用一次release,起到延时自动释放的作用。2.DrawCall优化DrawCall是一种
- 2. IOS 内存、自动释放池、桥接的研究
LeeDev
一:简述内存的管理内存管理最重要的就是谁创建谁释放的原则,基本上可以解决我们90%以上(笔者凭借经验猜测的数字,不要太较真)的问题,但是有时候,系统做优化,会不遵循这个原则。下面我们通过一个例子来介绍:1.首先我们定义一个Mark类@interfaceMark:NSObject+(Mark*)newMark;+(Mark*)createMark;+(Mark*)getMark;@end@imple
- iOS Runloop面试小笔记
feiyue0823
iOSios面试objective-cRunloop
Runloop是什么?Runloop是事件接收和分发机制的一个实现。Runloop本质是个对象。Runloop可以做什么?可以保活子线程,防止线程在执行完成任务后销毁。自动释放池。NSTimer在子线程开启一个定时器,控制定时器在特定模式下执行。当前线程中有runloop,PerformSelector才能执行。Runloop与线程有什么关系?线程和RunLoop之间是一一对应的,其关系是保存在一
- 2020-03-18 给运行循环添加状态监听
幸福晓杰2016
为什么要监听运行循环呢?因为我们需要看到运行循环进入到什么状态,这和自动释放池释放临时资源的时机有关系。比如运行循环进入到kCFRunLoopBeforeWaiting状态时,自动释放池会给其中每一个对象变量发送一条autoRelease消息,完成变量的释放。方法如下://研究运行循环何时释放-(void)addRunLoopObserver{//保证只添加一个观察者if([[NSThreadcu
- 自动释放池-AutoReleasePool
佛祖ohmygod
自动释放池-AutoReleasePool自动释放池是OC中的一种内存自动回收机制,它可以将加入AutoreleasePool中的变量release的时机延迟,简单来说,就是当创建一个对象,在正常情况下,变量会在超出其作用域的时立即release。如果将对象加入到了自动释放池中,这个对象并不会立即释放,会等到runloop休眠/超出autoreleasepool作用域{}之后才会被释放image.
- 最新iOS面试,腾讯5轮面试问题记录
iOS猿_员
第一面,视频面试问的基础的比较多,因为还涉及到音视频的开发,所以音视频方面的知识点也问了一些常见的属性修饰符有哪些,使用copy应该注意些什么深拷贝和浅拷贝区别atomic真的安全么,加的锁是哪种锁iOS中内存管理是怎么样的自动释放池原理,本质常见的内存泄漏有哪些block出现循环引用的原因线程和runloop之间的关系是怎么样的GCD中串行并行队列,同步异步的区别有遇到过死锁么,怎么产生的run
- @autoreleasepool
牛程程
官方文档UsingAutoreleasePoolBlocks什么时候需要使用@autoreleasepool?1、如果你正在编写不基于UI框架的程序,比如命令行工具。2、如果你编写的循环创建了很多临时对象。你可以在循环中使用自动释放池block,在下次迭代前处理这些对象。在循环中使用自动释放池block,有助于减少应用程序的内存占用。3、你生成了一个辅助线程。一旦线程开始执行你必须自己创建自动释放
- 2020-03-12 自动释放池到底能不能彻底解决循环过程中内存飙升的问题?
幸福晓杰2016
自动释放池到底能不能彻底解决循环过程中内存飙升的问题?(循环这里指得是for循环)其实这个问题也是,自动释放池,到底什么时候会去自动释放一下临时使用的内存?在我过往的开发经历中,我曾经使用过两次自动释放池来解决循环下载大数据或者循环拷贝数据过程导致内存飙升的问题。自动释放池的解决方案一直无效。无论下载大图片,还是读取本地相册图片来复制,内存总是轻松上升很快。事后,我的解决方案是:第一次:懒加载,延
- 内存管理二
半边枫叶
AutoreleasepoolAutoreleasepool的结构我们的main函数中定义一个自动释放池intmain(intargc,constchar*argv[]){@autoreleasepool{}return0;}然后通过clang查看源码实现/*@autoreleasepool*/{__AtAutoreleasePool__autoreleasepool;}可以看到我们的@autor
- 【Effective Objective-C】内存管理
kochunk1t
objective-cios移动开发
文章目录前言理解引用计数引用计数工作原理属性存取方法中的内存管理自动释放池保留环要点以ARC简化引用计数使用ARC时必须遵循的方法命名规则变量的内存管理语义ARC如何清理实例变量覆盖内存管理方法要点在dealloc方法中只释放引用并接触监听要点编写“异常安全代码”时留意内存管理问题要点以弱引用避免保留环要点以“自动释放池块”降低内存峰值要点用“僵厂对象”调试内存管理问题要点不要使用retainCo
- @autorelease
Civel_Xu
Autorelease对象是在当前的runloop迭代结束时释放的,而它能够释放的原因是系统在每个runloop迭代中都加入了自动释放池Push和Pop;ARC下,我们使用@autoreleasepool{}来使用一个AutoreleasePool,随后编译器将其改写成下面的样子:void*context=objc_autoreleasePoolPush();//{}中的代码objc_autore
- 内存管理:自动释放池
东方诗空
自动释放池的主要底层数据结构是:__AtAutoreleasePool、AutoreleasePoolPage调用了autorelease的对象最终都是通过AutoreleasePoolPage对象来管理的源码分析clang重写@autoreleasepoolobjc4源码:NSObject.mmautoreleasepool开始调用objc_autoreleasePoolPush结束调用objc
- iOS-内存管理(三)-autoreleasepool
xxxxxxxx_123
本质@autoreleasepool,即自动释放池,是自动内存管理的核心。官方文档给出的解释如下:AutoreleasepoolimplementationAthread'sautoreleasepoolisastackofpointers.Eachpointeriseitheranobjecttorelease,orPOOL_BOUNDARYwhichisanautoreleasepoolbou
- iOS 面试题-2019.下
72行代码
简要说一下autoreleasePool的数据结构简单说是双向链表,每张链表头尾相接,有parent、child指针,每创建一个池子,会在首部创建一个哨兵对象作为标记,最外层池子的顶端会有一个next指针。当链表容量满了,就会在链表的顶端,并指向下一张表说一下autoreleasePool的实现原理autoreleasePool是一个延时release的机制,在自动释放池被销毁或耗尽时,会向池中的
- oc中__weak修饰的变量引用对象会不会放入autoreleasepool?
Light413
众所周知weak修饰符可以使修饰的变量引用不改变原对象的引用计数,而且在对象释放时可以对变量设为nil;我一直认为引用的对象也会放入自动释放池,因为我看的书就是这样说的:所以当有人问题__weak修饰的变量引用对象会不会放入autoreleasepool?答案必须是肯定的。其实__weak修饰的变量引用对象是不会放入autoreleasepool的;先看__autoreleasing修饰的所引用对
- @autorelease 自动释放池
堕落白天使
一.@autorelease是干什么的?使用clang-rewrite-objcmain.m将main.m翻译成main.cpp文件可以直接读取完整的源码这个是main.m的源码这个是main.cpp文件的部分源码看代码可以知道autoreleasePool其实就是个结构体结构体里面是autoreleasePool的构造(相当于oc中的alloc)和析构(相当于oc中的dealloc)在构造的时候
- SAX解析xml文件
小猪猪08
xml
1.创建SAXParserFactory实例
2.通过SAXParserFactory对象获取SAXParser实例
3.创建一个类SAXParserHander继续DefaultHandler,并且实例化这个类
4.SAXParser实例的parse来获取文件
public static void main(String[] args) {
//
- 为什么mysql里的ibdata1文件不断的增长?
brotherlamp
linuxlinux运维linux资料linux视频linux运维自学
我们在 Percona 支持栏目经常收到关于 MySQL 的 ibdata1 文件的这个问题。
当监控服务器发送一个关于 MySQL 服务器存储的报警时,恐慌就开始了 —— 就是说磁盘快要满了。
一番调查后你意识到大多数地盘空间被 InnoDB 的共享表空间 ibdata1 使用。而你已经启用了 innodbfileper_table,所以问题是:
ibdata1存了什么?
当你启用了 i
- Quartz-quartz.properties配置
eksliang
quartz
其实Quartz JAR文件的org.quartz包下就包含了一个quartz.properties属性配置文件并提供了默认设置。如果需要调整默认配置,可以在类路径下建立一个新的quartz.properties,它将自动被Quartz加载并覆盖默认的设置。
下面是这些默认值的解释
#-----集群的配置
org.quartz.scheduler.instanceName =
- informatica session的使用
18289753290
workflowsessionlogInformatica
如果希望workflow存储最近20次的log,在session里的Config Object设置,log options做配置,save session log :sessions run ;savesessio log for these runs:20
session下面的source 里面有个tracing 
- Scrapy抓取网页时出现CRC check failed 0x471e6e9a != 0x7c07b839L的错误
酷的飞上天空
scrapy
Scrapy版本0.14.4
出现问题现象:
ERROR: Error downloading <GET http://xxxxx CRC check failed
解决方法
1.设置网络请求时的header中的属性'Accept-Encoding': '*;q=0'
明确表示不支持任何形式的压缩格式,避免程序的解压
- java Swing小集锦
永夜-极光
java swing
1.关闭窗体弹出确认对话框
1.1 this.setDefaultCloseOperation (JFrame.DO_NOTHING_ON_CLOSE);
1.2
this.addWindowListener (
new WindowAdapter () {
public void windo
- 强制删除.svn文件夹
随便小屋
java
在windows上,从别处复制的项目中可能带有.svn文件夹,手动删除太麻烦,并且每个文件夹下都有。所以写了个程序进行删除。因为.svn文件夹在windows上是只读的,所以用File中的delete()和deleteOnExist()方法都不能将其删除,所以只能采用windows命令方式进行删除
- GET和POST有什么区别?及为什么网上的多数答案都是错的。
aijuans
get post
如果有人问你,GET和POST,有什么区别?你会如何回答? 我的经历
前几天有人问我这个问题。我说GET是用于获取数据的,POST,一般用于将数据发给服务器之用。
这个答案好像并不是他想要的。于是他继续追问有没有别的区别?我说这就是个名字而已,如果服务器支持,他完全可以把G
- 谈谈新浪微博背后的那些算法
aoyouzi
谈谈新浪微博背后的那些算法
本文对微博中常见的问题的对应算法进行了简单的介绍,在实际应用中的算法比介绍的要复杂的多。当然,本文覆盖的主题并不全,比如好友推荐、热点跟踪等就没有涉及到。但古人云“窥一斑而见全豹”,希望本文的介绍能帮助大家更好的理解微博这样的社交网络应用。
微博是一个很多人都在用的社交应用。天天刷微博的人每天都会进行着这样几个操作:原创、转发、回复、阅读、关注、@等。其中,前四个是针对短博文,最后的关注和@则针
- Connection reset 连接被重置的解决方法
百合不是茶
java字符流连接被重置
流是java的核心部分,,昨天在做android服务器连接服务器的时候出了问题,就将代码放到java中执行,结果还是一样连接被重置
被重置的代码如下;
客户端代码;
package 通信软件服务器;
import java.io.BufferedWriter;
import java.io.OutputStream;
import java.io.O
- web.xml配置详解之filter
bijian1013
javaweb.xmlfilter
一.定义
<filter>
<filter-name>encodingfilter</filter-name>
<filter-class>com.my.app.EncodingFilter</filter-class>
<init-param>
<param-name>encoding<
- Heritrix
Bill_chen
多线程xml算法制造配置管理
作为纯Java语言开发的、功能强大的网络爬虫Heritrix,其功能极其强大,且扩展性良好,深受热爱搜索技术的盆友们的喜爱,但它配置较为复杂,且源码不好理解,最近又使劲看了下,结合自己的学习和理解,跟大家分享Heritrix的点点滴滴。
Heritrix的下载(http://sourceforge.net/projects/archive-crawler/)安装、配置,就不罗嗦了,可以自己找找资
- 【Zookeeper】FAQ
bit1129
zookeeper
1.脱离IDE,运行简单的Java客户端程序
#ZkClient是简单的Zookeeper~$ java -cp "./:zookeeper-3.4.6.jar:./lib/*" ZKClient
1. Zookeeper是的Watcher回调是同步操作,需要添加异步处理的代码
2. 如果Zookeeper集群跨越多个机房,那么Leader/
- The user specified as a definer ('aaa'@'localhost') does not exist
白糖_
localhost
今天遇到一个客户BUG,当前的jdbc连接用户是root,然后部分删除操作都会报下面这个错误:The user specified as a definer ('aaa'@'localhost') does not exist
最后找原因发现删除操作做了触发器,而触发器里面有这样一句
/*!50017 DEFINER = ''aaa@'localhost' */
原来最初
- javascript中showModelDialog刷新父页面
bozch
JavaScript刷新父页面showModalDialog
在页面中使用showModalDialog打开模式子页面窗口的时候,如果想在子页面中操作父页面中的某个节点,可以通过如下的进行:
window.showModalDialog('url',self,‘status...’); // 首先中间参数使用self
在子页面使用w
- 编程之美-买书折扣
bylijinnan
编程之美
import java.util.Arrays;
public class BookDiscount {
/**编程之美 买书折扣
书上的贪心算法的分析很有意思,我看了半天看不懂,结果作者说,贪心算法在这个问题上是不适用的。。
下面用动态规划实现。
哈利波特这本书一共有五卷,每卷都是8欧元,如果读者一次购买不同的两卷可扣除5%的折扣,三卷10%,四卷20%,五卷
- 关于struts2.3.4项目跨站执行脚本以及远程执行漏洞修复概要
chenbowen00
strutsWEB安全
因为近期负责的几个银行系统软件,需要交付客户,因此客户专门请了安全公司对系统进行了安全评测,结果发现了诸如跨站执行脚本,远程执行漏洞以及弱口令等问题。
下面记录下本次解决的过程以便后续
1、首先从最简单的开始处理,服务器的弱口令问题,首先根据安全工具提供的测试描述中发现应用服务器中存在一个匿名用户,默认是不需要密码的,经过分析发现服务器使用了FTP协议,
而使用ftp协议默认会产生一个匿名用
- [电力与暖气]煤炭燃烧与电力加温
comsci
在宇宙中,用贝塔射线观测地球某个部分,看上去,好像一个个马蜂窝,又像珊瑚礁一样,原来是某个国家的采煤区.....
不过,这个采煤区的煤炭看来是要用完了.....那么依赖将起燃烧并取暖的城市,在极度严寒的季节中...该怎么办呢?
&nbs
- oracle O7_DICTIONARY_ACCESSIBILITY参数
daizj
oracle
O7_DICTIONARY_ACCESSIBILITY参数控制对数据字典的访问.设置为true,如果用户被授予了如select any table等any table权限,用户即使不是dba或sysdba用户也可以访问数据字典.在9i及以上版本默认为false,8i及以前版本默认为true.如果设置为true就可能会带来安全上的一些问题.这也就为什么O7_DICTIONARY_ACCESSIBIL
- 比较全面的MySQL优化参考
dengkane
mysql
本文整理了一些MySQL的通用优化方法,做个简单的总结分享,旨在帮助那些没有专职MySQL DBA的企业做好基本的优化工作,至于具体的SQL优化,大部分通过加适当的索引即可达到效果,更复杂的就需要具体分析了,可以参考本站的一些优化案例或者联系我,下方有我的联系方式。这是上篇。
1、硬件层相关优化
1.1、CPU相关
在服务器的BIOS设置中,可
- C语言homework2,有一个逆序打印数字的小算法
dcj3sjt126com
c
#h1#
0、完成课堂例子
1、将一个四位数逆序打印
1234 ==> 4321
实现方法一:
# include <stdio.h>
int main(void)
{
int i = 1234;
int one = i%10;
int two = i / 10 % 10;
int three = i / 100 % 10;
- apacheBench对网站进行压力测试
dcj3sjt126com
apachebench
ab 的全称是 ApacheBench , 是 Apache 附带的一个小工具 , 专门用于 HTTP Server 的 benchmark testing , 可以同时模拟多个并发请求。前段时间看到公司的开发人员也在用它作一些测试,看起来也不错,很简单,也很容易使用,所以今天花一点时间看了一下。
通过下面的一个简单的例子和注释,相信大家可以更容易理解这个工具的使用。
- 2种办法让HashMap线程安全
flyfoxs
javajdkjni
多线程之--2种办法让HashMap线程安全
多线程之--synchronized 和reentrantlock的优缺点
多线程之--2种JAVA乐观锁的比较( NonfairSync VS. FairSync)
HashMap不是线程安全的,往往在写程序时需要通过一些方法来回避.其实JDK原生的提供了2种方法让HashMap支持线程安全.
- Spring Security(04)——认证简介
234390216
Spring Security认证过程
认证简介
目录
1.1 认证过程
1.2 Web应用的认证过程
1.2.1 ExceptionTranslationFilter
1.2.2 在request之间共享SecurityContext
1
- Java 位运算
Javahuhui
java位运算
// 左移( << ) 低位补0
// 0000 0000 0000 0000 0000 0000 0000 0110 然后左移2位后,低位补0:
// 0000 0000 0000 0000 0000 0000 0001 1000
System.out.println(6 << 2);// 运行结果是24
// 右移( >> ) 高位补"
- mysql免安装版配置
ldzyz007
mysql
1、my-small.ini是为了小型数据库而设计的。不应该把这个模型用于含有一些常用项目的数据库。
2、my-medium.ini是为中等规模的数据库而设计的。如果你正在企业中使用RHEL,可能会比这个操作系统的最小RAM需求(256MB)明显多得多的物理内存。由此可见,如果有那么多RAM内存可以使用,自然可以在同一台机器上运行其它服务。
3、my-large.ini是为专用于一个SQL数据
- MFC和ado数据库使用时遇到的问题
你不认识的休道人
sqlC++mfc
===================================================================
第一个
===================================================================
try{
CString sql;
sql.Format("select * from p
- 表单重复提交Double Submits
rensanning
double
可能发生的场景:
*多次点击提交按钮
*刷新页面
*点击浏览器回退按钮
*直接访问收藏夹中的地址
*重复发送HTTP请求(Ajax)
(1)点击按钮后disable该按钮一会儿,这样能避免急躁的用户频繁点击按钮。
这种方法确实有些粗暴,友好一点的可以把按钮的文字变一下做个提示,比如Bootstrap的做法:
http://getbootstrap.co
- Java String 十大常见问题
tomcat_oracle
java正则表达式
1.字符串比较,使用“==”还是equals()? "=="判断两个引用的是不是同一个内存地址(同一个物理对象)。 equals()判断两个字符串的值是否相等。 除非你想判断两个string引用是否同一个对象,否则应该总是使用equals()方法。 如果你了解字符串的驻留(String Interning)则会更好地理解这个问题。
- SpringMVC 登陆拦截器实现登陆控制
xp9802
springMVC
思路,先登陆后,将登陆信息存储在session中,然后通过拦截器,对系统中的页面和资源进行访问拦截,同时对于登陆本身相关的页面和资源不拦截。
实现方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23