我的IT历程学习备忘录

     此学习备忘录只是我工作之外收集的一些资料,只希望能够扩大IT从业人员的知识面。IT的知识很繁多,有此只需要了解知道。此备忘录有硬件方面的,也有软件方面的,也有大IT公司要求的技能。作为新手你可以阅览一下,知识有哪些知识。作为高手,你可以补充一下自己的知识面。

 

企业级项目实战(带源码升级版本)地址: http://zz563143188.iteye.com/blog/1825168

 

1.学习 数据结构 算法导论  编译原理 操作系统  html 5  单片机 
   
2.把单片机的流程画出来,这样就知道怎么执行的
 
3.中断,串口通信,并行,外设,定时器,rs232协议 spi 
 
5.编译原理,算法导论,tcp/ip协议,关系数据库原理,计算机组成原理。
 
linux触摸屏的技术,串口接收数据的原理
电子,机械的软件,编程语言的  
 
1.代码规范,项目管理,版本控制,架构分析
 数据库,服务器,缓存等等,lib的管理   python  ruby
 
霸气不失婉约,委婉中透着沧桑。
 
开放平台发展的过程中技术也不断的在发展,从最早的网站服务化(SCA,OSGI),平台授权(OAuth),服务流控与服务隔离(Web容器异步化服务处理),服务生命周期管理(服务接入与文档,SDK自动化等),到后来的平台透明化(海量流式数据即时分析),多样化服务(ATS异步大任务处理服务,Streaming API流式数据推送服务,支持并行和串行化的QL服务),无线客户端的安全及服务易用(IOS、Android),JS组件(支持网站接入)。
如果要提供一个优质的公共API接口, 你至少需要做到以下六点
  • 授权开发人员的规则
  • 注意限流控制
  • 确定是否要收费
  • 通常,如果收费,那么请求越多,钱就越多——你需要准备一个计价表
  • 利用好工具对服务端进行监控
  • 好的技术和帮助文档
我曾开放一个自己做的API,仅仅是一个REST调用
API,我发现它在HackerNews、 Reddit和Twitter上都受到了不同的关注
MVC是一个很常用的程序开发设计模式,M-Model(模型):封装应用程序的状态;V-View(视图):表示用户界面;C-Controller(控制器):对用户的输入作出反应,创建并设置模型。
为了解决上述问题,LinkedIn的软件工程师Conrad Irwin开始使用另一种模式:MOVE采用了一个新的模型:MOVE:Model,Operation,View and Event。日前Conrad Irwin在个人博客上分享了关于这种模式的一些观点。
 
 
  1. 透明化永远是平台的第一需求。(透明是稳定性和优化的基础)
  2. 要做好平台,足够的业务嗅觉,用技术来创新。
  3. 注重细节控制,把握安全、业务、用户体验的平衡。
  4. 找到企业基因来差异化设计平台。(安全设计)
  5. 技术无边界,要从不同角色( 前端,无线,后端 )看问题。(前端问题后端思维解决)
  6. 客户第一,用数据来找到客户,用数据来分析客户需求。(TQL)
  7. 按需裁减,深入技术设计背后的理念,用户群和需求的变化来演进技术产品。(流式分析集群)
 
 
  • 为MTTR优化,而不是MTBF;
  • 消息是驱动,组件松耦合;
  • 组件间动态发现,无依赖性。
 

APIs的种类有很多,主要可分成哪几类呢?以下我们例举了排名前十的1,000 APIs。

 

 1、学习一门脚本语言,例如Python/Ruby

  可以让你摆脱对底层语言的恐惧感,脚本语言可以让你很快  开发出能用得上的小程序。实践项目:

  • 处理文本文件,或者csv(关键词 python csv, python open, python sys)读一个本地文件,逐行处理(例如word count,或者处理log)
  • 遍历本地文件系统(sys, os, path),例如写一个程序统计一个目录下所有文件大小并按各种条件排序并保存结果
  • 跟数据库打交道(python sqlite),写一个小脚本统计数据库里条目数量
  • 学会用各种print之类简单粗暴的方式进行调试
  • 学会用Google (phrase, domain, use reader to follow tech blogs)

  为什么要学脚本语言,因为他们实在是太方便了,很多时候我们需要写点小工具或是脚本来帮我们解决问题,你就会发现正规的编程语言太难用了。

  2、用熟一种程序员的编辑器(不是IDE)和一些基本工具

  • Vim / Emacs / Notepad++,学会如何配置代码补全,外观,外部命令等。
  • Source Insight (或 ctag)

  使用这些东西不是为了Cool,而是这些编辑器在查看、修改代码/配置文章/日志会更快更有效率。

 

3、熟悉Unix/Linux Shell和常见的命令行

  • 如果你用windows,至少学会用虚拟机里的linux,vmware player是免费的,装个Ubuntu吧
  • 一定要少用少用图形界面。
  • 学会使用man来查看帮助
  • 文件系统结构和基本操作 ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip …
  • 学会使用一些文本操作命令 sed/awk/grep/tail/less/more …
  • 学会使用一些管理命令 ps/top/lsof/netstat/kill/tcpdump/iptables/dd…
  • 了解/etc目录下的各种配置文章,学会查看/var/log下的系统日志,以及/proc下的系统运行信息
  • 了解正则表达式,使用正则表达式来查找文件。
 
 
 

