手机捕鱼赢现金收获不菲java如何声明一个集合实例?

( 手机捕鱼赢现金收获不菲 )

List one = new ArrayList();
List<String> two = new ArrayList<>();
List<String> three = new ArrayList<String>();

我看官方文档中表示第三中是jdk1.7新加的和第二种没有本质的区别,我简单测试了测试了第一种也没有发现错误,第一种写法有哪些缺陷或者问题吗?

第一种写法没有指定list中元素的类型。后两种都指定了。其中第二种用了类型推导。

第一种里面没有指定元素类型的话,你取出数据时需要用强制转型将数据转为String型。更加严重的问题在于,你可以将非String类型的数据存入list中,且编译器不会报错,有可能导致运行时异常。而后两种写法出现这种情况时编译器都会报错,从而防止在代码里埋炸弹。

这里需要注意一点就是,List<String> two = new ArrayList<>();,如果你能够预计数据量的大小,一定要使用 List<String> two = new ArrayList<>(预计数据量的大小); 这样有利于提高 if (minCapacity - elementData.length > 0) 的阀值,减少扩容的几率。

(看完/读完)这篇文章有何感想! 手机捕鱼赢现金收获不菲的分享…

手机捕鱼赢现金收获不菲如何修炼深厚的功底

( 手机捕鱼赢现金收获不菲 )

现在刚刚大四,在一家金融互联网企业实习。

看到好多人30多岁了还是一名普普通通的程序员,不想那样。

想成为一个架构师,或者至少能精通某一方面。

觉得现在应该做的,就是修炼自己的基础吧,比如数据结构,算法,操作系统之类的。

喜欢java

现在就想练就很好的java功底,如果有深厚的功底,学其他的也应该会事半功倍的吧。

这里大牛很多,所以想请教一下大家,对修炼基本功有什么好的建议?

或者从一个普普通通的还不算程序员的一个实习生,如何能一步步的走向架构师。

或者如果成为一个很优秀的程序员,至少要精通哪些方面。

书籍啊,方法啊,路线啊,甚至心态,都可以赐教的!

谢了!

随便说说吧,也不知道对你有没有参考价值。因为我就是30多岁的普普通通的程序员,而且我也并不很渴望变为管理职位或者架构师。
也可能是我见识的架构师较少,接触过几个都是满嘴buzz word,画几个框图,更喜欢说代码而非写代码类型的。如果是这种架构师,真的不是很合我的胃口。我还是宁愿写出实打实的代码,看到程序跑起来真正做出点事情。无所谓职位的名称是程序员,软件工程师或者架构师什么的。
所以对我而言,在这一行要提高,最重要的是喜欢写代码,喜欢改进代码,喜欢解决问题。

另一点是要不信邪。具体来说就是相信一件事总有它的原因,而程序员的任务就是找到它。
有个故事说某个汽车厂子接到客户故障报告,说每次他去买香草冰淇淋的时候车子就熄火,买巧克力冰淇淋就不会。初听起来完全是天方夜谭式的问题。但是后来工程师在仔细观察后发现,他去的冰淇淋店香草冰淇淋卖的最好,所以摆在最前面以便最快被顾客买到。所以买香草冰淇淋比买其它品种快一些。而那个型号的车子恰好有个缺陷,在这个时间间隔内重新发动就会熄火。
所以,如果一个人碰到比较奇怪的bug,马上就开始怀疑IDE,怀疑编译器,怀疑操作系统,怀疑硬件有问题,然后开始焦躁觉得闹鬼了。基本上他很难成为一个好的程序员。

首先一个必须要有的,就是多写。通过多写,把最基本的任务变成本能,什么创建循环,转换数字,过滤集合,等这些做的熟练了,你才会有足够精力去思考更上层的设计。

其次是阅读和搜索能力。在搜索的时候找准关键字,一下就能得到答案,这也需要多年的积累。

用各种数据结构,然后深入算法研究。

需求 实践 碰到问题 分析原因 多问为什么 总结问题解决的过程 分享 如此反复~

架构师也是程序员,程序员并不能从职位等条件上分出好坏(有参考价值),能分出高下的是解决问题的能力,其最直接的体现就是代码和产品。

所以答案就是多做,没别的。但是多做了并不能保证你优秀,有时候差距的确能体现在天赋、阅历等题外因素上。

个人觉得目前这个阶段你考虑太远了。先给自己设定个两到三年的目标,然后看实现结果再说。

想的太远没用的,要立足于当下。鸡汤偶尔喝一点,不要喝太多。任何一行一业都是这个道理。

天赋是有用的,但是天赋只会决定你的速度快与慢。反过来,某种程度上,太快了反而会导致太慢。

