工作中的小零碎

with item(USERID,USERNAME,PASSWORD,BANKNAME,BANKCODE,ORDERNUMBER,ISVALID,SUPERVISECODE,USERTYPE,GROUPID,ISREPORT,PARENTCODE,ISUNITE,BANKTYPE)
    as (
    select * from m_reportuser  where  bankcode=‘F031H101310101001‘ and usertype=‘0‘
    union all
    select mr.* from m_reportuser as mr,item as mrp
    where mr.parentcode=mrp.bankcode    
    )
select USERID,USERNAME,PASSWORD,BANKNAME,BANKCODE,ORDERNUMBER,ISVALID,SUPERVISECODE,USERTYPE,GROUPID,ISREPORT,PARENTCODE,ISUNITE,BANKTYPE from item

sql.append("  select *  from ( select  rownumber() over(ORDER BY LOGTIME DESC) as rownumber_,");
sql.append("  l.LOGID, l.USERID, l.USERNAME, l.IPADDRESS, l.SUPERVISECODE,l.SUPERVISENAME, l.DEPARTID, l.DEPARTNAME, l.CONTENT, l.LOGTIME from m_log l ,item i ");
sql.append("  where l.userid=i.username ");
sql.append("  ORDER BY LOGTIME DESC ) as temp_ ");
sql.append(" where rownumber_ between "+((pageObject.getPageCurrent()-1)*pageObject.getPageSize()+1)+
" and "+pageObject.getPageCurrent()*pageObject.getPageSize());
=====================================================
if(i=22)  为啥一直是true ?  只要不为0,就是true。 例:if(a=3)  相等于 if(3)

==========================================
2014.07.03
spring概述:
spring就是管理bean的。bean对于spring的意义就像object对于oop的意义一样。
核心:bean,core,context。

bean:演员。
context:舞台背景。
core:道具。

bean包裹object。object要有数据。

context给数据提供生存环境。context发现对象间的关系,建立并且维护好这些关系。
所以context就是一个bean关系的集合,这个关系集合又叫IoC容器。一旦建立起这个容器spring就可以开始工作了。

core发现、建立和维护每个bean之间的关系所需要的一系列的工具。core可以理解为util。
==========================================
spring详述:
------------------------------------
bean组件:
位置:在org.springframework.beans包下。
作用:bean的定义、创建(需要关心)、解析。其他两个在spring内部完成了。
模式:工厂模式。顶级类BeanFactory。

BeanFactory:ListableBeanFactory ,HierarchicalBeanFactory,AutowireCapableBeanFactory.
最终实现类是DefaultListableBeanFaction,它实现了所有接口。

多层次的接口:每个接口都有它使用的场合,主要是为了区分在spring内部在操作过程中对象的
传递和转化过程中,对对象的数据访问所做的限制。

ListableBeanFactory接口表示这些Bean是可列表的,
而HierarchicalBeanFactory表示的是这些Bean是有继承关系的,也就是每个Bean有可能有父Bean。
AutowireCapableBeanFactory接口定义Bean的自动装配规则。
这三个接口共同定义了Bean的集合、Bean之间的关系、以及Bean行为。

Context组件
位置:在org.srpingframework.context。
作用:给spring提供一个运行时的环境,用以保存各个对象的状态。
顶级父类:ApplicationContext.(AC继承了BeanFactory,
也就说明了spring容器运行的主体对象是bean;还继承了ResourceLoader接口,
使得可以访问到任何外部资源)
AplicationContext必须要完成以下几件事:
1.标识一个应用环境;
2.利用BeanFactory创建Bean对象;
3.保存对象关系表;
4.能够捕获各种事件。
Context作为Spring的Ioc容器,基本上整合了Spring的大部分功能,或者说是大部分功能的基础。

Core组件:
重要的组成部分:定义了资源的访问方式。
==========================================

