day10 多媒体(文字 图片 音频 视频)
1计算机表示图形的几种方式
// [1]获取手机的分辨率windowmanagerWindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);// 获取高int height = wm.getDefaultDisplay().getHeight();int width = wm.getDefaultDisplay().getWidth();System.out.println("width:" + width + " height:" + height);
//创建一个位图工厂的配置参数BitmapFactory.Options options = new Options();//解码器不去真正的解析位图 但是还能够获取图片的宽和高信息options.inJustDecodeBounds = true;BitmapFactory.decodeFile("/mnt/sdcard/lings.jpg", options);//[2]获取图片的宽和高信息int imgWidth = options.outWidth;int imgHeight = options.outHeight;
//[3]计算缩放比int scale = 1;int scaleX = imgWidth/width;int scaleY = imgHeight/height;if(scaleX>=scaleY && scaleX > 1){scale = scaleX;}if(scaleX<scaleY && scaleY > 1){scale = scaleY;}
//[4]按照缩放比进行显示options.inSampleSize = scale;//[5]按照缩放比 进行解析位图options.inJustDecodeBounds = false;Bitmap bitmap = BitmapFactory.decodeFile("/mnt/sdcard/lings.jpg", options);//[6]把bitmap显示iv上iv.setImageBitmap(bitmap);
package com.phone.fuben;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Matrix;import android.graphics.Paint;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.widget.ImageView;public class MainActivity extends ActionBarActivity {private ImageView iv_src;private ImageView iv_copy;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 显示原图iv_src = (ImageView) findViewById(R.id.iv_src);// 显示副本iv_copy = (ImageView) findViewById(R.id.iv_copy);// [1]先把lings.jpg图片转换成bitmap显示到iv_srcBitmap srcBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.lings);// 操作图片// srcBitmap.setPixel(20, 30, Color.RED);iv_src.setImageBitmap(srcBitmap);// [2]创建原图的副本(模板代码)// 创建一个模板 相当于创建了一个大小和原图一样的空白的白纸Bitmap copyBitmap = Bitmap.createBitmap(srcBitmap.getWidth(),srcBitmap.getHeight(), srcBitmap.getConfig());// 想作画需要一个画笔Paint paint = new Paint();// 创建一个画布 把白纸铺到画布上Canvas canvas = new Canvas(copyBitmap);// 开始作画canvas.drawBitmap(srcBitmap, new Matrix(), paint);// 操作画出来的小猫图片for (int i = 0; i < 20; i++) {copyBitmap.setPixel(20 + i, 30, Color.RED);}// [3]把copybitmap显示到iv_copy上iv_copy.setImageBitmap(copyBitmap);}}
package com.phone.fuben1;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Matrix;import android.graphics.Paint;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.widget.ImageView;import com.phone.fuben1.R;public class MainActivity extends ActionBarActivity {private ImageView iv_src;private ImageView iv_copy;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 显示原图iv_src = (ImageView) findViewById(R.id.iv_src);// 显示副本iv_copy = (ImageView) findViewById(R.id.iv_copy);// [1]先把lings.jpg图片转换成bitmap显示到iv_srcBitmap srcBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.lings);// 操作图片// srcBitmap.setPixel(20, 30, Color.RED);iv_src.setImageBitmap(srcBitmap);// [2]创建原图的副本(模板代码)// 创建一个模板 相当于创建了一个大小和原图一样的空白的白纸Bitmap copyBitmap = Bitmap.createBitmap(srcBitmap.getWidth(),srcBitmap.getHeight(), srcBitmap.getConfig());// 想作画需要一个画笔Paint paint = new Paint();// 创建一个画布 把白纸铺到画布上Canvas canvas = new Canvas(copyBitmap);// 开始作画Matrix matrix = new Matrix();// 对图片进行旋转matrix.setRotate(20, srcBitmap.getWidth() / 2,srcBitmap.getHeight() / 2);// 对图片进行缩放matrix.setScale(0.5f, 0.5f);// 对图片进行平移matrix.setTranslate(20, 0);//对图片进行镜面效果//如果两个方法一起用就要用post前缀,post是在上一次修改的基础上进行再次修改 set每次操作都是最新的 会覆盖上次的操作matrix.setScale(-1.0f, 1);matrix.postTranslate(srcBitmap.getWidth(), 0);//对图片进行倒影效果matrix.setScale(1, -1.0f);matrix.postTranslate(0, srcBitmap.getHeight());canvas.drawBitmap(srcBitmap, matrix, paint);// [3]把copybitmap显示到iv_copy上iv_copy.setImageBitmap(copyBitmap);}}
package com.phone.painting;import java.io.File;import java.io.FileOutputStream;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.Bitmap.CompressFormat;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Matrix;import android.graphics.Paint;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.os.SystemClock;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.widget.ImageView;public class MainActivity extends Activity {private Bitmap srcBitmap;private ImageView iv;private Bitmap copyBitmap;private Canvas canvas;private Paint paint;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 用来显示我们画的内容iv = (ImageView) findViewById(R.id.iv);// [1]获取原图bgsrcBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bg);// [2]获取原图的副本 相当于一个空白的白纸copyBitmap = Bitmap.createBitmap(srcBitmap.getWidth(),srcBitmap.getHeight(), srcBitmap.getConfig());paint = new Paint();canvas = new Canvas(copyBitmap);// 开始作画canvas.drawBitmap(srcBitmap, new Matrix(), paint);canvas.drawLine(20, 30, 50, 80, paint);iv.setImageBitmap(copyBitmap);// [3]给iv设置一个触摸控件iv.setOnTouchListener(new OnTouchListener() {private int startX;private int startY;@Overridepublic boolean onTouch(View v, MotionEvent event) {// 获取当前事件类型int action = event.getAction();switch (action) {case MotionEvent.ACTION_DOWN:// 按下System.out.println("摸view");startX = (int) event.getX();startY = (int) event.getY();break;case MotionEvent.ACTION_MOVE:// 移动System.out.println("移动");// 获取结束位置int stopX = (int) event.getX();int stopY = (int) event.getY();// 不停的划线canvas.drawLine(startX, startY, stopX, stopY, paint);// 再次显示到控件上iv.setImageBitmap(copyBitmap);startX = stopX;startY = stopY;break;case MotionEvent.ACTION_UP:// 抬起System.out.println("抬起");break;}// true 监听器处理完事件了return true;}});}//点击按钮改变画笔 的颜色public void click1(View v) {paint.setColor(Color.RED);}//点击按钮加粗画笔public void click2(View v) {paint.setStrokeWidth(15);}//点击按钮保存图片public void click3(View v) {try {/*** format 保存图片的格式* quality 保存图片的质量* stream*///SystemClock.uptimeMillis() 当前手机开机时间File file = new File(Environment.getExternalStorageDirectory().getPath(),SystemClock.uptimeMillis()+".png");FileOutputStream fos;fos = new FileOutputStream(file);copyBitmap.compress(CompressFormat.PNG, 100, fos);//发送一条广播 欺骗系统图库的应用Intent intent = new Intent();//设置actionintent.setAction(Intent.ACTION_MEDIA_MOUNTED);intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));//发送一下广播sendBroadcast(intent);} catch (Exception e) {e.printStackTrace();}}}
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
package com.phone.syf;import android.R.integer;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Matrix;import android.graphics.Paint;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.widget.ImageView;public class MainActivity extends ActionBarActivity {private Bitmap alterBitmap;private ImageView iv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);iv = (ImageView) findViewById(R.id.iv);// [1]获取要操作图片的原图Bitmap srcBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.lings1);alterBitmap = Bitmap.createBitmap(srcBitmap.getWidth(),srcBitmap.getHeight(), srcBitmap.getConfig());// 创建画笔Paint paint = new Paint();// 创建画布Canvas canvas = new Canvas(alterBitmap);// 开始作画canvas.drawBitmap(srcBitmap, new Matrix(), paint);iv.setImageBitmap(alterBitmap);// [3]给iv设置一个触摸事件iv.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {// [4]具体判断一下触摸事件switch (event.getAction()) {case MotionEvent.ACTION_MOVE:// 移动事件for (int x = -7; x < 7; x++) {for (int y = -7; y < 7; y++) {if (Math.sqrt(x * x + y * y) < 7) {try {alterBitmap.setPixel((int) event.getX() + x,(int) event.getY() + y,Color.TRANSPARENT);} catch (Exception e) {}}}}// 更新一下iviv.setImageBitmap(alterBitmap);break;}return true;}});}}
package com.phone.videoplayer;import android.app.Activity;import android.media.MediaPlayer;import android.os.Bundle;import android.view.View;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}//点击按钮 播放一个音频文件public void click(View v){//[1]初始化mediaplayerMediaPlayer mediaPlayer = new MediaPlayer();//[2]设置要播放的资源位置 path 可以是网络 路径 也可是本地路径try {mediaPlayer.setDataSource("/mnt/sdcard/me.mp3");//[3]准备播放mediaPlayer.prepare();//[4]开始播放mediaPlayer.start();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
package com.phone.baidumusic;import java.util.Timer;import java.util.TimerTask;import android.app.Service;import android.content.Intent;import android.media.MediaPlayer;import android.media.MediaPlayer.OnCompletionListener;import android.os.Binder;import android.os.Bundle;import android.os.IBinder;import android.os.Message;public class MusicService extends Service {private MediaPlayer mediaPlayer;@Overridepublic IBinder onBind(Intent intent) {return new MyBinder();}@Overridepublic void onCreate() {// [1]初始化mediaplayermediaPlayer = new MediaPlayer();super.onCreate();}@Overridepublic void onDestroy() {super.onDestroy();}//实现指定播放的位置public void seekTo(int position){mediaPlayer.seekTo(position);}// 播放音乐public void playMusic() {// [2]设置要播放的资源位置 path 可以是网络 路径 也可以是本地路径try {mediaPlayer.reset();mediaPlayer.setDataSource("/mnt/sdcard/me.mp3");// [3]准备播放mediaPlayer.prepare();// [4]开始播放mediaPlayer.start();// [5]更新进度条UpdateSeekBar();} catch (Exception e) {e.printStackTrace();}System.out.println("音乐播放了");}// 更新进度条的方法private void UpdateSeekBar() {//[1]获取到当前播放的总长度final int duration = mediaPlayer.getDuration();//[2]使用Timer定时器去定时获取当前进度final Timer timer = new Timer();final TimerTask task = new TimerTask() {@Overridepublic void run() {//[1]一秒钟获取一次当前进度int currentPosition = mediaPlayer.getCurrentPosition();//[4]拿着我们在mainactivity创建的handler 发消息 消息就可以携带数据Message msg =Message.obtain();Bundle data = new Bundle();data.putInt("duration", duration);data.putInt("currentPosition", currentPosition);msg.setData(data);//发送一条消息 mainactivity里面的handlermessage方法就会执行MainActivity.handler.sendMessage(msg);}};//100毫秒后每隔1秒执行一次run方法timer.schedule(task, 100, 1000);//当歌曲执行完毕后 把timer和timertask取消mediaPlayer.setOnCompletionListener(new OnCompletionListener() {@Overridepublic void onCompletion(MediaPlayer mp) {System.out.println("歌曲播放完成了");//把timer和timertask取消timer.cancel();task.cancel();}});}// 暂停音乐public void pauseMusic() {mediaPlayer.pause();System.out.println("音乐暂停了");}// 继续播放音乐public void rePlayMusic() {mediaPlayer.start();System.out.println("音乐继续播放了");}// [1]在服务的内部定义一个中间对象(IBinder)private class MyBinder extends Binder implements IService {@Overridepublic void callPlayMusic() {playMusic();}@Overridepublic void callPauseMusic() {pauseMusic();}@Overridepublic void callRePlayMusic() {rePlayMusic();}@Overridepublic void callSeekTo(int position) {seekTo(position);}}}
package com.phone.baidumusic;import android.app.Activity;import android.content.ComponentName;import android.content.Intent;import android.content.ServiceConnection;import android.os.Bundle;import android.os.Handler;import android.os.IBinder;import android.view.View;import android.widget.SeekBar;import android.widget.SeekBar.OnSeekBarChangeListener;public class MainActivity extends Activity {//中间人对象private IService iService;private MyConn conn;private static SeekBar sbar;public static Handler handler = new Handler(){public void handleMessage(android.os.Message msg) {//获取我们携带的数据Bundle data = msg.getData();int duration = data.getInt("duration");int currentPosition = data.getInt("currentPosition");//设置seekbar的进度sbar.setMax(duration);sbar.setProgress(currentPosition);};};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//混合方式开启服务//[1]先调用startservice 目的是可以保证服务在后台长期运行Intent intent = new Intent(this, MusicService.class);startService(intent);//[2]调用bindservice 目的为了获取我们定义的中间人对象 就可以间接的调用服务里面的方法了conn = new MyConn();bindService(intent, conn, BIND_AUTO_CREATE);//[3]找到seekbar 设置进度sbar = (SeekBar) findViewById(R.id.seekBar1);//[4]给seekbar设置监听事件sbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {//当拖动停止的时候调用@Overridepublic void onStopTrackingTouch(SeekBar seekBar) {iService.callSeekTo(seekBar.getProgress());}//当开始拖动@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {}//当进度改变@Overridepublic void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {}});}@Overrideprotected void onDestroy() {//当Activity销毁的时候 解绑服务unbindService(conn);super.onDestroy();}//点击按钮 播放音乐public void click1(View v){iService.callPlayMusic();}//点击按钮 暂停音乐public void click2(View v){iService.callPauseMusic();}//点击按钮 继续播放音乐public void click3(View v){iService.callRePlayMusic();}//监听服务的状态private class MyConn implements ServiceConnection{@Overridepublic void onServiceConnected(ComponentName name, IBinder service) {iService = (IService) service;}@Overridepublic void onServiceDisconnected(ComponentName name) {}}}
package com.phone.baidumusic;public interface IService {public void callPlayMusic();public void callPauseMusic();public void callRePlayMusic();public void callSeekTo(int position);}
package com.phone.videoplayer;import android.app.Activity;import android.media.MediaPlayer;import android.media.MediaPlayer.OnPreparedListener;import android.os.Bundle;import android.view.View;import com.phone.videoplayeronline.R;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}//点击按钮 播放一个音频文件public void click(View v){//[1]初始化mediaplayerfinal MediaPlayer mediaPlayer = new MediaPlayer();//[2]设置要播放的资源位置 path 可以是网络 路径 也可是本地路径try {mediaPlayer.setDataSource("http://192.168.11.86:8080/xpg.mp3");//[3]准备播放mediaPlayer.prepareAsync();//设置一个准备完成的监听mediaPlayer.setOnPreparedListener(new OnPreparedListener() {@Overridepublic void onPrepared(MediaPlayer mp) {//开始播放mediaPlayer.start();}});} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
<uses-permission android:name="android.permission.INTERNET"/>
android:layout_height="wrap_content"/>
//使用vitamio//插件vitamio框架检查是否可用if(!LibsChecker.checkVitamioLibs(this)){return;}final VideoView vv = (VideoView)findViewById(R.id.vv);vv.setVideoPath("http://192.168.11.86:8080/aa.avi");vv.setOnPreparedListener(new OnPreparedListener() {@Overridepublic void onPrepared(MediaPlayer mp) {vv.start();}});//设置video的控制器vv.setMediaController(new MediaController(this));
<!-- 一定要在清单文件初始化InitActivity --><activity android:name="io.vov.vitamio.activity.InitActivity"></activity>
package com.phone.camera;import java.io.File;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import android.support.v7.app.ActionBarActivity;import android.view.View;public class MainActivity extends ActionBarActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}//点击按钮进行照相public void click1(View v) {Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);File file = new File(Environment.getExternalStorageDirectory().getPath(),"ahha.png");//保存图片的位置intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));startActivityForResult(intent, 1);//发送一条广播 欺骗系统图库的应用Intent intent1 = new Intent();//设置actionintent.setAction(Intent.ACTION_MEDIA_MOUNTED);intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));//发送一下广播sendBroadcast(intent1);}//当开启的activity关闭的时候调用@Overrideprotected void onActivityResult(int arg0, int arg1, Intent arg2) {System.out.println("方法执行了");super.onActivityResult(arg0, arg1, arg2);}//点击按钮进行录像public void click2(View v) {Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);File file = new File(Environment.getExternalStorageDirectory().getPath(),"ahhaA.MP4");//保存图片的位置intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));startActivityForResult(intent, 2);//发送一条广播 欺骗系统图库的应用Intent intent1 = new Intent();//设置actionintent.setAction(Intent.ACTION_MEDIA_MOUNTED);intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory()));//发送一下广播sendBroadcast(intent1);}}
day10 多媒体(文字 图片 音频 视频)的更多相关文章
- 【转】android如何浏览并选择图片 音频 视频
转自:http://www.cnblogs.com/top5/archive/2012/03/06/2381986.html 这几天 在学习并开发android系统的图片浏览 音频 视频 的浏览 ...
- javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)
javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...
- HTML网页中添加音频视频动画...(转)
在网页中适当嵌入音频和视频能够充分显示网页的多媒体特性,特别是随着宽带网的普及,使得网络广播和网络视频成为现实,网页音频和视频的重要性也日益突显.具体来说,网页音频和视频的嵌入方法主要有三种: 一.b ...
- iOS 音频视频图像合成那点事
代码地址如下:http://www.demodashi.com/demo/13420.html 人而无信不知其可 前言 很久很久没有写点什么了,只因为最近事情太多了,这几天终于闲下来了,趁此机会,记录 ...
- 《转》iOS音频视频初级开发
代码改变世界 Posts - 73, Articles - 0, Comments - 1539 Cnblogs Dashboard Logout HOME CONTACT GALLERY RSS ...
- 前端笔记之HTML5&CSS3(上)新特性&音频视频&本地存储&自定义属性
一.HTML5简介 HTML 5 的第一份正式草案已于2008年1月22日公布.HTML5 仍处于完善之中.然而,大部分现代浏览器已经具备了某些 HTML5 支持. 2014年10月29日,万维网联盟 ...
- iOS原生推送(APNS)进阶iOS10推送图片、视频、音乐
代码地址如下:http://www.demodashi.com/demo/13208.html 前言 我们首先要在AppDelegate里面进行iOS的适配,可以参考这篇文章 iOS原生推送(APNS ...
- iOS 音频视频制作
--iOS多媒体 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制, ...
- Unity 利用FFmpeg实现录屏、直播推流、音频视频格式转换、剪裁等功能
目录 一.FFmpeg简介. 二.FFmpeg常用参数及命令. 三.FFmpeg在Unity 3D中的使用. 1.FFmpeg 录屏. 2.FFmpeg 推流. 3.FFmpeg 其他功能简述. 一. ...
随机推荐
- C# Dictionary, SortedDictionary, SortedList
就我个人觉得Dictionary, SortedDictionary, SortedList 这几个类的使用是比较简单的,只要稍微花点时间在网上查找一点资料,然后在阅读以下源码就理解的很清楚了.为什么 ...
- 微软BI SSIS 2012 ETL 控件与案例精讲课程学习方式与面试准备详解
开篇介绍 微软BI SSIS 2012 ETL 控件与案例精讲 (http://www.hellobi.com/course/21) 课程从2014年9月开始准备,到2014年12月在 天善BI学院 ...
- linux修改目录为可读写
发布到linux上遇到的问题, 上传目录没有写入权限 新建目录 mkdir /guangkuo/html/portal/images/upload 改为可读写 chmod -R a+w /guangk ...
- Wifiner for Mac(WiFi 状况分析工具)破解版安装
1.软件简介 Wifiner 是 macOS 系统上一款 Wifi 分析工具,仅需几次点击即可对您的 Wi-Fi 网络连接进行分析和故障排除.扫描您的 Wi-Fi 网络,获取包含交互式彩色编码热 ...
- Django-基础-2-ORM
参考文章: http://www.cnblogs.com/haiyan123/p/7732190.html https://www.cnblogs.com/liuqingzheng/articles/ ...
- [svc]find+xargs/sed&sed后向引用+awk多匹配符+过滤行绝招总结&&产生随机数
30天内的文件打包 find ./test_log -type f -mtime -30|xargs tar -cvf test_log.tar.gz find,文件+超过7天+超过1M的+按日期为文 ...
- linux tcp相关参数
/etc/sysctl.conf文件 /etc/sysctl.conf是一个允许你改变正在运行中的Linux系统的接口.它包含一些TCP/IP堆栈和虚拟内存系统的高级选项,可用来控制Linux网络配置 ...
- 专访图书作者祁宇:C++11让程序更简洁、更现代、更强大
日前CSDN采访了祁宇,请他解读C++11的新标准.C++的现状以及未来的发展前景. CSDN:怎么会想到编写<深入应用C++11:代码优化与工程级应用>这本书的?有没有什么故事可以分享下 ...
- sublime text 3 安装卸载插件和取消启动检查更新
1.Perferences->Package Contro,输入install 调出 Install Package 选项并回车 2.安装相应的插件 2.点击首选项–设置(用户) 3.卸载插件 ...
- linux每日命令(5):mkdir命令
linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录. 1.命令格式: mkdir [选项] 目录名或路径名 2. ...