4、学习Web基础(HTML/CSS/JS)+服务器端技术(LAMP)

  未来必然是Web的世界,学习Web基础的最佳网站是W3School

  • 学习HTML基本语法
  • 学习CSS如何选中HTML元素并应用一些基本样式(关键词:box model)
  • 学会用 Firefox + Firebug 或 Chrome 查看你觉得很炫的网页结构,并动态修改。
  • 学习使用Javascript操纵HTML元件。理解DOM和动态网页(http://oreilly.com/catalog/9780596527402)网上有免费的章节,足够用了。或参看 DOM 。
  • 学会用 Firefox + Firebug 或 Chrome 调试 Javascript 代码(设置断点,查看变量,性能,控制台等)
  • 在一台机器上配置ApacheNginx
  • 学习PHP,让后台PHP和前台HTML进行数据交互,对服务器相应浏览器请求形成初步认识。实现一个表单提交和反显的功能。
  • 把PHP连接本地或者远程数据库 MySQL(MySQL 和 SQL现学现用够了)
  • 跟完一个名校的网络编程课程(例如:http://www.stanford.edu/~ouster/cgi-bin/cs142-fall10/index.php )不要觉得需要多于一学期时间,大学生是全职一学期选3-5门课,你业余时间一定可以跟上
  • 学习一个Javascript库(例如jQuery或ExtJS)+ Ajax(异步读入一个服务器端图片或者数据库内容)+ JSON数据格式。
  • HTTP: The Definite Guide 读完前4章你就明白你每天上网用浏览器的时候发生的事情了(proxy, gateway, browsers)
  • 做个小网站(例如:一个小的留言板,支持用户登录,Cookie/Session,增、删、改、查,上传图片附件,分页显示)
  • 买个域名,租个空间,做个自己的网站。
 

3、Web的安全与架构

  • 学习HTML5,网上有很多很多教程,以前酷壳也介绍过很多,我在这里就不罗列了。
  • 学习Web开发的安全问题(参考新浪微博被攻击的这个事,以及Ruby的这篇文章
  • 学习HTTP Server的rewrite机制,Nginx的反向代理机制,fast-cgi(如:PHP-FPM
  • 学习Web的静态页面缓存技术。
  • 学习Web的异步工作流处理,数据Cache,数据分区,负载均衡,水平扩展的构架。
  • 实践任务:
    • 使用HTML5的 canvas 制作一些Web动画。
    • 尝试在前面开发过的那个Web应用中进行SQL注入,JS注入,以及XSS攻击。
    • 把前面开发过的那个Web应用改成构造在Nginx + PHP-FPM + 静态页面缓存的网站。

  4、一些开发工具

  • 学会使用SVN或Git来管理程序版本。
  • 学会使用JUnit来对Java进行单元测试。
  • 学习C语言和Java语言的 coding standard 或 coding guideline。(我N年前写过一篇关C语言非常简单的文章——《编程修养》,这样的东西你可以上网查一下,一大堆)。
  • 推荐阅读《代码大全》《重构》《代码整洁之道
 
  • 学习Java的各种设计模式。

  2、加强系统了解

  重要阅读下面的几本书:

  • Unix编程艺术》了解Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验。你一定会有一种醍醐灌顶的感觉。
  • Unix网络编程卷1,套接字》这是一本看完你就明白网络编程的书。重要注意TCP、UDP,以及多路复用的系统调用select/poll/epoll的差别。
  • TCP/IP详解卷1:协议》- 这是一本看完后你就可以当网络黑客的书。了解以太网的的运作原理,了解TCP/IP的协议,运作原理以及如何TCP的调优。
  • 实践任务:
    • 理解什么是阻塞(同步IO),非阻塞(异步IO),多路复用(select, poll, epoll)的IO技术。
    • 写一个网络聊天程序,有聊天服务器和多个聊天客户端(服务端用UDP对部分或所有的的聊天客户端进Multicast或Broadcast)。
    • 写一个简易的HTTP服务器。
  • Unix网络编程卷2,进程间通信》信号量,管道,共享内存,消息等各种IPC……这些技术好像有点老掉牙了,不过还是值得了解。
  • 实践任务:
    • 主要实践各种IPC进程序通信的方法。
    • 尝试写一个管道程序,父子进程通过管道交换数据。
    • 尝试写一个共享内存的程序,两个进程通过共享内存交换一个C的结构体数组。
  • 学习《Windows核心编程》一书。把CreateProcess,Windows线程、线程调度、线程同步(Event, 信号量,互斥量)、异步I/O,内存管理,DLL,这几大块搞精通。
  • 实践任务:使用CreateProcess启动一个记事本或IE,并监控该程序的运行。把前面写过的那个简易的HTTP服务用线程池实现一下。写一个DLL的钩子程序监控指定窗口的关闭事件,或是记录某个窗口的按键。
  • 有了多线程、多进程通信,TCP/IP,套接字,C++和设计模式的基本,你可以研究一下ACE了。使用ACE重写上述的聊天程序和HTTP服务器(带线程池)
  • 实践任务:通过以上的所有知识,尝试
    • 写一个服务端给客户端传大文件,要求把100M的带宽用到80%以上。(注意,磁盘I/O和网络I/O可能会很有问题,想一想怎么解决,另外,请注意网络传输最大单元MTU)
    • 了解BT下载的工作原理,用多进程的方式模拟BT下载的原理。

  3、系统架构

  • 负载均衡。HASH式的,纯动态式的。(可以到Google学术里搜一些关于负载均衡的文章读读)
  • 多层分布式系统–客户端服务结点层、计算结点层、数据cache层,数据层。J2EE是经典的多层结构。
  • CDN系统 – 就近访问,内容边缘化。
  • P2P式系统,研究一下BT和电驴的算法。比如:DHT算法
  • 服务器备份,双机备份系统(Live-Standby和Live-Live系统),两台机器如何通过心跳监测对方?集群主结点备份。
  • 虚拟化技术,使用这个技术,可以把操作系统当应用程序一下切换或重新配置和部署。
  • 学习Thrift,二进制的高性能的通讯中间件,支持数据(对象)序列化和多种类型的RPC服务。
  • 学习Hadoop。 Hadoop框架中最核心的设计就是:MapReduce和HDFS。MapReduce的思想是由Google的一篇论文所提及而被广为流传的,简单的一句话解释MapReduce就是“任务的分解与结果的汇总”。HDFS是Hadoop分布式文件系统(Hadoop Distributed File System)的缩写,为分布式计算存储提供了底层支持。
  • 了解NoSQL数据库(有人说可能是一个过渡炒作的技术),不过因为超大规模以及高并发的纯动态型网站日渐成为主流,而SNS类网站在数据存取过程中有着实时性等刚性需求,这使得目前NoSQL数据库慢慢成了人们所关注的焦点,并大有成为取代关系型数据库而成为未来主流数据存储模式的趋势。当前NoSQL数据库很多,大部分都是开源的,其中比较知名的有:MemcacheDB、Redis、Tokyo Cabinet(升级版为Kyoto Cabinet)、Flare、MongoDB、CouchDB、Cassandra、Voldemort等。

  写了那么多,回顾一下,觉得自己相当的有成就感。希望大家不要吓着,我自己这十来年也在不断地学习,今天我也在学习中,人生本来就是一个不断学习和练级的过程。不过,一定有漏的,也有不对的,还希望大家补充和更正。(

 
 
 
 
 
  甲骨文公司的应用产品,全称是Oracle  电子商务套件(E-Business Suit),是在原来Application(ERP)基础上的扩展,包括ERP( 企业资源计划管理)、HR( 人力资源管理)、CRM( 客户关系管理)等等多种管理 软件的集合,是无缝集成的一个管理套件。   目前Oracle EBS已经发布R12(Release 12),是完全基于web的企业级软件。   作为 企业管理软件, EBS的管理范围涵盖企业管理的方方面面:   资产生命周期管理   客户关系管理(CRM)   企业资源计划(ERP)   财务管理    人力资本管理   项目管理(PM)   采购    产品生命周期管理   供应链管理(SCM)   供应链计划   物流与运输管理   订单管理(OM)   价格管理(PM)   制造   教育管理系统   IMEETING    网上购物系统   Oracle EBS 免费下载地址(官方链接)http://edelivery.oracle.com/EPD/WelcomePage/get_form?ARU_LANG=ZHS
 
 
 
 
  高级软件工程师的招聘条件
技能技巧要求:
  ◆熟练使用css语言,对css布局,编写有一定经验;
  ◆熟练使用jquery语言,能够编写jquery通用插件,且能够阅读复杂的jquery插件;
  ◆熟练使用spring framework,且阅读过部分sping相关源码;
  ◆熟悉Web应用多层架构设计;
  ◆熟悉OO分析设计方法和J2EE 设计模式,具备良好的沟通能力与表达能力;
  ◆有mongodb,RabbitMQ,Lucence等技术经验更佳;
  ◆熟悉tocmat,nginx基本工作原理,能够阅读nginx源代码;或者熟悉tcp/ip协议细节;
  ◆能正常使用linux操作系统,简单管理linux系统;
  ◆能够根据产品需求文档,编写开发详细文档;
  ◆能够分析系统基本性能问题,能够mysql性能调优;
  ◆英语四级以上,能熟练阅读英文技术资料。
 
1.代码完美性,linux,c,c++,数据结构,硬件和驱动
岗位职责:

1.负责公司游戏服务器Linux系统的架设、维护及管理等。 
2. 分析游戏运维中出现的系统、应用、数据库、网络等故障,并提出相应解决方案。
3. 运营游戏需求分析、架构设计、流程及方案改进
4. 为公司管理层及部门领导提供决策分析信息和数据及产品相关技术方案。
5. 负责系统部管理制度、流程、手册等文档的制定编写
6. 系统及游戏运维管理系统的需求分析、架构设计、项目实施、验收评审、部署上线等工作,负责项目文档的管理,负责项目协调和进度跟踪

任职资格:
1.计算机相关专业本科以上学历,有3年以上Linux网络管理工作经验以及2年以上网游运维管理经验。
2.精通Linux/BSD系列操作系统。
3.熟悉网络游戏运维流程,具备IDC管理经验及服务器大批量运程维护管理经验。
4.具备网游项目技术方案、计划的规划能力,较强的部门协调能力和执行力。
5.熟悉Shell/perl/python/php等两门脚本编程语言,熟悉C/C++编程者优先考虑。
6.熟悉Mysql数据库管理,熟悉TCP\IP协议、HTTP协议。
7.对数据安全、网络安全有深入的研究与实践。有大型存储设备使用经验。
8.具备良好的分析解决问题能力,能独立承担攻关任务,具备项目进度控制能力。
 
 

一个良好的Web开发框架,可以帮助你

  • 解决常见的Web开发问题,如标准的Web页面布局、Web表单处理、浏览器兼容性解决等)。
  • 测试Web开发的bug、安全和性能。
  • 使代码重用更容易,因为有一个统一的API。
  • 社区开发的插件和工具,可以进一步增强开发(jQuery有很多非常棒的插件,比如用户界面、图像和网页排版等)。
  • 遵循编码的最佳实践和伟大的编程设计模式,你甚至不用去思考。
  • 有开发社区和用户的支持,你可以获取帮助以及进行协作。
  • 初学者使用起来非常容易
有很多Web开发框架你可以选择
 
•完整的Web应用程序框架,如Ruby on Rails或CakePHP。
•JavaScript框架,如jQuery、MooTools和其他许多鲜为人知但很优秀的用于处理用户界面、客户端逻辑和Ajax的JavaScript框架。
•如果你想加快视觉层设计,你可以使用一个CSS框架(如,Toast),或者网页布局框架(如,960 Grid System)。
•专门的框架,如用于内容管理系统开发的WordPress主题框架。
•现在还有移动Web应用程序开发框架。
 
 
2. 建立一个代码片段库
 
IT界的名言“不要重复发明轮子”。回收你的代码,创建一个你最喜欢和经常使用的代码片段集,并确保代码组织良好,可以被轻易搜索到。
 
最简单的方法是,你可以在硬盘中建立源代码目录。但这未必是最好的方式。
 
一种方法是使用允许保存代码片段的源代码编辑器或IDE。例如,Notepad++的SnippetPlus插件和Dreamweaver内置的片段面板。
 
 

在我开始客户的网站项目工作时,我需要先确定:

  • 颜色方案
  • 网站的目标
  • 他们能够提供的任何内容
  • 他们已经拥有的任何设计思路
1.用到的技术 2.架构分析 3.层的分配 4.画图工具6.设计的模式
7.爬墙技术 8.搜索  9.分词技术  10.测试  11.监听器,拦截器  12.json
把spring 分开  把struts 分开  spring 角色,权限,安全,字符集  测试案例,用到的公共接口
写数据库脚本   UUid用  网站侦测,注入,反编译,doos攻击
做好逻辑控制,避免大量访问,数据容量,数据校验,IP地址控制等等
企业主站与服务器分离,以免影响公司服务器,网络宽带备案,异常状况备案
上传,下载文件,加密技术  日志信息的显示  weblogic,jboss,tomcat都要了解
审批流程  流程设计,自动生成代码,打印  性能监测,流量监测
jsp配置服务器,smtp,ftp,news,java socket telnet
J2EE的一套标准, 包括了: 
   JDBC, JNDI, JMS, SERVLET, EJB

RMI

JNDI可访问的现有的目录及服务有:   DNS、XNam 、Novell目录服务、LDAP(Lightweight Directory Access Protocol  轻型目录访问协议 )、 CORBA对象服务、文件系统、Windows XP/2000/NT/Me/9x的 注册表 、RMI、DSML v1&v2、NIS。
 
 
 
 面向对象的设计与设计模式
JAVA技术:CSS and HTML  Core Spring  JPA / Hibernate  OSGI and Virgo Server
如果对以下技术有了解则会更好:
Amazon Web Servic、EC2、VPC、Load Balancing、DynomaDB
RDS、ElasticCache、and more、GWT、REST、JMS、Maven
- 预测数据库系统存储需求,为满足未来业务发展需要制定存储需求计划
- 安装和升级数据库服务器,以及应用程序工具
- 为维护数据库的安全性;设置和管理用户帐号,权限,登记数据库用户,控制和监控用户对数据库的存取访问
- 监控和分析评价数据库服务器的性能
- 数据库性能调优以满足应用需求,诊断,故障检测和解决任何数据库相关问题
- 制定数据库备份计划,对数据库进行备份,必要时提供恢复
- 和 IT 专员一起制定和执行灾难恢复计划
- 监控和维护数据库的日常运行
- 审核,确认开发人员设计的脚本代码;为有效的,定期的维护数据库创建任何必要的脚本
- 日常检查服务器文件增长,脚本运行
- 精通 SQL Server,数据库管理、执行调整、数据恢复 - 良好的 SSIS 能力 - 有 Data Warehouse、Data Mining、OLAP 经验者优先
4.或其中至少一年的基于IBM Websphere/BEA Weblogic/Jboss开发部署经经验;
5.熟悉MVC设计模式,其中至少二年以上基于struts或其他类似FrameWork的开发经验;
6.擅长使用 javascript 进行开发和设计,熟悉 extjs 或其他的前台展现技术,有过 extjs 实际 项目应用经验者优先
7.熟悉系统建模、模块切分和总体设计;
8.熟悉Oracle、DB2等数据库的设计、开发;
9.具有较强的分析设计能力,有用户界面框架设计经验;
10.了解软件工程、编程规范、有过程控制意识;
11.良好的沟通能力及团队合作精神,责任心强。
7.有大数据量、高并发系统和大型网站构建经验者优先;
熟悉AJAX 相关技术;-
熟悉敏捷开发方法。
你将会负责细节设计、框架设计、编码、系统定制化、测试组织和相关文案的工作。
 
 
   1.数据库集群或者库表散列   架构方面的缓存  网站程序开发方面的缓存  负载均衡   负载均衡DNS轮循和较专业的CDN架构
   2. 规定大于优化   字符格式,文件命名,配置信息,语言类型,读取sql语句执行,备份文件,备份数据,上传下载,调整图片
   3.一时 内容格式验证 二是  数据关联验证  比如主从表验证 多级关联验证  涉及复杂的关系操作,不涉及推拉结构
   4.存储key-value化, 推荐redis  数据库做同步  将所有查询结果缓存化,静态化
   5.redis都不需要做i/o优化了  淘宝技术专家余锋分享的qcon讲座文档  买几块ssd硬盘做raid1/0  至于昂贵的fusion-io,我真觉得,这个场景用不着
   6.更新通过服务端的数据变化触发,而非通过用户请求触发。这样就可以保证静态化发布和动态化更新。
   7.10亿pv请求,90%+甚至95%会落到前端缓存里,根本不会带来服务器负载!连cdn都省下了
   8.负载很高,连接很多,速度很卡 负载uptime值多少,连接数具体有多少,平时正常多少,高峰多少,访问延迟有多大,全部要数字化,而且要有问题状况下和平时的对比
   9.md5撞库和社工扫描库  了解0day    epoll最擅长的事情是监视大量闲散连接
   10.包括负载均衡LVS,IDC分布,DNS解析  高并发,高可用,可扩展的Web服务
   11.ET,非阻塞模式  http proxy  write十几K数据到内核缓冲区  close(0);  //stdin  close(1);  //stdout
   12.避免用锁多线程编程用锁是普遍现象  但各线程最好是独立的,不需要同步机制的  锁会消耗资源,而且造成排队,甚至死锁,尽量想办法避免
   13.该避免用户空间和内核空间的切换   避免内存copy (strcpy,memcpy) 如果必须要copy,尽量使用memcpy替代sprintf,strcpy,因为它不关心你是否遇到'\0'; 内存拷贝和http响应又涉及到字符串长度计算。
   14.系统部署(高并发,可扩展) 负载均衡LVS(高可用,低成本) IDC分布,DNS解析(快速) NAT,TUN,DR,其中DR是最高效的
   15.Cache的种类?浏览器Cache,代理Cache,网关Cache。后端还有 disk cache ,server cache,php cache,不过不属于我们今天讨论范围
   16.3个刷新级别 1.回车刷新  2.F5刷新 在你发起一个全新的请求以后,然后多次按F5都会产生一个带If-Modified-Since的请求        3.ctrl+F5 ,总会发起一个全新的请求
   17.信息发布系统CMS   HTML静态化  图片服务器分离  在处理静态页面或者图片、js等访问方面,可以考虑使用lighttpd代替Apache
   18.计算访问量,记录IP地址,留言评论,发邮件,上传下载 ,加密 方法
   19.mysql非常适合用多台PC Server组成多点的存储节点阵列    有对性能验证压力测试经验;
   20.熟悉大型缓存系统的设计与应用,如Memcached,Ncache。有高并发、大容量,百万级访问量的B2C商城系统的WEB集群分布式设计经验
   21.在选择使用WEB服务器应考虑的本身特性因素有:性能、安全性、日志和统计、虚拟主机、代理服务器、缓冲服务和集成应用程序等,
   22.Apache是web服务器,tomcat是应用(java)服务器,是一个servlet容器,是apache的扩展   apache不能解释java程序 只支持静态html
   23.apache侧重于http server tomcat侧重于servlet引擎
   24.jprofile 性能调做优  http://www.ej-technologies.com/products/jprofiler/overview.html  集成 跟踪 内存,性能,线程
   25.搜索查找算法    Hadoop框架实际上一种分布式处理大数据平台
   26.JBPM简介 JBPM,全称是Java Business Process Management(业务流程管理), 
   27.集群通常会使用CDN与GSBL与DNS负载均衡技术应用服务器集群可以采用apache+tomcat集群和weblogic集群等;web服务器集群可以用反向代理,也可以用NAT的方式,或者多域名解析都可以;Squid也可以、
   28.负载均衡有两方面的含义:首先,大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;其次,单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,
       将结果汇总,返回给用户,系统处理能力得到大幅度提高。
   29.meavn  比如 远程调试  注解开发  动态改写class文件  class load的原理 测试工具 模拟并发 安卓 系统  flex  openoffice  超级报表  linux 和windows 的差异
   30.网络技术 socket http 协议 tcp 协议 rmi 协议 等等   google的 js调试工具  各种web项目的差异 weblogic  BI  dynamic web project  static web project  web  fragment project
   31.多维数据库   数据库集群  服务器集群  单点登录  tomcat 的原理
   32.数据结构,算法,数据库设计,并行计算,网络编程,敏捷开发以及各种编程模式
   33.在mysql中一般,更新不多、不需要事务的表可以用myisam,需要行锁定、事务支持的,用innodb
   34.打个比方 企业网上 不需要被百度 爬虫 所以技术选型方面的 灵活度就大  门户网需要被百度 google 爬虫 所以所有页面都必须尽可能已html呈现 html协议
   35.WEB1.0是以数据为核心的网, WEB2.0是以P2P为主。 Web1.0:以静态、单向阅读为主;Web2.0:以分享为特征的实时网络;Web3.0:将以网络化和个性化为特征,提供更多人工智能服务。
   36.JBPM关键是参数怎么获取参数 怎么知道 该走哪一步流程  流程 怎么回调执行类  只是业务角度去看代码而已
   37.rest验证 生产一串验证码 缓存到服务器  进行算法匹配  性能差不多的   缓存到服务器是用的什么方式? tcp 协议过去 或者用rmi
   38.make ant maven构建工具
   39.maven用来管理项目,清理,编译,测试,打包,发布,以及自定义过程 你将会对构建生命周期 (build lifecycle),Maven仓库 (repositories),依赖管理 (dependency management)和项目对象模型 (Project Object Model)有一个基本的理解。
   Maven还为全世界的Java开发者提供了一个免费的中央仓库
  
   mvn archetype:create -DgroupId=myprj -DartifactId=myprj -Dversion=1.0.0 -DarchetypeGroupId=org.apache.maven.archetypes
   
  mvn archetype:create -DgroupId=com.demo -DartifactId=demo -Dversion=1.0.0 -DarchetypeGroupId=org.apache.maven.archetypes
mvn archetype:create -DgroupId=com.demo -DartifactId=demo.domain -Dversion=1.0.0 -DarchetypeGroupId=org.apache.maven.archetypes
mvn archetype:create -DgroupId=com.demo -DartifactId=demo.web -Dversion=1.0.0 -DarchetypeArtifactId=maven-archetype-webapp

mvn install:install-file -DgroupId=hibernate -DartifactId=hibernate3 -Dversion=3.2.3.GA -Dpackaging=jar -Dfile=hibernate3.jar
mvn install:install-file -DgroupId=velocity -DartifactId=velocity -Dversion=1.7 -Dpackaging=jar -Dfile=velocity-1.7.jar

   40。物理架构  web服务器的分布 数据库服务器的分布  负载均衡 分布式的事务  内容分发,分布式的安全
   41.配置管理工具 cus  文件服务器/配置服务器的确定(黑客测试工具 bug跟踪的工具)
   42.迅速开发原型  进行迭代(螺旋式的递增)
   43.文件和打印服务器  web服务器和web应用程序服务器 邮件服务器  终端服务器  远程访问 虚拟专用网络(VPN)服务器
   44.目录报务器,域名系统(DNS),动态主机配置协议(DHCP)服务器和 windows internet 命名服务(WINS)流媒体服务
   45.软件需求  软件设计 软件构造 软件测试 软件维护  软件配置管理 软件工程管理 软件工程工具和方法 软件质量
   46.需要在http server上做HA
   47.数据库事务的四个基本要素 (原子性)Atomicity  一致性(Consistency) 隔离性(isolation) 持久性 Durability
   48.后台列表控件:displaytag 1.2  缓存机制:spring 3.1 cache + ehcache/memcached  貌似JSP也可以做静态化的
   49.在Java中,类型是静态的。这就代表了编译器要检查所有的类型;你必须建立和编译一个完整的程序。在Ruby中,类型是动态的,所以你不需要去声明他们,你可以马上编写和运行他们。下面是用两种语言描述的Fibonacci 序列:
   50.ruby动态语言可以比像C++或Java这样的静态语言更加有效率
   51.一般我们用session保存客户的状态信息,当保存状态信息server宕机我就要用集群来做,
      不仅有负载均衡,更有失效恢复 failover 比强tomcat采用的集群节点广播,jboss
      采用的是配对复制session状态策略,但缺点就是严重影响系统的伸缩性
      浏览器缓存,反向代缓存,页面缓存,局部页面缓存,对象缓存  本地、远程缓存      
   52.垂直分区然后再水平分区,但是分表会引起一些棘手的问题,比如join查询语句,如何平衡到各个shards的负载等等,
      这个时候就需要一个通用的DAL框架来屏蔽底层数据存储对应的逻辑影响,使底层访问对应透明化
   53.异步通信需要消息中间层 ,一定要针对业务的异步,松耦合的场合
   54.动态还是静态的数据结构
  
  

     我心目中最好的框架组合是:
    表示层:spring mvc 3.1 + annotation
    控制层:spring 3.1
    持久层:hibernate 3.6 +jdbcTemplate
    后台列表控件:displaytag 1.2
    Ajax框架: DWR 3
    JS框架 : Jquery
    缓存机制:spring 3.1 cache + ehcache/memcached
    静态化机制: Freemarker静态化/spring mvc伪静态化
    页面技术: EL + JSTL +JSP
    安全框架 spring security
    搜索引擎: Lucene
    中文分词:IKAnalyzer
    模板引擎: apache tiles 2.22
     Linux、nginx、php、mysql,几乎是标配
    部署视图所需:
    数据库: mysql
    Web 服务器: windows 下用apache, linux 下用ngnix
    应用服务器: Tomcat

  
    常用的系统架构是:

Linux + Apache + PHP + MySQL + web负载均衡+数据库主从+缓存+分布式存储+队列
Linux + Apache + Java (WebSphere) + Oracle
Windows Server 2003/2008 + IIS + C#/ASP.NET + 数据库


1. 尽可能的减少 HTTP 的请求数     [content]
2. 使用 CDN(Content Delivery Network)     [server]
3. 添加 Expires 头(或者 Cache-control )     [server]
4. Gzip 组件     [server]
5. 将 CSS 样式放在页面的上方     [css]
6. 将脚本移动到底部(包括内联的)     [javascript]
7. 避免使用 CSS 中的 expression_r_r_r_rs     [css]
8. 将 JavaScript 和 CSS 独立成外部文件     [javascript] [css]
9. 减少 DNS 查询     [content]
10. 压缩 JavaScript 和 CSS (包括内联的)     [javascript] [css]
11. 避免重定向     [server]
12. 移除重复的脚本     [javascript]
13. 配置实体标签(ETags)     [css]
14. 使 AJAX 缓存   
15. 使用deflate压缩算法


大型动态应用系统又可分为几个子系统:
  1)Web前端系统
  2)负载均衡系统
  3)数据库集群系统
  4)缓存系统
  5)分布式存储系统
  6)分布式服务器管理系统
  7)代码分发系统

