语言基础
文章平均质量分 76
小雄哥
勿忘心安
展开
-
Java的元组类型整理
// 1元组 Unit u = new Unit("xo"); // 2元组 Pair p = Pair.with("xo", 1217); // 3元组 Triplet triplet = Triplet.with("xo", 1217, 1.0); //... KeyValue kv = KeyValue.with("xo", "1217")原创 2017-09-12 14:47:27 · 6572 阅读 · 0 评论 -
云时代的分布式数据库:阿里分布式数据库服务DRDS
要:伴随着系统性能、成本及扩展性的新时代需要,以HBase、MongoDB为代表的NoSQL数据库和以阿里DRDS、VoltDB、ScaleBase为代表的分布式NewSQL数据库如雨后春笋般不断涌现出来。本文详细介绍了阿里分布式数据库服务DRDS。随着互联网时代的到来,计算机要管理的数据量呈指数级别地飞速上涨,而我们却完全无法对用户数做出准确预估。我们的系统所需要支持的用户数,很可能在短转载 2015-08-26 09:25:20 · 957 阅读 · 0 评论 -
什么是TPS,什么是QPS,区别是什么?
一、TPS:Transactions Per Second(每秒传输的事物处理个数),即服务器每秒处理的事务数。TPS包括一条消息入和一条消息出,加上一次用户数据库访问。(业务TPS = CAPS × 每个呼叫平均TPS)TPS是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间原创 2015-07-30 17:23:24 · 276621 阅读 · 7 评论 -
从外部学习:阿里分布式数据库云服务 DRDS、中间件与双11故事
内容简介:DRDS是新一代的阿里分布式数据库云服务,前身是淘宝分布式数据库(TDDL),它承载了淘宝六年的高速增长,经历过多次双十一的严酷考验,在阿里内有几千个应用正在使用,是阿里最为成熟的分布式数据库服务体系。现在,TDDL已经换了个新名字DRDS来到了云上,在云端的DRDS,面对新的用户,新的需求,我们碰到了哪些问题?又是如何利用我们的产品来解决这些问题的?欢迎来听听我的讲述。转载 2015-08-26 09:16:33 · 2873 阅读 · 0 评论 -
java的concurrent用法详解
我们都知道,在JDK1.5之前,Java中要进行业务并发时,通常需要有程序员独立完成代码实现,当然也有一些开源的框架提供了这些功能,但是这些依然没有JDK自带的功能使用起来方便。而当针对高质量Java多线程并发程序设计时,为防止死蹦等现象的出现,比如使用java之前的wait()、notify()和synchronized等,每每需要考虑性能、死锁、公平性、资源管理以及如何避免线程安全性方面带来的原创 2015-08-26 11:08:57 · 980 阅读 · 0 评论 -
接触Unix C 这几天。
接触Unix C 这几天挺累的, 起初就被shell编程弄迷糊了。我个人认为shell就是对核直接工作的,比汇编高级点,比高级语言低级点的语言。原创 2009-04-27 22:34:00 · 787 阅读 · 0 评论 -
C/C++堆、栈及静态数据区详解 (转载)
放心急噪的心态,安静的看看吧。五大内存分区在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有转载 2009-08-23 13:31:00 · 1370 阅读 · 2 评论 -
Linux动态链接库.so文件的创建与使用
大家都知道,在WINDOWS系统中有很多的动态链接库(以.DLL为后缀的文件,DLL即Dynamic Link Library)。这种动态链接库,和静态函数库不同,它里面的函数并不是执行程序本身的一部分,而是根据执行程序需要按需装入,同时其执行代码可在多个 执行程序间共享,节省了空间,提高了效率,具备很高的灵活性,得到越来越多程序员和用户的青睐。那么,在LINUX系统中有无这样的函数库呢?转载 2010-03-17 16:29:00 · 1032 阅读 · 0 评论 -
我对飞鸽协议的理解
最近在写飞鸽,只能实现简单的UDP传输用户资料,TCP传输文件。还是对飞鸽的协议不是很懂,特贴此下:关于IP信使:IP信使使用TCP/UDP协议提供收发消息及文件(目录)。特性:IP信使能够安装在任何一个安装了TCP/IP协议栈的操作系统上,使用在线用户的动态识别机制,可以和在线所有用户进行信息交换。运行机制介绍:使用TCP/UDP端口(默认端口为2425),消息的收发使用UDP协议,原创 2009-08-23 13:42:00 · 1302 阅读 · 0 评论 -
python实现更新页面内容的小例子,已经修改成“更新订饭菜单“
客为尊订饭:http://www.kwzcy.com/Product_List.asp?action=GetAddress&Address1=%C9%CF%B5%D8%C8%ED%BC%FE%D4%B0&Address2=%C9%CF%B5%D8%C8%ED%BC%FE%D4%B0%B9%FA%D3%C2%B4%F3%CF%C3&Address3=&A_CompanyName=原创 2010-04-02 20:25:00 · 1439 阅读 · 0 评论 -
static 类成员 之我见
我认为学习C++/VC最好的方法,先求知模仿,然后为什么,再总结自己的见解来举一反三。 static 类成员用法:1。static不是通过构造函数初始化,而是必须在类定义体外部定义,无须重复指定static关键字。(有的书上不能再标识static了)2。因为static不是任意类对象的组成部分,所以没有this指针。3。static成员函数不能被声明为虚函数,原因在《C/C++转载 2009-08-23 13:32:00 · 556 阅读 · 0 评论 -
关于文件传送类程序的思路和流程(转贴)
其实方法很多,就是找不道最完美的。。经常在BBS上看到关于文件传送的讨论,这里把我的一个用UDP协议写得文件传送程序的有关思路发表出来,以期抛砖引玉。(这里虽然是用UDP协议写的,不过思路同样适用于其它通信方式如串口)。文件传送的基本思路是把文件分成大小适当的数据块,每一次传送一个数据块。每一块数据有一个校验码,接收方根据校验码校验收到的数据块是否正确无误。同时为了能够保证数据块的正确顺序转载 2009-08-23 13:36:00 · 1105 阅读 · 0 评论 -
深入浅出:最常用的new和delete原理![转]
当我们在程序中写下 new 和 delete 时,我们实际上调用的是 C++ 语言内置的 new operator 和 delete operator。所谓语言内置就是说我们不能更改其含义,它的功能总是一致的。以 new operator 为例,它总是先分配足够的内存,而后再调用相应的类型的构造函数初始化该内存。而 delete operator 总是先调用该类型的析构函数,而后释放内存(图1)。转载 2009-08-23 13:37:00 · 1173 阅读 · 0 评论 -
iPhone 真机调试安装流程
一、对于真机调试,首先要在苹果网站上注册APP ID,以及购买iPhoneDevelop Program(iDP) 开发者授权,99美元。然后要创建证书请求CSR,创建步骤如下: 1、Mac OS中,打开应用程序,找到 钥匙串访问(Keychain Access)工具打开主菜单 - 证书助理(Certificate Assistant)-从证书代理请求证书(Request原创 2015-07-23 14:22:44 · 667 阅读 · 0 评论 -
基于共享内存多级hash设计
Feature list:1. 支持Set/Get/Replace/Update, 优化编译下默认16级冲突下单进程下Set/Get可达170w次/s。(理论上只要不达到内容的带宽限制,而且是多核的机器下性能是随线进程数陪增)2. 支持多程下操作(可预见低的出错概率)3. 支持CAS弱一致性检测(需要编译时开启)4. 支持二进制文件导转载 2015-09-06 10:37:37 · 4487 阅读 · 0 评论 -
Maven pom.xml文件教程详解
[xml]view plaincopyprint?projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apach原创 2015-09-11 18:27:00 · 851 阅读 · 0 评论 -
线程池整理
basicJava里的是线程(不是进程),Java线程直接映射到操作系统的线程,1:1的关系。会受到操作系统的线程调度、线程数量限制的影响为什么用线程池:线程的创建和销毁开销非常高(时间、内存)线程池越大越好?线程消耗系统资源,尤其是内存,如果有大量闲置线程会占用很多内存;而且还会竞争CPU时间当系统负载变高,程序仍然认为自己能处理,创建很多线程,结原创 2017-09-11 10:56:30 · 613 阅读 · 0 评论 -
tcpcopy 上手介绍和测试说明
压测自动化原创 2017-06-16 15:55:14 · 3193 阅读 · 2 评论 -
Cookie与Session的区别与联系及生命周期
原文:http://blog.csdn.net/tanyunlong_nice/article/details/47188659#comments前几天面试问了一个问题,当时记不太清了,上网查了下发现这个问题还真的很有讲究而且很重要,自己总结下做下记录。一、Session与Cookie介绍这些都是基础知识,不过有必要做深入了解。先简单介绍一下。二者的定义原创 2017-05-08 11:55:11 · 1242 阅读 · 0 评论 -
JAVA语言工具类封装-基于poi的excel导出功能
excel导出基本上是必备的功能,如果条目超过65535 则考虑csv,小于不考虑。一句话使用:OrderInfoExcelBuilder.getInstance().createExcel(OrderType.MAIN_ORDER, orderInfoDetailList, response);结构比较简单,抽象类+子类实现。先看下抽象类:package com.qunar.原创 2016-08-31 19:00:05 · 3393 阅读 · 0 评论 -
比log4j更好的logback、简介和优点详解
无论从设计上还是实现上,Logback相对log4j而言有了相对多的改进。不过尽管难以一一细数,这里还是列举部分理由为什么选择logback而不是log4j。牢记logback与log4j在概念上面是很相似的,它们都是有同一群开发者建立。所以如果你已经对log4j很熟悉,你也可以很快上手logback。如果你喜欢使用log4j,你也许会迷上使用logback。更快的执行速度基于我们原创 2015-09-18 19:38:28 · 13148 阅读 · 0 评论 -
跟我学Guava:基础1.4-Ordering比较器和链式排序
Ordering是Guava类库提供的一个犀利强大的比较器工具,Guava的Ordering和JDK Comparator相比功能更强。它非常容易扩展,可以轻松构造复杂的comparator,然后用在容器的比较、排序等操作中。 本质上来说,Ordering 实例无非就是一个特殊的Comparator 实例。Ordering只是需要依赖于一个比较器(例如,Collections.max)的方法原创 2015-10-22 21:00:17 · 1331 阅读 · 0 评论 -
Redis和Memcache的区别
1、Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等。2、Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。3、虚拟内存--Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘4、过期策略--memcache在set原创 2015-05-26 16:52:54 · 678 阅读 · 0 评论 -
跳板机 免密码二次登录 beta测试+dev开发+idc线上+gamma灰度机-ssh篇
一、免密码登录步骤将eval `/usr/local/bin/ssh-attach` 这段内容复制到你的跳板机的宿主目录下的 .bashrc文件中到底部。source .bashrc ,输入正确的口令(也就是passphrase,输入口令必须正确)重新登陆发现,可ssh 任意机器,再无输口令的烦恼效果图:追加:免密码优化1. 利用CRT一键登录测试和开发机原创 2015-09-17 11:48:08 · 2831 阅读 · 0 评论 -
跟我学Guava:基础1.3-常见Object方法和复用他们
在Java中Object类是所有类的父类,其中有几个需要override的方法比如equals,hashCode和toString等方法。每次写这几个方法都要做很多重复性的判断, 很多类库提供了覆写这几个方法的工具类, Guava也提供了类似的方式。下面我们来看看Guava中这几个方法简单使用。 equals方法:equals是一个经常需要覆写的方法, 可以查看Object的eq原创 2015-10-21 15:11:00 · 647 阅读 · 0 评论 -
跟我学Guava:基础1.2-前置条件
一句话理解:减少大量判断,简介代码,使用try/catch来处理参数的判断逻辑。在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按照正常流程执行下去。对于可预知的一些数据上的错误,我们一定要做事前检测和判断,来避免程序流程出错,而不是完全通过错误处理来保证流程正确执行,毕竟错误处理是比较消耗资源的方式。在平常情况下我们对参数的判断都需要自己来逐个写方原创 2015-10-21 10:29:18 · 693 阅读 · 0 评论 -
跟我学Guava:基础1.1-使用和避免null
在我们学习和使用Guava的Optional之前,我们需要来了解一下Java中null。因为,只有我们深入的了解了null的相关知识,我们才能更加深入体会领悟到Guava的Optional设计和使用上的优雅和简单。 null代表不确定的对象: Java中,null是一个关键字,用来标识一个不确定的对象。因此可以将null赋给引用类型变量,但不可以将null赋给基本类型变量。原创 2015-10-20 21:15:28 · 848 阅读 · 0 评论 -
Java项目依赖各jar包的作用和解释
IKIKAnalyzer3.2.8.jar // 分词器ant-junit4.jar // ant junitantlr-2.7.6.jar //没有此包,hibernate不会执行hql语句。并且会报NoClassDefFoundError:antlr/ANTLRException错误aopalliance-1.0.jar //这个包是AOP联盟的API包,里面包含了针对面向切面的接转载 2015-09-14 16:33:11 · 6046 阅读 · 0 评论 -
HOOK+file实现键盘记录功能。
关键代码;LRESULT CALLBACK KeyboardProc( int code, // hook code WPARAM wParam, // virtual-key code LPARAM lParam // keystroke-message information){ static CString str; if(VK_HOME == wParam转载 2009-08-23 13:42:00 · 1156 阅读 · 0 评论 -
翻出以前糟烂的封装的配置文件类。
//Unix#include #include #include #include #include #include #include using namespace std;class MyIni{private: char name[255]; int age; int fee; int feei; int fd;//配置文件描述符public:转载 2009-08-23 13:46:00 · 570 阅读 · 0 评论 -
初识OOAD-面向对象设计模式
今天学了新东西OOAD,也认识了个新牛,赵德奎,以前华为的,感觉还行,挺正经!首先介绍了下:经典设计模式:GOF(gang of four)之行为型的observer(观察者模式)大体是,一个类的属性或成员发生了变化,有相应的类也同时发生变化。实现是通过把额外类的父类指针保存到容器中,然后实现类在要发生变化的函数里,从容器中一各个读取出来,这样起到同时变化的效果。好处是,通过原创 2009-04-20 23:15:00 · 729 阅读 · 0 评论 -
网络字节序的问题
最近接触到网络字节序的概念 查了查资料 不是很明白 先引用一段材料: 字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序,通常有小端、大端两种字节顺序。小端字节序指低字节数据存放在内存低地址处,高字节数据存放在内存高地址处;大端字节序是高字节数据存放在低地址处,低字节数据存放在高地址处。基于X86平台的PC机是小端字节序的,而有的嵌入式平台则是大端字节序的。因而对int、uint16、ui转载 2009-08-23 13:02:00 · 1078 阅读 · 0 评论 -
彻底了解指针数组,数组指针,以及函数指针,以及堆中的分配规则[转]
2004年7月31日星期六 第二次更新,增加了对象的堆内存分配,细化了指针数组和数组指针内存的说明 ! 昨天给0405班辅导,当他们问我指针数组的问题的时候,由于好久没用,感觉有些陌生了,所以今天归纳总结了一下,希望以后的朋友可以少走些弯路:) 一 :关于指针和堆的内存分配 先来介绍一下指针 : 指针一种类型,理论上来说它包含其他变量的地址,因此有的书上也叫它:地址变量。既然指针是一个类型,是类型转载 2009-08-23 13:35:00 · 696 阅读 · 0 评论 -
C++虚函数表解析(转)
From: http://www.cppblog.com/xczhang/archive/2008/01/20/41508.html C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技转载 2009-04-19 23:09:00 · 1006 阅读 · 1 评论 -
关于C/C++指针(转)
#includechar ga[]="abrtgertrht4rjhrt";void my_array_func(char ca[10]){ printf(" addr of array param = %#x/n",&ca); //the address of local variable printf(" addr of (ca[0]) = %#x/n",&(ca[0]));原创 2009-04-19 23:42:00 · 706 阅读 · 0 评论 -
如何取得本机IP
1.HKEY_LOCAL_MACHINE SYSTEM//CurrentControlSet//Services//Tcpip//Parameters//Interfaces//2.char str[]={0}; gethostname(str); hostent* remoteHost; remoteHost = gethostbyname(str); strcpy(转载 2009-08-23 13:46:00 · 538 阅读 · 0 评论 -
netsocket with select module [first]
netsocket with select module [first]//不完善的select模型 雏形 #include #include #define PORT 9318#pragma comment(lib,"ws2_32")//服务器FD_SET WriteSet; FD_SET ReadSet; DWORD WINAPI work(v转载 2009-08-23 13:49:00 · 597 阅读 · 0 评论 -
用VC加载Lua.lib, 配置Lua脚本。。。。
Lua.lib一般大家都没有,它是怎么来的呢,其实很简单。大家都知道Lua是跨平台,开源。所以我们能看到内部的很多代码,这样就为了lib提供方便。 那么把答案说下吧,Lua.lib是可以自动生成的。下边详解步骤:1.VC工程,win32 static library,名字就叫lua。2.到lua根路径下是把src文件中所有的*.c,*.h加载进来。3.debug和原创 2009-11-12 14:08:00 · 2591 阅读 · 0 评论 -
__cdecl __fastcall与 __stdcall 的详细说明
__cdecl __fastcall与 __stdcall 调用约定: __cdecl __fastcall与 __stdcall,三者都是调用约定(Calling convention),它决定以下内容:1)函数参数的压栈顺序,2)由调用者还是被调用者把参数弹出栈,3)以及产生函数修饰名的方法。 1、__stdcall调用约定:函数的参数自右向左通过栈传递,被调用的函数在返回前清理传送参数的内存栈,原创 2010-06-02 10:42:00 · 1312 阅读 · 0 评论 -
UNICODE,GBK,UTF-8区别
UNICODE,GBK,UTF-8区别 简单来说,unicode,gbk和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式.而前面那三种编码是一兼容的,同一个汉字,那三个码值是完全不一样的.如"汉"的uncode值与gbk就是不一样的,假设uncode 为a040,gbk为b030,而uft-8码,就是把那个值表现的形式.utf-8码完全只针对uncode来组织的,如果转载 2010-04-02 19:25:00 · 868 阅读 · 0 评论