SBF胜博发游戏在线官网如何更快的深入了解一个PHP框架的源码

( SBF胜博发游戏在线官网 )

CI框架源码的跟踪学习中容易迷失在各种方法的跳转中

CI的文档还是很详细的。可以去百度一些CI的源码分析。一步步的一点点的看。

看文档,应该有一个request flow的流程图

thinkphp的国内项目很多,虽然我个人认为thinkphp的思想上已经不太适应这个时代,但是放眼现在,资料和项目最多就是这个了。而且 很多东西是值得去学一下的。

框架无非就是封装了一些常用的MVC处理逻辑 理解request–>handle–>response的flow过程是很重要的
CI没怎么接触过 建议从Thinkphp看吧 代码量少 且文档比较全 研究源码也没必要面面俱到 能理解重点模块就可以了

Xdebug step Into 一步一步看

(看完/读完)这篇文章有何感想! SBF胜博发游戏在线官网的分享…

2016最新官网tyepcho 有没有类似wp_loaded的东西

( 2016最新官网 )

因为想替换css、js地址到cdn的地址,于是想到可以在html代码输出之前对里面的地址进行替换,请问typecho 有没有类似 wp_loaded 的Action,如果没有,该在哪替换html代码呢

http://docs.typecho.org/plugins/hooks#widget_archive
从语义上感觉可能是beforeRender……

如果还是没法解决的话……
实话说其实可以把转换函数写进主题里。

(看完/读完)这篇文章有何感想! 2016最新官网的分享…

SBF胜博发游戏在线官网完善以下PHP代码中的insertAt函数,实现在数组$items的任意位置插入数据

( SBF胜博发游戏在线官网 )

<?php

$items= [‘苹果’,’橘子’,’梨’,’菠萝’,’香蕉’,’火龙果’] ;

/*
$items 传入的数组
$index 要插入的位置
$value 要插入的数据
*/
function insertAt($items, $index, $value) {

return $items;

}

$items=insertAt($items, 2 , ‘橙子’); //执行完成后,得到的结果如下
[‘苹果’,’橘子’,’橙子’,’梨’,’菠萝’,’香蕉’,’火龙果’] ;

php<?php

$items= ['苹果','橘子','梨','菠萝','香蕉','火龙果'] ;

/*
$items 传入的数组
$index 要插入的位置
$value 要插入的数据
*/
function insertAt($items, $index, $value) {
    array_splice ( $items , $index ,  0 , $value);

    return $items;
}


$out = insertAt($items,2,'橙子');

var_dump($out);

/* return 
array (size=7)
  0 => string '苹果' (length=6)
  1 => string '橘子' (length=6)
  2 => string '橙子' (length=6)
  3 => string '梨' (length=3)
  4 => string '菠萝' (length=6)
  5 => string '香蕉' (length=6)
  6 => string '火龙果' (length=9)
 */

@宋小北 提到的array_splice是php原生实现。我们千万不要重复造轮子。

这里造一个,仅为了好玩。

function insertAt($items, $value, $index=0) {
    is_numeric($index) and
    $items[($index-'0.1').'x'] = $value and
    ksort($items);
    return array_values($items);
}

(看完/读完)这篇文章有何感想! SBF胜博发游戏在线官网的分享…

SBF胜博发游戏在线官网多站点单点登录方案!

( SBF胜博发游戏在线官网 )

刚接手的新任务,头有点大!
目前有4个站点,A用的Discuz,B用的wordpress,C和D是独立开发的项目,
4个站点都有一定量的用户,现在需要整合单点登录,这四个站点都是陆陆续续才接入进来,所以目前整合起来感觉有点难度。
在不借助Discuz的Ucenter的情况下,有什么方案可以参考吗?


假如某一个用户在B站和C站分别注册了用户,都是同样的email帐号,此时想登录D站,怎么办?

Ucenter是最好的解决方案,没有之一。
当然如果都是在同一个域名下,用父域名共享cookie_id也是可以的。

A网站提供 OAuth2.0
其他网站统一用 A 网站的第三方登陆。

这样的思路不知道是否可行?
首先建立一个新的user表,专门用于你这4个站点的user表,然后查询的时候先查这个表有没有用户,有的话直接登录,如果没有,再去你这4个分站一一查询,查出来后把该用户的信息写入到这个新的user表,当然,也可以用一个脚本后台直接把4个分站的用户表一次性全部导入到这个表内。个人意见,仅供参考:)

