- synchronized 的特性与机制
坚持拒绝熬夜
java开发语言笔记
目录1.synchronized的特性锁策略(1)既是乐观锁也是悲观锁(2)既是轻量级锁,也是重量级锁(3)轻量级锁基于自旋实现,重量级锁基于挂起等待实现(4)不是读写锁(5)是可重入锁(6)是非公平锁2.synchronized的使用3.synchronized的锁机制偏向锁自旋锁和重量级锁4.synchronized的优化策略1.锁的消除2.锁的粗化1.synchronized的特性(1)既是
- 关于你需要知道的JVM基础
DRUN_K
jvm
Java对象的内存布局对象头class对象指针markword(64个bit位)结构:哈希码:对象的哈希码,用于支持基于哈希的集合操作GC分代年龄:对象的分代年龄,用于垃圾回收器的分代收集策略锁状态的标识:用于标识对象的锁状态,如未锁定、轻量级锁定、重量级锁定等。偏向线程ID(在偏向锁的状态下):记录持有偏向锁的线程ID锁记录指针(在轻量级锁的状态下):指向当前线程栈中LockRecent的指针作
- 锁的策略)
康kang
synchronized锁的分类
一、锁的分类第一组:乐观锁和悲观锁这是两种不同的锁的实现方式。乐观锁:在加锁之前,预估当前出现锁冲突的概率不大,因此在进行加锁的时候就不会做太多的工作。悲观锁:在加锁之前,预估到当前锁冲突出现的概率比较大,因此加锁的时候就会做更多的工作,做的事情更多,加锁的速度可能会更慢,但整个过程中不容易出现其他问题。第二组:轻量级锁和重量级锁轻量级锁:加锁的开销小,加锁的速度更快=>一般为乐观锁重量级锁:加锁
- 深入理解 Java 中 synchronized 的使用和锁升级
谢家小布柔
java中的面试题java开发语言
目录一、synchronized的使用方式(一)修饰普通方法(二)修饰静态方法(三)修饰代码块二、synchronized的锁升级(一)无锁(二)偏向锁(三)轻量级锁(四)重量级锁在Java并发编程中,synchronized是一个非常重要的关键字,用于实现线程同步,保证在同一时刻只有一个线程可以访问被同步的代码块或方法,从而避免多线程带来的数据不一致等问题。同时,Java虚拟机(JVM)为了提高
- Java多线程编程实战:synchronized与Lock锁对比
微风灬浮尘
javajavajava入门java多线程
一、锁机制全景图:从内核态到用户态1.Java锁分类与演进史锁机制悲观锁乐观锁synchronizedReentrantLockCAS版本号机制2.锁升级全流程(synchronized底层原理)无锁→偏向锁(单线程)→轻量级锁(CAS自旋)→重量级锁(OS互斥量)锁膨胀条件:偏向锁:-XX:BiasedLockingStartupDelay=0(默认延迟4秒)重量级锁:自旋超过阈值(-XX:Pr
- 对象头(Object Header)中的 Mark Word 在32位和64位系统中有显著区别
杏花春雨江南
word
对象头(ObjectHeader)中的MarkWord在32位和64位系统中有显著区别,尤其是在开启或未开启指针压缩(CompressedOops)时。以下是详细说明:1.32位系统与64位系统的MarkWord区别32位系统MarkWord大小:32位(4字节)结构:存储对象的哈希码、锁状态、GC分代年龄等信息。锁状态(如偏向锁、轻量级锁、重量级锁)会占用部分位。64位系统MarkWord大小:
- 共享模型之管程(悲观锁)
小小uzi
java悲观锁juc并发
共享模型之管程(悲观锁)文章目录共享模型之管程(悲观锁)一、常见线程安全的类二、对象头三、Monitor(监视器/管程)四、偏向锁偏向锁的实现原理撤销偏向锁五、轻量级锁轻量级锁的释放六、重量级锁七、锁的升级流程八、sleep/wait/parksleepwaitpark九、多把锁相关十、ReentrantLock一、常见线程安全的类StringIntegerStringBufferRandomVe
- 深入解析 synchronized 锁升级:从偏向锁到重量级锁的设计哲学
有诺千金
Java并发编程java
引言在Java并发编程中,synchronized是保证线程安全的核心关键字。但早期的synchronized因直接使用操作系统级互斥锁(MutexLock)而饱受性能诟病。自Java6起,JVM团队引入了锁升级(LockEscalation)机制,通过偏向锁→轻量级锁→重量级锁的渐进式优化,实现了性能与安全的完美平衡。本文将深入剖析每个锁状态的设计思想,揭示其背后的哲学。一、对象头与锁的物理载体
- 【大厂面试题】大疆,最新面试题
扫地僧009
互联网大厂面试题java面试spring
大疆一面(50分钟)开场三连问自我介绍?(自我介绍重点引导面试官想问你的技术栈和项目)对大疆有什么了解?(大家面试的时候,最好提前了解一些公司的业务,不然没话可说就尴尬了呢)为什么选择这个岗位?(先从工作/项目匹配度角度出发,然后再说公司和个人兴趣等原因)Java提供了有哪些支持互斥的工具?工具适用场景特点synchronized简单同步或低竞争环境代码简单,性能经过JVM优化(偏向锁、轻量级锁)
- Java中锁升级的探究
我心向阳iu
#Java多线程Java面试知识点精讲javajvm开发语言
文章目录锁升级概述四种锁介绍1.无锁2.偏向锁实现原理3.轻量级锁(自旋锁)实现原理4.重量级锁实现原理锁升级过程锁升级过程举例说明锁升级原理锁升级概述JDK1.6之前,synchronized还是一个重量级锁,是一个效率比较低下的锁。但是在JDK1.6后,JVM为了提高锁的获取与释放效率对synchronized进行了优化,引入了偏向锁和轻量级锁,从此以后锁的状态就有了四种:无锁:无锁是指没有对
- 锁的升级过程
夕珩
java开发语言
锁的升级过程前置概念无锁状态偏向锁状态轻量级锁状态重量级锁状态锁的升级过程无锁->偏向锁偏向锁->轻量级锁轻量级锁->重量级锁前置概念首先我们要了解到锁的四种状态:无锁状态,偏向锁状态,轻量级锁状态和重量级锁状态。无锁状态在无锁状态下,没有线程持有锁。这意味着任何线程都可以自由地访问和修改共享资源,而不需要进行同步或互斥。无锁状态是最理想的情况,因为它不会引入任何额外的开销或阻塞。偏向锁状态当只有
- 常见的锁策略以及CAS和synchronized的优化过程
LMQ6
java开发语言
一.常见的锁策略1.乐观锁VS悲观锁乐观锁:预测当前锁冲突概率不大,后续要做的工作往往就更少,加锁开销就更少(时间,系统资源).悲观锁:预测当前锁冲突的概率大,后续要做的工作往往就更多,加锁的开销就更多(时间,系统资源).乐观和悲观的区分在于:主要看预测锁竞争的激烈程度.Synchronized初始使用乐观锁策略,当发现锁竞争比较频繁的时候,就会自动切换为悲观锁.2.轻量级锁VS重量级锁轻量级锁:
- 常见的锁策略
Bug退退退123
java开发语言
一、悲观锁and乐观锁1、悲观锁现有一把锁,有100个线程同时竞争这把锁,每一个线程加锁的频率都很高,一个线程尝试加锁时,另一个线程大概率会占有这把锁;解决方案:使用重量级锁,由于悲观锁的竞争很激烈,就导致线程阻塞时间过长,效率更低下;2.乐观锁现有一把锁,但只有10个线程竞争这把锁,其中的每一个线程都会有很的概率会拿到这把锁,与其他线程竞争的激烈程度就会小很多;解决方案:使用轻量级锁,线程之间的
- Java中的锁
救救孩子把
Java面试JAVAjava开发语言
Java中的锁公平锁/非公平锁可重入锁独享锁/共享锁互斥锁/读写锁乐观锁/悲观锁分段锁偏向锁/轻量级锁/重量级锁自旋锁上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对每个锁的名词进行一定的解释。公平锁/非公平锁公平锁是指多个线程按照申请锁的顺序来获取锁。非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获
- synchronized锁状态和底层实现
码了三年又三年
java开发语言
锁的状态无锁状态,偏向锁状态,轻量级锁状态,重量级锁状态。锁的状态是通过对象监视器在对象头中的字段来表明的,四种状态会随着竞争的情况逐渐升级。偏向锁、轻量级锁、重量级锁是针对synchronized的状态。这四种状态都不是Java语言中的锁,而是JVM为了提高锁的获取与释放效率而做的优化(使用synchronized时)无锁:没有任何线程使用锁对象。偏向锁:当前只有一个线程访问,在对象头MarkW
- synchronized原理
Petrichor-瑾
JavaEEjava开发语言
目录1.基本特点2.锁升级/锁膨胀2.1偏向锁2.2轻量级锁2.3重量级锁3.锁消除4.锁粗化1.基本特点结合我们前面所说的锁策略,我们可以总结出synchronized具有以下特性(在JDK1.8中):1.初始阶段采用乐观锁策略,如果锁冲突频繁发生,则切换为悲观锁。2.初始阶段使用轻量级锁实现,但如果锁持有时间较长,将转换为重量级锁。3.在实现轻量级锁时,通常会采用自旋锁策略。4.它是一种不公平
- 计算机基础知识复习8.22
我叫啥都行
计算机基础知识java开发语言后端笔记sql
锁升级机制无锁->偏向锁->轻量级锁->重量级锁线程A进入synchronized开始抢锁,JVM会判断当前是否是偏向锁的状态,如果是就会根据MarkWord中存储的线程ID来判断,当前线程A是否就是持有偏向锁的线程,如果是,则忽略check,线程A直接执行临界区内的代码。如果MarkWord里的线程不是线程A,就会通过自旋尝试获取锁,如果获取到了,就将MarkWord中的线程ID改为自己,如果竞
- 【JavaEE】锁策略
小猪同学hy
javajava开发语言java-ee经验分享面试
目录前言一.悲观锁和乐观锁二.重量级锁和轻量级锁三.挂起等待锁和自旋锁四.公平锁和非公平锁五.可重入锁和不可重入锁六.读写锁synchronized对应的锁策略1.悲观锁和乐观锁2.重量级锁和轻量级锁3.挂起等待锁和自旋锁4.公平锁和非公平锁5.可重入锁和不可重入锁相关面试题1.你是怎么理解乐观锁和悲观锁的,具体是怎么实现的?2.介绍下读写锁?3.什么是自旋锁,为什么要使用自旋锁策略,缺点是什么?
- 简单介绍synchronized的三种锁机制
才艺のblog
javajvm开发语言
synchronized一共有三种锁机制,分别是偏向锁、轻量级锁、重量级锁下面来简单介绍一下这三种锁机制:1、偏向锁:偏向锁对应了synchronized中锁只会被一个线程持有的情况,在第一次获取锁对象的时候会进行一次CAS操作,之后该线程再次获取锁对象的时候将只在markword中进行线程id的判断是否为本线程即可,而不会再去进行多余的CAS操作。2、轻量级锁:轻量级锁对应了synchroniz
- 【JavaEE -- 多线程进阶 - 面试重点】
水冠7
JavaEEjava-ee面试java
多线程进阶1.常见锁策略1.1乐观锁和悲观锁1.2轻量级锁和重量级锁1.3自旋锁和挂起等待锁synchronized具有自适应能力1.4普通互斥锁和读写锁1.5公平锁和非公平锁1.6可重入锁和不可重入锁2.Synchronized原理(特点、加锁过程、自适应)2.1Synchronized基本特点2.2Synchronized加锁过程2.3锁消除2.4锁粗化3.CAS(compareandswap
- 架构师之路--JAVA基础和多线程基础个别问题整理
shine_du
架构师之路多线程java队列
并发和锁(1)synchronized在JDK6做了哪些优化1.适应自旋锁:自旋锁:为了减少线程状态改变带来的消耗不停地执行当前线程2.锁消除:不可能存在共享数据竞争的锁进行消除3.锁粗化:将连续的加锁精简到只加一次锁4.轻量级锁:无竞争条件下通过CAS消除同步互斥5.偏向锁:无竞争条件下消除整个同步互斥,连CAS都不操作。Java并发编程:Lock转载http://www.cnblogs.com
- 常见锁策略,synchronized内部原理以及CAS
想进大厂的小王
java算法开发语言
常见的锁策略一些常见的锁策略可以帮助我们在实际开发中更合理的使用锁:乐观锁vs悲观锁:乐观锁:不加锁进行读取,适用于读操作频繁、写操作较少的情况,性能较高。悲观锁:读写都加锁,适用于写操作频繁的情况,保证了数据的一致性,但性能较低。轻量级锁vs重量级锁:轻量级锁:采用CAS操作尝试获取锁,适用于多线程竞争不激烈的情况,性能较高。重量级锁:多线程竞争激烈时,会将后续线程阻塞挂起,性能较低。自旋锁vs
- 浅谈Synchronized的原理
haidi8
面试专题javajvm开发语言
文章目录1.引言2.Synchronized使用方式2.1.普通函数2.2.静态函数2.3.代码块3.Synchronized原理4.Synchronized优化4.1.锁粗化4.2.锁消除4.3.锁升级4.4.无锁4.5.锁偏向锁4.6.轻量级锁4.7.重量级锁5.整个锁升级的过程1.引言在并发编程中Synchronized一直都是元老级的角色,Jdk1.6以前大家都称呼它为重量级锁,相对于JU
- JAVA高并发——Java虚拟机锁优化
布道师小羊
#网络+并发+函数式+JVMJAVA高阶java开发语言
文章目录1、锁偏向2、轻量级锁3、自旋锁4、锁消除作为一款共用平台,JDK本身也为并发程序的性能绞尽脑汁。在JDK内部也想尽一切办法提高并发时的系统吞吐量。这里将向大家简单介绍几种JDK内部的“锁”优化策略。1、锁偏向锁偏向是一种针对加锁操作的优化手段。它的核心思想是:如果一个线程获得了锁,那么锁就进入偏向模式。当这个线程再次请求锁时,无须再做任何同步操作。这样就节省了大量有关锁请求的操作,从而提
- synchronized原理
packet
synchronized是一种内置锁/监视器锁Java中每个对象都有一个内置锁(监视器,也可以理解成锁标记),而synchronized就是使用对象的内置锁(监视器)来将代码块(方法)锁定的!synchronized底层是是通过monitor对象,对象有自己的对象头,存储了很多信息,其中一个信息标示是被哪个线程持有。JDK1.6开始Synchronized锁就做了各种的优化优化有:偏向锁,轻量级锁
- 蔚来面试解答
Persistence is gold
面试职场和发展
你的问题包含了多个方面,我会尽力逐一回答:锁机制及锁膨胀过程:锁机制是并发编程中用于控制多线程对共享资源访问的一种机制,以避免资源冲突导致的数据不一致问题。锁膨胀是指锁在运行时根据竞争情况可以升级的过程,比如从偏向锁升级到轻量级锁,再升级到重量级锁,以适应不同的并发场景。BeanFactory和FactoryBean的区别:BeanFactory是Spring的最基础的容器,提供了依赖查找的能力。
- 【Java】锁策略
Prectie.RTE
java开发语言
锁策略乐观锁和悲观锁轻量级锁和重量级锁自旋锁和挂起等待锁普通互斥锁和读写锁公平锁和非公平锁可重入锁和不可重入锁乐观锁和悲观锁这是两种不同的锁的实现方式乐观锁:在加锁之前,预估当前出现锁冲突的概率不大,因此在进行加锁的时候就不会做太多的工作加锁过程做的事情比较少,加锁的速度更快,但是更容易引入一些其他的问题(消耗更多的CPU资源)悲观锁:在加锁之前,预估当前出现锁冲突的概率较大,因此在进行加锁的时候
- 每日五道java面试题之java基础篇(十二)
中北萌新程序员
java面试题java开发语言面试
目录:第一题谈谈你对AQS的理解,AQS如何实现可重⼊锁?第二题.Sychronized的偏向锁、轻量级锁、重量级锁第三题CountDownLatch和Semaphore的区别和底层原理第四题线程池中阻塞队列的作⽤?为什么是先添加列队⽽不是先创建最⼤线程?第五题对守护线程的理解第一题谈谈你对AQS的理解,AQS如何实现可重⼊锁?AQS是⼀个JAVA线程同步的框架。是JDK中很多锁⼯具的核⼼实现框架
- 4.11多线程--Monitor2
一笑看见
Java对象头Monitor(锁)原理之synchronized(4.11多线程--Monitor1)原理之synchronized进阶轻量级锁锁膨胀自旋优化偏向锁(4.11多线程--Monitor3)原理之synchronized进阶利用synchronized给对象加锁时,关联到的Monitor是操作系统提供的,加锁释放锁会消耗性能,java6之后做了一定改进。image.pngimage.p
- JAVAEE---synchronized
不是懒大王
java开发语言java-ee多线程
synchronized的特性乐观锁/悲观锁可自适轻量级锁/重量级锁可自适自旋锁/挂起等待锁可自适非读写锁可重入锁非公平锁synchronized的锁机制锁升级偏向锁阶段当一个线程对一个对象进行加锁,这个对象处于未加锁状态时,会进行一个标记并未真正加锁。俗称“搞暧昧”。轻量级锁阶段当有其他锁进行加锁,偏向锁就会立马加锁,变为轻量级锁,其他加锁就会等待。等待这个使用的策略就是自旋锁。重量级锁阶段当锁
- jvm调优总结(从基本概念 到 深度优化)
oloz
javajvmjdk虚拟机应用服务器
JVM参数详解:http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html
Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。
- 【Scala十六】Scala核心十:柯里化函数
bit1129
scala
本篇文章重点说明什么是函数柯里化,这个语法现象的背后动机是什么,有什么样的应用场景,以及与部分应用函数(Partial Applied Function)之间的联系 1. 什么是柯里化函数
A way to write functions with multiple parameter lists. For instance
def f(x: Int)(y: Int) is a
- HashMap
dalan_123
java
HashMap在java中对很多人来说都是熟的;基于hash表的map接口的非同步实现。允许使用null和null键;同时不能保证元素的顺序;也就是从来都不保证其中的元素的顺序恒久不变。
1、数据结构
在java中,最基本的数据结构无外乎:数组 和 引用(指针),所有的数据结构都可以用这两个来构造,HashMap也不例外,归根到底HashMap就是一个链表散列的数据
- Java Swing如何实时刷新JTextArea,以显示刚才加append的内容
周凡杨
java更新swingJTextArea
在代码中执行完textArea.append("message")后,如果你想让这个更新立刻显示在界面上而不是等swing的主线程返回后刷新,我们一般会在该语句后调用textArea.invalidate()和textArea.repaint()。
问题是这个方法并不能有任何效果,textArea的内容没有任何变化,这或许是swing的一个bug,有一个笨拙的办法可以实现
- servlet或struts的Action处理ajax请求
g21121
servlet
其实处理ajax的请求非常简单,直接看代码就行了:
//如果用的是struts
//HttpServletResponse response = ServletActionContext.getResponse();
// 设置输出为文字流
response.setContentType("text/plain");
// 设置字符集
res
- FineReport的公式编辑框的语法简介
老A不折腾
finereport公式总结
FINEREPORT用到公式的地方非常多,单元格(以=开头的便被解析为公式),条件显示,数据字典,报表填报属性值定义,图表标题,轴定义,页眉页脚,甚至单元格的其他属性中的鼠标悬浮提示内容都可以写公式。
简单的说下自己感觉的公式要注意的几个地方:
1.if语句语法刚接触感觉比较奇怪,if(条件式子,值1,值2),if可以嵌套,if(条件式子1,值1,if(条件式子2,值2,值3)
- linux mysql 数据库乱码的解决办法
墙头上一根草
linuxmysql数据库乱码
linux 上mysql数据库区分大小写的配置
lower_case_table_names=1 1-不区分大小写 0-区分大小写
修改/etc/my.cnf 具体的修改内容如下:
[client]
default-character-set=utf8
[mysqld]
datadir=/var/lib/mysql
socket=/va
- 我的spring学习笔记6-ApplicationContext实例化的参数兼容思想
aijuans
Spring 3
ApplicationContext能读取多个Bean定义文件,方法是:
ApplicationContext appContext = new ClassPathXmlApplicationContext(
new String[]{“bean-config1.xml”,“bean-config2.xml”,“bean-config3.xml”,“bean-config4.xml
- mysql 基准测试之sysbench
annan211
基准测试mysql基准测试MySQL测试sysbench
1 执行如下命令,安装sysbench-0.5:
tar xzvf sysbench-0.5.tar.gz
cd sysbench-0.5
chmod +x autogen.sh
./autogen.sh
./configure --with-mysql --with-mysql-includes=/usr/local/mysql
- sql的复杂查询使用案列与技巧
百合不是茶
oraclesql函数数据分页合并查询
本片博客使用的数据库表是oracle中的scott用户表;
------------------- 自然连接查询
查询 smith 的上司(两种方法)
&
- 深入学习Thread类
bijian1013
javathread多线程java多线程
一. 线程的名字
下面来看一下Thread类的name属性,它的类型是String。它其实就是线程的名字。在Thread类中,有String getName()和void setName(String)两个方法用来设置和获取这个属性的值。
同时,Thr
- JSON串转换成Map以及如何转换到对应的数据类型
bijian1013
javafastjsonnet.sf.json
在实际开发中,难免会碰到JSON串转换成Map的情况,下面来看看这方面的实例。另外,由于fastjson只支持JDK1.5及以上版本,因此在JDK1.4的项目中可以采用net.sf.json来处理。
一.fastjson实例
JsonUtil.java
package com.study;
impor
- 【RPC框架HttpInvoker一】HttpInvoker:Spring自带RPC框架
bit1129
spring
HttpInvoker是Spring原生的RPC调用框架,HttpInvoker同Burlap和Hessian一样,提供了一致的服务Exporter以及客户端的服务代理工厂Bean,这篇文章主要是复制粘贴了Hessian与Spring集成一文,【RPC框架Hessian四】Hessian与Spring集成
在
【RPC框架Hessian二】Hessian 对象序列化和反序列化一文中
- 【Mahout二】基于Mahout CBayes算法的20newsgroup的脚本分析
bit1129
Mahout
#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information re
- nginx三种获取用户真实ip的方法
ronin47
随着nginx的迅速崛起,越来越多公司将apache更换成nginx. 同时也越来越多人使用nginx作为负载均衡, 并且代理前面可能还加上了CDN加速,但是随之也遇到一个问题:nginx如何获取用户的真实IP地址,如果后端是apache,请跳转到<apache获取用户真实IP地址>,如果是后端真实服务器是nginx,那么继续往下看。
实例环境: 用户IP 120.22.11.11
- java-判断二叉树是不是平衡
bylijinnan
java
参考了
http://zhedahht.blog.163.com/blog/static/25411174201142733927831/
但是用java来实现有一个问题。
由于Java无法像C那样“传递参数的地址,函数返回时能得到参数的值”,唯有新建一个辅助类:AuxClass
import ljn.help.*;
public class BalancedBTree {
- BeanUtils.copyProperties VS PropertyUtils.copyProperties
诸葛不亮
PropertyUtilsBeanUtils
BeanUtils.copyProperties VS PropertyUtils.copyProperties
作为两个bean属性copy的工具类,他们被广泛使用,同时也很容易误用,给人造成困然;比如:昨天发现同事在使用BeanUtils.copyProperties copy有integer类型属性的bean时,没有考虑到会将null转换为0,而后面的业
- [金融与信息安全]最简单的数据结构最安全
comsci
数据结构
现在最流行的数据库的数据存储文件都具有复杂的文件头格式,用操作系统的记事本软件是无法正常浏览的,这样的情况会有什么问题呢?
从信息安全的角度来看,如果我们数据库系统仅仅把这种格式的数据文件做异地备份,如果相同版本的所有数据库管理系统都同时被攻击,那么
- vi区段删除
Cwind
linuxvi区段删除
区段删除是编辑和分析一些冗长的配置文件或日志文件时比较常用的操作。简记下vi区段删除要点备忘。
vi概述
引文中并未将末行模式单独列为一种模式。单不单列并不重要,能区分命令模式与末行模式即可。
vi区段删除步骤:
1. 在末行模式下使用:set nu显示行号
非必须,随光标移动vi右下角也会显示行号,能够正确找到并记录删除开始行
- 清除tomcat缓存的方法总结
dashuaifu
tomcat缓存
用tomcat容器,大家可能会发现这样的问题,修改jsp文件后,但用IE打开 依然是以前的Jsp的页面。
出现这种现象的原因主要是tomcat缓存的原因。
解决办法如下:
在jsp文件头加上
<meta http-equiv="Expires" content="0"> <meta http-equiv="kiben&qu
- 不要盲目的在项目中使用LESS CSS
dcj3sjt126com
Webless
如果你还不知道LESS CSS是什么东西,可以看一下这篇文章,是我一朋友写给新人看的《CSS——LESS》
不可否认,LESS CSS是个强大的工具,它弥补了css没有变量、无法运算等一些“先天缺陷”,但它似乎给我一种错觉,就是为了功能而实现功能。
比如它的引用功能
?
.rounded_corners{
- [入门]更上一层楼
dcj3sjt126com
PHPyii2
更上一层楼
通篇阅读完整个“入门”部分,你就完成了一个完整 Yii 应用的创建。在此过程中你学到了如何实现一些常用功能,例如通过 HTML 表单从用户那获取数据,从数据库中获取数据并以分页形式显示。你还学到了如何通过 Gii 去自动生成代码。使用 Gii 生成代码把 Web 开发中多数繁杂的过程转化为仅仅填写几个表单就行。
本章将介绍一些有助于更好使用 Yii 的资源:
- Apache HttpClient使用详解
eksliang
httpclienthttp协议
Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会
- zxing二维码扫描功能
gundumw100
androidzxing
经常要用到二维码扫描功能
现给出示例代码
import com.google.zxing.WriterException;
import com.zxing.activity.CaptureActivity;
import com.zxing.encoding.EncodingHandler;
import android.app.Activity;
import an
- 纯HTML+CSS带说明的黄色导航菜单
ini
htmlWebhtml5csshovertree
HoverTree带说明的CSS菜单:纯HTML+CSS结构链接带说明的黄色导航
在线体验效果:http://hovertree.com/texiao/css/1.htm代码如下,保存到HTML文件可以看到效果:
<!DOCTYPE html >
<html >
<head>
<title>HoverTree
- fastjson初始化对性能的影响
kane_xie
fastjson序列化
之前在项目中序列化是用thrift,性能一般,而且需要用编译器生成新的类,在序列化和反序列化的时候感觉很繁琐,因此想转到json阵营。对比了jackson,gson等框架之后,决定用fastjson,为什么呢,因为看名字感觉很快。。。
网上的说法:
fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。
- 基于Mybatis封装的增删改查实现通用自动化sql
mengqingyu
DAO
1.基于map或javaBean的增删改查可实现不写dao接口和实现类以及xml,有效的提高开发速度。
2.支持自定义注解包括主键生成、列重复验证、列名、表名等
3.支持批量插入、批量更新、批量删除
<bean id="dynamicSqlSessionTemplate" class="com.mqy.mybatis.support.Dynamic
- js控制input输入框的方法封装(数字,中文,字母,浮点数等)
qifeifei
javascript js
在项目开发的时候,经常有一些输入框,控制输入的格式,而不是等输入好了再去检查格式,格式错了就报错,体验不好。 /** 数字,中文,字母,浮点数(+/-/.) 类型输入限制,只要在input标签上加上 jInput="number,chinese,alphabet,floating" 备注:floating属性只能单独用*/
funct
- java 计时器应用
tangqi609567707
javatimer
mport java.util.TimerTask; import java.util.Calendar; public class MyTask extends TimerTask { private static final int
- erlang输出调用栈信息
wudixiaotie
erlang
在erlang otp的开发中,如果调用第三方的应用,会有有些错误会不打印栈信息,因为有可能第三方应用会catch然后输出自己的错误信息,所以对排查bug有很大的阻碍,这样就要求我们自己打印调用的栈信息。用这个函数:erlang:process_display (self (), backtrace).需要注意这个函数只会输出到标准错误输出。
也可以用这个函数:erlang:get_s