- ARM内存屏障/编译屏障API(__DMB、__DSB、__ISB)用法及举例
NW嵌入式开发
ARM内核Cortex-A7stm32MP135内存屏障编译屏障DMBDSBISB
0参考资料STM32F7SeriesandSTM32H7SeriesCortex®-M7processor.pdfARMCortex™-MProgrammingGuidetoMemoryBarrierInstructions.pdf1ARM内存屏障/编译屏障指令(__DMB、__DSB、__ISB)说明内存屏障和编译屏蔽其实是2个东西,一个是处理器运行时避免乱序引入的指令,一个是编译时避免编译器编
- volatile的实现
狼与自由
java
字节码层面ACC_VOLATILEJVMvolatile内存区的读写都加了内存屏障OS和硬件层面windowslock指令实现
- Java并发编程之Volatile原理
逍遥白亦
Volatile定义Java语言规范第3版中对volatile的定义如下:Java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量。Java语言提供了volatile,在某些情况下比锁要更加方便。如果一个字段被声明成volatile,Java线程内存模型确保所有线程看到这个变量的值是一致的。CPU的相关术语术语术语描述内存屏障用一组处理器指
- 分布式锁实现
码<>农
分布式linux服务器c语言数据结构算法链表
在分布式系统中,一个应用部署在多台机器中,在某些场景下,为了保证数据一致性,要求在同一时刻,同一任务只在一个节点上运行,即保证某个行为在同一时刻只能被一个线程执行;在单机单进程多线程环境,通过锁很容易做到,比如mutex,spinlock,信号量等;而在多机多进程环境中,此时就需要分布式锁来解决了;常见的锁有互斥锁,自旋锁,读写锁,信号量,条件变量,原子变量和内存屏障(无锁);互斥锁和自旋锁是互斥
- [architecture]-DMB、DSB 和 ISB指令的深度解读
代码改变世界ctw
ARM-TEE-Androidarmv9DMBDSBISB内存屏障
快速链接:.个人博客笔记导读目录(全部)付费专栏-付费课程【购买须知】:【精选】ARMv8/ARMv9架构入门到精通-[目录]术语:DMB–DataMemoryBarrierDSB–DataSynchronizationBarrierISB–InstructionSynchronizationBarrier思考:内存屏障到底屏的什么?为什么要用内存屏障?乱序执行是怎样的一个乱序?为什么会出现乱序
- volatile源码解析【解决可见性(依据happened-befor)有序性(依据内存屏障)】
_蓝天IT_
java
volatile源码解析解决内存可见性问题volatile实现原理-源码分析转自极客时间解决内存可见性问题volatile实现原理-源码分析
- 聊聊高并发(一)概念
wenming6688
并发/线程的一些概念,概念很重要,没有理论指导的话会导致理解不够全面多线程问题的本质--有序性,可见性,原子性synchronize的底层实现volatile的底层实现无锁算法的底层实现--CAS原子变量的实现final关键字的新含义深入理解Java内存模型指令重排序和内存屏障顺序一致性和Happens-before规则一些基本的硬件知识一些处理同步问题的技术
- 一篇长文简短介绍,Linux内核——内存屏障(建议收藏)
极致Linux内核
在阅读很多底层的代码时,经常会碰到一个所谓内存屏障的概念,经常搞得一头雾水。本文将对这个概念进行一个系统的介绍。一、为什么需要内存屏障内存屏障的引入,本质上是由于CPU重排序指令引起的。重排序问题无时无刻不在发生,主要源自以下几种场景:编译器编译时的优化;处理器执行时的多发射和乱序优化;读取和存储指令的优化;缓存同步顺序(导致可见性问题)。下面分别解释一下:编译器优化编译器在不改变单线程程序语义的
- Java多线程相关学习
许水愿
Java基础Java多线程Java并发
Java多线程文章目录Java多线程线程状态线程切换状态图线程终止内存屏障和CPU缓存CPU的优化手段-缓存缓存同步协议运行时指令重排CPU存在的两个问题内存屏障解决上两个问题线程通信通信的方式API-被弃用的suspend和resumewait/notify机制park/unpark机制伪唤醒线程封闭ThreadLocal栈封闭线程池应用及原理为什么要用线程池线程池的基本概念线程池API-接口定
- Java内存模型的抽象结构:理解并发编程的关键
小阳小朋友
并发java开发语言
文章目录前言一、主内存与本地内存二、内存屏障与操作类型三、原子性、可见性与有序性四、总结前言在多线程编程中,内存模型是一个核心概念,它决定了线程如何共享和访问数据。Java内存模型(JMM)是Java平台规范中定义的一组规则和协议,用于描述线程之间如何通过共享内存进行交互。本文将深入探讨Java内存模型的抽象结构,帮助读者更好地理解并发编程中的原子性、可见性和有序性。一、主内存与本地内存Java内
- 3.2.6 手把手实现分布式锁
高二的笔记
零声教育分布式
手把手实现分布式锁进程中的锁1.互斥锁2.自旋锁3.读写锁4.信号量5.条件变量6.原子变量以及内存屏障进程间通信1.pipe2.FIFO3.信号量4.信号5.消息队列6.共享内存7.socket1.条件变量为什么与互斥锁协同条件的判断是一个临界资源,需要互斥锁保护2.哪些锁是自己加锁自己释放锁?哪些是自己加锁,可能由别的线程释放锁?互斥锁,自旋锁;信号量和条件变量可能由别的线程释放锁;pthre
- 原来 CPU 为程序性能优化做了这么多
武培轩
本文主要来学习内存屏障和CPU缓存知识,以便于我们去了解CPU对程序性能优化做了哪些努力。首先来看下CPU缓存:CPU缓存CPU缓存是为了提高程序运行的性能,CPU在很多处理上内部架构做了很多调整,比如CPU高速缓存,大家都知道因为硬盘很慢,可以通过缓存把数据加载到内存里面,提高访问速度,而CPU处理也有这个机制,尽可能把处理器访问主内存时间开销放在CPU高速缓存上面,CPU访问速度相比内存访问速
- 进了鹅厂半年了,最近整理了一下Java面试题面试题希望对你们
十年一梦忆苦思甜
鹅厂一面1.synchronized原理,怎么保证可重入性,可见性,抛异常怎么办,和lock锁的区别,2个线程同时访问synchronized的静态方法,2个线程同时访问一个synchronized静态方法和非静态方法,分别怎么进行2.volatile作用,原理,怎么保证可见性的,内存屏障3.你了解那些锁,乐观锁和悲观锁,为什么读要加锁,乐观锁为什么适合读场景,写场景不行么,会有什么问题,cas原
- 【Linux 内核源码分析】内存屏障
攻城狮百里
Linuxlinux
内存屏障内存屏障的作用是强制对内存的访问顺序进行排序,保证多线程或多核处理器下的内存访问的一致性和可见性。通过插入内存屏障,可以防止编译器对代码进行过度优化,也可以解决CPU乱序执行引起的问题,确保程序的执行顺序符合预期。Linux内核提供了多种内存屏障,包括通用的内存屏障、数据依赖屏障、写屏障、读屏障、释放操作和获取操作等。Linux内核中的内存屏障源码主要位于include/linux/com
- Java并发编程的艺术-Java内存模型
油多坏不了菜
基础共享变量(堆空间中所有的实例域,静态域,数组元素)的访问需要同步,而局部变量不会在线程间共享,所以不存在可见性问题。每一个线程都有一个私有的本地内存(抽象概念)源代码到最终的指令序列执行需经过编译器重排序和处理器重排序JMM要求java编译器在生成指令序列时,插入特定的内存屏障以禁止特定类型的处理器重排序。重排序重排序时遵守数据依赖性(写后读,读后写,写后写)as-if-serial语义:不管
- unity C#什么是线程锁,以及使用案例
极致人生-010
unityc#游戏引擎
文章目录原理1.**互斥**(MutualExclusion):2.**缓存一致性与内存屏障**:3.**操作系统的支持**:4.**编程语言级别的实现**:5.**避免死锁**:图示实例1实例2原理线程锁的原理主要是为了在多线程环境下提供对共享资源访问的同步机制,防止多个线程同时读写同一数据导致的数据不一致、竞态条件和死锁等问题。以下是线程锁基本工作原理的概述:1.互斥(MutualExclus
- 深入了解Java多线程编程:JVM内存模型与同步机制
Ernest_Feng
jvm并发编程学习指南javajvm开发语言
多线程编程是当今软件开发中不可避免的话题之一。在Java中,了解JVM内存模型及相关概念对编写正确、高效的多线程代码至关重要。本文将深入探讨JVM内存模型、重排序、内存屏障、happen-before关系、主内存、工作内存以及同步机制,并通过具体案例进行原理分析。1.JVM内存模型Java虚拟机的内存模型定义了线程如何与内存交互,确保多线程程序的正确性。它包括主内存和工作内存两个部分,线程之间通过
- 浅析内存一致性:内存屏障
Aspiresky
计算机体系结构开发语言
文章目录概述内存乱序访问StoreBuffer和InvalidateQueueStoreBufferStoreForwardingStoreBuffer与内存屏障InvalidateQueueInvalidateQueue与内存屏障内存屏障分类编译器屏障CPU内存屏障相关参考概述内存屏障,是一类同步屏障指令,是CPU或编译器在对内存随机访问的操作中的一个同步点,使得此点之前的所有读写操作都执行后才
- 浅析ARMv8体系结构:A64指令集
Aspiresky
#Arm体系结构linux服务器
文章目录A64指令编码格式加载与存储指令寻址模式变基模式前变基模式后变基模式PC相对地址模式伪指令加载与存储指令的变种不同位宽的加载与存储指令多字节内存加载和存储指令基地址偏移量模式前变基模式后变基模式跳转指令返回指令比较并跳转指令其它指令内存独占访问指令异常处理指令内存屏障指令相关参考A64指令编码格式A64指令集中每条指令的宽度为32位,其中第24〜28位用来识别指令的分类,格式如下:op0字
- 【JAVA】为什么代码会重排序
还在路上的秃头
JAVAjava开发语言笔记面试
个人博客:个人主页个人专栏:JAVA⛳️功不唐捐,玉汝于成目录前言正文编译器重排序:处理器重排序:内存屏障(MemoryBarriers):结语我的其他博客前言在并发编程中,重排序是一项为了提高性能而进行的优化策略。理解重排序的原理和可能引发的问题对于编写高效且正确的多线程代码至关重要。Java提供了一些机制,如内存屏障,来帮助开发者在多线程环境下保持程序的正确性和可靠性。正文在Java中,重排序
- volatile底层原理
不进大厂不改名二号
#jucjava
前言volatile是轻量级的synchronized,是Java内部的一个轻量级锁volatile具有三大特性:可见性:在多线程中保证了共享变量的“可见性”。(当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。)原子性:对任意单个volatile变量的读/写具有原子性,但类似于volatile++这种复合操作不具有原子性。禁止指令重排:volatile变量读/写操作会加“内存屏障”,
- Java中【内存屏障】的来龙去脉
佩洛君
面试学习Java必看java开发语言
文章目录一、为什么需要内存屏障二、内存屏障定义三、Java中的内存屏障:volatile关键字和同步代码块(synchronizedblocks)一、为什么需要内存屏障众所周知,CPU、内存、I/O设备的速度是有极大差异的,为了合理利用CPU的高性能,平衡这三者的速度差异,计算机体系结构、操作系统、编译程序都做出了贡献,主要体现为:CPU增加了缓存,以均衡与内存的速度差异;//导致可见性问题操作系
- Mesi协议与内存屏障
zhanglehes
操作系统后端
Mesi协议和内存屏障都是和计算机并发相关的概念。什么是Mesi协议计算机存储分层多核cpu带来的问题而随着CPU的发展,CPU逐渐发展成了多核,CPU可以同时使用多个核心控制器执行线程任务,当然CPU处理同时处理线程任务的速度也越来越快了,但随之也产生了一个问题,多核CPU每个核心控制器工作的时候都会有自己独立的CPU缓存,每个核心控制器都执行任务的时候都是操作的自己的CPU缓存,CPU1与CP
- cpu缓存一致性
W_GJ
cpu计算机基础缓存后端
文章目录cpu缓存一致性缓存的出现:多核之后带来的缓存一致性问题,如何解决LOCK指令(刚好可以实现上述的目标)LOCK指令特性内存屏障特性编译器屏障的作用MESI协议为什么有了MESI协议还需要内存屏障问题:总结:附带:参考cpu缓存一致性缓存的出现:提高内存的访问速度(时间、空间局部性),指令、数据的预取多核之后带来的缓存一致性问题,如何解决锁总线MESI协议(总线嗅探机制)+内存屏障LOCK
- Java多线程及线程池
谭某人66
多线程java
1.volatile内存模型的相关概念Java并发编程:volatile关键字解析-Matrix海子-博客园(cnblogs.com)在JVM底层volatile是采用“内存屏障”来实现的。大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快
- 3_并发编程可见性(volatile)之缓存锁内存屏障过程
java之书
java进阶_并发编程缓存并发编程volatile内存屏障指令重排
并发编程可见性volatile1.背景原来从下面的程序可以知道main线程把stop修改成false,而在t1线程没有中没有读取到stop值为false,所以导致了t1线程不能够停止。从而说明stop值在线程t1不可见,解决这个问题在stop变量上添加volatile即可(publicstaticvolatilebooleanstop=true;)publicclassVolatileDemo{p
- linux 热补丁机制基本概念
内核新视界
linuxlinuxkpatchlivepatch
linux热补丁技术叫livepatch机制,可以在不重启内核的情况下应用补丁到内核中,常用于服务器环境,比如服务器处于生产环境不能随意重启,而为了应对某些临时发现漏洞修补,则可以通过该机制进行动态修复。依赖于kprobe和ftrace机制来实现patch注入。需要一致性模型一致性模型:一般patch修复不会改变一个函数的语义,只是为了添加一个null指针或者边界检查,添加一些内存屏障,或者给临界
- 内存屏障是什么
CharlesKai
内存屏障多处理器
在多线程编程中,内存屏障是一种非常重要的同步机制。多个线程同时访问同一份数据时,会出现线程安全性问题,需要使用内存屏障来保证线程之间的数据同步。内存屏障可以保证内存操作的有序性和可见性,避免因为指令重排序、缓存一致性等问题导致的线程安全性问题,以此提高程序的正确性和稳定性。内存屏障可以分为四类:读屏障、写屏障、全屏障和加入屏障。每种屏障都有其特定的作用,开发者需要深入理解这些屏障的原理和使用方法。
- 内存次序之内存栅栏
nullptroot
多线程c++c++
内存栅栏内存栅栏其实就是强制施加一定的内存次序,又不用更改数据,又被成为内存卡、内存屏障,其实就是相当于在代码中画出界限,规定一些操作的同步关系。两个规则首先是内存次序位释放的栅栏也就是std::atomic_thread_fence(std::memory_order_release);std::atomic\_thread\_fence(std::memory\_order\_release)
- volatile有序性和可见性底层原理
intimexy
Java基础知识
文章目录1、缓存一致性2、JMM3、volatile可见性原理1、lock前缀指令角度2、内存屏障角度4、volatile有序性原理1、指令重排序2、内存屏障角度5、happens-before规则6、as-if-serial语义1、数据依赖性2、as-if-serial语义7、指令重排序面试题1、缓存一致性1、首先,编译之后Java代码会被编译成字节码.class文件,在运行时会被加载到JVM中
- java责任链模式
3213213333332132
java责任链模式村民告县长
责任链模式,通常就是一个请求从最低级开始往上层层的请求,当在某一层满足条件时,请求将被处理,当请求到最高层仍未满足时,则请求不会被处理。
就是一个请求在这个链条的责任范围内,会被相应的处理,如果超出链条的责任范围外,请求不会被相应的处理。
下面代码模拟这样的效果:
创建一个政府抽象类,方便所有的具体政府部门继承它。
package 责任链模式;
/**
*
- linux、mysql、nginx、tomcat 性能参数优化
ronin47
一、linux 系统内核参数
/etc/sysctl.conf文件常用参数 net.core.netdev_max_backlog = 32768 #允许送到队列的数据包的最大数目
net.core.rmem_max = 8388608 #SOCKET读缓存区大小
net.core.wmem_max = 8388608 #SOCKET写缓存区大
- php命令行界面
dcj3sjt126com
PHPcli
常用选项
php -v
php -i PHP安装的有关信息
php -h 访问帮助文件
php -m 列出编译到当前PHP安装的所有模块
执行一段代码
php -r 'echo "hello, world!";'
php -r 'echo "Hello, World!\n";'
php -r '$ts = filemtime("
- Filter&Session
171815164
session
Filter
HttpServletRequest requ = (HttpServletRequest) req;
HttpSession session = requ.getSession();
if (session.getAttribute("admin") == null) {
PrintWriter out = res.ge
- 连接池与Spring,Hibernate结合
g21121
Hibernate
前几篇关于Java连接池的介绍都是基于Java应用的,而我们常用的场景是与Spring和ORM框架结合,下面就利用实例学习一下这方面的配置。
1.下载相关内容: &nb
- [简单]mybatis判断数字类型
53873039oycg
mybatis
昨天同事反馈mybatis保存不了int类型的属性,一直报错,错误信息如下:
Caused by: java.lang.NumberFormatException: For input string: "null"
at sun.mis
- 项目启动时或者启动后ava.lang.OutOfMemoryError: PermGen space
程序员是怎么炼成的
eclipsejvmtomcatcatalina.sheclipse.ini
在启动比较大的项目时,因为存在大量的jsp页面,所以在编译的时候会生成很多的.class文件,.class文件是都会被加载到jvm的方法区中,如果要加载的class文件很多,就会出现方法区溢出异常 java.lang.OutOfMemoryError: PermGen space.
解决办法是点击eclipse里的tomcat,在
- 我的crm小结
aijuans
crm
各种原因吧,crm今天才完了。主要是接触了几个新技术:
Struts2、poi、ibatis这几个都是以前的项目中用过的。
Jsf、tapestry是这次新接触的,都是界面层的框架,用起来也不难。思路和struts不太一样,传说比较简单方便。不过个人感觉还是struts用着顺手啊,当然springmvc也很顺手,不知道是因为习惯还是什么。jsf和tapestry应用的时候需要知道他们的标签、主
- spring里配置使用hibernate的二级缓存几步
antonyup_2006
javaspringHibernatexmlcache
.在spring的配置文件中 applicationContent.xml,hibernate部分加入
xml 代码
<prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
<prop key="hi
- JAVA基础面试题
百合不是茶
抽象实现接口String类接口继承抽象类继承实体类自定义异常
/* * 栈(stack):主要保存基本类型(或者叫内置类型)(char、byte、short、 *int、long、 float、double、boolean)和对象的引用,数据可以共享,速度仅次于 * 寄存器(register),快于堆。堆(heap):用于存储对象。 */ &
- 让sqlmap文件 "继承" 起来
bijian1013
javaibatissqlmap
多个项目中使用ibatis , 和数据库表对应的 sqlmap文件(增删改查等基本语句),dao, pojo 都是由工具自动生成的, 现在将这些自动生成的文件放在一个单独的工程中,其它项目工程中通过jar包来引用 ,并通过"继承"为基础的sqlmap文件,dao,pojo 添加新的方法来满足项
- 精通Oracle10编程SQL(13)开发触发器
bijian1013
oracle数据库plsql
/*
*开发触发器
*/
--得到日期是周几
select to_char(sysdate+4,'DY','nls_date_language=AMERICAN') from dual;
select to_char(sysdate,'DY','nls_date_language=AMERICAN') from dual;
--建立BEFORE语句触发器
CREATE O
- 【EhCache三】EhCache查询
bit1129
ehcache
本文介绍EhCache查询缓存中数据,EhCache提供了类似Hibernate的查询API,可以按照给定的条件进行查询。
要对EhCache进行查询,需要在ehcache.xml中设定要查询的属性
数据准备
@Before
public void setUp() {
//加载EhCache配置文件
Inpu
- CXF框架入门实例
白糖_
springWeb框架webserviceservlet
CXF是apache旗下的开源框架,由Celtix + XFire这两门经典的框架合成,是一套非常流行的web service框架。
它提供了JAX-WS的全面支持,并且可以根据实际项目的需要,采用代码优先(Code First)或者 WSDL 优先(WSDL First)来轻松地实现 Web Services 的发布和使用,同时它能与spring进行完美结合。
在apache cxf官网提供
- angular.equals
boyitech
AngularJSAngularJS APIAnguarJS 中文APIangular.equals
angular.equals
描述:
比较两个值或者两个对象是不是 相等。还支持值的类型,正则表达式和数组的比较。 两个值或对象被认为是 相等的前提条件是以下的情况至少能满足一项:
两个值或者对象能通过=== (恒等) 的比较
两个值或者对象是同样类型,并且他们的属性都能通过angular
- java-腾讯暑期实习生-输入一个数组A[1,2,...n],求输入B,使得数组B中的第i个数字B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]
bylijinnan
java
这道题的具体思路请参看 何海涛的微博:http://weibo.com/zhedahht
import java.math.BigInteger;
import java.util.Arrays;
public class CreateBFromATencent {
/**
* 题目:输入一个数组A[1,2,...n],求输入B,使得数组B中的第i个数字B[i]=A
- FastDFS 的安装和配置 修订版
Chen.H
linuxfastDFS分布式文件系统
FastDFS Home:http://code.google.com/p/fastdfs/
1. 安装
http://code.google.com/p/fastdfs/wiki/Setup http://hi.baidu.com/leolance/blog/item/3c273327978ae55f93580703.html
安装libevent (对libevent的版本要求为1.4.
- [强人工智能]拓扑扫描与自适应构造器
comsci
人工智能
当我们面对一个有限拓扑网络的时候,在对已知的拓扑结构进行分析之后,发现在连通点之后,还存在若干个子网络,且这些网络的结构是未知的,数据库中并未存在这些网络的拓扑结构数据....这个时候,我们该怎么办呢?
那么,现在我们必须设计新的模块和代码包来处理上面的问题
- oracle merge into的用法
daizj
oraclesqlmerget into
Oracle中merge into的使用
http://blog.csdn.net/yuzhic/article/details/1896878
http://blog.csdn.net/macle2010/article/details/5980965
该命令使用一条语句从一个或者多个数据源中完成对表的更新和插入数据. ORACLE 9i 中,使用此命令必须同时指定UPDATE 和INSE
- 不适合使用Hadoop的场景
datamachine
hadoop
转自:http://dev.yesky.com/296/35381296.shtml。
Hadoop通常被认定是能够帮助你解决所有问题的唯一方案。 当人们提到“大数据”或是“数据分析”等相关问题的时候,会听到脱口而出的回答:Hadoop! 实际上Hadoop被设计和建造出来,是用来解决一系列特定问题的。对某些问题来说,Hadoop至多算是一个不好的选择,对另一些问题来说,选择Ha
- YII findAll的用法
dcj3sjt126com
yii
看文档比较糊涂,其实挺简单的:
$predictions=Prediction::model()->findAll("uid=:uid",array(":uid"=>10));
第一个参数是选择条件:”uid=10″。其中:uid是一个占位符,在后面的array(“:uid”=>10)对齐进行了赋值;
更完善的查询需要
- vim 常用 NERDTree 快捷键
dcj3sjt126com
vim
下面给大家整理了一些vim NERDTree的常用快捷键了,这里几乎包括了所有的快捷键了,希望文章对各位会带来帮助。
切换工作台和目录
ctrl + w + h 光标 focus 左侧树形目录ctrl + w + l 光标 focus 右侧文件显示窗口ctrl + w + w 光标自动在左右侧窗口切换ctrl + w + r 移动当前窗口的布局位置
o 在已有窗口中打开文件、目录或书签,并跳
- Java把目录下的文件打印出来
蕃薯耀
列出目录下的文件文件夹下面的文件目录下的文件
Java把目录下的文件打印出来
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2015年7月11日 11:02:
- linux远程桌面----VNCServer与rdesktop
hanqunfeng
Desktop
windows远程桌面到linux,需要在linux上安装vncserver,并开启vnc服务,同时需要在windows下使用vnc-viewer访问Linux。vncserver同时支持linux远程桌面到linux。
linux远程桌面到windows,需要在linux上安装rdesktop,同时开启windows的远程桌面访问。
下面分别介绍,以windo
- guava中的join和split功能
jackyrong
java
guava库中,包含了很好的join和split的功能,例子如下:
1) 将LIST转换为使用字符串连接的字符串
List<String> names = Lists.newArrayList("John", "Jane", "Adam", "Tom");
- Web开发技术十年发展历程
lampcy
androidWeb浏览器html5
回顾web开发技术这十年发展历程:
Ajax
03年的时候我上六年级,那时候网吧刚在小县城的角落萌生。传奇,大话西游第一代网游一时风靡。我抱着试一试的心态给了网吧老板两块钱想申请个号玩玩,然后接下来的一个小时我一直在,注,册,账,号。
彼时网吧用的512k的带宽,注册的时候,填了一堆信息,提交,页面跳转,嘣,”您填写的信息有误,请重填”。然后跳转回注册页面,以此循环。我现在时常想,如果当时a
- 架构师之mima-----------------mina的非NIO控制IOBuffer(说得比较好)
nannan408
buffer
1.前言。
如题。
2.代码。
IoService
IoService是一个接口,有两种实现:IoAcceptor和IoConnector;其中IoAcceptor是针对Server端的实现,IoConnector是针对Client端的实现;IoService的职责包括:
1、监听器管理
2、IoHandler
3、IoSession
- ORA-00054:resource busy and acquire with NOWAIT specified
Everyday都不同
oraclesessionLock
[Oracle]
今天对一个数据量很大的表进行操作时,出现如题所示的异常。此时表明数据库的事务处于“忙”的状态,而且被lock了,所以必须先关闭占用的session。
step1,查看被lock的session:
select t2.username, t2.sid, t2.serial#, t2.logon_time
from v$locked_obj
- javascript学习笔记
tntxia
JavaScript
javascript里面有6种基本类型的值:number、string、boolean、object、function和undefined。number:就是数字值,包括整数、小数、NaN、正负无穷。string:字符串类型、单双引号引起来的内容。boolean:true、false object:表示所有的javascript对象,不用多说function:我们熟悉的方法,也就是
- Java enum的用法详解
xieke90
enum枚举
Java中枚举实现的分析:
示例:
public static enum SEVERITY{
INFO,WARN,ERROR
}
enum很像特殊的class,实际上enum声明定义的类型就是一个类。 而这些类都是类库中Enum类的子类 (java.l