要考虑各个系统的用户密码加密方式;
你只有先整合了所有系统的会员数据,才有可能去做单点登录

自己整个会员管理系统吧。所有的站登录都去这个系统去调用api接口。

供参考。。

ucenter不就是个会员管理的系统吗???为啥踩-_-…请指点?

(看完/读完)这篇文章有何感想! SBF胜博发游戏在线官网的分享…

sbf888胜博发如何将一个64bit整型编码为网络字节序列?

( sbf888胜博发 )

项目需要:将一个64bit整型编码为网络字节序列,我知道在php5.6.3以上版本可以使用pack(‘J’,$bigint),但这样就得跟新php版本了,运维不同意,现在公司用的是php5.4.9 操作系统为64位linux ,我想问在这种情况下,怎么进行64bit整型编码转换

pack("NN", $big >> 32 , $big)

没内建支持就自己拆吧。实在不行把它拆成正确顺序的8个8位然后挨个转成字节就是了。

(看完/读完)这篇文章有何感想! sbf888胜博发的分享…

SBF胜博发游戏在线官网php的ob_end_flush()函数是什么意思?

( SBF胜博发游戏在线官网 )

ob_start();
echo ' this is first content ';

ob_start();
echo 'this is second content ';

ob_start();
echo 'this is three content ';



ob_end_flush();
ob_end_clean();
ob_end_clean();

上面的情况没有任何内容输出。
php手册上说是送出最顶层缓冲区的内容,并关闭缓存。最顶层缓冲区是指的’this is three content ‘的内容还是’ this is first content ‘的内容呢?但是都应该有输出才对吧,不知道是怎么回事,请帮我解答下,谢谢。

给你一个链接,希望能帮助你http://blog.csdn.net/p569354158/article/details/8120177

(看完/读完)这篇文章有何感想! SBF胜博发游戏在线官网的分享…

SBF胜博发游戏在线官网如何做好数据统计

( SBF胜博发游戏在线官网 )

网站其实有许多数据需要统计:

注册用户数、相应的页面的点击数,还有一些功能的数据统计。

这些数据如果只要一个结果这样是很简单的,但如果需要查看到时间进程,大家有什么解决方案吗?(大致像 Google Analysis 那样)

请大家多多提出宝贵意见。

如果要统计详细的 timeline 数据,需要前后端配合,使用 ajax 随时把用户的行为及时告诉后端。

可以针对你的需求做定量的数据采集,将采集的数据上报到一个分析系统中去分析,然后将数据展示出来供查看。

前端数据上报到后端,前端调用后端接口获取统计数据展示

(看完/读完)这篇文章有何感想! SBF胜博发游戏在线官网的分享…

SBF胜博发游戏在线官网typecho 默认安装后有index.php,nginx配置是去除index.php的,访问都是403,怎么解决

( SBF胜博发游戏在线官网 )

管理员设置里有个“永久链接”可以看看。
第一遍开启伪静态失败,勾选强制设置。

(看完/读完)这篇文章有何感想! SBF胜博发游戏在线官网的分享…

SBF胜博发游戏在线官网PHP属于解析型语言,请问以下语句性能上有什么区别吗?

( SBF胜博发游戏在线官网 )

# 使用if进行判断
if( !defined('ROOT_PATH') ) define('ROOT_PATH', realpath('./').DIRECTORY_SEPARATOR);
# 使用or进行判断
defined('ROOT_PATH') or define('ROOT_PATH', realpath('./').DIRECTORY_SEPARATOR);
!defined('ROOT_PATH') and define('ROOT_PATH', realpath('./').DIRECTORY_SEPARATOR);

if效率要比短路写法效率高,因为if只需要判断if括号里的条件是否为真,如果为真,直接执行条件里的代码,不管里面代码返回的是真是假。而or或者and在执行后面代码后,会判断返回值是否为真。

个人表示,性能上没有区别
都是1次判断或者1次判断+定义

自己测试一下不就知道了

    (1==1) || print(2);
    (1==1) && print(2);

结果显示,如果是或,第一个为真,则不会运行后面的表达式,如果第一个为假,则会运行
如果是与,如果第一个为假,则不会运行后面的表达式,否则则运行
所以跟if的效果是一样的,而且写法更简洁,尤其适合开始的预定义

if里只有一次计算。

