- 博客(56)
- 收藏
- 关注
原创 软件开发中涉及操作系统知识总结—线程、进程与协程
软件开发中经常会涉及到多线程处理多任务,牵扯到进程与协程的一些知识。一、理论:1.操作系统中的线程2.操作系统中的进程3.操作系统中协程的概念二、java语言中的线程、协程1.多线程处理:(一) Tread与Runable(二)jdk1.5之后的并发包2.java中的协程
2016-12-19 07:32:49 1096
原创 软件开发中涉及操作系统知识总结—IO模型
大致有:同步阻塞式IO,同步非阻塞IO,IO多路复用,异步IO.1.同步阻塞式IO:定义:用户线程在内核进行IO操作时被阻塞。特点:简单、传统。优劣:整个IO请求的过程中,用户线程是被阻塞的,这导致用户在发起IO请求时,不能做任何事情,对CPU的资源利用率不够。2.同步非阻塞:定义:在同步阻塞IO的基础上,将socket设置为NONBLOCK。发起IO请求时可立即返回。
2016-12-06 15:26:43 1628
原创 (八)实际项目中涉及到的缓存数据结构及算法
软件开发中常用的缓存算法主要有:FIFO-先进先出算法,LRU-最近最久未使用,LFU-最近最少使用。实际项目中缓存算法对这些都有涉及。一、理论:1.FIFO:特点:先进先出,符合公平性,实现简单。数据结构:使用对列淘汰原则:如果一个数据最先进入缓存中,则应该最早淘汰掉。也就是说,当缓存满的时候,应当把最先进入缓存的数据给淘汰掉。2.LRU:特点:按照时间长短,最近最久
2016-12-06 12:41:54 4045
原创 (七)实际项目中常用的加密算法及使用场景
一.支付接口常用加密算法:例如支付宝接口对接中经常涉及到:md5、 rsa两种算法。各大银行接口中经常使用MD5算法对调用接口参数进行签名防篡改。1.MD5(1)MD5定义:MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。
2016-10-27 09:27:44 9906
转载 (六)实际项目中分布式ID生成算法
一、需求缘起几乎所有的业务系统,都有生成一个记录标识的需求,例如:(1)消息标识:message-id(2)订单标识:order-id(3)帖子标识:tiezi-id这个记录标识往往就是数据库中的唯一主键,数据库上会建立聚集索引(cluster index),即在物理存储上以这个字段排序。这个记录标识上的查询,往往又有分页或者排序的业务需求,
2016-10-26 17:26:25 4881
原创 (五)实际项目中分布式系统设计涉及算法总结
paxos算法:basic paxos(读帕克索斯)实现的,另外一种是基于fast paxos算法。一致性哈希算法: 一致性哈希算法是分布式系统中常用的算法。比如,一个分布式的存储系统,要将数据存储到具体的节点上,如果采用普通的hash方法,将数据映射到具体的节点上,如key%N,key是数据的key,N是机器节点数,如果有一个机器加入或退出这个集群,则所
2016-10-26 17:12:36 1857
原创 (四)实际项目中负载均衡调度算法实际应用
部分内容参考网上,如有问题,请留言。(一).HAProxy的算法有如下8种:一、roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的;二、static-rr,表示根据权重,建议关注;三、leastconn,表示最少连接者先处理,建议关注;四、source,表示根据请求源IP,建议关注;五、uri,表示根据请求的URI;六、url_param,表示
2016-10-26 17:05:44 5965
转载 如何高质量的完成产品需求开发
作为一个互联网前端老鸟,这么些年下来,做过的项目也不少。从最初的我的QQ中心、QQ圈子,到后面的QQ群项目、腾讯课堂。从几个人的项目,到近百号人的项目都经历过。这期间,实现了很多的产品需求,也积累了一些经验。这里稍作总结,希望能给新入行的前端小伙伴们一些参考。1.做好需求的关键点要说如何做好一个需求,展开来讲,可以写好几篇文章,这里只挑重点来讲。最基本的,就是把握好3W:what、wh
2016-10-26 09:07:17 2836
原创 (三)实际项目中数据结构—队列的应用
1.队列:一种数据结构,有非阻塞对列和阻塞对列特点:先进先出两种典型操作:队尾添加、队头删除非阻塞对列:当对列满或空时进行插入或者读取删除操作,抛出异常或者返回false,不对当前线程阻塞,没有同步或者唤醒策略。阻塞对列:当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞。2.阻塞队列使用:多线程协调,合作线程
2016-10-25 10:06:26 5122
原创 (二)实际项目使用的开发语言中排序算法实现
一.常用排序算法:冒择路希快归堆。数组排序算法时间复杂度对比:算法时间复杂度空间复杂度 最佳平均最差最差QuicksortO(n log(n))O(n log(n))O(n^2)O(log(n))MergesortO(n log(n))
2016-10-19 13:18:59 1845
原创 (一)实际项目中树形数据结构与递归算法应用
在每个项目中都涉及到菜单的展示,在这里普遍用到了树形数据结构和递归算法:举例如下:建表:1.模拟效果图:2.代码片段:3.数据库中运用sql进行树形查询:mysql比较麻烦,稍后展开oracle树形查询,使用Start with...Connect By子句递归查询,一般用于一个表维护树形结构的应用。创建示例表: CREATE
2016-10-19 11:25:11 3192 2
原创 自己动手搭建ava通用开发框架之一—底层框架搭建
自己动手,筹划java版通用开发基础框架,功能点如下:1.技术选型:基于spring mvc3 mybatis ehcache2.架构及功能:采用传统mvc架构,如图所示:(1)包分层:dal (dao model) 、service 、 controller、 view 四层数据访问层M:dao层:mybatis获取插入的自增主键,一对多,多对一示例mode
2016-04-07 13:53:49 7569 3
原创 android开发系列之一—创建一个简单的webapp
怎么样把html5网站编译为一个app?做了以下尝试:1.用wex5直接把一个html5网站网址如:http://115.28.89.67:8097/wap-interface/ 打包,之后发现问题:(1).页面加载很慢(2)无法回退页面(我们网站好多页面没有回退按钮),无法退出整个web app.2.用android webview套壳,之后发现问题:(1)个别js无法加载运
2016-03-24 10:44:03 3759
原创 用java开发简易接口测试工具
简易接口测试工具,类似postman:1.功能特点:支持多种请求头:ie firefox chrome iphone android支持自动登录后测试测试接口网址和参数自动记忆2.界面截图:(1)模拟登录:(2)请求web service:
2015-11-13 13:31:40 3388 2
原创 用java开发跨平台简易服务器站点监控程序
本服务器站点监控特点:1.跨平台:uniux及linux下为命令行方式启动 windows下托盘界面,实时提醒。2.支持邮件、短信、android端推送进行通知。3.发现站点无法访问,先发两封邮件(或短信、推送android消息),然后,守护线程继续进行监控,发现网站恢复访问后,再发一封网站恢复邮件(或短信、推送android消息)。效果截图: 1.控制台打印:2.l
2015-11-13 10:27:36 1688
转载 35 岁前程序员要规划好的四件事
35 岁前程序员要规划好的四件事2007-02-13 08:481556人阅读评论(0)收藏举报论坛里经常可以看到关于 35 岁程序员的生涯询问, 他们之中有些人写了十年代码, 有些人则是因为对编程发生了兴趣, 中途转行, 以下四点是给那些 30 - 35 岁程序员的建议:* 照顾自己健康以前, 我认为 "钱" 是很重要的, 俗话说的好: "钱不是万能, 但没有钱万万不
2015-11-11 20:45:45 586
原创 java知识系列之读写cookie
j2ee的cookie操作:1.创建cookie:cookie = new Cookie("username","abc");cookie.setMaxAge(60); //0立即删除 -1浏览器关闭删除response.addCookie(cookie);2.读取cookie,引用了reqeust的方法:String result = nu
2015-11-11 20:42:23 1011
转载 拿什么来衡量程序员的生产力?
所以现在你知道了吧,原来我们并没有办法来衡量程序员的工作效率。老实说,我们现在还没有明确的方法可以衡量程序员以及整个团队的生产力。我们可以确定谁可以依赖,谁比较努力,但却无法证明这些猜想,也没有量化的方法。我们的代码写得多,所以我们的生产力更高既然开发人员的工作就是写代码。那么,何不通过衡量代码的多少来衡量其生产力呢——看看他们写了多少行代码?但是,不同编程
2015-02-08 09:48:47 1167
转载 成为优秀程序员的10个有效方法
一个优秀的程序员就是那种即使是过单行道都要往两边看的人。——Doug Linder作为一个在IT行业的软件程序员,每天促使我去上班的动力就是对编程的乐趣和激情。但是为了激发乐趣并获得永恒的快感,我们需要学习和遵守一些基础知识以成为一名优秀的程序员。当然我总结的这些东西没有那么神,你说你要想学了之后就一定可以成为优秀程序员,那是不可能的。这只是从我的经验角度出发提供的一些捷径。对
2015-01-07 08:17:31 669
转载 Yao Yu:谈Twitter的百TB级Redis缓存实践
摘要:在Twitter工作的数年时间,Yao见证了缓存服务的扩展之路——从1个项目到上百项目的使用。为了支撑如此庞大的缓存体系,Twitter使用了成千上万台服务器,多个集群,以及过百TB内存。【编者按】文章内容是HighScalability创始人Todd Hoff基于Twitter工程师Yao Yu “Scaling Redis at Twitter”演讲的总结。在演讲中,Yao从
2014-11-11 21:02:13 1007
转载 李平:大型网站的灵魂——性能
介绍了大型网站的演化过程,期间穿插了一些技术和手段,我们可以从中看出一个大型网站的轮廓,但想要掌握设计开发维护大型网站的技术,需要我们一步一步去研究实践。所以我打算写一个系列,从理论到实践讲述大型网站的点滴,这也是一个共同学习的过程,希望自己能坚持下去。系列大概会分为两部分,理论和实践,理论部分尽量通俗易懂,也要讲一些细节。实践部分会抽取一些技术做实践,将方法、解决问题过程分享出来。本文将讲述大型
2014-11-11 20:59:52 1469
转载 徐汉彬:亿级Web系统搭建——单机到分布式集群
摘要:随着数据暴增,单服务器开始疲于应对海量用户的访问。自本期《问底》,徐汉彬将带大家开启异地跨集群分布式系统打造,本次关注的重点则是架构从单机到分布式集群的转变。
2014-11-11 20:57:06 1346 1
转载 每个人都身兼数职,微型团队该如何管理?
摘要:微型团队存在于大部分企业,但是它的建设容易成为企业管理盲点。作者阐述了通信行业中微型团队工作中遇到的问题,强调了个体在微型团队发展过程中的重要作用,从管理角度分析了解决这些团队存在问题的根本之道。微型团队存在于大部分企业,但是微型团队的建设容易成为企业管理的盲点。本文结合笔者多年基层管理经验,立足基层研发人员,阐述了通信行业中微型团队研发人员日常工作中遇到的各种具体问题,强调了个
2014-08-20 16:59:26 940
转载 程序员成熟的标志
程序员成熟的标志783 人浏览暂无评论4程序员在经历了若干年编程工作之后,很想知道自己水平到底如何?自己是否已经成为成熟的程序员?虽然程序员会对自己有一个自我评价,但是,自己的评 价和社会的评价、专业的评价会有差异,所以程序员自己并不能肯定这个评价。现实中,除了各种证书之外,很少有人会专门给出一个程序员的成熟度的评价。人们 往往是偶发性地就事论事地对程序员的工作作出好与
2014-08-19 08:46:25 637
转载 大型网站架构演变和知识体系
之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么一个网站需要那么复杂的技术,于是有了写这篇文章的想法,在这篇文章中 将阐述一个普通的网站发展成大型网站过程中的一种较为典型的架构演变历程和所需掌握的知识体系,希望能给想从事互联网
2014-08-17 09:52:17 1388
转载 编程开发中最浪费时间和资源的7个错误
我在当地几家公司担任过项目经理,项目主要关于一些用PHP制作的中小型网页。在那段历程中,我见识了很多公司常常会犯这样或那样的错误,既浪费时间又浪费资源。下面我具体谈谈在这些错误中最不可饶恕的7个:1.不问客户究竟想要什么一般而言,在签署合同阶段都会有一份关于原始需求的标准性文件。而我们常常会犯的最大的错误之一就是想当然地认为,这就是客户的想法。我的建议是,和客户那边所有的核
2014-08-17 09:44:55 665
转载 程序员应戒除一些坏习惯
谈习惯的书很多,但基本上是在告诉你,什么样的习惯更好。但在考虑改善表达力时,却要做逆向思维,在这里认清什么样的习惯更差是更加关键问题。很少有人会期望程序员八面玲珑,因此很多程序员的习惯都是可接受的,那么不可容忍的到底是什么?我们来看一个每天都会发生的例子:A是一名程序员,每当他宣称自己的工作完成时,你总是能在他的代码或者文档中发现缺陷。比如:代码中不遵守大家约定好的编码规范,使用文
2014-07-18 14:12:53 887 1
转载 皇冠上的珍珠 统治世界的十大算法
皇冠上的珍珠 统治世界的十大算法软件正在统治世界。而软件的核心则是算法。算法千千万万,又有哪些算法属于“皇冠上的珍珠”呢?Marcos Otero 给出了他的看法。什么是算法? 通俗而言,算法是一个定义明确的计算过程,可以一些值或一组值作为输入并产生一些值或一组值作为输出。因此算法就是将输入转为输出的一系列计算步骤。—Thomas H. Cormen,Chales E. Lei
2014-06-10 17:55:27 1036 1
转载 java知识系列之JVM性能调优
收藏一篇文章http://blog.csdn.net/chen77716/article/details/5695893,用以备用最近因项目存在内存泄漏,故进行大规模的JVM性能调优,现把经验做一记录。一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代(Perm) 其中New和Tenured属于
2014-02-26 15:10:27 1401 2
转载 java知识系列之String.format
在JDK1.5中,String类增加了一个非常有用的静态函数format(String format, Objece... argues),可以将各类数据格式化为字符串并输出。其中format参数指定了输出的格式,是最复杂也是最难掌握的一点,而argues则是一系列等待被格式化的对象。该函数对c语言中printf函数的用法进行了一定的模仿,因此有c语言基础的人学起来会轻松许多。下面我们着重讨论一下
2014-02-10 10:15:39 808 1
原创 java知识系列之json总结
1.json字符串与java对象之间的转换:字符串转对象:JSON.parseObject(String text,ClassT> clazz);对象转字符串:JSON.toJSONString(Object object);字符串转list:List list = JSON.parseObject(String text,new TypeReference(ArrayList));
2013-12-21 21:30:40 1209
转载 数据库表分割技术浅析(水平分割/垂直分割/库表散列)
数据库表分割技术包含以下内容:水平分割/垂直分割/库表散列.一.水平分割 什么是水平分割?打个比较形象的比喻,在食堂吃饭的时候,只有一个窗口,排队打饭的队伍太长了,都排成S型了,这时容易让排队的人产生焦虑情绪,容易产生混乱,这时一个管理者站出来,增加多个打饭窗口,把那条长长的队伍拦腰截断成几队。更形象一点的理解,你拿一把“手术刀”,把一个大表猛的切了几刀,结果这个大表,变成了几个小
2013-12-01 19:05:24 1037
转载 大型互联网站解决高并发的常见策略
一个运营的系统在正式上线后将会遇到各种层级的高并发请求,因此我们必须对此做出相应的策略和技术解决方案,首先我们需要认清系统的高并发由3个层面导致:1.传输层大量用户对系统请求后,将会造成网络带宽和Web服务器的I/O瓶颈。2.计算层接收大量用户请求进行计算,将会造成业务服务器和业务支撑服务器的瓶颈。3.存储层传输层和计算层将会产生大量的数据,数据量暴
2013-12-01 17:52:54 1983
原创 用C#构建一个简单的采集系统之二—采集任务实时显示
2.为了能实时显示每个任务的运行状态,采用TabPage 及TabControl 控件。设计图如下:添加四个控件: private void treeView1_MouseUp(object sender, MouseEventArgs e) { try { if (e.Button == M
2013-08-07 07:57:52 3120
原创 用C#构建一个简单的采集系统之一-主界面设计
最近,应客户的要求,用C#构建一个简单的采集系统,方便以后扩展使用,欢迎大家批评指正。主界面如下:1.功能简述:A.采集几个大的网站上的家电交易信息。B.多任务实时调度,实时显示每个任务运行信息。
2013-08-06 06:37:57 1927
转载 java知识系列之线程
工作总往往会遇到异步去执行某段逻辑,然后先处理其他事情, 处理完后再把那段逻辑的处理结果进行汇总的产景,这时候就需要使用线程了.一个线程启动之后,是异步的去执行需要执行的内容的,不会影响主线程的流程, 往往需要让主线程指定后,等待子线程的完成. 这里有几种方式.站在主线程的角度,我们可以分为主动式和被动式. 主动式指主线主动去检测某个标
2013-08-06 06:05:52 1412
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人