<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[学仙只为看看天的专栏]]></title><description><![CDATA[谦虚，敬畏，学习，总结]]></description><link>https://blog.youkuaiyun.com/jinyongqing</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jinyongqing]]></copyright><item><title><![CDATA[【C++笔记】C++继承与派生中的构造函数]]></title><link>https://blog.youkuaiyun.com/jinyongqing/article/details/106303344</link><guid>https://blog.youkuaiyun.com/jinyongqing/article/details/106303344</guid><author>jinyongqing</author><pubDate>Sat, 23 May 2020 18:03:08 +0800</pubDate><description><![CDATA[C++中，构造函数与父类的其它成员(成员变量和成员方法)不同，它不能被子类继承。因此，在创建子类对象时，为了初始化从父类中继承来的成员变量，编译器需要调用其父类的构造函数。

关于子类中构造函数的构造原则，可分为以下4种情况分别来看：

1. 父类没有声明构造函数

 (1) 子类也没有声明自己的构造函数，则父类和子类均由编译器生成默认的构造函数。

(2) 子类中声明了构造函数(无参或者带参)，则子类的构造函数可以写成任何形式，不用顾忌父类的构造函数。在创建子类对象时，先调用父类默认的构造函数(编译...]]></description><category></category></item><item><title><![CDATA[配置GLEW+GLFW并使用Xcode写OpenGL应用]]></title><link>https://blog.youkuaiyun.com/jinyongqing/article/details/102158213</link><guid>https://blog.youkuaiyun.com/jinyongqing/article/details/102158213</guid><author>jinyongqing</author><pubDate>Sat, 05 Oct 2019 17:13:01 +0800</pubDate><description><![CDATA[闲话

因为这几天一直在忙着图形学的实验，发现真的是很蛋疼，因为课程还在使用glut等openGL1.x版本的固定管线API，但是我感觉这和我们计算机行业追求新技术的宗旨完全不同啊，现在openGL2.x已经完全不支持固定管线了，只支持可编程管线，而且国内的资料真的很乱，想要找一些老版openGL的相关资料已经很难了，大部分都是可编程管线API的教程。所以，这篇文章就先记录一下我通过网络上的资料学...]]></description><category></category></item><item><title><![CDATA[extern "C" 用法理解与总结]]></title><link>https://blog.youkuaiyun.com/jinyongqing/article/details/83868579</link><guid>https://blog.youkuaiyun.com/jinyongqing/article/details/83868579</guid><author>jinyongqing</author><pubDate>Thu, 08 Nov 2018 21:19:46 +0800</pubDate><description><![CDATA[被extern &quot;C&quot;修饰的变量和函数是按照C语言方式进行编译和链接的

举个例子：

1.moduleA、moduleB两个模块

2.B调用A中的代码

3.其中A是用C语言实现的，而B是利用C++实现的

//moduleA头文件：moduleA.h


#ifndef __MODULE_A_H
#define __MODULE_A_H
int fun(int, int);
#endif

