luboot

luboot 查看完整档案

北京编辑  |  填写毕业院校小米  |  PHP研发工程师 编辑 toolhu.net 编辑
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 该用户太懒什么也没留下

个人动态

luboot 关注了标签 · 2017-01-30

java

Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台(即 JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

Java编程语言的风格十分接近 C++ 语言。继承了 C++ 语言面向对象技术的核心,Java舍弃了 C++ 语言中容易引起错误的指針,改以引用取代,同时卸载原 C++ 与原来运算符重载,也卸载多重继承特性,改用接口取代,增加垃圾回收器功能。在 Java SE 1.5 版本中引入了泛型编程、类型安全的枚举、不定长参数和自动装/拆箱特性。太阳微系统对 Java 语言的解释是:“Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言”。

版本历史

重要版本号版本代号发布日期
JDK 1.01996 年 1 月 23 日
JDK 1.11997 年 2 月 19 日
J2SE 1.2Playground1998 年 12 月 8 日
J2SE 1.3Kestrel2000 年 5 月 8 日
J2SE 1.4Merlin2002 年 2 月 6 日
J2SE 5.0 (1.5.0)Tiger2004 年 9 月 30 日
Java SE 6Mustang2006 年 11 月 11 日
Java SE 7Dolphin2011 年 7 月 28 日
Java SE 8JSR 3372014 年 3 月 18 日
最新发布的稳定版本:
Java Standard Edition 8 Update 11 (1.8.0_11) - (July 15, 2014)
Java Standard Edition 7 Update 65 (1.7.0_65) - (July 15, 2014)

更详细的版本更新查看 J2SE Code NamesJava version history 维基页面

新手帮助

不知道如何开始写你的第一个 Java 程序?查看 Oracle 的 Java 上手文档

在你遇到问题提问之前,可以先在站内搜索一下关键词,看是否已经存在你想提问的内容。

命名规范

Java 程序应遵循以下的 命名规则,以增加可读性,同时降低偶然误差的概率。遵循这些命名规范,可以让别人更容易理解你的代码。

  • 类型名(类,接口,枚举等)应以大写字母开始,同时大写化后续每个单词的首字母。例如:StringThreadLocaland NullPointerException。这就是著名的帕斯卡命名法。
  • 方法名 应该是驼峰式,即以小写字母开头,同时大写化后续每个单词的首字母。例如:indexOfprintStackTraceinterrupt
  • 字段名 同样是驼峰式,和方法名一样。
  • 常量表达式的名称static final 不可变对象)应该全大写,同时用下划线分隔每个单词。例如:YELLOWDO_NOTHING_ON_CLOSE。这个规范也适用于一个枚举类的值。然而,static final 引用的非不可变对象应该是驼峰式。

Hello World

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

编译并调用:

javac -d . HelloWorld.java
java -cp . HelloWorld

Java 的源代码会被编译成可被 Java 命令执行的中间形式(用于 Java 虚拟机的字节代码指令)。

可用的 IDE

学习资源

常见的问题

下面是一些 SegmentFault 上在 Java 方面经常被人问到的问题:

(待补充)

关注 108137

luboot 赞了回答 · 2017-01-28

解决mysql表中索引重复的问题?

用户名默认是手机号,注册后可修改

关注 4 回答 4

luboot 关注了用户 · 2017-01-24

TIGERB @tigerb

// Trying to be the person you want to be.

// 时刻夯实基础
// 时刻对新技术保持热忱

// 个人博客 http://TIGERB.cn
// 轻量级PHP框架EasyPHP 作者 http://easy-php.tigerb.cn
// 电商设计手册|SkrShop 作者 https://github.com/skr-shop/m...

// 新的目标成为一名优秀的 Gopher

关注 2050

luboot 关注了问题 · 2016-11-10

能否讲一下vue.js中的ajax?

能否讲一下vue.js中的ajax?

关注 29 回答 3

luboot 关注了问题 · 2016-08-11

解决PHP在服务器端怎么显示图片呢?

我想在我的服务器端的浏览器上显示出upload目录下所有的图片 这个代码怎么弄呢?
我在网上看到一个例子 可是不会用 那个第二个foreach里面写什么东西呢?我的没有分页啊 里就两张图片

$img = array('gif','png','jpg');//所有图片的后缀名
$dir = 'data/';//文件夹名称
$pic = array();
foreach($img as $k=>$v)
{
    $pattern = $dir.'*.'.$v;
    $all = glob($pattern);
    $pic = array_merge($pic,$all);
}
foreach($pic as $p)
{
//分行分页显示代码
}

关注 4 回答 2

luboot 提出了问题 · 2016-08-08

解决linux 上最好的终端工具是?

linux 上最好的终端工具是?
目前用过有guake和tilda,感觉界面太丑。虽然配置了oh-my-zsh。

特地问下大家最喜欢的终端工具。

新加:不是shell工具,是linux终端工具。

关注 17 回答 18

luboot 关注了问题 · 2016-08-03

2000w行的文本数据如何检索

在一个txt文档中有2000w行数据,数据的格式如下
行尸走肉_Mother
金蝉脱壳_Smile
霸王别姬_Love
逍遥法外_Eternity
.......
八仙过海_Destiny

请问如何快速检索出成语或者英文单词,麻烦请给我算法,谢谢大牛们

关注 6 回答 2

luboot 赞了文章 · 2016-08-03

初级应用 -- 实现用户登录

