- 博客(60)
- 资源 (10)
- 收藏
- 关注

原创 “知了”来了,西电的小朋友们看过来!
经过9个月断断续续的开发,“知了”终于完成了第一版的开发,目前还未上线处于内部测试状态。快来当一波内部测试吧~ 说了这么多,还不知道“知了”是什么? 我们的APP下载二维码 我们都是高校学生,我们都知道在与我们学习或工作相关的重要信息的获取方面,我们都是刷着各种各样的网站。(下面我讲的东西,请自行脑补图片,我好想要一个美工运维!) 【招聘时我们需要去瑞思逛,我们要去BAT官网逛,学校的
2016-06-24 12:26:01
6245
3
原创 如何实现一个直播APP
写在前面直播从16年兴起到目前的趋于稳定,期间APP市场上出现过多个直播产品,史称“千播大战”,我有幸参与其中的一款产品(腾讯NOW直播),并经历了从上线到优化再到探索的整个过程。因为是在腾讯所以这款产品的开发有着很深的腾讯印记,我不想来介绍NOW是怎么设计和实现的,我想跳出来讲讲,如果我是这款产品的负责人,那么我要怎么设计,我会怎么实现,我要怎么玩。总体结构技术上面分为后台,客户...
2018-08-11 17:42:33
3892
1
原创 Netty源码分析-Bootstrap
Bootstrap 是 Netty 提供的客户端和服务器启动入口类,其提供了完善的服务配置参数,供开发者合理化配置自身服务。源码分析将从Bootstrap开始着手,逐个分析Netty的各个核心组建及设计理念。写在前面Java NIO已经将Java对于网络IO的操作提供了完善的API,Netty只是将其包装更方便使用,因此Netty源码分析的重点应该是Java NIO,因此需要先行了解Jav...
2018-08-11 10:00:41
421
原创 Kilim调度流程
调度流程中有三个主要的类Scheduler-调度器WorkThread-调度运行承载线程Task-类似于Thread,协程的体现者主题流程如下: Scheduler关键属性有:public static int defaultNumberThreads;public LinkedList<WorkerThread> allThreads = new ...
2018-08-07 10:30:40
1463
原创 流程审批系统设计思路及实现方法
背景流程审批系统是一个很常见的系统,包括我们在日常权限申请,订单状态流转等很多场景都会接触。其核心的点有两个:1.状态流转 2.流程驱动我们以我们常见的流程审批为例,比如我想向上街申请一台新电脑,解释整个流程。 状态流转:也就是我们从发起审批流程到上级审批再到最终通过或者驳回。 流程驱动:流程驱动既是我们点了申请之后,后续操作我们只需等着就好,一条审批会按照既定的过程完成审批,对于接入...
2018-08-04 16:25:34
49048
2
原创 Mina主体逻辑流程
Mina也是一个one loop per thread的Reactor框架,关于这部分的知识可以看看《muduo网络库》这本书,Mina的优化什么的我看的不是很仔细,而且很多看不懂。这一篇博客主要从上层代码走一下Mina的主要逻辑流程。简单介绍Mina有几个主要的组件,分别是IoService,IoBuffer,IoFilter,IoHandler,IoSession,IoFuture(这部分简要介
2017-05-02 22:29:49
1089
原创 LSM demo配置
使用LSM做一个系统的钩子,是我在本科毕设的核心。具体的代码已经没有了,但是这个LSM的demo可以帮助初步的配置,之后的代码实现主要依赖于LSM提供的钩子,并且需要对task_struct和inode_struct有一定的理解。/** Test Linux Security Module* This program is free software; you can redistribute
2017-03-27 15:53:47
1749
原创 ibatis bindingexception invalid bound statement
最近在原来的maven项目中的dao子项目中加入Redis时,新加入的redisDAO在执行的时候出现了这个bugibatis bindingexception invalid bound statement因为我是使用的注解注入的Service,所以突然爆出Mybatis的错误就有点不明白为什么。 其实一般的这个错误原因都是你的配置或者一些方法没有写对,因为你在使用Mybatis的时候声明的In
2016-11-23 20:47:43
635
原创 Spring大致流程梳理【未完结】
资源加载 从xml到documentResource 资源描述 xml文件public static void main(String[] args) { ClassPathResource resource = new ClassPathResource("META-INF/beans.xml"); BeanFactory beanFactory = new XmlBeanFact
2016-08-26 11:46:10
703
原创 C以备面试之用[未完结]
const修饰最近的字符const int *a;int const *a//*a=5 errint *const a// a=malloc() err指针数组 && 数组指针最后是什么就是什么,数组就是数组,指针就是指针int *p[10] //数组int (*p)[10] //指针static首先是存储位置变化,然后是限制使用范围局部静态变量:默认初始化地址0x00;只会初始化一
2016-08-26 11:39:55
791
原创 Webx RPC 内部重定向的bug
重定向是由RequestContext提供的一项功能,需要在webx.xml中配置<rule pattern="^/****/docs/(\w+)"> <substitution uri="http://**** flags="L,R"> </substitution></rule>其中去过去掉flags中的R将会是内部重定向,而不是302外部重定向。但是我们在实际的使用过程中发
2016-08-18 21:27:30
1289
原创 Webx的执行流程
Webx的总体流程 WebxFrameworkFilter->AbstractWebxRootController->WebxRootControllerImpl->WebxControllerImpl->Pipeline具体执行流程Webx的主要流程,由于Webx是基于Servlet的Filter开发的 Request Contexts服务该服务负责访问和修改request和response
2016-08-18 21:25:43
2827
原创 SpringExt 源码学习
大致了解SpringExtSpring Schema提供了我们便捷的初始化bean的方法,我们不需要再去写构造器注入或者属性注入直接使用类似的如下配置代码即可完成bean的初始化<resource-loading id="resourceLoadingService" xmlns="http://www.alibaba.com/schema/services/resour
2016-08-16 15:20:22
1429
原创 [知了开发]“知了”优化 - WebMagic 调优
在之前的博客中也分析了WebMagic的基本所有的主要代码,在我们的项目中也遇到了很多由于WebMagic的问题而导致真个服务器性能大范围的下降,那么今天说说这些bug使用场景我们的应用需要在每天额固定时间启动爬虫,然后去爬,很明显我们需要从昨天的爬取结果中增量爬虫,这个增量是相对于昨天,而不是一次爬虫中的过程中那么怎么存储昨天爬取的url呢。使用数据库很明显我们能够在pipeline中存储url,
2016-08-12 22:43:38
3066
1
原创 Maven依赖排查
在最近的开发过程中发现的一个bug,代码如下:private Object createBean(String serviceName,String serviceVersion) throws Exception{ HSFApiConsumerBean consumerBean = new HSFApiConsumerBean(); consumerBean.setInterfac
2016-08-12 22:25:56
1506
原创 结合Spring IOC 看Webx & HSF & Spring MVC
写在前面Spring IOC这个部分还是很难的,我基本有了一年多的使用经验才慢慢开始看源码,但都是头大无比,一定要静下心慢慢看,就像一杯苦茶,越品越有味道!Webx是阿里开源的web框架: http://www.openwebx.org/docs/Webx3_Guide_Book.html HSF是阿里的IOC大致流程IOC容器的两个最主要的两个接口BeanFactory和Application
2016-08-12 22:19:35
2380
原创 Java 8 再不知道就老了
Java 8 特性介绍1.简介毫无疑问,Java 8是自Java 5(2004年)发布以来Java语言最大的一次版本升级,如果不学习,你会怀疑自己面前的代码是不是Java。Java 8带来了很多的新特性,比如编译器、类库、开发工具和JVM(Java虚拟机),但最最主要的还是函数式编程。接下来将会结合代码去展示Java 8的新特性。下面主要介绍Java 8的最显著特性: 接口增强 La
2016-08-11 09:01:44
7494
原创 [源码学习][知了开发]WebMagic四大组件-Downloader,Pipeline,PageProcesser
写在前面关于WebMagic这应该是最后一篇博文了,这一篇相对也简单一些Pipeline & PageProcesser这两部分是应该程序员自己实现的部分,因为PageProcesser关乎如何解析页面而Pipeline则是存储,推荐使用OOSpider也就是注解式编程。Downloaderpublic interface Downloader { /** * Downloads w
2016-07-25 11:16:03
2305
原创 [源码学习][知了开发]WebMagic四大组件-Scheduler
写在前面先看看文档对于Scheduler的作用介绍 https://code4craft.gitbooks.io/webmagic-in-action/content/zh/posts/ch1-overview/architecture.html 之前我们也介绍过了,Scheduler主要负责爬虫的下一步爬取的规划,包括一些去重等功能。在主流程中也看到了Scheduler,现在来具体结合源码分析
2016-07-24 16:44:22
2937
原创 [知了开发]“知了”优化-整体架构
写在前面知了开发的整体架构在前面的博客中有介绍: http://blog.youkuaiyun.com/wsrspirit/article/details/51960147 先看一下,然后再说优化 [优化这种东西会不定期的更新,毕竟也是一点点摸索出来的]最重要的既然是优化,那么一定存在着不理想或者不可用,这些都是实际开发过之后才遇到的问题,也就是说在我们想着优化之前,你是否认真的接触过你项目的每一部分开发
2016-07-24 12:11:24
995
原创 [源码学习][知了开发]WebMagic-OOSpider
写在前面之前两篇博客基本上讲完了Spider,四大组件还有三个包装类没有讲,这篇博客讲讲一下OOSpider,也是对Spider的一个补充,但是我觉得OOSpider是WebMagic的一个很强大的功能,提供了注解的爬虫,官网地址: http://webmagic.io/docs/zh/posts/ch5-annotation/README.html例子先看一下怎么使用注解编写爬虫
2016-07-21 09:35:07
5849
原创 [知了开发]“知了”APP整体设计
写在前面“知了”这款APP的业务逻辑是技术框架的前提,如果还没有用过“知了”的,不如先试试 http://blog.youkuaiyun.com/wsrspirit/article/details/51751568 业务有两个主要场景,主要是按照学生在校园生活的社交维度划分,一个是以整个学校为单位,一个是以院、班等团体为单位。学校为单位的消息来源主要是整合常见网站信息,而团体单位则依赖学生主动添加组织并主动
2016-07-19 23:06:03
1662
原创 [源码学习][知了开发]WebMagic-CountableThreadPool&SpiderMonitor
写在前面今天继续来看WebMagic,先放过四大组件以及三个包装,我们看看边边角角的东西,也算是对Spider的一个补充Spider剩下的CountableThreadPool在上一篇的Spider中我们一定注意到了threadpool这个变量,这个变量是Spider中的线程池,具体代码public class CountableThreadPool { private int threadN
2016-07-19 10:18:14
2447
原创 [源码学习][知了开发]WebMagic-总体流程源码分析
写在前面前一段时间开发【知了】用到了很多技术(可以看我前面的博文http://blog.youkuaiyun.com/wsrspirit/article/details/51751568),这段时间抽空把这些整理一下,WebMagic是一个Java的爬虫,中国人写的,代码很模块化,也很利于二次开发,但是我们在使用的过程中也遇到了一些问题,这些问题我会在最后的博客中介绍,最近的博客将详细的走一下WebMagic的
2016-07-18 18:10:35
5648
1
原创 阿里巴巴实习一年之后的感悟
2016 说说一年之前的我我之前写过一篇《阿里巴巴实习浅谈》。前面说了那么多,其实那两个月我真正掌握的东西很少:SpringMVC基本的逻辑,RPC,反射,Http。于是在回来后,我就下定决心一定要把我在实习终于到的知识都应用起来,于是开始做“知了”这个APP,做了有接近8个月了,断断续续,也有跟小伙伴们一起合作。 实验室中也一起合作了一个“IM”APP。 这些项目中我都是leader,负责整个
2016-06-21 20:13:58
1687
原创 极光推送Java SDK源码学习
前一段时间使用JPush搞了一下推送,服务器用的SpringMVC,所以想看看他的SDK源码。结果呢,一般般,没有很惊艳的感觉,看别人的代码总想去批评,这不好,但是有点失望吧~~JPush核心有两个部分,一个是JPushClient,一个是PayloadJPushClient内部有四个属性PushClient,ReportClient,DeviceClient,ScheduleClient。 这四
2016-06-04 11:03:21
7800
原创 平衡二叉树创建,左旋,右旋,左平衡和右平衡
有了上一篇的二级指针优化,平衡二叉树的左旋,右旋,左平衡和右平衡就会简单一些。强烈建议你先看一下: http://blog.youkuaiyun.com/wsrspirit/article/details/51374117 目前代码只有创建,删除还没有加入。没有注释,不好意思。你可以找其他的博客了解~C实现#include <stdio.h>#include <stdlib.h>#include <st
2016-05-13 16:12:47
2318
原创 使用二级指针简化臃肿的代码
单链表的删除简直就是最最基础的知识了,从大二上数据结构到今天我一直都记得如果要删除单链表,那就一定要判断是不是头结点,教科书都是这么教我们的,简单写个例子while(cur->next->value != key) cur = cur->next;if(cur == head) //头结点else //不是头结点 cur->next = cur->next->ne
2016-05-11 14:37:12
1100
原创 指针数组&数组指针的分配内存及函数参数 C语言版
最近写代码总是被基础知识卡住,十分耽误时间,今天又卡住了。所以下定决心一定要弄清楚这个问题,然后不好的是网上的资料总是解决的并不清楚,总是在纠结什么是指针数组什么是数组指针,看了《C缺陷和陷阱》也没有我想要的东西。要么就是C和C++混为一谈,new int[5]这种语法C肯定是错误的,所以找个机会总结一下,然后希望以后不要再栽在基础上。定义指针数组:int p[10] 数组指针 int(*p)[5]
2016-04-29 20:20:41
11966
5
原创 Mybatis实现insert获取自增id
先说明我用的是MySQL,其他的没使用过,也帮不上了~~ 首先要先解决思维误区吧,我在搜索了一些资料之后以为写一个这样的xml<insert id="insertNoticeMessage" parameterType="BaseNoticeMessage" useGeneratedKeys="true" keyProperty="msgId" keyColumn="msgid">insert就会
2016-04-27 13:17:02
7758
1
原创 Android Mina 与Linux TCP通信-1
之前用Linux写过一个服务器,原本Android是别人做的结果一甩给我了。。于是开始前后端一起做。 通信协议基本已经确定,下面就是通信了。Android的TCP框架有两个框架可以选择Netty和Mina,为此我还专门看过博客,虽然并没有什么实质性进展。。大家对Netty比较看好,虽然这两个都是一个作者,于是使用Netty,资料其少无比!!英文的也不多。。于是弃坑了,Android Mina还是较
2016-04-21 22:23:19
1432
原创 极光推送接入-客户端
最近看了看客户端推送,本想着自己实现的,但是任务量还真不小,所以就想着使用现成的,还好极光推送并不收费,让我这个穷逼开心了。 那个三分钟接入的demo基本没什么问题,就是用eclipse export gradle的时候目前版本里是有gradle相关文件的,删除就可以。 我想各位应该都不是在这个example demo上面开发的,而是想使用它的接口加入目前代码就行了,我也是这样,由于粗心也好,文
2016-04-18 18:06:04
2957
原创 大整数加减乘除 c实现
最近准备一下笔试,发现自己的算法方面的编程有点弱鸡,菜的抠脚。前几天做了腾讯的一个笔试模拟,需要实现的是大整数的乘法,于是乎就想着把加减乘除都实现了。网上也参考过,主要给思路和坑。最主要的 既然是大整数,那么一定是数组存储,不可能是long等。 使用字符char可以完成计算,但要减去’0’ 之后要加回来加法 分配一个比两个加数大1位的字符串数组,作为返回 使用加数中位数少
2016-03-28 23:36:35
1565
原创 阿里云使用之ssh远程Ubuntu服务器的数据库乱码问题
如题,最近买了一台阿里的ecs服务器,但是我在ssh端插入数据库中的数据出现了乱码,于是开始了一番折腾之路。这个问题的原因是多种多样的,网上的解释往往只针对一种,所以我们需要弄清楚到底哪里出了问题!(我申请的是Ubuntu14.04 对应的配置文件路径会有差异,各位要根据自己的找) 画个图更清楚 我这里用的windows作为ssh的发起端,如果你用linux就要“因地制宜”,这里面任何一步出
2016-03-15 11:08:07
1559
原创 Mybatis 使用<if test/>实现选择插入
最近遇到需要需要根据 areaId的范围进行插入,在使用中使用when test实现数据范围选择,之前在test中使用 大于号 > 是没有问题的,例如<when test="praise > 0">于是根据编程的想法,就写了这个<if test="praise > 0 and praise <100">结果编译出错,说Mybatis不支持小于号,也还是挺蒙啊,为什么大于支持,小于就不支持了。。 当
2016-03-11 17:04:39
9344
原创 Java 逆变、协变和类型擦除
最近开发中遇到一些问题,我在父类的基础上定义了不同的子类,简单说public class Father{ private int a; private int b;}public class ChildFirst extends Father{ private String aa;}public class ChildSecond extends Father{
2016-03-10 12:04:44
1203
原创 TCP协议下 Linux Server开发(1)-Reactor Proactor
首先说一下这一系列的blog主题这主要是去年赶得一个项目,需求简单如下:类似于QQ,App输入消息(图片,语音,文字,视频),Server实现消息的转发,用户登录,用户心跳,离线消息,消息漫游,消息的断点续传。但是由于项目保密,所以具体业务实现我已经去掉,剩下的是一个Server的服务框架,也就是我最近想说的,如何下手写个Linux的Server。1.协议选取Http协议在移动开发非常好用(在我的另
2016-03-06 21:44:40
1238
原创 Android AsyncTask onProgressUpdate 方法的些许研究
我们都知道我们可以在asyncTask中写一些异步的方法,是因为Android不允许在主线程(MainThread)中做网络访问等一些耗时的操作,但是我们也希望能在AsyncTask中更新UI操作怎么办呢,可以看看这篇: http://stackoverflow.com/questions/23978400/how-to-update-ui-from-asynctask 简单说 onPreE
2015-12-17 21:01:48
4494
原创 Android Scrollview+Listview 实现不同条目点赞并计数功能及原理分析(3)
过了有点久,还好上次把代码发上去了,不会影响。现在我们来解决最后一个问题 点赞后计数改变这个问题难在哪里呢,就是我们需要在自定义的adapter中设置每个item长什么样子,每个子控件的clickListener也需要在这里设置,但是有时候点击事件需要改变外层的页面属性。比如我在item中有一个button,点击它,整个屏幕就暗了,显然需要在外界得到这个button的click事件。解决这个问
2015-11-23 23:53:12
1975
原创 Android Scrollview+Listview 实现不同条目点赞并计数功能及原理分析(1)
兑现我的承诺,开始了Android的学习,实现的demo目的很明确,就是对listview里面的内容点赞,然后赞的数目改变。 我先说一下将会解决的问题,没准你也遇到了 Listview在Scrollview中无法显示完全子view中的button等劫持了listview中item的clickListenerOnClickListener接口的onClick方法中的View view参数究竟是什
2015-10-28 22:40:37
2082
1
Android Scrollview+Listview 实现不同条目点赞并计数功能及原理分析--加实现方式
2015-11-23
Android Scrollview+Listview 实现不同条目点赞并计数
2015-10-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人