...]]></description><category></category></item><item><title><![CDATA[Mac Xcode上运行ffmpeg example程序]]></title><link>https://blog.youkuaiyun.com/jinyongqing/article/details/80671332</link><guid>https://blog.youkuaiyun.com/jinyongqing/article/details/80671332</guid><author>jinyongqing</author><pubDate>Tue, 12 Jun 2018 21:28:28 +0800</pubDate><description><![CDATA[    之前一直在linux下编译C/C++程序并执行，最近想在mac下直接运行，查了下开发环境，可以直接用xcode。所以就用ffmpeg做了下实验，具体过程记录如下。

    我们的目的是能够在xcode下运行起来ffmpeg doc文件夹下面的example示例程序，所以前提自然是在mac上先装好ffmpeg，具体过程可以参考：https://trac.ffmpeg.org/wiki/Co...]]></description><category></category></item><item><title><![CDATA[Android软解码与硬解码流程概述]]></title><link>https://blog.youkuaiyun.com/jinyongqing/article/details/80635441</link><guid>https://blog.youkuaiyun.com/jinyongqing/article/details/80635441</guid><author>jinyongqing</author><pubDate>Sat, 09 Jun 2018 19:21:08 +0800</pubDate><description><![CDATA[最近整理了下Android端项目里硬解码与软解码的大致流程，做个笔记，方便以后review。如有错误，欢迎指正。硬解码：1.创建MediaCodec：如 MediaCodec.createDecoderByType(keyMime);2.configure codec：配置format，surface等参数3.start codec4.从codec的inputBuffer缓冲区获取一个传递解码前数...]]></description><category></category></item><item><title><![CDATA[关于视频编码I P B帧存储，编码，解码，显示顺序的理解]]></title><link>https://blog.youkuaiyun.com/jinyongqing/article/details/80293706</link><guid>https://blog.youkuaiyun.com/jinyongqing/article/details/80293706</guid><author>jinyongqing</author><pubDate>Sat, 12 May 2018 18:20:39 +0800</pubDate><description><![CDATA[假设从摄像头采集，采集顺序 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靠前，但是它...]]></description><category></category></item><item><title><![CDATA[wireshark抓包数据：理解与分析]]></title><link>https://blog.youkuaiyun.com/jinyongqing/article/details/53728590</link><guid>https://blog.youkuaiyun.com/jinyongqing/article/details/53728590</guid><author>jinyongqing</author><pubDate>Sun, 18 Dec 2016 17:31:55 +0800</pubDate><description><![CDATA[wireshark是一个非常好用的抓包工具，本文根据平时抓包经验，对之前wireshark抓包的一些常见知识点进行了整理。
有不当之处，欢迎指正

1.SYN，FIN会消耗一个序号，单独的ACK不消耗序号

2.WIN表示可以接收数据的滑动窗口（接收缓冲区）是多少，如果A发到B的包的win为0，就是A告诉B说我现在滑动窗口为0了，饱了，你不要再发给我了，就说明A端环境有压力

3.A]]></description><category></category></item><item><title><![CDATA[JavaScript精炼——functions中的“this”]]></title><link>https://blog.youkuaiyun.com/jinyongqing/article/details/40425195</link><guid>https://blog.youkuaiyun.com/jinyongqing/article/details/40425195</guid><author>jinyongqing</author><pubDate>Fri, 24 Oct 2014 11:41:47 +0800</pubDate><description><![CDATA[原文链接：http://dbear.iteye.com/blog/609090

------------------------------------------------------------------------
   首先我们需要知道，function的invoke方式主要有三种：1、单纯调用 2、作为某对象的method被调用 3、apply()和call()调用。针对三种]]></description><category></category></item><item><title><![CDATA[JavaScript精炼---类(class)、构造函数(constructor)、原型(prototype)]]></title><link>https://blog.youkuaiyun.com/jinyongqing/article/details/40423823</link><guid>https://blog.youkuaiyun.com/jinyongqing/article/details/40423823</guid><author>jinyongqing</author><pubDate>Fri, 24 Oct 2014 10:38:59 +0800</pubDate><description><![CDATA[类 Class
类的概念应该是面向对象语言的一个特色，但是JavaScript并不像Java，C++等高级语言那样拥有正式的类，而是多数通过构造器以及原型方式来仿造实现。在讨论构造器和原型方法前，我可以看看一种叫做“工厂方式”的仿造方法。
 
function start() {
   alert("Bang!!");
}
 
function createCar(color, ti]]></description><category></category></item><item><title><![CDATA[理解RESTful架构]]></title><link>https://blog.youkuaiyun.com/jinyongqing/article/details/40046489</link><guid>https://blog.youkuaiyun.com/jinyongqing/article/details/40046489</guid><author>jinyongqing</author><pubDate>Mon, 13 Oct 2014 15:43:45 +0800</pubDate><description><![CDATA[作者： 
阮一峰