使用线程可以改善程序的五个方面:
1充分利用CPU资源;
2.简化编程模型;
3.简化异步事件的处理;
4.使GUI更有效率;
5.节约成本。
==========================================
继承Thread资源不共享,实现Runnable接口,资源共享。
==========================================
实现Runnable接口比继承Thread类所具有的优势:
1):适合多个相同的程序代码的线程去处理同一个资源
2):可以避免java中的单继承的限制
3):增加程序的健壮性,代码可以被多个线程共享,代码和数据独立。
==========================================
// 开始线程  
public void start( );  
public void run( );  
 
// 挂起和唤醒线程  
public void resume( );     // 不建议使用  使用这两个方法可能会造成一些不可预料的事情发生。因此,这两个方法被标识为deprecated(抗议)标记,
public void suspend( );    // 不建议使用  这表明在以后的jdk版本中这两个方法可能被删除,所以尽量不要使用这两个方法来操作线程。
public static void sleep(long millis);  
public static void sleep(long millis, int nanos);  
 
// 终止线程  
public void stop( );       // 不建议使用  
public void interrupt( );  
 
// 得到线程状态  
public boolean isAlive( );  
public boolean isInterrupted( );  
public static boolean interrupted( );  
 
// join方法  
public void join( ) throws InterruptedException;  
==========================================
使用 synchronized需注意:
1.synchronized关键字不能继承,如果父类中的某个方法使用了synchronized关键字,而在子类覆盖了此方法,
必须显示地在子类的这个方法中加上synchronized关键字才可以。或者在子类中调用父类中相应的方法。
2.在定义接口方法时不能使用synchronized。
3.构造方法不能使用synchronized关键字,但是可以使用synchronized块来进行同步。
4.synchronized可以自由放置,但是不可以放在返回类型的后面。
5.synchronized关键字只能同步方法,不能同步类变量。
6.虽然从表面上看synchronized锁定的是一个方法,但实际上synchronized锁定的是一个类。
如果静态方法用synchronized关键字定义,此静态方法没有执行完毕将不会继续执行其他静态
方法;非静态方法类似,但是静态与非静态不会互相影响。
==========================================
前台框架 ext(本身太大)easyui(应用范围较小)bootstrap
==========================================
struts2 hibernate spring
===============================
C                1971
objective-C 1983
c++            1983 july
python        1991
oak           1991 june
ruby           1993
perl 4.000    1991 march 21
perl 5.000    1994 october 18
visual basic  1991 may 20
delphi          1995 march 5
javascript     1995 december
java             1995 may 23
php           1995
c#               2000 june 26

===============================
web.xml头文件为2.3时,可直接使用<taglib>标签,但版本较高时,<tablib>标签外需使用<jsp-config>嵌套,原因未知。

<jsp-config>与<web.xml>版本的问题。
===============================
web开发的两种模式:
jsp model 1:用户通过浏览器之间访问web应用的jsp页面,jsp提供UI显示,JavaBeans处理数据库访问和业务逻辑。
优势:直接,简单;对于小型应用,可以很方便、快速的进行开发。
jsp model 2:两者的最大区别是引入了MVC模式的概念。即M(MODEL业务逻辑),V(view系统UI),
C(controller控制)分离,用户的所有请求提交给controller,由controller进行统一分配,并且采用推
的方式将不同的UI显示给用户。
优势:
1.可以统一控制用户的行为,例如在controller中添加统一日志记录等功能是非常方便的。
2.职责分离,有利于部分的维护。用户不直接访问分散的UI,这样可以通过配置文件或者流程定义的方式,
在不同的环节,时间将不同的页面推向给用户。
================================
struts框架是mvc分离的一个杰出作品。
===============================
struts控制器的职责:
1.接受客户请求
2.映射请求到指定的业务操作
3.获取业务操作的结果并以有效的方式提供给客户
4.根据业务操作的结果和当前的状态把不同的UI推向给客户。
===============================
加载ActionServlet时,init()将被调用,开始初始化过程,初始化过程中将发生:
1.初始化框架的内部消息绑定,这些消息用来输出提示,警告和错误信息到日志文件中。
org.apache.struts.action.ActionResources用来获取内部消息;
2.加载web.xml中定义的不同参数,用以控制ActionServlet的不同行为,这些参数包括
config,detail,debug and convertNull;
3.加载并初始化web.xml中定义的servlet 名称和servlet映射信息。通过初始化,框架的各种DTD被注册,DTD用
来在下一步校验配置文件的有效性;
4、 为默认应用加载并初始化Struts配置文件,配置文件即初始化参数config 指定的文件。默认配置文件被解析,
产生一个ApplicationConfig 对象存于ServletContext 中。可以通过关键字
org.apache.struts.action.APPLICATION 从ServletContext中获取ApplicationConfig;
5 Struts配置文件中指定的每一个消息资源都被加载,初始化,并存在ServletContext的合适区域(基于每个
message-resources元素的key属性),如果key 属性没有设置,则为org.apache.struts.action.MESSAGE;
6 Struts配置文件中声明的每一个数据源被加载并且初始化,如果没有配置数据源,这一步跳过;
7 加载并初始化Struts配置文件中指定的插件。每一个插件的init()方法被调用;
8 当默认应用加载完成,init()方法判断是否有应用模块需要加载,如果有,重复步骤4—7万成应用模块的加载。
===============================
当ActionServlet接收到客户请求后,会进行一连串的初始化操作,然后会将客户请求转交给合适的处理器进行
处理,这个合适的处理器就是org.apache.struts.action.RequestProcessor或其子类的一个实例(根据Struts
配置文件中的配置)。提供了默认实现,如果需要自定义这些行为,Struts推荐重载这个类而不是ActionServlet.

