- Tecent libco C++协程库初探
Y. F. Zhang
C++多线程编程Linuxc++开发语言算法
安装https://github.com/Tencent/libco上把release版本的下下来:mkdirbuild&&cdbuild&&cmake..&&make拿到动态和静态库啦,然后cp到/usr/local/lib就完成安装啦。项目有很多example,直接进根目录make就行了。libco原理主要是理解resume和yield,非常非常强烈建议的blog:https://blog.d
- [libco] libco mysql 连接池
wenfh2020
基于libco的mysql连接池,支持基本的mysql读写访问,支持多个连接,多个节点,支持空闲连接回收。文章来源:[libco]libcomysql连接池1.设计mysql连接池,每个链接被分配到一个协程里运行。主要有几部分组成,详见下图:当用户协程访问mysql时,这个请求以任务形式,添加manager的任务队列,然后用户协程切出去等待唤醒。manager协程主要负责链接调度,还有任务分派,它
- [libco] co_kimserver 简介
wenfh2020
co_kimserver是基于libco的高性能TCP网络通信框架。详细请查看:github。文章来源:[libco]co_kimserver简介1.简述co_kimserver是高性能TCP网络通信框架。多进程工作模式(manager/workers)。基于腾讯开源的轻量级协程库libco。主要使用C/C++11语言开发。支持tcp协议。使用protobuf封装通信协议。支持访问mysql,re
- 协程分析之context上下文切换
waruqi
tboxboost协程跨平台网络异步开发
协程现在已经不是个新东西了,很多语言都提供了原生支持,也有很多开源的库也提供了协程支持。最近为了要给tbox增加协程,特地研究了下各大开源协程库的实现,例如:libtask,libmill,boost,libco,libgo等等。他们都属于stackfull协程,每个协程有完整的私有堆栈,里面的核心就是上下文切换(context),而stackless的协程,比较出名的有protothreads,
- [libco] 删除协程的正确姿势
wenfh2020
如果你认为只需要简单调用co_release就能将libco的协程删除,那等待你的可能就是定时炸弹。文章来源:*[libco]删除协程的正确姿势1.正确姿势如何才能安全删除一个协程?禁止删除一个正在工作的协程,删除已经停止工作(stCoRoutine_t.cEnd==1)的协程是比较安全的。/*协程数据结构。*/structstCoRoutine_t{...charcEnd;/*协程是否结束。*/
- libco使用
Tomtoms
libco示例#include#include#include#include#include#include#include"coctx.h"#include"co_routine.h"#include"co_routine_inner.h"void*RoutineFunc(void*args){co_enable_hook_sys();int*routineid=(int*)args;whil
- [libco] 删除协程的正确姿势
wenfh2020
libco协程libco协程删除
如果你认为只需要简单调用co_release就能将libco的协程删除,那等待你的可能就是定时炸弹。文章来源:*[libco]删除协程的正确姿势1.正确姿势如何才能安全删除一个协程?禁止删除一个正在工作的协程,删除已经停止工作(stCoRoutine_t.cEnd==1)的协程是比较安全的。/*协程数据结构。*/structstCoRoutine_t{...charcEnd;/*协程是否结束。*/
- libco —— 协程调度(libco终章)
shenmingik
#协程libco协程libco新星计划
文章目录协程的阻塞和线程的阻塞主协程和协程调度的关系再看协程的挂起和恢复执行参考文献呼,整个libco库终于快是要剖析完了。整个人算是对协程以及操作系统的调度有了新的认识。协程的阻塞和线程的阻塞之前的博客,我们分析了libco的协程从创建到启动,挂起以及最后退出的一个过程。同时,我们也认识到,协程本质的执行是串行的。在之前协程的安装与使用中,我们提到了一个生产者消费者例子。在producer协程函
- libco 协程库详解
蓝子娃娃
C/C++协程
文章目录协程是什么?协程用在哪里?协程实现逻辑协程例子C/C++协程libco协程的创建和切换协程的创建和运行协程上下文的创建和切换如何使用libco通过Epoll管理和唤醒协程EPOLL事件循环协程是什么?轻量级的调度运行单位。协程不是进程,也不是线程,它就是一个函数,一个特殊的函数——可以在某个地方挂起,并且可以重新在挂起处继续运行。所以说,协程与进程、线程相比,不是一个维度的概念。一个进程可
- 基于libco的c++协程实现1(前备知识)
HjasnJH
协程服务器后端
为什么会有协程普通的应用程序编写,在c++最多的实现方式是多线程来实现异步操作多线程存在的问题1、多线程切换带来的线程用户台到内核态的开销增大2、多线程要解决资源竞争问题。3、异步编程业务逻辑不在一起,对代码的理解及阅读不友好。而有没有一种方式,能够实现用同步的方式,实现异步的性能,go语言中有原生的协程。所以go语言编写网络程序有天生的优势,c++20提出语言上支持协程,但是目前大多数人使用的可
- 基于libco的c++协程实现5(时间轮定时器)
HjasnJH
协程数据结构
在后端的开发中,定时器有很广泛的应用。比如:⼼跳检测倒计时游戏开发的技能冷却redis的键值的有效期等等,都会使用到定时器。定时器的实现数据结构选择红⿊树对于增删查,时间复杂度为O(logn),对于红⿊树最⼩节点为最左侧节点,时间复杂度O(logn)最⼩堆对于增查,时间复杂度为O(logn),对于删时间复杂度为O(n),但是可以通过辅助数据结构(map或者hashtable来快速索引节点)来加快删
- libco源码剖析(3)-定时器与事件注册
怀民_亦未寝
c++后端linux服务器
libco源码剖析(3)-定时器与事件注册引言libco源码剖析(1)-共享栈与协程的创建libco源码剖析(2)-协程生命周期与协程调度本文会继续介绍libco定时器的实现和协程事件的注册。定时器服务器程序通常需要处理众多定时事件,如何有效地组织与管理这些定时事件对服务器的性能至关重要。为此,我们要将每个定时事件分别封装成定时器,并使用某种容器类数据结构,比如链表、排序链表和时间轮,将所有定时器
- 微信 libco 协程库原理剖析
腾讯技术工程
操作系统javalinuxepoll编程语言
作者:alexzmzheng同Go语言一样,libco也是提供了同步风格编程模式,同时还能保证系统的高并发能力,本文主要剖析libco中的协程原理。简介libco是微信后台大规模使用的c/c++协程库,2013年至今稳定运行在微信后台的数万台机器上。libco通过仅有的几个函数接口co_create/co_resume/co_yield再配合co_poll,可以支持同步或者异步的写法,如线程库一样
- 基于libco的c++协程实现(时间轮定时器)
linux大本营
c++后端开发linux定时器时间轮
在后端的开发中,定时器有很广泛的应用。比如:心跳检测倒计时游戏开发的技能冷却redis的键值的有效期等等,都会使用到定时器。定时器的实现数据结构选择红黑树对于增删查,时间复杂度为O(logn),对于红黑树最⼩节点为最左侧节点,时间复杂度O(logn)最小堆对于增查,时间复杂度为O(logn),对于删时间复杂度为O(n),但是可以通过辅助数据结构(map或者hashtable来快速索引节点)来加快删
- Pebble协程库实现
fooboo
这部分准备分析下Pebble里的协程实现,它和上部分的Phxrpc协程有一部分相似点,即都使用了ucontext_t,也有协程管理器,调度器,定时器等设计思想,和Phxrpc不同的是定时器实现并非小根堆,是用了STL中的unordered_map组件;另外和Libco中的协程不同的是,后者没使用ucontext_t,直接使用汇编实现协程上下文切换的逻辑和数据结构,后期在分析Libco协程的时候会结
- C++ 20 协程总结
学习好烦啊
C++20协程C++c++20c++java
C++20协程总结介绍C++20提供的是非对称的、一等对象、无栈的协程(CoroutinesinC++20areasymmetric,first-class,andstackless)所谓协程,即用户级线程,一种用于将异步代码同步化的编程机制,使得程序的执行流可以在多个并行事务之间切换但又不必承担切换带来的过高的性能损耗。当前很多的编程语言都内置协程特性或者有自己的协程库,如C/C++的libco
- gdb list指向的源文件错误
cx7
在ubuntu下调试libco调试example_thread时遇到这样的问题gdblist显示的不是对应的源文件example_thread.cpp而是指向了另一个libco的源文件coctx_swap.S排查后发现是GCC的代码优化等级影响了调试符号的生成set(CMAKE_C_FLAGS${CMAKE_C_FLAGS}-g-fno-strict-aliasing-O2-Wall-export
- [libco] 协程调度
wenfh2020
libco通过co_resume和co_yield交替调度协程。文章来源:[libco]协程调度1.协程调度设计图来源:libco协程调度1.1.协程数组pCallStack协程数组,保存当前正在执行协程(注意:并不是所有协程)。pCallStack[0]是主协程,env->pCallStack[env->iCallStackSize-1]是当前协程。一般情况下数组大小为2,子协程在主协程里创建。
- linux c++11高性能协程库netco
我不是小康
我的服务器开发之路协程库网络编程linuxC++
目录一、开源协程库调研1、golang语言自带协程2、云风的coroutine协程库3、腾讯的libco协程库4、魅族的libgo协程库二、netco协程库概述三、netco的实现1、框架2、Context3、Coroutine4、对象池5、Epoller6、Timer7、Processor8、Scheduler9、netco_api10、Socket11、RWMutex四、使用五、后续一、开源协
- libgo 源码剖析(1. libgo简介与调度浅谈)
尚先生的博客
libgolinux
闲谈协程是一个很早的概念了,早些年的游戏行业中已经大规模地在使用,像lua、go这些语言中的协程原语已经相对比较完善了,一般来说直接使用就好,但是在系统后台开发上,出现的时间并不长。我是做C方向的后台开发,目前国内一些公司也开源了一些C协程库,但目前来说,还是在逐步完善的阶段。最早接触的C++协程库是腾讯微信的libco,可以说是相当轻量级的协程,网上关于libco的实现的文章也是相对较多,这里的
- C/C++ 协程库boost.coroutine2、魅族libgo、腾讯libco、开源libaco详解
Hello,C++!
最近研究高性能C++协程,网上了解到了魅族libgo、腾讯libco、开源libaco、boostcoroutine,这里记录一下。1什么是协程协程可以很轻量的在子例程中进行切换,它由程序员进行子例程的调度(即切换)而不像线程那样需要内核参与,同时也省去了内核线程切换的开销,因为一个协程切换保留的就是函数调用栈和当前指令的寄存器,而线程切换需要陷入内核态,改变线程对象状态。go语言就已经把协程作为
- C++libco协程
adce9
Libcolibco协程
什么是协程?协程:协同运行的子程序(函数);协程:协同运行的进程(shell中的概念)协程是能暂停执行以在之后恢复的函数。协程是无栈的:它们通过返回到调用方暂停执行,并且从栈分离存储恢复所要求的数据。这允许编写异步执行的顺序代码(例如不使用显式的回调来处理非阻塞I/O),还支持对惰性计算的无限序列上的算法及其他用途。协程可以被视为提供特殊控制流的语言级构造。与抢占式线程相比,协程开关是协作的(程序
- c++开源协程库libgo介绍及使用
特立独行的猫a
C++c++开发语言雅兰亭库协程libgo
协程这个概念,最近这几年可是相当地流行了。尤其go语言问世之后,内置的协程特性,完全屏蔽了操作系统线程的复杂细节。甚至使go开发者“只知有协程,不知有线程”了。当然C++也有高性能的协程库,比如我了解到的微信的libco、魅族的libgo、以及libcopp,开源libaco、boost的coroutine,cppcoro,阿里的雅兰亭库(基于c++20特性封装好用的库)。协程简介协程不是进程或线
- Docker学习文档
Man–Zha
笔记dockerioslinux
DockerBuildonce,RunanywhereDocker使用Google公司推出的Go语言进行开发实现,基于Linux内核的cgroup,namespace,以及AUFS类的UnionFS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于LXC,从0.7版本以后开始去除LXC,转而使用自行开发的libco
- Libco Hook 机制浅析
路过的摸鱼侠
LibcoHook机制浅析之前的文章里我们提到过Libco有一套Hook机制,可以通过协程的让出(yield)原语将系统的阻塞系统调用改造为非阻塞的,这篇文章我们将深入解析Hook机制到底是怎么运作的Hook机制的核心有两点提供自己的实现覆盖标准库(libc.so)的实现在
- [libco] 协程栈空间
wenfh2020
协程“栈”空间,有独立栈和共享栈,重点理解一下协程共享栈。文章来源:[libco]协程栈空间1.概述libco虽然支持海量协程,但是单线程,同一时刻只支持一个协程在工作。在一个时间段内,它通过调度,使多个协程不停切换,从而实现协程“并发”功能。协程“栈”空间,有独立栈,也有共享栈。这个“栈”添加了引号,其实它是在堆上分配的,因为它的协程函数工作原理与普通函数工作原理差不多,所以才叫“栈”。普通函数
- [libco] libco 工作流程
wenfh2020
libco设计初衷:为了方便编写C++高性能网络服务。高性能网络服务主要有两个点:IO非阻塞+多路复用技术。libco使用hook技术解决阻塞问题。libco事件驱动使用(epoll/kevent)。但是非阻塞+多路复用技术这个是异步回调实现方式,对用户开发非常不友好,所以协程的引入就是为了解决这个问题:用同步写代码方式实现异步功能,既保证了系统性能,又避免了复杂的异步回调逻辑。libco有三大模
- [libco] 协程切换理解思路
wenfh2020
程切换,可以理解为函数运行时上下文切换。文章来源:[libco]协程切换理解思路1.协程切换正常情况下,函数代码从头到尾串行执行,直到函数生命期结束。而协程切换却能将当前运行的函数,切换到另外一个函数运行,这是协程的神奇之处。2.划重点理解协程切换原理,首先需要理解函数的运行原理。(《x86-64下函数调用及栈帧原理》)协程是啥?它本质上就是一个函数体,与普通函数相比,它只是特殊一点而已。协程函数
- [libco] 协程库学习,测试连接 mysql
wenfh2020
历史原因,一直使用libev作为服务底层;异步框架虽然性能比较高,但新人使用门槛非常高,而且串行的逻辑被打散为状态机,这也会严重影响生产效率。用同步方式实现异步功能,既保证了异步性能优势,又使得同步方式实现源码思路清晰,容易维护,这是协程的优势。带着这样的目的学习微信开源的一个轻量级网络协程库:libco。文章来源:[libco]协程库学习,测试连接mysql1.概述libco是轻量级的协程库,看
- fastcgi 异步实现和协程实现比较
肚腩照明月
介绍异步模型和协程模型都是原fastcgi的优化模型。cocgi是使用腾讯开源库libco实现的协程模式的fastcgi.mucgi是使用muduo开源库实现的异步模式的fastcgi.两者针对的场景略有不同。可以根据业务情况选择使用:对于网络抖动的应付能力,mucgi优于cocgi优于libfcgi。对于后端业务复杂度的应付能力,cocgi优于mucgi优于libfcgi。在一个系统中两者可以结
- java观察者模式
3213213333332132
java设计模式游戏观察者模式
观察者模式——顾名思义,就是一个对象观察另一个对象,当被观察的对象发生变化时,观察者也会跟着变化。
在日常中,我们配java环境变量时,设置一个JAVAHOME变量,这就是被观察者,使用了JAVAHOME变量的对象都是观察者,一旦JAVAHOME的路径改动,其他的也会跟着改动。
这样的例子很多,我想用小时候玩的老鹰捉小鸡游戏来简单的描绘观察者模式。
老鹰会变成观察者,母鸡和小鸡是
- TFS RESTful API 模拟上传测试
ronin47
TFS RESTful API 模拟上传测试。
细节参看这里:https://github.com/alibaba/nginx-tfs/blob/master/TFS_RESTful_API.markdown
模拟POST上传一个图片:
curl --data-binary @/opt/tfs.png http
- PHP常用设计模式单例, 工厂, 观察者, 责任链, 装饰, 策略,适配,桥接模式
dcj3sjt126com
设计模式PHP
// 多态, 在JAVA中是这样用的, 其实在PHP当中可以自然消除, 因为参数是动态的, 你传什么过来都可以, 不限制类型, 直接调用类的方法
abstract class Tiger {
public abstract function climb();
}
class XTiger extends Tiger {
public function climb()
- hibernate
171815164
Hibernate
main,save
Configuration conf =new Configuration().configure();
SessionFactory sf=conf.buildSessionFactory();
Session sess=sf.openSession();
Transaction tx=sess.beginTransaction();
News a=new
- Ant实例分析
g21121
ant
下面是一个Ant构建文件的实例,通过这个实例我们可以很清楚的理顺构建一个项目的顺序及依赖关系,从而编写出更加合理的构建文件。
下面是build.xml的代码:
<?xml version="1
- [简单]工作记录_接口返回405原因
53873039oycg
工作
最近调接口时候一直报错,错误信息是:
responseCode:405
responseMsg:Method Not Allowed
接口请求方式Post.
- 关于java.lang.ClassNotFoundException 和 java.lang.NoClassDefFoundError 的区别
程序员是怎么炼成的
真正完成类的加载工作是通过调用 defineClass来实现的;
而启动类的加载过程是通过调用 loadClass来实现的;
就是类加载器分为加载和定义
protected Class<?> findClass(String name) throws ClassNotFoundExcept
- JDBC学习笔记-JDBC详细的操作流程
aijuans
jdbc
所有的JDBC应用程序都具有下面的基本流程: 1、加载数据库驱动并建立到数据库的连接。 2、执行SQL语句。 3、处理结果。 4、从数据库断开连接释放资源。
下面我们就来仔细看一看每一个步骤:
其实按照上面所说每个阶段都可得单独拿出来写成一个独立的类方法文件。共别的应用来调用。
1、加载数据库驱动并建立到数据库的连接:
Html代码
St
- rome创建rss
antonyup_2006
tomcatcmsxmlstrutsOpera
引用
1.RSS标准
RSS标准比较混乱,主要有以下3个系列
RSS 0.9x / 2.0 : RSS技术诞生于1999年的网景公司(Netscape),其发布了一个0.9版本的规范。2001年,RSS技术标准的发展工作被Userland Software公司的戴夫 温那(Dave Winer)所接手。陆续发布了0.9x的系列版本。当W3C小组发布RSS 1.0后,Dave W
- html表格和表单基础
百合不是茶
html表格表单meta锚点
第一次用html来写东西,感觉压力山大,每次看见别人发的都是比较牛逼的 再看看自己什么都还不会,
html是一种标记语言,其实很简单都是固定的格式
_----------------------------------------表格和表单
表格是html的重要组成部分,表格用在body里面的
主要用法如下;
<table>
&
- ibatis如何传入完整的sql语句
bijian1013
javasqlibatis
ibatis如何传入完整的sql语句?进一步说,String str ="select * from test_table",我想把str传入ibatis中执行,是传递整条sql语句。
解决办法:
<
- 精通Oracle10编程SQL(14)开发动态SQL
bijian1013
oracle数据库plsql
/*
*开发动态SQL
*/
--使用EXECUTE IMMEDIATE处理DDL操作
CREATE OR REPLACE PROCEDURE drop_table(table_name varchar2)
is
sql_statement varchar2(100);
begin
sql_statement:='DROP TABLE '||table_name;
- 【Linux命令】Linux工作中常用命令
bit1129
linux命令
不断的总结工作中常用的Linux命令
1.查看端口被哪个进程占用
通过这个命令可以得到占用8085端口的进程号,然后通过ps -ef|grep 进程号得到进程的详细信息
netstat -anp | grep 8085
察看进程ID对应的进程占用的端口号
netstat -anp | grep 进程ID
&
- 优秀网站和文档收集
白糖_
网站
集成 Flex, Spring, Hibernate 构建应用程序
性能测试工具-JMeter
Hmtl5-IOCN网站
Oracle精简版教程网站
鸟哥的linux私房菜
Jetty中文文档
50个jquery必备代码片段
swfobject.js检测flash版本号工具
- angular.extend
boyitech
AngularJSangular.extendAngularJS API
angular.extend 复制src对象中的属性去dst对象中. 支持多个src对象. 如果你不想改变一个对象,你可以把dst设为空对象{}: var object = angular.extend({}, object1, object2). 注意: angular.extend不支持递归复制. 使用方法: angular.extend(dst, src); 参数:
- java-谷歌面试题-设计方便提取中数的数据结构
bylijinnan
java
网上找了一下这道题的解答,但都是提供思路,没有提供具体实现。其中使用大小堆这个思路看似简单,但实现起来要考虑很多。
以下分别用排序数组和大小堆来实现。
使用大小堆:
import java.util.Arrays;
public class MedianInHeap {
/**
* 题目:设计方便提取中数的数据结构
* 设计一个数据结构,其中包含两个函数,1.插
- ajaxFileUpload 针对 ie jquery 1.7+不能使用问题修复版本
Chen.H
ajaxFileUploadie6ie7ie8ie9
jQuery.extend({
handleError: function( s, xhr, status, e ) {
// If a local callback was specified, fire it
if ( s.error ) {
s.error.call( s.context || s, xhr, status, e );
}
- [机器人制造原则]机器人的电池和存储器必须可以替换
comsci
制造
机器人的身体随时随地可能被外来力量所破坏,但是如果机器人的存储器和电池可以更换,那么这个机器人的思维和记忆力就可以保存下来,即使身体受到伤害,在把存储器取下来安装到一个新的身体上之后,原有的性格和能力都可以继续维持.....
另外,如果一
- Oracle Multitable INSERT 的用法
daizj
oracle
转载Oracle笔记-Multitable INSERT 的用法
http://blog.chinaunix.net/uid-8504518-id-3310531.html
一、Insert基础用法
语法:
Insert Into 表名 (字段1,字段2,字段3...)
Values (值1,
- 专访黑客历史学家George Dyson
datamachine
on
20世纪最具威力的两项发明——核弹和计算机出自同一时代、同一群年青人。可是,与大名鼎鼎的曼哈顿计划(第二次世界大战中美国原子弹研究计划)相 比,计算机的起源显得默默无闻。出身计算机世家的历史学家George Dyson在其新书《图灵大教堂》(Turing’s Cathedral)中讲述了阿兰·图灵、约翰·冯·诺依曼等一帮子天才小子创造计算机及预见计算机未来
- 小学6年级英语单词背诵第一课
dcj3sjt126com
englishword
always 总是
rice 水稻,米饭
before 在...之前
live 生活,居住
usual 通常的
early 早的
begin 开始
month 月份
year 年
last 最后的
east 东方的
high 高的
far 远的
window 窗户
world 世界
than 比...更
- 在线IT教育和在线IT高端教育
dcj3sjt126com
教育
codecademy
http://www.codecademy.com codeschool
https://www.codeschool.com teamtreehouse
http://teamtreehouse.com lynda
http://www.lynda.com/ Coursera
https://www.coursera.
- Struts2 xml校验框架所定义的校验文件
蕃薯耀
Struts2 xml校验Struts2 xml校验框架Struts2校验
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2015年7月11日 15:54:59 星期六
http://fa
- mac下安装rar和unrar命令
hanqunfeng
mac
1.下载:http://www.rarlab.com/download.htm 选择
RAR 5.21 for Mac OS X 2.解压下载后的文件 tar -zxvf rarosx-5.2.1.tar 3.cd rar sudo install -c -o $USER unrar /bin #输入当前用户登录密码 sudo install -c -o $USER rar
- 三种将list转换为map的方法
jackyrong
list
在本文中,介绍三种将list转换为map的方法:
1) 传统方法
假设有某个类如下
class Movie {
private Integer rank;
private String description;
public Movie(Integer rank, String des
- 年轻程序员需要学习的5大经验
lampcy
工作PHP程序员
在过去的7年半时间里,我带过的软件实习生超过一打,也看到过数以百计的学生和毕业生的档案。我发现很多事情他们都需要学习。或许你会说,我说的不就是某种特定的技术、算法、数学,或者其他特定形式的知识吗?没错,这的确是需要学习的,但却并不是最重要的事情。他们需要学习的最重要的东西是“自我规范”。这些规范就是:尽可能地写出最简洁的代码;如果代码后期会因为改动而变得凌乱不堪就得重构;尽量删除没用的代码,并添加
- 评“女孩遭野蛮引产致终身不育 60万赔偿款1分未得”医腐深入骨髓
nannan408
先来看南方网的一则报道:
再正常不过的结婚、生子,对于29岁的郑畅来说,却是一个永远也无法实现的梦想。从2010年到2015年,从24岁到29岁,一张张新旧不一的诊断书记录了她病情的同时,也清晰地记下了她人生的悲哀。
粗暴手术让人发寒
2010年7月,在酒店做服务员的郑畅发现自己怀孕了,可男朋友却联系不上。在没有和家人商量的情况下,她决定堕胎。
12月5日,
- 使用jQuery为input输入框绑定回车键事件 VS 为a标签绑定click事件
Everyday都不同
jspinput回车键绑定clickenter
假设如题所示的事件为同一个,必须先把该js函数抽离出来,该函数定义了监听的处理:
function search() {
//监听函数略......
}
为input框绑定回车事件,当用户在文本框中输入搜索关键字时,按回车键,即可触发search():
//回车绑定
$(".search").keydown(fun
- EXT学习记录
tntxia
ext
1. 准备
(1) 官网:http://www.sencha.com/
里面有源代码和API文档下载。
EXT的域名已经从www.extjs.com改成了www.sencha.com ,但extjs这个域名会自动转到sencha上。
(2)帮助文档:
想要查看EXT的官方文档的话,可以去这里h
- mybatis3的mapper文件报Referenced file contains errors
xingguangsixian
mybatis
最近使用mybatis.3.1.0时无意中碰到一个问题:
The errors below were detected when validating the file "mybatis-3-mapper.dtd" via the file "account-mapper.xml". In most cases these errors can be d