(看完/读完)这篇文章有何感想! SBF胜博发游戏在线官网的分享…

sbf888胜博发JQ如何将两个标签关联起来啊?

( sbf888胜博发 )

<div id="navbb">
      <ul class="nav navbar-nav">
        <li><a href="#">a</a></li> 
        <li><a href="#">b</a></li> 
        <li><a href="#">c</a></li> 
      </ul>
      <div class="abc">a</div>
      <div class="abc">b</div>
      <div class="abc">c</div>
</div>

假设div abc已经被隐藏
我想实现的效果是点击li里面的A的时候触发的就是显示下面div a。点击B的时候触发下面的div b。是如何做到让li(a)和div(a)对应上的呢?
因为最后会用PHP循环这段代码,

<div id="navbb">
      <ul class="nav navbar-nav">
        <li><a href="#">a</a></li> 
      </ul>
      <div class="abc">a</div>
</div>

如何做到无论循环多少次他们都能触发对应div的显示呢?

首先,关于上下的关联我建议你用data-属性。不过你目前没用data-,那我就先按照顺序对应了。
下面这是按对a标签后,对应的div自动toggle,你可以根据你的需要来改。

$('#navbb').find('ul').on('click', 'a', function(event) {
    var index = $(event.currentTarget).parent().index();
    $('#navbb div:eq(' + index + ')').toggle()
})

(看完/读完)这篇文章有何感想! sbf888胜博发的分享…

SBF胜博发游戏在线官网简单的社交应用的“状态”、“说说”功能,服务器端是怎么设计的。

( SBF胜博发游戏在线官网 )

本人只开发过简单的RESTFUL接口,最近需要给一个类似于朋友圈的功能提供服务器端支持!采用的是Yii2.0作为开发框架。
朋友圈中,一个状态主要由:状态内容、图片、点赞数、留言数、甚至是留言的赞的数目组成。服务器端是怎么设计的?SQL语句要怎么设计?或者有没有更加高效的解决办法?

不建议用 MYSQL, NOSQL 更适合一些

(看完/读完)这篇文章有何感想! SBF胜博发游戏在线官网的分享…

2016最新官网安装Laravel时遇到的问题

( 2016最新官网 )

今天安装利用https://github.com/overtrue/latest-laravel安装Laravel后访问public没有显示You Have Arrived.

访问public出现路径而不是出现You Have Arrived.


这是httpd-vhosts的设置
求各位大侠解答

设置引导文件为index.php。。。这不是laravel的问题。。是楼主不会配置apache

你好,首先DocumentRoot的路径应该设置到laravel的public目录下,还有就是你的Apache可能索引文件没有配置好.

没有设置默认index文件,导致的这个问题,最好还有一个关于.htaccess的配置也可以看一下手册。

(看完/读完)这篇文章有何感想! 2016最新官网的分享…

sbf888胜博发java应用程序:httpclient如何实现在一个连接中发送多次 请求?

( sbf888胜博发 )

如题,最好能给个简单的demo,几行也可以,就是核心的在一个连接中允许多次发送请求的代码!谢谢各位了!我用的连接池,如下,就是想实现多次调用post均使用同一个打开的连接,如何实现?测试发现老是会重新建立连接(即新开端口进行通信)!

public class HttpClientTestDemo {

    public static final int MAX_TOTAL_CONNECTIONS = 400;

    public static final int MAX_ROUTE_CONNECTIONS = 100;

    public static final int CONNECT_TIMEOUT = 10000;

    public static final int SOCKET_TIMEOUT = 20000;

    public static final long CONN_MANAGER_TIMEOUT = 10000;

    public static HttpParams parentParams;

    public static PoolingClientConnectionManager cm;

    private static final HttpHost DEFAULT_TARGETHOST = new HttpHost("123.456.789.101", 80);
    public static HttpRequestRetryHandler httpRequestRetryHandler;

    static {

        SchemeRegistry schemeRegistry = new SchemeRegistry();

        schemeRegistry.register(
                new Scheme("http", 80, PlainSocketFactory.getSocketFactory()));

        schemeRegistry.register(
                new Scheme("https", 443, SSLSocketFactory.getSocketFactory()));

        cm = new PoolingClientConnectionManager(schemeRegistry);

        cm.setMaxTotal(MAX_TOTAL_CONNECTIONS);

        cm.setDefaultMaxPerRoute(MAX_ROUTE_CONNECTIONS);

        cm.setMaxPerRoute(new HttpRoute(DEFAULT_TARGETHOST), 20);        

        parentParams = new BasicHttpParams();

        parentParams.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);

