<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[code09的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/code09</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; code09]]></copyright><item><title><![CDATA[Android+Termux搭建ssh服务器]]></title><link>https://blog.youkuaiyun.com/code09/article/details/121512046</link><guid>https://blog.youkuaiyun.com/code09/article/details/121512046</guid><author>code09</author><pubDate>Wed, 24 Nov 2021 11:50:32 +0800</pubDate><description><![CDATA[1. 安装Termux

2. 在Termux终端执行：$ pkg install openssh

3. 编辑 /files/usr/etc/sshd_config

Port 22

Protocol 2

PasswordAuthentication yes

4. 查询当前用户名(例：u0_a55)：$ whoami

5. 修改当前用户登录密码(例：123456)：$ passwd

6. 启动sshd服务： $ sshd

7. 查看服务运行状态：$ netstat -tlp| grep ss.]]></description><category></category></item><item><title><![CDATA[关于重载全局new/delete 的一些问题]]></title><link>https://blog.youkuaiyun.com/code09/article/details/77980542</link><guid>https://blog.youkuaiyun.com/code09/article/details/77980542</guid><author>code09</author><pubDate>Thu, 14 Sep 2017 16:12:16 +0800</pubDate><description><![CDATA[重载全局new/delete的做法，网上已经可以搜到很多，不再赘述。
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #ba2da2}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #000000}
p.p3 {margin:]]></description><category></category></item><item><title><![CDATA[c语言小代码——对齐]]></title><link>https://blog.youkuaiyun.com/code09/article/details/77505300</link><guid>https://blog.youkuaiyun.com/code09/article/details/77505300</guid><author>code09</author><pubDate>Wed, 23 Aug 2017 14:09:05 +0800</pubDate><description><![CDATA[c语言小代码——对齐



一、对齐

用于对齐：向上对齐和向下对齐：
#define ROUND_UP(x, align) (((int) (x) + (align - 1)) & ~(align - 1))
#define ROUND_DOWN(x, align) ((int)(x) & ~(align - 1))

用于检查是否已经对齐：
#define ALIGNED]]></description><category></category></item><item><title><![CDATA[Android JNI对象与Java对象的绑定]]></title><link>https://blog.youkuaiyun.com/code09/article/details/76795072</link><guid>https://blog.youkuaiyun.com/code09/article/details/76795072</guid><author>code09</author><pubDate>Mon, 07 Aug 2017 09:58:57 +0800</pubDate><description><![CDATA[在Android 开发过程中，经常会用到JNI，要么就是Java调用JNI，要么就是JNI回调Java。一种习惯的做法是把在Java和JNI 都生成相同名字的Class，并将它们互相绑定，这样双方互相调用也非常方便。]]></description><category></category></item><item><title><![CDATA[C++类函数深入理解]]></title><link>https://blog.youkuaiyun.com/code09/article/details/76737951</link><guid>https://blog.youkuaiyun.com/code09/article/details/76737951</guid><author>code09</author><pubDate>Sun, 06 Aug 2017 08:24:49 +0800</pubDate><description><![CDATA[最近在做Android 播放器的项目，native 需要用到C++，遇到一个有意思的问题，先mark下。
先看一段代码：
class A
{
public:
    int v;
    
public:
    A():v(0){}
    void print() const
    {
        printf("%s enter. this=%p\n", __func__, thi]]></description><category></category></item><item><title><![CDATA[LINUX C中如何定义可变参数的宏]]></title><link>https://blog.youkuaiyun.com/code09/article/details/53634274</link><guid>https://blog.youkuaiyun.com/code09/article/details/53634274</guid><author>code09</author><pubDate>Wed, 14 Dec 2016 09:34:33 +0800</pubDate><description><![CDATA[转载：http://darksun.blog.51cto.com/3874064/1379569


一般在调试打印Debug信息的时候, 需要可变参数的宏. 从C99开始可以使编译器标准支持可变参数宏(variadic macros), 另外GCC也支持可变参数宏, 但是两种在细节上可能存在区别.
1. __VA_ARGS__
__VA_ARGS__ 将 "..." 传递给宏 . 如]]></description><category></category></item><item><title><![CDATA[OpenGL ES 2.0坐标系设定与顶点转换]]></title><link>https://blog.youkuaiyun.com/code09/article/details/41378015</link><guid>https://blog.youkuaiyun.com/code09/article/details/41378015</guid><author>code09</author><pubDate>Sat, 22 Nov 2014 07:23:35 +0800</pubDate><description><![CDATA[原文：http://blog.youkuaiyun.com/yu0089/article/details/18600903]]></description><category></category></item><item><title><![CDATA[绘制三角形序列的三种方式 ：GL_TRIANGLES、GL_TRIANGLE_STRIP和GL_TRIANGLE_FAN]]></title><link>https://blog.youkuaiyun.com/code09/article/details/41377847</link><guid>https://blog.youkuaiyun.com/code09/article/details/41377847</guid><author>code09</author><pubDate>Sat, 22 Nov 2014 06:56:33 +0800</pubDate><description><![CDATA[原文: http://hi.baidu.com/wudu_ya/item/0371d3943d5797a5cc80e54b





