技术文章

Java第一阶段作业总结

匆匆过客 提交于 2021-02-17 16:32:36
前言: 本次总结针对于pta上第一阶段的三次作业,第一次作业主要训练Java的基础语法,如if...else语句、for、while循环语句;第二次作业主要对于方法的使用,比如有参数有返回值方法;第三次作业主要对于类、构造方法等的使用。 一、作业过程总结 1、作业之间知识的迭代关系:第一次作业针对题目需要实现的要求,主要是使用一些基础语法,如选择判断语句及循环语句;第二次作业则是对方法的使用,在方法中,实现部分所需的要求;第三次作业则是对于类的使用,不同的类中又使用了所需的不同方法,如构造方法等。 2、由面向过程过渡至面对对象的过程:第一次的作业是为了实现题目需要的要求,为了解决问题,就像写C语言一样,一个方法里解决所有问题,代码的复用性不高。(如下为第一次作业的源代码,主要是对基础语法的使用) import java.util.Scanner; public class Main{ static double a,b,c; public static void main(String[] args) { // TODO Auto-generated method stub Scanner y= new Scanner(System.in); a = y.nextDouble(); b = y.nextDouble(); c = y.nextDouble(); if (a<=0|

mac 下统计代码行数

霸气de小男生 提交于 2021-02-17 16:32:04
打开终端,用cd命令 定位到工程所在的目录,然后调用以下命名即可把每个源代码文件行数及总数统计出来: find . "(" -name "*.m" -or -name "*.mm" -or -name "*.cpp" -or -name "*.h" -or -name "*.rss" ")" -print | xargs wc -l 其中,-name "*.m" 就表示扩展名为.m的文件。 find . "(" -name "*.m" ")" -print | xargs wc -l 来源: oschina 链接: https://my.oschina.net/u/2506312/blog/672815

腾讯AI加速器招募再启,AI开放由工具箱变方法库?

一世执手 提交于 2021-02-17 16:31:21
文 | 李永华 来源 | 智能相对论(aixdlun) 伴随AI开放平台兴起的除了AI创业大潮,还有“AI加速器”这个源自硅谷的舶来品。本土科技企业、知名国际加速器纷纷通过新设业务或分部的方式入局AI加速器,既有腾讯这样的航母级企业走出去寻找项目,也有微软加速器这样的外来者扎根本土培育优质项目。 而随着腾讯的开启,AI加速器开始迅速升温。这种围绕AI能力开放的AI创业者扶持模式取代了传统支持力度有限的孵化器,开始大展拳脚,围绕AI加速器的竞争也拉开了序幕。 4月13日,腾讯在2018腾讯互联网+峰会上宣布其AI加速器二期启动全球招募,在玩法上进行“升级”, 聚焦医疗、智慧零售、智慧楼宇等赛道,同时也广邀农业、工业、旅游、环保、内容等行业合作伙伴的加入。 在这之前的9个月,首期腾讯AI加速器29个项目整体估值从70亿增长到200多亿。 而稍早前的3月,百度AI加速器第一期项目结项时一场声势浩大的Demo Day显示出百度把AI加速器提到了重要的战略位置。 虽然还没有入局,但马云曾说过投资1000亿的达摩院真正要做的是把技术进行普惠,看起来,相互争斗不止的BAT在AI加速器这里的会战也一定少不了, 催热“AI加速器”、最近又动作频频的腾讯则暂时处在领先位置上。 一 AI开放玩法下,加速器一定会变热闹 尽管在模式上AI加速器与创业孵化器有些类似,但“加速”而非“孵化

微服务架构Day06-SpringBoot之Docker

两盒软妹~` 提交于 2021-02-17 16:29:54
Docker介绍 开源应用 容器引擎 Docker支持将软件编译成一个镜像并配置好,就可以直接使用这个镜像了 运行中的镜像称为容器,容器的启动是非常快的 Docker的核心概念 Docker镜像(Images) :用于创建Docker容器的模板 Docker容器(Container) :容器是独立运行的一个或一组应用 Docker客户端(Client) :客户端通过命令行或工具使用Docker Docker主机(Host) :安装了Docker的机器(Docker是安装在操作系统上的) Docker仓库(Registry) :用来保存打包好的软件镜像 使用步骤 : 1.安装Docker 2.去Docker仓库找到对应的镜像 3.使用Docker运行这个镜像,就会生成Docker容器 4.对容器的启动停止就是对软件的启动停止 Docker安装 安装Docker: 启动Docker:systemctl start docker 将Docker服务设为开机启动: systemctl enable docker Docker命令 检索: docker search xxx 拉取: docker pull xxx:版本号(tag) 列表: docker images 删除: docker rmi image-id 容器操作 软件镜像-运行镜像-产生一个容器(正在运行的软件) 运行:

JAVA多态

流过昼夜 提交于 2021-02-17 16:26:12
 多态的理解: 多态是同一个行为具有多个不同表现形式或形态的能力。 多态就是同一个接口,使用不同的实例而执行不同操作。 多态性是对象多种表现形式的体现。  多态的优点:   1.消除类型之间的耦合关系   2.可替换性   3.可扩充性   4.接口性   5.灵活性   6.简化性  多态存在的三个必要条件   1.继承   2.重写   3.父类引用指向子类对象 比如 1 Parent p = new Child(); 当使用多态方式调用方法是,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,再去调用子类的同名方法。 1 package com.poly.www; 2 3 public class Test { 4 public static void main(String[] args) { 5 show( new Cat()); // 以 Cat 对象调用 show 方法 6 show( new Dog()); // 以 Dog 对象调用 show 方法 7 8 Animal a = new Cat(); // 向上转型 9 a.eat(); // 调用的是 Cat 的 eat 10 Cat c = (Cat) a; // 向下转型 11 c.work(); // 调用的是 Cat 的 work 12 } 13 14 public static void

Codeforces 1091E

眉间皱痕 提交于 2021-02-17 16:24:50
Codeforces 1091E 题意:给定n个点的度数,请你添加第n+1个点,输出所有可能的第n+1个点的度数 做法:1. 查看 链接 知道了下面这个定理 A sequence of non-negative integers $ d_1\geq\cdots\geq d_n$ can be represented as the degree sequence of a finite simple graph on $n$ vertices if and only if $ d_1+\cdots+d_n$ is even and$\sum {i=1}^{k}d {i}\leq k(k-1)+\sum {i=k+1}^{n}\min(d {i},k)$ holds for every k in ${\displaystyle 1\leq k\leq n}$. 2.排序之后,$[low(p), up(p)]$ 表示在$[p, p+1]$ 之间插入新的点度数$d_t$的取值范围。 (1) $d_{p+1} \leq d_t \leq d_p$ (2) 当 $d_t$ 在不等式左侧时 $$ d_t \leq k(k+1)+\sum {i=k+1}^{n}\min(d {i},k+1) - \sum {i=1}^{k}d {i}, p \leq k \leq n \ \Downarrow \

Grafana for zabbix

霸气de小男生 提交于 2021-02-17 16:24:21
Grafana 是纯Javascript开发的前端展示工具。后端数据源可以通过Graphite、InfluxDB、OpenTsDB等获取数据,或者通过插件的方式获取zabbix监控的数据。然后在前端通过Grafana展示数据,grafana可以自定义各种图表。 官方安装文档:http://docs.grafana.org/installation/rpm https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-grafana-to-plot-beautiful-graphs-from-zabbix-on-centos-7 ---plugin: https://grafana.com/plugins/alexanderzobnin-zabbix-app v3.9.0 https://grafana.com/plugins/grafana-clock-panel v0.0.9 https://grafana.com/plugins/grafana-piechart-panel v1.3.0 https://grafana.com/plugins/raintank-worldping-app v1.2.3 # 1. install grafana software and plugin

关于 vue 不能 watch 数组变化 和 对象变化的解决方案

喜欢而已 提交于 2021-02-17 16:23:14
原文地址: 关于 vue 不能 watch 数组变化 和 对象变化的解决方案 vue 监听数组和对象的变化 vue 监听数组 vue 实际上可以监听数组变化,比如: data () { return { watchArr: [], }; }, watchArr (newVal) { console.log( '监听:' + newVal); }, created () { setTimeout(() => { this .watchArr = [1, 2, 3 ]; }, 1000 ); }, 再如使用 splice(0, 2, 3) 从数组下标 0 删除两个元素,并在下标 0 插入一个元素 3: data () { return { watchArr: [ 1, 2, 3 ], }; }, watchArr (newVal) { console.log( '监听:' + newVal); }, created () { setTimeout(() => { this .watchArr.splice(0, 2, 3 ); }, 1000 ); }, push 数组也能够监听到 vue 无法监听数组变化的情况 但是,数组在下面两种情况无法监听: 利用索引直接设置一个数组项时,例如:arr[indexOfItem] = newValue; 修改数组的长度时,例如:arr.length

【RecyclerView优化】

不想你离开。 提交于 2021-02-17 16:22:46
1.局部刷新 ( 1)避免整个列表的数据更新 ,只更新受影响的布局。例如,加载更多时,不使用 notifyDataSetChanged() ,而是使用 notifyItemRangeInserted(rangeStart, rangeEnd) 补充:recyclerView.adapter的刷新: 刷新全部可见的item,notifyDataSetChanged() 刷新指定item,notifyItemChanged(int) position数据发生了改变,那调用这个方法,就会回调对应position的onBindViewHolder()方法了,当然,因为ViewHolder是复用的,所以如果position在当前屏幕以外,也就不会回调了,因为没有意义,下次position滚动会当前屏幕以内的时候同样会调用onBindViewHolder()方法刷新数据了。其他的方法也是同样的道理。 从指定位置开始刷新指定个item,notifyItemRangeChanged(int,int) 顾名思义,可以刷新从positionStart开始itemCount数量的item了(这里的刷新指回调onBindViewHolder()方法)。 插入、移动一个并自动刷新,notifyItemInserted(int)、notifyItemMoved(int)、notifyItemRemoved

Dart学习笔记(二)

帅比萌擦擦* 提交于 2021-02-17 16:22:13
1,一般而言,当我们定义一个字符串的时候,字符串要用单引号或者双引号括起来,单引号或者双引号的作用是一样的,如下: String str1 = '单引号' ; String str2 = "双引号" ; 当字符串有换行需求的时候,我们可以用 \n 来代表一个换行符,如下: String str1 = '单引号\n这是第二行了' ; print(str1); 打印结果如下: 单引号 这是第二行了 但是有没有一个更加可视化的定义可换行的字符串的方案呢,比如像下面这样直接换行: String str2 = "双引号 这是第二行了" ; print (str2); 运行之后我们发现,程序报错了。 其实, 在Dart中,除了单引号和双引号,还可以用三引号(即三个单引号或者三个双引号)来修饰字符串。 使用三引号修饰的字符串可以直接换行 ,如下所示: String str2 = '''双引号 这是第二行了''' ; print(str2); 运行之后打印结果如下: 双引号 这是第二行了 2,Dart中的 数组是List,字典是Map,可以通过is关键字来判断变量的类型 ,如下所示: var map2 = new Map (); map2[ 'name' ] = '李四' ; map2[ 'age' ] = 29 ; map2[ 'work' ] = [ '程序员' , '登山运动员' ];