越来越多的人开始意识到，网站即软件，而且是一种新型的软件。
这种"互联网软件"采用客户端/服务器模式，建立在分布式体系上，通过互联网通信，具有高延时（high latency）、高并发等特点。
网站开发，完全可以采用软件开发的模式。但是传统上，软件和网络是两个不同的领域，很少有交集；软件开发主要针对单机环境，网络则主要研究系统之间的通信。互联网的兴起，使得这两个领域开]]></description><category></category></item><item><title><![CDATA[理解Python的With语句]]></title><link>https://blog.youkuaiyun.com/jinyongqing/article/details/39998311</link><guid>https://blog.youkuaiyun.com/jinyongqing/article/details/39998311</guid><author>jinyongqing</author><pubDate>Sat, 11 Oct 2014 19:09:27 +0800</pubDate><description><![CDATA[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 ]]></description><category></category></item><item><title><![CDATA[入职以来总结]]></title><link>https://blog.youkuaiyun.com/jinyongqing/article/details/39236553</link><guid>https://blog.youkuaiyun.com/jinyongqing/article/details/39236553</guid><author>jinyongqing</author><pubDate>Fri, 12 Sep 2014 22:38:22 +0800</pubDate><description><![CDATA[正式工作到现在也将近5个月了，之前一直很忙，没怎么做过总结。最近稍微好了一些，趁着周末简单总结一下这几个月来的收获，以及不足，以及做一些简单的规划吧。
     入职以来，其实很多事情都超出了自己的预料。首先职位上，之前一直做windows上面的java开发，做过一些web相关的J2EE开发，实习期间做的主要是J2SE，所以总的来说，其实自己比较熟悉的就是java，面试也是java相关的岗位。但]]></description><category></category></item><item><title><![CDATA[HDU ACM 1005 java版]]></title><link>https://blog.youkuaiyun.com/jinyongqing/article/details/21537175</link><guid>https://blog.youkuaiyun.com/jinyongqing/article/details/21537175</guid><author>jinyongqing</author><pubDate>Wed, 19 Mar 2014 16:05:57 +0800</pubDate><description><![CDATA[原题链接： http://acm.hdu.edu.cn/showproblem.php?pid=1005


Problem Description

A 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,]]></description><category></category></item><item><title><![CDATA[多线程读书笔记二（java内存模型、volatile变量、内存模型与synchronized、CAS)]]></title><link>https://blog.youkuaiyun.com/jinyongqing/article/details/21343629</link><guid>https://blog.youkuaiyun.com/jinyongqing/article/details/21343629</guid><author>jinyongqing</author><pubDate>Sun, 16 Mar 2014 22:52:05 +0800</pubDate><description><![CDATA[java内存模型
java中，线程之间的通信是通过共享内存的方式，存储在堆中的实例域，静态域以及数组元素都可以在线程间通信。java内存模型控制一个线程对共享变量的改变何时对另一个线程可见。
线程间的共享变量存在主内存中，而对于每一个线程，都有一个私有的工作内存。工作内存是个虚拟的概念，涵盖了缓存，写缓冲区，寄存器以及其他的硬件和编译器优化，总之就是指线程的本地内存。存在线程本地内存中的变量值]]></description><category></category></item><item><title><![CDATA[多线程读书笔记一（内部锁，过期数据，非原子的64位操作，线程封闭）]]></title><link>https://blog.youkuaiyun.com/jinyongqing/article/details/21250403</link><guid>https://blog.youkuaiyun.com/jinyongqing/article/details/21250403</guid><author>jinyongqing</author><pubDate>Fri, 14 Mar 2014 20:53:32 +0800</pubDate><description><![CDATA[关于内部锁
synchronized关键字在多线程中，是一种“锁”的机制，它是一种内部锁。
内部锁是可重进入的，所谓可重进入，就是指请求是基于每线程，而不是每调用。
synchronized锁是加在对象上的，但是如果同一线程，多次请求这个锁，是可以的，如：