绘制三角形序列的三种方式 ：GL_TRIANGLES、GL_TRIANGLE_STRIP和GL_TRIANGLE_FAN。



一般情况下有三种绘制一系列三角形的方式，分别是GL_TRIANGLES、GL_TRIANGLE_STRIP和GL_T]]></description><category></category></item><item><title><![CDATA[获得本地IP的三种方法]]></title><link>https://blog.youkuaiyun.com/code09/article/details/39209343</link><guid>https://blog.youkuaiyun.com/code09/article/details/39209343</guid><author>code09</author><pubDate>Thu, 11 Sep 2014 17:57:32 +0800</pubDate><description><![CDATA[方法1
int up_sock_localIP(char** ipList, int num)
{
int i = 0;
const char* ip = NULL;
struct hostent* h = NULL;
char hostname[128] = {0};

if(gethostname(hostname, sizeof(hostname)) != 0 || (h =]]></description><category></category></item><item><title><![CDATA[环形缓冲区(ring buffer)，环形队列(ring queue) 原理]]></title><link>https://blog.youkuaiyun.com/code09/article/details/20149849</link><guid>https://blog.youkuaiyun.com/code09/article/details/20149849</guid><author>code09</author><pubDate>Fri, 28 Feb 2014 17:43:40 +0800</pubDate><description><![CDATA[1. 序言
环形缓冲区(ring buffer)，环形队列(ring queue) 多用于2个线程之间传递数据，是标准的先入先出(FIFO)模型。
一般来说，对于多线程共享数据，需要使用mutex来同步，这样共享数据才不至于发生不可预测的修改/读取，然而，
mutex的使用也带来了额外的系统开销，ring buffer/queue 的引入，就是为了有效地解决这个问题，因其特殊的结构
及算法]]></description><category></category></item><item><title><![CDATA[[转] 一个fork的面试题]]></title><link>https://blog.youkuaiyun.com/code09/article/details/9095343</link><guid>https://blog.youkuaiyun.com/code09/article/details/9095343</guid><author>code09</author><pubDate>Fri, 14 Jun 2013 15:39:03 +0800</pubDate><description><![CDATA[原文： http://coolshell.cn/articles/7965.html




前两天有人问了个关于Unix的fork()系统调用的面试题，这个题正好是我大约十年前找工作时某公司问我的一个题，我觉得比较有趣，写篇文章与大家分享一下。这个题是这样的：

题目：请问下面的程序一共输出多少个“-”？







1

2

3

4

5]]></description><category></category></item><item><title><![CDATA[NPAPI & NPRuntime 簡介 Scriptable Plugin]]></title><link>https://blog.youkuaiyun.com/code09/article/details/8702213</link><guid>https://blog.youkuaiyun.com/code09/article/details/8702213</guid><author>code09</author><pubDate>Thu, 21 Mar 2013 17:12:02 +0800</pubDate><description><![CDATA[原文：http://www.eifr.com/article.php?id=1273





本篇文章在探討 NPAPI 與 NPRuntime 的設計，並非 Plugin 教學。
當時因為看到公司內部寫出來的 Plugin 問題不少，而且網路上說明太少，特地寫來給大家看的～
故本篇沒有詳細介紹每個 API 的使用與功能，請見諒囉！
This article was writt]]></description><category></category></item><item><title><![CDATA[解密module_init]]></title><link>https://blog.youkuaiyun.com/code09/article/details/8588852</link><guid>https://blog.youkuaiyun.com/code09/article/details/8588852</guid><author>code09</author><pubDate>Mon, 18 Feb 2013 18:28:03 +0800</pubDate><description><![CDATA[在Linux底下写过driver模块的对这个宏一定不会陌生。module_init宏在MODULE宏有没有定义的情况下展开的内容是不同的，如果这个宏没有定义，基本上表明阁下的模块是要编译进内核的(obj-y)。
1.在MODULE没有定义这种情况下，module_init定义如下：
#define module_init(x) __initcall(x);
因为
#define __ini]]></description><category></category></item><item><title><![CDATA[EPOLL学习]]></title><link>https://blog.youkuaiyun.com/code09/article/details/8585207</link><guid>https://blog.youkuaiyun.com/code09/article/details/8585207</guid><author>code09</author><pubDate>Sun, 17 Feb 2013 14:32:30 +0800</pubDate><description><![CDATA[原文：http://hi.baidu.com/ccqudqngrebcrzd/item/2cf0923f10b2e84f023edc4e


