分类 Java 下的文章

eclipse不自动弹出提示(Alt+/快捷键时效)

问题描述:

syso用Alt+/快捷输入无效,我的是java中的一些类名或这上下文中的变量、属性不自动提示。

解决方案:

1、此方法用于没有一点提示的情况:依次打开eclipse上面的windows ——preferences ——java ——editor —— content assist ,在右上方有一行“select the proposal kinds contained in the 'default' content assist list” 下面,勾选Java Prolosals 复选框,保存退出即可。
请输入图片描述

2、此种方法用于打出单词缩写没有提示的情况(例如:打出syso没有提示):依次打开eclipse上面的windows ——preferences ——java ——editor —— content assist,在右边部分偏下的地方找到“Auto activation triggers for java:”这一项,后面是一个文本框,在后面的文本框输入字母abcd,然后点击 applay-->OK 保存退出,选择导出 File —— General —— Export 选择preferences 再选中Export all 复选框(下面的不需要管),并指定导出文件的名字和路径(注意只能导出.epf格式的文件)。然后在你指定的路径下找到刚刚导出的文件epf文件,(可以用记事本)打开它,再找到刚刚输入的abcd(或者abc),再在其后添加其余的22个英文字母,保存后,再用eclipse的导入功能把该文件导入到eclipse中,就可以实现单词联想提示功能。


- 阅读剩余部分 -

java内存管理

【待解决】不太清楚为什么,但是java进程就是占据了内存的一大半。我记得php运行就不怎么占内存,至少top里面是找不到的,是否是有什么方案可以优化这种情况的呢?

java内存管理

maven错误集锦

1.maven从本地库引入依赖包,编译报错找不到类:

首先pom.xml中添加依赖

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
        </dependency>
        <dependency>
            <groupId>com.imooc.maven01</groupId>
            <artifactId>maven01-model</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>

之后在maven01-model项目下提交jar包到本地库:mvn install。再次编译mvn comile,ok。

引入类需为公共的,及访问修饰符为public

tomcat 配置虚拟主机

测试环境:

windows 7
tomcat 7

基于主机名的虚拟主机配置

在随意盘符下建立一个目录作为虚拟地址的目录。例如:F:\virtualhost1,在其下建立test1.html,写入内容例如:test
tomcat/conf/service.xml中 加入如下配置一段<Host>配置:

<Host>
...... 
</Host>  这里的Host配置,是配置文件原本就有的,下面的需要我们自己增加

<Host appBase="F:\virtualhost1" autoDeploy="true" name="test.localhost" unpackWARs="true">       
        <Context path="" docBase="." debug="0" />
</Host>

注意:Context标签一定要有,经测试,直接在appBase中添加项目路径无效,解析不出来

打开C:\Windows\System32\drivers\etc 下面的hosts文件 加入127.0.0.1 test.localhost

127.0.0.1       localhost  
127.0.0.1       test.localhost

在tomcatwebapps下的ROOT文件夹下创建hello.html 内容写入 hello。
启动tomcat(如果未启动的话)
在浏览器输入:http://localhost:8080/index.html, 将显示:hello
在浏览器输入:http://test.localhost:8080/index.html, 将显示:test

实际上 二者的ip是一样的,都是127.0.0.1 但是却实现了访问两个“主机”上的资源,一个是tomcat下的,一个是F盘下的。假如A,B两公司很穷,网站公用一台服务器,但又不能够直接输入IP来进入,因为只有一个IP,这里在一台电脑上设置虚拟,二者设置不同的虚拟目录,使用虚拟目录名来访问便可实现公用,实际还是一个ip,一台主机。

基于端口的虚拟主机配置

在随意盘符下建立一个目录作为虚拟地址的目录。例如:F:\virtualhost2,在其下建立test1.html,写入内容例如:test2
tomcat/conf/server.xml里加入一段 <Service> 配置,如下:

<Service>
    <Connector ......./>
    <Engine defaultHost="localhost" name="Catalina" >
    .......
  </Engine>  
</Service> 这里的配置也是文件原本就有的,下面是增加的。
<Service>
    <Connector connectionTimeout="20000" port="8082" protocol="HTTP/1.1" redirectPort="8443"/> 
    因为是基于端口的配置,这里的8082端口是新增的,以后的访问将用到
    <Engine name="second" debug="0">
        <Host appBase="F:\virtualhost2" autoDeploy="true" name="localhost" unpackWARs="true">
        <Context path="" docBase="." debug="0" />
        </Host>
    </Engine>
</Service>

启动tomcat(未启动的话)
输入 http://localhost:8080/index.html,将显示hello
输入 http://localhost:8082/index.html,将显示test2

这里通过不同的端口进来实现了,不同基于不同端口的虚拟主机的配置。

基于端口的没有试过,但基于主机名的没有问题,亲测可用

转自Tomcat配置虚拟主机的两种方式

重捡java - 控制反转(IOC)与依赖注入(DI)

转自IOC 的理解与解释 - NancyForever - 博客园

IOC 是什么?

Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下:

●谁控制谁,控制什么:传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创建依赖对象;而IoC是有专门一个容器来创建这些对象,即由Ioc容器来控制对象的创建;谁控制谁?当然是IoC 容器控制了对象;控制什么?那就是主要控制了外部资源获取(不只是对象包括比如文件等)。

●为何是反转,哪些方面反转了:有反转就有正转,传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象;为何是反转?因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;哪些方面反转了?依赖对象的获取被反转了。

IOC 能做什么?

IoC不是一种技术,只是一种思想,一个重要的面向对象编程的法则,它能指导我们如何设计出松耦合、更优良的程序。传统应用程序都是由我们在类内部主动创建依赖对象,从而导致类与类之间高耦合,难于测试;有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。

其实IoC对编程带来的最大改变不是从代码上,而是从思想上,发生了“主从换位”的变化。应用程序原本是老大,要获取什么资源都是主动出击,但是在IoC/DI思想中,应用程序就变成被动的了,被动的等待IoC容器来创建并注入它所需要的资源了。

IoC很好的体现了面向对象设计法则之一—— 好莱坞法则:“别找我们,我们找你”;即由IoC容器帮对象找相应的依赖对象并注入,而不是由对象主动去找。

IOC 和DI:

DI—Dependency Injection,即“依赖注入”:是组件之间依赖关系由容器在运行期决定,形象的说,即由容器动态的将某个依赖关系注入到组件之中。依赖注入的目的并非为软件系统带来更多功能,而是为了提升组件重用的频率,并为系统搭建一个灵活、可扩展的平台。通过依赖注入机制,我们只需要通过简单的配置,而无需任何代码就可指定目标需要的资源,完成自身的业务逻辑,而不需要关心具体的资源来自何处,由谁实现。

理解DI的关键是:“谁依赖谁,为什么需要依赖,谁注入谁,注入了什么”,那我们来深入分析一下:

●谁依赖于谁:当然是应用程序依赖于IoC容器;

●为什么需要依赖:应用程序需要IoC容器来提供对象需要的外部资源;

●谁注入谁:很明显是IoC容器注入应用程序某个对象,应用程序依赖的对象;

●注入了什么:就是注入某个对象所需要的外部资源(包括对象、资源、常量数据)。

IoC和DI由什么关系呢?其实它们是同一个概念的不同角度描述,由于控制反转概念比较含糊(可能只是理解为容器控制对象这一个层面,很难让人想到谁来维护对象关系),所以2004年大师级人物Martin Fowler又给出了一个新的名字:“依赖注入”,相对IoC 而言,“依赖注入”明确描述了“被注入对象依赖IoC容器配置依赖对象”。