- 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中
- mongodb3.03开启认证
21jhf
mongodb
下载了最新mongodb3.03版本,当使用--auth 参数命令行开启mongodb用户认证时遇到很多问题,现总结如下:
(百度上搜到的基本都是老版本的,看到db.addUser的就是,请忽略)
Windows下我做了一个bat文件,用来启动mongodb,命令行如下:
mongod --dbpath db\data --port 27017 --directoryperdb --logp
- 【Spark103】Task not serializable
bit1129
Serializable
Task not serializable是Spark开发过程最令人头疼的问题之一,这里记录下出现这个问题的两个实例,一个是自己遇到的,另一个是stackoverflow上看到。等有时间了再仔细探究出现Task not serialiazable的各种原因以及出现问题后如何快速定位问题的所在,至少目前阶段碰到此类问题,没有什么章法
1.
package spark.exampl
- 你所熟知的 LRU(最近最少使用)
dalan_123
java
关于LRU这个名词在很多地方或听说,或使用,接下来看下lru缓存回收的实现
1、大体的想法
a、查询出最近最晚使用的项
b、给最近的使用的项做标记
通过使用链表就可以完成这两个操作,关于最近最少使用的项只需要返回链表的尾部;标记最近使用的项,只需要将该项移除并放置到头部,那么难点就出现 你如何能够快速在链表定位对应的该项?
这时候多
- Javascript 跨域
周凡杨
JavaScriptjsonp跨域cross-domain
 
