分类目录: 语言基础

PDF:100个gdb小技巧(v1.0)

100个gdb小技巧(v1.0).pdf

| 1 分2 分3 分4 分5 分 (4.88- 8票) Loading ... Loading ... | 同时归档在:C/C++ | 标签: , |

并发流程控制—CountDownLatch

假如有这样一个需求,当我们需要解析一个Excel里多个sheet的数据时,可以考虑使用多线程,每个线程解析一个sheet里的数据,等到所有的sheet都解析完之后,程序需要提示解析完成。

在这个需求当中要实现主线程等待所有线程完成sheet的解析操作,最简单的做法是使用join。代码如下:

阅读全文 »

| 1 分2 分3 分4 分5 分 (4.75- 12票) Loading ... Loading ... | 同时归档在:Java, 多线程编程 | 标签: , , |

关于回调函数和this指针探讨

在C里面,经常需要提供一个函数地址,注册到结构里,然后在程序执行到特定阶段时,回调该函数。创建线程,注册线程运行的主函数就是一个典型的例子。这里以简单的回调实例,说明C++中回调函数为成员函数时有关this指针的问题。由于C++对C的继承关系,C++没有自己的线程封装技术,一般而言我们创建线程时,还是用C的回调函数机制。类似的例子也挺多的。在Java等纯粹的面向对象语言,则不一样,不光有自己的独立的线程类型,对于回调,也是注册整个对象,而不是注册一个方法,如常用的观察者模式。这里,在网上查阅了大量关于this指针、类成员函数和静态成员函数的相关知识点,结合自己的理解作一些总结。

阅读全文 »

| 1 分2 分3 分4 分5 分 (4.89- 19票) Loading ... Loading ... | 同时归档在:C/C++ | 标签: , , |

Java泛型:类型檫除、模板和泛型传递

Java泛型(generics)是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter)。声明的类型参数在使用时用具体的类型来替换。泛型最主要的应用是在JDK 5中的新集合类框架中。对于泛型概念的引入,开发社区的观点是褒贬不一。从好的方面来说,泛型的引入可以解决之前的集合类框架在使用过程中通常会出现的运行时刻类型错误,因为编译器可以在编译时刻就发现很多明显的错误。而从不好的地方来说,为了保证与旧有版本的兼容性,Java泛型的实现上存在着一些不够优雅的地方。当然这也是任何有历史的编程语言所需要承担的历史包袱。后续的版本更新会为早期的设计缺陷所累。 

开发人员在使用泛型的时候,很容易根据自己的直觉而犯一些错误。比如一个方法如果接收List<Object>作为形式参数,那么如果尝试将一个List<String>的对象作为实际参数传进去,却发现无法通过编译。虽然从直觉上来说,Object是String的父类,这种类型转换应该是合理的。但是实际上这会产生隐含的类型转换问题,因此编译器直接就禁止这样的行为。本文试图对Java泛型做一个概括性的说明。

阅读全文 »

| 1 分2 分3 分4 分5 分 (4.55- 11票) Loading ... Loading ... | 同时归档在:Java | 标签: , , , |

关于虚函数表那点事儿

今天看到有文章介绍Visual Studio C++有一个编译选项:/d1 reportAllClassLayout,用来输出所有的类型信息,比较有趣。如下图,在工程,属性,编译的命令行中,增加一个“其他选项”,填写/d1 reportAllClassLayout即可。在编译类时,就会生成类的内存结构图。包括虚函数指针表。

阅读全文 »

| 1 分2 分3 分4 分5 分 (4.71- 21票) Loading ... Loading ... | 同时归档在:C/C++ | 标签: , |

关于Python的闭包和后期绑定

看到Python程序员的10个常见错误这篇文章中讲到了闭包和后期绑定的问题。

有很多不同的人都对闭包过进行了定义:

阅读全文 »

| 1 分2 分3 分4 分5 分 (4.38- 16票) Loading ... Loading ... | 同时归档在:实用脚本 | 标签: , , |

15道使用频率极高的基础算法题

via hlxs
15道常见的基础算法题:
1、合并排序,将两个已经排序的数组合并成一个数组,其中一个数组能容下两个数组的所有元素;
2、合并两个已经排序的单链表;
3、倒序打印一个单链表;

阅读全文 »

| 1 分2 分3 分4 分5 分 (4.58- 19票) Loading ... Loading ... | 同时归档在:C/C++, 算法数据结构 | 标签: , |

如何编程实现 2 + 2 = 5?

Write a program that makes 2 + 2 = 5,看到这个题目,感觉很新颖,第一个答案就是用Java实现的。用上了Java中的整型实例池的概念。以前只看到过实例池导致两个对象的指针相同的问题,即

阅读全文 »

| 1 分2 分3 分4 分5 分 (4.20- 15票) Loading ... Loading ... | 同时归档在:Java | 标签: |

Google Guava简介

看到Guava这个名字觉得有点怪怪的,于是搜索了一下,Google Java的合称。Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如:集合(collections)、缓存(caching)、原生类型支持(primitives support)、并发库 (concurrency libraries)、通用注解(common annotations)、字符串处理(string processing)、I/O 等等。 所有这些工具每天都在被Google的工程师应用在产品服务中。

项目信息
首页:https://code.google.com/p/guava-libraries/ 
并发编程网在对每一个主题的各个子类的介绍进行翻译并发表。这里转载目录。

阅读全文 »

| 1 分2 分3 分4 分5 分 (4.13- 8票) Loading ... Loading ... | 同时归档在:Java | 标签: , |

电子书:C++ Concurrency in Action

C++ Concurrency in Action

链接:下载

| 1 分2 分3 分4 分5 分 (4.43- 7票) Loading ... Loading ... | 同时归档在:C/C++, 多线程编程 | 标签: |
返回顶部