编程是一门技能。既然是技能,那它就和其他技能一样,想要得到提高,就唯有勤加练习,别无他法。

再说基础,说到编程,那就必须夯实自己的计算机基础:计算机组成原理、数据结构、算法等。这和设计行业一个道理,看日本设计大师的成长经历,很多都是建筑、平面、产品来回跳,甚至样样都有不凡的成就,因为设计的基础(本质)就是审美水平(色彩搭配、空间感等)。编程同样如此,底层知识,或者说事物的本质,永远不会过时。

最后,就是价值观(三观)的问题了,这个太复杂,三言两语反而说不清。

我也大四,以上是我学习前端开发三个多月来的一点心得,希望对你有所帮助。

看到好多人30多岁了还是一名普普通通的程序员

很多是几个?不要一叶障目

(看完/读完)这篇文章有何感想! 手机捕鱼赢现金收获不菲的分享…

网络捕鱼赢现金游戏jdk1.6.0_45 如下代码有问题,高手能指出原理吗?

( 网络捕鱼赢现金游戏 )

    public  String decodeByteBuff(ByteBuf buf) throws IOException, DataFormatException {
    
           byte[] temp = new byte[buf.readableBytes()];
           ByteBufInputStream bis = new ByteBufInputStream(buf);
           bis.read(temp);
           bis.close();
           Inflater decompresser = new Inflater(true);
           decompresser.setInput(temp, 0, temp.length);
           StringBuilder sb = new StringBuilder();
           byte[] result = new byte[1024];
           while (!decompresser.finished()) {
                int resultLength = decompresser.inflate(result);
                sb.append(new String(result, 0, resultLength, "UTF-8"));
           }
           decompresser.end();
           return sb.toString();
    }

上面那段代码在jdk7没任何问题,在jdk1.6.0_4,占用cpu 100%
郁闷,是jdk的bug吗?有高手解答下吗?

(看完/读完)这篇文章有何感想! 网络捕鱼赢现金游戏的分享…

捕鱼平台能换现金的一台服务器上有两个 tomcat 部署的网站,已注册两个域名,怎么配置,才能实现2个域名不带端口分别访问这两个网站

( 捕鱼平台能换现金的 )

已经,安装两个tomcat 服务器,将这两个网站项目分别放到 独立的tomcat 服务器中。

Tomcat用两个不同的端口号启动,然后用Nginx做反向代理,配置虚拟主机。

server {
    listen 80 default_server;
    server_name _;
    return 444; # 过滤其他域名的请求,返回444状态码
}
server {
    listen 80;
    server_name www.aaa.com; # www.aaa.com域名
    location / {
        proxy_pass http://localhost:8080; # 对应端口号8080
    }
}
server {
    listen 80;
    server_name www.bbb.com; # www.bbb.com域名
    location / {
        proxy_pass http://localhost:8081; # 对应端口号8081
    }
}

可以参考我的一篇博客:http://xxgblog.com/2015/05/17/nginx-start/ (4、虚拟主机)

不用安装两个tomcat啊,修改一下conf/server.xml文件。具体可以百度搜索“tomcat多域名配置”

(看完/读完)这篇文章有何感想! 捕鱼平台能换现金的的分享…

手机捕鱼赢现金收获不菲Java中可以把类定义成局部变量,有什么实际意义吗?

( 手机捕鱼赢现金收获不菲 )

今天笔试遇到的试题,一下子把我打得措手不及。
想问下大神,这种有没有实际运用场景的。

public class Test {
    
       public int test() {
           // 把类C定义成局部变量
        class C{
            public int num = 1;
        }
        C c = new C();
        return c.num;
    }
    
    public static void main(String[] args) {
        
        // 把类B定义成局部变量
        class B {
            public int n = 3;
        }
        Object o = (Object) new B();
        B b = (B) o;
        System.out.println(b.n);
        
        System.out.println(new Test().test());
    }
}

在方法中有两种方式定义类:

   public void myMethod()
    {
        // 匿名内部类
        Runnable r = new Runnable() {
            public void run() {}
        };

        // 局部内部类
        class LocalClass implements Runnable
        {
            public void run() {}
        }
    }

题主说的就是局部内部类,在使用上和匿名内部类效果上是一样的,我想大多数人更倾向于使用匿名内部类。它们有如下特点:

  • 能访问方法中的final变量

  • 外部包括本类中的其他方法都是不可见的

实际开发中最常见的使用方式,就是实现Runnable了。

延迟初始化占位类,Java Concurrency in Practice有讲。主要作用就是延迟初始化+安全发布。

延迟初始化+安全

实际应用中,可以用作json解析么。

这是内部类吧……前几楼的说法不太懂

