
1.1.1.9 Java、C#
文章平均质量分 85
ajian005
这个作者很懒,什么都没留下…
展开
-
现代服务器底层奠基(SEDA+Reactor/Proactor+epoll/kqueue )
System|多路复用IO|Kqueue事件通知 https://zhuanlan.zhihu.com/p/157431765。System|网络|分阶段事件驱动架构SEDA https://zhuanlan.zhihu.com/p/161902784。System|网络|Naive SEDA实现 https://zhuanlan.zhihu.com/p/162753075。System|网络|packet的一生 https://zhuanlan.zhihu.com/p/157909533。原创 2023-04-13 14:18:58 · 710 阅读 · 1 评论 -
Java语言的工具包-瑞士军刀系列
1 Java自带rt.jar中的javautil: concurrent并发包 function函数包 other其它2 Google的Guava包: http://ifeve.com/google-guava/ https://github.com/google/guava Guava工程包含了若干被Google的 Java项目广泛依赖 的核心库,例如: 集合 [collections] 、缓存 [caching] 、...原创 2021-09-09 14:01:37 · 329 阅读 · 0 评论 -
Java与C/C++访问方式
1 多机多进程方式: Java进程 通过网络(TCP/IP or http, socket等) 访问C/C++进程2 单机多进程方式: Shell方式, Java进程调用Shell访问底层3 单机单进程方式: JNI系列: (Java调用C/C++的.ddl/.so文件,或者C/C++调用Java文件) JNI的替代者—使用JNA访问Java外部函数接口 https://blog.youkuaiyun.com/lanxuezaipiao/article/details/22619835 ...原创 2020-10-19 18:53:17 · 284 阅读 · 0 评论 -
内存调试技巧
内存调试技巧2007 年 6 月 21 日本文将带您了解一些良好的和内存相关的编码实践,以将内存错误保持在控制范围内。内存错误是 C 和 C++ 编程的祸根:它们很普遍,认识其严重性已有二十多年,但始终没有彻底解决,它们可能严重影响应用程序,并且很少有开发团队对其制定明确的管理计划。但好消息是,它们并不怎么神秘。引言C 和 C++ 程序中的内存错误非常有害:它们很常见,并且可能导致转载 2012-10-30 13:40:26 · 2019 阅读 · 0 评论 -
查找Windows内存泄露的工具与技术介绍
如你所知,内存泄露是由于疏忽或错误造成程序未能释放已经不再使用的内存的情况,随后不能重新分配。随着时间推移,会导致系统内存池耗尽(分页或非分页),最终导致服务器中止。 当然,在Windows服务器中止之前,一般有其他内存泄露的症状。主要值得注意的是来自服务器服务(SRV组件)的系统事件日志的入口。尤其是注意: Event ID 2019: The server was unable t转载 2012-10-30 13:29:08 · 1609 阅读 · 0 评论 -
《代码阅读方法与实践》--读书笔记
代码阅读方法与实践 Code Reading: The Open Source Perspective http://www.spinellis.gr/codereading/第零章 综述提高代码阅读的技能与技巧,进而从现有的优秀代码、算法、架构、设计中汲取营养,提高自身的开发与设计能力。恐怕没有哪个伟大的小说家从未读过其他人的著作,没有哪个伟大的画家从未研究过他人的原创 2012-10-29 19:04:41 · 4883 阅读 · 0 评论 -
《Effective.Enterprise.Java中文版》知识点摘要
《Effective.Enterprise.Java中文版》本书最重要的部分是:理解企业级计算技术中的常规问题和使用企业级JAVA平台技术来处理这些问题。. 语言和API也许会发生变化,但是你将会理解:构建良好架构所要考虑的问题;有那些通信方式可供选择;如何选择状态存储的位置;各式各样的安全问题等等这些思想性的东西不会变。 资源管理:线程、数据库连接、套接字、文件,所有这些资源比堆转载 2012-10-28 22:31:01 · 956 阅读 · 0 评论 -
比较Java和C++
这是一个Java语言和C++语言之间的比较.目录1设计目标2语言特性2.1语法2.2语义2.3资源管理2.4库2.5运行时2.6模板 vs. 泛型2.7杂项3性能4所有权控制5参考文献6外部链接设计目标C++和Java语言之间的不同可以追溯到它们各自的传统,它们有着不同的设计目标.C++ 被设计成主要用在系统性应用编程转载 2012-10-26 10:48:51 · 1119 阅读 · 0 评论 -
C,C++,java,python对比
C虽说C语言在内存管理方面存在严重的缺陷,不过它还是在某些应用领域里称王称霸。对于那些要求最高的效率,良好的实时性,或者与操作系统内核紧密关联的程序来说,C仍然是很好的选择。C良好的可移植性也为它加了分。不过现在很多其他的语言可移植性越来越好,C在这方面的优势可能会逐渐丧失。现有的很多程序可以产生非常棒的C代码,比如语法分析器、GUI Builder等,这时候C语言也是有吸引力的,因为转载 2012-09-21 21:52:37 · 3305 阅读 · 0 评论 -
代码大全中英文要点
《代码大全》是一本不多见的值得多次阅读的好书,在《代码大全》一书中,每一章后面都有这一章的要点,略读这些要点中我们就可以了解到我们已经掌握了哪些知识,哪些知识还没有掌握,阅读,重读时就有重点了。下面列出这些要点,供没有购买这本书的同学(同仁)参考,或可用作决定“是否应该买这本书”的参考。第1部分打好基础 第1章 欢迎进入软件构建的世界 中文要点: 软件构建是软转载 2012-08-30 18:51:43 · 2082 阅读 · 0 评论 -
阅读源代码系列
阅读源代码系列 转 http://blog.youkuaiyun.com/goodfriends2007/article/details/6881883摘要:本文从阅读源代码的目的和意义开始,主要介绍了怎样阅读别人的源代码,列举了阅读开源代码的例子,以及阅读开源代码工具和阅读源代码的技巧。引言大家在软件开发过程中,在加入一个团队后或多或少都会接触到原来的源代码,要不是在原有基础上继续开发或者维转载 2012-08-30 13:26:21 · 2785 阅读 · 0 评论 -
TIOBE Programming Community Index
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html原创 2012-07-17 11:09:27 · 1351 阅读 · 0 评论 -
人人都看得懂的正则表达式教程
编写验证规则最流行和最简单的方法就是正则表达式了,但唯一的一个问题是正则表达式的语法太隐晦了,让人蛋疼无比。很多开发者为了在项目中应用复杂的验证,经常要使用一些小抄来记住正则式的复杂语法和各种常用命令。在这篇文章中,我将试图让大家明白什么是正则表达式,以及如何更轻松地学习正则表达式。也许你是初学者,那以防万一,我先来讲讲什么是正则表达式吧:正则表达式可以帮助我们更好的描述复杂的文本转载 2012-07-16 19:28:07 · 1448 阅读 · 0 评论 -
Perl/PHP/Python/Java/Ruby的拟人课堂讨论-比较各门编程语言的情况
!预览·语言的发展趋势一定是动静结合、刚柔并济·Perl凝练晦涩,Python优雅明晰,Ruby精巧灵动,PHP简明单纯·或许优雅正是来自对细节和规范的重视·(RoR)与Ruby结合之后,便如一只猱身而上灵猫,立刻衬托出Java和.NET大象般的身影 ?提问Perl、Python、Ruby和PHP各自有何特点?为什么动态语言多作为轻量级的解决方案?LAMP为什么受欢转载 2012-07-16 19:02:19 · 3469 阅读 · 0 评论 -
Java AIO初探(异步网络IO)
按照《Unix网络编程》的划分,IO模型可以分为:阻塞IO、非阻塞IO、IO复用、信号驱动IO和异步IO,按照POSIX标准来划分只分为两类:同步IO和异步IO。如何区分呢?首先一个IO操作其实分成了两个步骤:发起IO请求和实际的IO操作,同步IO和异步IO的区别就在于第二个步骤是否阻塞,如果实际的IO读写阻塞请求进程,那么就是同步IO,因此阻塞IO、非阻塞IO、IO服用、信号驱动IO都是同步IO转载 2011-12-02 16:46:55 · 899 阅读 · 0 评论 -
Java NIO 选择器(Selector)与通道(Channel) 原理
NIO底层实现poll, epoll(jdk1.5update 9 和jdk1.6 仅限于 linux 2.6以上 )Java NIO 选择器(Selector) 知识预备 (linux epoll) http://www.goldendoc.org/2011/07/java-nio-selector-pre-linux-epoll/Channel & FileDescript转载 2011-12-01 12:22:43 · 2132 阅读 · 1 评论 -
Java服务器开发基础知识select、poll、epoll iocp, kqueue
因为实际需要所致,我们不得不考虑在现有的开源/商用的应用服务器之外开发一个,有性能要求、有并发要求的服务端应用,从技术要求的角度来分析一下,用Java实现这件事情我们可能关注的知识层面。在整体上,可能需要我们从下面几个层面出发来考虑: 1.在硬件和操作系统层面:为什么需要关注这两个方面的知识,因为Java并没有自己的线程,使用的也是OS中的IO,所以我们不得不去了解系统在不同的硬件、O转载 2011-12-01 12:14:24 · 3719 阅读 · 0 评论 -
java性能调优的基本思路
java性能调优的基本知识 http://wenku.baidu.com/view/0b5e5b08581b6bd97f19eab3.htmlWeb应用影响性能的集中体现在:网络、CPU、内存、IO、数据库、缓存 应用系统的性能测试通常有如下过程: 1) 分析性能需求:了解系统性能需求,建立性能测试数据模型,分析性能需求,确定合理性能目标; 2) 制定原创 2011-11-03 19:22:03 · 1226 阅读 · 0 评论 -
使用 Eclipse 远程调试 Java 应用程序
程调试对应用程序开发十分有用。例如,为不能托管开发平台的低端机器开发程序,或在专用的机器上(比如服务不能中断的 Web 服务器)调试程序。其他情况包括:运行在内存小或 CUP 性能低的设备上的 Java 应用程序(比如移动设备),或者开发人员想要将应用程序和开发环境分开,等等。先决条件启动配置类型启动配置 保存一组用于启动程序的属性。启动配置类型是一种可以在 Eclipse 平台上转载 2011-09-29 17:45:25 · 2282 阅读 · 0 评论 -
jdk1.5新特性 ConcurrentHashMap
曾经研究过jkd1.5新特性,其中ConcurrentHashMap就是其中之一,其特点:效率比Hashtable高,并发性比hashmap好。结合了两者的特点。 集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的转载 2011-06-08 08:52:00 · 1003 阅读 · 0 评论 -
Java中的finalize详解
程序员都了解初始化的重要性,但常常会忘记同样重要的清除工作。毕竟,谁需要清除一个int 呢?但在使用程序库时,把一个对象用完后就“弃之不顾”的做法并非总是安全的。当然,Java有垃圾回收器来回收无用对象占据的内存资源。但也有特殊情况:假定你的对象(并非使用 new)获得了一块“特殊”的内存区域,由于垃圾回收器只知道释放那些经由 new分配的内存,所以它不知道该如何释放该对象的这块 “特殊”内存。为转载 2011-05-12 11:10:00 · 852 阅读 · 0 评论 -
第21章并发--java编程思想中文第四版-备忘笔记
博学,审问、慎思、明辨、笃行 读实用书时要提出的四个问题: (1)整体来说,这本书到底在谈些什么?big what? 并没有改变多少。 (2)作者细部说了什么,怎么说的? small what? how? (3)这本书说得有道理吗? 是全部有道理,还是部分有道理?why? 作者最终的目标,加上他建议的达成目标的方法--原创 2011-05-11 10:06:00 · 2685 阅读 · 0 评论 -
Java 6 JVM参数选项大全(中文版)
Java 6 JVM参数选项大全(中文版) 作者:Ken WuEmail:ken.wug@gmail.com转载本文档请注明原文链接 http://kenwublog.com/docs/java6-jvm-options-chinese-edition.htm! 本文是基于最新的SUN官方文档Java SE 6 Hotspot VMOptions 编写的译文。主要介绍J转载 2011-02-18 17:28:00 · 920 阅读 · 0 评论 -
为什么Java中的long与double不是线程安全的?
Long与double操作并不是原子的在java的部分执行环境中,对于long以及double的操作并不是原子的。 例如有一个long类型的longfield字段,某个线程正在执行: longfield = 123L ; 这样的指定操作,而同时有另一个线程正在执行: longfield = 456L;原创 2011-02-18 15:17:00 · 2716 阅读 · 0 评论 -
C/C++内存泄露及其检测工具
于一个c/c++程序员来说,内存泄漏是一个常见的也是令人头疼的问题。已经有许多技术被研究出来以应对这个问题,比如 Smart Pointer,Garbage Collection等。Smart Pointer技术比较成熟,STL中已经包含支持Smart Pointer的class,但是它的使用似乎并不广泛,而且它也不能解决所有的问题;Garbage Collection技术在Java中已经比较成熟转载 2012-10-30 13:28:31 · 1449 阅读 · 0 评论 -
计算机语言-维基
计算机语言(Computer language)指用于人与计算机之间通讯的语言,是人与计算机之间传递信息的媒介。其概念比通用的编程语言要更广泛。例如,HTML是置标语言,也是计算机语言,但并不是编程语言。隐藏▲查 ·论 ·编计算机语言分类编程 ·规约 ·查询 · 置标 · 转换 · 可视化程序设计 ·转载 2012-10-26 11:16:35 · 1191 阅读 · 0 评论 -
借助开源项目,学习软件开发 (learn-with-open-source)
http://www.teamhost.org/projects/learn-with-open-source/wiki著作权申明本作品选择采用:署名-非商业性使用-相同方式共享 的CC协议。您可以:复制、发行、展览、表演、放映、广播或通过信息网络传播本作品。以及创作演绎作品。惟须遵守下列条件:署名 — 您必须按照作者或者许可人指定的方式对作品进行署名。署名转载 2012-09-27 19:41:32 · 1175 阅读 · 0 评论 -
C++标准库与Java基础类对照
C++标准库与Java基础类对照表作者: Daly 日期:2007-08-11 一、集合类 对象的集合,指如链表,数组,队列这一类的数据结构。在C++标准库中把这些成为Container, 在Java中称为Collection。 C++STL常用Container: vector, list, map, set, queue, stack, priority_q转载 2012-09-21 13:13:29 · 982 阅读 · 0 评论 -
Java开发常识资料
一、Java基础JSE 核心基础(程序设计语言): 《Think in java》 (参考阅读:《Core Java》JAVA2核心技术第1卷.基础知识) 阅读 《Effective java第二版》集合容器主题:util包 各种数据结构和算法多线程主题:concurrent包 《Concurrent Program原创 2011-12-01 13:00:26 · 1879 阅读 · 0 评论 -
Java版服务器开发总结
今天打算对之前进行多年的Java版服务器端开发进行下技术总结,以供大家参考。个人对服务器开发基础框架平台有以下几点总结(会随时更新):1、 网络设计(BIO(java.net包)和NIO(java.nio.channels包)两种方式,参考MINA(C/S), JETTY(B/S)、jsockets和jniosocket等开源项目)(参考资料O’reilly系列网络编程)2、转载 2011-12-01 11:25:20 · 2110 阅读 · 0 评论 -
几个主流的Java连接池整理
池(Pool)技术在一定程度上可以明显优化服务器应用程序的性能,提高程序执行效率和降低系统资源开销。这里所说的池是一种广义上的池,比如数据库连接池、线程池、内存池、对象池等。其中,对象池可以看成保存对象的容器,在进程初始化时创建一定数量的对象。需要时直接从池中取出一个空闲对象,用完后并不直接释放掉对象,而是再放到对象池中以方便下一次对象请求可以直接复用。其他几种池的设计思想也是如此,池技术的优势是原创 2011-09-23 14:21:06 · 1580 阅读 · 0 评论 -
树的遍历(基础)
树的遍历之前的工作都没有接触到树,也就很少研究它。幸运地的是,在目前的工作中多次遇到树型结构的数据,那么访问树节点中的数据就是必然的了,而且还需要按照指定规则对节点中的数据进行额外处理。经过学习之后,对与树相关的基本算法有了一些认知,就计划写几篇小文。其实这样的文章早已是汗牛充栋,而我只是把它当作我的学习总结罢了,以加深记忆与理解,如能对其他朋友有所助益,则更感愉悦了 :-) (2009.转载 2012-11-01 16:02:07 · 778 阅读 · 0 评论 -
1.1 线性表
顺序线性表单链式线性表双链式顺序表循环链表及其应用 线性表(Linear List)是一种最常见也很重要的数据结构。类似于代数学中的向量的概念,线性表是由一组有序的数据组成。一般采用的描述方式为:(a0, a2, …, an-1)其中n表示线性表的有效长度,其中元素序号为0—n-1。这里所说的“有效长度”指的是线性表中实际使用的元素的个数,相对于线性表的最大允转载 2012-11-08 13:57:54 · 1087 阅读 · 0 评论 -
7. 网络流算法--Ford-Fulkerson方法及其多种实现
网络流在上一章中我们讨论的主题是图中顶点之间的最短路径,例如公路地图上两地点之间的最短路径,所以我们将公路地图抽象为有向带权图。本章我们将对基于有向带权图的模型做进一步扩展。很多系统中涉及流量问题,例如公路系统中车流量,网络中的数据信息流,供油管道的油流量等。我们可以将有向图进一步理解为“流网络”(flow network),并利用这样的抽象模型求解有关流量的问题。 图转载 2012-11-08 15:12:23 · 1253 阅读 · 0 评论 -
8 排序--选择排序,插入排序,冒泡排序,shell排序,快速排序(递归,迭代,改进版本),归并排序
排序排序是使数据有序化的操作。这里的数据包括关键字和其它信息项,关键字用来控制排序。排序使得数据有序化,实际上是使数据按关键字的某个定义明确的顺序规则排列。如果被排序的数据在内存中,那么这个排序方法就叫做内排序;如果数据来自磁盘则叫做外部排序。其中内部排序能很容易访问任何数据项,而外排序必须顺序地访问数据项。本章我们主要讨论内部排序。对于内部排序,数据在内存中的存储方式分为数组和链表两种。转载 2012-11-08 15:21:51 · 2176 阅读 · 0 评论 -
4 堆
堆的概念 堆上的算法堆的打印CPU优先级抢占模型 堆是一种数组对象,与之前几章所讨论的内容稍有不同的是,堆中的元素项具有特殊的顺序结构。在本书后面将介绍树数据结构,事实上堆属于一种特殊的树,即完全二叉树。完全二叉树中除了最后一层之外树的每一层都填满。之所以将堆数据结构提前介绍,一方面是因为堆也是一种基本的数据结构。另一方面,堆的一个重要功能是能实现优先队列。上一转载 2012-11-08 14:37:01 · 1056 阅读 · 0 评论 -
5. 树
树 广义树概念子节点表描述方法树的“左子节点/右兄弟节点”描述方法 本章将扩展前几章的内容,讨论一种较为复杂的数据结构,即树(tree)结构。前面所讨论的线性表、堆栈等数据结构中,跟每个节点相连的节点的个数都是有限的。本章讨论的树结构中,节点可以有任意数目的子节点。这是的数在实际应用中具有更大的作用,但其结构更复杂。树的定义 一棵转载 2012-11-08 14:39:32 · 726 阅读 · 0 评论 -
6. 图
本章开始介绍图数据结构和相关的算法。一个图有两个部分组成,跟前面介绍的树结构一样,一部分是节点,在图的术语中也称为顶点(vertex),我们将统一称之为顶点;另一部分是顶点的链接,称为边(edge)。顶点和边之间有着紧密的联系,通常图的任意一对顶点之间都允许有一条边。前几章介绍的链表和树都可以看作是结构首先的图,从这个意义上讲,图是最基本的数据结构。图结构本广泛应用与实际问题的描述和求解,以下转载 2012-11-08 14:50:34 · 1023 阅读 · 0 评论 -
6.2 拓扑排序
拓扑排序在许多应用中,有向无回路图可用于抽象具有发生先后顺序的事件,图的搜索算法可以用于解决具有先决条件的问题。假设我们要安排一系列任务,但是只有在某个任务的先决条件具备时才能着手完成这个任务。我们希望以某种先后顺序组织这些任务,以便每项任务都是在先决条件已完成的前提下逐个完成。因为任务之间存在先决条件限制,也就是顶点之间存在方向性,所以这一类问题可以用有向无环图(DAG)来描述。如图给出转载 2012-11-08 15:03:00 · 846 阅读 · 0 评论 -
6.3.3 最短路径算法--Dijkstra算法,Bellmanford算法,Floyd算法,Johnson算法
最短路径算法在交通地图上,两地点之间的路径通常标有长度,我们可以用加权有向来描述地图上的交通网。加权有向图中每条路径都有一个路径权值,大小为该路径上所有边的权值之和。本节将重点讨论顶点之间最短路径问题。在实际问题中,路径权值还可以表示其它类型的开销,例如两地之间行程所需要的时间;两任务切换所需代价等。本节讨论的最短路径具有方向性,问题用图的术语描述为:给定一个起始顶点s和一个结束顶点t,在转载 2012-11-08 15:11:10 · 1511 阅读 · 0 评论