- linux下安装apache服务器
g21121
apache
安装apache
下载windows版本apache,下载地址:http://httpd.apache.org/download.cgi
1.windows下安装apache
Windows下安装apache比较简单,注意选择路径和端口即可,这里就不再赘述了。 2.linux下安装apache:
下载之后上传到linux的相关目录,这里指定为/home/apach
- FineReport的JS编辑框和URL地址栏语法简介
老A不折腾
finereportweb报表报表软件语法总结
JS编辑框:
1.FineReport的js。
作为一款BS产品,browser端的JavaScript是必不可少的。
FineReport中的js是已经调用了finereport.js的。
大家知道,预览报表时,报表servlet会将cpt模板转为html,在这个html的head头部中会引入FineReport的js,这个finereport.js中包含了许多内置的fun
- 根据STATUS信息对MySQL进行优化
墙头上一根草
status
mysql 查看当前正在执行的操作,即正在执行的sql语句的方法为:
show processlist 命令
mysql> show global status;可以列出MySQL服务器运行各种状态值,我个人较喜欢的用法是show status like '查询值%';一、慢查询mysql> show variab
- 我的spring学习笔记7-Spring的Bean配置文件给Bean定义别名
aijuans
Spring 3
本文介绍如何给Spring的Bean配置文件的Bean定义别名?
原始的
<bean id="business" class="onlyfun.caterpillar.device.Business">
<property name="writer">
<ref b
- 高性能mysql 之 性能剖析
annan211
性能mysqlmysql 性能剖析剖析
1 定义性能优化
mysql服务器性能,此处定义为 响应时间。
在解释性能优化之前,先来消除一个误解,很多人认为,性能优化就是降低cpu的利用率或者减少对资源的使用。
这是一个陷阱。
资源时用来消耗并用来工作的,所以有时候消耗更多的资源能够加快查询速度,保持cpu忙绿,这是必要的。很多时候发现
编译进了新版本的InnoDB之后,cpu利用率上升的很厉害,这并不
- 主外键和索引唯一性约束
百合不是茶
索引唯一性约束主外键约束联机删除
目标;第一步;创建两张表 用户表和文章表
第二步;发表文章
1,建表;
---用户表 BlogUsers
--userID唯一的
--userName
--pwd
--sex
create
- 线程的调度
bijian1013
java多线程thread线程的调度java多线程
1. Java提供一个线程调度程序来监控程序中启动后进入可运行状态的所有线程。线程调度程序按照线程的优先级决定应调度哪些线程来执行。
2. 多数线程的调度是抢占式的(即我想中断程序运行就中断,不需要和将被中断的程序协商)
a) 
- 查看日志常用命令
bijian1013
linux命令unix
一.日志查找方法,可以用通配符查某台主机上的所有服务器grep "关键字" /wls/applogs/custom-*/error.log
二.查看日志常用命令1.grep '关键字' error.log:在error.log中搜索'关键字'2.grep -C10 '关键字' error.log:显示关键字前后10行记录3.grep '关键字' error.l
- 【持久化框架MyBatis3一】MyBatis版HelloWorld
bit1129
helloworld
MyBatis这个系列的文章,主要参考《Java Persistence with MyBatis 3》。
样例数据
本文以MySQL数据库为例,建立一个STUDENTS表,插入两条数据,然后进行单表的增删改查
CREATE TABLE STUDENTS
(
stud_id int(11) NOT NULL AUTO_INCREMENT,
- 【Hadoop十五】Hadoop Counter
bit1129
hadoop
1. 只有Map任务的Map Reduce Job
File System Counters
FILE: Number of bytes read=3629530
FILE: Number of bytes written=98312
FILE: Number of read operations=0
FILE: Number of lar
- 解决Tomcat数据连接池无法释放
ronin47
tomcat 连接池 优化
近段时间,公司的检测中心报表系统(SMC)的开发人员时不时找到我,说用户老是出现无法登录的情况。前些日子因为手头上 有Jboss集群的测试工作,发现用户不能登录时,都是在Tomcat中将这个项目Reload一下就好了,不过只是治标而已,因为大概几个小时之后又会 再次出现无法登录的情况。
今天上午,开发人员小毛又找到我,要我协助将这个问题根治一下,拖太久用户难保不投诉。
简单分析了一
- java-75-二叉树两结点的最低共同父结点
bylijinnan
java
import java.util.LinkedList;
import java.util.List;
import ljn.help.*;
public class BTreeLowestParentOfTwoNodes {
public static void main(String[] args) {
/*
* node data is stored in
- 行业垂直搜索引擎网页抓取项目
carlwu
LuceneNutchHeritrixSolr
公司有一个搜索引擎项目,希望各路高人有空来帮忙指导,谢谢!
这是详细需求:
(1) 通过提供的网站地址(大概100-200个网站),网页抓取程序能不断抓取网页和其它类型的文件(如Excel、PDF、Word、ppt及zip类型),并且程序能够根据事先提供的规则,过滤掉不相干的下载内容。
(2) 程序能够搜索这些抓取的内容,并能对这些抓取文件按照油田名进行分类,然后放到服务器不同的目录中。
- [通讯与服务]在总带宽资源没有大幅增加之前,不适宜大幅度降低资费
comsci
资源
降低通讯服务资费,就意味着有更多的用户进入,就意味着通讯服务提供商要接待和服务更多的用户,在总体运维成本没有由于技术升级而大幅下降的情况下,这种降低资费的行为将导致每个用户的平均带宽不断下降,而享受到的服务质量也在下降,这对用户和服务商都是不利的。。。。。。。。
&nbs
- Java时区转换及时间格式
Cwind
java
本文介绍Java API 中 Date, Calendar, TimeZone和DateFormat的使用,以及不同时区时间相互转化的方法和原理。
问题描述:
向处于不同时区的服务器发请求时需要考虑时区转换的问题。譬如,服务器位于东八区(北京时间,GMT+8:00),而身处东四区的用户想要查询当天的销售记录。则需把东四区的“今天”这个时间范围转换为服务器所在时区的时间范围。
- readonly,只读,不可用
dashuaifu
jsjspdisablereadOnlyreadOnly
readOnly 和 readonly 不同,在做js开发时一定要注意函数大小写和jsp黄线的警告!!!我就经历过这么一件事:
使用readOnly在某些浏览器或同一浏览器不同版本有的可以实现“只读”功能,有的就不行,而且函数readOnly有黄线警告!!!就这样被折磨了不短时间!!!(期间使用过disable函数,但是发现disable函数之后后台接收不到前台的的数据!!!)
- LABjs、RequireJS、SeaJS 介绍
dcj3sjt126com
jsWeb
LABjs 的核心是 LAB(Loading and Blocking):Loading 指异步并行加载,Blocking 是指同步等待执行。LABjs 通过优雅的语法(script 和 wait)实现了这两大特性,核心价值是性能优化。LABjs 是一个文件加载器。RequireJS 和 SeaJS 则是模块加载器,倡导的是一种模块化开发理念,核心价值是让 JavaScript 的模块化开发变得更
- [应用结构]入口脚本
dcj3sjt126com
PHPyii2
入口脚本
入口脚本是应用启动流程中的第一环,一个应用(不管是网页应用还是控制台应用)只有一个入口脚本。终端用户的请求通过入口脚本实例化应用并将将请求转发到应用。
Web 应用的入口脚本必须放在终端用户能够访问的目录下,通常命名为 index.php,也可以使用 Web 服务器能定位到的其他名称。
控制台应用的入口脚本一般在应用根目录下命名为 yii(后缀为.php),该文
- haoop shell命令
eksliang
hadoophadoop shell
cat
chgrp
chmod
chown
copyFromLocal
copyToLocal
cp
du
dus
expunge
get
getmerge
ls
lsr
mkdir
movefromLocal
mv
put
rm
rmr
setrep
stat
tail
test
text
- MultiStateView不同的状态下显示不同的界面
gundumw100
android
只要将指定的view放在该控件里面,可以该view在不同的状态下显示不同的界面,这对ListView很有用,比如加载界面,空白界面,错误界面。而且这些见面由你指定布局,非常灵活。
PS:ListView虽然可以设置一个EmptyView,但使用起来不方便,不灵活,有点累赘。
<com.kennyc.view.MultiStateView xmlns:android=&qu
- jQuery实现页面内锚点平滑跳转
ini
JavaScripthtmljqueryhtml5css
平时我们做导航滚动到内容都是通过锚点来做,刷的一下就直接跳到内容了,没有一丝的滚动效果,而且 url 链接最后会有“小尾巴”,就像#keleyi,今天我就介绍一款 jquery 做的滚动的特效,既可以设置滚动速度,又可以在 url 链接上没有“小尾巴”。
效果体验:http://keleyi.com/keleyi/phtml/jqtexiao/37.htmHTML文件代码:
&
- kafka offset迁移
kane_xie
kafka
在早前的kafka版本中(0.8.0),offset是被存储在zookeeper中的。
到当前版本(0.8.2)为止,kafka同时支持offset存储在zookeeper和offset manager(broker)中。
从官方的说明来看,未来offset的zookeeper存储将会被弃用。因此现有的基于kafka的项目如果今后计划保持更新的话,可以考虑在合适
- android > 搭建 cordova 环境
mft8899
android
1 , 安装 node.js
http://nodejs.org
node -v 查看版本
2, 安装 npm
可以先从 https://github.com/isaacs/npm/tags 下载 源码 解压到
- java封装的比较器,比较是否全相同,获取不同字段名字
qifeifei
非常实用的java比较器,贴上代码:
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
i
- 记录一些函数用法
.Aky.
位运算PHP数据库函数IP
高手们照旧忽略。
想弄个全天朝IP段数据库,找了个今天最新更新的国内所有运营商IP段,copy到文件,用文件函数,字符串函数把玩下。分割出startIp和endIp这样格式写入.txt文件,直接用phpmyadmin导入.csv文件的形式导入。(生命在于折腾,也许你们觉得我傻X,直接下载人家弄好的导入不就可以,做自己的菜鸟,让别人去说吧)
当然用到了ip2long()函数把字符串转为整型数
- sublime text 3 rust
wudixiaotie
Sublime Text
1.sublime text 3 => install package => Rust
2.cd ~/.config/sublime-text-3/Packages
3.mkdir rust
4.git clone https://github.com/sp0/rust-style
5.cd rust-style
6.cargo build --release
7.ctrl