随便百度的内部类详解

题主的栗子在这个详解中是第4点,方法内的内部类,最下面也有说为什么要用内部类

  1. 内部类方便私有化,安全,而且使外部代码简洁。

  2. 内部类是面向对象的闭包

  3. 私有静态内部类, 只有当有引用时, 该类才会被装载,就是上面说的延迟加载啦。。。

(看完/读完)这篇文章有何感想! 手机捕鱼赢现金收获不菲的分享…

手机捕鱼赢现金收获不菲java中的重写后的equals方法

( 手机捕鱼赢现金收获不菲 )

是比较两对象是否具有相同属性的类别的,当ture时为什么其哈希码一样啊,即内存地址一样啊?
比较地址不是==吗?

首先,hashCode和内存地址没关系。

equals的定义是当两个对象等价时返回真,否则返回假。equals的实现通常要对比两个对象中的所有成员变量。如果某些成员变量为容器或对象,则也需要判断两个对象中的容器或对象是否相等。通常来说这是一个代价比较高的操作。

而hashCode的作用是用于hashMap和hashSet中确定存储位置以及在大规模等价比较中完成初筛(比如去重),其定义是当两个对象等价时必然有相等的hashCOde,不等价时尽量拥有不同的hashCode。在去重时,如果没有hashCode,那么需要进行n(n-1)/2次equals,而如果有了hashCode,就只需要进行n次hashCode和n(n-1)/2次int相等判断,然后在hashCode相等时再进行equals比较。效率会高得多。

hashCode的生成方式可以自己决定,可以是所有变量处理为数字后的和,可以是所有变量合并后md5再转为int。也可以是其中部分变量处理后的结果。总之hashCode的实现原则是保证两个equals为真的对象hashCode相同的前提下,使得equals为假的对象hashCode尽可能不同,同时还要提高hashCode自身的执行效率。

(看完/读完)这篇文章有何感想! 手机捕鱼赢现金收获不菲的分享…

网络捕鱼赢现金游戏用jdbc连接数据库时,数据库密码为空,应该什么都不写还是写空字符串?

( 网络捕鱼赢现金游戏 )

你要明白数据库密码为空和没有密码是两个概念,不要混淆。

在mysql中通过jdbc连接数据库,在配置文件设置jdbc.password= 表示的是数据库密码为空。
如果数据库没有设置密码,建议在配置文件里移除 jdbc.password=,如果你设置了密码,创建连接池时可能会出现下面错误:

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Access denied for user ‘root’@’localhost’ (using password: YES))

不写就可以了

这个问题很简单,你试一下就行,如果出错了,你自己就记住了,动手最重要,虽然善于提问或搜索是必要技能

(看完/读完)这篇文章有何感想! 网络捕鱼赢现金游戏的分享…

手机捕鱼赢现金收获不菲没有myeclipse的情况下如何将javaweb项目发布到tomcat

( 手机捕鱼赢现金收获不菲 )

不用myeclipse

直接部署到tomcat 的webapps目录下,运行tomcat(点击tomcat安装目录下bin下的startup.bat)就行了,然后运行你的程序!

去google下如何手动部署web项目到tomcat。
貌似是需要修改context.xml文件才行,直接放到webapps下是不行的

mvn package 然后把 war 包扔 webapp 目录里.

题目不清楚啊,如果有现成的war包,直接放到tomcat的webapp目录下,如果没有那要先写脚本打包,打包方式有如下几种:

  1. 如果是maven构建的,直接mvn package

  2. 写ant脚本

  3. 各种能调用java命令,操作文件的脚本,比如bat,shell,python等等

(看完/读完)这篇文章有何感想! 手机捕鱼赢现金收获不菲的分享…

捕鱼平台能换现金的在linux下tomcat不能解析使用了jstl的jsp页面

( 捕鱼平台能换现金的 )

今天要吧win下开发的一个项目移到linux下(fedora22) 在windows上运行是正常的
但是移动到linux下后可以正常运行, 但是访问页面会报错

HTTP Status 500 - java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.jsp.login_jsp

再刷新就变成

HTTP Status 500 - /WEB-INF/jsp/login.jsp (line: 43, column: 22) attribute value for [test] is not properly terminated

一直刷新就会轮流出现这两个错误
但是!!!!!!!
如果使用maven的tomcat插件启动项目的话可以正常运行!
如果把jsp页面的所有使用jstl的地方都注释掉的话也能正常运行

我再maven里引用是:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

有没有谁遇到过这样的情况的? 求帮忙 弄了一天实在解决不了了。。。 重装tomcat什么的试了好几次了。。。
使用jetty的话也是这样的情况 用maven的jetty插件能正常 注释掉jstl使用的部分也正常 唯独使用jetty部署会出问题…

