- 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。在一个系统中两者可以结
- Dom
周华华
JavaScripthtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml&q
- 【Spark九十六】RDD API之combineByKey
bit1129
spark
1. combineByKey函数的运行机制
RDD提供了很多针对元素类型为(K,V)的API,这些API封装在PairRDDFunctions类中,通过Scala隐式转换使用。这些API实现上是借助于combineByKey实现的。combineByKey函数本身也是RDD开放给Spark开发人员使用的API之一
首先看一下combineByKey的方法说明:
- msyql设置密码报错:ERROR 1372 (HY000): 解决方法详解
daizj
mysql设置密码
MySql给用户设置权限同时指定访问密码时,会提示如下错误:
ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number;
问题原因:你输入的密码是明文。不允许这么输入。
解决办法:用select password('你想输入的密码');查询出你的密码对应的字符串,
然后
- 路漫漫其修远兮 吾将上下而求索
周凡杨
学习 思索
王国维在他的《人间词话》中曾经概括了为学的三种境界古今之成大事业、大学问者,罔不经过三种之境界。“昨夜西风凋碧树。独上高楼,望尽天涯路。”此第一境界也。“衣带渐宽终不悔,为伊消得人憔悴。”此第二境界也。“众里寻他千百度,蓦然回首,那人却在灯火阑珊处。”此第三境界也。学习技术,这也是你必须经历的三种境界。第一层境界是说,学习的路是漫漫的,你必须做好充分的思想准备,如果半途而废还不如不要开始。这里,注
- Hadoop(二)对话单的操作
朱辉辉33
hadoop
Debug:
1、
A = LOAD '/user/hue/task.txt' USING PigStorage(' ')
AS (col1,col2,col3);
DUMP A;
//输出结果前几行示例:
(>ggsnPDPRecord(21),,)
(-->recordType(0),,)
(-->networkInitiation(1),,)
- web报表工具FineReport常用函数的用法总结(日期和时间函数)
老A不折腾
finereport报表工具web开发
web报表工具FineReport常用函数的用法总结(日期和时间函数)
说明:凡函数中以日期作为参数因子的,其中日期的形式都必须是yy/mm/dd。而且必须用英文环境下双引号(" ")引用。
DATE
DATE(year,month,day):返回一个表示某一特定日期的系列数。
Year:代表年,可为一到四位数。
Month:代表月份。
- c++ 宏定义中的##操作符
墙头上一根草
C++
#与##在宏定义中的--宏展开 #include <stdio.h> #define f(a,b) a##b #define g(a) #a #define h(a) g(a) int main() { &nbs
- 分析Spring源代码之,DI的实现
aijuans
springDI现源代码
(转)
分析Spring源代码之,DI的实现
2012/1/3 by tony
接着上次的讲,以下这个sample
[java]
view plain
copy
print
- for循环的进化
alxw4616
JavaScript
// for循环的进化
// 菜鸟
for (var i = 0; i < Things.length ; i++) {
// Things[i]
}
// 老鸟
for (var i = 0, len = Things.length; i < len; i++) {
// Things[i]
}
// 大师
for (var i = Things.le
- 网络编程Socket和ServerSocket简单的使用
百合不是茶
网络编程基础IP地址端口
网络编程;TCP/IP协议
网络:实现计算机之间的信息共享,数据资源的交换
协议:数据交换需要遵守的一种协议,按照约定的数据格式等写出去
端口:用于计算机之间的通信
每运行一个程序,系统会分配一个编号给该程序,作为和外界交换数据的唯一标识
0~65535
查看被使用的
- JDK1.5 生产消费者
bijian1013
javathread生产消费者java多线程
ArrayBlockingQueue:
一个由数组支持的有界阻塞队列。此队列按 FIFO(先进先出)原则对元素进行排序。队列的头部 是在队列中存在时间最长的元素。队列的尾部 是在队列中存在时间最短的元素。新元素插入到队列的尾部,队列检索操作则是从队列头部开始获得元素。
ArrayBlockingQueue的常用方法:
- JAVA版身份证获取性别、出生日期及年龄
bijian1013
java性别出生日期年龄
工作中需要根据身份证获取性别、出生日期及年龄,且要还要支持15位长度的身份证号码,网上搜索了一下,经过测试好像多少存在点问题,干脆自已写一个。
CertificateNo.java
package com.bijian.study;
import java.util.Calendar;
import
- 【Java范型六】范型与枚举
bit1129
java
首先,枚举类型的定义不能带有类型参数,所以,不能把枚举类型定义为范型枚举类,例如下面的枚举类定义是有编译错的
public enum EnumGenerics<T> { //编译错,提示枚举不能带有范型参数
OK, ERROR;
public <T> T get(T type) {
return null;
- 【Nginx五】Nginx常用日志格式含义
bit1129
nginx
1. log_format
1.1 log_format指令用于指定日志的格式,格式:
log_format name(格式名称) type(格式样式)
1.2 如下是一个常用的Nginx日志格式:
log_format main '[$time_local]|$request_time|$status|$body_bytes
- Lua 语言 15 分钟快速入门
ronin47
lua 基础
-
-
单行注释
-
-
[[
[多行注释]
-
-
]]
-
-
-
-
-
-
-
-
-
-
-
1.
变量 & 控制流
-
-
-
-
-
-
-
-
-
-
num
=
23
-
-
数字都是双精度
str
=
'aspythonstring'
- java-35.求一个矩阵中最大的二维矩阵 ( 元素和最大 )
bylijinnan
java
the idea is from:
http://blog.csdn.net/zhanxinhang/article/details/6731134
public class MaxSubMatrix {
/**see http://blog.csdn.net/zhanxinhang/article/details/6731134
* Q35
求一个矩阵中最大的二维
- mongoDB文档型数据库特点
开窍的石头
mongoDB文档型数据库特点
MongoDD: 文档型数据库存储的是Bson文档-->json的二进制
特点:内部是执行引擎是js解释器,把文档转成Bson结构,在查询时转换成js对象。
mongoDB传统型数据库对比
传统类型数据库:结构化数据,定好了表结构后每一个内容符合表结构的。也就是说每一行每一列的数据都是一样的
文档型数据库:不用定好数据结构,
- [毕业季节]欢迎广大毕业生加入JAVA程序员的行列
comsci
java
一年一度的毕业季来临了。。。。。。。。
正在投简历的学弟学妹们。。。如果觉得学校推荐的单位和公司不适合自己的兴趣和专业,可以考虑来我们软件行业,做一名职业程序员。。。
软件行业的开发工具中,对初学者最友好的就是JAVA语言了,网络上不仅仅有大量的
- PHP操作Excel – PHPExcel 基本用法详解
cuiyadll
PHPExcel
导出excel属性设置//Include classrequire_once('Classes/PHPExcel.php');require_once('Classes/PHPExcel/Writer/Excel2007.php');$objPHPExcel = new PHPExcel();//Set properties 设置文件属性$objPHPExcel->getProperties
- IBM Webshpere MQ Client User Issue (MCAUSER)
darrenzhu
IBMjmsuserMQMCAUSER
IBM MQ JMS Client去连接远端MQ Server的时候,需要提供User和Password吗?
答案是根据情况而定,取决于所定义的Channel里面的属性Message channel agent user identifier (MCAUSER)的设置。
http://stackoverflow.com/questions/20209429/how-mca-user-i
- 网线的接法
dcj3sjt126com
一、PC连HUB (直连线)A端:(标准568B):白橙,橙,白绿,蓝,白蓝,绿,白棕,棕。 B端:(标准568B):白橙,橙,白绿,蓝,白蓝,绿,白棕,棕。 二、PC连PC (交叉线)A端:(568A): 白绿,绿,白橙,蓝,白蓝,橙,白棕,棕; B端:(标准568B):白橙,橙,白绿,蓝,白蓝,绿,白棕,棕。 三、HUB连HUB&nb
- Vimium插件让键盘党像操作Vim一样操作Chrome
dcj3sjt126com
chromevim
什么是键盘党?
键盘党是指尽可能将所有电脑操作用键盘来完成,而不去动鼠标的人。鼠标应该说是新手们的最爱,很直观,指哪点哪,很听话!不过常常使用电脑的人,如果一直使用鼠标的话,手会发酸,因为操作鼠标的时候,手臂不是在一个自然的状态,臂肌会处于绷紧状态。而使用键盘则双手是放松状态,只有手指在动。而且尽量少的从鼠标移动到键盘来回操作,也省不少事。
在chrome里安装 vimium 插件
- MongoDB查询(2)——数组查询[六]
eksliang
mongodbMongoDB查询数组
MongoDB查询数组
转载请出自出处:http://eksliang.iteye.com/blog/2177292 一、概述
MongoDB查询数组与查询标量值是一样的,例如,有一个水果列表,如下所示:
> db.food.find()
{ "_id" : "001", "fruits" : [ "苹
- cordova读写文件(1)
gundumw100
JavaScriptCordova
使用cordova可以很方便的在手机sdcard中读写文件。
首先需要安装cordova插件:file
命令为:
cordova plugin add org.apache.cordova.file
然后就可以读写文件了,这里我先是写入一个文件,具体的JS代码为:
var datas=null;//datas need write
var directory=&
- HTML5 FormData 进行文件jquery ajax 上传 到又拍云
ileson
jqueryAjaxhtml5FormData
html5 新东西:FormData 可以提交二进制数据。
页面test.html
<!DOCTYPE>
<html>
<head>
<title> formdata file jquery ajax upload</title>
</head>
<body>
<
- swift appearanceWhenContainedIn:(version1.2 xcode6.4)
啸笑天
version
swift1.2中没有oc中对应的方法:
+ (instancetype)appearanceWhenContainedIn:(Class <UIAppearanceContainer>)ContainerClass, ... NS_REQUIRES_NIL_TERMINATION;
解决方法:
在swift项目中新建oc类如下:
#import &
- java实现SMTP邮件服务器
macroli
java编程
电子邮件传递可以由多种协议来实现。目前,在Internet 网上最流行的三种电子邮件协议是SMTP、POP3 和 IMAP,下面分别简单介绍。
◆ SMTP 协议
简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)是一个运行在TCP/IP之上的协议,用它发送和接收电子邮件。SMTP 服务器在默认端口25上监听。SMTP客户使用一组简单的、基于文本的
- mongodb group by having where 查询sql
qiaolevip
每天进步一点点学习永无止境mongo纵观千象
SELECT cust_id,
SUM(price) as total
FROM orders
WHERE status = 'A'
GROUP BY cust_id
HAVING total > 250
db.orders.aggregate( [
{ $match: { status: 'A' } },
{
$group: {
- Struts2 Pojo(六)
Luob.
POJOstrust2
注意:附件中有完整案例
1.采用POJO对象的方法进行赋值和传值
2.web配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee&q
- struts2步骤
wuai
struts
1、添加jar包
2、在web.xml中配置过滤器
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.st