android中小说信息抓取展示

1、引言

        这两天打算把以前弄的一个小说阅读软件的爬虫规则更新一下,然后略微修改后准备上线使用,目前只改了一下搜索界面的规则,勉强能用,加载数据方面还需要优化一下,把这一部分发出来给大家看看,感兴趣的可以直接复制去使用。

2、主要代码

2.1、主界面布局



    
        
            
                
            
            
                
                
            
            
        
    
    
    

2.2、ListView布局



    
    
        
        
        
    

2.3、activity界面代码

package xyz.dritrtj.read.ui;

import android.annotation.SuppressLint;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.drawable.GradientDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import xyz.dritrtj.read.R;
import xyz.dritrtj.read.data.Title;
import xyz.dritrtj.read.interfaces.Init;
import xyz.dritrtj.read.utils.SetUiSize;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

/**
 * java中重复使用的变量使用后一定要赋值为空,否则数据可能会出错
 */
public class SearchActivity extends AppCompatActivity implements View.OnClickListener, Init {
    private LinearLayout ll_search;
    private LinearLayout ll_exit;
    private ImageView iv_exit;
    private ImageView iv_circle;
    private EditText et_content;
    private TextView tv_search;
    private ListView lv_search;
    private LinearLayout ll_search_top;
    private WebView wv_search;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search);
        initView();
        setViewSize();
        setData();
    }
    @SuppressLint("NonConstantResourceId")
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.tv_search:
                handler.sendEmptyMessage(3);//通知搜索
                break;
            case R.id.ll_exit:
                handler.removeMessages(0);
                finish();
                break;
        }
    }
    @SuppressLint("HandlerLeak")
    private Handler handler=new Handler(){
        @Override
        public void handleMessage(@NonNull Message msg) {
            super.handleMessage(msg);
            switch (msg.what){
                case 0:
                    if (list.size()>0){
                        lv_search.setAdapter(adapter);
                    }
                    break;
                case 1://通知更新数据,不要用线程更新
                    adapter.notifyDataSetChanged();
                    break;
                case 2://页面加载完成通知可以开始搜索
                {
                    String name=et_content.getText().toString();
                    et_content.setText("");
                    if (!name.equals("")){
                        jsFunction="javascript:function search(data) {\n" +
                                "                var search=document.getElementById('bdcsMain');\n" +
                                "                search.value=''+data;\n" +
                                "                var cls=document.getElementsByClassName('searchBtn');\n" +
                                "                if (cls.length>0){\n" +
                                "                    var now_search=cls[0];\n" +
                                "                    now_search.click();\n" +
                                "                }\n" +
                                "            }";
                        wv_search.loadUrl(jsFunction);
                        //调用 js函数
                        wv_search.loadUrl("javascript:search("+"'"+name+"'"+");");
                    }
                }
                    break;
                case 3://重新刷新页面,准备搜索
                {
                    flag=0;
                    isStart=false;
                    isSearch=true;
                    wv_search.clearCache(true);//清除缓存
                    wv_search.loadUrl("http://www.ibiquzw.info/");//重新加载页面,因为后面会替换掉url
                }
                    break;
                case 4://返回搜索数据
                {
                    jsFunction="javascript:function getTitle() {\n" +
                            "                var uls=document.getElementsByTagName('ul');\n" +
                            "                if(uls.length>0){\n" +
                            "                    ul=uls[1];\n" +
                            "                    var lis=ul.getElementsByTagName('li');\n" +
                            "                    if(lis.length>0){\n" +
                            "                        var now_li;\n" +
                            "                        var as;\n" +
                            "                        var a;\n" +
                            "                        var url;\n" +
                            "                        var name;\n" +
                            "                        var author;\n" +
                            "                        for (var i = 1; i < lis.length && i<21; i++) {\n" +
                            "                            now_li=lis[i];\n" +
                            "                            as=now_li.getElementsByTagName('a');\n" +
                            "                            if(as.length>0){\n" +
                            "                                a=as[0];\n" +
                            "                                url=a.href;\n" +
                            "                                name=a.innerHTML;\n" +
                            "                                a=as[1];\n" +
                            "                                author=a.innerHTML;\n" +
                            "                                window.Android.setTitle(url,name,author);\n" +
                            "                            }\n" +
                            "                        }\n" +
                            "                        window.Android.notice();\n" +
                            "                    }\n" +
                            "                }\n" +
                            "            }";
                    wv_search.loadUrl(jsFunction);
                    //调用 js函数
                    wv_search.loadUrl("javascript:getTitle();");
                }
                    break;
                case 5: //加载简介和封面url页面
                {
                    flag=1;
                    if (list.size()>now_position){
                        wv_search.loadUrl(list.get(now_position).path);
                    }
                }
                    break;
                case 6: //加载简介和封面url
                {
                    if (list.size()>now_position){
                        jsFunction="javascript:function getContent() {\n" +
                                "                var div=document.getElementById('intro');\n" +
                                "                var introduce=div.innerText;\n" +
                                "                window.Android.setContent(introduce);\n" +
                                "                var img_div=document.getElementById('fmimg');\n" +
                                "                var imgs=img_div.getElementsByTagName('img');\n" +
                                "                if (imgs.length>0){\n" +
                                "                    var img=imgs[0];\n" +
                                "                    var url=img.src;\n" +
                                "                    window.Android.getImg(url);\n" +
                                "                }\n" +
                                "            }";
                        wv_search.loadUrl(jsFunction);
                        //调用 js函数
                        wv_search.loadUrl("javascript:getContent();");
                    }
                }
                    break;
            }
        }
    };
    private Content adapter=new Content();
    private List list=new ArrayList();
    private String jsFunction;//js函数
    private boolean isStart;//是否初始化
    private boolean isSearch;//是否搜索
    @Override
    public void initView() {
        View decorView=getWindow().getDecorView();//获取当前界面的DecorView
        int option=View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;//更改文字颜色为深黑色
        decorView.setSystemUiVisibility(option);//设置系统UI元素的可见性
        getWindow().setNavigationBarColor(Color.TRANSPARENT);
        getWindow().setStatusBarColor(Color.parseColor("#ffffff"));//将状态栏设置为白色
        getSupportActionBar().hide();

        ll_exit = findViewById(R.id.ll_exit);
        ll_exit.setOnClickListener(this);
        ll_search = findViewById(R.id.ll_search);
        iv_exit = findViewById(R.id.iv_exit);
        iv_circle = findViewById(R.id.iv_circle);
        et_content = findViewById(R.id.et_content);
        tv_search = findViewById(R.id.tv_search);
        tv_search.setOnClickListener(this);
        ll_search_top = findViewById(R.id.ll_search_top);
        lv_search = findViewById(R.id.lv_search);
        wv_search = findViewById(R.id.wv_search);
        WebSettings settings = wv_search.getSettings();
        settings.setCacheMode(WebSettings.LOAD_NO_CACHE);//设置回退
        settings.setSupportZoom(true);//支持缩放
        settings.setBuiltInZoomControls(true);//出现缩放工具
        settings.setJavaScriptEnabled(true);// 表示webview可以执行服务器端的js代码
        settings.setUserAgentString("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 " +
                "(KHTML, like Gecko) Chrome/43.0.2357.134 Safari/537.36");
        //自适应屏幕
        settings.setUseWideViewPort(true);
        settings.setLoadWithOverviewMode(true);
        //自动缩放
        settings.setBuiltInZoomControls(true);
        settings.setSupportZoom(true);
        //支持获取手势焦点
        wv_search.requestFocusFromTouch();
        settings.setJavaScriptCanOpenWindowsAutomatically(true);//允许js弹出窗口
        wv_search.addJavascriptInterface(new AndroidAndJs(), "Android");
        wv_search.setWebViewClient(new WebViewClient(){
            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                if (url.startsWith("http")){
                    if (!isStart&&isSearch){
                        isStart=true;//阻止加载同时切换状态
                        handler.sendEmptyMessage(2);//开始搜索
                    }
                    if (isStart&&url.startsWith("http://www.ibiquzw.info/search.html?name=")){
                        isStart=false;
                        handler.sendEmptyMessage(4);//返回搜索数据
                    }
                    if (flag==1){//加载简介内容和封面url
                        handler.sendEmptyMessage(6);//设置简介
                    }
                }
            }
        });

    }
    private int now_position;//当前位置
    private int flag;//当前位置
    @Override
    public void setViewSize() {
        SetUiSize.setMarginTopLinear(ll_search,10);
        SetUiSize.setMarginBottomLinear(ll_search,10);
        SetUiSize.setWidthLinear(iv_exit,9);
        SetUiSize.setHeightLinear(iv_exit,16);
        SetUiSize.setMarginHorizontalLinear(iv_exit,25);
        SetUiSize.setMarginVerticalLinear(iv_exit,10);
        SetUiSize.setWidthLinear(iv_circle,19);
        SetUiSize.setHeightLinear(iv_circle,19);
        SetUiSize.setHeightLinear(et_content,34);
        SetUiSize.setTextViewSize(et_content,20);
        SetUiSize.setTextViewSize(tv_search,20);
        SetUiSize.setMarginHorizontalLinear(tv_search,10);
        GradientDrawable drawable = (GradientDrawable) ll_search_top.getBackground();
        int size= (int) (20/SetUiSize.displayWidthDp*SetUiSize.displayWidth);
        //两个参数表示一个角,按照左上角,右上角,右下角,左下角的顺序用两个相同的数据表示
        drawable.setCornerRadii(new float[]{size,size,size,size,size,size,size,size});
    }
    @Override
    public void setData() {
        et_content.setOnEditorActionListener((v, actionId, event) -> {
            if ((actionId == EditorInfo.IME_ACTION_UNSPECIFIED ||
                    actionId == EditorInfo.IME_ACTION_SEARCH) && event != null){
                list.clear();
                handler.sendEmptyMessage(3);//发消息搜索
            }
            return false;
        });
        lv_search.setOnItemClickListener((parent, view, position, id) -> {
//            Intent intent=new Intent(SearchActivity.this,ReadActivity.class);
//            intent.putExtra("url",list.get(position).path);//章节页面
//            intent.putExtra("name",list.get(position).name);//书名
//            intent.putExtra("author",list.get(position).author);//作者
//            intent.putExtra("code","0");//表示是搜索来源
//            intent.putExtra("imagePath",list.get(position).imagePath);//表示图片路径
//            startActivity(intent);
        });
        wv_search.clearCache(true);
        wv_search.loadUrl("http://www.ibiquzw.info/");
    }

    private class Content extends BaseAdapter{
        @Override
        public int getCount() {
            return list.size();
        }
        @Override
        public Object getItem(int position) {
            return list.get(position);
        }
        @Override
        public long getItemId(int position) {
            return position;
        }
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            Holder holder;
            if (convertView==null){
                convertView=View.inflate(SearchActivity.this,
                        R.layout.item_search,null);
                holder=new Holder();
                holder.iv_search_name= convertView.
                        findViewById(R.id.iv_search_name);
                SetUiSize.setWidthLinear(holder.iv_search_name,95);
                SetUiSize.setHeightLinear(holder.iv_search_name,136);
                SetUiSize.setMarginTopLinear(holder.iv_search_name,20);
                SetUiSize.setMarginHorizontalLinear(holder.iv_search_name,20);
                holder.ll_item_search=convertView.
                        findViewById(R.id.ll_item_search);
                SetUiSize.setMarginTopLinear(holder.ll_item_search,20);
                holder.tv_search_title=convertView.
                        findViewById(R.id.tv_search_title);
                SetUiSize.setTextViewSize(holder.tv_search_title,20);
                SetUiSize.setMarginTopLinear(holder.tv_search_title,5);
                holder.tv_search_author=convertView.
                        findViewById(R.id.tv_search_author);
                SetUiSize.setTextViewSize(holder.tv_search_author,15);
                SetUiSize.setMarginTopLinear(holder.tv_search_author,5);
                holder.tv_search_introduction=convertView.
                        findViewById(R.id.tv_search_introduction);
                SetUiSize.setTextViewSize(holder.tv_search_introduction,15);
                SetUiSize.setMarginTopLinear(holder.tv_search_introduction,10);
                convertView.setTag(holder);
            }else {
                holder= (Holder) convertView.getTag();
            }
            Title title = list.get(position);
            holder.tv_search_title.setText(title.name);//书名
            holder.tv_search_author.setText("作者:"+title.author);//作者
            if (title.refresh){
                if (title.introduction.equals("")){
                    holder.tv_search_introduction.setText("暂无简介");//简介
                }else {
                    holder.tv_search_introduction.setText(title.introduction);//简介
                }
                holder.tv_search_introduction.setVisibility(View.VISIBLE);//显示简介
            }else {
                holder.tv_search_introduction.setVisibility(View.INVISIBLE);//隐藏简介
            }
            if (title.isLoad){
                holder.iv_search_name.setImageBitmap(title.bitmap);//图片
                holder.iv_search_name.setVisibility(View.VISIBLE);//显示图片
            }else {
                holder.iv_search_name.setVisibility(View.INVISIBLE);//隐藏图片
                if (holder.iv_search_name.getDrawable()==null){
                    holder.iv_search_name.setBackgroundResource(R.drawable.empty);
                    holder.iv_search_name.setVisibility(View.VISIBLE);//显示图片
                }
            }
            if (title.isEmpty){
                holder.iv_search_name.setBackgroundResource(R.drawable.empty);
                holder.iv_search_name.setVisibility(View.VISIBLE);//显示图片
            }
            return convertView;
        }
    }
    private class Holder{
        public TextView tv_search_title;
        public TextView tv_search_author;
        public TextView tv_search_introduction;
        public ImageView iv_search_name;
        public LinearLayout ll_item_search;
    }
    private ExecutorService service_constriction = Executors.newFixedThreadPool(4);
    private ExecutorService serviceImg = Executors.newFixedThreadPool(8);
    /**
     * 加载图片数据
     * @param position
     * @param img_url
     */
    private void load_img(int position,String img_url){
        serviceImg.execute(() -> {
            Title title=list.get(position);
            try {
                //加载图片
                URL url = new URL(img_url);
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                connection.connect();
                //发请求读取返回的数据并封装为bitmap
                int responseCode = connection.getResponseCode();
                if(responseCode==200) {
                    InputStream is = connection.getInputStream();//图片文件流
                    //将is封装为bitmap
                    Bitmap bitmap = BitmapFactory.decodeStream(is);
                    is.close();
                    if(bitmap!=null) {
                        title.bitmap=bitmap;
                        title.isLoad=true;
                    }else {
                        title.isEmpty=true;
                    }
                    handler.sendEmptyMessage(1);
                }
            } catch (Exception e) {
//                throw new RuntimeException(e);
            }
        });
    }
    private Title title;
    private class AndroidAndJs{
        /**
         * 用于获取百度网盘共享目录数据
         * @param url 当前小说url,已经包含前缀
         * @param name 书名
         * @param author 作者
         */
        @JavascriptInterface
        public void setTitle(String url,String name,String author) {
            title=new Title();
            title.name=name;
            title.path=url;
            title.author=""+author;
            list.add(title);
            if (list.size()==1){
                handler.sendEmptyMessage(0);//直接设置数据
            }
            handler.sendEmptyMessage(1);//更新数据
        }
        /**
         * 接收加载完成的通知,收到该通知就开始加载图片和简介
         */
        @JavascriptInterface
        public void notice() {
            handler.sendEmptyMessage(5);//通知加载简介和封面图片url
        }
        /**
         * 加载简介内容
         */
        @JavascriptInterface
        public void setContent(String introduce) {
            if (list.size()>now_position){
                list.get(now_position).refresh=true;
                list.get(now_position).introduction=""+introduce;
            }
        }
        /**
         * 加载图片url
         */
        @JavascriptInterface
        public void getImg(String url) {
            if (list.size()>now_position){
                list.get(now_position).imagePath=""+url;
                load_img(now_position,url);
                now_position++;
                handler.sendEmptyMessage(1);
                handler.sendEmptyMessage(5);
            }
        }
    }
}</code></pre> 
  <h2>3、效果展示</h2> 
  <p style="text-align:center;"><a href="http://img.e-com-net.com/image/info8/7391a141233a46e8ab40febdac57b588.jpg" target="_blank"><img alt="android中小说信息抓取展示_第1张图片" src="http://img.e-com-net.com/image/info8/7391a141233a46e8ab40febdac57b588.jpg" width="525" height="904" style="border:1px solid black;"></a></p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1759793934495739904"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(android,爬虫,小说阅读)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1950228596207448064.htm"
                           title="日更50天有什么收益?" target="_blank">日更50天有什么收益?</a>
                        <span class="text-muted">星湾二宝</span>

                        <div>坚持在平台上日更50天了,平台也为我生成了日更50天徽章,小开心一下这份坚持。日更50天徽章那坚持50天都有哪些收益呢?收益一,就是最直观的那些钻和贝,我这边确实不太高,但是这些贝足够支撑我保持会员的资格,能够在发文的时候帮助友友们去除广告,方便阅读。钻和贝收益二,文章的收获,日更50天,坚持写作3.7万文字,书写的文字也从开始的流水账/碎碎念逐渐加入自己的思考和观点。以前,一个念头会一晃而过,如</div>
                    </li>
                    <li><a href="/article/1950221589622616064.htm"
                           title="EasyPlayer播放器系列开发计划2025" target="_blank">EasyPlayer播放器系列开发计划2025</a>
                        <span class="text-muted">xiejiashu</span>