1、数据库压力问题
所有的压力最终都会反映到数据库方面,一定要对数据库有一个整体的规划。
可以按照业务、区域等等特性对数据库进行配置,可以考虑分库、使用rac、分区、分表等等策略,确保数据库能正常的进行交易。

2、网络问题 可以考虑采用镜像、多路网络接入、基于DNS的负载均衡。如果有足够的投资,可以采用CDN(内容分发网),减轻你的服务器压力。
3.F5的负载均衡 是必不可少的,他的每秒点击量能达到将近30万,F5不光可以做web的负载均衡,也可以做基于第4层的负载均衡。
4.采用EJB,无非是因为经费有限,无法购买充足的weblogic license。所以退而求其次,购买少量的weblogic license,专门跑业务层服务器,用SLSB暴露远程接口给tomcat调用

1.基础配置优化
tomcat 6? tomcat参数调优?
JRockit JVM? JVM参数调优?
Apache+Squid 处理静态内容?

2.业务层优化
部分功能本地化,而不调remote session bean?
异步提交操作,JMS?
cache热点数据?

3.展示层优化
动态页面发布为静态页面?
Cache部分动态页面内容?

apache,tomcat负载均衡远远胜过于ejb方案的性能。

而JVM对响应时间可预计性的影响,主要表现在
1.线程调度受操作系统线程调度的影响
2.垃圾收集引起的暂停

