springboot常用注释

1:@Qualifier @Qualifier 注释指定注入 Bean 的名称,这样歧义就消除了。所以 @Autowired 和 @Qualifier 结合使用时,自动注入的策略就从 byType 转变成 byName 了。例子如下: 有一个接口: public interface EmployeeService { public String getEmployeeById(Long id); } 有两个实现类: @Service("service") public class EmployeeServiceImpl implements EmployeeService{ @Override public String getEmployeeById(Long id) { return "0"; } } @Service("service1") public class EmployeeServiceImpl1 implements EmployeeService{ @Override public String getEmployeeById(Long id) { return "1"; } } controller层调用service层: @RestController public class EmployeeInfoControl { @Autowired @Qualifier("service") //括号里面的值是实现类@service时给类取得名字,加上此注解不会报错 private EmployeeService employeeService; @RequestMapping("/emplayee.do") public void showEmplayeeInfo(){ String employeeById = employeeService.

本地模式测试编写的MapReduce作业程序

MapReduce作业任务过程分为两个处理阶段:map阶段和reduce阶段,每个阶段都以键-值对的形式作为输入和输出。下面分别列出map函数和reduce函数。(reduce的输入必须匹配map的输出。)本例,map阶段采集的是气象数据,依据年份作为key,进行排序,温度值作为value。然后reduce对输入的map数据,从中挑选年份中的最高气温值。(本例使用的是hadoop-2.8.5) Mapper类实现: package com.hadoop.ncdc.test; import java.io.IOException; import org.apache.hadoop.io.*; import org.apache.hadoop.mapreduce.Mapper; public class MaxTemperatureMapper extends Mapper<LongWritable, Text, Text, IntWritable> { private static final int MISSING = 9999; public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { //hadoop2的新API使用了Context,其统一了旧API中的JobConf、OutputCollector和Reporter。 String line = value.toString(); String year = line.substring(15, 19); int airTemperature; if (line.charAt(87) == '+') { airTemperature = Integer.parseInt(line.substring(88, 92)); } else { airTemperature = Integer.parseInt(line.substring(87, 92)); } String quality = line.

PX4中的mavlink

简介 px4与地面站的通信协议是mavlink,对于其消息格式的介绍看这里和这里。 需要注意几点: 不光是px4与qgroundcontrol通信通过mavlink,有一些sensor也支持mavlink。mavlink在github中是一个单独的仓库,通过git submodule的方式集成到了px4中。mavlink协议本身并不复杂,用户也不同关心底层的实现(发送、接收、校验、打包、解包)等,只需要提供消息格式(在mavlink中选择现成的or自定义)、通信周期就可以了。 我主要关心几个问题: mavlink是如何编译的?mavlink有哪些参数?mavlink是如何启动的?px4中都有哪些现有的mavlink消息?px4中都有哪些现有的mavlink消息?如何定义新的mavlink消息?mavlink是怎么配置硬件设备的?mavlink是怎么把uorb的消息打包的?mavlink是怎么定时发送消息的?mavlink是怎么接收消息的?mavlink是怎么解析接收消息的? mavlink是如何编译的? 在linux下,看posix_sitl_default.cmake中的modules/mavlink mavlink有哪些参数? 在ROMFS/px4fmu_common/init.d/rcS中: set MAVLINK_F default set MAVLINK_COMPANION_DEVICE /dev/ttyS2 set MAV_TYPE none mavlink是如何启动的? 在nuttx下 见ROMFS/px4fmu_common/init.d/rcS # Start mavlink streams. # sh /etc/init.d/rc.mavlink ... # # Boot is complete, inform MAVLink app(s) that the system is now fully up and running. # mavlink boot_complete rc.mavlink中的内容: if ! ver hwcmp AEROFC_V1 then # Start MAVLink mavlink start -r 800000 -d /dev/ttyACM0 -m config -x fi .

TCP/UDP端口列表

简单说明: 维基百科:https://zh.wikipedia.org/wiki/TCP/UDP%E7%AB%AF%E5%8F%A3%E5%88%97%E8%A1%A8 详细说明: IANA:https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml 端口状态颜×××例[编辑] 以下图例表明了端口的状态: 使用状态叙述颜色官方应用与端口组合记录在IANA的端口分配列表中[1]白非官方应用与端口组合不在IANA的端口分配列表中蓝多重使用已知多个应用程序使用这个端口黄 0到1023号端口[编辑] 以下列表仅列出常用端口,详细的列表请参阅IANA网站。 端口描述状态0/TCP,UDP保留端口;不使用(若发送过程不准备接受回复消息,则可以作为源端口)官方1/TCP,UDPTCPMUX(传输控制协议端口服务多路开关选择器)官方5/TCP,UDPRJE(远程作业登录)官方7/TCP,UDPEcho(回显)协议官方9/UDPDISCARD(丢弃)协议官方9/TCP,UDP网络唤醒非官方11/TCP,UDPSYSTAT协议官方13/TCP,UDPDAYTIME协议官方15/TCP,UDPNETSTAT协议官方17/TCP,UDPQOTD(Quote of the Day,每日引用)协议官方18/TCP,UDP消息发送协议官方19/TCP,UDPCHARGEN(字符发生器)协议官方20/TCP,UDP文件传输协议 - 默认数据端口官方21/TCP,UDP文件传输协议 - 控制端口官方22/TCP,UDPSSH(Secure Shell) - 远程登录协议,用于安全登录文件传输(SCP,SFTP)及端口重新定向官方23/TCP,UDPTelnet终端仿真协议 - 未加密文本通信官方25/TCP,UDPSMTP(简单邮件传输协议) - 用于邮件服务器间的电子邮件传递官方26/TCP,UDPRSFTP - 一个简单的类似FTP的协议非官方35/TCP,UDP任意的私有打印机服务端口非官方37/TCP,UDPTIME时间协议官方39/TCP,UDPResource Location Protocol(资源定位协议)官方41/TCP,UDP图形官方42/TCP,UDPHost Name Server官方42/TCP,UDPWINS(WINS主机名服务)非官方43/TCPWHOIS协议官方49/TCP,UDPTACACS登录主机协议官方53/TCP,UDPDNS(域名服务系统)官方56/TCP,UDP远程访问协议官方57/TCPMTP,邮件传输协议官方67/UDPBOOTP(BootStrap协议)服务;同时用于动态主机设置协议官方68/UDPBOOTP客户端;同时用于动态主机设定协议官方69/UDP小型文件传输协议(小型文件传输协议)官方70/TCPGopher官方79/TCP手指协议官方80/TCP超文本传输协议(超文本传输协议)- 用于传输网页官方81/TCPXB Browser - Tor非官方82/UDPXB Browser - 控制端口非官方88/TCPKerberos - 认证代理官方101/TCP主机名官方102/TCPISO-TSAP协议官方107/TCP远程Telnet协议官方109/TCPPOP (Post Office Protocol),“邮局协议”,第2版官方110/TCP邮局协议,“邮局协议”,第3版 - 用于接收电子邮件官方111/TCP,UDPSun远程过程调用协议官方113/TCPIdent - 旧的服务器身份识别系统,仍然被IRC服务器用来认证它的用户官方115/TCPSFTP,简单文件传输协议官方117/TCPUNIX间复制协议(Unix to Unix Copy Protocol,UUCP)的路径确定服务官方118/TCP,UDPSQL服务官方119/TCP网络新闻传输协议 - 用来收取新闻组的消息官方123/UDPNTP(Network Time Protocol) - 用于时间同步官方135/TCP,UDP分布式运算环境(Distributed Computing Environment,DCE)终端解决方案及定位服务官方135/TCP,UDP微软终端映射器(End Point Mapper,EPMAP)官方137/TCP,UDPNetBIOS NetBIOS 名称服务官方138/TCP,UDPNetBIOS NetBIOS 数据报文服务官方139/TCP,UDPNetBIOS NetBIOS 会话服务官方143/TCP,UDP因特网信息访问协议(Internet信息访问协议 4) - 用于检索 电子邮件s官方152/TCP,UDPBFTP, 后台文件传输程序官方153/TCP,UDP简单网关监控协议(Simple Gateway Monitoring Protocol,SGMP)官方156/TCP,UDPSQL服务官方158/TCP,UDPDMSP, 分布式邮件服务协议非官方161/TCP,UDP简单网络管理协议 (简单网络管理协议)官方162/TCP,UDPSNMP协议的TRAP操作官方170/TCP打印服务官方179/TCP边界网关协议 (边界网关协议)官方194/TCPIRC(互联网中继聊天)官方201/TCP,UDPAppleTalk 路由维护官方209/TCP,UDPQuick Mail 传输协议官方213/TCP,UDPIPX,互联网分组交换协议官方218/TCP,UDPMPP,信息发布协议官方220/TCP,UDP因特网信息访问协议,交互邮件访问协议第3版官方259/TCP,UDPESRO, Efficient Short Remote Operations官方264/TCP,UDPBGMP,边界网关多播协议官方308/TCPNovastor 在线备份官方311/TCPApple 服务器管理员工具、工作组管理官方318/TCP,UDPTSP,时间戳协议官方323/TCP,UDPIMMP, Internet消息映射协议官方383/TCP,UDPHP OpenView HTTPs 代理程序官方366/TCP,UDPSMTP, 简单邮件传送协议.

java报错-找不到或无法加载主类(Error: Could not find or load main class)

此文首发于我的个人博客:java报错-找不到或无法加载主类(Error Could not find or load main class) — zhang0peter的个人博客 比如说test.java package test; public class test{ public static void main(String[] args) { System.out.println("Hello Word !"); } } 运行java文件需要先编译: javac test.java 然后运行: java test 有时在运行时,程序会报错:**找不到或无法加载主类(Error: Could not find or load main class)**这个问题有以下一些原因: CLASSPATH配置问题 CLASSPATH也就是Java运行时的环境变量,里面需要有个点,也就是".",表示当前路径。 Windows下在cmd中使用命令查看环境变量的设置 echo %PATH% Linux下使用如下命令查看环境变量的设置 echo $PATH package问题 大部分Java代码的开头都带有package的声明,这就导致编译完成后类的名字是自带package声明的。 解决方法1:删除package声明 只要删除了package声明,就没有这个问题了,麻烦的是如果文件很多,那么要删除很多文件。 解决方法2:指定包名 运行的时候指定包名即可运行,需要注意的是指定的包名是文件夹目录 比如说: javac test.java -d . java test.test 这里的编译参数"-d ."意思是根据包名新建一个目录用于存放编译后的结果,编译完成后本目录下回多出一个文件夹test(文件夹名由包名决定),运行时指定包名即可运行。

window10外接显示器后无声音问题

博主上班有幸能看会学习视频,可是怎么调试都没有声音,难受之下查阅了相关资料,找到如下的解决方案 问题内容: windows10外接显示器没有声音右击电脑右下角的小喇叭 -> Sounds -> Playback -> Speaker/HP右击 -> set default 即将扬声器设为默认播放设备

Linux 文件系统层级标准 Filesystem Hierarchy Standard (FHS)3.0 基本全章节中文翻译

本文章所有内容不允许以任何形式进行转载、复制、存档或分发等,为了避免翻译过程中对标准内容理解有误、或语言组织不严谨等造成的不能100%表达或阐述原标准的思想和内容,从而误导读者或造成错误等,强烈要求读者以原英文版为准,此文章只做为个人学习笔记。 欢迎读者以留言等任何方式予以纠正错误。 Linux 基金会官网原英文版链接: http://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.html 制作根文件系统时,我不知道需要新建哪些目录,网上的文章各有各的说法,所以就了解了下FHS FHS 目前有两个版本 2.3 和 3.0, FHS 2.3 于2004年1月29日发布。 FHS 3.0 于2015年6月3日发布。 下文将以3.0为基础进行翻译 主要用了 google 和 youdao 翻译 Filesystem Hierarchy Standard LSB Workgroup, The Linux Foundation Version 3.0 Copyright © 2015 The Linux Foundation Copyright © 1994-2004 Daniel Quinlan Copyright © 2001-2004 Paul 'Rusty' Russell Copyright © 2003-2004 Christopher Yeoh 目录 第3章 根文件系统 3.2 要求 3.3 具体选择 3.4 /bin:基本用户命令二进制文件(供所有用户使用) 3.4.1 目的 3.4.2 要求 3.4.3 具体选择

使用openoffice和kkFileView实现文档在线预览

2019独角兽企业重金招聘Python工程师标准>>> 下载地址:http://www.openoffice.org/zh-cn/download/ 安装 wget https://jaist.dl.sourceforge.net/project/openofficeorg.mirror/4.1.6/binaries/zh-CN/Apache_OpenOffice_4.1.6_Linux_x86-64_install-rpm_zh-CN.tar.gz tar -zxvf Apache_OpenOffice_4.1.6_Linux_x86-64_install-rpm_zh-CN.tar.gz cd zh-CN cd RPMS yum -y localinstall *.rpm cd desktop-integration yum -y localinstall openoffice4.1.6-redhat-menus-4.1.6-9790.noarch.rpm 启动 nohup /opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard & 检查 ps -ef|grep openoffice netstat -lnp |grep 8100 初始化kkFileView项目 git clone https://github.com/kekingcn/file-online-preview.git vi jodconverter-web/src/main/resources/application-dev.properties spring.redisson.address = 127.0.0.1:6379 file.dir = /data/preview/ office.home = /opt/openoffice4 安装maven wget http://ftp.cuhk.edu.hk/pub/packages/apache.org/maven/maven-3/3.6.0/binaries/apache-maven-3.6.0-bin.zip unzip apache-maven-3.6.0-bin.zip mv apache-maven-3.6.0 apache-maven vi /etc/profile export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk.x86_64 export MAVEN_HOME=/usr/local/apache-maven export PATH=$PATH:$MAVEN_HOME/bin 获取(安装)项目依赖包 ps:注意此时不要把openoffice的服务开启

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform解决方法

测试Hadoop本地模式时出现了这么一个警告! 18/12/09 22:07:09 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable no native hadoop libraries,这个一般出现在windows和macos系统中。这是一个警告,并不是错误。可以在$HADOOP_CONF_DIR/log4j.properties (或者像是 etc/hadoop/log4j.properties)中,添加这么一行代码: log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR 这样的话,仅有errors(而不是warn)会在日志上面显示出来。 再有一种方法是: 可以到$HADOOP_HOME/lib/native下,查看文件libhadoop.so.1.0.0,里面会显示Hadoop的位数,官网下载好的显示是64位的,如下所示: mymacdeMac-mini:native mymac$ file libhadoop.so.1.0.0 libhadoop.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=51a4842b7499ff1fac8767851ac84cbddd4193eb, with debug_info, not stripped 文件和操作系统都是64位的那为什么还会出现这样的警告呢。肯定是少了什么配置,没让库文件加载进去。 1.首先在.bash_profile中配置路径: vim .bash_profile export HADOOP_HOME=/usr/local/hadoop-x.y.z export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR" 2.生效即可: source .bash_profile

vue-cli 安装,卸载,安装指定版本,和创建项目问题相关整理

vue-cli2.x.x 版本 安装指定版本 所有版本安装,前提是已经全局安装过node 和 全局安装过webpack npm install -g vue-cli@2.x.x vue-cli2.x.x 版本卸载 npm uninstall -g vue-cli vue-cli3.x.x 版本安装 3.0 级以上版本 Vue CLI 的包名称由 vue-cli 改成了 @vue/cli npm install -g @vue/cli vue-cli3.x.x 版本卸载 npm uninstall -g @vue/cli vue-cli2.x.x 版本创建项目报错 报错内容如上图! 解决办法 用一下命令清除缓存,重新安装即可。 npm cache clean --force 同时在网上查阅相关资料发现,有时安装vue-cli 的时候也会出现这种类似的错误造成无法安装成功,用上边的命令清除缓存以后,就可以安装成功 附上一篇详细的vue-cli2 版本创建项目的教程: https://www.jianshu.com/p/1626b8643676/

Game Maker Studio 2表示进入/离开碰撞体

Game Maker Studio 2表示进入/离开碰撞体 (作者Jether,主页https://store.steampowered.com/developer/Jether) 相比于Unity的进入/停留/离开碰撞体,GMS2只有停留这一项,可以用其他方法实现。 物体的变量定义: OtherId 0 Integer IsStay Fasle Boolean LeaveLock 0 Integer 物体与玩家碰撞的代码: if(OtherId==0) { OtherId=other.id; show_debug_message("已经进入"); } if(!IsStay) { IsStay=true; LeaveLock=0; } 物体的Begin Step: if(IsStay) { IsStay=false; LeaveLock=1; } 物体的End Step: if(LeaveLock==1) { show_debug_message("已经离开"); OtherId=0; LeaveLock=0; }

概率论基础(一):条件均值与全期望公式

【条件均值与全期望公式】 假定两个连续的随机变量 X , Y X,Y X,Y,它们的联合概率密度为 p X , Y ( x , y ) = p X ( x ) p Y ∣ X ( y ∣ x ) = p Y ( y ) p X ∣ Y ( x ∣ y ) p_{\rm X,Y}(x,y)=p_{\rm X}(x)p_{\rm Y|X}(y|x)=p_{\rm Y}(y)p_{\rm X|Y}(x|y) pX,Y​(x,y)=pX​(x)pY∣X​(y∣x)=pY​(y)pX∣Y​(x∣y)则有条件均值 E [ X ∣ Y = y ] = E [ X ∣ y ] {\mathbb E}[X|Y=y]={\mathbb E}[X|y] E[X∣Y=y]=E[X∣y]为

自然数无序拆分(三种方法)

自然数无序拆分 时间限制: 1 Sec 内存限制: 128 MB 题目描述 美羊羊给喜羊羊和沸羊羊出了一道难题,说谁能先做出来,我就奖励给他我自己做的一样礼物。沸羊羊这下可乐了,于是马上答应立刻做出来,喜羊羊见状,当然也不甘示弱,向沸羊羊发起了挑战。 可是这道题目有一些难度,喜羊羊做了一会儿,见沸羊羊也十分头疼,于是就来请教你。 题目是这样的: 把自然数N(N<=100)分解为若干个自然数之和,求出有几种情况。 如N=5时,有7种情况 5=1+1+1+1+1 5=1+1+1+2 5=1+1+3 5=1+2+2 5=1+4 5=2+3 5=5 怎么样?你要加油帮助喜羊羊哦! 输入 一个自然数N(N<=100) 输出 无序拆分的种数。 样例输入 复制样例数据 5 样例输出 7 1.递归,超级慢 /**/ #include <cstdio> #include <cstring> #include <cmath> #include <cctype> #include <iostream> #include <algorithm> #include <map> #include <set> #include <vector> #include <string> #include <stack> #include <queue> typedef long long LL; using namespace std; int n; int dp(int x, int y){ //x表示被分的数,y表示分的值 if(x == 1 || y == 1){//如果x=1,怎么分都是1种,y=1时2只有{1,1,1,.

SpringCloud微服务服务间调用之OpenFeign介绍(一)

开发微服务,免不了需要服务间调用。Spring Cloud框架提供了RestTemplate和FeignClient两个方式完成服务间调用,本文简要介绍如何使用OpenFeign完成服务间调用 背景介绍 本示例使用consul作为服务注册中心,基于SpringCloud框架开发两个微服务,一个user-service(服务提供方),一个feignusercommodity-service(服务调用方),具体版本信息如下 软件/框架版本consulv1.2.0Spring Boot2.0.1.RELEASESpring CloudFinchley.RELEASE openFeign使用默认版本的,也就是spring-cloud-starter-openfeign 2.0.0版本。 完整代码这这里, user-servcie, feignusercommodity-service, 欢迎加星,fork。 官方文档在这里http://cloud.spring.io/spring-cloud-openfeign/single/spring-cloud-openfeign.html 主要代码 核心代码主要包括两点, 1, 对应接口添加@FeignClient,并完成对应服务提供者的requestMapping映射。 2,在启动类加上@EnableFeignClients(basePackages = {“com.yq.client”}), 我的serviceClieng位于com.yq.client包。 提供方的主要接口如下: ServiceClient类的主要实现如下. 注意:User 类在两个服务中是一样,实际项目中我们可以把它放到公共依赖包中。 @FeignClient(value = "user-service", fallbackFactory = UserServiceFallbackFactory.class) public interface UserServiceClient { @RequestMapping(value="/v1/users/{userId}", method= RequestMethod.GET, produces = "application/json;charset=UTF-8") public User getUser(@PathVariable(value = "userId") String userId); @RequestMapping(value="/v1/users/queryById", method= RequestMethod.GET, produces = "application/json;charset=UTF-8") public User getUserByQueryParam(@RequestParam("userId") String userId); @RequestMapping(value="/v1/users", method= RequestMethod.POST, produces = "application/json;charset=UTF-8") public String createUser(); } 完整代码看 user-servcie, feignusercommodity-service,里面的pom文件,serviceClient都是完整的可以运行的。 欢迎加星,fork。

JS对JSON按照属性去重

在项目中使用到json 按照内部属性进行去重操作 于是自己简单封装的方法来进行去重 希望可以帮到你们!! js代码 //JSON去重 //arr是要进行去重的json串 //attribute是针对json串中哪个属性进行去重 function unique(arr,attribute){ var new_arr=[]; var json_arr=[]; for(var i=0; i<arr.length; i++){ console.log(new_arr.indexOf(arr[i][attribute])); if(new_arr.indexOf(arr[i][attribute]) ==-1){ // -1代表没有找到 new_arr.push(arr[i][attribute]); //如果没有找到就把这个name放到arr里面,以便下次循环时用 json_arr.push(arr[i]); } else{ } } return json_arr; } 样例分析: var json=[ {name:“北京”,position:“天安门”}, {name:“北”,position:“安门”}, {name:“北京”,position:“天安门”}, {name:“北”,position:“天门”}, {name:“北京”,position:“天安门”}, {name:“京”,position:“门”}]; 按照name去重: var new_json=unique(json,“name”); console.log(new_json); 按照position去重:

【c++】字符串相加

给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。 注意:num1 和num2 的长度都小于 5100;num1 和num2 都只包含数字 0-9;num1 和num2 都不包含任何前导零;你不能使用任何內建 BigInteger 库, 也不能直接将输入的字符串转换为整数形式。 分析: 具体代码如下: class Solution { public: string addStrings(string num1, string num2) { int end1=num1.size() -1; int end2=num2.size()-1; int value1=0; int value2=0; int next=0; string addret; while(end1>=0||end2>=0) { if(end1>=0) { value1=num1[end1--]-'0'; } else { value1=0; } if(end2>=0) { value2=num2[end2--]-'0'; } else { value2=0; } int valueret=value1+value2+next; if(valueret>9) { next=1; valueret-=10; } else { next=0; } addret.

Mac终端dscl命令对组/用户的增删改查(转载)

注意:注意空格,比如文中出现的".",它的两侧都有一个空格! 查看所有的组 (仅显示组名) 方法①: 输入dscl -> cd /Local/Default/Groups -> ls 方法②: dscl . -list /Groups 查看所有的组 (显示所有组的详细信息) dscl . -readall /Groups 查看所有组对应的ID (仅显示组名与ID) dscl . -list /Groups PrimaryGroupID 查看指定的组 (显示详细信息) dscl . -read /Groups/组名 单独查看指定组中的所有用户 dscl . -read /Groups/组名 GroupMembership 查看所有的用户 (仅显示用户名) 方法①:输入dscl -> cd /Local/Default/Users -> ls 方法②:dscl . -list /Users 查看所有用户对应的ID dscl . -list /Users UniqueID 查看指定用户的详细信息 dscl . -read /Users/用户名 单独查看指定用户的ID dscl . -read /Users/用户名 PrimaryGroupID

通过IP地址和子网掩码,如何计算出网络地址、广播地址和主机数?

Q:通过IP地址和子网掩码,如何计算出网络地址、广播地址和主机数? A:知道知道IP地址和子网掩码后,通过 IP地址和子网掩码的【与】运算,可以计算出以下相关地址: 1、 网络地址 2、 广播地址 3、 地址范围 4、 本网有几台主机 例1:下面例子IP地址为192·168·100·5 子网掩码是255·255·255·0。计算出网络地址、广播地址、地址范围、主机数。 (一)分步骤计算 1) 将IP地址和子网掩码换算为二进制,子网掩码连续全1的是网络地址,后面的是主机地址。 虚线前为网络地址,虚线后为主机地址 2)IP地址和子网掩码进行与运算,结果是网络地址 3) 将上面的网络地址中的网络地址部分不变,主机地址变为全1,结果就是广播地址。 4) 地址范围就是含在本网段内的所有主机 网络地址+1即为第一个主机地址,广播地址-1即为最后一个主机地址,由此可以看出 地址范围是: 网络地址+1 至 广播地址-1 本例的网络范围是:192·168·100·1 至 192·168·100·254 也就是说下面的地址都是一个网段的。 192·168·100·1、192·168·100·2 …… 192·168·100·20 …… 192·168·100·111 …… 192·168·100·254 5) 主机的数量 主机的数量 = 2的二进制主机位数-2,比如一个网段的二进制主机位数为n,则主机数量=2^n-2 减2是因为主机不包括网络地址和广播地址。本例二进制的主机位数是8位。 主机的数量=2^8-2=254 (二)总体计算 我们把上边的例子合起来计算一下过程如下: 例2:已知一台主机的IP地址为128·36·199·3 子网掩码是255·255·240·0。计算出该主机所在IP段的网络地址、广播地址、地址范围、主机数。 1) 将IP地址和子网掩码换算为二进制,子网掩码连续全1的是网络地址,后面的是主机地址, 虚线前为网络地址,虚线后为主机地址 2)IP地址和子网掩码进行与运算,结果是网络地址 3)将运算结果中的网络地址不变,主机地址变为1,结果就是广播地址。 4) 地址范围就是含在本网段内的所有主机 网络地址+1即为第一个主机地址,广播地址-1即为最后一个主机地址,由此可以看出 地址范围是: 网络地址+1 至 广播地址-1 本例的网络范围是:128·36·192·1 至 128·36·207·254 5) 主机的数量 主机的数量=2二进制位数的主机-2 主机的数量=2^12-2=4094 减2是因为主机不包括网络地址和广播地址。 从上面两个例子可以看出不管子网掩码是标准的还是特殊的,计算网络地址、广播地址、地址数时只要把地址换算成二进制,然后从子网掩码处分清楚连续1以前的是网络地址,后是主机地址进行相应计算即可。 (三)实战应用 这是2017年腾讯模拟机试的一道题目:IP地址为10.

