Other

java狂神方法

一、方法是什么 原子性:一种方法只能完成一个功能,这样利于后期拓展。 下面来展示一个简单的方法: 这个是比较简单的方法。 二、方法的构成   (viod表示空的意思) 具体的写法是这样的: 在看一个简单的方法: 三、方法的调用 四、方法重载 重载就是在一个类中,有相同的函数名称,但是形参不同的函数。 五、可变参数 来看例子, 其实这个例子中有许多我都不太明白,在后面的学习中应该能懂。 六、递归  递归简单来说就是数学里的 “!”举个例子: 1!=1 2!=2*1 3! =3*2*1 5!=5*4*3*2*1 ...   这就是用代码的形式表达递归,可以看到在sout里面输入对应的数,方法就能计算出对应数的递归。 我们来解释一下f(4)在递归里面的演示过程:可以看到方法里面有n*f(n-1),所以输入4可以得到4*f(3),而f(3)仍然是方法里面的字符,所以f(3)仍然会走方法,得到3*f(2),以此类推... 当得到f(1)=1时,这一串数字里面就没有方法的f了,就可以一个一个往回乘了,最终就是1*2*3*4=24。在这个过程中大致可以分为这样几个阶段: (图中是以f(5)为例,实际不影响) 一个是边界条件,就是使这个停止的一个条件,在本例中f(1)=1就是边界条件,因为当数字乘到1时就不会再出现f方法了; 一个是前阶段,可以理解为f(4)=4*f(3),f(3)=3*f(2)...这个阶段,在这个阶段的目的可以看作把所有算式中的f方法都去除,去除到没有f方法就可以进行下一阶段了; 最后一个是返回阶段,也就是4*3*2*1这个阶段,得出最后的数为24。 七、作业 这一章的作业是写一个计算器,一开始我打算用scanner实现交互,在用方法写加减乘除,然后在scanner中识别输入的符号就能调用相应的方法,但最后发现在写方法的时候无法实现类似if(num1+num2){}这样的语句,所以就g了。最后还是在网上找到了大佬码的内容,试着理解了一遍,也写出来了。在这个过程中我发现自己用scanner后不关闭,而且写switch也没有加break,导致出现穿透现象,一开始还想不明白,后面一看才知道...说明基础还是没有掌握牢固。最后打上自己写的作业: 最后实现的交互是这样子的: 方法的学习到这里就结束啦!  

Java多态