集成ORM  hibernate ,jdo,toplink,apache ojb ,ibatis,jpa
集成视图  jsp ,jstl ,tiles,velocity, freemarker,xslt ,pdf/excel,jaseperreports
集成web框架  jsf struts tapestry webwork
整合其它J2EE  webserives,ejb jms jmx jca 邮件抽象层,定时调度和线程池,java注解
数据库 mysql ,sqlsever,oralce,sqlite,db2
Ajax框架  ext,jquery ,prototype,dojo,yui,
容器 Jboss,tomcat,weblogic

搭平台 就是 基本的一些功能组件
比如 权限 是必须的   框架界面是必须的  统一样式是必须的
前台js框架是必须的   后台框架的二次封装是必须的  代码生成器是必须的

Quartz 是个开源的作业调度框架    一个单据的 流程如何控制 保证关联数据不被改动

软件离不开生活的 永远记住这一点  软件是为生活服务的  你没有感受过生活 如何能发散思维啊
你生活本身都不够精彩 如何能写出 精彩的程序
淘宝为什么能成功 QQ为什么能成功 贴近生活 为生活提供方便
 

做一个向对方数据库表插入数据的功能,用一个配置文件,这样就可以与医院的lis系统合用
RCP 编程:
- plug-in结构   - extension pointer   - OSGi框架    - Spring DM   - OSGi Web
JSP, JSTL, SERVLET, Struts2, Spring,jQuery,javascript, css,html
Linux/Unix  Web Server  App Server  DB Server/各种DB
缓存  负载均衡   集群  高并发    时不时再来个SEO,海量数据处理。。。