计算系数(多项式展开+快速幂)

计算系数 时间限制: 1 Sec 内存限制: 128 MB 题目描述 给定一个多项式(by+ax)k,请求出多项式展开后xn * ym 项的系数。 输入 共一行,包含5 个整数,分别为 a ,b ,k ,n ,m,每两个整数之间用一个空格隔开。0≤k≤1000, 0≤n,m≤k 且 n+m=k, 0≤a,b≤100,000 输出 输出共1 行,包含一个整数,表示所求的系数,这个系数可能很大,输出对10007 取模后的结果。 样例输入 复制样例数据 1 1 3 1 2 样例输出 3 饿,最近快速幂写的贼多。 =,所以要求的即i=m,所以系数为,快速幂求一下就好了 /**/ #include <cstdio> #include <cstring> #include <cmath> #include <cctype> #include <iostream> #include <algorithm> #include <map> #include <set> #include <vector> #include <string> #include <stack> #include <queue> typedef long long LL; using namespace std; const int mod = 10007; int a, b, k, n, m; int pow_c(int x, int num){ int res = 1 % mod; x %= mod; while(num){ if(num & 1) res = (res * x) % mod; x = (x * x) % mod; num >>= 1; } return res; } int main() { //freopen("

IDEA项目部署到github(jsp项目案例)