找到问题所在了。。 是我标签内的el表达式有错(然而神奇的是它之前居然运行的很正常, 用maven部署从不出错。。)

        <c:if test = "${null != error && !\"\".equals(error)}">
              ......
        </c:if>

一开始我是这样写的, 后来改成这样就正常的

        <c:if test = "${null != error && !empty error}">
            .........
        </c:if>

如果有哪位大神知道为什么在其他情况下能正常工作请告知一下, 谢谢!

是你安装的jdk的问题,

(看完/读完)这篇文章有何感想! 捕鱼平台能换现金的的分享…

手机捕鱼赢现金收获不菲使用jsr(hibernate-validation)进行数据时,如何更改验证规则?

( 手机捕鱼赢现金收获不菲 )

比如说,我有个bean,spring在组装数据时,我用jsr的注解定义id不能为空。这个规则适用于我在修改数据时进行的数据校验,但是我若想添加一个这样的bean在组装数据时id就可以为空了,这时我该怎么改变已有的验证规则呢????

(看完/读完)这篇文章有何感想! 手机捕鱼赢现金收获不菲的分享…

捕鱼平台能换现金的在IDEA中编辑javadoc出现错误如何解决。

( 捕鱼平台能换现金的 )

我是根据书<core java>的程序来写,开发环境是JDk1.8和IDEA14.1.4.

public Employee(String n, double s, int year,int month,int day){
        name = n;
        salary = s;
        GregorianCalendar calendar = new GregorianCalendar(year,month-1,day);
        hireDay=calendar.getTime();
    }

Manager继承类Employee

public Manager(String n, double s, int year, int month, int day) {
        super(n, s, year, month, day);
        bonus = 0;
    }

然后是注释部分

/**
* @param n the employee's name
*/

提示错误

this inspection points out unresolved references inside javadoc 

我google了发现这个错误应该和IDEA这个集成开发环境有关,但是并没有找到合适的解决方法,请问大家应该如何解决。

是我的注释位置不对,应该在方法的前面注释。

/**
     *
     * @param n
     * @param s
     * @param year
     * @param month
     * @param day
     */
    public Manager(String n, double s, int year, int month, int day) {
        super(n, s, year, month, day);
        bonus = 0;
    }

(看完/读完)这篇文章有何感想! 捕鱼平台能换现金的的分享…

网络捕鱼赢现金游戏javaweb项目中lib下面的jar包为什么会有两种图标?

( 网络捕鱼赢现金游戏 )

下面的是我刚导入的?

左下角带有黄蓝色小logo意味着这个jar包已经加入项目引用了

你可以试一下,点击jar包然后右键—addToBuildPath 后再试试

(看完/读完)这篇文章有何感想! 网络捕鱼赢现金游戏的分享…

网络捕鱼赢现金游戏java部署服务器

( 网络捕鱼赢现金游戏 )

你好,一个小的java程序部署到服务器上面,是用tomcat来跑吗,请问部署到服务器上的java程序是用什么容器来跑?
不好意思,我是刚接触到这一块…

一般是用Tomcat 历史比较悠久,通用性高,这些容器统称 中间件 有JBoss Tomcat Jetty等

可以用tomcat也可以使用其他的兼容标准的容器 如websphere resin等

很多种 tomcat weblogic jetty ………..

要看你是web工程吗还是普通的Java程序, web工程的话可以用web容器 比如tomcat,jetty之类的 如果你只是普通的Java程序 直接用命令启动就可以了.

tomcat 就可以了。

(看完/读完)这篇文章有何感想! 网络捕鱼赢现金游戏的分享…

捕鱼平台能换现金的用最简单的一句话说清,什么是面向对象?他和过程区别是什么?有什么好处?

( 捕鱼平台能换现金的 )

可能我们都在用面向对象方式编程,我们真的理解到他了吗,每个程序员对面向对象的理解也不一样,每当别人问我为什么用对象不用过程时,我总是说不到一个充分的理由,我一般是这么说的,用对象的好处是,代码简洁,重用性高。。。。说说你们的看法和这么些年的总结阿。

这个问题已被关闭,原因:无法获得确切结果的问题

个人拙见,仅供参考,以期启发,抛砖引玉。

1. 什么事面向对象?

面向对象就是把跟某一主题(类型称为类,实体叫做对象)的所有方法(即函数)和所有属性(即变量)组合起来,用这种逻辑来组织程序的一种程序开发方法。

2. 与面向过程的区别?

面向过程是通过一个一个的函数堆砌起来来组织程序的,面向的是过程(函数),而面向对象是通过一个一个的类/对象堆砌起来来组织程序的,面向的是对象(类/对象)。