在linux的网络编程中，很长的时间都在使用select来做事件触发。在linux新的内核中，有了一种替换它的机制，就是epoll。
一、epoll的接口
epoll的接口非常简单，一共就三个函数： 
1 int epoll_create(int]]></description><category></category></item><item><title><![CDATA[六款常用的linux C/C++ IDE]]></title><link>https://blog.youkuaiyun.com/code09/article/details/8462455</link><guid>https://blog.youkuaiyun.com/code09/article/details/8462455</guid><author>code09</author><pubDate>Thu, 03 Jan 2013 21:58:11 +0800</pubDate><description><![CDATA[原文：http://www.lupaworld.com/article-210675-1.html




一、Anjuta
Anjuta是一个多语言的IDE，它最大的特色是灵活，同时打开多个文件，内嵌代码级的调试器(调用gdb)，应用程序向导（Application wizards）可以方便的帮助你创建GNOME程序而不需要你自己写一些与你兴趣无关的代码。
配置C/C++环境请看这]]></description><category></category></item><item><title><![CDATA[用wubi安装的ubuntu空间不足解决方案]]></title><link>https://blog.youkuaiyun.com/code09/article/details/8022024</link><guid>https://blog.youkuaiyun.com/code09/article/details/8022024</guid><author>code09</author><pubDate>Wed, 26 Sep 2012 18:28:42 +0800</pubDate><description><![CDATA[原文：http://zaazbb.blog.163.com/blog/static/16897855920110159021691/


许多朋友都开始尝试Ubuntu系统。但由于初次接触这个操作系统，所以不太可能用它完全代替硬盘中已经存在的Windows。所以担心安装它会破 坏原有的Windows，于是往往会尝试用Wubi的安装Ubuntu。这样，Ubuntu运行在一个封装的磁盘空间中，完]]></description><category></category></item><item><title><![CDATA[通过一段汇编，加深对寄存器ESP和EBP的理解]]></title><link>https://blog.youkuaiyun.com/code09/article/details/7990908</link><guid>https://blog.youkuaiyun.com/code09/article/details/7990908</guid><author>code09</author><pubDate>Tue, 18 Sep 2012 11:17:34 +0800</pubDate><description><![CDATA[原文： http://blog.youkuaiyun.com/zsJum/article/details/6117043




一直对寄存器ESP和EBP的概念总是有些混淆，查看定义ESP是栈顶指针，EBP是存取堆栈指针。还是不能很透彻理解。之后借于一段汇编代码，总算是对两者有个比较清晰的理解。
下面是按调用约定__stdcall 调用函数test(int p1,int p2)的汇编代码
;假]]></description><category></category></item><item><title><![CDATA[总结vmplayer bridge联网的问题]]></title><link>https://blog.youkuaiyun.com/code09/article/details/7722720</link><guid>https://blog.youkuaiyun.com/code09/article/details/7722720</guid><author>code09</author><pubDate>Fri, 06 Jul 2012 16:31:42 +0800</pubDate><description><![CDATA[VMPlayer没有内置配置network的工具，它包含在network.cab包里面，可能通过
D:> VMware-player-4.0.1-528992.exe /e .\output
找到network.cab，解压之后可以找到vmnetcfg.exe，直接双击会报dll找不到，将vmnetcfg.exe拷贝到vmplayer安装目录下。如：
c:\program files\vmw]]></description><category></category></item><item><title><![CDATA[uafxcwd.lib(dllmodul.obj) : error LNK2005: DllMain 已经在 中定义]]></title><link>https://blog.youkuaiyun.com/code09/article/details/7587354</link><guid>https://blog.youkuaiyun.com/code09/article/details/7587354</guid><author>code09</author><pubDate>Mon, 21 May 2012 15:00:03 +0800</pubDate><description><![CDATA[原文：http://hi.baidu.com/laosuis/blog/item/6a881d3ccacbfbe93d6d97bc.html


如果出现这种错误：“uafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in main.obj ”或者“mfcs42ud.lib(dllmodul.obj)]]></description><category></category></item><item><title><![CDATA[【转】 firefox插件开发和调试]]></title><link>https://blog.youkuaiyun.com/code09/article/details/7263445</link><guid>https://blog.youkuaiyun.com/code09/article/details/7263445</guid><author>code09</author><pubDate>Thu, 16 Feb 2012 10:19:39 +0800</pubDate><description><![CDATA[原文：http://huandu.me/2010/02/11/595/



Firefox插件（plugins）开发实用指南

Firefox插件可实现强大功能，但其中麻烦事情不少。写这个实用指南首先是为了方便自己记忆，免得以后再次栽倒一些坑里面，如果能帮助其他人，则是更好。这个指南不是为了手把手教读者开发插件，而是作为一个FAQ，解决各种诡异问题。
Firefox拥有众多的扩展（]]></description><category></category></item></channel></rss>