        parentParams.setParameter(ClientPNames.DEFAULT_HOST, DEFAULT_TARGETHOST);    //设置默认targetHost

        parentParams.setParameter(ClientPNames.COOKIE_POLICY, CookiePolicy.BROWSER_COMPATIBILITY);

        parentParams.setParameter(ClientPNames.CONN_MANAGER_TIMEOUT, CONN_MANAGER_TIMEOUT);

        parentParams.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, CONNECT_TIMEOUT);

        parentParams.setParameter(CoreConnectionPNames.SO_TIMEOUT, SOCKET_TIMEOUT);

        parentParams.setParameter(ClientPNames.ALLOW_CIRCULAR_REDIRECTS, true);

        parentParams.setParameter(ClientPNames.HANDLE_REDIRECTS, true);

        //设置头信息,模拟浏览器
        Collection collection = new ArrayList();

        collection.add(new BasicHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)"));

        collection.add(new BasicHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"));

        collection.add(new BasicHeader("Accept-Language", "zh-cn,zh,en-US,en;q=0.5"));

        collection.add(new BasicHeader("Accept-Charset", "ISO-8859-1,utf-8,gbk,gb2312;q=0.7,*;q=0.7"));

        collection.add(new BasicHeader("Accept-Encoding", "gzip, deflate"));

        parentParams.setParameter(ClientPNames.DEFAULT_HEADERS, collection);

        //请求重试处理
        httpRequestRetryHandler = new HttpRequestRetryHandler() {

            @Override
            public boolean retryRequest(IOException exception, int executionCount, HttpContext context) {
                if (executionCount >= 3) {
                    // 如果超过最大重试次数,那么就不要继续了
                    return false;
                }
                if (exception instanceof NoHttpResponseException) {
                    // 如果服务器丢掉了连接,那么就重试
                    return true;
                }
                if (exception instanceof SSLHandshakeException) {
                    // 不要重试SSL握手异常
                    return false;
                }
                HttpRequest request = (HttpRequest) context.getAttribute(ExecutionContext.HTTP_REQUEST);
                boolean idempotent = !(request instanceof HttpEntityEnclosingRequest);
                if (idempotent) {
                    // 如果请求被认为是幂等的,那么就重试
                    return true;
                }
                return false;
            }

           
        };
    }
    private static String readHtmlContentFromEntity(HttpEntity httpEntity) throws ParseException, IOException {
        String html = "";
        Header header = httpEntity.getContentEncoding();
        {
            InputStream in = httpEntity.getContent();
            if (header != null && "gzip".equals(header.getValue())) {
                html = unZip(in);
            } else {
                html = readInStreamToString(in);
            }
            if (in != null) {
                in.close();
            }
        }
        return html;
    }
    private static String unZip(InputStream in) throws IOException {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        GZIPInputStream gis = null;
        try {
            gis = new GZIPInputStream(in);
            byte[] _byte = new byte[1024];
            int len = 0;
            while ((len = gis.read(_byte)) != -1) {
                baos.write(_byte, 0, len);
            }
            String unzipString = new String(baos.toByteArray(), "utf-8");
            return unzipString;
        } finally {
            if (gis != null) {
                gis.close();
            }
            if (baos != null) {
                baos.close();
            }
            if(in!=null)
            {
                in.close();
            }
        }
    }

    private static String readInStreamToString(InputStream in) throws IOException {
        StringBuilder str = new StringBuilder();
        String line;
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(in, "utf-8"));
        while ((line = bufferedReader.readLine()) != null) {
            str.append(line);
            str.append("\r\n");
        }
        if (bufferedReader != null) {
            bufferedReader.close();
        }
        if(in!=null)
            in.close();
        return str.toString();
    }

    public static String post(DefaultHttpClient httpClient, String url) throws UnsupportedEncodingException {
        HttpGet httpGet = new HttpGet(url);
        String result = "";
        httpGet.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, DEFAULT_TARGETHOST);
         HttpResponse httpResponse;
        try {
            httpResponse = httpClient.execute(httpGet);//建立端口映射
            if (httpResponse.getStatusLine().getStatusCode() != 200) {
                httpGet.abort();
                return result;
            }
            result = readHtmlContentFromEntity(httpResponse.getEntity());
        } catch (ClientProtocolException e) {
            httpGet.abort();
            return e.toString();
        } catch (IOException ex) {
            httpGet.abort();
            return ex.toString();
        } finally {
            httpGet.releaseConnection();
            httpClient.close();
        }
        return result;
    }

    public static void main(String[] args) throws InterruptedException {
        Date start = new Date();
        DefaultHttpClient httpClient = new DefaultHttpClient(cm, parentParams);
        httpClient.setHttpRequestRetryHandler(httpRequestRetryHandler);
        try {
            post(httpClient, "https://www.baidu.com/index1.php");//这里的几个网址是随便举例的,实际页面是纯txt,没有任何其他元素
            post(httpClient, "https://www.baidu.com/index2.php");
            post(httpClient, "https://www.baidu.com/index3.php");
        } catch (UnsupportedEncodingException ex) {
            Logger.getLogger(HttpClientTestDemo.class.getName()).log(Level.SEVERE, null, ex);
        }
        Date end = new Date();
        System.out.println((end.getTime() - start.getTime()) / 1000.0 + " 秒");

    }
}