安装github 我这里介绍windows10,win7应该大同小异。进入:https://github.com/ ,自行注册一个账号,不累赘。然后进入:https://git-scm.com/downloads ,下载windows版本的Git.exe 安装Git.exe,直接双击运行即可。基本一路next使用默认值即可。成功后,按下win+R,输入cmd,回车进入cmd。然后输入 git --version ,若如下图,则表示安装成功 最后,运行刚才安装的git,输入以下命令(引号内的内容自行替换一下!): $ git config --global user.name "你的名字" $ git config --global user.email "你的邮箱" 配置IDEA 1.打开IDEA项目,File-->Setting->Version Control-->Git-->Path to Git executable选择你的git安装后的git.exe文件。如图。然后可以点击Test,测试一下是否可行。 2. File-->Setting->Version Control-->GibHub,填写: Host:github.com Token:点击Create API Token,弹出小窗口,输入在github中注册的用户名和密码,自动生成token 点击Test,测试是否连接成功 3. 创建本地仓库,VCS-->Import into Version Control-->Create Git Repository...。然后会弹出文件选择窗口,选中你的项目文件夹,点击OK 4. 上传项目到本地仓库,右键点击项目选择Git-->add,此时项目文件变成绿色,此时文件只是处于暂存区,并没有真正进入到版本库中 5.右键单击项目,然后Git--> Commit Directory(同上面的图),在弹窗中Commit Message内输出内容(这个内容将显示在github项目内,更新过的文件夹的说明部分),点击commit,此时项目文件从暂存区真正进入版本库中,项目文件恢复最初的颜色。注意,此时还没有上传到github.com上,仅仅是在本地建立好了版本库。 6.最后一步,上传到github.com。IDEA菜单栏-->VCS-->Import into Version Control-->Share Project on GitHub ,在弹框中输入仓库名和描述,点击Share,上传。中间会弹窗要求输入GitHub的用户名和密码(已输入过用户名和密码并记住的不会再次弹框输入),上传成功后IDEA右下角会给出成功的提示,并给出github的链接。 7. 版本的更新。步骤6的作用是在github个人空间里新建了一个仓库,并把步骤5建立好的版本库上传到github.com。版本的持续更新实现方法:与步骤5基本一模一样,只有一点不一样,最后要点的是 commit and Push ! 如果与步骤5一模一样,最后点了Commit,也没关系,这样只是更新了本地仓库,没有上传到github.com。解决方案见下面的第2个图,即补执行一下Push。 总结 第一次将项目分享到github,操作还很笨拙,继续探索! ^_^