以下是2月份了解的知识
56.要学习一下写bat文件   osgi hadoop  OSCache 元数据, freemarker
62.写一些公用的方法,导入导出数据。生成表,设计表结构添加删除字段,生成数据。做一些工具类,学会代码要测试,
60.软件版本控制,进度控制,协调能力。开发模式,软件测试
测试也分类,白箱测试、黑箱测试、单元测试、集成测试、功能测试、系统测试
白箱测试是指在知道被测试的软件如何(How)完成功能和完成什么样(What)的功能的条件下所作的测试,一般是由开发人员完成,单元测试是一种白箱测试
白盒测试可以应用于单元测试(unit testing)、集成测试(integration testing)和系统的软件测试流程
回归测试就是你不断地对所编写的代码进行测试(如单元测试):编写一些,测试一些,调试一些,然后循环这一过程,你会不断地重复先前的测试,哪怕你正编写其他的类。
黑盒测试 从用户的角度针对软件界面、功能及外部结构进行测试,而不考虑程序内部逻辑结构
系统测试是将需测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素及环境结合在一起测试。
集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如概要设计文档)集成为子系统或系统,是单元测试的逻辑扩展。最简单的形式是:两个已经测试过的单元组合成一个组件,并测试它们之间的接口。




-------------------------------------------------------------------------------------------以下是3月份了解的知识
sql代码优化,代码优化,框架结构效率 ,开发模式,代理,反射都要搞一下    如何取内存中的数据
不过ehcache 应该有更多的用法吧 比如 分布式。  比如内存缓存。磁盘缓存 比如RMI协议
http://product.dangdang.com/product.aspx?product_id=20019046
http://product.dangdang.com/product.aspx?product_id=20474569 
框架 代码 都是 项目的工具而已   如何考虑 安全性,容错性 如何考虑性能 如何快速 应用
深入浅出的分析设计 技术类的 看js js 要设计的面很多
如何与服务器交互 如何渲染 如何快速结构化
java 已经结构化好了  你如何让js也结构化 所以叫你深入学点设计 和 js 因为你还是雾里去看这些框架 
12.JVM要了解,Jboss,tomcat,weblogic的比较 了解一下FTP服务器,HTTP服务器。  struts2.0框架验证  swing
64.  stringbean门户信息系统   Web Services   数据库中插入图片,大对象的数据类型。


