自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 资源 (5)
  • 收藏
  • 关注

原创 Unix Domain Socket 内核数据结构整理

整理一波Unix Domain Socket在Linux内核(4.9)的数据结构, 接下来将简称为UDS。内核里面UDS的主要代码集中在af_unix.c文件内。首先,创建socket的时候要用到unix_family_ops这个数据结构:static const struct net_proto_family unix_family_ops = { .family = PF_UNIX, .create = unix_create, .owner = THIS_MODULE,};socket(

2021-01-11 20:09:42 595 1

转载 Python中的单例模式实现

使用Python来实现单例模式是一件很有意思的事情,在这个过程中我们会重新审视Python在创建类(Build Class)和构建实例时都调用了那些magic method。 同时我也想说的是Python的单例模块实现多种多样,但有些实现是存在问题的,在某些情况下是不可用或者影响系统的某些功能的。

2016-01-26 23:37:50 2069

转载 Python源码解析——PyType_GenericAlloc

为什么要写PyType_GenericAlloc函数,原因是本人想写一篇关于创建Class的源码解析的博文,发现内容比较多,因此就打算分开解析里面比较重要的内容。

2016-01-03 22:49:17 1915

原创 Mangos Zero 编译安装

折腾了两天,终于将Mangos Zero在自己的Windows电脑上搭建起来了,下面总结一下安装Mangos Zero过程。网上也有很多安装Mangos Zero的教程,都比较老了,有些基本不能用了。

2015-12-05 23:23:03 9067 1

转载 远程调试Python进程的小工具

使用pdb和有名管道实现远程Python调试

2015-12-01 13:19:29 1628

转载 Python Coroutine 初探

Python Coroutine 初探

2015-11-22 16:06:23 4966

原创 LeetCode所有题目的代码

把所有132题刷完了,放到github上了,但只有130题,貌似漏掉两题,找找看,再加上https://github.com/Whosemario/LeetCodeSrc开始找工作了,加油吧。。。

2013-09-01 13:11:20 4908

原创 ZJU PAT的一些代码

最近为了找实习,开始刷ZJU PAT上的题目,还有8、9道题就快刷完了,现在把部分代码放到github上,由于时间原因,有些代码遗漏掉了,后续可能会补上。。。。https://github.com/Whosemario/PatSourceCodes

2013-05-06 19:55:41 1264

原创 ZJU PAT 1010

好久没写oj的题解了,今天做了pat 1010的题目,提交代码后才只有19分,最后在网上看到才发现radix的大小是long long级别的啊,那么我们就只能使用二分来查找结果了,那么剩下的就是理清思路了。如果两个数字都是1,结果肯定是2如果两个数字相同,但不是1,结果肯定是题目输入的那个radix如果两个数字不相同,我们则有确定radix的范围呢?我们假设A的radix已经知道,那么

2013-03-28 23:43:43 4711 3

原创 Vim Tutor 阅读手记

命令行下输入:vimtutor 可以查看一个vim教程,感觉还不错,这里总结一下1 删除命令在Normal模式下删除光标所在位置的字符,请按:x在Normal模式下,输入dw可以删除光标所在位置的单词在Normal模式下,输入d$可以删除光标所在位置到行尾删除d的命令如下: [number] d object 或者 d [number] object其中:

2013-02-19 15:52:32 769 1

原创 利用Xmarks进行Chrome和Safari书签的同步

Xmarks是一个浏览器的插件,它可以将你的chrome、safari、firefox和ie的书签进行同步。下面说一下Chrome和Safari之间的同步方法:先在Chrome上安装Xmarks插件,然后注册Xmarks的帐户利用Xmarks插件将Chrome上的书签同步到Xmarks的服务器上在Safari中安装Xmarks插件进行同步,同步的过程中Xmarks会询问你是将服务器

2013-02-07 15:46:10 4937

原创 在Mac OS X 用C++编写OpenGL程序

Mac OS X中自带的OpenGL库和GLUT库,我们在编译自己的C++代码的时候,只需要将这两个框架加入进去就好。命令的形式编译如下:g++ -framework OpenGL -framework GLUT -o TestPrj main.cpp那么上面的命令怎样在编译器中加入呢?Eclipse加入OpenGL Framework选中某个要编译的工程打开Prope

2013-02-06 17:42:08 7960 1

原创 最大独立集问题

最大独立集问题Given N sets of integers, remove some sets so that the remaining all sets are disjoint with one another. Find the optimal solution so that the number of sets remaining at the end is maxim

2013-01-17 15:50:23 45406 3

翻译 【OpenGL Tutorial】Lesson2 移动与旋转

移动和旋转我们上一个程序有些简单,我们不是要学3D编程吗?上一个程序看起来完全是2D啊,现在就让我们做一些有意思的事情——让图形旋转起来。为了做到这一点,我们要理解OpenGL里面的移动和旋转。我们想象有一只鸟在场景里面飞行。它从原点开始,沿着z轴的负方向飞行,它可以移动、旋转、长大和缩小。当我们用glVertex将点传输给OpenGL的时候,OpenGL就用它来将鸟进行关联起来。所以,如

2013-01-08 17:07:23 1022

翻译 【OpenGL Tutorial】Lesson1 基本图形

试一试让我们先来看看我们的第一个OpenGL程序。下载“basic shapes”测试程序,编译并运行它(怎样用Visual Studio编译看第一节课程)。程序的运行样例如下图,点击ESC可以退出程序。程序是怎样运行起来的程序是怎样运行起来的呢?最基本的思想就是我们告知OpenGL每个图形顶点的3D坐标。OpenGL使用标准的x,y坐标系,x水平指向右方,y竖直指向上

2013-01-03 22:58:25 1230

翻译 【OpenGL Tutorial】Part0:搭建环境

最近想学学OpenGL处理3D方面的技术,在网上搜了一下,发现有个名叫OpenGL Video Tutorial的网站很有意思,网站的作者说道他自己是一个大学生,也刚刚开始学习OpenGL 3D,希望通过这个网站教一些OpenGL的初学者写一下3D方面的技术。我觉得这个网站还不错,打算最近就跟着这个网站的教程学习一下,顺便翻译一下里面的内容。Lesson 0a:在Windows上搭建OpenG

2013-01-01 20:52:22 1278 8

原创 编程之美4.4 扩展问题——判断点位于多边形内部

首先说明的是此多边形是任意多边形,包括凹多边形:方法一:射线法以此点为原点的向右水平射线如果相交于多边形的点的个数为奇数个,则此点在多边形内部,但需要注意几个trick:有可能射线与某条边的端点相交,如果相交的端点的纵坐标是较大的那个,则记录,否则忽略有可能射线与某条边完全覆盖,忽略即可用Java写了一个代码,没有测试,但基本思路是这样的:public class

2013-01-01 09:52:03 1360

原创 树形DP——POJ1947 and POJ2486

本文针对POJ上的2057、1947、2486、3140四道题目,谈一下个人对树形DP的理解,上面4题无法覆盖树形DP的所有形式,但也有一定的针对性,值得去做一做,思考一下:树形DP中常常用到“背包思想”,1947和2486就是利用了“背包思想”,状态想好了,最后就是在填“背包”,某个节点的“背包”是用他们的子树的状态进行填充的。POJ1947:状态dp[i][p]表示以节点i为根

2012-12-23 23:07:32 1678

原创 POJ2057

题目的关键是达到某个节点的时候,以怎样的顺序去遍历它的子树呢?我们假设某个节点有两个子树A和B,我们定义Pa是Snail的Home位于A子树中的叶节点上的概率,Pb是Snail的Home位于B子树中的叶节点上的概率;Sa是Home位于A子树上所要走的路程,Fa是Home不在A子树上所要走的路程,Sb和Fb同理。假设先走A树再走B树,所走的步数为:Sa*Pa+(Fa+Sb)*Pb;如果是先走B树

2012-12-08 16:29:48 1306

原创 Nim理论初探——编程之美1.12

Nim Game是非常著名的游戏,它的变体也很多,在《编程之美》上也用了三章讲解它。Wikipedia 上说的很详细,本文则是在对wiki上的内容阅读后的个人理解。游戏概述:有M堆石子,每堆石子的个数不一定相同,Bob和Alice交替取石子,只能在一堆石子上取,取的数目任意,但不能为0,也不能大于此堆石子的数目。获胜的判定有两种:一种是谁先把石子去完谁获胜,这种叫Normal Play;另

2012-11-27 19:45:34 1325

原创 细节很关键

此篇博文只是一些吐槽,主要还是要提醒自己细节很重要。平时写C代码,永远都不去管什么Warning,只要没有Error就OK。这次在实验室做一个小东西,要用Java的Runtime执行一个Makefile文件,Makefile文件编译一些C源码,编译的过程中会报很多Warning出来,本来本地直接运行Makefile一切正常,但用Runtime的exec运行时就会卡死,个人认为是大量的Warni

2012-11-24 14:53:50 538

原创 GCJ Round2 B题 Deterministic方法实现

虽然用随机化方法可以很容易过此题,代码实现也很方便,但还是写了一个Deterministic Solution的方法,具体的实现方案看GCJ官方的analysispublic class BProblem { private class Circle implements Comparable{ public long R; public int ind; @Override

2012-05-28 20:50:24 1042

原创 梯度下降算法(Gradient descent)

梯度下降算法是一种求局部最优解的方法,在wikipedia上对它做了详细的说明,这里我只是把自己感兴趣的一些地方总结一下:对于F(x),在a点的梯度是F(x)增长最快的方向,那么它的相反方向则是该点下降最快的方向,我们有如下结论:其中,v是一个大于0的数,于是我们有F(b)>=F(a),那么当我们不断地迭代下去,最终结果将收敛于一个局部最小值。我们举一个简单的例子:利用梯度

2012-05-09 16:37:32 13334 1

原创 Android游戏开发菜鸟之路(五)

最近一直在根据《Android Games Beginning》一书写一个游戏框架,2D游戏基本的功能此框架基本可以实现,因此突发奇想,写一个简单的连连看游戏试试这个框架的功力。连连看游戏的主要两个重点是游戏布局的生成和判断两个模块是否可以消除。先说游戏布局的生成:这里我实现的方法比较朴素,一开始先对每个模块同时生成两个,然后随进打乱这些模块,此生成算法实现简单,但有他明显的不足之处,那就是可

2011-12-08 23:24:13 719

原创 工作手记(二)

需求总是在增加,但感觉这次的需求还是为了提高用户体验而增加的,也不算什么坏需求吧,主要是想将license的内容写进加密狗里面,所以我需要将序列化的类以byte数组的形式传给JNI。首先说说Java方面的实现,用到了ByteArrayOutputStream和ByteArrayInputStream两个类,一开始的想法是利用ByteArrayOutputStream产生一个String,放到加

2011-11-21 23:01:40 1069

原创 工作手记(一)

最近Android游戏的学习进度变得缓慢,主要上周有考试,然后就是实验室也在做一些东西。实验室给我一个新的小项目,就是制作一个以U盘为依托的加密狗,并且与现在的产品集成。让我用一周的时间完成,一开始感觉挺麻烦的,试过以后发现还是比较简单,周五加今天就基本弄好了,主要是加密狗那块就用了一点点功能,然后就是实现Java代码调用C代码,这个其实我并不担心。毕竟在写Android游戏的时候也用过N

2011-11-14 18:39:49 571

原创 Android游戏开发菜鸟之路(四)

最近一直在搭一个框架吧,基本是参照《Beginning Android Games》一书的方法,以后可能还会在此基础上更改。此框架主要实现游戏中的一些基本功能:FileIOAudioManagerInputManagerGraphicsFileIO:FileIO模块主要实现三个内容:从Ram中读取内容,从SD卡中读取内容,将内容写入SD中。从Ram中读取

2011-11-04 12:13:31 986

原创 Android游戏开发菜鸟之路(三)

今晚测试了一个简单的JNI实例,虽说简单,并且有大牛的blog(http://blog.csdn.net/javatiger427/article/details/6115693)参照,但最后竟然也耗费了一晚上的时间。。。首先建立一个Android的工程,JNITest,Acitivity的代码如下:public class JNITestActivity extends Ac

2011-10-27 22:09:41 623

原创 Android游戏开发菜鸟之路(二)

《Pro Android Games》的第二个案例,总体来说还是比较好理解的,其游戏的逻辑与SpaceBlaster基本相似,有趣的是在构建多边形的算法上——坐标的旋转、平移、判断点是否在多边形内部。这次也就重点说说这些算法(其实感觉这些算法也很好理解的,汗,其实没什么可以说的。。。),在这之前首先将相关的三个类的UML图给出:想想,这两个算法真的没什么好说的,坐标的旋转是高中知识

2011-10-23 23:49:22 518

原创 Android游戏开发菜鸟之路(一)

最近没有更新博客,原因之一就是在读《Pro Android Games》,其中一些样例游戏实在太有意思,忍不住又山寨一番,在Chapter3中介绍了第一个叫做Space Blaster的游戏,游戏规则蛮简单,就是你控制飞船躲过或者打击流星石。下面是一个游戏的截图:工程

2011-10-16 19:57:29 142

原创 SRM520 DIVI-500pts

题目链接如下:http://community.topcoder.com/stat?c=problem_statement&pm=11496&rd=14545这个题的状态很好写出,假设dp[i][j]表示:到第i个人其得到j分时的情况个数,那么可以写出状态:dp[i]

2011-10-07 10:38:43 684

原创 写在十一假期结束之前

还有两天十一假期结束,这五天时间几乎是宅在实验室里,隔一天上午都会去健身房健身,难得健身房就我一个人,各种器械都可以试试,很是悠哉!扯谈结束。。。说说这几天都做了什么。其实就两样,一个学习了Objective-C,另一个学习了OpenGL ES,都是略懂皮毛,用于忽悠人可以,

2011-10-05 22:20:32 590

原创 《编程珠玑》第一章笔记

文章从一个实际的问题开始:一个电话系统,7位数的电话号码,用1MB的内存空间将这些电话号码排序。分析:如果将这些电话号码看成int类型的整数,将其读入内存中进行排序,int类型4个字节,最多有10000000个电话号码,则需要40MB的内存空间,远远超出题目的要求,但是这10

2011-09-26 21:24:09 957

原创 博客还是应该继续写下去的

最近突然有个蛋疼的想法,就是重新看一遍《编程珠玑》,然后做笔记,写代码,再次消化一遍,而每一次心得都将记录在这个博客里。研究生开始不到一个月吧,感觉自己再实验室里真的很小白,而唯一提高自己的方式还是多看书。有时候发现自己是个不安分的人,看到什么东东都想学,本科的时候是搞软件的

2011-09-25 21:18:33 404

原创 菜鸟 在 Ubuntu10.04 编译 Linux内核

<br />今天突发奇想——在自己的Ubuntu上编译一下下Linux内核吧,看自己能不能成功,一下便是本人编译内核的全过程,完全是“照葫芦画瓢”,尽供和我一样的菜鸟参考借鉴。<br /> <br />1. 首先在http://www.kernel.org/下载最新版本的Linux内核,我下的是2.6.39版本,然后解压到自己喜欢的文件夹下,我是解压到了/root下,最后生成了/root/linux-2.6.39,一下的操作就是在此目录下执行的。<br /> <br />2. 安装一些必要的工具的包:<br

2011-05-27 15:07:00 1042 1

原创 Ubuntu10.04调节分辨率

<br />在/etc/X11/xorg.conf文件中可以调节分辨率,但是感觉太麻烦,其实点击“系统”-“搜选项”-“监视器”就可以调节分辨率了

2011-05-24 18:57:00 908

原创 ubuntu在VMware的网络配置

<br />今天从实验室“逃”出来,回到母校寝室的感觉就是爽,不过在休“长假”的时间还是要搞Linux的,所以就打开VMware,但你妹的网络竟然上不去,适配器设置也为NAT,为神马呢?于是乎网上找了一个关于菜鸟VMware上网的配置介绍从来过。。。<br /> <br /><br />NAT的DHCP配置:<br />1 将虚拟机的上网方式选为NAT。<br />2 把你的虚拟网卡VMnet8设置为自动获得IP、自动获得DNS服务器,启用。具体方法:网络连接-本地连接(VMnet8)-属性-ipv4协议-

2011-05-24 18:34:00 1501

原创 SRM 504.5

这次悲剧的爆了,分数大降,后悔没做900pts的题目。。。。250pts#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using names

2011-05-20 20:19:00 554

原创 poj 3017

<br />#include<iostream>using namespace std;#define MAXN 100003#define INF ((1LL)<<60)long long dp[MAXN];int f[MAXN];int b[MAXN];long long sum[MAXN];struct SegTree{ int left[MAXN*4],right[MAXN*4]; long long _min[MAXN*4];

2011-05-17 10:49:00 1334

原创 2011TCO Qual Round A

<br />第一场资格赛,大牛都没参加。。。<br />250pts<br />#include <vector>#include <list>#include <map>#include <set>#include <deque>#include <stack>#include <bitset>#include <string>#include <functional>#include <numeric>#include <utility>#include <s

2011-05-15 12:26:00 464

android上连连看游戏实现

这里只是为了测试我写的一个2D游戏框架,所以连连看的游戏不是重点,所以如果您下载了我的代码,感觉坑爹了,不要骂我哈,但个人还是感觉这个2D游戏框架还是蛮好的。

2011-12-08

一个简单的游戏框架

参照《Beginning Android Games》一书实现的简单的游戏框架

2011-11-04

NDK OpenGLES 实现两个Cube的旋转

通过C语言实现Cube的渲染,利用android的NDK将C实现的部分编译成.so文件与Java代码一起运行,代码很简单,只为测试NDKr6b

2011-10-28

《Pro Android Games》第二个例子测试

对《Pro Android Games》一书中的第二个例子进行了测试

2011-10-23

Android上的山寨SpaceBlasters

山寨了《Pro Android Games》一书中的SpaceBlaster实例

2011-10-16

空空如也

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

TA关注的人

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