周筠: 由于同时进行的学习内容较多, 也较杂, 我看是慢慢摸索出一套自己的学习方法: 对于每样要学的科目, 都坚持记笔记, 有时甚至是抄书. 这看似枯燥而无聊的动作, 整个知识体系就在不知不觉中巩固和形成了.编程你大脑的一部分.
<<大道至简>> 周爱民 (Aimingoo)
编程的根本 = 顺序(像公路) + 分支(像路口) + 循环(像立交桥)
分析事情: 逻辑关系, 依赖关系
面向过程时代:
程序 = 算法 + 结构 , 算法是一个程序的逻辑实现的描述
单元: unit, 过程: procedure, 模块: module
CISC —->(分析统计)—> RISC
复杂指令集 精简指令集
80%的指令只是用在20%的时间里.
最常用的10条执行中, 包含流程控制的只有’条件分支(if….then)’, ‘跳转(jump)’, 和’调用返回(CALL/RET)’.
面向对象时代:
程序 = 算法 + 结构 + 方法, 方法分为事件驱动和模型驱动.
soul说:
总体结构: 用面向对象
关系: 用数据结构
实现: 用算法
RUP/RAD/螺旋模型: 都市过程模型.
语言只是工具, 无论是JAVA/C++还是Delphi, 它都是程序员用来和机器交流的工具.
建立模型其实可以使用甲骨文来写的.
工程说的是很多人(团队) 如何组织在一起进行开发的问题. 它首先把工程中的环节分解出来, 这样, 有了环节就有了角色, 有力角色就有了沟通.
因此, 工程的问题其实就是: 环节, 角色和沟通的问题.
没有团队意识的软件公司在高度过程化的, 通宵fangfalun,拥有大量工具的集团军面前必将一触即溃.
模型驱动体系: Model Driven Architecture
事件触发提醒: Event Happen Architecture
其实所谓的经典也是对既有知识的总结, 大师们所知道的, 与你所思考的未必就有天壤之别.
2011年1月19日, 读完<<大道至简>>
<<大话设计模式>> 笔记
a) 如果你想成为一名更加优秀的软件设计师, 了解优秀软件设计的进化过程比学习优秀设计本身更有价值, 因为i设置的演变过程蕴藏了大智慧.
– <<重构与模式>>
b) 重要的不是你将来会不会用到这些设计模式, 而是通过这些模式让你找到’封装变化’, ‘对象间松散耦合’, ‘针对结构编程’的感觉, 从而设计出更易维护, 易扩展, 容易复用, 灵活性好的程序.
聚合关系(Aggregation): 表示一种弱的’拥有’关系, 体现的是A对象可以包含B对象, 但B对象不属于A组合的一部分, 如大雁和雁群的关系.
组合关系(Composition): 表示一种强的’拥有’关系, 体现了严格的部分与整体的关系, 部分和整体的生命周期是一样的, 比如大雁和翅膀.
当你发现自己已经可以掌握此程序语言之后, 你可以选择:
a) 向上延伸: 学习面向对象设计, 设计模式, 重构以及软件工程, 让自己具备做大型项目的能力.
b) 向下延伸: 深入了解程序内部底层的运行机制, 例如数据结构, 操作兄台那个原理, 计算机组成与结构.
c) 向旁延伸: 学习不同应用领域的API, 例如: 多媒体, 数据库, 分布式运算.
JAVA变量的种类:
Class MyClass{
static int a;
int b;
public static void myMethod(int c ){
try{
int d;
}catch(Exception e){
}}}
MyClass( int f ){
int[] g = new int[10];
}
1) class variable: 生命在class内, method外, 且使用static修饰的变量, 例如上面的变量a.
2) instance variable: 声明在class内, method外, 且未使用static修饰的变量, 如变量b.
3) method parameter: 声明在method小括号内的变量, 如变量c.
4) 狭义的local variable: 声明在method内的变量, 如变量d/g.
5) exception hanle parameter: 声明在catch小括号内的变量, 如变量e.
6) constructor parameter: 声明在construtor的小括号内的变量, 如变量f.
7) 数据元素: 数组的元素没有识别名称, 必须通过数据和索引来识别, 如g[0].
悟道:
道胜于行, 行胜于言.
OOA –> OOD –> OOP
成功仰仗:
1) 过往的经验: 已有之思想和实践总结.
2) 未来思创: 新的思想和创新.
固本培元, 开拓创新: 爆发力和持久力, 刚柔并济.
思维导图
大脑 = 超大容量的图书馆.
你 -> 首席管理员(可能存在别的管理员, 就是那个了解你胜过于你自己的人)
意识:
1) 健康保密
2) 思想保密
3) 财产保密
你如何管理你的大脑(超大容量的图书馆)?
一闪而过的想法:
1) 出色的数据索引(能够快速检索)
2) 优秀的存取系统(数据持久化, 讲究容量和效率)
思维导图: 帮助你学习, 组织和存储你想要的所有信息, 然后以自然的方式对信息进行分类, 使你得到你想要的一切(完美的记忆).
Data Struture: type, size, default value, constraint.
Algorism: method name, argument list, return value, throw exception, access constraint.
大脑的工作机制: 联想, 想象.
发散性: 树形, 图形: 在日常生活中, 你能够如此轻松自如的接收数据流, 就是因为大脑就是一台超级计算机.
思维导图: ‘图像’和网络般的’联想’.
绘制思维导图:
1. start draw from empty paper center photograph.
2. use a picutre or draw express yourself.
3. drawing your draw using colors.
4. connect
5. not straight.
6. keyword
7. only photograph.
哪些场合可以使用思维导图?
1) 演讲
2) 家庭事务
3) 说服吧别人和谈判.
4) 浪漫周某的计划.
5) 打电话
6) 商务投资
7) 购物
人类具有的10种智能:
语言智能, 精神智能, 创造智能, 身体智能, 性智能,社交智能,
人际关系智能, 感性智能, 空间智能, 数学智能.
你的目的是什么? 如何达到你的目的? 别人需要的是什么? 你能给他们什么?
Hibernate笔记
Hibernate
对象持久化:
物理上: 内存已中断, 容易丢失数据, 使用作为计算场所. 这是可以突破的.
业务上: 信息是一切活动的先导性条件. 信息具有流动性(可共享), 安全性, 集中性.
信息经过采集, 加工(抽取/转换), 传送, 存储.
数据持久化:
远古时期: 绳文记事, 甲骨文记事
近代时期: 电报, 电话.
现代: 网络.
它是手段, 不是目的.
为什么说信息是一切社会活动的先导性条件?
信息载体 -> 订单 -> 销售科 -> 生产计划科 -> 生产科 -> 库房调度生产资料 -> 生产.
Hibernate: 对象持久化工具.
为什么需要对象持久化工具?
面向对象编程和数据库的面向关系存在矛盾.
面向对象编程是必须的.
面向关系型数据库也是必须的.
而序列化不能使信息持久化到DB中.
对象持久化的方法有哪些呢?
JDBC:
优点: 理论上高效, 功能全面.
缺点: 代码量大, 开发难度大.
EJB:
优点: 封装了JDBC.
缺点: 重量级的解决方案, 成本高, 维护困难, 测试复杂, 功能不全.
Hibernate:
优点: 轻量级解决方案, 成本低, 容易维护, 测试简单, 功能全面.
缺点: 理论上低效.
所以, 必须选择Hibernate. 一个企业最核心的就是数据库了.
所谓的关键点就是与钱和命相关的方面.
如何使用Hibernate?
写持久化类: 要求是POJO, 存在oid, 空构造, setters/getters.
写映射文件:
映射规则: 类 -> 表, 属性 -> 字段, oid -> id
id的映射方法有: hilo, seqhilo, sequence, identity, native, foreign, assigned, auto.
包括实体的映射和关系的映射.
写配置文件hibernate.cfg.xml
对象在Hibernate的存在三种状态?
Transient(暂态): session和DB中都没有该对象.
Persistent(持久太): session和DB中都有该对象.
Detached(游离态): session中没有, 而DB中有该对象.
Transient -> save()/ saveOrUpdate() -> Persistent -> close()|clear()|evint() -> Detached
Detached -> update() -> Persistent -> delete() -> Transient
load()和get()的区别?
load()先到session cache中找, 如果没有则返回一个假的Proxy对象, 只有在第一次使用时才到数据库中找, 如果在数据库中没有找到, 则报NullPointerException.
get()也是先到session cache中找, 若果没有则继续道数据库中找.
load()起到了一个延迟加载的效果.
延迟加载可以在映射文件中配置lazy=’true’, 如果想直接加载, 则在HQL中写: from User u join fetch u.accounts where …
关系映射:
写入映射文件.
关系的维护: 取消关系维护用inverse=”true”
级联操作: cascade=”[all | all-delete-orphan]”
延迟加载: lazy = “true” -> join fetch
参考: Java笔记/Hibernate/hibernate关系映射相关.TXT
高级查询:
1) 静态查询: HQL, get(id), load(id), 精确不灵活
2) 动态查询:
Criteria: 标量查询
Criteria criteria = session.createCriteria(Book.class);
if(name != null && name.length() > 0){
criteria.add(Restrictions.like(“name”,”%”+name+”%”));
}
criteria.createAlia(“categorys”,”cate”);
criteria.add(Restrictions.eq(“cate.id”,id));
Restrictions: eq, like, gt, lt, le, ge, between, in.
XML
XML定义:
1) 可扩展的标记语言.
2) 电子数据交换.
3) 面向对象.
缺点: XML是BTree结构, 查询很快, 但修改和删除较慢.
XML的数据结构:
BTree结构.
数据类型: Root Element, Child Element, Text Content
元数据类型:
Element(empty|any|childelement|fixed),
Attribute: 类型: CDATA, ID, ID-REF, Enum.
XML DTD:
介绍: 市场主流, 简单, 表达力弱, 外生语法, 前景不大.
Document Type Defind:
Element: pure text, child element.
Attribute:
type: CDATA, ID: ID-REF, Enumerated
value: #REQUIRED, #IMPLIED, any, #FIXED
fmt:
<<大话设计模式>>笔记
设计模式的分类:
创建型:
工厂方法, 抽象工厂, 单例模式, 建造者模式, 原型/模版模式
结构型:
享元模式: 分为内部对象和外部对象. 其中以一个集合对象存放对象作为成员变量.
应用: 五子棋/String常量池/围棋
适配器模式:
桥接模式: 组合聚合复用原则, 低耦合, 应用: 手机和手机软件
组合模式: 应用: 分公司 = 一部门
装饰器模式: 小菜超人
门面模式: 新生报到
行为型:
观察者模式, 模版模式, 命令模式: 门外卖羊肉串和店内经营, 状态模式: 记事本, 职责链模式: 小菜请假, 加薪.
解释器模式: 音乐播放器,
中介者模式: 联合国安理会,美国,伊拉克,
访问者模式: 男人女人的比较
策略模式: 商场打折促销
备忘录模式:
迭代器模式
MVC中的绝对地址和相对地址
地址:
链接,
表单提交: 可以使用绝对路径, 也就是从应用根’/’开始; 也可以使用
重定向: 在应用前加上’/’, 可以重定向到外部的应用.
转发: 只能转发应用内部的组件, 绝对路径: 从应用名后开始, 比如 ‘/a/1.jsp’是正确的, 而’/MVC-2nd/a/1.jsp’是错误的.
绝对地址, 前部以’/’, 从应用根开始. 相对地址: 前部无’/’.
Ajax:
Overview:
1. 用于提升用户体验, 在不刷新页面的情况下提交数据. 达到桌面应用程序的效果.
2. 多种技术组合的结果, Asynchronous JavaScript And Xml:表示异步JS和XML.
这里的异步是相对于请求<->响应的同步方式而言的.
请求 <-> 响应模型:
用户发送请求到服务器, 然后一直等待服务器响应为止.
Ajax模型:
用户发送一个Ajax请求到Ajax引擎, 然后断开连接. 由Ajax引擎把HTTP请求发送到服务器, 并不停轮询响应状态, 一旦服务器端响应完成, 则触发页面的Ajax响应函数.
XMLHttpRequest: 核心对象
专门用于对Ajax进行封装, 而服务器端编程可以使用JSP/PHP/ASP.
所有的Ajax都是直接或者间接使用XMLHttpRequest对象.
与JSP/Servlet对象进行数据交互.
采用JS技术发送客户端请求. 同时呈现服务器端响应数据.
数据格式:
少量数据使用字符串, 大量数据使用XML文档.
Ajax编程流程:
1. 获取XMLHttpRequest对象.
IE浏览器是使用ActiveXObject对象, 分为MSXml2.XMLHTTP和Microsoft.XMLHTTP
2. 创建发送请求:
req.Open(“get|post”,”/ajax/1st/valid.do?user=”+user);
// get 方式, 需要进行2次编码
req.send(null);
// post方式, 只需要编码一次即可
req.setRequestHead(“Content-type”,”application/x-form-data”);
req.send(“id=123&user=”+user); // post 方式
3. 制定处理响应信息的函数名:
req.onreadystatechnage = processResponse();
XMLHttpRequest API:
1. 属性:
readyState: 0: 未加载, 1: 正在加载, 2: 已经加载, 3: 正在处理, 4: 处理完成 -> 表示发送完毕, 响应信息正在填充到XMLHttpRequest对象中.
status: HTTP服务器响应状态码, 200: OK, 404: 页面未找到, 500: 资源内部程序异常.
2. 响应信息对象:
responseXml: xml类型的DOM对象, 针对响应内容为XML的内容.
responseText: 针对字符串内容.
MYSQL 授权语句:
表级授权:
grant privilege(select, insert, delete)
on db_name.table_name
to username@host identified by ‘123456’, username2@host identified by ‘123456’.
mysql> grant select, delete, insert
on apax.user
to demo@localhost identified by ‘123456’.
撤销授权:
mysql> revoko insert, delete, select
on apax.user
from demo@localhost .
数据库级授权:
mysql> grant reload, process, select, delete, insert
on *.*all
to demo@localhost identified by ‘123456’.
数据库级取消权限:
mysql> revoke create, drop, alter
on apax.*
from demo@localhost
Column级授权:
mysql> grant select(oid,username), update(oid,username)
on apax.user
to demo@localhost indetified by ‘123456’.
All Privileges:
mysql> grant all
on apax.*
to demo@localhost
identified by ‘123456’;
remoke all
on apax.*
from demo@localhost;
Only create User, not grant privilege:
mysql> grant usage
on apax.*
to yufei@localhost;
mysql授权机制:
mysql> grant [select, insert, delete] [all] [select(oid,username)]
on [apax.*][apax.user]
to demo@localhost
identified by ‘123456’
[with grant option]
mysql> flush privileges; // 立即启用权限
mysql> revoke [grant option][all][select, insert]
on [apax.*][apax.user]
from demo@localhost;
Ajax框架:
prototype:
1. 简单封装了XMLHttpRequest, 常用函数: F("").
2. 应用: 部门员工下拉列表
3. 常用函数:
Ajax.Request(""):
封装了请求, 并将响应信息自动填充到div或span.
参数列表: url, json{method: 'get', parameters: {id: '123', username: 'yufei'}, onSuccess: function(){...} }
Ajax.update("left","/ajax/hello.do", {method: 'get'});
参数列表: div/span元素, url, json{}.
Ajax.periodicalUpdater():
参数列表: div/span元素, url, json{}.
实时更新应用: 股票, 时刻表, 论坛, 聊天室.
Ajax处理响应的XML:
var doc = req.responseXML;
var deps = doc.getElementsByTagName(“dept”);
for(var i=0;i
<
Struts2笔记:
Struts1体系结构:
```
Web Brower struts-config.xml
| | 分控制器: Action-----
| | | |
| | | |
Web Server ------> 主控制器: ActionServlet ---> ----> ActionForm和JavaBean --> Service + DAO
| | | |
| | | |
| | 分控制器: Action-----
|<------------------试图: JSP
|_____struts2支持诸如freemarker/velocity,报表,流等技术.
```
struts1详细流程图:
```
Web Brower struts-config.xml
| | 分控制器: Action-----
| | | |
| | | |
Web Server ------> 主控制器: ActionServlet ---> ----> ActionForm和JavaBean --> Service + DAO
```
- 职业生涯
- 如何提升你的能力?给年轻程序员的几条建议
- 那些年,那些事
- 阿里巴巴离职DBA 35岁总结的职业生涯
- 人生的四种选择
- 程序人生的四个象限和两条主线
- 几缕代码与闲思
- 张小龙-学习笔记
- Web前端
- 移动Web手册
- 精通CSS: 高级Web标准解决方案
- 悟透JavaScript
- 架构设计
- 大型网站技术架构
- 周爱民-大道至简
- RESTful Web Services Cookbook - 读书笔记
- 大话设计模式
- Unix编程艺术
- 把程序员修炼之道读薄
- 学习能力
- 奇特的一生:读书笔记
- zhh-看源码那些事
- 一个创业者怎么看待读书和写作
- 程序员修炼之道
- 2015/1/5 头脑风暴
- 书单计划
- 2014年我读过的那些书
- 我的后端开发书架2015
- 别人的书单
- 读书笔记
- 浪潮之巅
- 达内时期自己笔记整理
- Effective Java
- 打造facebook: 读书笔记
- 面试整理
- 阿里面试的一点感受
- 腾讯的三轮面试
- 三十之惑–面霸
- 前端面试问题汇总
- 八爪网络面试总结
- 2015面试总结总结
- 找工作流程梳理
- 最全前端面试问题及答案总结
- 前端开发面试题收集
- 百度web前端--2015一面
- 百度web前端--2015二面