===============================
Action被设计为线程安全的,在每个应用中每个Action类只会被实例化一次,供所有线程共享。
RequestProcessor利用一个HashMap用来保存Action实例。
===============================
如果说ActionServlet是Struts框架的入口,RequestProcessor是消化过滤系统,则org.apache.
struts.action.Action类可以说是整个框架的心脏。它是客户请求和业务操作的连接桥,也可以将
其看作是业务操作的客户代理。一旦确定并得到了一个action实例,RequestProcessor会调用
action的execute()方法处理客户请求。
Action类被设计为线程安全的,在每个应用中每个Action类只会被实例化一次,供所有线程共享。
RequestProcessor利用一个HashMap来保存Action实例。
Action的execute()方法返回一个ActionForward对象。ActionForward对象是JSP页面、JAVA Servlet
等web资源的抽象表现。
通过在Struts配置文件中进行action映射,然后通过关键字去查找一个ActionForward。
===============================
思考题:
1.所有线程共享一个action类实例意味着什么,我们在编程中需要注意些什么
A:所有的线程都会此类有读写权限,信息的同步与共享,访问的冲突。

2.Action属于MVC中的Controller还是Model?为什么。
A:我脚着是Controller,因为它肯定不是Model。Controller的主要作用是接收请求、处理并返回。
符合Action的描述。

===============================
servlet生命周期:
1.servlet实例被创建。
2.调用init(ServletConfig config)方法,(在HttpServlet中实际上在init(ServletConifg config)
中调用了init()所以我们可以覆盖init()方法来进行初始化)。
3.接受客户请求,调用service方法。(在HttpServlet中,会调用doGet和doPost)
4.调用destroy()方法。
5.实例被销毁。
===============================
多个筛选器的运行顺序取决于下列规则:
1. 将 filter-mapping 元素包含与请求匹配的 url-pattern的筛选器按其在 web.xml 部署描述符中出现的顺序添加到链中。
2. 将 filter-mapping 元素包含与请求匹配的 servlet-name 的筛选器添加在链中与 URL 模式匹配的筛选器之后。
3. 链上先进先出的,链中最后的项目往往是最初请求的资源。
也就是说:

1.以url-pattern方式配置的filter运行时肯定先于以servlet-name方式配置的filter
2.以url-partern方式配置的filter中,如果有多个与当前请求匹配,则按web.xml中filter-mapping出现的顺序来运行
3.对于以servlet-name方式配置的filter,如果有多个与当前请求匹配,也是按web.xml中filter-mapping出现的顺序来运行
===============================
Listener>Filter>Servlet
===============================
1.初始化Struts的内部资源文件。该文件路径由ActionServlet的internalName字段指定,默认值是org.apache.struts.action.ActionResources,即Struts的JAR包里的org/apache/struts.action.ActionResources.properties及其国际化版本文件。该文件给出了一些应用运行时,由Struts产生的信息,包括一些异常报错信息,从这里可以看出,我们完全可以让Struts自身抛出的异常信息中文化。  
2.1 如果web.xml里ActionServlet的配置中给出了config初始化参数,将该参数的值赋给ActionServlet的config字段;  
2.2 如果web.xml里ActionServlet的配置中给出了convertNull初始化参数,如果该参数值是true、yes、on、y、1中的一个,将ActionServlet的convertNull字段设为true;  
2.3 如果ActionServlet的convertNull字段值为true,则覆盖Apache Commons BeanUtils中几个基本数据类型包装类的转换器的默认实现,使当转换数据类型失败时,返回null,默认的实现是抛出异常。
3.将web.xml里ActionServlet配置中的url-pattern的值赋给ActionServlet类的servletMapping字段。实现方式是用Apache Commons Digester解析web.xml,用Digester内置的CallMethodRule和CallParamRule使web.xml被解析时,自动调用ActionServlet类的addServletMapping(String servletName, String urlPattern)方法。  
===============================
struts核心:action、result、interception
===============================
Struts.xml 配置包含result/view类型、action映射、拦截器等struts2的主要配置文件。
Struts.properties配置struts2的框架属性。
Strtus-default.xml在文件在struts-action-x.x.jar中,该文件是应该被包含在struts.xml中的缺省配置。
Velocity.properties重写了velocity的配置文件
Struts-default.vm相对于velocity的缺省配置
=================================
struts.xml配置文件:主要负责管理应用中的action映射,以及该action包含的result定义
主要内容:action、interceptor、packages、namespace
<include>引用分开的配置文件
=================================
还要注意一个问题,就是dispatcher的forward和response.sendRirect。他们都用来跳转jsp和servlet。但他们是不同的。
不同点在于
1:sendRirect是重定向,这时候 ,上一个request带过来的参数会全部丢失。如要在请求里加新的参数,请在url后面跟上参数。例如response.sendRirect("/ABC/jsp/login.jsp?name="+name);
forward是跳转,参数还保留在request里。

2:sendRirect的根路径是相对于服务器而言,假设你的服务器根路径是http://localhost:8080/
那么response.sendRirect("/ABC/jsp/login.jsp?");
就相当于跳到http://localhost:8080/ABC/jsp/login.jsp

forward的根路径是相对于项目的根路径而言
resquest.getRequestDispatcher("/ABC/jsp/login.jsp");
相当于跳到http://localhost:8080/ABC/ABC/jsp/login.jsp
注意,路径出错了,所以应该这样写
resquest.getRequestDispatcher("/jsp/login.jsp");
相当于跳到http://localhost:8080/ABC/jsp/login.jsp

顺带一提:<a href="/ABC/jsp/login.jsp">登录</a>
<form action="/ABC/servlet/login">
这些链接跟sendRirect是一样的,根路径是服务器的根路径。
=================================
XWork提供了很多核心功能:前端拦截器(intercepor)、运行时表单属性验证、类型转换、
强大的表达式语言OGNL(Object Graph Natation Language)和倒置控制(inversion of
Control,IoC)容器等。
======================================
想要正常使用struts2,以下5个包是必须的:
struts2-core-2.0.11.1.jar
xwork-2.0.4.jar
commons-logging-1.0.4.jar
freemarker-2.3.8.jar
ognl.2.6.11.jar
======================================
struts1通常以.do结尾,struts2通常以.action结尾

<!-- <s:form>中Struts2使用table定位 -->
*******************************************************************
smartfoxServer

Mina

Memcached+mySql