-------------------------------------------------------------------------------------------以下是4月分了解的知识
53.面向对象,设计模式  Thinking in Java,,敏捷软件开发原则、实践与设计模式,测试驱动开发。 
58.比如 OA 权限管理系统,流程审批 基础的 数据仓库 数据连接池 封装 通用 工具包 文件操作
45.网络安全与病毒防止。 uml visio project powerdesinger

-------------------------------------------------------------------------------------------以下是5月份了解的知识
63.建立自己的lib库,资料库,文档库,笔记库,软件库,版本控制库。
1.自动创建表单,bean,form,action,sql,jsp,xml,dwr, struts配置,插件   EJB也要熟悉一下  ant 打包 把条码生成的测试出来  
59.分析查找一个项目经理需要做那些事情,应该撑握那些知识。应该具备的素质。

-------------------------------------------------------------------------------------------以下是6月份以后要做的事
41.linux安装步骤1.sudo chomd +x myeclipse.run  2. ./myeclipse.run
52.高线程序语言c++、操作系统、数据结构、数字逻辑、软件开发技术、多媒体技术、软件体系结构、数据库、计算机网络、软件技术分析与设计
61.做一个思维导图,描绘自己的关系网,分类型分情况。做一个学习计划表格,标注那些没有完成的学习内容。



1.打开我的电脑--属性--高级--环境变量

2.新建系统变量JAVA_HOME 和CLASSPATH
变量名:JAVA_HOME
变量值:C:\Program Files\Java\jdk1.7.0
变量名:CLASSPATH
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

3. 选择“系统变量”中变量名为“Path”的环境变量,双击该变量,把JDK安装路径中bin目录的绝对路径,添加到Path变量的值中,并使用半角的分号和已有的路径进行分隔。
变量名:Path
变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

猜你喜欢

转载自lvwenwen.iteye.com/blog/1857022
今日推荐