1.多态的基本介绍  多态是继封装、继承之后,面向对象的第三大特性。  多态体现为父类引用变量可以指向子类对象。  注意:在使用多态后的父类引用变量调用方法时,会调用子类重写后的方法。  多态是同一个行为具有多个不同表现形式或形态的能力。  多态就是同一个接口,使用不同的实例而执行不同操作。   通俗点讲,多态就是不同对象对同一物体或事件发出不同的反应或响应,比如stuendt是一个父类,那么在操场上上体育课的学生和在教室里面的学生就是它的子类。这时上课铃声响了,上体育课的学生去操场,在教室里面上课的学生则是回教室,不同的学生有着不同的反应,这就是多态。  多态的定义格式:父类类型 变量名=new 子类类型(); 2.实现多态的条件  继承:必须要有子类继承父类的继承关系。  重写:子类需要对父类的一些方法进行重写,然后调用方法时就会调用子类重写的方法而不是原本父类的方法。  动态绑定:父类引用指向的或者调用的方法是子类的方法  class win{ String name; win(){ name=win; } win(String name){ this.name=name;  } public void tostring() { System.out.println( this is win ); Tostring(); } public void Tostring() { System.out.println( This is win ); } public void setName(String name) { this.name=name; } public String getName() { return name;

Windows系统下安装npm及cnpm (转)

原文地址:https://www.cnblogs.com/yominhi/p/7039795.html 【工具官网】 Node.js : http://nodejs.cn/ 淘宝NPM: https://npm.taobao.org/ 【安装步骤】 一、安装node.js 1.前往node.js官网下载并安装工具,这里安装路径选到D盘,D:\Program Files\nodejs 安装完毕在命令行输入以下命令测试是否安装成功,正确会出现版本号 npm -v 2.改变原有的环境变量, (1)我们要先配置npm的全局模块的存放路径以及cache的路径,例如我希望将以上两个文件夹放在NodeJS的主目录下,便在NodeJs下建立node_global及node_cache两个文件夹,输入以下命令改变npm配置 npm config set prefix D:\Program Files\nodejs\node_global npm config set cache D:\Program Files\nodejs\node_cache (2)在系统环境变量添加系统变量NODE_PATH,输入路径D:\Program Files\nodejs\node_global\node_modules,此后所安装的模块都会安装到改路径下 (3)在命令行输入以下命令试着安装express(注:“-g”这个参数意思是装到global目录下,也就是上面说设置的“D:\Program Files\nodejs\node_global”里面。) npm install express -g 安装完毕后可以看到.\node_global\node_modules\express 已经有内容 (4)在命令行输入node进入编辑模式,输入以下代码测试是否能正常加载模块: require('express') 假设成功,可以看到有输出。假设出错,检查NODE_PATH的路径。 二、安装淘宝npm(cnpm) 1.安装cnpm (1)输入以下命令 npm install -g cnpm --registry=https://registry.npm.taobao.org (2)输入cnpm -v输入是否正常,这里肯定会出错。 cnpm -v (3)添加系统变量path的内容  因为cnpm会被安装到D:\Program Files\nodejs\node_global下,而系统变量path并未包含该路径。在系统变量path下添加该路径即可正常使用cnpm。

【Java】学习路径49-练习:使用两个不同的线程类实现买票系统

练习:使用两个不同的线程类实现买票系统 请创建两个不同的线程类、一个测试类以及一个票的管理类。 其中票的管理类用于储存票的数量。两个线程类看作不同的买票方式。 步骤: 1、创建所需的类 App售票线程类 public class Runnable_AppTicketSeller implements Runnable{ @Override public void run() { } } Web售票线程类 public class Runnable_WebTicketSeller implements Runnable{ @Override public void run() { } } 买票测试类 public class BuyTicket { public static void main(String[] args) { Runnable_AppTicketSeller ra = new Runnable_AppTicketSeller(); Runnable_WebTicketSeller rb = new Runnable_WebTicketSeller(); Thread tApp = new Thread(ra,App售票); Thread tWeb = new Thread(rb,Web售票); tApp.start(); tWeb.start(); } }  票务管理类 public class TicketMgr { public static int count = 100; }  2、编写两个售票类  在两个run()中加入:

Python3函数中如何理解递归

递归是一种直接或间接调用自己的函数。 例如: def a(): a() # 直接调用自身,无限循环 def b(func): func() # 传入一个函数名,调用传入的函数 def c(): b(c) # 间接调用自身,调用b函数,b函数中根据传人参数调用c函数,无限循环 a() c() 此时无聊运行a()或者c()都会抛出达到最大递归深度异常 ... RecursionError: maximum recursion depth exceeded 即Python解释器中设置有最大递归次数来防止递归形成的无限循环。 无限循环不是我们的目的,所以我们在递归中要设计递归出口以及使执行趋向递归出口。 例如: def print_num(i): print(i, end=' ') if i < 100: # 当条件不满足i<100时则结束递归 print_num(i+1) # i逐渐增大以趋于结束 print_num(0) 递归常用于使用倒推的方式来简化问题 例如求n的阶乘,已知1的阶乘是1,之后n的阶乘是上一个数的阶乘 * 当前数,即 出口条件:n <= 1时,返回1 推导方式:n > 1时,返回 n* 上一个数的阶乘 (即递归) def fn(n): if n > 1: return n * fn(n-1) return 1 print(fn(10))

Android7.1.2 源码编译并烧写Nexus5X

1、环境配置 Ubuntu18.04 openJDK1.8 Python2.7 2、更新Ubuntu镜像源 编辑/etc/apt/source.list,替换为以下内容 deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse # deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse # deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse deb-src http://mirrors.

一条Sql的执行过程

一条sql内部是如何执行的: 学习MySQL实战45专栏 sql中的内部执行图: 可以分为两部分:server和存储引擎 server层包含: 连接器、分析器、优化器、执行器,涵盖了MySQL大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),相关功能:存储过程、触发器、视图都在这一层实现。 存储引擎层: 负责数据的存储和提取,存储引擎是可以多选的,支持 InnoDB MyISAM、 Memory 等,现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5.5 版本开始成为了默认存储引擎 指定存储引擎:engine=memory不同存储引擎的表数据存取方式不同,支持的功能也不同. select * from T where ID=10; 连接器: 查询缓存: 连接建立后,就可以执行select语句,然后会进行查询缓存,MySQL收到查询请求后,会到查询缓存中查看,其中都是保存着以key-value形式的键值对,key为查询语句,value为查询结果,如果有缓存则直接返回value。不在查询缓存中,会执行后续过程,执行完成后会讲查询的结果保存到缓存中;但是查询缓存的弊大于利; 查询缓存的失效非常频繁,只要有对一个表的更新,这个表上所有的查询缓存都会被清空 按需设置: 将参数 query_cache_type 设置成 DEMAND;所有的SQL都不会进行查询缓存 通过关键字SQL_CACHE 也可以显示指定 mysql> select SQL_CACHE * from T where ID=10; 在MySQL8.0后取消了这个查询缓存的功能; 分析器: 然后对于sql语句进行分析,主要词法分析和语法分析 把相关的关键字、表名、字段等分析出来 根据词法分析的结果进行语法规则的判断,不会就会有错误提示You have an error in your SQL syntax,然后看use near后面的信息; 优化器: 通过分析器,MySQL知道了执行目的;主要是决定sql中执行的顺序,

centos7 mysql5.6 主从复制

转 架构与思维:高并发下解决主从延时的一些思路 - Hello-Brand - 博客园 (cnblogs.com) 如何基于生产环境mysql 5.6.25主从部署新的mysql从库操作指南_ITPUB博客 mysql的主从复制延迟问题--看这一篇就够了 - ityml - 博客园 (cnblogs.com)  一、安装环境 操作系统:CentOS-7-x86_64-DVD-1611.iso 数据库版本:mysql-5.6.39-linux-glibc2.12-x86_64.tar.gz 数据库地址: 192.168.2.1(主) 192.168.2.2(从)   MySQL在5.6之前和之后的安装方式是不一样的。 自己整理的mysql安装,主从配置基于这篇安装:http://www.cnblogs.com/cypress/p/8608496.html 首先保证3306端口的可用,或者关闭防火墙,两台机子可以互相ping 二、Master的配置 1.修改MySQL配置文件 ? 1 [root@localhost ~]# vim /etc/my.cnf  文件内容  ? 1 2 3 4 5 6 7 8 9 10 11 [mysqld] #开启二进制日志 log-bin=mysql-bin #标识唯一id(必须),一般使用ip最后位 server-id=2 #不同步的数据库,可设置多个 binlog-ignore-db=information_schema binlog-ignore-db=cluster binlog-ignore-db=mysql #指定需要同步的数据库(和slave是相互匹配的),可以设置多个 binlog-do-db=test  添加日志存储方式和规则(选填)

django三板斧、静态文件配置、request对象方法、pycharm django链接数据库、ORM

django三板斧 # 启动django项目之后 如何添加更多的功能 回想自己编写的web框架 如果要添加功能 就去urls.py和views.py # django自带重启功能 当识别到项目中代码有变化之后 隔段时间会自动重启 但是有时候较慢 # 与浏览器打交道的视图函数都应该有返回值 常见的就是下列三个 HttpResponse 主要用于返回字符串类型的数据 render 主要用于返回html文件 并且支持模板语法(django自己写的) redirect 主要用于重定向 括号内可以写其他网站的全称 也可以自己网站的后缀 登录功能的编写 我们之所以可以在浏览器地址栏中输入不同的路由访问到不同的资源 是因为我们在后端框架中提前开设了相应的访问接口所以用户才能访问 言外之意就是我们没有开设接口 那么肯定访问不到 # 1.开设接口返回登录界面 # 2.登录界面需要使用bootstrap并且还需要自己编写css和js 静态文件 # 3.页面需要获取前端用户数据并且传递给后端 form表单 action参数:控制数据的提交地址 method参数:控制请求的提交方式 # 4.访问登录页面 静态文件全部显示资源不存在 http://127.0.0.1:8000/static/bootstrap-3.3.7-dist/css/bootstrap.min.css 因为我们并没有开设静态资源访问的接口 # 5.开设静态资源的访问接口 理论上应该自己去路由层开设接口资源 但是由于静态文件资源使用频率很高 只要是一个web项目都肯定需要 所以django为了避免开发者繁琐 提供了静态资源的配置文件 只需要填写固定的配置即可开设资源接口 settings.py # 静态文件资源访问接口固定配置 STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static') ] # html页面路径 /static/mycss.css # 6.配置文件中的两点疑惑 STATIC_URL = '/static/' # 作用是什么 STATICFILES_DIRS = [] # 为什么是列表(用来存储多个元素的) 以该地址为例:/static/bootstrap-3.

7.Spark SQL

------------恢复内容开始------------ 1.请分析SparkSQL出现的原因,并简述SparkSQL的起源与发展。  Shark提供了类似于Hive的功能,与Hive不同的是,Shark把SQL语句转换成Spark作业,而不是MAPreduce作业。为了实现Hive的兼容,Shark重用了Hive中的Hive SQL解析、逻辑执行计划翻译、执行计划优化等逻辑。可以近似的认为,Sark仅仅将物理执行计划从Map Reduce作业替换成了Spark作业,也就是通过Hive的HiveSQL解析功能,把Hive SQL翻译成Spark上的RDD操作。Shark的出现,使得SQL-on-Hadoop的性能比Hive有了10~100倍的提高。 2.简述RDD 和DataFrame的联系与区别?  Rdd是分布式的Java对象的集合,但是,对象内部的结构对于RDD来说是不可知的。Data Frame是一种以RDD为基础的分布式数据集,提供详细的结构信息,就相当于关系数据库的一张表。 3.DataFrame的创建  spark.read.text(url)  spark.read.json(url)  spark.read.format(text).load(people.txt)  spark.read.format(json).load(people.json)  描述从不同文件类型生成DataFrame的区别。  用相同的txt或json文件,同时创建RDD,比较RDD与DataFrame的区别。  区别:RDD是直接输出对象,DataFrame是以对象里面的的详细结构进行输出 4.PySpark-DataFrame各种常用操作  4.1基于df的操作:  打印数据 df.show()默认打印前20条数据  打印概要 df.printSchema()  查询总行数 df.count()  df.head(3) #list类型,list中每个元素是Row类  输出全部行 df.collect() #list类型,list中每个元素是Row类  查询概况 df.describe().show()  取列 的三种方式 df[‘name’], df.name, df[1]  选择 df.select() 每个人的年龄+1  筛选 df.filter() 20岁以上的人员信息  筛选年龄为空的人员信息  分组df.groupBy() 统计每个年龄的人数  排序df.sortBy() 按年龄进行排序