3. 面向对象有什么好处?

当软件的规模不断扩大时,面向过程式的程序开发就会遭遇力不从心,一方面难以应付规模带来的压力,后期难以维护,另一方面代码也难以实现复用,造成重复编码(面向对象通过继承应对)。
因此,面向对象开发很好的解决了大型程序开发的困难,程序组织更为清晰,更容易后期维护。

王垠看待面向对象编程(王垠使用Java开发了许多项目,包括他的Yin语言):
http://www.yinwang.org/blog-cn/2015/04/03/paradigms/
王垠这篇文章中关于OOP的见解,提到了,面向对象=过程式+抽象,同时指出了完全面向对象导致过度抽象的问题,过度抽象反而会增加耦合.

“对象思想”作为数据访问的方式,是有一定好处的。然而“面向对象”(多了“面向”两个字),就是把这种本来良好的思想东拉西扯,牵强附会,发挥过了头。很多面向对象语言号称“所有东西都是对象”,把所有函数都放进所谓对象里面,叫做“方法”,把普通的函数叫做“静态方法”。实际上只有极少需要抽象的时候,需要使用内嵌于对象之内,跟数据紧密结合的“方法”。其他的时候,你其实只是想表达数据之间的变换操作,这些完全可以用普通的函数表达,而且这样做更加简单和直接。把所有函数放进对象的做法是本末倒置的,因为函数本身并不属于对象,它们只是对象上面的变换操作。绝大部分函数是独立于对象的,它们不能被叫做“方法”。强制把所有函数放进它们本来不属于的对象里面,把它们全都作为“方法”,导致了面向对象代码逻辑过度复杂。很简单的想法,非得绕好多道弯子才能表达清楚。很多人至今不知道自己所用的“面向对象语言”里面的很多优点,都是从过程式语言继承来的。

大多数的面向对象语言里都缺乏正确的实现一等函数的机制。Java语言是一个极致,它完全不允许将函数当作数据来传递。你需要将全部的函数都封装进类,然后称它们为“方法”,但就像我说的,这是绑架。缺乏一等函数是为什么Java里需要这么多“设计模式”的主要原因。一旦有了一等函数,你将不再需要大部分的这些设计模式。

编程最重要的事情,其实是让写出来的符号,能够简单地对实际或者想象出来的“世界”进行建模。一个程序员最重要的能力,是直觉地看见符号和现实物体之间的对应关系。不管看起来多么酷的语言或者范式,如果必须绕着弯子才能表达程序员心目中的模型,那么它就不是一个很好的语言或者范式。
(引用结束)

个人也觉得,面向对象没有错,错的是”完全”面向对象,因为有时候并不需要采用面向对象,完全面向对象就太过于一刀切了.拿PHP的mysqli扩展来说,其提供有面向对象和过程化两套使用方法.面向对象就是new mysqli()创建一个对象,然后就可以很方便的调用方法和成员.过程化则是使用前缀为mysqli_的一系列函数.在这个场景下,个人觉得new mysqli()的确更合适一些.不过,对于某些场景,比如PHP内置的解析URL的函数parse_url,个人觉得就不需要使用面向对象了,如果再搞个url处理的类,把parse_url放到里面,就太多此一举,把简单问题搞复杂了,作为一个功能性很明确的函数,直接提供给编程人员调用,显然很友好.

抛砖引玉。

Q: 什么是面向对象?
A: 一种编程范式,与面向过程相对,代表一种以数据(对象)为单元的对现实世界的抽象方式。

Q: 面向对象与面向过程的区别是什么?
A: 用程序描述”我吃饭”。面向过程的写法:eat(I, food),面向对象的写法:I.eat(food)。两者最直观的区别是程序的组织方式不同,面向过程的程序以动作(函数)为构建单元,通过在函数中调用其它函数完成对现实世界的描述。面向对象是以数据(名词)为核心,通过对象之间的消息传递构建程序。

Q: 面向对象的好处?
A: 面向对象更符合人类对现实世界的认知,人对抽象的“类”和具体的“对象实例”这些概念从童年起能有很好的理解,例如 “人类”就是一个抽象的 class,而”张三”就是一个属于”人类” class 的 object.面向对象有三大特征:封装、继承、多态,能够避免命名冲突、实现代码复用,对于构建大型程序十分有利。

上面的答案已经说的很清晰了。
面向对象就是对“类”的合理使用。
面向过程就是对“函数”的合理使用。
好处?减少重复的代码,增加可维护性。

以前在大学,跟马士兵老师学习 Java 时,他如是说:

