技术分享
文章平均质量分 68
zhyf918
这个作者很懒,什么都没留下…
展开
-
mysql慢查询:pt-query-digest 分析
pt-query-digest 属于 Percona Toolkit 工具集中较为常用的工具,用于分析 slow log,可以分析 MySQL 数据库的 binary log 、 general log 日志,同时也可以使用 show processlist 或从 tcpdump 抓取的 MySQL 协议数据来进行分析。原创 2023-03-07 19:34:31 · 699 阅读 · 1 评论 -
iOS发布证书不受信任,钥匙串显示发布证书不受信任解决办
钥匙串显示发布证书不受信任解决办原创 2022-10-22 22:25:18 · 1152 阅读 · 1 评论 -
linux下socket的分配算法
目的: linux服务端开发有一种常用做法,是定义一个大数组存放所有玩家信息,大小为65536,以socket为下标存储玩家信息,理由是linux下socket描述符的分配是递增1的,而端口号为16位,最大为65536,即一台物理机最多能接受65536个连接。所以用一个65536的大数组来存放所有玩家是安全的。本文目的是分析windows, linux下socket的分配算法,验证以上做法是否转载 2013-06-28 16:29:45 · 1291 阅读 · 0 评论 -
setsockopt,getsockopt
套接口选项在前面的几章中,我们讨论了使用套接口的基础内容。现在我们要来探讨一些可用的其他的特征。在我们掌握了这一章的概念之后,我们就为后面的套接口的高级主题做好了准备。在这一章,我们将会专注于下列主题:如何使用getsockopt(2)函数获得套接口选项值如何使用setsockopt(2)函数设置套接口选项值如何使用这些常用的套接口选项得到套接口选项有时,一个程转载 2013-06-29 11:24:22 · 744 阅读 · 0 评论 -
TCP/IP协议实战说明
要熟练掌握Linux下的TCP/IP网络编程,至少有三个层面的知识需要熟悉:1. TCP/IP协议(如连接的建立和终止、重传和确认、滑动窗口和拥塞控制等等)2. Socket I/O系统调用(重点如read/write),这是TCP/IP协议在应用层表现出来的行为。3. 编写Performant, Scalable的服务器程序。包括多线程、IO Multiplexing、非阻塞、异转载 2013-06-30 23:44:15 · 1042 阅读 · 0 评论 -
TCP协议详解
TCP协议详解(理论篇)1. 与UDP不同的是,TCP提供了一种面向连接的、可靠的字节流服务。面向连接比较好理解,就是连接双方在通信前需要预先建立一条连接,这犹如实际生活中的打电话。助于可靠性,TCP协议中涉及了诸多规则来保障通信链路的可靠性,总结起来,主要有以下几点:(1)应用数据分割成TCP认为最适合发送的数据块。这部分是通过“MSS”(最大数据包长度)选项来控制的,通常这种机制也转载 2013-06-30 23:41:12 · 723 阅读 · 0 评论 -
hash字符串 转数字,大全
1. PHP中出现的字符串Hash函数 static unsigned long hashpjw(char *arKey, unsigned int nKeyLength){ unsigned long h = 0, g; char *arEnd=arKey+nKeyLength; while (arKey > 24); h = h ^ g; } } return h;}转载 2013-07-06 01:07:43 · 7167 阅读 · 0 评论 -
epoll_create, epoll_ctl和epoll_wait 实例讲解,总结得不错
epoll_create, epoll_ctl和epoll_wait 实例讲解,总结得不错NAMEepoll - I/O event notification facilitySYNOPSIS#include DEscrīptIONepoll is a variant of poll(2) that can be used either as Edge or L转载 2013-07-28 20:49:58 · 770 阅读 · 0 评论 -
linux中查看线程的三种方法
linux中查看线程的三种方法:1、top -H手册中说:-H 加上这个选项启动top,top一行显示一个线程。否则,它一行显示一个进程。2、ps xH这样可以查看所有存在的线程。3、ps -mp 这样可以查看一个进程起的线程数。原创 2013-07-28 18:56:01 · 1196 阅读 · 0 评论 -
多线程程序debug linux
多线程程序可能存在很多潜在的bug,如data race,dead lock,信号bug等,而这些bug一向很难调试,现在有很多论文都是基于多线程程序的调试技术的,比如model check,死锁检测,replay技术等,也有很多对应的工具,如intel的pinplay,微软的Zing等。关于这些技术和工具,如果感兴趣可以 google相应的论文进一步了解。这里我主要讲述的是我在对二进制翻译下多线转载 2013-07-28 19:05:18 · 686 阅读 · 0 评论 -
进程地址空间的布局以及进程堆栈帧 ---缓冲攻击
进程地址空间的布局以及进程堆栈帧的结构分类: C/C++2011-02-20 12:02 2264人阅读 评论(0) 收藏 举报functionbufferlinuxgccbash汇编前言从逻辑上讲进程的堆栈是由多个堆栈帧构成的,其中每个堆栈帧都对应一个函数调用。当函数调用发生时,新的堆栈帧被压入堆栈;当函数返回时,相应的堆栈帧从堆栈中弹出。尽管堆栈帧结构的转载 2014-11-15 21:14:19 · 721 阅读 · 0 评论 -
堆栈空间
每一个进程都有自己的一个进程堆栈空间。在Linux界面执行一个执行码时,Shell进程会fork一个子进程,再调用exec系统调用在子进程中执行该执行码。exec系统调用执行新程序时会把命令行参数和环境变量表传递给main函数,它们在整个进程堆栈空间中的位置如下图12-7所示。 图12-7 进程堆栈空间图下面是对图12-7进程堆栈空间转载 2014-11-15 20:25:19 · 1185 阅读 · 0 评论 -
内核进程的堆栈
内核进程的堆栈 每一个进程(包括普通进程和内核进程)的地址空间都分为用户地址空间和内核地址空间两部分,在32位的x86机器上,用户地址空间的范围是0~3G,内核 地址空间的范围是3G~4G.对于不同的进程,其用户地址空间会随着进程不同而不同,但所有进程的内核地址空间则都是一样的。对于内核进程,由于其始终运 行在内核态,所以没有用户地址空间,其对应的tast_struct结构体中的mm域转载 2014-11-15 20:43:33 · 777 阅读 · 0 评论 -
lucene4
内容简介本书以lucene 4.0搜索引擎为基础,以lucene最新架构为主线,通过大量实例,全方位讲解lucene各种基本功能和高级功能,全书包括19章。第1章 初识Lucene第2章 索引Index第3章 搜索Search第4章 分析器Analyze第5章 目录Directory第6章 索引编码Codec第7章 查询解析QueryParse第8章 连接joi转载 2013-06-25 21:00:53 · 775 阅读 · 0 评论 -
socket —— Linux套接字接口
SOCKET(7)NAMEsocket —— Linux套接字接口SYNOPSIS#include sockfd = socket(int socket_family, int socket_type, int protocol);DESCRIPTION此手册描述Linux网络套接层用户接口。BSD兼容的通用接口位于用户矜持和内核的网络协议栈之间转载 2013-06-25 13:36:10 · 1256 阅读 · 0 评论 -
connect 非阻塞 超时机制 转
阻塞套接字的一般情况下,connect ()直到客户端对SYN消息的ACK消息到达之前才会返回。使connect()调用具有超时机制的一个方法是让套接字成为非阻塞的套接字体,然后用select()来等待它完成。[code:1:7901c37cf2] s = socket(AF_INET, SOCK_STREAM, 0); //下面获取套接字的标志 if ((flags = fcnt原创 2013-06-16 16:45:46 · 950 阅读 · 1 评论 -
gethostname()函数 原理
gethostname()函数来获取本机的名称,这个函数在实现上,会先查找/etc/hosts文件的内容,然后查询DNS服务器。如果/etc/hosts文件没有配置,返回的主机名就是localhost,也就是127.0.0.1 。原创 2013-06-16 17:08:56 · 3385 阅读 · 1 评论 -
socket 打破的管道 broken pipe
MSG_NOSIGNALlinux下当连接断开,还发数据的时候,不仅send()的返回值会有反映,而且还会像系统发送一个异常消息,如果不作处理,系统会出BrokePipe,程序会退出。为此,send()函数的最后一个参数可以设MSG_NOSIGNAL,禁止send()函数向系统发送异常消息。原创 2013-06-16 18:05:12 · 1106 阅读 · 0 评论 -
Lucene 4.0 介绍
2012年10月12日,Lucene 4.0正式发布了(点击这里下载最新版),这个版本因为诸多的新特性和大胆的架构调整一直备受期待。无论是索引结构,索引算法以及整体架构的包容性都发生了翻天覆地的变化。正如大家一直所说的Lucene是一个搜索工具包 ,而4.0的发布则让Lucene向搜索框架的方向迈出了一大步。 下面我们来逐一解读Lucene 4.0的新特性吧。Lucene 4.0转载 2013-06-19 12:07:01 · 881 阅读 · 0 评论 -
tcp_nodelay
在网络拥塞控制领域,我们知道有一个非常有名的算法叫做Nagle算法(Nagle algorithm),这是使用它的发明人John Nagle的名字来命名的,John Nagle在1984年首次用这个算法来尝试解决福特汽车公司的网络拥塞问题(RFC 896),该问题的具体描述是:如果我们的应用程序一次产生1个字节的数据,而这个1个字节数据又以网络数据包的形式发送到远端服务器,那么就很容易导致网络由于转载 2013-06-21 02:26:58 · 1204 阅读 · 0 评论 -
linux send与recv函数详解
linux send与recv函数详解1 #include 2 ssize_t recv(int sockfd, void *buff, size_t nbytes, int flags);3 ssize_t send(int sockfd, const void *buff, size_t nbytes, int flags);recv 和send的前3个参数等同转载 2013-06-21 02:34:15 · 1923 阅读 · 0 评论 -
lucene分布式几种方法
1、如果应用程序架构由多个LUCENE索引组成,则可以通过MutltiSearcher把所有索引搜索。也可以通过ParallelMultiSearcher进行多线程搜索。在单核的情况下,MultiSearcher比ParallelMultiSearcher性能更高。2、MultiSearcher搜索2个搜索,把动物按首字母在字母表中的位置分成2部分,一部分一个索引public clas转载 2013-06-21 21:25:06 · 1093 阅读 · 0 评论 -
lucene索引:改变索引打分的四种方式(
lucene索引:改变索引打分的四种方式(2) (6) float coord(int overlap, int maxOverlap)一次搜索可能包含多个搜索词,而一篇文档中也可能包含多个搜索词,此项表示,当一篇文档中包含的搜索词越多,则此文档则打分越高。public void TestCoord() throws Exception { MySimilarity sim = new MySim转载 2013-06-22 05:54:01 · 807 阅读 · 0 评论 -
庖丁解牛 分词
今天想测试一下“庖丁”分词的效果,编写了一个测试小程序,从文件中读入文本,并将分词结果显示到控制台。环境平台:Win7+eclipse过程如下:1.编辑paoding-analysis.jar中的paoding-dic-home.properties文件,去掉“#paoding.dic.home=dic”前面的#号,并将等号后面的dic改为dic文件夹在你本地存放的具体路劲,如:F转载 2013-06-22 06:15:20 · 953 阅读 · 0 评论 -
lucene索引:改变索引打分的四种方式
在索引阶段设置Document Boost和Field Boost,存储在(.nrm)文件中。如果希望某些文档和某些域比其他的域更重要,如果此文档和此域包含所要查询的词则应该得分较高,则可以在索引阶段设定文档的boost和域的boost值。这些值是在索引阶段就写入索引文件的,存储在标准化因子(.nrm)文件中,一旦设定,除非删除此文档,否则无法改变。如果不进行设定,则Document转载 2013-06-22 06:40:06 · 1217 阅读 · 0 评论 -
改变索引打分的四种方式
lucene索引:(2)(6) float coord(int overlap, int maxOverlap)一次搜索可能包含多个搜索词,而一篇文档中也可能包含多个搜索词,此项表示,当一篇文档中包含的搜索词越多,则此文档则打分越高。public void TestCoord() throws Exception { MySimilarity sim = new MySimil转载 2013-06-22 06:43:38 · 792 阅读 · 0 评论 -
socket阻塞,非阻塞
您可以利用select模型来设置connect连接超时,当前之前需要调用unsigned long ul = 1;ioctlsocket(SOCKET, FIOBIO, (unsignedlong*)&ul);。。。connect(...);之后的就使用select()下面有段网上的例子代码,您不妨参考一下:WSADATA wsd;SOCKET cCli转载 2013-06-25 19:42:41 · 761 阅读 · 0 评论 -
unicode 与 utf 转换 java(转)
在Unicode和UTF-8之间转换 try {// Convert from Unicode to UTF-8String string = "abc\u5639\u563b";byte[] utf8 = string.getBytes("UTF-8");// Convert from UTF-8 to Unicodestring = new String(utf8, "UT原创 2013-06-13 14:12:48 · 702 阅读 · 1 评论