<a class="tag" taget="_blank" href="/search/EasyPlayer/1.htm">EasyPlayer</a><a class="tag" taget="_blank" href="/search/EasyPlayer/1.htm">EasyPlayer</a><a class="tag" taget="_blank" href="/search/EasyPlayer%E6%92%AD%E6%94%BE%E5%99%A8/1.htm">EasyPlayer播放器</a><a class="tag" taget="_blank" href="/search/RTSP%E6%92%AD%E6%94%BE%E5%99%A8/1.htm">RTSP播放器</a><a class="tag" taget="_blank" href="/search/js%E6%92%AD%E6%94%BE%E5%99%A8/1.htm">js播放器</a><a class="tag" taget="_blank" href="/search/Web%E6%92%AD%E6%94%BE%E5%99%A8/1.htm">Web播放器</a>
                        <div>EasyPlayer系列产品发展至今,已经超过10年,从最早的EasyPlayerRTSP播放器,到如今维护的3条线:EasyPlayer-RTSP播放器:Windows、Android、iOS;EasyPlayerPro播放器:Windows、Android、iOS;EasyPlayer.js播放器:H5;这3个播放器各有各的应用场景,用户量也是巨大,像RTSP版本的播放器,到今天依然还有很多低</div>
                    </li>
                    <li><a href="/article/1950221332746661888.htm"
                           title="学生把我的课件换成小三认罪书(赵书晴宋诗月)全集阅读_学生把我的课件换成小三认罪书最新章节阅读_赵书晴宋诗月(学生把我的课件换成小三认罪书)全本免费在线阅读_(学生把我的课件换成小三认罪书)完结..." target="_blank">学生把我的课件换成小三认罪书(赵书晴宋诗月)全集阅读_学生把我的课件换成小三认罪书最新章节阅读_赵书晴宋诗月(学生把我的课件换成小三认罪书)全本免费在线阅读_(学生把我的课件换成小三认罪书)完结...</a>
                        <span class="text-muted">笔趣阁热门小说</span>

                        <div>学生把我的课件换成小三认罪书(赵书晴宋诗月)全集阅读_学生把我的课件换成小三认罪书最新章节阅读_赵书晴宋诗月(学生把我的课件换成小三认罪书)全本免费在线阅读_(学生把我的课件换成小三认罪书)完结版免费在线阅读_学生把我的课件换成小三认罪书(赵书晴宋诗月)完整版免费阅读_(学生把我的课件换成小三认罪书)全章节免费在线阅读主角配角:赵书晴宋诗月简介:我和赵京立去了民政局提交了申请因为离婚冷静期,还要再</div>
                    </li>
                    <li><a href="/article/1950220183381536768.htm"
                           title="读张萌萌姐《从受欢迎到被需要》第一章读书总结" target="_blank">读张萌萌姐《从受欢迎到被需要》第一章读书总结</a>
                        <span class="text-muted">韩静_Han</span>

                        <div>我是@张萌-萌姐#从受欢迎到被需要#读书会10班的书记官韩静我们的领读者是@郝美-菱这是今天的读书总结通过第一章的阅读,对高情商和自我介绍有了新的认知。思考题复盘:“我是谁,我需要什么,我能提供什么”【我是谁】我叫韩静,在房地产行业工作5年,现担任行政经理一职,是一位个子小却很坚强很拼的女生。【我能提供什么】️用自己减重26斤的经验帮助需要的人健康减肥️能提供房地产购房等方面的知识和问题️早起陪伴</div>
                    </li>
                    <li><a href="/article/1950219038072303616.htm"
                           title="最佳好女婿赵倩王城(精彩热门小说)最佳好女婿赵倩王城&全集目录免费阅读" target="_blank">最佳好女婿赵倩王城(精彩热门小说)最佳好女婿赵倩王城&全集目录免费阅读</a>
                        <span class="text-muted">海边书楼</span>

                        <div>最佳好女婿赵倩王城(精彩热门小说)最佳好女婿赵倩王城&全集目录免费阅读主角:赵倩王城简介:女人叫赵倩,三十八岁,很漂亮,----阅读全文小说内容请翻阅文章最底部---王城根本没有想到,女友的妈妈在自乐的时候,叫的竟然是自己的名字。女人叫赵倩,三十八岁,很漂亮,腰很细,腿很长,王城有些怪异赵倩为什么会放过自己,但赵倩没有发怒,却也让王城长长的舒了一口气,坐到沙发上点了根烟抽了起来。“王城,什么时候回</div>
                    </li>
                    <li><a href="/article/1950209621381672960.htm"
                           title="Android 应用权限管理详解" target="_blank">Android 应用权限管理详解</a>
                        <span class="text-muted"></span>

                        <div>文章目录1.权限类型2.权限请求机制3.权限组和分级4.权限管理的演进5.权限监控和SELinux强制访问控制6.应用权限审核和GooglePlayProtect7.开发者最佳实践8.用户权限管理9.Android应用沙箱模型10.ScopedStorage(分区存储)11.背景位置权限(BackgroundLocationAccess)12.权限回收和自动清理13.权限请求的用户体验设计14.G</div>
                    </li>
                    <li><a href="/article/1950208350851493888.htm"
                           title="在人间(阿伟林秀芳柳娇娇)全本免费在线阅读_人间乐事全文阅读《人间芳韵》" target="_blank">在人间(阿伟林秀芳柳娇娇)全本免费在线阅读_人间乐事全文阅读《人间芳韵》</a>
                        <span class="text-muted">一米文库2</span>

                        <div>在人间(阿伟林秀芳柳娇娇)全本免费在线阅读_人间乐事全文阅读《人间芳韵》主角配角:阿伟林秀芳柳娇娇小说别名:在人间、人间乐事、人间芳韵简介:和美艳寂寞的小姨上山,不小心被她女儿看到……关注微信公众号【一米文库】回复书号【1017】即可阅读小说【在人间】全文内容!!!【戳我继续阅读】“嗯~~阿伟,你好强壮……”芳姨喝多了酒,被我搀扶着艰难的往卧室走去。她身上香喷喷的,温香软玉靠在我身上,性感的红唇几</div>
                    </li>
                    <li><a href="/article/1950207970721722368.htm"
                           title="老公的女朋友把我打成小三后,我杀疯了周昊净许青青小说完结推荐_最热门小说 老公的女朋友把我打成小三后,我杀疯了周昊净许青青" target="_blank">老公的女朋友把我打成小三后,我杀疯了周昊净许青青小说完结推荐_最热门小说 老公的女朋友把我打成小三后,我杀疯了周昊净许青青</a>
                        <span class="text-muted">小富江呀</span>

                        <div>《老公的女朋友把我打成小三后,我杀疯了》主角:周昊净许青青简介:只因跟老公说了几句情话,就被老公的‘女朋友’当成小三。她带着一群自诩为“惩治小三联盟”的网络判官冲进了我家。“怎么,有脸当小三,没脸承认?”“从你当小三的那一刻起,就该想到会有被人收拾的一天!”“我们网络判官专治道德败坏的贱人!”这群人一边疯狂大骂,一边愤怒打砸。看着狼藉不堪的家,我面色平静地给公司法务部发去消息。“按照婚前协议,拟一</div>
                    </li>
                    <li><a href="/article/1950207330125672448.htm"
                           title="《倾“庙”之恋》里的诗意" target="_blank">《倾“庙”之恋》里的诗意</a>
                        <span class="text-muted">道之可道</span>

                        <div>这是毕飞宇老师《小说课》的最后一课。同前些课一样,他的每节课带给我的全新的解读视角都令我目眩神迷。汪曾祺老师的《受戒》正是我前段时间读过的,读后只觉得很有意思,两个单纯的可爱的少男少女之间的感情非常令人心动,而那个小和尚的身份又让这个故事有些传奇色彩,然而清新又是主调,还有一种淡淡的悲悯,为着他们未来未知的可能是悲剧的命运。毕老师的解读简直让我瞠目结舌,原来这个小说里藏着那么多唯美的诗意,那么多生</div>
                    </li>
                    <li><a href="/article/1950206817783050240.htm"
                           title="青云官道庄岩柳琴免费完结版小说_已完结小说推荐青云官道(庄岩柳琴)" target="_blank">青云官道庄岩柳琴免费完结版小说_已完结小说推荐青云官道(庄岩柳琴)</a>
                        <span class="text-muted">d036fb3b3d05</span>

                        <div>《青云官道》主角:庄岩柳琴,简介:小科员庄岩,因一纸调研报告被副市长赏识,本以为能够就此走上人生巅峰,结果副市长就被双规!不过庄岩非但没有被牵连,反而拿着副市长留下的东西,不仅抱得美人,还平步青云,扶摇而上九万里!关注微信公众号【夏至文馆】去回复个书号【1190】即可阅读小说【青云官道】全文内容!!!小庄,现在几点了?”富丽堂皇的客厅里,一个身穿旗袍的美妇紧张的来回的踱步!“夫人,11点57。”站</div>
                    </li>
                    <li><a href="/article/1950206309123026944.htm"
                           title="语文教学反思 ——一单元测试" target="_blank">语文教学反思 ——一单元测试</a>
                        <span class="text-muted">一抹_绿茶香</span>

                        <div>我喜欢上语文课,现在最开心的时刻也就是课上那45分钟了。它可以让我和孩子们骑上骏马驰骋在知识的草原上,可以让我们乘着巨轮在书籍的海洋里任意航行……周三举行了一单元测试,今晚一单元的所有内容暂时告一段落。对于这单元我有如下思考:本单元的主题词是“读书”,几篇课文都是围绕着读书来编排的。里面有讲读书乐趣的,讲读书方法的,还有孩子们第一次接触的访谈录等。微笑班级从一年级下学期就开始阅读“闲书”,所以教学</div>
                    </li>
                    <li><a href="/article/1950205289554833408.htm"
                           title="替身贵妃将我扒光沉塘,暴君杀红了眼陆知白李双儿全本免费小说阅读_最新完本小说替身贵妃将我扒光沉塘,暴君杀红了眼(陆知白李双儿)" target="_blank">替身贵妃将我扒光沉塘,暴君杀红了眼陆知白李双儿全本免费小说阅读_最新完本小说替身贵妃将我扒光沉塘,暴君杀红了眼(陆知白李双儿)</a>
                        <span class="text-muted">多多文馆</span>

                        <div>《替身贵妃将我扒光沉塘,暴君杀红了眼》主角:陆知白李双儿简介:我是贫门农女,也是暴君爱而不得的白月光。为逼我入宫,他将我满村屠尽!暴君在后宫建了一座水晶殿,将我禁锢其中。他日日宠幸我,直至寻到一个与我七分相似的替身,方才淡了兴致。他将替身封为贵妃,千娇万宠一言可戏诸侯。贵妃恃宠生娇,趁着暴君出宫巡视,带着一群人闯进水晶殿。“本宫马上就要受封为后,今天就来清理后宫!”她在我脸上刻奴字,挑断我的手筋脚</div>
                    </li>
                    <li><a href="/article/1950204773441531904.htm"
                           title="听覃杰007写作精进课第五天分享心得" target="_blank">听覃杰007写作精进课第五天分享心得</a>
                        <span class="text-muted">曹端春</span>

                        <div>早上听覃老大直播007写作精进课程第五天,获益良多。关于写作的黄金三法:多读,多写,多动,确实说到了写作的真谛。一,多读,扩大阅读面,精读相关经典作家的经典作品,逐步构建自己的知识体系;阅读方面推荐指读法,这是聪明人用的笨办法,读本离眼睛远些,可让视野更开阔些,能提高30%的速度;二,多写,象高手一样靠汗水写作,写不出来硬写,找准自己的定位,在一个行业内了解100个关键词,输出糸列文章,并且多分享</div>
                    </li>
                    <li><a href="/article/1950203883577995264.htm"
                           title="我不想再当知识的搬运工" target="_blank">我不想再当知识的搬运工</a>
                        <span class="text-muted">楚煜楚尧</span>

                        <div>因为学校课题研究的需要,这个暑假我依然需要完成一本书的阅读笔记。我选的是管建刚老师的《习课堂十讲》。这本书,之前我读过,所以重读的时候,感到很亲切,摘抄起来更是非常得心应手。20页,40面,抄了十天,终于在今天大功告成了。这对之前什么事都要一拖再拖的我来说,是破天荒的改变。我发现至从认识小尘老师以后,我的确发生了很大的改变。遇到必须做却总是犹豫不去做的事,我学会了按照小尘老师说的那样,在心里默默数</div>
                    </li>
                    <li><a href="/article/1950202684451647488.htm"
                           title="[spring6: Mvc-网关]-源码解析" target="_blank">[spring6: Mvc-网关]-源码解析</a>
                        <span class="text-muted"></span>

                        <div>推荐阅读:[spring6:Mvc-函数式编程]-源码解析GatewayServerMvcAutoConfiguration@AutoConfiguration(after={HttpClientAutoConfiguration.class,RestTemplateAutoConfiguration.class,RestClientAutoConfiguration.class,FilterAu</div>
                    </li>
                    <li><a href="/article/1950200541233606656.htm"
                           title="Android 基础知识:Android 应用权限详解" target="_blank">Android 基础知识:Android 应用权限详解</a>
                        <span class="text-muted">流水mpc</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                        <div>这篇文章为大家系统的梳理一下Android权限相关的知识,在日常开发中,我们都用过权限,但是对于权限的一些细节我们可能掌握的还不够全面,这篇文章会全面的为大家介绍权限相关的知识。当然,本篇文章依然是参考了Google的官方文档:应用权限。本文目录一、认识Android权限(一)Android系统为什么需要权限?Android系统设置权限的目的是保护Android用户的隐私。对于用户的敏感数据And</div>
                    </li>
                    <li><a href="/article/1950200414989250560.htm"
                           title="面试必考题:Android Binder 机制详解" target="_blank">面试必考题:Android Binder 机制详解</a>
                        <span class="text-muted">大模型大数据攻城狮</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/binder/1.htm">binder</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/react/1.htm">react</a><a class="tag" taget="_blank" href="/search/native/1.htm">native</a><a class="tag" taget="_blank" href="/search/kotlin/1.htm">kotlin</a><a class="tag" taget="_blank" href="/search/dalvik/1.htm">dalvik</a><a class="tag" taget="_blank" href="/search/retrofit/1.htm">retrofit</a>
                        <div>目录第一章:Binder的基本概念什么是Binder?多角度解读Binder第二章:Binder的工作机制Binder的整体流程服务注册:从零到有的第一步服务查询:找到目标的“地图”服务调用:请求与响应的旅程Binder驱动的幕后功劳为什么Binder这么快?第三章:Binder在系统架构中的角色Activity:界面背后的通信枢纽Binder的角色实例分析Service:后台任务的跨进程支柱Bi</div>
                    </li>
                    <li><a href="/article/1950199532725792768.htm"
                           title="Android GreenDao介绍和Generator生成表对象代码" target="_blank">Android GreenDao介绍和Generator生成表对象代码</a>
                        <span class="text-muted"></span>

                        <div>目录(?)[-]介绍创建工程转载请注明:http://blog.csdn.net/sinat_30276961/article/details/50052109最近无意中发现了GreenDao,然后查看了一些资料后,发现这个数据库框架很适合用,于是乎,查看了官网的api,并自己写了一个小应用总结一下它的使用方法。介绍按照国际惯例,在开篇,总要先介绍一下什么是GreenDao吧。首先需要说明的是Gr</div>
                    </li>
                    <li><a href="/article/1950199278483861504.htm"
                           title="Android 媒体播放开发完全指南" target="_blank">Android 媒体播放开发完全指南</a>
                        <span class="text-muted">安卓开发者</span>
<a class="tag" taget="_blank" href="/search/Android/1.htm">Android</a><a class="tag" taget="_blank" href="/search/Jetpack/1.htm">Jetpack</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E5%AA%92%E4%BD%93/1.htm">媒体</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>引言在当今移动应用生态中,媒体播放功能已成为许多应用的核心组成部分。无论是音乐流媒体应用、视频平台、播客客户端还是游戏应用,都需要强大的媒体播放能力。Android平台提供了丰富的API来支持各种媒体播放场景。本文将全面介绍Android媒体播放的开发技术,从基础到高级功能实现。一、Android媒体播放基础1.1支持的媒体格式Android原生支持多种媒体格式:音频:MP3、AAC、FLAC、W</div>
                    </li>
                    <li><a href="/article/1950199279641489408.htm"
                           title="Android通知(Notification)全面解析:从基础到高级应用" target="_blank">Android通知(Notification)全面解析:从基础到高级应用</a>
                        <span class="text-muted"></span>

                        <div>一、Android通知概述通知(Notification)是Android系统中用于在应用之外向用户传递信息的重要机制。当应用需要告知用户某些事件或信息时,可以通过通知在状态栏显示图标,用户下拉通知栏即可查看详细信息。这种机制几乎被所有现代应用采用,用于推送新闻、消息、广告等内容3。与Toast相比,Notification的优势在于:可以长时间停留在通知栏,适合内容较多且需要持久展示的信息支持丰</div>
                    </li>
                    <li><a href="/article/1950199280132222976.htm"
                           title="Android Slices:让应用功能在系统级交互中触手可及" target="_blank">Android Slices:让应用功能在系统级交互中触手可及</a>
                        <span class="text-muted">安卓开发者</span>
<a class="tag" taget="_blank" href="/search/Android/1.htm">Android</a><a class="tag" taget="_blank" href="/search/Jetpack/1.htm">Jetpack</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E4%BA%A4%E4%BA%92/1.htm">交互</a><a class="tag" taget="_blank" href="/search/gitee/1.htm">gitee</a>
                        <div>引言在当今移动应用生态中,用户每天要面对数十个甚至上百个应用的选择,如何让自己的应用在关键时刻触达用户,成为开发者面临的重要挑战。Google在Android9Pie中引入的Slices技术,正是为了解决这一痛点而生。本文将全面介绍AndroidSlices的概念、实现方法、应用场景以及最佳实践,帮助开发者掌握这一提升用户参与度的强大工具。什么是AndroidSlices?AndroidSlice</div>
                    </li>
                    <li><a href="/article/1950195243735379968.htm"
                           title="已完结小说--《破产后,上门老公成了我的金主》唐安然贺知州--全文免费阅读" target="_blank">已完结小说--《破产后,上门老公成了我的金主》唐安然贺知州--全文免费阅读</a>
                        <span class="text-muted">兔子爱阅读</span>

                        <div>已完结小说--《破产后,上门老公成了我的金主》唐安然贺知州--全文免费阅读主角:唐安然贺知州简介:想了你很久了......”夜色里,男人肆无忌惮的吻着我。他是我的上门老公。一次醉酒,我被他睡了,事情闹得很大。于是我这个金贵的千金小姐不得不让他这个落魄小子入赘我们家,成为我的老公。因为心里的不甘,我屡屡羞辱他,作践他,对他非打即骂。可他从不生气,俨然一副温顺贤良的模样。而就在我慢慢喜欢上他时,他却向</div>
                    </li>
                    <li><a href="/article/1950187477843111936.htm"
                           title="点淘邀请码是什么怎么输入,点淘邀请码推广(注意细节问题邀请方法)" target="_blank">点淘邀请码是什么怎么输入,点淘邀请码推广(注意细节问题邀请方法)</a>
                        <span class="text-muted">e95cfad15310</span>

                        <div>性能优异:安装包体积小,高速下载,浏览更省流量,运行流畅快速点淘邀请码点淘邀请码LRM8XZH9或LRYTO3FS或LRYTO3FS,诚邀你的加入。借助番茄小说强大的精准客户群体,该应用采取了进一步细分市场的策略。现在,用户无论是阅读还是听小说,都可以赚取零花钱。点淘邀请码点淘邀请码:LRM8XZH9、LRYTO3FS或LRYTO3FS,它的主要特点是提供海量的小说和广播节目,同时也具备一些社交互</div>
                    </li>
                    <li><a href="/article/1950187221080403968.htm"
                           title="《终身成长》之每日领读" target="_blank">《终身成长》之每日领读</a>
                        <span class="text-muted">恩佳一</span>

                        <div>【昵称】锡安之燕【书名】《终身成长》【阅读时长】30分钟【阅读内容】第四章《天赋与天才》【原文金句】1.人的思维模式比天赋更重要。2.在我们的文化中,无论怎么强调个人努力和自我提高的重要性,人们在心灵深处,依然崇尚天赋。【三个问题】:1、结合之前学过的知识,说一说固定型思维模式的人,在面对失败的时候会怎样做?固定型思维模式的人面对失败会自卑,不自信,会停滞不前或就此被打倒。2、身体上的天赋是显而易</div>
                    </li>
                    <li><a href="/article/1950186586658369536.htm"
                           title="5.2 20190503" target="_blank">5.2 20190503</a>
                        <span class="text-muted">MaggieFeng1988</span>

                        <div>姓名:冯进平公司:上海晋名实业有限公司【日精进打卡第403天】六项精进221期努力一组学员六项精进410期乐观三组志工六项精进423期反省三组志工六项精进469期努力二组志工【知~学习】诵读《六项精进》大纲0遍,共513遍;诵读《六项精进》通篇0遍,共33遍;背诵《大学》0遍,共492遍;阅读《活法》贰第053–063也;荔枝阅读《思维方式》020-036《敬天爱人》手抄第十二天【经典名句】1.放</div>
                    </li>
                    <li><a href="/article/1950185188122226688.htm"
                           title="禁止缠爱宋知闲江窈(禁止缠爱小说)全文免费阅读无弹窗" target="_blank">禁止缠爱宋知闲江窈(禁止缠爱小说)全文免费阅读无弹窗</a>
                        <span class="text-muted">海边书楼</span>

                        <div>禁止缠爱宋知闲江窈(禁止缠爱小说)全文免费阅读无弹窗主角:宋知闲江窈简介:飞机上一场阴差阳错的情事过后,宋知闲对江窈的肉体食髓知味。多夜欢好后。她问,“娶我?”宋知闲淡漠,“不娶,没兴趣。”再后来,那个永远冷漠的高岭之花在所有人面前,死死拽着她的手,红着眼,“江窈,我求你别走!”江窈微微一笑,心如止水。“放手,明天我嫁人。”可关注微信公众号【寒风书楼】去回个书号【307】,即可免费阅读【禁止缠爱】</div>
                    </li>
                    <li><a href="/article/1950179453615271936.htm"
                           title="山月记|知者行之始,行者知之成" target="_blank">山月记|知者行之始,行者知之成</a>
                        <span class="text-muted">嘉清月</span>

                        <div>(郑重声明:文章系原创首发,文责自负)近日在看中岛敦的中短篇小说集《山月记》。看完短篇小说《山月记》之后,是《名人传》。讲纪昌学射的寓言故事,不过这并不是今天的主角,令我心生感慨的是《悟净出世》与《悟净叹异》。对,就是沙悟净,提起沙悟净,我的刻板印象立即出现:憨厚老实的和尚。不过《悟净出世》的悟净并非如此。作者中岛敦,借悟净其人,向世人讲述他关于自我意义的探寻。悟净出世悟净悟不出自我的意义,觉得自</div>
                    </li>
                    <li><a href="/article/1950178812809506816.htm"
                           title="【676】幼儿园亲子阅读之《战争与和平》" target="_blank">【676】幼儿园亲子阅读之《战争与和平》</a>
                        <span class="text-muted">登登一君</span>

                        <div>我是昭君,我想记录我生活工作的点点滴滴,今天是我每日一篇文章的第676天。《战争和平》,从封面和封底上,我们就能够感受到一种隐含着冲突的幽默感。《战争与和平》这是一个非常严肃和正经的名字,是不是想到了列夫·托尔斯泰的长篇小说。当然这两个故事没有什么关系,可是画面却有些搞笑和无厘头,狮子、刺猬后面还跟着猪、羊、河马,明明都是动物,却穿着人的衣服,还像人一样站立着。而不远处的坦克上,明明坐着一个人,但</div>
                    </li>
                    <li><a href="/article/1950175452580605952.htm"
                           title="Gerapy爬虫管理框架深度解析:企业级分布式爬虫管控平台" target="_blank">Gerapy爬虫管理框架深度解析:企业级分布式爬虫管控平台</a>
                        <span class="text-muted">Python×CATIA工业智造</span>
<a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/pycharm/1.htm">pycharm</a>
                        <div>引言:爬虫工程化的必然选择随着企业数据采集需求指数级增长,传统单点爬虫管理模式面临三重困境:管理效率瓶颈:手动部署耗时占开发总时长的40%以上系统可靠性低:研究显示超过65%的爬虫故障源于部署或调度错误资源利用率差:平均爬虫服务器CPU利用率不足30%爬虫管理方案对比:┌───────────────┬─────────────┬───────────┬───────────┬──────────</div>
                    </li>
                    <li><a href="/article/1950172212006809600.htm"
                           title="读书|日常听课最需要什么" target="_blank">读书|日常听课最需要什么</a>
                        <span class="text-muted">百草丰茂</span>

                        <div>今天继续阅读赵国忠老师主编的《听课最需要什么》第一章《日常听课最需要什么》的第2~4个建议。老师们有很多机会听课,学校教研、外出学习、公开课比武,有些老师听了很多课,却毫无收获;有的老师却从听课开始,逐步走上了专业成长的道路。我想肯定是因为有些老师还没有了解听课的需要,今天大家就和我一起来聆听一下优秀教师给我们的听课建议。一、听课要有备而来。在现实中,常常看见老师们特别是年轻的老师们,带着一支笔,</div>
                    </li>
                                <li><a href="/article/3.htm"
                                       title="枚举的构造函数中抛出异常会怎样" target="_blank">枚举的构造函数中抛出异常会怎样</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/enum/1.htm">enum</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B/1.htm">单例</a>
                                    <div>首先从使用enum实现单例说起。 
 
为什么要用enum来实现单例? 
这篇文章( 
http://javarevisited.blogspot.sg/2012/07/why-enum-singleton-are-better-in-java.html)阐述了三个理由: 
1.enum单例简单、容易,只需几行代码: 
 

public enum Singleton {
	INSTANCE;</div>
                                </li>
                                <li><a href="/article/130.htm"
                                       title="CMake 教程" target="_blank">CMake 教程</a>
                                    <span class="text-muted">aigo</span>
<a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a>
                                    <div>转自:http://xiang.lf.blog.163.com/blog/static/127733322201481114456136/ 
  
CMake是一个跨平台的程序构建工具,比如起自己编写Makefile方便很多。 
介绍:http://baike.baidu.com/view/1126160.htm 
本文件不介绍CMake的基本语法,下面是篇不错的入门教程: 
http:</div>
                                </li>
                                <li><a href="/article/257.htm"
                                       title="cvc-complex-type.2.3: Element 'beans' cannot have character" target="_blank">cvc-complex-type.2.3: Element 'beans' cannot have character</a>
                                    <span class="text-muted">Cb123456</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/Webgis/1.htm">Webgis</a>
                                    <div>  cvc-complex-type.2.3: Element 'beans' cannot have character 
    Line 33 in XML document from ServletContext resource [/WEB-INF/backend-servlet.xml] is i</div>
                                </li>
                                <li><a href="/article/384.htm"
                                       title="jquery实例:随页面滚动条滚动而自动加载内容" target="_blank">jquery实例:随页面滚动条滚动而自动加载内容</a>
                                    <span class="text-muted">120153216</span>
<a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a>
                                    <div><script language="javascript">
$(function (){
	var i = 4;$(window).bind("scroll", function (event){
		//滚动条到网页头部的 高度,兼容ie,ff,chrome
		var top = document.documentElement.s</div>
                                </li>
                                <li><a href="/article/511.htm"
                                       title="将数据库中的数据转换成dbs文件" target="_blank">将数据库中的数据转换成dbs文件</a>
                                    <span class="text-muted">何必如此</span>
<a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/dbs/1.htm">dbs</a>
                                    <div>旗正规则引擎通过数据库配置器(DataBuilder)来管理数据库,无论是Oracle,还是其他主流的数据都支持,操作方式是一样的。旗正规则引擎的数据库配置器是用于编辑数据库结构信息以及管理数据库表数据,并且可以执行SQL 语句,主要功能如下。 
1)数据库生成表结构信息: 
        主要生成数据库配置文件(.conf文</div>
                                </li>
                                <li><a href="/article/638.htm"
                                       title="在IBATIS中配置SQL语句的IN方式" target="_blank">在IBATIS中配置SQL语句的IN方式</a>
                                    <span class="text-muted">357029540</span>
<a class="tag" taget="_blank" href="/search/ibatis/1.htm">ibatis</a>
                                    <div>在使用IBATIS进行SQL语句配置查询时,我们一定会遇到通过IN查询的地方,在使用IN查询时我们可以有两种方式进行配置参数:String和List。具体使用方式如下: 
 
1.String:定义一个String的参数userIds,把这个参数传入IBATIS的sql配置文件,sql语句就可以这样写: 
 
 
 
<select id="getForms" param</div>
                                </li>
                                <li><a href="/article/765.htm"
                                       title="Spring3 MVC 笔记(一)" target="_blank">Spring3 MVC 笔记(一)</a>
                                    <span class="text-muted">7454103</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/mvc/1.htm">mvc</a><a class="tag" taget="_blank" href="/search/bean/1.htm">bean</a><a class="tag" taget="_blank" href="/search/REST/1.htm">REST</a><a class="tag" taget="_blank" href="/search/JSF/1.htm">JSF</a>
                                    <div>    
     自从 MVC 这个概念提出来之后 struts1.X  struts2.X   jsf 。。。。。 
这个view 层的技术一个接一个! 都用过!不敢说哪个绝对的强悍! 
要看业务,和整体的设计! 
 
     最近公司要求开发个新系统!</div>
                                </li>
                                <li><a href="/article/892.htm"
                                       title="Timer与Spring Quartz 定时执行程序" target="_blank">Timer与Spring Quartz 定时执行程序</a>
                                    <span class="text-muted">darkranger</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/bean/1.htm">bean</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/quartz/1.htm">quartz</a>
                                    <div>有时候需要定时触发某一项任务。其实在jdk1.3,java sdk就通过java.util.Timer提供相应的功能。一个简单的例子说明如何使用,很简单: 1、第一步,我们需要建立一项任务,我们的任务需要继承java.util.TimerTask package com.test; import java.text.SimpleDateFormat; import java.util.Date; </div>
                                </li>
                                <li><a href="/article/1019.htm"
                                       title="大端小端转换,le32_to_cpu 和cpu_to_le32" target="_blank">大端小端转换,le32_to_cpu 和cpu_to_le32</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/C%E8%AF%AD%E8%A8%80%E7%9B%B8%E5%85%B3/1.htm">C语言相关</a>
                                    <div>大端小端转换,le32_to_cpu 和cpu_to_le32   字节序  
http://oss.org.cn/kernel-book/ldd3/ch11s04.html 
        小心不要假设字节序. PC 存储多字节值是低字节为先(小端为先, 因此是小端), 一些高级的平台以另一种方式(大端)</div>
                                </li>
                                <li><a href="/article/1146.htm"
                                       title="Nginx负载均衡配置实例详解" target="_blank">Nginx负载均衡配置实例详解</a>
                                    <span class="text-muted">avords</span>

                                    <div>[导读] 负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦。负载均衡先来简单了解一下什么是负载均衡,单从字面上的意思来理解就可以解  负载均衡是我们大流量网站要做的一个东西,下面我来给大家介绍在Nginx服务器上进行负载均衡配置方法,希望对有需要的同学有所帮助哦。 
负载均衡 
先来简单了解一下什么是负载均衡</div>
                                </li>
                                <li><a href="/article/1273.htm"
                                       title="乱说的" target="_blank">乱说的</a>
                                    <span class="text-muted">houxinyou</span>
<a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a><a class="tag" taget="_blank" href="/search/%E6%95%8F%E6%8D%B7%E5%BC%80%E5%8F%91/1.htm">敏捷开发</a><a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/1.htm">软件测试</a>
                                    <div>从很久以前,大家就研究框架,开发方法,软件工程,好多!反正我是搞不明白!   
这两天看好多人研究敏捷模型,瀑布模型!也没太搞明白.    
不过感觉和程序开发语言差不多,   
瀑布就是顺序,敏捷就是循环.    
瀑布就是需求、分析、设计、编码、测试一步一步走下来。而敏捷就是按摸块或者说迭代做个循环,第个循环中也一样是需求、分析、设计、编码、测试一步一步走下来。   
  
也可以把软件开发理</div>
                                </li>
                                <li><a href="/article/1400.htm"
                                       title="欣赏的价值——一个小故事" target="_blank">欣赏的价值——一个小故事</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/%E6%9C%89%E6%95%88%E8%BE%85%E5%AF%BC/1.htm">有效辅导</a><a class="tag" taget="_blank" href="/search/%E6%AC%A3%E8%B5%8F/1.htm">欣赏</a><a class="tag" taget="_blank" href="/search/%E6%AC%A3%E8%B5%8F%E7%9A%84%E4%BB%B7%E5%80%BC/1.htm">欣赏的价值</a>
                                    <div>  第一次参加家长会,幼儿园的老师说:"您的儿子有多动症,在板凳上连三分钟都坐不了,你最好带他去医院看一看。"  回家的路上,儿子问她老师都说了些什么,她鼻子一酸,差点流下泪来。因为全班30位小朋友,惟有他表现最差;惟有对他,老师表现出不屑,然而她还在告诉她的儿子:"老师表扬你了,说宝宝原来在板凳上坐不了一分钟,现在能坐三分钟。其他妈妈都非常羡慕妈妈,因为全班只有宝宝</div>
                                </li>
                                <li><a href="/article/1527.htm"
                                       title="包冲突问题的解决方法" target="_blank">包冲突问题的解决方法</a>
                                    <span class="text-muted">bingyingao</span>
<a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a><a class="tag" taget="_blank" href="/search/exclusions/1.htm">exclusions</a><a class="tag" taget="_blank" href="/search/%E5%8C%85%E5%86%B2%E7%AA%81/1.htm">包冲突</a>
                                    <div>包冲突是开发过程中很常见的问题: 
其表现有: 
1.明明在eclipse中能够索引到某个类,运行时却报出找不到类。 
2.明明在eclipse中能够索引到某个类的方法,运行时却报出找不到方法。 
3.类及方法都有,以正确编译成了.class文件,在本机跑的好好的,发到测试或者正式环境就 
抛如下异常: 
 
java.lang.NoClassDefFoundError: Could not in</div>
                                </li>
                                <li><a href="/article/1654.htm"
                                       title="【Spark七十五】Spark Streaming整合Flume-NG三之接入log4j" target="_blank">【Spark七十五】Spark Streaming整合Flume-NG三之接入log4j</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/Stream/1.htm">Stream</a>
                                    <div>先来一段废话: 
实际工作中,业务系统的日志基本上是使用Log4j写入到日志文件中的,问题的关键之处在于业务日志的格式混乱,这给对日志文件中的日志进行统计分析带来了极大的困难,或者说,基本上无法进行分析,每个人写日志的习惯不同,导致日志行的格式五花八门,最后只能通过grep来查找特定的关键词缩小范围,但是在集群环境下,每个机器去grep一遍,分析一遍,这个效率如何可想之二,大好光阴都浪费在这上面了</div>
                                </li>
                                <li><a href="/article/1781.htm"
                                       title="sudoku solver in Haskell" target="_blank">sudoku solver in Haskell</a>
                                    <span class="text-muted">bookjovi</span>
<a class="tag" taget="_blank" href="/search/sudoku/1.htm">sudoku</a><a class="tag" taget="_blank" href="/search/haskell/1.htm">haskell</a>
                                    <div>这几天没太多的事做,想着用函数式语言来写点实用的程序,像fib和prime之类的就不想提了(就一行代码的事),写什么程序呢?在网上闲逛时发现sudoku游戏,sudoku十几年前就知道了,学生生涯时也想过用C/Java来实现个智能求解,但到最后往往没写成,主要是用C/Java写的话会很麻烦。 
  
现在写程序,本人总是有一种思维惯性,总是想把程序写的更紧凑,更精致,代码行数最少,所以现</div>
                                </li>
                                <li><a href="/article/1908.htm"
                                       title="java apache ftpClient" target="_blank">java apache ftpClient</a>
                                    <span class="text-muted">bro_feng</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>最近使用apache的ftpclient插件实现ftp下载,遇见几个问题,做如下总结。 
1. 上传阻塞,一连串的上传,其中一个就阻塞了,或是用storeFile上传时返回false。查了点资料,说是FTP有主动模式和被动模式。将传出模式修改为被动模式ftp.enterLocalPassiveMode();然后就好了。 
 
看了网上相关介绍,对主动模式和被动模式区别还是比较的模糊,不太了解被动模</div>
                                </li>
                                <li><a href="/article/2035.htm"
                                       title="读《研磨设计模式》-代码笔记-工厂方法模式" target="_blank">读《研磨设计模式》-代码笔记-工厂方法模式</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a>
                                    <div>声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ 
 
 
 
 


package design.pattern;

/*
 * 工厂方法模式:使一个类的实例化延迟到子类
 * 某次,我在工作不知不觉中就用到了工厂方法模式(称为模板方法模式更恰当。2012-10-29):
 * 有很多不同的产品,它</div>
                                </li>
                                <li><a href="/article/2162.htm"
                                       title="面试记录语" target="_blank">面试记录语</a>
                                    <span class="text-muted">chenyu19891124</span>
<a class="tag" taget="_blank" href="/search/%E6%8B%9B%E8%81%98/1.htm">招聘</a>
                                    <div>或许真的在一个平台上成长成什么样,都必须靠自己去努力。有了好的平台让自己展示,就该好好努力。今天是自己单独一次去面试别人,感觉有点小紧张,说话有点打结。在面试完后写面试情况表,下笔真的好难,尤其是要对面试人的情况说明真的好难。 
今天面试的是自己同事的同事,现在的这个同事要离职了,介绍了我现在这位同事以前的同事来面试。今天这位求职者面试的是配置管理,期初看了简历觉得应该很适合做配置管理,但是今天面</div>
                                </li>
                                <li><a href="/article/2289.htm"
                                       title="Fire Workflow 1.0正式版终于发布了" target="_blank">Fire Workflow 1.0正式版终于发布了</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/workflow/1.htm">workflow</a><a class="tag" taget="_blank" href="/search/Google/1.htm">Google</a>
                                    <div>Fire Workflow 是国内另外一款开源工作流,作者是著名的非也同志,哈哈.... 
 官方网站是 http://www.fireflow.org 
 
 经过大家努力,Fire Workflow 1.0正式版终于发布了 
 
 正式版主要变化: 
1、增加IWorkItem.jumpToEx(...)方法,取消了当前环节和目标环节必须在同一条执行线的限制,使得自由流更加自由 
2、增加IT</div>
                                </li>
                                <li><a href="/article/2416.htm"
                                       title="Python向脚本传参" target="_blank">Python向脚本传参</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E8%84%9A%E6%9C%AC/1.htm">脚本</a><a class="tag" taget="_blank" href="/search/%E4%BC%A0%E5%8F%82/1.htm">传参</a>
                                    <div>如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢? 
需要模块:sys 
参数个数:len(sys.argv) 
脚本名:    sys.argv[0] 
参数1:     sys.argv[1] 
参数2:     sys.argv[</div>
                                </li>
                                <li><a href="/article/2543.htm"
                                       title="管理用户分组的命令gpasswd" target="_blank">管理用户分组的命令gpasswd</a>
                                    <span class="text-muted">dongwei_6688</span>
<a class="tag" taget="_blank" href="/search/passwd/1.htm">passwd</a>
                                    <div>NAME:  gpasswd - administer the /etc/group file 
SYNOPSIS: 
 gpasswd group 
 gpasswd -a user group 
 gpasswd -d user group 
 gpasswd -R group 
 gpasswd -r group 
 gpasswd [-A user,...] [-M user,...] g</div>
                                </li>
                                <li><a href="/article/2670.htm"
                                       title="郝斌老师数据结构课程笔记" target="_blank">郝斌老师数据结构课程笔记</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/1.htm">数据结构与算法</a>
                                    <div><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<</div>
                                </li>
                                <li><a href="/article/2797.htm"
                                       title="yii2 cgridview加上选择框进行操作" target="_blank">yii2 cgridview加上选择框进行操作</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/GridView/1.htm">GridView</a>
                                    <div>页面代码
<?=Html::beginForm(['controller/bulk'],'post');?>
<?=Html::dropDownList('action','',[''=>'Mark selected as: ','c'=>'Confirmed','nc'=>'No Confirmed'],['class'=>'dropdown',])</div>
                                </li>
                                <li><a href="/article/2924.htm"
                                       title="linux mysql" target="_blank">linux mysql</a>
                                    <span class="text-muted">fypop</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                                    <div>enquiry mysql version in centos linux 
yum list installed | grep mysql 
yum -y remove mysql-libs.x86_64 
enquiry mysql version in yum repositoryyum list | grep mysql oryum -y list mysql* 
install mysq</div>
                                </li>
                                <li><a href="/article/3051.htm"
                                       title="Scramble String" target="_blank">Scramble String</a>
                                    <span class="text-muted">hcx2013</span>
<a class="tag" taget="_blank" href="/search/String/1.htm">String</a>
                                    <div>Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrings recursively. 
Below is one possible representation of s1 = "great":</div>
                                </li>
                                <li><a href="/article/3178.htm"
                                       title="跟我学Shiro目录贴" target="_blank">跟我学Shiro目录贴</a>
                                    <span class="text-muted">jinnianshilongnian</span>
<a class="tag" taget="_blank" href="/search/%E8%B7%9F%E6%88%91%E5%AD%A6shiro/1.htm">跟我学shiro</a>
                                    <div>历经三个月左右时间,《跟我学Shiro》系列教程已经完结,暂时没有需要补充的内容,因此生成PDF版供大家下载。最近项目比较紧,没有时间解答一些疑问,暂时无法回复一些问题,很抱歉,不过可以加群(334194438/348194195)一起讨论问题。 
  
  
----广告-----------------------------------------------------</div>
                                </li>
                                <li><a href="/article/3305.htm"
                                       title="nginx日志切割并使用flume-ng收集日志" target="_blank">nginx日志切割并使用flume-ng收集日志</a>
                                    <span class="text-muted">liyonghui160com</span>

                                    <div>  
   nginx的日志文件没有rotate功能。如果你不处理,日志文件将变得越来越大,还好我们可以写一个nginx日志切割脚本来自动切割日志文件。第一步就是重命名日志文件,不用担心重命名后nginx找不到日志文件而丢失日志。在你未重新打开原名字的日志文件前,nginx还是会向你重命名的文件写日志,linux是靠文件描述符而不是文件名定位文件。第二步向nginx主</div>
                                </li>
                                <li><a href="/article/3432.htm"
                                       title="Oracle死锁解决方法" target="_blank">Oracle死锁解决方法</a>
                                    <span class="text-muted">pda158</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a>
                                    <div> select p.spid,c.object_name,b.session_id,b.oracle_username,b.os_user_name from v$process p,v$session a, v$locked_object b,all_objects c where p.addr=a.paddr and a.process=b.process and c.object_id=b.</div>
                                </li>
                                <li><a href="/article/3559.htm"
                                       title="java之List排序" target="_blank">java之List排序</a>
                                    <span class="text-muted">shiguanghui</span>
<a class="tag" taget="_blank" href="/search/list%E6%8E%92%E5%BA%8F/1.htm">list排序</a>
                                    <div>   在Java Collection Framework中定义的List实现有Vector,ArrayList和LinkedList。这些集合提供了对对象组的索引访问。他们提供了元素的添加与删除支持。然而,它们并没有内置的元素排序支持。   你能够使用java.util.Collections类中的sort()方法对List元素进行排序。你既可以给方法传递</div>
                                </li>
                                <li><a href="/article/3686.htm"
                                       title="servlet单例多线程" target="_blank">servlet单例多线程</a>
                                    <span class="text-muted">utopialxw</span>
<a class="tag" taget="_blank" href="/search/%E5%8D%95%E4%BE%8B/1.htm">单例</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a><a class="tag" taget="_blank" href="/search/servlet/1.htm">servlet</a>
                                    <div>转自http://www.cnblogs.com/yjhrem/articles/3160864.html 
和   http://blog.chinaunix.net/uid-7374279-id-3687149.html 
Servlet 单例多线程 
Servlet如何处理多个请求访问?Servlet容器默认是采用单实例多线程的方式处理多个请求的:1.当web服务器启动的</div>
                                </li>
                </ul>
            </div>
        </div>
    </div>

<div>
    <div class="container">
        <div class="indexes">
            <strong>按字母分类:</strong>
            <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
        </div>
    </div>
</div>
<footer id="footer" class="mb30 mt30">
    <div class="container">
        <div class="footBglm">
            <a target="_blank" href="/">首页</a> -
            <a target="_blank" href="/custom/about.htm">关于我们</a> -
            <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
            <a target="_blank" href="/sitemap.txt">Sitemap</a> -
            <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
        </div>
        <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
<!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
        </div>
    </div>
</footer>
<!-- 代码高亮 -->
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
<script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>





</body>

</html>