目录

  1. 初探 Swoole -- 用 Swoole 启动一个 hello world

  2. 内存的妙用 -- PHP终于可以 vs JAVA啦

  3. 初级应用 -- 实现用户登录 [撰写中]

  4. 展望 -- Swoole 的局限性分析及我个人的期待 [撰写中]




回顾

上节内存的妙用 -- PHP终于可以 vs JAVA啦中, 我们了解了 Swoole 的MYSQL数据库 CURD 操作, 这节我们用 MongoDB来做演示.

开搞

环境说明:

  • MacOS X El Captain 10.11.6

  • PHP 7.0.8 with MongoDB support

  • MongoDB 1.1.8

  • CSS框架 Bootstrap3

首先, 我们来做个用户登录页面
/tpl/login.html

<!DOCTYPE html>
<html>
    <head>
        <title>Login</title>
    </head>
    <body>
        <form action="/dologin/" method="POST">
            <h1>Login</h1>
            Username: <input type="text" name="username" id="username"><br/>
            Password: <input type="password" name="password" id="password"><br/>
            <button type="submit">Submit</button>
        </form>
    </body>
</html>

PHP代码

我们引入MongoDB

<?php

class Mongo{
    static $db      = null;
    static $dbname  = null;

    public static function instance($dbname = 'db'){
        if (null === self::$db) {
            $m = new MongoDB\Client('mongodb://localhost:27017');
            self::$db = $m->selectDatabase($dbname);
            self::$dbname = $dbname;
        }
        return self::$db;
    }

    public static function id($id){
        return new MongoDB\BSON\ObjectID($id);
    }

    public function __call($name, $arguments){
        return self::$db->selectCollection(self::$dbname, $name);
    }
}

Swoole启动代码

<?php
$http = new swoole_http_server('0.0.0.0', 1688, SWOOLE_BASE);

#使用内存 SESSION~~
$http->_GLOBAL_SESSION = [];
$http->mongo      = Mongo::instance('db');
$http->db         = new \stdClass();

# 使用预加载, 提前将用户数据加载到内存. 登录都无需网络/磁盘IO
if('user'){
    echo "加载用户数据\n";
    $http->db->user = [];
    $users = $http->mongo->user->find([]);
    foreach ($users as $i => $user) {
        $user['_id'] = $user['_id']->__toString();
        $http->db->user[$user['username']] = $user;
    }
    echo "用户数据加载完成\n\n";
    unset($user);unset($users);
}

主逻辑:

<?php
$http->on('request', function(swoole_http_request $req, swoole_http_response $res) use($http) {


    if (!isset($req->cookie) || !isset($req->cookie['sid']) || !$req->cookie['sid']) {
        $req->cookie['sid'] = md5(password_hash(time().mt_rand(100000, 999999), 1));
        $res->cookie('sid', $req->cookie['sid'], time() + 60 * 60 * 24 * 365 * 10, '/', '', false, true);
    }

    $_SESS_ID = $req->cookie['sid'];
    if (!is_array($http->_GLOBAL_SESSION[ $_SESS_ID ])) $http->_GLOBAL_SESSION[ $_SESS_ID ] = [];
    $_SESSION = &$http->_GLOBAL_SESSION[ $_SESS_ID ];

    if ( $req->server['request_uri'] == '/' ) {
        $res->status(302);
        $res->header('Location', '/login/');
        $res->end();
        return;
    }else
    if ( $req->server['request_uri'] == '/login/' ) {
        if ($_SESSION['user']) {
            $res->status(302);
            $res->header('Location', '/i/');
            $res->end();
            return;
        }

        $html = file_get_contents(dirname(__FILE__).'/tpl/'.'login.html');
        $res->write($html);
        $res->end();

        unset($html);
        return;
    }else
    if ( $req->server['request_uri'] == '/dologin/' ) {
        $user = $http->db->user[$req->post['username']];
        if (!$user || !password_verify($req->post['password'], $user['password'])) {
            $res->write('bad_account_or_password');
            $res->end();
            return;
        }
        $_SESSION['user']           = $user;
        unset($user);

        $res->status(302);
        $res->header('Location', '/vul/');
        $res->end();
        return;
    }else
    if ( $req->server['request_uri'] == '/i/' ) {
        $res->write('You currently logged in as'.$_SESSION['user']['username']);
        $res->end();
        return;
    }

    $res->status(404);
    $res->end();
    return;
});
查看原文

赞 5 收藏 10 评论 0

luboot 关注了问题 · 2016-08-02

怎么实现用户打开视频地址的时候不播放而是下载

怎么实现用户打开视频地址的时候不播放而是下载

关注 6 回答 2

luboot 关注了问题 · 2016-07-25

解决php 500 无输出 不报错 请问如何快速定位错误代码


php 500 无输出 不报错 请问如何快速定位错误代码。
无输出,无报错,日志正常。

我在重新表述下吧(一道中高级面试题):

线上代码,无输出,无报错,日志正常,LNMP SERVER 500错误请问如何快速定位错误代码。

关注 11 回答 7

认证与成就

  • 获得 15 次点赞
  • 获得 12 枚徽章 获得 0 枚金徽章, 获得 3 枚银徽章, 获得 9 枚铜徽章

擅长技能
编辑

开源项目 & 著作
编辑

  • 工具乎

    工具乎-挖掘优质互联网工具

注册于 2016-01-15
个人主页被 228 人浏览