今日头条_今日头条api - CSDN
精华内容
参与话题
  • 今日头条H5

    2020-07-21 09:59:31
    今日头条H5,移动端demo,HTML5。 今日头条H5,移动端demo,HTML5。
  • 今日头条技术架构分析

    万次阅读 2018-11-25 17:13:43
    ​ ​ 今日头条创立于2012年3月,到目前仅4年时间。从十几个工程师开始研发,到上百人,再到200余人。产品线由内涵段子,到今日头条,今日特卖,今日电影等产品线。 一、产品背景 ​ ​ 今日头条是为用户提供...

    ​ ​ 今日头条创立于2012年3月,到目前仅4年时间。从十几个工程师开始研发,到上百人,再到200余人。产品线由内涵段子,到今日头条,今日特卖,今日电影等产品线。

    一、产品背景

    ​ ​ 今日头条是为用户提供个性化资讯客户端。下面就和大家分享一下当前今日头条的数据(据内部与公开数据综合):

    • 5亿注册用户

    2014年5月1.5亿,2015年5月3亿,2016年5月份为5亿。几乎为成倍增长。

    • 日活4800万用户

    2014年为1000万日活,2015年为3000万日活。

    • 日均5亿PV

    5亿文章浏览,视频为1亿。页面请求量超过30亿次。

    • 用户停留时长超过65分钟以上

    1、文章抓取与分析

    ​ ​ 我们日常产生原创新闻在1万篇左右,包括各大新闻网站和地方站,另外还有一些小说,博客等文章。这些对于工程师来讲,写个Crawler并非困难的事。

    ​ ​ 接下来,今日头条会用人工方式对敏感文章进行审核过滤。此外,今日头条头条号目前也有为数不少的原创文章加入到了内容遴选队列中。

    ​​ ​ 接下来我们会对文章进行文本分析,比如分类,标签、主题抽取,按文章或新闻所在地区,热度,权重等计算。

    2、用户建模

    ​ ​ 当用户开始使用今日头条后,对用户动作的日志进行实时分析。使用的工具如下:

    - Scribe

    - Flume

    - Kafka

    ​ ​ 我们对用户的兴趣进行挖掘,会对用户的每个动作进行学习。主要使用:

    - Hadoop

    - Storm

    ​ ​ 产生的用户模型数据和大部分架构一样,保存在MySQL/MongoDB(读写分离)以及Memcache/Redis中。

    ​ ​ 随着用户量的不断扩展大,用户模型处理的机器集群数量较大。2015年前为7000台左右。其中,用户推荐模型包括以下维度:

    1 用户订阅

    2 标签

    3 部分文章打散推送

    此时,需要每时每刻做推荐。

    3、新用户的“冷启动”

    ​ ​ 今日头条会通过用户使用的手机,操作系统,版本等“识别”。另外,比如用户通过社交帐号登录,如新浪微博,头条会对其好友,粉丝,微博内容及转发、评论等维度进行对用户做初步“画像”。

    ​ ​ 分析用户的主要参数如下:

    - 关注、粉丝关系

    - 关系

    - 用户标签

    ​​ ​ 除了手机硬件,今日头条还会对用户安装的APP进行分析。例如机型和APP结合分析,用小米,用三星的和用苹果的不同,另外还有用户浏览器的书签。头条会实时捕捉用户对APP频道的动作。另外还包括用户订阅的频道,比如电影,段子,商品等。

    4、推荐系统

    ​ ​ 推荐系统,也称推荐引擎。它是今日头条技术架构的核心部分。包括自动推荐与半自动推荐系统两种类型:

    1 自动推荐系统

    - 自动候选

    - 自动匹配用户,如用户地址定位,抽取用户信息

    - 自动生成推送任务

    这时需要高效率,大并发的推送系统,上亿的用户都要收到。

    2 半自动推荐系统

    - 自动选择候选文章

    - 根据用户站内外动作

    ​ ​ 头条的频道,在技术侧划分的包括分类频道、兴趣标签频道、关键词频道、文本分析等,这些都分成相对独立的开发团队。目前已经有300+个分类器,仍在不断增加新的用户模型,原来的用户模型不用撤消,仍然发挥作用。

    ​ ​ 在还没有推出头条号时,内容主要是抓取其它平台的文章,然后去重,一年几百万级,并不太大。主要是用户动作日志收集,兴趣收集,用户模型收集。

    ​ ​ 资讯App的技术指标,比如屏幕滑动,用户是不是对一篇都看完,停留时间等都需要我们特别关注

    在这里插入图片描述

    5、数据存储

    ​ ​ 今日头条使用MySQL或Mongo持久化存储+Memched(Redis),分了很多库(一个大内存库),亦尝试使用了SSD的产品。

    ​ ​ 今日头条的图片存储,直接放在数据库中,分布式保存文件,读取的时候采用CDN。

    6、消息推送

    ​ ​ 消息推送,对于用户: 及时获取信息。对运营来讲,能够 提⾼⽤用户活跃度。比如在今日头条推送后能够提升20%左右的DAU,如果没有推送,会影响10%左右 DAU(2015年数据)。

    ​ ​ 推送后要关注的ROI:点击率,点击量。能够监测到App卸载和推送禁用数量。

    ​ ​ 今日头条推送的主要内容包括突发与热点咨讯,有人评论回复,站外好友注册加入。

    ​ ​ 在头条,推送也是个性化:

    - 频率个性化

    - 内容个性化

    - 地域

    - 兴趣

    比如:

    ​ ​ 按照城市:辽宁朝阳发生的某个新闻事件,发给朝阳本地的用户。

    ​ ​ 按照兴趣:比如京东收购一号店,发给互联网兴趣的用户。

    ​ ​ 推送平台的工具和选择,需要具备如下的标准:

    ​ ​ ​ ​ - 通道,首先速度要快,但是要可控,可靠,并且节省资源

    ​ ​ ​ ​ - 推送的速度要快,有不同维度的策略支持,可跟踪,开发接口要友好

    ​ ​ ​ ​ - 推送运营的后台,反馈也要快,包括时效性,热度,工具操作方便

    ​ ​ ​ ​ - 对于运营侧,清晰是否确定推荐,包括推送的文案处理

    ​ ​ 因此,推送后台应该提供日报,完整的数据后台,提供A/B Test方案支持。

    ​ ​ 推送系统一部分使用自有IDC,在发送量特别大,消耗带宽较严重。可以使用类似阿里云的服务,可有效节省成本。

    二、今日头条系统架构

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    三、头条微服务架构

    ​​ ​ 今日头条通过拆分子系统,大的应用拆成小应用,抽象通用层做代码复用。

    在这里插入图片描述

    ​​ ​ 系统的分层比较典型。重点在基础设施,希望通过基础设施提高快速迭代、容灾和一系列的工作,希望各个业务团队能更快做业务上的迭代以及架构上的调整。

    四、今日头条的虚拟化PaaS平台规划


    ​ ​ 通过三层实现,通过 PaaS 平台统一管理。提供通用 SaaS 服务,同时提供通用的 App 执行引擎。最底层是 IaaS 层。

    在这里插入图片描述

    ​ ​ IaaS 管理所有的机器,把公有云整合起来,头条有一些热点事件会全国推广推送,对网络带宽比较高,我们借助公有云,需要哪一种类型计算资源,统一抽象起来。基础设施结合服务化的思路,比如日志,监控等等功能,业务不需要关注细节就可以享受到基础设施提供的能力。

    五、总结

    ​ ​ 今日头条重要的部分在于:

    • 数据生成与采集
    • 数据传输。Kafka做消息总线连接在线和离线系统。
    • 数据入库。数据仓库、ETL(抽取转换加载)
    • 数据计算。数据仓库中的数据表如何能被高效的查询很关键,因为这会直接关系到数据分析的效率。常见的查询引擎可以归到三个模式中,Batch 类、MPP 类、Cube 类,头条在 3 种模式上都有所应用。

    参考资料:今日头条的核心架构解析

    ​ ​ ​ ​ ​ ​Go – 今日头条架构

    ​ ​ ​ ​ ​ 从无到有、从小到大,今日头条大数据平台实践经历的那些坑

    ​ ​ ​ ​ ​ 今日头条推荐系统架构设计实践

      收集资料,码字,整理,最后排版都不容易,如果觉得对你有用的话,凑个奶茶钱(非强制啊,只是想犒劳自己一下)~

     微信         支付宝
    微信收款码支付宝收款码

    展开全文
  • 今日头条视频下载器

    2020-07-21 09:59:54
    写的一个今日头条下载器
  • 【回复“1024”,送你一个特别推送】其实我已经卸载今日头条快两年了,之前从14年我就成为了今日头条的自媒体作者,那时今日头条刚刚起步,自从入住以来写一些科技类的文章流量还不错,开通了流量主之后,每天都是几...
        

    【回复“1024”,送你一个特别推送】

    640?wxfrom=5&wx_lazy=1

    其实我已经卸载今日头条快两年了,之前从14年我就成为了今日头条的自媒体作者,那时今日头条刚刚起步,自从入住以来写一些科技类的文章流量还不错,开通了流量主之后,每天都是几十块钱的收入,流量高时甚至上百。那一年文章浏览量总共接近450万左右。

    随着15年,今日头条的崛起,越来越多的自媒体人加入,文章被推荐的次数少了,虽然看今日头条的人越来越多,但是我的文章流量却越来越少。今日头条一度陷入被其他媒体告上法庭,说未经允许擅自转载侵权。头条为了鼓励越来也多的人加入自媒体行业,开始了千人万元计划,鼓励更多的作者入驻,写文章,分享文章和新闻。自媒体作者的流量少跟越来越多的用户加入形成了鲜明的反比,原因不过如此:自媒体人的加入太多了,另外一个是原因就是文章质量肯定不好。

    但是今日头条的算法推荐就像是近代史上外国人用毒品腐蚀国人一样,让越来越多的用户上瘾,甚至欲罢不能。你喜欢什么,他就给你推荐什么,越给你推荐,你就越禁不住诱惑的去看。我16年初开始卸载了今日头条,其实卸载今日头条的原因不是我的文章流量低了,而是它毒品是的算法推荐限制了我的视野,禁锢了我的思维。其实更重要的一个原因就是人人都是自媒体作者之后,没了门槛和限制,里面的内容太多质量堪忧,文章毫无涵养,标题党盛行。当然,随着今日头条的带动,搜狐号,百家号,企鹅号都一样,自媒体时代到来了,文章质量都低了。

    就在过年前,我发现我身边的同事竟然能在今日头条里刷一天,无聊的时候再刷,吃饭的时候再刷,不仅如此,我媳妇也是如此,什么火山小视频更是火爆。另外,让我想不到的是,抖音小视频也是头条的。头条矩阵很强大啊!!!

    在春节期间,大年二十九的时候,为了给我媳妇集齐十二生肖,不得已重新装回了今日头条,也玩了玩直播答题,原来西瓜视频也是今日头条的,我简直服了。又重新看了看今日头条,看到了悟空问答,其实悟空问答我知道是今日头条的,毕竟知乎挖角事件闹得沸沸扬扬,你不得不服,今日头条真是有钱。

    哪里有钱?为了悟空问答起来,花重金在知乎挖角,我下回今日头条之后,竟然发现悟空问答竟然有回答增红包,分享送红包的功能,西瓜视频百万答题,春节送出10亿红包。我没想到这么一款让你欲罢不能的产品竟然也玩起了红包,送钱。我一直认为头条不送钱,都能让你欲罢不能。

    看到悟空问答答题送钱之后,作为一个玩知乎,爱答题的程序员,一个爱好写文章的情怀开发者,瞬间感觉损失了好几个亿!!!感觉这两年时间头条在发展,我却错过了最好的机遇。我在想,如果我在今日头条里坚持写文章下去,我会不会也能赚到很多钱呢?痛心啊!当然,仅仅是异想天开的想法。

    头条现在有多强大,我最近才发现头天矩阵不小啊!!!今日头条,火山小视频,西瓜视频,抖音小视频,悟空问答,还有最近过年期间收购的 Faceu 激萌 ,真可谓在短视频和新闻领域无人能敌。真的是感觉快手这种三四线城市乡村之王,能够完全被头条矩阵给干下去。

    今日头条的野心不可小觑,今日头条中的微头条功能针对的是微博,对此头条邀请了众多娱乐明星入驻,靠明星影响力带动粉丝形成互动。悟空问答砸钱奋起直追知乎,短视频领域更是产品众多,快手估计都不是对手。

    说了这么多,你们大家想到过靠一个算法推荐起家的新闻类软件能够崛起如此迅速吗?真的不能小瞧这么一个算法推荐的模式啊,了解你的算法挺可怕的啊!!!另外,我们可能很多人不喜欢这样的模式,不喜欢今日头条,但是头条矩阵的形成和头条的康概砸钱,我们其实在这个自媒体人人都可以分享的时代,想点办法赚点头条的钱,而不是花钱看短视频,看主播直播。

    其实就目前来看,头条虽大,但是有一点可能是它的痛点,就是新闻质量的监管和短视频的监管。毕竟在前一段时间头条好多频道被要求整改,春节期间直播答题也被要求停止整改,很多短视频作者,直播主播被封杀。头条火爆的背后,如果解决不了新闻,视频监管问题,迟早头条会被监管。

    让人欲罢不能的头条,你们会继续使用吗?会用它赚钱吗?

    640

    展开全文
  • 今日头条

    2018-07-22 23:17:20
    Mainxml: <?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.DrawerLayout android:layout_width="match_parent" android:layout_height...

    Mainxml:

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.v4.widget.DrawerLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/dl"
    
        >
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
            >
          <RelativeLayout
              android:layout_width="wrap_content"
              android:layout_height="wrap_content">
              <ImageView
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:src="@mipmap/ic_launcher"
                  />
              <TextView
                  android:layout_width="match_parent"
                  android:layout_height="wrap_content"
                  android:text="今日头条"
                  android:textSize="28sp"
                  android:gravity="center"
                  />
          </RelativeLayout>
            <android.support.v4.view.ViewPager
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:id="@+id/vp"
                >
                <android.support.design.widget.TabLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:id="@+id/tab_layout"
                    ></android.support.design.widget.TabLayout>
            </android.support.v4.view.ViewPager>
    
        </LinearLayout>
        <LinearLayout
            android:layout_width="300dp"
            android:layout_height="match_parent"
            android:orientation="vertical"
            android:layout_gravity="start"
            android:background="#ff0"
            >
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="用户名"
                />
        </LinearLayout>
    </android.support.v4.widget.DrawerLayout>

     

    fragment1:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".fragment.fragment1">
    
        <android.support.v4.view.ViewPager
            android:id="@+id/vp"
            android:layout_width="match_parent"
            android:layout_height="200dp"></android.support.v4.view.ViewPager>
    
    </LinearLayout>

     

    fragment2:

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".fragment.fragment2">
    
        <!-- TODO: Update blank fragment layout -->
        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="@string/hello_blank_fragment" />
    
    </FrameLayout>

     

    item_layout

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".fragment.fragment2">
    
        <!-- TODO: Update blank fragment layout -->
        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="@string/hello_blank_fragment" />
    
    </FrameLayout>

     

    mainactivity:

    package com.example.zklx4;
    
    import android.support.design.widget.TabLayout;
    import android.support.v4.app.Fragment;
    import android.support.v4.view.ViewPager;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    
    import com.example.zklx4.fragment.fragment1;
    import com.example.zklx4.fragment.fragment2;
    import com.example.zklx4.myadapter.Fragmentadapter;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class MainActivity extends AppCompatActivity {
    
        private TabLayout tab_layout;
        private ViewPager vp;
        private List<Fragment> fragments;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //初始化控件
            tab_layout = findViewById(R.id.tab_layout);
            vp = findViewById(R.id.vp);
            //创建一个集合
            fragments = new ArrayList<>();
            fragments.add(new fragment1());
            fragments.add(new fragment2());
            fragments.add(new fragment2());
            fragments.add(new fragment2());
            fragments.add(new fragment2());
            //创建一个适配器
           vp.setAdapter(new Fragmentadapter(getSupportFragmentManager(),fragments));
    
        }
    }
    

    fragment1:

    package com.example.zklx4.fragment;
    
    
    import android.annotation.SuppressLint;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.support.annotation.Nullable;
    import android.support.v4.app.Fragment;
    import android.support.v4.view.ViewPager;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.view.animation.Animation;
    import android.widget.ImageView;
    
    import com.example.zklx4.R;
    import com.example.zklx4.bean.user;
    import com.example.zklx4.myadapter.padapter;
    import com.example.zklx4.myadapter.vadapter;
    import com.google.gson.Gson;
    import com.nostra13.universalimageloader.core.ImageLoader;
    
    import java.io.ByteArrayOutputStream;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLConnection;
    import java.nio.ByteBuffer;
    import java.util.List;
    
    /**
     * A simple {@link Fragment} subclass.
     */
    public class fragment1 extends Fragment {
    
    
        private ViewPager vp;
        @SuppressLint("HandlerLeak")
        /*private Handler handler = new Handler(){
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                if (msg.what==0){
                   String s = (String) msg.obj;
                    Gson gson = new Gson();
                    user fromJson = gson.fromJson(s, user.class);
                    List<user.ResultsBean> results = fromJson.getResults();
                    Log.i("bbb",results+"");
                    //Log.i("aaa",results.get(0).getWho());
                    //vp.setAdapter(new padapter(getActivity(),results));
                    handler.sendEmptyMessageDelayed(1,2000);
                } else if (msg.what==1) {
                    int currentItem = vp.getCurrentItem();
                    vp.setCurrentItem(currentItem+1);
                    handler.sendEmptyMessageDelayed(1,2000);
    
                }
            }
        };*/
        public fragment1() {
            // Required empty public constructor
        }
    
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            View view = inflater.inflate(R.layout.fragment_fragment1, container, false);
            vp = view.findViewById(R.id.vp);
    
            return view;
        }
    
        @Override
        public void onActivityCreated(@Nullable Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
            new Thread(){
                @Override
                public void run() {
                    super.run();
                    String path="http://result.eolinker.com/iYXEPGn4e9c6dafce6e5cdd23287d2bb136ee7e9194d3e9?uri=banner";
                    try {
                        URL url = new URL(path);
                        HttpURLConnection coon = (HttpURLConnection) url.openConnection();
                        coon.setConnectTimeout(5000);
                        coon.setRequestMethod("GET");
                        if (coon.getResponseCode()==200){
                            InputStream inputStream = coon.getInputStream();
                            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
                            int len =-1;
                            byte[] bytes = new byte[1024];
                            while((len=inputStream.read(bytes))!=-1){
                                byteArrayOutputStream.write(bytes,0,len);
                            }
                            String s2 = byteArrayOutputStream.toString();
                            String s = new String(s2);
                            Log.i("aaa",s);
                            /*Message message = new Message();
                            message.what=0;
                            message.obj=s;
    
    
                            handler.sendMessage(message);*/
                            Gson gson=new Gson();
                            user s1 = gson.fromJson("s", user.class);
                            List<user.ResultsBean> results = s1.getResults();
                            vp.setAdapter(new padapter(getActivity(),results));
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }.start();
        }
    }
    

    fragment2:

    package com.example.zklx4.fragment;
    
    
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    import com.example.zklx4.R;
    
    /**
     * A simple {@link Fragment} subclass.
     */
    public class fragment2 extends Fragment {
    
    
        public fragment2() {
            // Required empty public constructor
        }
    
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            // Inflate the layout for this fragment
            View view = inflater.inflate(R.layout.fragment_fragment2, container, false);
            return view;
        }
    
    }
    

    app:

    package com.example.zklx4.app;
    
    import android.app.Application;
    import android.content.Context;
    
    import com.nostra13.universalimageloader.core.ImageLoader;
    import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
    
    public class App extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            ImageLoaderConfiguration build = new ImageLoaderConfiguration.Builder(getApplicationContext()).build();
            ImageLoader.getInstance().init(build);
        }
    }
    

     

    fragmentAdapter:

    package com.example.zklx4.myadapter;
    
    import android.content.Context;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.FragmentPagerAdapter;
    import android.view.ViewGroup;
    
    import java.util.List;
    
    public class Fragmentadapter extends FragmentPagerAdapter {
        private List<Fragment> fragments;
        private String title[]={"推荐","社会","咨询","热点","头条"};
    
        public Fragmentadapter(FragmentManager fm, List<Fragment> fragments) {
            super(fm);
            this.fragments = fragments;
        }
    
        @Override
        public Fragment getItem(int position) {
            return fragments.get(position);
        }
    
        @Override
        public int getCount() {
            return fragments.size();
        }
    
        @Override
        public CharSequence getPageTitle(int position) {
            return title[position];
        }
    }
    

     

    padapter:

    package com.example.zklx4.myadapter;
    
    import android.content.Context;
    import android.support.v4.view.PagerAdapter;
    import android.util.Log;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ImageView;
    
    import com.example.zklx4.bean.user;
    import com.nostra13.universalimageloader.core.ImageLoader;
    
    import java.util.List;
    
    public class padapter extends PagerAdapter {
        private Context context;
        private List<user.ResultsBean> results;
    
        public padapter(Context context, List<user.ResultsBean> results) {
            this.context = context;
            this.results = results;
        }
    
        @Override
        public int getCount() {
            return Integer.MAX_VALUE;
        }
    
        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == object;
        }
    
        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            ImageView imageView = new ImageView(context);
            imageView.setScaleType(ImageView.ScaleType.FIT_XY);
            Log.i("aaaa","11111");
            Log.i("aaa",results.get(1).getWho());
            try{
                ImageLoader.getInstance().displayImage(results.get(position % results.size()).getImages().get(0), imageView);
            }catch (Exception e){
                e.getMessage();
            }
    
            Log.i("aaa",imageView+"");
            container.addView(imageView);
            return imageView;
    
    
        }
    
        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView((View) object);
        }
    }
    

    vadapter:

    package com.example.zklx4.myadapter;
    
    import android.content.Context;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;
    
    import com.example.zklx4.R;
    import com.example.zklx4.bean.user;
    import com.nostra13.universalimageloader.core.ImageLoader;
    
    import java.util.List;
    
    public class vadapter extends BaseAdapter {
        private Context context;
        private List<user.ResultsBean> results;
        public vadapter(Context context, List<user.ResultsBean> results) {
            this.context = context;
            this.results = results;
        }
    
        @Override
        public int getCount() {
            return results.size();
        }
    
        @Override
        public Object getItem(int i) {
            return results.get(i);
        }
    
        @Override
        public long getItemId(int i) {
            return i;
        }
    
        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            holder holder = null;
            if (view==null){
                holder = new holder();
                view=View.inflate(context, R.layout.item_layout,null);
                holder.imag_view=view.findViewById(R.id.imag_view);
                view.setTag(holder);
            }else{
                holder= (vadapter.holder) view.getTag();
            }
            ImageLoader.getInstance().displayImage(results.get(i).getImages().get(0),holder.imag_view);
            return view;
        }
        class holder{
            ImageView imag_view;
        }
    }
    
    展开全文
  • 今日头条4

    2019-05-07 11:20:10
    答案在某个区间里面,答案里面左边满足某个性质,右边不满足用二分法 有N根绳子,第i根绳子长度为LiLi,现在需要M根等长的绳子,你可以对N根绳子进行任意裁剪(不能拼接),请你帮忙计算出这M根绳子最长的长度是...

    答案在某个区间里面,答案里面左边满足某个性质,右边不满足用二分法

    有N根绳子,第i根绳子长度为LiLi,现在需要M根等长的绳子,你可以对N根绳子进行任意裁剪(不能拼接),请你帮忙计算出这M根绳子最长的长度是多少。

    输入格式

    第一行包含2个正整数N、M,表示原始绳子的数量和需求绳子的数量。

    第二行包含N个整数,其中第 i 个整数LiLi表示第 i 根绳子的长度。

    输出格式

    输出一个数字,表示裁剪后最长的长度,保留两位小数。

    数据范围

    1≤N,M≤1000001≤N,M≤100000,
    0<Li<1090<Li<109

    输入样例:

    3 4
    3 5 4
    

    输出样例:

    2.50
    

    样例解释

    第一根和第三根分别裁剪出一根2.50长度的绳子,第二根剪成2根2.50长度的绳子,刚好4根

    #include <iostream>
    #include <algorithm>
    #include <iomanip>
    const int N = 100010;
    int a[N];
    int n,m;
    
    using namespace std;
    bool check(double mid){
        int s=0;
        for(int i=0;i<N;i++){
            s+=a[i]/mid;
            if(s>=m) return true;
        }
        return false;
    }
    int main(){
        cin>>n>>m;
        for(int i=0;i<N;i++){
            cin>>a[i];
        }
        double l=0,r=1e9;
        while(r-l>1e-4){
            double mid=(l+r)/2;
            if(check(mid)) l=mid;
            else r=mid;
        }
        cout.setf(ios::fixed);
        cout<<setprecision(2)<<r<<endl;
        return 0;
    }
    

    https://www.acwing.com/problem/content/682/   https://www.bilibili.com/video/av49335912

    二分算法模板https://www.acwing.com/blog/content/31/

    展开全文
  • 今日头条推荐系统

    千次阅读 2019-03-22 09:30:10
    多年架构与管理经验, 原赶集网创始工程师,正和岛CTO以及今日头条今日特卖技术负责人。 今日头条创立于2012年3月,到目前仅4年时间。从十几个工程师开始研发,到上百人,再到200余人。产品线由内涵段子,到今日...
  •  本文讨论一下数据监听线程和订单管理线程做些什么。  一,数据监听线程  数据监听线程,当行情处理线程接收到新的行情数据时,也就是每当一个tick到来时,就向数据监听线程发出信号,触发此线程启动,然后...
  • 今日头条大数据架构

    2020-04-12 15:09:33
    产品线由内涵段子,到今日头条,今日特卖,今日电影等产品线。 一、产品背景 今日头条是为用户提供个性化资讯客户端。下面就和大家分享一下当前今日头条的数据(据内部与公开数据综合): 5亿注册用户 2014年5月1.5...
  • =======================================================================================================================================================================================================....
  • 字节跳动(ByteDance)在最近一次融资中的...旗下产品包括 今日头条、抖音(Tik Tok)、悟空问答、西瓜视频、火山小视频、快马、花熊、激萌、图虫、懂车帝、多闪、时光相册等。 关键时间点: 版图关系: ...
  • 今日头条是怎么盈利的?

    万次阅读 2019-09-24 21:49:17
    大部分的互联网企业,主要营业收入来自互联网广告。包括互联网巨头谷歌、Facebook、以及国内的百度、阿里巴巴,有相当比重的营业收入来自广告。 根据《2018年中国互联网...字节跳动就是今日头条的母公司。旗下除...
  • 网页版今日头条如何设置使用账号密码登录 1、使用验证码登录账号,今日账号设置 2、进入安全中心 3、验证码关闭可信校验
  • 自媒体盛行的今天,我也是头条的忠实用户,大概在2015年初的时候用新浪微博登录了今日头条,自登录后就再也没有退出过,中途绑定过手机号A,但是没有设置登录密码,今日手贱点了退出,再想登录时发现已经不能用新浪...
  • Python 刷今日头条阅读量

    万次阅读 2019-11-06 11:11:25
    版权声明: Linux入门学习系列教程: 跟我一起学Linux(一)Linux的历史 跟我一起学Linux(二)对Linux系统管理员的建议 跟我一起学Linux(三)安装Linux操作系统 跟我一起学Linux(四)初步认识Linux ...
  • 今日头条笔试面试大全

    千次阅读 2018-10-14 19:00:55
    整理了一下今日头条往届笔试面试题,希望对大家有帮助: 超级有用的面试题:Java常见面试题 常见算法面试题 数据库常见面试题 操作系统常见面试题 C/C++常见面试题 大数据常见面试 python常见面试 来源:...
  • 今日头条最新signature

    千次阅读 热门讨论 2020-05-23 10:12:25
    最新今日头条sign加密更新了,抽时间看了看,比上次的加密难度增加了许多。接下来讲下加密流程。 今日头条获取下一页面的数据时断点位置 我们只需要找到window.byted_acrawler的生成就可以了。用fiddler拦击...
  • 今日头条最新版_signature参数最新出炉,2020-4-17版。

    千次阅读 热门讨论 2020-05-20 09:49:46
    其实还是懒。。 关注我的公众号看逆向文章 个人公众号:pythonORjs
  • 今日头条&抖音小程序开发文档

    万次阅读 2020-08-27 19:00:26
    问题:百度上直接搜索“ 今日头条小程序开发文档 ” 或 “ 抖音小程序开发文档 ”,是搜不出来开发文档的,你可以搜索 “ 字节跳动小程序 ”。 点击这里可直接进入开发文档,或直接点击:...
  • 对于今日头条的爬虫,网上搜索出来的文章大多是基于崔庆才(通过搜索爬取美女街拍的方案),怎么说呢,类似这样的虽说是个巧办法,但是用到工作中却是行不通的。在这里,网上是搜了又搜,谷歌,百度都用上了。在这里...
1 2 3 4 5 ... 20
收藏数 32,897
精华内容 13,158
关键字:

今日头条