面向过程
汽车启动是一个事件,汽车到站是另一个事件。在编程序的时候,关心的是某一个事件,而不是汽车本身。
编写启动汽车程序。
编写汽车到站程序。
如果汽车坏了,还要编写”修理汽车”程序。

面向对象
先选择操作对象——汽车。在编程序的时候,关心的是汽车本身,让汽车去完成各个动作。
命令汽车——启动。
命令汽车——到站。
如果汽车坏了,命令汽车——修理。

很显然,面向对象是最接近人类思维的编程思想。


依我看,最大的好处就是:

更有助于人类的思考

面向对象的定义,网上一搜一大把。的确,我们每个人都在使用它,却很少有人思考过其中的原因。

事实上,从语法层面上来说: 面向对象只是面向过程的语法糖。继承,多态等等,完全可用面向过程来模拟,只是繁简的区别罢了。

面向对象的存在,肯定是有价值的。诚然,面向过程也可用于软件工程,但为何不被人们所推崇?原因就是: 不好想

人类更愿意用联系的思想去看问题,因为这更贴近生活经验,而面向对象就能很好地体现这种思想。

把事物分解为实现,这是机器的脑子; 把事物联系成整体这才是人类的脑子

上面说的都挺不错的,偶也来凑个热闹~
简单到一句话:(按题主的要求)

  1. 什么是面向对象?对象是数据+操作。

  2. 和面向过程的区别是什么?面向对象更关注数据,而面向过程更关注操作。

  3. 有什么好处?面向对象让我们能更容易去封装数据、封装操作、扩展(继承机制),以及提供更轻量的接口–多态和duckType

楼上说的都挺不错的,但是说好的一句话说清呢。。。

要我说,面向对象比面向过程好的是:人类语言很大程度是面向对象的。(至少中文、英文是。我就会这两个…)

如果非要一句话概括,那么就是:面向对象是将问题模块化,面向过程是将问题程序化

老程序员了,c# JAVA c++ py都走过,现在爱node。那么多年的感觉就是,oo其实就是一种建模方法,简单的说就是你是如何理解这个世界这些业务的,oo只是其中一种。多接触各种不同的思想,才明白其中的差别,别纠结于理论。

化整为零的哲学思想

举一个栗子
实现电商网站里面的一个小功能叫“删除商品”
如果是面向对象:可能的思路是—“删除商品”是对商品进行删除的一种方法,那就在商品这个类里面增加一个方法
如果是面向过程:可能的思路是—“删除商品”就是1,判断用户登录状况;2,判断用户权限;3,对提交的操作进行库表操作;4,返回结果;

不知道说的明不明白,我没有学过面向对象编程,小白的理解~~~~

就拿买笔记本电脑来说吧

过程思维:询问周围朋友–>网上查询报价–>到附近的电脑城自己去买;
对象思维:找个人给他钱,让他搞个笔记本电脑给你。

oo更适合把数据和其对应的操作封装起来,对外隐藏实现细节。

能封装的就封装

我写过java,node,,可以说是从面向对象过渡到了面向对象+面向过程。从我个人的体会来说,面向过程更加快速简便,更加贴近人解决事物的办法。比如,商店卖掉一个球,面向过程的思路就是把球的总数拿过来,减去一,然后保存,同时,添加一个订单。 这种思维方式和现实业务的过程是比较类似的。所以叫做面向过程。

但是面向对象就是另一种方式,它首先要把这些实体都抽象两个类,球,订单。然后提供实现方法。比如,球的类有方法 sell,调用这个方法就会把球总数减1,然后调用订单的方法add,添加订单。总体的思路就是,先设计好类的接口以及交互方式,然后只要在 业务发生的时候, 将消息发送给相关的类就可以了。 这里,我们只需要调用 球的sell方法就行了。至于,它怎么下订单,订单价格,我们都不管。

可以看出,面向对象的方式比较有利于业务逻辑内聚,只要设计好接口,可能很长时间都不用更改类的通讯方式。永远都是 调用球的sell。当球的价格变了,或者有促销了,我们只需要修改sell实现,或者针对临时的促销,实现一个球的子类,比如叫做促销球。这样的话,能最大限度的保证架构的稳定。但是反过来说,如果真的要改架构,成本是比较大的。而且为了保证架构的稳定,前期设计上也会花费更多的资源。

面向过程的优势也正在于此,虽然处理复杂的业务不是强项,但是开发迅速,改变成本也比较小。非常适合复杂度不高或者适中,业务内容多变的开发。

以上。

现在我们来应该讨论 oop 和 aop 。。

封装,继承,多态。

感觉最大的不同就是封装,而继承,多态都可以用面向过程的方法来替代。还有就是上面说的程序的解耦。用类来代替方法确实方便了很多。