Struts 就分发 , 配置文件 , 过滤器
Hibernate 就配置文件数据源 , 缓存 , hql语句
Spring就上两个框架整合 , 然后更好用一些
====================
在Struts2中最贱的验证数据的方法是使用validate。我们从ActionSupport类的源代码中可以看到,
ActionSupport类实现了Validateable接口。这个接口只有一个validate方法。如果Action类实现了
这个接口,Struts2在调用execute方法之前首先会调用这个方法,我们可以在validate方法中验证,
如果发生错误,可以根据错误的level选择字段级错误,还是动作级错误。并且可以使用addFieldError
或addAtionError加入相应的错误信息,如果存在Action或Field错误,strtus2会返回“input”(zhege
并不用开发人员写,由struts2自动返回)。如果返回了input,Struts2就不会再调用execute方法了。
如果不存在错误信息,struts2在最后会调用execute方法。
这两个add方法(addActionEroor、addFieldError)和actionErrors类中的add方法类似。只是add方法
的错误信息需要一个ActionMessage对象,比较麻烦。除了加入错误信息外,还可以使用addActionMessage
方法加入成功提交后的信息。当提交成功,可以显示这些信息。
=========================
alt+shift+s   +  r  get/set快捷键
=========================
在Action类中获得HttpServletResponse对象的四种方法:
1.使用Struts2 Aware拦截器
2.使用RequestAware拦截器
3.使用ActionContext类
4.使用ServletActionContext类(最简单)
=========================
HttpServletRequest→ActionMapper→Filters→ActionProxy→ConfigrationManager
                                                                      ↓
                          ActionProxy←ConfigrationManager←Struts.xml
                                   ↓
                               interceptor1、2、3→Action
                                                ↓
interceptor1、2、3←Template(jsp、DOJO、FreeMaker、Velocity、etc)←Result
                   ↓
               HttpServletResponse

拦截器                            过滤器
1.基于java反射机制                    |    基于函数回调
2.不依赖于servlet容器                    |    依赖于servlet容器
3.只能对Action请求起作用                |    可以对几乎所有请求起作用
4.可以访问Action上下文、值栈里的对象    |    不能访问
5.在Action的生命周期中,可以多次调用    |    只能在容器初始化时被调用一次
============================
为什么使用struts2代替struts1
1.struts2的execute方法中的参数不会依赖于servletAPI,实现了servlet解耦,是一种无侵入式的设计;
2.struts2提供了拦截器,利用拦截器可以进行AOP编程,实现权限拦截等功能;
3.struts2提供了类型转换器,可以很容易的对请求参数转换秤需要的类型;
4.提供了同种表现层技术支持,如JSP、freemarker、velocity等
5.可以对指定的方法进行校验,可以轻松的实现表单校验功能
5.提供了全局范围、包范围和action范围的国际化资源文件管理实现。
=============================================
配置文件的优先级:
由高到低:web.xml→struts.properties→struts.xml→struts-plguin.xml(只读性)→struts.default.xml(只读性)
===============================
action的名称探索顺序:完全对应、逐步追溯到上级目录查找、"/"下查找、默认namespace下查找
===============================
Struts2新特性
1:用来从动作逻辑中分层出横切关注点的拦截器,为了减少或者消除XML配置基于注解(annotation)
的配置方式,一个贯穿整个框架的强大的表达式语言OGNL(object-graph Navigation Language,
对象图导航语言),智齿可变更和可重用UI组件的基于微型MVC模式(mini-MVC-based)的标签API.
===========================================================
struts2 MVC通过3个核心框架组件实现:动作、结果和 FilterDispatcher
===============
新的struts2组件:ActionContext、拦截器、ValueStack和OGNL
=================
chain:用来处理Action链
dispatcher:用来转向页面,通常处理jsp
redirect:重定向到一个URL
redirectAction:重定向到一个Action