public class ReentrancySynTest {
  public synchronized void a() {]]></description><category></category></item><item><title><![CDATA[ARP逆过程——RARP协议流程]]></title><link>https://blog.youkuaiyun.com/jinyongqing/article/details/20934509</link><guid>https://blog.youkuaiyun.com/jinyongqing/article/details/20934509</guid><author>jinyongqing</author><pubDate>Mon, 10 Mar 2014 17:03:05 +0800</pubDate><description><![CDATA[通常﹐我们使用的乙太网卡﹐在出厂的时候就有生产厂家把网卡的实体地址烧在 ROM 里面﹐这个地址是不能改变的(某些型号的网路卡﹐或是透过其它技术手段﹐是允许您修改实体地址的)。不管系统是否起来﹐这个地址都会存在﹐而且要让系统获得它也很容易。然而，在一些无磁碟(diskless)工作站上面﹐系统档案都存放在远端的伺服器﹐当它在启动的时候﹐因为本身没有 IP协议地址﹐也就无法和伺服器沟通﹐更不能将系统档]]></description><category></category></item><item><title><![CDATA[关于java中的protected访问权限]]></title><link>https://blog.youkuaiyun.com/jinyongqing/article/details/19756291</link><guid>https://blog.youkuaiyun.com/jinyongqing/article/details/19756291</guid><author>jinyongqing</author><pubDate>Sun, 23 Feb 2014 13:36:02 +0800</pubDate><description><![CDATA[1. protected 访问控制符能被用于方法和成员变量。
　　
　2. 声明为protected的方法和成员变量能被同一个包里的所有类所访问，就像默认修饰符package一样。
　　
　3. 能被该类的子类所访问，子类可以和父类不在一个包中。
　　
　这样，当你想让一个类中的某个方法或成员变量在包中都可见，而且其子类也能访问（子类有可能和父类不在同一个包中）但又不想让所有类都可以访]]></description><category></category></item><item><title><![CDATA[Java 继承机制]]></title><link>https://blog.youkuaiyun.com/jinyongqing/article/details/19756227</link><guid>https://blog.youkuaiyun.com/jinyongqing/article/details/19756227</guid><author>jinyongqing</author><pubDate>Sun, 23 Feb 2014 13:20:24 +0800</pubDate><description><![CDATA[1　继承的概念

　　如果类 B 具有类 A 的全部属性和方法，而且又具有自己特有的某些属性和方法，则把类 A 称作一般类，把类 B 称作特殊类。

　　在面向对象程序设计中运用继承原则，就是在每个由一般类和特殊类形成的一般 - 特殊结构中，把一般类的对象实例和所有特殊类的对象实例都共同具有的属性和操作一次性地在一般类中进行显式的定义，在特殊类中不再重复地定义一般类中已经定义的东西，但是在]]></description><category></category></item><item><title><![CDATA[算法理解——大数相乘问题]]></title><link>https://blog.youkuaiyun.com/jinyongqing/article/details/13508577</link><guid>https://blog.youkuaiyun.com/jinyongqing/article/details/13508577</guid><author>jinyongqing</author><pubDate>Tue, 29 Oct 2013 15:21:15 +0800</pubDate><description><![CDATA[腾讯今年校招的一道附加题，就是“大数相乘”问题。所谓大数相乘，就是指数字比较大，相乘的结果超出了基本类型的表示范围，所以这样的数不能够直接做乘法运算。
其实乘法运算可以分拆为两步：第一步，是将乘数与被乘数逐位相乘；第二步，将逐位相乘得到的结果，对应相加起来。这有点类似小学数学中，计算乘法时通常采用的“竖式运算”。
这里唯一要注意的便是进位问题，我们可以先不考虑进位，当所有位对应相加，产生结果之]]></description><category></category></item><item><title><![CDATA[堆和栈的区别]]></title><link>https://blog.youkuaiyun.com/jinyongqing/article/details/13506015</link><guid>https://blog.youkuaiyun.com/jinyongqing/article/details/13506015</guid><author>jinyongqing</author><pubDate>Tue, 29 Oct 2013 12:42:20 +0800</pubDate><description><![CDATA[一、预备知识—程序的内存分配  
  一个由C/C++编译的程序占用的内存分为以下几个部分  
  1、栈区（stack）—   由编译器自动分配释放   ，存放函数的参数值，局部变量的值等。其  
  操作方式类似于数据结构中的栈。  
  2、堆区（heap）   —   一般由程序员分配释放，   若程序员不释放，程序结束时可能由OS回  
  收   。注意它与数据结构中的堆是两]]></description><category></category></item></channel></rss>