(看完/读完)这篇文章有何感想! 捕鱼平台能换现金的的分享…

手机捕鱼赢现金收获不菲Springmvc中这个controller需要一个zqbp_dept的参数,可是jsp哪一步传了参数?

( 手机捕鱼赢现金收获不菲 )

<%@page import=”com.qdzq.zzpt.vo.Page”%>
<%@ page language=”java” import=”java.util.,com.qdzq.zqbp.entity.

pageEncoding="UTF-8"%>

<%

String path = request.getContextPath();
String basePath = request.getScheme() + "://"
  • request.getServerName() + “:” + request.getServerPort()

  • path + “/”;

    //Page<zqbp_dept_person> p //= (Page<zqbp_dept_person>) request.getAttribute("page");
    
    zqbp_dept dp=(zqbp_dept)request.getAttribute("dp");
    Page<zqbp_person> p=(Page<zqbp_person>)request.getAttribute("per");

    Page<zqbp_system> p2=(Page<zqbp_system>)request.getAttribute(“sys”);
    %>

<div class=”pageContent”>

<form method="post"
    action="<%=basePath%>admin/dept/edit.html?navTabId=dept"
    class="pageForm required-validate"
    onsubmit="return validateCallback(this, navTabAjaxDone);">
    <div class="pageFormContent" layoutH="56">
        <p>
            <label>部门:</label> <select name="dept_sys_id" id="dept_sys_id" style="width:180px">
            
        <%
            for (zqbp_system one: p2.getList()) {
        %>
                
            <option value=<%=one.getSystem_id()%> 
            <% if(one.getSystem_id().equals(dp.getDept_sys_id())){%>
                selected="selected"
            <% }%>

<%=one.getSystem_name()%></option>

            
        <%
            }
        %>                                                
        </select>
        </p>
        <p>
            <label>部门负责人:</label><select name="dept_person_id" id="dept_person_id" style="width:180px">
            
        <%
            for (zqbp_person one: p.getList()) {
        %>
                
            <option value=<%=one.getPerson_id()%> 
            <% if(one.getPerson_id().equals(dp.getDept_person_id())){%>
                selected="selected"
            <% }%>

<%=one.getPerson_name()%></option>

</div>
《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《《
这是controller!!!!
public ModelAndView edit(HttpServletRequest request,HttpServletResponse response, zqbp_dept item)

input的name 的值在item中有对应的就可以了

(看完/读完)这篇文章有何感想! 手机捕鱼赢现金收获不菲的分享…

网络捕鱼赢现金游戏为什么这里的 sub() 函数可以只传两个参数?

( 网络捕鱼赢现金游戏 )

一个模版系统
这是程序:

#!/usr/bin/env python
# templates.py

import fileinput, re

# Match strings in [ ]
field_pat = re.compile(r'\[(.+?)\]')

# Collect variables
scope = {}

# for re.sub
def replacement(match):
    code = match.group(1)
    try:
        # If string can be evaluate out a value, return it.
        return str(eval(code, scope))
    except SyntaxError:
        # else exec the assignment statement in action scope.
        exec code in scope
        # ...... return empty string
        return ''

# Get all text in a string
# Also, there is another way, consider Chapter 11
lines = []
for line in fileinput.input():
    lines.append(line)
    text = ''.join(lines)

# replace all items match field pattern
print field_pat.sub(replacement, text)

另外这是 strings.txt 文件内的内容:

[x = 2]
[y = 3]
The sum of [x] and [y] is [x + y]

运行结果如下:

The sum of 2 and 3 is 5

我的疑问是:
程序的最后一行

print field_pat.sub(replacement, text)

为何只有两个参数?
根据官方对 re.sub() 的文档,re.sub() 的最少参数是3个。

官方文档

还是文档Search and Replace

Another common task is to find all the matches for a pattern, and replace them with a different string. The sub() method takes a replacement value, which can be either a string or a function, and the string to be processed.

.sub(replacement, string[, count=0])

Returns the string obtained by replacing the leftmost non-overlapping occurrences of the RE in string by the replacement replacement. If the pattern isn’t found, string is returned unchanged.

The optional argument count is the maximum number of pattern occurrences to be replaced; count must be a non-negative integer. The default value of 0 means to replace all occurrences.

(請搭配 @selfboot 之良方服用)

field_pat.sub(replacement, text) 並不是 re.sub()

Python2

  • sub(repl, string, count=0)

    • Identical to the sub() function, using the compiled pattern.

Python2-sub

>>> import re
>>> field_pat = re.compile(r'\[(.+?)\]')
>>> field_pat
<_sre.SRE_Pattern object at 0x7fa09b67fdd8>
>>> type(field_pat)
<type '_sre.SRE_Pattern'>
>>> field_pat.sub
<built-in method sub of _sre.SRE_Pattern object at 0x7fa09b67fdd8>
>>> help(field_pat.sub)
sub(...)
    sub(repl, string[, count = 0]) --> newstring
    Return the string obtained by replacing the leftmost non-overlapping
    occurrences of pattern in string by the replacement repl.

Python3

  • regex.sub(repl, string, count=0)

    • Identical to the sub() function, using the compiled pattern.

Python3 – regex.sub

>>> import re
>>> field_pat = re.compile(r'\[(.+?)\]')
>>> field_pat
re.compile(r'\[(.+?)\]', re.UNICODE)
>>> type(field_pat)
_sre.SRE_Pattern
>>> field_pat.sub
<function SRE_Pattern.sub>
>>> help(field_pat.sub)
sub(...) method of _sre.SRE_Pattern instance
    sub(repl, string[, count = 0]) -> newstring.
    Return the string obtained by replacing the leftmost non-overlapping
    occurrences of pattern in string by the replacement repl.

我回答過的問題: Python-QA

(看完/读完)这篇文章有何感想! 网络捕鱼赢现金游戏的分享…

捕鱼平台能换现金的PHP传值,小菜提问,请各路大神给段代码。

( 捕鱼平台能换现金的 )

初学者学做个多图片批量下载,前台用户选中多个图片,然后图片地址传给后台ZIP打包下载。
目前就剩下传值这一步

<li><img src="pic1.jpg" /></li>
<li class ="D"><img src="pic2.jpg" /></li>//class=d 的为选中图片

需要的是:批量获取class为d的全部图片地址
然后将获取的地址传输到另一个PHP文件中的位置(zip压缩文件)

$image = array(
    array('image_src' => '图片地址', 'image_name' => '图片名称.jpg'),
);

效果如下

$image = array(
    array('image_src' => 'http://127.0.0.1/down/css/pic1.jpg', 'image_name' => 'pic1.jpg'),
    array('image_src' => 'http://127.0.0.1/down/css/pic2.jpg', 'image_name' => 'pic2.jpg'),
    ...
);

谢谢各路大神。

通过js获取到所有图片地址,然后通过ajax提交,php返回压缩包下载地址就可以了

var arr=new Array();
$(".D").each(function(){
arr.push($(this).find("img").attr("src");
});
jsondata=$.toJson(arr);

目前就剩下传值这一步:
例如,
<input type=”file” name=”img[]”>
<input type=”file” name=”img[]”>
<input type=”file” name=”img[]”>

php:
$_FILES[‘img’]

你试试

(看完/读完)这篇文章有何感想! 捕鱼平台能换现金的的分享…

手机捕鱼赢现金收获不菲python的md5加密不一样

( 手机捕鱼赢现金收获不菲 )

import hashlib
#id.txt的内容是010010
with open("id.txt","r") as zd:
    b=zd.readline().strip('\n')
    
print b
m = hashlib.md5()   
m.update(b)
id_md5=m.hexdigest()
print id_md5

n = hashlib.md5() 
n.update('010010')
id_md5=n.hexdigest()
print id_md5

为什么加密之后这2个的值不一样。正确好像是后面那个。

print b的时候,打印出来的内容是什么, 不可能不一样的啊。

看起来可能是编码不一样,或者 Windows 下文本换行符是 \r\n 导致的

我这边是一样的:

用的你的代码,Sublime3运行。

read的时候用“rb”试试,以二进制格式读取内容,没有编码转换的问题。
或者读取之后,对读取到的字符串encode(‘ascii’)一下,把它从unicode类型(我猜)转成str类型

终端编写测试,结果是一样的呀。。

(看完/读完)这篇文章有何感想! 手机捕鱼赢现金收获不菲的分享…

捕鱼平台能换现金的python 爬取 js 网页

( 捕鱼平台能换现金的 )

最近遇到了一个网页
https://cn.bing.com/knows/sea…

我用selenium的webdriver.PhantomJS还是无法获取网页中热门电影的图片

html源文件是div,是通过js改为img的,这个改后img标签始终获取不到

我可以通过原始div获取到图片地址,但是我想通过js生成的代码找到图片地址

求老司机指路

用selenium会很耗资源。。。
推荐分析其数据包,发送请求,返回json来分析来的更方便。

http://30daydo.com/article/4

不一定要用难爬的啊,
豆瓣的api多简单.

https://api.douban.com/v2/movie/search?q=%E5%88%98%E5%BE%B7%E5%8D%8E

(看完/读完)这篇文章有何感想! 捕鱼平台能换现金的的分享…