freemaker:处理FreeMarker模版
httpheader:控制特殊HTTP行为的结果类型
stream:向浏览器发送inputStream对象,通常用来处理文件下载,还可用于返回AJAX数据
velocity:处理velocity模版
xslt:处理XML/XLST模版
plainText:显示原始文件内容,例如文件源代码
=======================
OGNL来引用、操作存储在框架不同区域的数据。
interception用途:安全检查(确保访问者是登录用户)、跟踪日志(记录每个action)、
效率瓶颈检查(记录每个action开始和结束的时间以检查程序中的瓶颈)
========================
数据同时存储在动作和ValueStack中。
=========================
struts2核心概念:action、interceptor、和类型转换
==========================
动作的作用:
1.最重要:是为给定请求封装需要做的实际工作
2.在从请求到视图的框架自动数据传输中作为数据的携带者
3.动作必须帮助框架决定哪个结果应该呈现请求响应中返回的视图。
==========================
框架支持使用依赖注入(dependency injection),使用依赖注入可以让如动作这样的代码更整洁、
耦合度更低。
===========================
struts2里面自带param拦截器负责将数据从请求参数转移到动作的JavaBean属性。
================
可知容器对于web.xml的加载过程是context-param >> listener  >> fileter  >> servlet
=================
Action接口也提供了一些有用的String常量,这些常量可以用作返回值来选择合适的结果,常量为:
ERROR、INPUT、LOGIN、NONE、SUCCESS
=================
如果action没有指定动作类的话,Struts2智能默认值会提供继承的默认动作实现,这个默认的动作有
一个空的execute()方法,除了自动返回Action接口的SUCCESS常量作为控制字符串,什么也不做。
================
ActionSupport:它是一个提供了Action接口和其他几个有用接口的默认实现的便利类,提供了诸如
数据验证、错误消息本地化等功能。使用这个类是个好主意。
================
拦截器声明的顺序很重要。
1. 如果在拦截器中,我们不使用invocation.invoke()来完成堆栈中下一个元素的调用,而是直接返回一个字符串作为执行结果,那么整个执行将被中止。
2. 我们可以以invocation.invoke()为界,将拦截器中的代码分成2个部分,在invocation.invoke()之前的代码,将会在Action之前被依次执行,而在invocation.invoke()之后的代码,将会在Action之后被逆序执行。
======================
AOP面向切面编程:是OOP的延续。
主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。
=============================
控制流的分离使得workflow拦截器在进入动作的execute()方法之前可以中止整个请求处理并且
重定向回输入页面。这正是拦截器提供的分离类型。
=================
java 5之前List不支持类型指定。
==================
3.5.2:
预处理(preprocessing):从多重请求到请求参数(params拦截器会自动转移到动作上)之间的转换。
后加工(postprocessing):发生在动作执行之后拦截器再次出发时,用来消除上传文件的临时版本。
==================
3.6
Action必须要做的三件事:
1.封装了框架与模型的交互
2.作为请求处理过程中的数据转移对象
3.负责返回一个控制字符串,框架用它来选择合适的result向用户呈现视图。

==========================

时间: 2024-10-11 04:54:23

工作中的小零碎的相关文章

注意编码工作中的小细节

人们常说"细节决定成败". 编码工作中,同样需要关注细节. 本文将给出3个小实例来说明编码中关注细节的重要性,同时给出作者对如何注意编码细节的一点见解(说的不对,请指正). 例1 这个问题如此地显而易见,竟然没有被发现. List<int> numList = new List<int>(); numList.Add(3); numList.Add(1); numList.Add(4); numList.Add(2); numList.Add(5); numLi

工作中的小发现

1.又到了周五.今天有点忙,现在才做完需求,不是有多难,而是启动项目时间花掉了很多. 1.更改之前的习惯: 采用预编译写sql,这是我工作中的虎哥提醒了我,预编译是sql的安全编写方式,预防注入攻击.再也不要写sql+变量了. 2.使用JPA写法.底层也是StringBuilder的拼接.但是提供了多单表的增删该查 3.easyui和js代码. 结合使用,观看性强,更有成就感. 4.代码避免多层循环,用更简洁的方式编写代码. 5.劳逸结合,任务是做不完的. 但需求永无止境. 原文地址:https

工作中的小记录

