随笔分类 - 编程
摘要:本人初学Java,看到别人都说学Java先不要用Eclipse、NetBeans这些开发工具,所以索性就自己试试。过程犯的错误极多,参照着李刚老师那本疯狂Java一点一点的实验.由于自己使用过Makefile,所以就用Makefile做了实验,总算是可以不用Eclipse、NetBeans就能自己编译运行一些小的程序了,下面就是我自己总结的心得,如有错误,请大家指正,谢谢。本文分四小节:第一节:配置Java运行时环境第二节:代码的编译以及运行第三节:如何打jar包以及使用jar包第四节:利用Makefile自动编译运行Java程序第一节:配置Java运行时环境本节以Windows XP为例,来
阅读全文
摘要:面试官总爱问一些负载均衡的问题,不知道是他们真的遇到了还是自己意淫的。我只想说,在你否定别人的想法时,是否是真的认真考虑过别人的想法是不是比你的好。大概意思就是说多个用户请求服务,服务器是一个集群,在客户与服务器之间加了一层负载均衡,使得每个用户能够正常请求服务,而且负载均衡机构可以把用户的请求分到一个合适的服务器上。这样就能够使服务器能够达到最佳的工作状态。不过对于这种问题,大多数人给出的解决方案都是基于socket和Epool的,但是这种方案下,一台机器也就处理200-300Mbps的流量的负载。下面给出另一个解决方案。基于网络数据包捕获的解决方案。平台:Linux + 曙光零拷贝网卡曙光
阅读全文
摘要:我想,很多的程序员都知道如何利用环形队列来避免使用锁。那就是,生产者只更改写指针,消费者只更改读指针。当然这里的指针一般可能是整数下标。例如:read_pos为消费者更改的读指针,每读走一个元素则read_pos=(read_pos+1)%SIZE,write_pos为生产者更改的写指针,每写完一个元素,write_pos=(write_pos+1)%SIZE,在消费者看来,只要队列不空,就可以读取当前读指针处的元素,在生产者看来,只要队列不满,就可以在当前的写位置上写一个元素。队列为空的条件为:read_pos=write_pos(对吗?)队列为满的条件为:(write_pos+1)%SIZ
阅读全文
摘要:不要天真的想程序中用了free之后,你的程序就会把内存还给了操作系统。从事C编程的人应该要知道,我们所用的malloc和free是由glibc提供的。glibc是一个具有系统级感觉的用户级程序,负责管理内存堆区。所以到底把free的内存还给还是没还给操作系统,大家还是看malloc和free的源码比较好。现在就交大家测试一下malloc和free的方法。01 #include <stdlib.h>02 #include <stdio.h>03 04 char*ch[1000];05 06 int main(intargc,char*argv[])07 {08 09 in
阅读全文
摘要:算法设计,我们一般都从理论上去考虑一个算法,即怎么做才能使得时空复杂度最优。但是在实际情况下把一个算法完美的实现是一件不容易的事情。所以搞理论的人千万不要把实现算法看成很轻松的事情,因为你的算法可能根本在实际中没有一个有效的实现方法,而且即使能够很容易的实现,可是由于实现的人不了解计算机的结构而使得算法运行起来并不是令人满意。例如如下的程序:01 #include <stdio.h>02 #include <time.h>03 #define N 1000004 #define M 1000005 06 int sumrow(int (*a)[M], int n, in
阅读全文
摘要:学C语言时,就听老师说函数调用时是通过栈来记录信息,又听说什么“保留现场”,"恢复现场"一些既听不懂,也不知道怎么弄懂的东西。最近正在学习Linux下的汇编,现在就通过一个简单的例子来展示一下汇编级的函数调用,这样能够增加大家对C语言的理解。虽然并不是很完善,但是足够阐明函数调用的思想。在Linux下通过命令gcc -S functest.c,可以生成汇编程序functest.s//functest.c#include <stdio.h>void func(int a, int b){ int c; int d; c = a; d = b;}int main()
阅读全文