只有同一个网站,且支持 keepalive 的情况下,才可以用同一个连接.

否则你这个连接连到了服务器A,怎么可能在不改变端口的情况下,再去连上服务器B进行通信?

而且 HTTP 服务器也不在意,你客户端用哪个端口连接它的 WEB 端口呀.

不知道楼主研究这个是为了什么???

Sample.java

import java.io.IOException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;



public class Sample {

    private static ResponseHandler<String> responseHandler = new ResponseHandler<String>() {
        @Override
        public String handleResponse(
                final HttpResponse response) throws ClientProtocolException, IOException {
                HttpEntity entity = response.getEntity();
                return entity != null ? EntityUtils.toString(entity) : null;

        }

    };

    public static String Get(CloseableHttpClient http, String url){
        HttpGet httpget = new HttpGet(url);


        System.out.println("Executing request " + httpget.getRequestLine());

        String html = "";

        try{
            html = http.execute(httpget, responseHandler);
        }finally{
            return html;
        }
    }

    public static void main(String[] args) throws Exception {
        CloseableHttpClient http = HttpClients.createDefault();
        try {
            Get(http, "http://www.qq.com/111.txt");
            Get(http, "http://www.qq.com/222.txt");
            Get(http, "http://www.qq.com/333.txt");
        } finally {
            http.close();
        }
    }
}

使用的是 httpclient-4.5.1, 下载地址: http://mirrors.hust.edu.cn/apache//httpcomponents/httpclient/binary/httpcomponents-client-4.5.1-bin.tar.gz

编译方法:
javac -classpath ".;.\lib\httpclient-4.5.1.jar;.\lib\httpcore-4.4.3.jar" Sample.java

执行方法:
java -classpath ".;.\lib\httpclient-4.5.1.jar;.\lib\httpcore-4.4.3.jar;.\lib\commons-logging-1.2.jar" Sample

目录结构(将压缩包中的 lib 目录保存至与 Sample.java 同一目录内):

执行结果:

抓包对连接的监控截图:

下面截图为以下代码的执行结果:

            Get(http, "http://www.qq.com/111.txt");
            Get(http, "http://www.cnbeta.com/222.txt");
            Get(http, "http://www.jd.com/333.txt");
            Get(http, "http://www.qq.com/444.txt");

简单来讲, 只要你使用的是同一个 httpclient 的实例, 那么相同域名下的URL就会共用同一个连接.

测试代码来自于官方的样本文件: http://hc.apache.org/httpcomponents-client-4.5.x/httpclient/examples/org/apache/http/examples/client/ClientWithResponseHandler.java


Connection: close 的截图


更新: 下午加楼主QQ之后,发现他所访问的那个网站不支持 keep-alive.
所以即便是同一个 实例, 在请求完成之后, 连接也会自动断开.
所以结果和之前是一样的.

注释掉

httpClient.close();

我也想知道!大批量的请求重用已有连接的问题!

为什么都没有人回答呢?真的急用呀!解决得好的话有福利哟!

应该只能走KeepAlive了

(看完/读完)这篇文章有何感想! sbf888胜博发的分享…

SBF胜博发游戏在线官网到底应该在action里面捕捉异常还是在service里面捕捉异常?

( SBF胜博发游戏在线官网 )

