- 博客(407)
- 资源 (2)
- 收藏
- 关注
原创 std::vector的reserve、resize与堆内存破坏
今天费了一个下午调试一个诡异的内存崩溃问题(coredump)基本上可以稳定复现,但会有不同。经分析崩溃栈,发现都是malloc内存时出现了signal 11段错误?分配内存时崩溃有可能是传入了非法size值,比如说-1或者0什么的,但那种情况下会抛bad alloc异常,或者返回空指针。起初怀疑是std::string的默认allocator的问题,甚至怀疑是全局变量未初始化导致的问题。。。但是...
2018-03-17 00:22:35 5509
原创 软件外包行业最大的问题
软件外包行业最大的问题,不是其中的技术人员难有大的发展,原因是大部分发注都是测试类的,不,真正的问题在于,作为外包的甲方乙方,只看甲方的需求,实质是只看甲方某部门领导(或发注项目负责人)的,而忽略了最终客户(消费者)的核心诉求。换句话说,外包行业的产业链条中存在着不当的压榨行为,使得从业人员增加了痛苦指数,最终的消费者客户也没有从这些软件系统的使用上得到乐趣。那么,直接做产品的企业,情况会不会好一...
2018-03-01 23:47:43 5821
原创 CSS布局里图文混排的缺陷(语义描述不完备)
HTML CSS布局的概念里,<img>和text默认都是inline的,但text默认不对应HTML Element(对应DOM的Text node)。当把图片<img>元素和文本默认放在一起时,由于默认文档流的流式布局,<img>图片元素和文本显示在一行上,基于文本的baseline位置水平对齐。奇怪的是,假如图片的高度不止一行文本时,则图片的右边只有一行文...
2018-02-11 11:06:21 842
原创 Why Isomorphic Go(同态Go应用,用Go语言编写前端和后端)
最近Packt出了一本书,《Isomorphic Go》。我就好奇,已经有了Isomorphic JavaScript(后端用Node.js),为何还要再来一个Isomorphic Go?也就不说Isomorphic Go了,为什么要用Go来写前端?已经有TypeScript、clojurescript这些的情况下?现在我忽然领悟了,关键在于protobuf!protobuf是一种二进制数据交换格
2018-01-18 16:44:08 1673
原创 一些记录
https://github.com/envoyproxy/envoy envoy作为Istio service mesh的主要组件,用于服务器集群内部环境的部署,是否可以简单地用于本地测试环境呢?C++ 11实现的http proxy,支持自定义filter、http2、gRPC。其JSON解析用到了RapidJSON。一个作家最主要的能力就是编故事,这个故事并不一定是他亲身经历的,但他
2018-01-10 11:15:34 562 1
原创 一次git stash pop引发的血案、、、
由于需要切换到master分支,我暂时将本地的working分支(mybranch)工作直接赞存:git stash然后切换:git checkout mastermaster上的工作处理完后,现在重新切换回来:git checkout mybranch$ git stash popAuto-merging test.cppCONFLICT (content): Merge con
2017-11-15 10:47:49 17192 2
原创 OpenGrok在Windows处理UTF-8编码无BOM信息的源代码时,中文注释显示为乱码的问题
一句话:默认解码需要改成UTF-8,用ant重新分析源代码:public abstract class TextAnalyzer extends FileAnalyzer { public TextAnalyzer(FileAnalyzerFactory factory) { super(factory); } protected Reader ge
2017-10-20 11:19:23 1402 1
原创 使用Python WSGI编写Web服务器前端,并利用Boost.Python在同一进程内连接到C++服务后端实现
首先,是WSGI application文件:其次,
2017-10-16 21:47:08 725
原创 集中式的内容分发网络本就是错误的互联网设计,账号登录机制更是垃圾
集中式的内容分发网络发展壮大了,总会蛮横地审查言论、举起所谓社区条约来封杀封禁用户帐号。而假如用户看见有趣的文章想参与讨论/评论,还必须实名认证,取一个id去登录。完全没有必要。正确的做法是P2P基于兴趣路由的分布式内容分发网络。用户每个人的机器既是客户端也是服务器,假如用户看到别人的文章觉得不错,自然可以复制到本地,作为一个新的副本,可以转发给别人。假如用户想评论别人的文章,数据保存到本
2017-10-15 20:25:34 468
原创 2017.10.14晚,用迅雷下载大部分BT资源出现失败,tracker服务器被封了?FK
2017.10.14晚,用迅雷下载大部分BT资源出现失败,tracker服务器被封了?FK
2017-10-15 08:22:55 50165 3
原创 问题:C++编写的核心模块如何暴露给外部HTTP Web服务接口???
问题:C++编写的核心模块,其API调用接口是一个C/C++函数:输入是一个复杂的嵌套struct,输出也是一个复杂的嵌套struct(注意,这里的struct定义应该只用于序列化传输,不是内存表示,因此其内部应该包含指针类型、内部id引用等等),如何暴露给外部HTTP Web服务接口???方法0:使用C/C++编写http server模块的代码,借助ACE、Boost.Asio这些库来实现
2017-10-14 11:05:52 3407 2
原创 面向逻辑概念的虚拟编程
今天提出一个概念,是为“面向逻辑概念的虚拟编程”。什么是面向逻辑概念呢?其实这很好说明:关系数据库设计里有概念建模、(业务)逻辑建模、物理建模。编程也当然可以如此。而加上虚拟编程,是为了强调这种“编程”只是一种架构设计层次的思维游戏,它甚至不是伪代码。因为一般提到伪代码,实际上还是绑定到某种命令式编程语言,而伪代码的主要特征就是不一定能通过实际的编译。现在再次回到“面向逻辑概念“的
2017-10-11 00:18:28 763 1
原创 亚马逊:您的评论无法发布。 (靠)
您的评论无法发布。我们非常感谢您在亚马逊上提交商品评论。但是,很遗憾您的评论因为不符合发表规则而没有通过审核。我们诚挚地盼望您分享对产品本身的观点,不论褒贬。我们不会因为批评特定产品而删除评论。您发表的评论必须遵守以下的规定:http://www.amazon.cn/review-guidelines 由 亚马逊买家 于 20
2017-10-09 22:16:28 3054
原创 Spring Microservices in Action-Manning(2017) 读书笔记(```里的xml为什么不能显示为缩进?Markdown的bug??)
Spring Microservices in Action-Manning(2017)-ReadingNotes.mdWelcome to the cloud, Springhttps://github.com/carnellj/spmia-chapter1依赖 spotify/docker-maven-plugin 已经更新为:https://github.com/sp
2017-09-28 00:38:27 1707
原创 让我们考虑一个地图引擎系统。。。
传统的GIS数据库,如ArcGIS这种传统桌面型的软件,主要还是强调测绘模型数据的规范化输入。GIS的本质上在于多维索引,对一个最简单的平面地图来说,主要就是靠最原始的GPS芯片返回的经纬度坐标。问题是,即使静止在同一个位置,由于地球在自转(?),卫星反射返回的信号时间可能不一样,这样得到的经纬度坐标不能保持一模一样。更不用说移动中的目标(汽车)了。中国的GPS坐标还会涉及到一个非线性的加密扰乱,
2017-09-27 14:44:38 2051
原创 成熟的产品环境代码:bounded capacity(受限容量)
Java以前的容器类没有考虑这一点,导致用户可以不停地add元素,这导致内存占用大幅升高,同时也会让服务器无法正常执行,DoS。又如Thread对象,没有考虑周全的话,会很容器new一个新线程去执行,这很容易导致大量线程同时调度执行(由于某种原因它们都没有快速执行完任务干净地退出)后来的并发类库好了一点,可以有blocking queue,当queue的容量达到预先配置的上限后,添加元素的线程
2017-09-18 12:31:49 537
原创 Java的3个问题:synchronized方法、volatile关键字、及内部类
synchronized方法:当修饰类静态方法时,相当于对类的class对象(Class类型的实例)加monitor锁。当修饰实例方法时,相当于对this加锁。synchronized块建立了happens-before关系(即当前线程独占访问被synchronized的对象)。volatile关键字:非long、double的primitive类型不需要加volatile(如果是64
2017-09-17 17:29:24 544
原创 分布式大数据存储:向上索引法
在Hadoop/HDFS里,namenode负责记录datanode的文件元信息,这样当小文件太多的情况下,namenode可能存在DoS漏洞。在实际使用中,namenode的SOP问题由增加冗余备份节点解决,小文件的问题则由引入容器封装的文件格式来解决。在HBase这类基于Master/Slave架构的大数据存储系统中,当出现数据倾斜(分布不均衡)时,将根据key的range自动切分,切分后
2017-09-15 20:27:43 1202
原创 在线招聘网站的问题
本质上,在线招聘网站做的还是信息中介的生意。在线招聘网站说是帮你找工作,实质不过是提供了一个简历托管的地方而已。它本身并不能就帮你找到满意的工作作出任何承诺。与之相反的是,寻找工作的个体,则需要将自身的详细简历信息公开给招聘网站。对于用户个体隐私数据的使用等法律条款,实际上很含糊。当招聘网站收取到了足够多的简历后,则形成了规模效益,它一方面可以向企业方用人单位,及猎头等,收取信息浏览的费用
2017-09-06 16:50:33 593 1
原创 关于推荐系统(Recommender System)推荐引擎的吐槽
# 关于推荐系统(Recommender System)推荐引擎的吐槽大数据的一个最原始的使用似乎就是从推荐系统开始的。尤其是B2C电子商务网站,为了多卖点商品给用户,或者是想让用户多消耗一点内容,当然是值得做的。但是目前这些现有的推荐系统做得怎么样呢?一个字:矬。拿亚马逊来说吧,我真想告诉它(假如它是个聪明的AI的话):我喜欢的书是翻译类的计算机编程、数学物理
2017-09-04 23:44:39 1727
原创 基本算法:生成元素数组的所有排列(permute)
static void permute(int[] A, int k){ //[0, k-1] is prefix, [k, n) is for recursive call; if(k==A.length-1){//递归结束条件 for(int v : A){ System.out.print(v);
2017-09-04 23:02:35 627
原创 Cloud Native Java-OReilly 2017 读书笔记
Cloud Native Java-OReilly 2017-ReadingNotes.mdBasicsSaaS的12 Factor:Bootcamp: Introducing Spring Boot and Cloud FoundrySpring Initializr:http://start.spring.io配置好依赖后,下载得到一个demo.zip$
2017-09-03 16:58:20 2539
原创 Node Cookbook 3rd-Packt Publishing 2017 读书笔记
Node Cookbook 3rd-Packt Publishing 2017-ReadingNotes.md调试进程用DevTools调试Node $ mkdir app $ cd app $ npm init -y $ npm install --save express $ node --inspect index.js (6.3.0+,这个调试
2017-09-02 20:13:34 743
原创 信息聚合系统的数据库后台(比如RSS订阅,feedly)应该如何设计?
我想起之前有研究生同学曾经参与一个实习项目,他们用SQL数据库来实现一个RSS订阅聚合系统,结果遇到了扩展性问题:当RSS源达到上千的时候,并发查询性能就已经下降到不可接受。之后我遇到的实用的信息聚合系统:Google阅读器、以及Feedly。Feedly的官方博客里说它的后台是用HBase来存的。我不禁好奇其数据架构设计到底是怎么做的。首先,容易想到的是,为每篇博客文章关联RSS源id(
2017-08-31 10:38:20 1525
原创 系统工程师/软件架构师在对软件系统进行故障排查时的公共技巧(Debugging的艺术)
系统工程师/软件架构师在对软件系统进行故障排查时的公共技巧(Debugging的艺术)从问题的log中使用特殊的关键词搜索Web,比如特殊的error信息,检查此问题是否别人也遇到过,并有解决方案;尝试基于bug的问题表现症状,设计关键词,在开源软件的上游bug数据库中寻找patch每次解决了新的问题,使用本地基于Lucene的索引系统保存,这样当以后如果觉得问题相似时,可以检索一下,
2017-08-31 10:17:31 547
原创 JIT编译器里面的“逃逸分析”(Escape analysis)
逃逸分析是一种编译器后端优化技术,它不是局部优化,而是过程间分析,这意味着它会分析函数调用关系,以判断变量是否“逃逸”出当前作用域范围。对于JIT类语言来说,一般对象总是堆上分配,逃逸分析是否意味着局部的未逃逸的对象可以改成栈上分配呢?不是这样的,至少对于JVM不是这样。另外一个有趣的例子是Go语言,写惯了C/C++语言的代码会发现一个很奇怪的Go语言特性:当你return一个&{...}
2017-08-31 00:39:47 1205
原创 DHT里面Hash算法的设计,及其如何抵御极端情况下的DoS攻击?
DHT里,要存储的数据对象,本身根据其id(或者其内容本身),经过hash运算,映射到一个32位或者64位整数的区间范围。譬如可以使用密码学hash,如MD5、SHA1、乃至SHA256。Cassandra 3.0里使用的是Murmur3(非密码学hash)这里的问题是,既然是hash,就必然存在一种可能性:数据映射的目标区间的分布不均匀。——极端情况下,可能导致大部分数据都被映射到了
2017-08-30 17:55:45 947
原创 Cloud Native时代SaaS类Web应用的后端数据库架构设计:核心概念的简化:主键设计
云计算时代要求偏业务类的SaaS Web应用做到:可伸缩可扩展、高可用高并发。核心在于数据库后端架构设计。怎么做到这一点呢?引入微服务,将原来的单体Web应用拆分为多个分离的服务(实质就是数据库存储层的拆分,分库分表),以及敏捷/精益的项目管理思想(前者在于适应变化保证质量去除冗余,后者在于引入核心度量指标以改善),DevOps(价值有限,今早发布频繁发布)过程管理。而Cloud Native则要
2017-08-30 17:15:13 719 2
原创 MySQL管理之道_ 性能调优、高可用与监控(第2版)-by 贺春畅-读书笔记
MySQL管理之道_ 性能调优、高可用与监控(第2版)-读书笔记MariaDB架构与历史MariaDB:用Percona XtraDB代替InnoDB(前者是后者的增强版,完全兼容后者)新功能:多源复制、基于表的并行复制集成更多存储引擎:Aria(增强版MyISAM)、SphinxSE、TokuDB(可看作ARCHIVE的升级版)、Cassandra、CONNECT、SEQ
2017-08-30 00:43:53 1800
原创 Ceph简介及评论
#分布式文件系统# #OpenStack# Ceph是一个分布式文件系统(RADOS),一个文件,首先按照固定块大小切分为Object,并给予oid(oid的唯一性实际上由客户端提供和保证);oid经过hash“近似均匀”映射到PG。(PG可以理解为DHT里面的vnode)PG再经过一个动态的CRUSH算法映射到物理OSD存储节点。理论上,Ceph还是有缺陷的,譬如hash算法导致数据分布不均匀,
2017-08-29 16:54:04 419
原创 Hadoop权威指南(第4版)-OReilly 2016 读书笔记
Hadoop权威指南(第4版)-OReilly 2016-ReadingNotes.md初识Hadoop关于MapReducemapper和reducercombiner*HDFSp48 Hadoop2: HA,备用namenode2种HA共享存储:NFS过滤器QJM(quorum journal manager)p73 副本怎么放由近到
2017-08-28 13:23:09 3362
原创 Hadoop应用架构-OReilly 2015-读书笔记
Hadoop Application Architectures-OReilly 2015-ReadingNotes.md数据建模p23 HBase基于TTL的旧数据清除(合并到新HFile时跳过)p25 为了能够在Hive外部使用metastore,一个新项目HCatalog启动了数据移动p32 HBase的扫描速度大约是HDFS的1/10-1/8,访问单个记录的
2017-08-28 12:32:15 622
原创 MySQL运维内参_ MySQL、Galera、Inception核心原理与最佳实践 读书笔记
MySQL运维内参_ MySQL、Galera、Inception核心原理与最佳实践点评:看这本书就是想知道MySQL用于互联网行业大并发场景下现在是怎么处理的。讲解MySQL核心存储源码实现原理的部分不细致,MVCC则未涉及。曾经在O'Reilly的高可用MySQL里讲到的MMM、MHA则已经被5.7官方的GTID/Group Replication和Galera Cluster方案代替
2017-08-28 00:25:32 1815 1
原创 Practical Microservices-Packt Publishing(2017) 读书笔记
Practical Microservices-Packt Publishing(2017)-ReadingNotes.md微服务架构介绍boot2docker依赖于VirtualBox?那么docker的图形化界面app呢?docker命令是否自动从hub上下载镜像?Spring Boot:从maven pom.xml文件开始吗?starter项目可以自动生成的吧?定义微
2017-08-22 01:12:00 499
原创 Mastering Microservices with Java-Packt Publishing(2016) 读书笔记
Mastering Microservices with Java-Packt Publishing(2016)-ReadingNotes.mdA Solution Approachignite v. 点燃 ~ your mind as a solution architectmonolithic n. 单一的,整个的 (vs isomorphic)开发环境配置Ne
2017-08-17 01:54:51 410
原创 用NodeJS/express-4.0实现的静态文件服务器(serveStatic插件直接支持HTTP Range请求,因此可用来做mp4流媒体服务器)
var express = require('express'), serveIndex = require('serve-index'), //只能列表目录,不能下载文件? serveStatic = require('serve-static') ; /* $ brew install node@8.4.0 不使用package.json的依赖安
2017-08-16 23:30:24 4756
原创 实施DevOps/微服务
DevOps的核心在于Delivery。尽早发布,频繁交付。而不是说Dev+Ops,开发人员兼作运维,——后者不是正确的见解。而为了做到“频繁交付”,意味着价值观的改变。DevOps意味着项目参与人员相互之间的信任、客户价值的尽早交付、频繁交付带来的快速迭代,由此需要自动化的测试。DevOps不是一种技巧、技术,而是文化、价值。DevOps属于敏捷(Agile)的其中一支。
2017-08-16 19:20:05 1239
原创 用NodeJS开发云计算时代Web服务的真正技术难点
因为前一阵子做项目用NodeJS/express开发了一个测试服务(代码现已从github删除,无非就是一个查询MySQL的REST/JSON接口的Web服务实现),一些感想:(1)基于NodeJS的Web服务开发实在不要太简单,其url routing、json序列化、express中间件配置,用起来都特别方便。OpenResty的作者春哥非常鄙视Node的嵌套callback的风格
2017-08-15 11:30:18 1472
原创 Log everything in your working time
Log everything in your working time, log everything in your work: code you write, code you review, code you just saw from open source libraries.Sometimes you could add extras: latest tech news,
2017-08-15 00:40:25 376
原创 Apress-Pro Java Clustering and Scalability(2017)读书笔记
Apress-Pro Java Clustering and Scalability_ Building Real-Time Apps with Spring, Cassandra, Redis, WebSocket and RabbitMQ (2017)-ReadingNotes.mdPart 1. Usage(配置环境和部署)Docker 1.13.0+Docker
2017-08-13 23:24:48 909
TCP/IP Sockets in Java, 2rd Edition
2008-11-28
Advanced Data Structures
2008-11-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人