1.radio在IE8中设置  display:none会造成无法选择的情况 解决办法 position: absolute; left:-99999px; 后发现在安卓UC上,按钮居然又出现了,靠边排着,后再加上一句 margin-left: -999999px; 2.浏览器重排与重绘 使用angular发现,在div(overflow:auto)内部套了个ng-repeat生成的table,在鼠标移到table内, 会发生卡住的现象,即滚轮滚动无响应,后发现调动浏览器大小,问题解决.于是在r

给大家分享12个或许能在实际工作中帮助你解决一些问题的JavaScript的小技巧

使用!!操作符转换布尔值 有时候我们需要对一个变量查检其是否存在或者检查值是否有一个有效值,如果存在就返回true值.为了做这样的验证,我们可以使用!!操作符来实现是非常的方便与简单.对于变量可以使用!!variable做检测,只要变量的值为:0.null." ".undefined或者NaN都将返回的是false,反之返回的是true.比如下面的示例: 01 function Account(cash) { 02 this.cash = cash; 03 this.hasMoney

工作中请注意的十点

第一:不要认为停留在心灵的舒适区域内是可以原谅的. 每 个人都有一个舒适区域,在这个区域内是很自我的,不愿意被打扰,不愿意被push,不愿意和陌生的面孔交谈,不愿意被人指责,不愿意按照规定的时限做事, 不愿意主动的去关心别人,不愿意去思考别人还有什么没有想到.这在学生时代是很容易被理解的,有时候这样的同学还跟“冷酷”“个性”这些字眼沾边,算作是褒义.然而相反,在工作之后,你要极力改变这一现状.否则,你会很快变成鸡尾酒会上唯一没有人理睬的对象,或是很快因为压力而内分泌失调.但是,如果你能 很快打破

程序员工作中会遭遇的天花板 工作中不由你控制的一些地方(转)

在我看来,程序员做的是开创性的工作.互联网的发展不但推动了技术的发展,而且带来了技术的普及.因此程序员不比以前,现在要找某方面的资料是很easy的事情了.看过大量的资料,各种新颖的技术方案和解决思路,不心动那是不可能的.OK,想用某某某框架,想用某某某技术,但是,因为各种原因,没办法应用到自己开发的项目中.这就是一个天花板. 在工作中往往有各种各样的天花板,比如绩效考核,项目进度,被打断的思路,技术架构.因为你不是做决定的那个人,所以你就有天花板. 绩效考核 很多公司都有绩效考核,在我看来绩效考

工作中常用的快捷键

早期工作时,只要用鼠标点点基本上就够用了.随着工作责任的加大,时间都感觉不够用,恨不得分身.这个时候就不得不想办法去节省时间.快捷键既省时又帅气,还能拿来装b,自然得去花点时间了解下.这东西没难度,关键是要多用,养成一种习惯.记得某些文章说过大牛都是不用鼠标的,都是全键盘操作.下面将个人常用的快捷键整理了下: 电脑常用快捷键 1.WIN(微软图标)+E 打开资源管理器,也就是“计算机”或“我的电脑” 不用去找 “计算机”或“我的电脑”在哪,特别适用于操作别人的电脑,有的人电脑桌面文件一堆,让人眼

在工作中如何做到优秀,在工作之外如何做到自己(一)

首先,既然想讨论这个问题,肯定是自己没做到. 罗老师,您能让我把话说完吗?(sorry,刚才老罗乱入) Part 1,在工作中如何做到优秀 积极.认真的态度,这个最重要. 要有心把手中的工作做到最好,才有可能做到,否则以一种随便的态度对待,事情的完成度可想而知.在一些小的事情上,也要认真.举两个一直记到现在的例子吧,一是高中毕业时,学生要写一些教学反馈和意见,我这个懒人就随便写了点,但是前座团支书写的让我吃了一惊,文书工整.条理清晰.写的满满当当的.这是一种习惯,也是学生对学校应有的责任.另一个

你在工作中无意间会犯的四个错误

4 Work Mistakes You Don't Realize You're Making你在工作中无意间会犯的四个错误When you’re the new girl at work, you do everything in your power to stay on your best behavior. You show up to the office early, leave late, dress conservatively, and absolutely never, ev