自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

学仙只为看看天的专栏

谦虚,敬畏,学习,总结

  • 博客(47)
  • 收藏
  • 关注

原创 【C++笔记】C++继承与派生中的构造函数

C++中,构造函数与父类的其它成员(成员变量和成员方法)不同,它不能被子类继承。因此,在创建子类对象时,为了初始化从父类中继承来的成员变量,编译器需要调用其父类的构造函数。关于子类中构造函数的构造原则,可分为以下4种情况分别来看:1. 父类没有声明构造函数 (1) 子类也没有声明自己的构造函数,则父类和子类均由编译器生成默认的构造函数。(2) 子类中声明了构造函数(无参或者带参),则子类的构造函数可以写成任何形式,不用顾忌父类的构造函数。在创建子类对象时,先调用父类默认的构造函数(编译...

2020-05-23 18:03:08 2660

转载 配置GLEW+GLFW并使用Xcode写OpenGL应用

闲话因为这几天一直在忙着图形学的实验,发现真的是很蛋疼,因为课程还在使用glut等openGL1.x版本的固定管线API,但是我感觉这和我们计算机行业追求新技术的宗旨完全不同啊,现在openGL2.x已经完全不支持固定管线了,只支持可编程管线,而且国内的资料真的很乱,想要找一些老版openGL的相关资料已经很难了,大部分都是可编程管线API的教程。所以,这篇文章就先记录一下我通过网络上的资料学...

2019-10-05 17:13:01 268

原创 extern "C" 用法理解与总结

被extern "C"修饰的变量和函数是按照C语言方式进行编译和链接的举个例子:1.moduleA、moduleB两个模块2.B调用A中的代码3.其中A是用C语言实现的,而B是利用C++实现的//moduleA头文件:moduleA.h#ifndef __MODULE_A_H#define __MODULE_A_Hint fun(int, int);#endif...

2018-11-08 21:19:46 437

原创 Mac Xcode上运行ffmpeg example程序

    之前一直在linux下编译C/C++程序并执行,最近想在mac下直接运行,查了下开发环境,可以直接用xcode。所以就用ffmpeg做了下实验,具体过程记录如下。    我们的目的是能够在xcode下运行起来ffmpeg doc文件夹下面的example示例程序,所以前提自然是在mac上先装好ffmpeg,具体过程可以参考:https://trac.ffmpeg.org/wiki/Co...

2018-06-12 21:28:28 2507 1

原创 Android软解码与硬解码流程概述

最近整理了下Android端项目里硬解码与软解码的大致流程,做个笔记,方便以后review。如有错误,欢迎指正。硬解码:1.创建MediaCodec:如 MediaCodec.createDecoderByType(keyMime);2.configure codec:配置format,surface等参数3.start codec4.从codec的inputBuffer缓冲区获取一个传递解码前数...

2018-06-09 19:21:08 7777 1

原创 关于视频编码I P B帧存储,编码,解码,显示顺序的理解

假设从摄像头采集,采集顺序 1 2 3 4 5 最终编码结果是:1编码成I帧,2,3,4编码成B帧,5编码成P帧。视频帧采集后,经过编码器encode以及mux成容器格式,编码和存储过程如下:编码:1)先编码 1,编成I帧2)2,3,4准备编码成b帧,先缓存下来,记录下采集的时间点,后续作为pts基准3)再编码 5,编成P帧,(注意5虽然先编码,dts相对2,3,4靠前,但是它...

2018-05-12 18:20:39 5439

原创 wireshark抓包数据:理解与分析

wireshark是一个非常好用的抓包工具,本文根据平时抓包经验,对之前wireshark抓包的一些常见知识点进行了整理。有不当之处,欢迎指正1.SYN,FIN会消耗一个序号,单独的ACK不消耗序号2.WIN表示可以接收数据的滑动窗口(接收缓冲区)是多少,如果A发到B的包的win为0,就是A告诉B说我现在滑动窗口为0了,饱了,你不要再发给我了,就说明A端环境有压力3.A

2016-12-18 17:31:55 38195 2

转载 JavaScript精炼——functions中的“this”

原文链接:http://dbear.iteye.com/blog/609090------------------------------------------------------------------------   首先我们需要知道,function的invoke方式主要有三种:1、单纯调用 2、作为某对象的method被调用 3、apply()和call()调用。针对三种

2014-10-24 11:41:47 804

转载 JavaScript精炼---类(class)、构造函数(constructor)、原型(prototype)

类 Class类的概念应该是面向对象语言的一个特色,但是JavaScript并不像Java,C++等高级语言那样拥有正式的类,而是多数通过构造器以及原型方式来仿造实现。在讨论构造器和原型方法前,我可以看看一种叫做“工厂方式”的仿造方法。 function start() {   alert("Bang!!");} function createCar(color, ti

2014-10-24 10:38:59 846

转载 理解RESTful架构

作者: 阮一峰越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点。网站开发,完全可以采用软件开发的模式。但是传统上,软件和网络是两个不同的领域,很少有交集;软件开发主要针对单机环境,网络则主要研究系统之间的通信。互联网的兴起,使得这两个领域开

2014-10-13 15:43:45 1004

转载 理解Python的With语句

With语句是什么?Python’s with statement provides a very convenient way of dealing with the situation where you have to do a setup and teardown to make something happen. A very good example for this is the

2014-10-11 19:09:27 617

原创 入职以来总结

正式工作到现在也将近5个月了,之前一直很忙,没怎么做过总结。最近稍微好了一些,趁着周末简单总结一下这几个月来的收获,以及不足,以及做一些简单的规划吧。     入职以来,其实很多事情都超出了自己的预料。首先职位上,之前一直做windows上面的java开发,做过一些web相关的J2EE开发,实习期间做的主要是J2SE,所以总的来说,其实自己比较熟悉的就是java,面试也是java相关的岗位。但

2014-09-12 22:38:22 2060

原创 HDU ACM 1005 java版

原题链接: http://acm.hdu.edu.cn/showproblem.php?pid=1005Problem DescriptionA number sequence is defined as follows:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7.Given A,

2014-03-19 16:05:57 4240 1

原创 多线程读书笔记二(java内存模型、volatile变量、内存模型与synchronized、CAS)

java内存模型java中,线程之间的通信是通过共享内存的方式,存储在堆中的实例域,静态域以及数组元素都可以在线程间通信。java内存模型控制一个线程对共享变量的改变何时对另一个线程可见。线程间的共享变量存在主内存中,而对于每一个线程,都有一个私有的工作内存。工作内存是个虚拟的概念,涵盖了缓存,写缓冲区,寄存器以及其他的硬件和编译器优化,总之就是指线程的本地内存。存在线程本地内存中的变量值

2014-03-16 22:52:05 4073

原创 多线程读书笔记一(内部锁,过期数据,非原子的64位操作,线程封闭)

关于内部锁synchronized关键字在多线程中,是一种“锁”的机制,它是一种内部锁。内部锁是可重进入的,所谓可重进入,就是指请求是基于每线程,而不是每调用。synchronized锁是加在对象上的,但是如果同一线程,多次请求这个锁,是可以的,如:public class ReentrancySynTest { public synchronized void a() {

2014-03-14 20:53:32 872

转载 ARP逆过程——RARP协议流程

通常﹐我们使用的乙太网卡﹐在出厂的时候就有生产厂家把网卡的实体地址烧在 ROM 里面﹐这个地址是不能改变的(某些型号的网路卡﹐或是透过其它技术手段﹐是允许您修改实体地址的)。不管系统是否起来﹐这个地址都会存在﹐而且要让系统获得它也很容易。然而,在一些无磁碟(diskless)工作站上面﹐系统档案都存放在远端的伺服器﹐当它在启动的时候﹐因为本身没有 IP协议地址﹐也就无法和伺服器沟通﹐更不能将系统档

2014-03-10 17:03:05 2000

转载 关于java中的protected访问权限

1. protected 访问控制符能被用于方法和成员变量。   2. 声明为protected的方法和成员变量能被同一个包里的所有类所访问,就像默认修饰符package一样。   3. 能被该类的子类所访问,子类可以和父类不在一个包中。   这样,当你想让一个类中的某个方法或成员变量在包中都可见,而且其子类也能访问(子类有可能和父类不在同一个包中)但又不想让所有类都可以访

2014-02-23 13:36:02 11024

转载 Java 继承机制

1 继承的概念  如果类 B 具有类 A 的全部属性和方法,而且又具有自己特有的某些属性和方法,则把类 A 称作一般类,把类 B 称作特殊类。  在面向对象程序设计中运用继承原则,就是在每个由一般类和特殊类形成的一般 - 特殊结构中,把一般类的对象实例和所有特殊类的对象实例都共同具有的属性和操作一次性地在一般类中进行显式的定义,在特殊类中不再重复地定义一般类中已经定义的东西,但是在

2014-02-23 13:20:24 1686

原创 算法理解——大数相乘问题

腾讯今年校招的一道附加题,就是“大数相乘”问题。所谓大数相乘,就是指数字比较大,相乘的结果超出了基本类型的表示范围,所以这样的数不能够直接做乘法运算。其实乘法运算可以分拆为两步:第一步,是将乘数与被乘数逐位相乘;第二步,将逐位相乘得到的结果,对应相加起来。这有点类似小学数学中,计算乘法时通常采用的“竖式运算”。这里唯一要注意的便是进位问题,我们可以先不考虑进位,当所有位对应相加,产生结果之

2013-10-29 15:21:15 9214 4

转载 堆和栈的区别

一、预备知识—程序的内存分配    一个由C/C++编译的程序占用的内存分为以下几个部分    1、栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等。其    操作方式类似于数据结构中的栈。    2、堆区(heap)   —   一般由程序员分配释放,   若程序员不释放,程序结束时可能由OS回    收   。注意它与数据结构中的堆是两

2013-10-29 12:42:20 604

原创 算法理解——全排列算法

全排列算法描述如下:用C++写一个函数, 如 Foo(const char *str), 打印出 str 的全排列,如 abc 的全排列: abc, acb, bca, dac, cab, cba这种问题可以用递归的思想描述,如下:abc的全排列,即为:{a在第一个位置,剩下元素(这里是b和c的全排列)} U {a在第二个位置,剩下元素的全排列} U {a在第三个位置,剩下元素

2013-10-15 19:03:48 1734

转载 建堆过程

堆排序中,最初的步骤就是建立一个堆。之前在一些公司的笔试题上面见到一些与建堆过程相关的题目,因为当时对建堆过程有个误解,所以经常选错。之前一直以为是在完全二叉树中依次插入序列中的元素,每插入一个元素,就调用siftup操作;而实际的建堆操作是序列中元素首先就全部填入一个完全二叉树,然后从第一个非终端节点开始,调用siftdown操作,依次调整。以下是一篇关于建堆过程的文章,转载自:http:/

2013-10-12 14:28:47 36238 10

转载 把二元查找树转变成排序的双向链表

题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。  比如将二元查找树                                            10                                          /    /

2013-10-12 13:43:20 634

原创 理解java垃圾回收器

今天百度一面,面试官刚开始就说谈一谈java里的垃圾回收器。网上关于java垃圾回收机制的文章实在是太多,但是以前看那些文章都是随便了解大概,并给有深入考虑,所以一旦时隔较长时间,就会对其中的一些具体的原理生疏。所以,在这里还是亲自整理下关于常用垃圾回收机制以及java垃圾回收器的工作原理。引用计数法:这种垃圾回收的方法比较简单,但也是一种速度很慢的垃圾回收技术。它的工作原理如下:1.

2013-10-11 16:58:56 2099 1

原创 对于session与cookie机制,自己的一点理解

参考:http://hi.baidu.com/jmtbai/item/0b4a46f9b57f296e3d148575session与cookie:session与cookie的引入原因:用户在浏览一个网站时候可能会浏览此网站的多个网页(比如百度的贴吧和知道)。用户每次打开一个网页都要和服务器重新建立连接,但是由于http协议无状态无记忆的特点,此次连接无法获得上次连接的状态。这样,比

2013-10-11 15:08:07 732

转载 你知道数据库索引的工作原理吗?

原文链接:http://www.ituring.com.cn/article/986译者按:今天在翻译时无意中搜索到StackOverflow中的这篇文章(问答),觉得有必要翻译出来。不仅因为文章本身写得精彩,更重要的是它昭示了一个写文章(特别是技术文章)的重要法则——5W1H。 原文在此How does database indexing work?(作者:Xenph Y

2013-10-09 10:07:44 1180

原创 算法理解——字符串根据字典值排序

字符串根据字典值排序问题,就是指对给定的字符串,按照首字母的字典值排序,如果首字母相同的字符串,则按照第二个字母,依次内推,比如说{"dog","dear","eye","bed"},排序后应该是{"bed","dear","dog","eye"}刚开始接触到这个问题时候,当时想着排序首先按照第一个字母,如果第一个字母相同的那些字符串,再归为一类,再按照第二个字母排序。。。依次类推

2013-10-08 10:51:22 13071

原创 链接相关知识

前几天,在百度笔试题上遇到“动态链接库”与“静态链接库”两个概念。由于对编译、加载、链接这几个概念没有彻底弄清楚,所以当时写的答案现在看来距离正确的理解有比较大的偏差。这两天翻了下CSAPP,重新看了下“链接”的相关知识,这里做个总结,希望能借此进一步了解计算机程序运行的工作情况。首先,计算机的编译系统由五个阶段,以C语言为例:预处理阶段:主要根据以字符#开头的命令,修改原始的C程序。比如

2013-10-08 10:45:10 759

转载 Java序列化与反序列化(实践)

原文链接:http://renyongjie668.blog.163.com/blog/static/1600531201022105142865/基本概念:序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。昨天在一本书上看到了,好好实践了一下,序列化为一般文件,也序列化为XML文件(使用

2013-09-30 13:42:51 556

原创 进程同步问题(1)——生产者,消费者 & 读者,写者问题

今天看操作系统的时候,在进程管理一章又看到了经典的进程同步问题。进程同步问题确实比较复杂,因为要保证进程推进顺序合法,可能会使用到多个信号量,而且很多p,v操作的顺序也不可颠倒。好在进程同步有几个经典问题,如果搞清楚了,对其他问题也可以举一反三。生产者消费者问题:分析:1.生产者消费者共用一个缓冲区,生产者向其中投入产品,消费者从中取出产品,并消费。所以需要定义一个缓冲区,这里

2013-09-30 12:42:34 3327

原创 算法理解——求连续子向量的最大和

题目:写一个程序,求出一个数组中连续数和最大的,返回和,比如 { -1,1,2,0,3},返回 1 + 2 + 0 + 3 = 6这道题有很多组解法,参考《编程珠玑》给出的一种解法,最快能达到O(n)。思路是:1.前i个元素中,最大总和子数组要么在前i-1个元素中(将其存储在maxsofar中),要么结束位置为i(将其存储在maxendinghere中)2.每次得出maxendingh

2013-09-27 20:07:49 3027 1

原创 算法理解——LCS算法(最长公共子序列)

这是算法导论上面的一个经典动态规划问题,之前曾经参加过一场笔试,就遇到这个算法。因为这个算法在动态规划问题中比较具有代表性,所以就用java实现了一下。代码实现过程中参考了算法导论上面的思路。算法分析:1.设X(1...i),Y(1...j)为两个序列,则对于最长子序列的长度,可以得出递归式如下:a.当Xi == Yj时,LCS(Xi,Yj) = LCS(Xi-1,Yj-1

2013-09-27 18:59:17 1891

原创 算法理解——约瑟夫环

前几天去优酷笔试,有一个约瑟夫环的问题,当时由于时间比较紧张加上长久不写算法,当时没写出来。后来回来后想了一下,其实用java写非常简单,这里面利用了java提供的list,与传统的C语言写法相比,难免有一些投机取巧的成分。import java.util.ArrayList;import java.util.List;public class JosephusRing{

2013-09-27 16:55:14 2833

原创 算法理解——寻找和为定值的两个数/多个数

1 寻找和为定值的两个数题目:输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。example:  例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。思路1: 若数组无序,首先用快排排序O(n*log n)然后从头遍历每个数,对其互补的数用二分查找,因为二分查找的时间复杂度是O(log n),所以总的时间复杂

2013-09-26 15:52:01 9046

原创 算法理解——top K问题实例

参考:http://blog.csdn.net/v_JULY_v/article/details/6403777题目:搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门

2013-09-26 15:44:26 2020

转载 Iterator 循环 List remove元素报错的解决办法

原文链接:http://www.2cto.com/kf/201301/184791.htmlList list = new ArrayList(); list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); list.add(6); for (Iterator iter =

2013-07-18 15:04:28 2301

转载 背包九讲

背包问题 它是在1978年由Merkel和Hellman提出的。它的主要思路是假定某人拥有大量物品,重量各不同。此人通过秘密地选择一部分物品并将它们放 到背包中来加密消息。背包中的物品中重量是公开的,所有可能的物品也是公开的,但背包中的物品是保密的。附加一定的限制条件,给出重量,而要列出可能的物 品,在计算上是不可实现的。背包问题是熟知的不可计算问题,背包体制以其加密,解密速度快而其人注目。但

2013-04-28 11:31:36 439

转载 java java.util.ConcurrentModificationException 原因

原文链接:http://blog.csdn.net/traceofsun/article/details/5820925用iterator遍历集合时要注意的地方:不可以对iterator相关的地方做添加或删除操作。下面用List为例来说明为什么会报 ConcurrentModificationException  这个异常,其它集合类似可以自己思考。 public st

2013-04-19 10:44:56 620

转载 java异常处理总结

一篇很好的关于异常处理的文章:http://www.blogjava.net/freeman1984/archive/2007/09/27/148850.html  收藏到这里供以后参考另外一些个人心得:1.抛出异常后(throw异常),当前的执行路径被中止,后面的代码(除此try,catch对应的finally中的)就不会执行下去了2.如果异常没有被抛出的话,那么try,catc

2013-01-21 10:41:37 338

转载 Oracle中start with...connect by prior子句用法

作者:ZHF     出处:http://zhf.cnblogs.com/          原文链接:http://www.cnblogs.com/ZHF/archive/2008/09/10/1288101.htmlconnect by 是结构化查询中用到的,其基本语法是: select ... from tablename start with 条件1 c

2012-08-01 17:50:51 1005

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除