比如我这一段service中的代码,到底是否应该在整个service方法里面用一个trycatch将所有代码全包裹起来,还是在调用的地方捕捉一下?

public ResultBean<VenueCardResponseEntity> getVenueCardList(VenueCardRequestEntity venueCard) {
        ResultBean<VenueCardResponseEntity> bean = new ResultBean<VenueCardResponseEntity>();
        String queryVenueCardListResultStr = super.getRPCVenueServiceInstance().queryVenueCardList(JSON.toJSONString(venueCard));
        if(StringUtils.isBlank(queryVenueCardListResultStr)){
            bean.setCode(ErrorEnum.ERR_500.getIndex());
            bean.setMsg("查询失败,服务层未返回结果!");
            return bean;
        }
        PageDto<String> queryVenueCardPageDto;
        List<VenueCardResponseEntity> venueCardList;
        try {
            ResultDto<String> queryVenueCardListResult = JSON.parseObject(queryVenueCardListResultStr,ResultDto.class);
            if(!ErrorEnum.SUCCESS_200.getLongIndex().equals(queryVenueCardListResult.getCode())){
                bean.setCode(queryVenueCardListResult.getCode());
                bean.setMsg(queryVenueCardListResult.getErrMsg());
                return bean;
            }
            queryVenueCardPageDto = JSON.parseObject(queryVenueCardListResult.getObject(),PageDto.class);
            if(!(queryVenueCardPageDto.getTotalItems() > Long.parseLong("0"))){
                bean.setCode(ErrorEnum.SUCCESS_200.getIndex());
                bean.setMsg("未查询到符合条件的数据!");
                return bean;
            }
            venueCardList = JSON.parseArray(queryVenueCardPageDto.getResult2(), VenueCardResponseEntity.class);
        } catch (JSONException e) {
            bean.setCode(ErrorEnum.ERR_500.getIndex());
            bean.setMsg("查询失败,解析服务层返回值异常!");
            return bean;
        }
        bean.setCode(ErrorEnum.SUCCESS_200.getIndex());
        bean.setMsg("查询成功");
        bean.setSuccess(true);
        bean.setRows(venueCardList);
        bean.setTotal(queryVenueCardPageDto.getTotalItems());
        return bean;
    }

我在解析JSON的时候,try catch一下,只捕捉JSONException,是否还应该再包裹一层捕捉exception的trycatch呢?
还是应该在action调用这个service时捕捉一下??

service建议只处理业务异常,捕获持久层或其往下一层的异常,并将其转换为service层的异常,视情况抛出。action调用时捕获所有异常做相应处理。

跟这个问题如出一辙:http://segmentfault.com/q/1010000004166896?_ea=514793

参考那边的回答吧

action不应该捕获services层的异常
services应该处理好自己的业务逻辑,放回一个结果对象,在结果对象中告诉调用方services执行的结果及返回的数据内容。
dao层也是同样处理~

这样接口清晰~,要不你的告诉你的调用方我可能会抛出什么的异常,什么样的异常代表什么样的业务含义

(看完/读完)这篇文章有何感想! SBF胜博发游戏在线官网的分享…

sbf888胜博发下面这个EL表达式,可以取出item的值,可是item是封装起来的,属性都是private啊?

( sbf888胜博发 )

private的name为什么可以被EL表达式取出值?不是应该getname方法吗?

底层用反射走的get方法,如果你get方法的名字改了,即属性名为name,获取name的get方法为getName1,那么el里要用name1取值

底层走的就是getName

getName方法删掉再试一下。
如果不能访问了,说明是自动调用了属性的getter方法;否则应该是通过反射直接取的属性的值。

(看完/读完)这篇文章有何感想! sbf888胜博发的分享…

sbf888胜博发The class file NioSocketConnector contains a signature ?

( sbf888胜博发 )

使用mina框架做个长连接,客户端jar包引入后创建NioSocketConnector对象,导入包后报以下错误

The class file NioSocketConnector contains a signature ‘(Ljava/nio/channels/SocketChannel;Lorg/apache/mina/core/polling/AbstractPollingIoConnector<Lorg/apache/mina/transport/socket/nio/NioSession;Ljava/nio/channels/SocketChannel;>.ConnectionRequest;)V’ ill-formed at position 176​

找了很多方法解决不掉,烦请各位技术大牛给出明示!

(看完/读完)这篇文章有何感想! sbf888胜博发的分享…