主做Java 后台开发,熟悉并发与网络编程。乐于分享,爱钻研问题,喜欢技术上的挑战,属复合型开发工程师,擅长后端开发,也有一定web前端开发经验,曾独立开发多个项目,独立与全栈开发能力强。
能力说明:
精通JVM运行机制,包括类生命、内存模型、垃圾回收及JVM常见参数;能够熟练使用Runnable接口创建线程和使用ExecutorService并发执行任务、识别潜在的死锁线程问题;能够使用Synchronized关键字和atomic包控制线程的执行顺序,使用并行Fork/Join框架;能过开发使用原始版本函数式接口的代码。
暂时未有相关云产品技术能力~
阿里云技能认证
详细说明文中所讲基本都是以非阻塞IO、异步IO为基础。对于阻塞式IO,下面的编程模型几乎都不适用 Reactor三种线程模型 单线程模型 单个线程以非阻塞IO或事件IO处理所有IO事件,包括连接、读、写、异常、关闭等等。
同步阻塞式IO开发简单,但在处理IO密集的并发任务时,非常浪费CPU资源,性能低;并且,当一个进程(线程)含有多个套接字上时,同步阻塞式IO会带来问题:因为同步阻塞式IO只支持进程(线程)阻塞在一个套接字上,其余套接字上的事件将得不到及时处理。
为什么要做代理平台 微服务架构越来越流行,在一个上百号人开发的项目中,使用微服务的方式,大量模块之间通过接口调用,随之也带来了许多问题: 接口不能及时提供造成阻塞:往往客户端需要等待后台接口进入测试阶段,才能开始进行开发。
前端时间帮忙定位个问题。docker容器故障恢复后,其中的keepalived进程始终无法启动,也看不到Keepalived的日志。 strace 查看系统调用之后,发现了原因所在 1 socket(PF_LOCAL, SOCK_DGRAM|SOCK_CLOEXEC, 0) = 3 ...
这里列出一些个人在工作中常使用的各种linux命令,每一个不详细讲参数,只写经常用的参数。希望快速获得在linux命令行工作的能力的朋友可以看看。本人一直觉的,不使用linux 图形界面,以xshell等ssh客户端使用基础版linux才是学习linux命令的正确姿势。
时下SPA单页应用如火如荼,对前端乃至后端开发都带来不小的冲击和变革。笔者整理了下笔记,决定写一下以前基于iframe做单页博客的一些经验方法。 对于单页应用,笔者没有找到最官方的定义。在笔者看来,在用户操作过程中,浏览器始终不会重载整个页面的web应用,便可以称为单页应用。
此文为指针系列第二篇: C语言精要总结-指针系列(一) C语言精要总结-指针系列(二) 指针运算 前面提到过指针的解引用运算,除此之外,指针还能进行部分算数运算、关系运算 指针能进行的有意义的算术运算包括加减法运算,但不包括乘除运算。
在笔试时,经常会遇到结构体大小的问题,实际就是在考内存地址对齐。在实际开发中,如果一个结构体会在内存中高频地分配创建,那么掌握内存地址对齐规则,通过简单地自定义对齐方式,或者调整结构体成员的顺序,可以有效地减少内存使用。
预请求 参考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS#预请求 简而言之,在跨域并且尝试添加一些特殊头及自定义头的情况下,由于浏览器的安全机制,会加多一次OPTIONS预请求(询问请求),与跨域服务器协商可以设置的头部信息,可以允许的HTTP协议等等信息。
Laravel 4.2 鉴权使用加盐密码 刚开始接触laravel,发现laravel默认的鉴权模块密码并未加盐处理(密码由password_hash方法创建)。所以自己琢磨着对密码加盐。像下面这样校验密码(密码在最初创建时,也以md5(salt .
去年做过一个项目,需要每日对上千个Android内存泄漏(OOM)时core dump出的hprof文件进行分析,希望借助海量数据来快速定位内存泄漏的原因。最终的分析结果是一个类森林,因为时隔较远,只找到下面这个截图了。
MyBatis应属于一种轻量级的java持久层技术,它通过简单的SQL xml或注解,将数据库数据映射到接口与POJO。最近项目要用到mybatis,所以学习之后在这里做个总结,文中的示例以xml配置为主,mybatis也支持注解的方式。
这一天,成了我有生以来最特殊的一天。已记不清具体多少年了,十年左右了吧,在这一天,终于发生了一点点改变。
源码位于github:https://github.com/lvyahui8/dbuilder.git 。文中图片如果太小看不清楚,请右键点击“在新标签页中打开”即可看到原图 有兴趣还可以加QQ群交流:146103720 DBuilder交流群 第一章 引言 1.1 研究背景及意义 计算机软件技术发展至今,数据库已成为最广泛使用的存储格式化数据的媒介,数据库程序开发技术也日趋完善,大型的ORM框架使得数据库程序开发变得简单,并已成为操作关系型数据库的主流方式。
前言 当项目需要将一个highchart图表以邮件发送的时候,js+css形式的highcharts 图表肯定是不好做的,有查可以借助flash去执行js,但很麻烦,所以折中将highchart图表转为图片。
ActiveMQ是apache的一个开源消息引擎。可以作为即通引擎或者消息中间件引擎。 准备 下载ActiveMQ http://activemq.apache.org/download.html 进入\bin\win64双击InstallService.bat安装为系统服务。
参考 https://docs.oracle.com/javase/7/docs/platform/rmi/spec/rmi-arch2.html http://www.cnblogs.com/wxisme/p/5296441.
前言 最近在做一个OA系统,需要将大量excel中的数据录入,并且希望以后新建数据时,也能像excel那样方便。并且这个后台系统有非常多这样的表单。因此需要做一个内敛的表单控件。 上网找到一款编辑起来非常方便的控件handsontable,这个表单控件可以支持excel中的多种操作,比如多行复制粘贴,ctrl+z撤销,ctr+r重做等等。
RPC即远程过程调用,适用于集群管理,集群节点就是RPCServer,而我们发起远程调用的web服务器就是RPCClient。所以是少数rpcClient(可能一个)对多个RPCServer(集群节点)。
编写test2.c 编译成可执行文件 gcc test2.c -g -o test2 gdb test2 进入gdb调试 run命令 run命令格式 run 其中run可以简写成r,gdb中大部分指令可以简写。
源代码文件 main3.c 1 #include 2 #include "static_lib.h" 3 #include "fun.h" 4 5 int main(void){ 6 int a=2,b=3; 7 printf("add:%d s...
升级前提 源码编译需要至少要有一个可用的gcc编译器。 可以用过yum自动安装或者手动下载rpm包安装。 通过yum可以看到至少需要下面这些安装包,所以可以到许多rpm package站点中搜索下载相应的rpm包,不过版本要搞对了,这个yum搜出来的版本是针对4.4.7的。
做开发快3年了,在linux下编译安装软件算是家常便饭了。就拿gcc来说,都有不下10次了,可基本每次都会碰到些奇奇怪怪的问题。看来还是像vs、codeblocks这样的ide把人弄蠢了。便下定决心一定要好好学习下如何在linux下纯手工gcc编译c项目。
数据类型 8种基本数据类型和引用类型 数据类型 占用位数 存储方式 最小值 最大值 默认值 byte 8 1+7 -128(-2^7) 127(2^7-1) 0 short 16 1+15 -32768(-2^15) 32767(2^15-1) ...
所需工具 phpwrod 库 php_zip 扩展 下载phpword库,放到类加载路径。 安装php_zip扩展 下载地址 http://pecl.php.net/package/zip linux下载targz包,windows下下载dll linux下 1 wget http://pecl.
扩展安装 要想sftp服务端发送文件,就需要php脚本具有作为ssh客户端的能力,所以需先为php安装如下扩展 openssl openssl-dev libssh php ssh 扩展 按照下面的命令进行安装 1 rpm -qa | grep openssl 2 wget http://www.
关键字篇 volatile关键字 鲜为人知的关键字之一volatile,表示变量是'易变的',之所以会有这个关键字,主要是消除编译优化带来的一些问题,看下面的代码 1 int a = 8; 2 int b = a; 3 int c = a; 编译器认为,上面的第2句代码与第三句代码之间,没有存在对a赋值的语句,所以编译出来的汇编代码在讲a的值赋给c的时候,不会再次到内存取这个变量的值,而是取cache中的值。
最近想回过头来看看以前写的一些代码,可叹为何刚进大学的时候不知道要养成写博客的好习惯。现在好多东西都没有做记录,后面也没再遇到相同的问题,忘的都差不多了。只能勉强整理了下面写的一些代码,这些代码有的有参考别人的代码,但都是自己曾经一点点敲的,挂出来,虽然很基础,但希望能对别人有帮助。
Time Limit: 1 Sec Memory Limit: 128 MB Description 输入一些仅由小写字母组成的单词。你的任务是统计有多少个单词是“酷”的,即每种字母出现的次数都不同。
最近在做一个集富媒体功能于一身的项目。需要上传视频。这里我希望做成异步上传,并且有进度条,响应有状态码,视频连接,缩略图。 服务端响应 1 { 2 "thumbnail": "/slsxpt//upload/thumbnail/6f05d4985598160c548e6e8f537247c8.jpg", 3 "success": true, 4 "link": "/slsxpt//upload/video/6f05d4985598160c548e6e8f537247c8.mp4" 5 } 并且希望我的input file控件不要被form标签包裹。
萌生写这个代码的原因,是在使用struts2的验证框架时,总觉的有些不太灵活。当一个action中有多个表单需要处理的时候,struts处理起来就稍微麻烦一点,当校验失败时都会return "input"字符串。
public function accessRules() { return array( array( 'allow', 'actions'=>array('ajaxChangeImage','AjaxImage...
多条件组合查询主要用到yii的CDbCriteria,这个类很多oem框架都有,非常好用。 前台表单 前台查询表单效果是这样的,多个条件组,每个组里放多个input,name为数组。当任何一个复选框被勾选上,发起ajax请求,当然,最顶层的复选框勾上时判断是否有子项,有的话把所有的子项勾选上。
前天发生件很不幸的事。我在给ubuntu14.04安装NVIDIA显卡驱动的时候,想清空下一个目录,什么目录我也忘了,当时我正好切到root身份(平常我很少切root的),命令格式如下 1 rm -fr * 不知道为什么目录下的文件一个都没删掉,于是把命令换了下, 1 rm -fr ./* 然后,发现好像起作用了,卡在哪里了………… 仔细一看,不对,少了个'.',我敲成了 1 rm -fr /* 这下悲剧了,等我ctrl+c时,一切都晚了。
原理 数据结构 1 // GO 2 private static Map GO 3 = new HashMap(); 4 5 // 规范族集 C 6 private static Map C 7 ...
原理 数据结构 1 G = {'key':[v1,v2,v3],'key':[v1,v2,v3]}; 2 VN = []; 3 Vt = []; 4 FirstVT = {'key':[v1,v2,v3],'key':[v1,v2,v3]}; 也就是map里放list,同样将文法压缩,对于产生式相同的发到一个map元素里,追加到map元素对应的list后面 算法过程 1、 先求出直接满足A->a 或 A->Ba的文法的A的FIRSTVT集合 2、 扫描FIRSTVT集,将满足蔓延性公式的终结符加到非终结符的FIRSTVT集合中。
存储文法的数据结构 1 typedef struct P{ 2 char key; // 产生式左部 3 char * value [16]; // 产生式右部 4 int count; // 几组规则 5 }P...
我写JS代码,可以说一直都是面向过程的写法,除了一些用来封装数据的对象或者jQuery插件,可以说对原生对象了解的是少之又少。所以我拿着《JavaScript高级程序设计 第3版》恶补了一下,这里坐下总结笔记,属于菜鸟级别,大神请直接无视。
最近突然发现,Coding.net真是一个神奇的网站。这各网站90%的请求都是通过ajax完成的。可以发现,不管你点任何链接,网页都不会刷新,点击浏览器的返回或前进按钮也是这样,打开chrome的开发者工具的network面板可以看到大量的ajax请求被发出,每个ajax返回的只有数据,没有视图代码。
P84-P137页, 这一章看的真久,这个月事太多了。有些内容在代码注释里没提出来了 1、JS强大的数组类型,元素类型任意,提供了非常多的操作数组的方法和属性 1 /* 2 数组类型 3 */ 4 5 //stack 6 var colors = ['red','blue']; 7 colors.
P31-P82页 1、相等不相等与全等不全等 相等不相等:先转换后比较。对于只有一个对象,调用valueOf方法得到基本类型值再按基本类型转换;如果两个都是对象,则比较他们是否是同一个对象(引用或指针值比较);null与undefined是相等的,至少有一个为NaN则相等为false,不相等为true; 全等不全等:只比较。
P1-P30页 1、标签的属性 async:async(html) | async="async"(xhtml),表示立即下载脚本,但不马上执行(执行没有了先后顺序),不会暂停构建文档。 defer:defer(html)| defer(XHTML),表示立即下载脚本,但延迟到解析到标签才执行脚本。
需要做成这种样式 url请求为这样: 1 http://m03.com/plus/list.php?tid=19 这些菜单项都有对应的tid项,页面刷新后,应该将所有的菜单折叠起来,对于tid=19的菜单项,要判断他是否是子菜单,如果是子菜单,应该讲它所在的整个菜单项打开并将它自身加上active样式,否则不用打开整个菜单,直接加active样式。
jquery zoom是一款图片放大插件,经常用在商城商品页面里。 使用JQuery zoom插件,除了需要引入JQuery.js外,还要引入JQuery.zoom.js文件及jqzoom.css文件 下面是要操作的图片节点 最后加上初始化的js代码,不出意外就成了 $(document).ready(function(){ $(".jqzoom").jqueryzoom(); }); 但事情总不会这么顺利,这个问题害我忙活了半天,搞的我还以为jquery.zoom.js文件有错呢,结果把整个js文件研究了一遍,好在代码不多,用chrome调试运行一遍还是能看的懂得。
前端代码集合 这是本人在网上搜集整理的各种前端代码仓库,对于刚刚接手前端工作的人,我想会有很大帮助 有兴趣的可以到这里下载 404友好 |-----html5-css3-404-animation biji.
今天接触到一个新东西-思维导图,觉的这东西很不错,我用的是Xmind,于是将3年来的学习历程借这款工具整理了一下 这些知识,还有很多,现在依然还在学。还有半年,为了我的目标,我必须走下去
其实安装并不复杂,只要环境正常,此事并不难。但估计最坏的情况都被我撞上了,才折腾了差不多一天的 那我有哪些环境不正常呢? 破解了系统主题 Device Install Service服务未启动 下面来具体讲讲这两点带来的后果 破解了系统主题 这个问题,如果你安装的不是VirtualBox最新版VirtualBox-4.
首先,给eclipse安装上EGit 在“Help > Install new software”中添加 http://download.eclipse.org/egit/updates 两个都选上 之后首先在github上创建一个仓库 创建完成之后会得到一个https地址 之后复制这个地址,在eclipse中你要发布的项目上右键 "Team->Share Project",选择Git,然后 点击Finish 之后再在项目上右键点击 "Team->Commits" 将之前的Https地址粘贴到此处。
今晚比较闲,于是乎装修了一下博客,顺便将一块心病(怎么参加github上的开源项目)解决了,最后发个文章总结下 这些是参考的链接 http://blog.csdn.net/five3/article/details/9307041 要在gihub上参与开源项目,比较方便的是下载github的客户端,但是我去官网上下载安装怎么都不成功,FQ也不行。
.prod_description_sizechart table{margin-bottom:0;width:992px;max-width:none;border-collapse:collapse;background-color:transparent;table-layout:fixed;border-spacing:0;} .