- 博客(36)
- 资源 (13)
- 收藏
- 关注
原创 Scratch 消灭字母小游戏
最近尝试一边自学Scratch,一边尝试教给小孩,看他打字时在键盘上乱打一气,想起来自己小时候玩过的学习机打字母游戏,就想给他下载一个。结果网上看到的代码,要么质量太差(有26个字母就要写 26 个判断,会把小孩水平教坏 😦 ),要么还要收钱才能下载。就决定自己写一个。
2024-12-10 20:47:34
562
原创 [开源重构]Search(Elasticsearch/OpenSearch) Sync Tool
在不同的 Elasticsearch/OpenSearch 集群之间同步数据
2024-11-19 07:32:34
589
原创 [GO]使用 CSTD(Code Self Test Development) 技术方式处理 error
背景知识在以前使用 VC 开发代码时,微软提供了 ASSERT 和 VERIFY 宏,其在调试环境下能比较方便的发现问题。我基于此设计了 CSTD(Code Self Test Development) 和 API_VERIFY , COM_VERIFY 等宏帮助我开发了几乎 0bug 的 C/C++ 代码.在使用 go 语言开发时, 发现系统也是采用返回 error 的方式进行错误的处理, 而且不像 java, python 等使用异常。因此被戏称为 一半时间写代码,一半时间处理错误。Error
2024-01-29 21:44:28
990
原创 使用 curl multi interface 编写的高性能封装类和示例
libcurl multi interface 的简单封装和demo, 使用 MultiPart 的 POST 上传 600+文件, 仅耗时 4~6 秒
2023-01-17 21:42:49
596
原创 一次"Connection Reset"的根因和修改方式调查
在实际工作中遇到一次 Connection Reset 问题,确认了问题的根因和最佳修改方式,并编写了一些可以重用的检测工具
2018-11-21 20:43:14
29223
2
原创 开源:通用的日志分析工具(LogViewer)
工具介绍本工具最早是制作出来查看我的 FTL(Fast Trace Log) 二进制日志文件的, 后来因为去做Java后台,经常看 SpringBoot, Tomcat 等的日志, 就简单重构了一下, 从而支持通过正则来通用的分析日志.LogViewer一个通用的日志查看器. 可以通过用户配置的正则表达式解析文本格式的日志文件(如 Spring-Boot, Android, ...
2018-06-29 20:27:28
62593
10
原创 Java 线程池(ThreadPoolExecutor)的自动调整策略分析
前言: 最近分析Java源码,对Java的线程池有一些疑惑,特提出来,希望大家能一起讨论确认一下。Java提供了线程池, ThreadPoolExecutor 实现,可以在 corePoolSize 和 maximumPoolSize 中自动根据传入的任务数自动调整。注释中有这样一段话:If there are more than corePoolSize but less t
2018-01-16 22:13:07
2628
1
原创 最简单的调试学习Hadoop Examples的方法
本文介绍了直接在IDE(Idea中进行,但适用于Eclipse)中调试Hadoop Examples中的一个简单方法,能轻松通过调试示例的方式来学习其使用方式
2016-08-20 20:35:39
3697
1
原创 ssh免密码登录的最佳实践(Ubuntu 16.4 + CentOs 6 中验证通过)
本文介绍了通过命令行脚本,批量配置集群中大量机器的ssh免密码登录的配置方式
2016-08-17 22:47:27
1425
原创 命令行编辑XML的最佳实践(修改版xmlstarlet)
本文介绍了通过修改后的 xmlstarlet 来在shell脚本中直接修改 XML(增加复杂的子节点,属性等)
2016-08-15 23:35:11
5227
1
原创 搜索jar包(binary和sources)中的代码
背景介绍 有的时候, 我们调试运行一个带了很多 jar 包的Java程序时,通过日志等方式发现一些感兴趣的信息,但无法定位具体的代码位置。比如我在维护一个转交过来的老项目代码(原有开发者都找不到了。。。)时遇到如下情况:xwork中通过 Interceptor 进行了登录拦截,因为是使用debug服务器,在访问任何页面时都会提示验证登录失败,并输出验证失败的日志,但不清楚具体是哪个jar
2016-08-10 21:25:53
4980
1
原创 使用SWT+WinBuilder制作JavaDemo程序
(代码下载地址:http://download.youkuaiyun.com/detail/fishjam/9407273)最近在学习Java相关的知识,按照我学习的一贯做法,都是通过 UT + Demo 的方式来学习、测试和记录笔记。因此,希望能制作出一个比较容易增加测试项的GUI测试程序,方便测试各种学习点。通过学习研究,发现参照Eclipse 自带的 ControlExample SWT
2016-01-17 13:26:42
3766
原创 服务程序性能优化之另辟蹊径
前言: 很久没写文章了,因为最近和朋友讨论问题时说到了性能优化这个话题,特将我之前解决一个linux下服务器性能问题的思路和方式共享一下。背景: 基本需求如下:在Linux下,有一台数据处理服务器,需要从网络上的很多节点获取信息,并按照管理员的要求进行分析和过滤,然后保存结果等待二次处理(从业务逻辑上,可以认为是网监部门从各位的QQ聊天中分析关键字,发现特别之处进行关注或请
2013-05-26 12:12:20
1383
原创 一个可以重用的线程安全生产者消费者队列类
生产者、消费者队列的代码和文档和例子,优快云或别的网站上已经有很多了,我就不再多说了。不过一般的文档中给出的例子往往只是“例子”,要用于实际的项目开发中差的很远,共享一下我以前写的一个线程安全的生产者消费者队列类。具有如下特点:1.可以设置队列中的最大长度; 2.线程安全; 3.多线程想向队列中放入数据时,可设置等待队列有空位的超时时间,当有空位时,等待线程
2013-04-21 21:51:21
2150
原创 福利贴:使用线程池实现的Http上传下载实现
前段时间发布了《Windows下一个比较完美的线程池实现和示例》(http://download.youkuaiyun.com/detail/fishjam/5106672),根据下载量和评论来看,对大家还比较有用现在发布一个利用该线程池实现的Http上传下载实现,不过这几个类写的比较粗糙,个人觉得存在不少问题,尚需测试分析和重构:1.还有很多问题没有考虑或提供解决方案:
2013-03-17 15:51:47
1960
原创 在Exe和Dll之间共享变量
今天解决了我开发的FTL里面一个困扰我很久的Bug,把方法共享一下。首先说明:这不是用 pragma_data 设置的在多个 Exe 公用同一个DLL时,使用DLL中相同的变量,而是同一个进程的EXE和各个DLL之间共享变量。背景介绍: FTL是本人参考ATL、WTL等开发的一个模版库,其中是我常用到的各种可重用的功能代码(比如日志、线程、线程池、流水线等)。因为全部都是头
2013-03-07 21:18:36
5247
原创 Windows下一个比较完美的线程池实现(更新)
1. 前言线程池不是一个新鲜的东西,网上能找到很多原理、实现,甚至很多库都提供了实现,比如微软的 ATL::CThreadPool, Vista后提供的CreateThreadpoolWork, boost 中提供的 thread_pool, 优快云、CodeProject 等网站上很多人已经实现的类。但这些库往往只支持启动任务,而不能很好地停止任务(相信很多人都会和我一样有这个需求),于
2013-03-03 23:45:07
24559
8
原创 DebugInfoFIlter -- DirectShow调试工具
下载地址为:http://download.youkuaiyun.com/detail/fishjam/48632021. 功能介绍DirectShow中用于调试的一个Inplace Transform Filter,具有如下功能:a. 当不起用其“Dump”功能时,对原始的Graph没有影响,但推荐只在调试时使用;b. 能列出并动态更改前后连接的Filter采用的M
2012-12-09 09:19:19
2099
原创 软件流水线--多核时代的高性能编程
1. 前言流水线技术是把一件任务分解为若干顺序执行的子任务,不同的子任务由不同的执行机构负责执行,而这些机构可以并行工作。在任一时刻,任一任务只占用其中一个执行机构,这样就可以实现多个任务的重叠执行,以提高工作效率。自从福特汽车在工业生产中引入了流水线后,流水线这一方式就广泛应用于各种生产环节中,大大提高了生产效率。对于IT人士来说,大家都知道Intel和AMD也在CPU中引入了流水线的
2012-04-05 22:47:50
9303
原创 C++实现的可以安全的暂停、继续、停止线程的封装类
在使用线程时,最麻烦的就是线程的同步控制,如暂停、继续、停止(包括暂停状态下)等。虽然微软提供了 SuspendThread、TerminateThread 等函数“似乎”可以完成这个功能,但如果你在代码里使用这些函数,则往往会遇到各种问题(比如SuspendThread时正好在CRT分配内存的锁中造成其他线程也跟着锁死,TerminateThread时资源未释放)等。本人经过试验和总结,
2012-04-04 16:15:39
7203
原创 COM学习的总结和测试程序
在学习COM的过程中,看了不少书,做了不少笔记,也做了不少测试。将COM相关的学习内容整理成一个VC工程,在工程中采用注释的方式记录笔记,并通过Dialog上的按钮来测试各种COM功能。现在将该程序共享出来,方便初学者的学习。简单介绍如下: 1. 程序结构:主要有三个工程,分别是一个ATL的COM组件、ATLCOMPs 、和一个做为客户端的MFC 的Dialog工程。 2.文
2012-03-27 22:52:15
1430
原创 兼容DC和兼容位图
昨天在论坛上看到有人因为绘图出现错误而求助,感觉其中对于兼容DC和兼容位图的问题,很多人(包括我)都不是很清楚,经常犯错误(比如画出来的图只有黑白二色),于是把之前的一些总结共享出来。兼容DC 和 兼容位图 概念和作用我就不再介绍了,网上一搜一大堆,主要将我用CPPUnit做单元测试的代码贴出来,大家就清楚了。 //总结:创建兼容位图时,★不能★使用才创建好的内存兼容DCvoid
2012-03-27 21:31:09
3211
原创 COM接口中的信息获取
大家都知道,作为客户端使用COM服务时,需要通过 QueryInterface 获取到组件支持的COM接口,然后再调用其提供的各种方法来完成功能。但各种COM服务都支持哪些接口呢?这个信息一般比较难直接获取到,通常是到处查找资料,参看人家的例子,然后自己再不停的做试验,效率非常低。在开发Visual Studio的插件过程中,也需要通过 IServiceProvider::QueryServi
2012-03-17 23:27:25
2938
原创 FTL中高性能的日志系统(CFFastTrace)
在软件的开发中,往往要用日志(比如 TRACE/ ATLTRACE 等)来跟踪程序的运行,方便查找错误,确认性能等。但过少的日志不容易定位问题,过多的日志又难以分析,而且一个程序中多个线程的日志又交接在一起,又难于分析,等等诸多问题。因此,我在FTL中使用了高性能的日志跟踪类 FastTrace,将各个线程的日志输出到单独的目的地(文件)中,查看时再使用专门的工具进行查看,并且可以按照日志
2012-03-05 22:03:31
1566
原创 编译器选项检测文件 -- ftlConfigDetect.h
在编译时,IDE中往往有各种设置,经常会因为各个项目之间的配置不兼容造成问题,而检查起来还比较麻烦。因此制作了对IDE的各种配置进行检查的 ftlConfigDetect.h 文件,只要在 stdafx.cpp 等文件中包含,就可以检测出当前的很多配置信息,并在 Output 窗口中输出来,方便检查配置情况。注意:由于很久没有更新了,可能有些项目不是最新的(比如不识别 VS 2010),需
2012-02-22 20:37:02
923
原创 FTL(Fishjam Template Library)简介
相信各位程序员在软件开发的过程中,为了方便学习和开发,大多都设计、实现或使用过各种Utility库。我也曾经将常用的代码开发成Dll形式的库,但后来发现维护起来实在太困难。主要的问题是使用时需要区分各种版本(Debug/Release, Unicode/ANSI,不同的Visual Studio版本,甚至其中使用的 CString 都区分 MFC/ATL/WTL 的等),在没有CI的情况下,个人维
2012-02-22 19:58:20
1777
2
原创 使用CSTD技术轻松编写0 Bug的代码
前言软件开发,在很多人的眼里是一件艰苦、困难的事情,在软件开发中发生诸多问题,如:1.“改一出两”或客户处发生但开发环境下不再现的Bug;2.客户“随心所欲”的更改要求,而现有的设计又无法满足。3.进行新项目开发时,由于没有一个好的通用架构,每次都要重新进行设计和实现,却无法在项目期限内获得高效、高质量的代码。以上等等诸多问题,使得开发人员经常加班却看不到多少效果,使得软件开发
2012-02-13 22:49:40
1834
原创 用于删除map中new出来的Key/Value 的PairDeleter
<br /> 一般对于 vector/list/set 等中 new出来的数据,在最后都会用 for_each(begin(),end(), ObjectDelete()) 一类的写法进行删除,但对于map中new出来的数据,则没有比较方便的删除方法。写一个类似的 PairDeleter<br /> <br /> //使用 for_each 删除容器中保存的对象指针的类(结构) -- 参见 Effective STL 中的条款7 template <typename T> str
2011-01-08 19:01:00
1435
原创 扩展的find算法 -- find_nearest(查询最接近的数据)
通常使用需要快速查找定位的数据时,会通过 set/map 等保存数据,然后使用find等算法进行查找。但有时想查找的数据不能完全匹配,而是查找一个最接近的值(比如,在两个不同的数据结构中,想匹配出ID相同,且发生时间最接近的数据)时,STL没有提供可用的函数,一般的做法就是将数据全部遍历计算一遍,然后选取最接近的值。其算法复杂度为 O(n)。通过扩展,写出通用的模版算法 find_nearest 可以完成这个功能
2011-01-08 18:17:00
4626
原创 程序化的设计模式学习
编写了一个程序,将设计模式的学习信息采用程序的方式进行显示,并且可以方便的增加新的学习笔记。其程序界面主要分为四个部分: 1. 模式列表 -- 列出了常用的23个设计模式,通过单击,可以在其他部分显示详细信息; 2. UML 图示 -- 显示模式对应的UML图示; 3. 模式的说明信息或运行效果 -- 根据用户选择,显示以下两种内容(可以通过菜单“Option”切换显示内容)
2009-01-09 12:57:00
1571
原创 JavaScript调试的小工具(jsTrace)
前段时间写一个JavaScript的程序,根据用户鼠标的操作进行控件的拖放。感觉用 alter 或 断点跟踪调试的方法太难受了。就仿照MFC的TRACE功能写了如下的小代码(trace.js)。拥有的功能如下: trace(str) : 在调试窗口输出信息; traceObj(obj): 在调试窗口输出对象所有不为空的属性; tracefmt(...): 按照用户定义的格式进行输出 t
2007-01-23 13:14:00
4991
Windows下比较完美线程池的升级版本
2016-01-18
Windows下比较完美线程池的升级版
2016-01-18
使用SWT+WinBuilder制作的JavaDemo程序
2016-01-17
一个可以重用的线程安全生产者消费者队列类
2013-04-21
使用线程池实现的Http上传下载实现
2013-03-17
Windows下一个比较完美的线程池实现和示例
2013-03-03
Debug Info Filter(二进制,非源码)
2012-12-09
C++实现的可以安全的暂停、继续、停止线程的线程类和Sample
2012-04-04
COM学习笔记和测试程序2
2012-03-28
检测COM接口信息的源码和例子
2012-03-17
程序化的设计模式学习源码
2012-02-13
将设计模式的学习信息用C#程序展现
2009-01-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人