- mediasoup源码分析 (一)大纲
致一
mediasoup源码分析
欢迎关注公众号:音视频之路会陆续分享音视频技术,希望大家多多支持。mediasoup是webrtc的服务端项目,webrtc本身是一套完整的客户端解决方案(支持web、android、ios、win、mac),但是官方并没有提供与之配套的服务端项目。目前主流的webrtc服务端项目有mediasoup、licode、janus等,mediasoup相对来说架构简单易于学习,我将通过一系列的内容详细
- Licode—基于webrtc的SFU/MCU实现
音视频开发老马
webrtc
1.webrtc浅析webrtc的前世今生、编译方法、行业应用、最佳实践等技术与产业类的文章在网上卷帙浩繁,重复的内容我不再赘述。对我来讲,webrtc的概念可以有三个角度去解释:(1).一个W3C和IETF制定的标准,约定了Web间实时音视频通信机制,通过该标准可开发基于浏览器的、无插件的web多媒体应用(一般是js),该标准仅设定了点对点无中心的实时会话场景,没有强制约束信令协议与内容,没有要
- 各webrtc sfu对比
、、、、南山小雨、、、、
webrtcwebrtcffmpeg音视频实时音视频视频编解码
licode是mcu的优秀方案,官方规定只能在Ubuntu14.04上部署,或者docker环境。最好使用它官方的docker不然编译大把问题,但是docker本身也增加性能损耗对licode二次开发比较困难代码笨重janussfu音视频会议双人端到端直播推拉流文字群聊录制与播放可以把音视频会议录制下来,也可以播放一个视频文件让大家看到它的模块是插件化的,可以自己实现一个插件放进去它比licode
- 如何搭建Janus WebRTC服务器
吾心傲翔
webrtc服务器有很多,licode/janus/kurento/mediasoup/jitsi,之前搭建licode分别在PC和手机上也看到效果,今天也尝试搭建janus看看效果。搭建janus也可以参考官网:https://janus.conf.meetecho.com/docs/README.html本文搭建环境是Ubuntu16.04Server版的VMware虚拟机http://rel
- licode(1) Basic Example 客户端解析
梦落迹南天
整体在浏览其中输入https://dst_host_domain:13004后,请求了index.html,该文件在licode\extras\basic_example\public\index.html开始,引入了erizo.js和script.js,testConnection()//licode\extras\basic_example\public\index.htmlLicodeBas
- licode iOS
我是夏末啊
从零开始接触音视频这一块的,自己默默摸索,即将大功告成,现在记录一下开发过程和遇到的坑深刻理解,跑通Demo距离上线差99步1、回声问题办公室内测试,语音视频回声都消除的很好,拉距测试后,语音正常,视频回声非常大。第一反应,是数据包大导致的,然后降低码率,结果并没有卵用脑袋疼ing~:这里需要设置inputGain0.5~0.8随意,默认1。2、降低码率,帧率跑通只是第一步,怎么降低码率,在弱网环
- licode-编译错误锦集
itcayman
licode官网执行./scripts/installUbuntuDeps.sh步骤1、E:Package'python-software-properties'hasnoinstallationcandidate原因:python版本不支持python-software-properties了;解决:找到libcode/scripts/installUbantuDeps.sh文件,搜索pytho
- licode
星月西
1.Licode模块Erizo基于webRTC针对视屏会议场景的一对多组件ErizoAPIErizo的Nodejs版本ErizoController负责管理视频会议sessionsNuve负责管理服务器资源(会议房间,与会用户,加入凭证)2.Nuve源码分析2.1目录结构nuveAPINuve服务端APInuveClientNuve客户端API2.2nuveAPI整体架构nuve-api-arch
- 2020年的总结和2021的目标
爱技术爱生活
优秀的程序员2021flag
目录工作篇学习篇生活篇赚钱篇1、工作篇回顾2020年,在年初拿了A,很开心,有人赏识的感觉还是很棒,自己的努力有人得到了认可。目前手里项目都是做的很熟练的,缺乏挑战性。需要多渠道拓宽自己的项目面。展望2021年,希望自己拿到一个S,体验一下优秀的感觉。需要多多做事,积极做事,努力做事。提升技术,拓宽知识面,将手头的webrtc项目和licode项目的边边角角吃的透透的。2、学习篇回顾2020年,读
- 流媒体服务器——Licode Janus-gateway Mediasoup Medooze 分析
qq_34732729
mediasoup
目录前言LicodeJanus-gatewayMediasoupMedooze前言已知的多方通信框架有:MeshMCUSFU三种。《三种方案的详细介绍》其中SFU是目前最优的一种多方通信架构方案,而且这种方案目前已经有比较流行的开源项目:LicodeJanus-gatewayMediasoupMedooze。下面简单的对这4种方案进行分析:LicodeLicode既可以用作SFU类型的流媒体服务器
- Licode Simulcast
lidedongsn
LicodeSimulcastlicodeenablesimlcastPublisher端创建stream的时候config参数添加simulcastroom.publish(localStream,{simulcast:{numSpatialLayers:2}});numSpatialLayers是Publisher发送的spatiallayers的最大数目前web端的话只能是遵循原生webrt
- licode pre8.4 macos catalina 10.15.1 8: basicexmple 访问server
等风来不如迎风去
WebRTC入门与实战
未授权发现cammic都启动了,但是看不到图像option+command+i打开SelectedRoombasicExampleRoomoftypeerizoscript.js:101POSThttp://localhost:3001/createToken/401(Unauthorized)
[email protected]:
[email protected]
- 自研视频会议库XNet介绍 (不使用webrtc sip等,实现视频会议,音视频通话,连麦,对讲等)
长安过客
流媒体开发
实现视频会议有很多方案,比如现在比较流行的webrtc(服务端结合coturn和licode),还有sip协议相关的开源方案,服务端freeswitch或者opensips,客户端linphone,pjsip等,都可以很容易实现音视频通话系统。linphone本身是个成品软件,app应用商店上就能下载,很多人在其基础上改一下界面,做成自己的产品。像webrtc,freeswitch这种,确实做的不
- 基于webrtc的视频聊天室(一)之千里之行始于足下
荆轲刺秦
流媒体
在不采用流媒体的情况下,也能够实现视频聊天室;可这需要在客户端建立多个连接,对客户端要求很高(上行带宽以及浏览器编解码速度),所以引入kurento流媒体服务器来做中转,或许后续不仅仅只是做中转。流媒体服务器的选择更多的是因为它的文档全面,并且有提供了JavaClientAPI,之前也有了解过licode,但文档太少,部署就耗费了我太多时间,后面发现它只能基于node.js做开发,我就半途而弃之。
- 基于licode搭建webrtc服务器
weixin_30254435
0.前言licode官网文档安装教程十分简单,但是实际搭建过程是很艰辛的.官方文档没有提示说会遇到什么样的问题,实际过程中可能遇到各种各样的问题,在解决的时候费时费力,我就总结一下自己在安装搭建过程中遇到的问题.注:最大的问题就是网络问题,整个安装过程是边下载资源边安装的,资源基本都是国外的,因为墙的缘故,可能会遇到想不到的错误.1.环境系统:ubuntu16.04.6(ubuntu14.04.6
- licode中大小流方案
ddr77
licode
总体方案图如下大小流解决的核心是需要改造oneTomany,改造点如下publiser增加多个,并且要有角色之分,比如下Publiserm_BigPub;Publishem_SmallPub;需要主要。在下面三个队列中,处于第一第二队列的一律用BIg的ssrc赋值增加的subscreber要区分开,三个队列:大流小流大小流mapm_lBigSub;mapm_lSmallSub;mapm_lAllS
- libglib-2.0.so: error adding symbols: DSO missing from command line
liwenlong_only
webrtc
libglib-2.0.so:erroraddingsymbols:DSOmissingfromcommandlineeror开发环境:ubuntu版本:14.04gcc版本:5.4.5问题描述在编译licode的example时,遇到如上错误,具体是libnice库依赖了libglib-2.0,erizo又依赖了libnice,可执行文件又依赖了erizo.so,编译生成可执行文件的时候,报错找
- Licode—基于webrtc的SFU/MCU实现
假_f89c
webrtc的前世今生、编译方法、行业应用、最佳实践等技术与产业类的文章在网上卷帙浩繁,重复的内容我不再赘述。对我来讲,webrtc的概念可以有三个角度去解释:(1).一个W3C和IETF制定的标准,约定了Web间实时音视频通信机制,通过该标准可开发基于浏览器的、无插件的web多媒体应用(一般是js),该标准仅设定了点对点无中心的实时会话场景,没有强制约束信令协议与内容,没有要求有媒体处理的中心服
- licode学习之erizo篇--MediaStream
weixin_30797199
MediaStream是erizo进行流数据处理的核心模块。当网络数据,经过DtlsTransport进行srtp解密后,得到的rtp裸数据与rtcp裸数据,都要进入MediaStream进行处理;需要发送给对方的rtp数据与rtcp裸数据也要经过MediaStream处理后,才会给DtlsTransport进行加密并发送。MediaStream也是个人认为erizo的最为复杂的一个部分。先看一看
- Licode(二):Nuve源码分析
郑亚帅
Licode(二):Nuve源码分析Licode的Nove组件旨在对服务端资源进行管理(CRUD),服务端资源包括:会议房间(videoconferencerooms)、加入凭证(tokens)、参与用户(User)。Nuve组件的gitHub地址:https://github.com/ging/licode/tree/master/nuve,官方对Nuve的说明如下:Developerswill
- licode 架构整理
majq
webrtc
NuveManagesServices(CustomAPPs),RoomsandUsers,generatestokensfordelegatedauthsocustomappscanprovideaccesstousers.ItbalancestheRoomsamongtheavailableErizoControllers.MongoDBOnlyusedbyNuvetostoreinforma
- licode 的singlepc 模式是怎么回事?
ddr77
licode
最近在摸索webrtc单机多流的情况,webrtc给出了标准planb的解决方法,在licode的forum中查找,已经明确表示不支持https://discourse.lynckia.com/t/typical-questions-for-licode/728第六条,表示在wip(workinprogress)同时,licode提供了singlepc的模式,链接如下https://github.
- 【licode】erizo 与每个客户端的 ICE 流程以及数据流的收发
等风来不如迎风去
WebRTC入门与实战
看这篇文章,ICE流程走完了,piasy的p2p文档后面ICE建立连接有问题,只能看代码了了。服务端大神总结文章erizo与每个客户端的ICE流程以及数据流的收发erizo是Licode实现SFU的模块,使用c++语言编写,以so的形式提供给使用者进行二次开发。实现的功能分为两块,一是多人模式下的多路流管理,包括发布订阅流,流数据转发。一是实现与每个客户端的ICE流程以及数据流的收发,这一部分通过
- licode服务器处理流程
等风来不如迎风去
WebRTC入门与实战
某位大神写的参考licode实现了webrtc的转发服务,通过socketio与客户端进行信令通信,媒体层走webrtc。licode服务器处理流程分为nuve->erizoController->erizoAgent,他们之间的通信通过rabbitmq实现,因此很适合分布式部署。从左到右是一对多的关系。服务启动时,erizoController会到nuve上注册,同时根据配置文件启动指定个数的e
- 【zz】webrtc三种服务端架构及Licode客户端服务器交互
等风来不如迎风去
WebRTC入门与实战
Licode客户端服务器交互转载p2p有说有这三种的Mesh架构:终端之间互相链接,没有中心服务器,产生的问题,每一个终端都要链接n-1个终端,每一个终端的编码和网络压力都很大。群聊人数N不可能太大。Router(mcu)架构:终端之间引入中心服务器,学名MCU(MultiPointControlUnit),每一个终端的视频流都发布到MCU服务器上,而后服务器负责编码发布多视频流的工做,减轻客户端
- Licode 信令 流程
我是不是程序猿
Step1:获取erizoController地址send:https://192.168.12.66:3004/createTokenresponse:“eyJ0b2tlbklkIjoiNWFiZGYyYmMzNjNhNzhhZmYwNzhiYTZiIiwiaG9zdCI6IjE5Mi4xNjguMTIuNjY6ODA4MCIsInNlY3VyZSI6dHJ1ZSwic2lnbmF0dXJlIj
- licode pre-v7.3开启屏幕共享功能
TopsLuo
webrtclicode
由于工作需要,所以开始研究licode的共享屏幕功能,但在简单修改代码后,并没有成功开启屏幕共享功能。于是潜心Google+度娘,虽然最终结果只在firefox69版本中开启了屏幕共享功能(chrome77版本没能成功),但至少验证licode的屏幕共享是OK的。Mac平台上具体步骤如下:编译及安装licode下载licodepre-v7.3源码并解码wgethttps://github.com/
- licode/erizo 中 rtcp 的转发与收敛
樱桃诗翡雨
licode
在每个mediaStream中都保存着一个std::shared_ptrrtcp_processor_,该结构的类图如下:该RtcpProcessor类型在Stream的中的实例化未RtcpForwarder类型,在构造函数中创建,在MediaStream::setRemoteSdp中更新里面的sourceSsrc,所以必须在调用setRemoteSdp前,调用Stream的setVideoSou
- licode/erizo 转推rtmp时h264帧重排引发崩溃bug排查
樱桃诗翡雨
RTPwebrtclicode
崩溃堆栈#00x0000000000886892inerizo::H264Depacketizer::processPacket(this=0x7fbc9c0037d0)at/home/deploy/momodeploy/shellagent/tmp/live-rtc-server/tmp/live-rtc-rtp-server/src/erizo/media/Depacketizer.cpp:1
- [WebRTC]licode编译
SleepingBug
WebRTC
片头曲:2019-12-11之前的最新源代码,编译是有问题的,具体情况我提交了到github了,然后他们确认了问题,并在2019-12-12解决了.此前折腾了我好几天,差点让我怀疑人生.言归正传,如下,1,参考下面网址执行命令就可以了https://licode.readthedocs.io/en/master/from_source/具体步骤1)下载代码gitclonehttps://githu
- Java 并发包之线程池和原子计数
lijingyao8206
Java计数ThreadPool并发包java线程池
对于大数据量关联的业务处理逻辑,比较直接的想法就是用JDK提供的并发包去解决多线程情况下的业务数据处理。线程池可以提供很好的管理线程的方式,并且可以提高线程利用率,并发包中的原子计数在多线程的情况下可以让我们避免去写一些同步代码。
这里就先把jdk并发包中的线程池处理器ThreadPoolExecutor 以原子计数类AomicInteger 和倒数计时锁C
- java编程思想 抽象类和接口
百合不是茶
java抽象类接口
接口c++对接口和内部类只有简介的支持,但在java中有队这些类的直接支持
1 ,抽象类 : 如果一个类包含一个或多个抽象方法,该类必须限定为抽象类(否者编译器报错)
抽象方法 : 在方法中仅有声明而没有方法体
package com.wj.Interface;
- [房地产与大数据]房地产数据挖掘系统
comsci
数据挖掘
随着一个关键核心技术的突破,我们已经是独立自主的开发某些先进模块,但是要完全实现,还需要一定的时间...
所以,除了代码工作以外,我们还需要关心一下非技术领域的事件..比如说房地产
&nb
- 数组队列总结
沐刃青蛟
数组队列
数组队列是一种大小可以改变,类型没有定死的类似数组的工具。不过与数组相比,它更具有灵活性。因为它不但不用担心越界问题,而且因为泛型(类似c++中模板的东西)的存在而支持各种类型。
以下是数组队列的功能实现代码:
import List.Student;
public class
- Oracle存储过程无法编译的解决方法
IT独行者
oracle存储过程
今天同事修改Oracle存储过程又导致2个过程无法被编译,流程规范上的东西,Dave 这里不多说,看看怎么解决问题。
1. 查看无效对象
XEZF@xezf(qs-xezf-db1)> select object_name,object_type,status from all_objects where status='IN
- 重装系统之后oracle恢复
文强chu
oracle
前几天正在使用电脑,没有暂停oracle的各种服务。
突然win8.1系统奔溃,无法修复,开机时系统 提示正在搜集错误信息,然后再开机,再提示的无限循环中。
无耐我拿出系统u盘 准备重装系统,没想到竟然无法从u盘引导成功。
晚上到外面早了一家修电脑店,让人家给装了个系统,并且那哥们在我没反应过来的时候,
直接把我的c盘给格式化了 并且清理了注册表,再装系统。
然后的结果就是我的oracl
- python学习二( 一些基础语法)
小桔子
pthon基础语法
紧接着把!昨天没看继续看django 官方教程,学了下python的基本语法 与c类语言还是有些小差别:
1.ptyhon的源文件以UTF-8编码格式
2.
/ 除 结果浮点型
// 除 结果整形
% 除 取余数
* 乘
** 乘方 eg 5**2 结果是5的2次方25
_&
- svn 常用命令
aichenglong
SVN版本回退
1 svn回退版本
1)在window中选择log,根据想要回退的内容,选择revert this version或revert chanages from this version
两者的区别:
revert this version:表示回退到当前版本(该版本后的版本全部作废)
revert chanages from this versio
- 某小公司面试归来
alafqq
面试
先填单子,还要写笔试题,我以时间为急,拒绝了它。。时间宝贵。
老拿这些对付毕业生的东东来吓唬我。。
面试官很刁难,问了几个问题,记录下;
1,包的范围。。。public,private,protect. --悲剧了
2,hashcode方法和equals方法的区别。谁覆盖谁.结果,他说我说反了。
3,最恶心的一道题,抽象类继承抽象类吗?(察,一般它都是被继承的啊)
4,stru
- 动态数组的存储速度比较 集合框架
百合不是茶
集合框架
集合框架:
自定义数据结构(增删改查等)
package 数组;
/**
* 创建动态数组
* @author 百合
*
*/
public class ArrayDemo{
//定义一个数组来存放数据
String[] src = new String[0];
/**
* 增加元素加入容器
* @param s要加入容器
- 用JS实现一个JS对象,对象里有两个属性一个方法
bijian1013
js对象
<html>
<head>
</head>
<body>
用js代码实现一个js对象,对象里有两个属性,一个方法
</body>
<script>
var obj={a:'1234567',b:'bbbbbbbbbb',c:function(x){
- 探索JUnit4扩展:使用Rule
bijian1013
java单元测试JUnitRule
在上一篇文章中,讨论了使用Runner扩展JUnit4的方式,即直接修改Test Runner的实现(BlockJUnit4ClassRunner)。但这种方法显然不便于灵活地添加或删除扩展功能。下面将使用JUnit4.7才开始引入的扩展方式——Rule来实现相同的扩展功能。
1. Rule
&n
- [Gson一]非泛型POJO对象的反序列化
bit1129
POJO
当要将JSON数据串反序列化自身为非泛型的POJO时,使用Gson.fromJson(String, Class)方法。自身为非泛型的POJO的包括两种:
1. POJO对象不包含任何泛型的字段
2. POJO对象包含泛型字段,例如泛型集合或者泛型类
Data类 a.不是泛型类, b.Data中的集合List和Map都是泛型的 c.Data中不包含其它的POJO
 
- 【Kakfa五】Kafka Producer和Consumer基本使用
bit1129
kafka
0.Kafka服务器的配置
一个Broker,
一个Topic
Topic中只有一个Partition() 1. Producer:
package kafka.examples.producers;
import kafka.producer.KeyedMessage;
import kafka.javaapi.producer.Producer;
impor
- lsyncd实时同步搭建指南——取代rsync+inotify
ronin47
1. 几大实时同步工具比较 1.1 inotify + rsync
最近一直在寻求生产服务服务器上的同步替代方案,原先使用的是 inotify + rsync,但随着文件数量的增大到100W+,目录下的文件列表就达20M,在网络状况不佳或者限速的情况下,变更的文件可能10来个才几M,却因此要发送的文件列表就达20M,严重减低的带宽的使用效率以及同步效率;更为要紧的是,加入inotify
- java-9. 判断整数序列是不是二元查找树的后序遍历结果
bylijinnan
java
public class IsBinTreePostTraverse{
static boolean isBSTPostOrder(int[] a){
if(a==null){
return false;
}
/*1.只有一个结点时,肯定是查找树
*2.只有两个结点时,肯定是查找树。例如{5,6}对应的BST是 6 {6,5}对应的BST是
- MySQL的sum函数返回的类型
bylijinnan
javaspringsqlmysqljdbc
今天项目切换数据库时,出错
访问数据库的代码大概是这样:
String sql = "select sum(number) as sumNumberOfOneDay from tableName";
List<Map> rows = getJdbcTemplate().queryForList(sql);
for (Map row : rows
- java设计模式之单例模式
chicony
java设计模式
在阎宏博士的《JAVA与模式》一书中开头是这样描述单例模式的:
作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。 单例模式的结构
单例模式的特点:
单例类只能有一个实例。
单例类必须自己创建自己的唯一实例。
单例类必须给所有其他对象提供这一实例。
饿汉式单例类
publ
- javascript取当月最后一天
ctrain
JavaScript
<!--javascript取当月最后一天-->
<script language=javascript>
var current = new Date();
var year = current.getYear();
var month = current.getMonth();
showMonthLastDay(year, mont
- linux tune2fs命令详解
daizj
linuxtune2fs查看系统文件块信息
一.简介:
tune2fs是调整和查看ext2/ext3文件系统的文件系统参数,Windows下面如果出现意外断电死机情况,下次开机一般都会出现系统自检。Linux系统下面也有文件系统自检,而且是可以通过tune2fs命令,自行定义自检周期及方式。
二.用法:
Usage: tune2fs [-c max_mounts_count] [-e errors_behavior] [-g grou
- 做有中国特色的程序员
dcj3sjt126com
程序员
从出版业说起 网络作品排到靠前的,都不会太难看,一般人不爱看某部作品也是因为不喜欢这个类型,而此人也不会全不喜欢这些网络作品。究其原因,是因为网络作品都是让人先白看的,看的好了才出了头。而纸质作品就不一定了,排行榜靠前的,有好作品,也有垃圾。 许多大牛都是写了博客,后来出了书。这些书也都不次,可能有人让为不好,是因为技术书不像小说,小说在读故事,技术书是在学知识或温习知识,有
- Android:TextView属性大全
dcj3sjt126com
textview
android:autoLink 设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all) android:autoText 如果设置,将自动执行输入值的拼写纠正。此处无效果,在显示输入法并输
- tomcat虚拟目录安装及其配置
eksliang
tomcat配置说明tomca部署web应用tomcat虚拟目录安装
转载请出自出处:http://eksliang.iteye.com/blog/2097184
1.-------------------------------------------tomcat 目录结构
config:存放tomcat的配置文件
temp :存放tomcat跑起来后存放临时文件用的
work : 当第一次访问应用中的jsp
- 浅谈:APP有哪些常被黑客利用的安全漏洞
gg163
APP
首先,说到APP的安全漏洞,身为程序猿的大家应该不陌生;如果抛开安卓自身开源的问题的话,其主要产生的原因就是开发过程中疏忽或者代码不严谨引起的。但这些责任也不能怪在程序猿头上,有时会因为BOSS时间催得紧等很多可观原因。由国内移动应用安全检测团队爱内测(ineice.com)的CTO给我们浅谈关于Android 系统的开源设计以及生态环境。
1. 应用反编译漏洞:APK 包非常容易被反编译成可读
- C#根据网址生成静态页面
hvt
Web.netC#asp.nethovertree
HoverTree开源项目中HoverTreeWeb.HVTPanel的Index.aspx文件是后台管理的首页。包含生成留言板首页,以及显示用户名,退出等功能。根据网址生成页面的方法:
bool CreateHtmlFile(string url, string path)
{
//http://keleyi.com/a/bjae/3d10wfax.htm
stri
- SVG 教程 (一)
天梯梦
svg
SVG 简介
SVG 是使用 XML 来描述二维图形和绘图程序的语言。 学习之前应具备的基础知识:
继续学习之前,你应该对以下内容有基本的了解:
HTML
XML 基础
如果希望首先学习这些内容,请在本站的首页选择相应的教程。 什么是SVG?
SVG 指可伸缩矢量图形 (Scalable Vector Graphics)
SVG 用来定义用于网络的基于矢量
- 一个简单的java栈
luyulong
java数据结构栈
public class MyStack {
private long[] arr;
private int top;
public MyStack() {
arr = new long[10];
top = -1;
}
public MyStack(int maxsize) {
arr = new long[maxsize];
top
- 基础数据结构和算法八:Binary search
sunwinner
AlgorithmBinary search
Binary search needs an ordered array so that it can use array indexing to dramatically reduce the number of compares required for each search, using the classic and venerable binary search algori
- 12个C语言面试题,涉及指针、进程、运算、结构体、函数、内存,看看你能做出几个!
刘星宇
c面试
12个C语言面试题,涉及指针、进程、运算、结构体、函数、内存,看看你能做出几个!
1.gets()函数
问:请找出下面代码里的问题:
#include<stdio.h>
int main(void)
{
char buff[10];
memset(buff,0,sizeof(buff));
- ITeye 7月技术图书有奖试读获奖名单公布
ITeye管理员
活动ITeye试读
ITeye携手人民邮电出版社图灵教育共同举办的7月技术图书有奖试读活动已圆满结束,非常感谢广大用户对本次活动的关注与参与。
7月试读活动回顾:
http://webmaster.iteye.com/blog/2092746
本次技术图书试读活动的优秀奖获奖名单及相应作品如下(优秀文章有很多,但名额有限,没获奖并不代表不优秀):
《Java性能优化权威指南》