我是狗菌日志,现在更换域名啦
名字:WAY's Blog
网址:https://www.wayok.cn
头像:https://www.wayok.cn/avatar
描述:我亦无他,惟手熟尔。
可根据本页面右侧的快速导航定位到你想查看的活动
暂时无效
我的任务已经做好了,小伙伴可以联系我把你的连接附上来
我的任务已经做好了,小伙伴可以联系我把你的连接附上来
我的任务已经做好了,小伙伴可以联系我把你的连接附上来
- 时间:12.5截止- 规则:邀请五名好友登陆该页面- 奖品:天猫精灵音箱
该活动奖品已经领完
- 时间:12.4截止- 规则:邀请三名好友登陆该页面- 奖品:阿里马克杯
该活动奖品已经领完——真离谱
(电脑快速导航↑)
]]>
(手机快速导航↑)
今天偶然登录一下微信工作号
发现在我停止运营这个微信公众号的时间里
居然涨粉了100多个
这属实算个小惊喜
用起来不错
但是我不是本文并不是推荐键盘的哈哈哈
而是我为了这个键盘部署的一个网站
1、一个在线检查键盘和鼠标的网站
🔻🔻🔻
https://kb.wayok.cn
🔺🔺🔺
这个项目是从github上找到的
https://github.com/shawon9324/keyboard-mouse-tester-webApp
没啥太多好介绍的,就是可以检查你键盘是不是都正常
(之前选购键盘听闻有的键盘在2.4G下shift+W会触发其他按钮,所以整个在线网站用来检测键盘,也分享给大家)
首先处理好食材(刀工略菜,切的土豆略拉胯,酱干好像仙人掌)
把油烧热爆炒(糊锅了,先抄马铃薯和辣椒,待炒的差不多下酱干,再加入适量的盐)
因为土豆切的太厚怕它不熟,于是最后又加了一点水焖了一会
再煎个鸡蛋,简简单单一顿饭搞定
味道不错,土豆是土豆味,鸡蛋是鸡蛋味(✔)酱干搭配的很不错,再说一句土豆yyds
吃了八分饱,顺手把碗洗了(太饱就懒得动了)。
在way001和way002中我在我的手机上分别部署了一个Debian服务器和开源博客Halo,
我只能通过局域网访问该博客,如何才能在公网中访问呢?
因为IPV4地址不够用,所以不是每一个人都可以拥有一个公网ip,大家只能用NAT(Network Address Translation,网络地址转换)来上网,解决了地址不够用的情况,但是大家就没办法点对点访问了,只可以通过一个拥有公网ip的服务器中转交流,所以处在NAT下的我的手机,没办法直接被大家访问到,只能通过一下两个办法来解决:
0、 了解frp开源项目:
https://github.com/fatedier/frp/
2、 下载对应版本的frp到公网服务器(服务端)和局域网服务器中(客户端):
https://github.com/fatedier/frp/releases
我的手机是arm 64位架构的,所以下载:
https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_arm64.tar.gz
我的服务器是amd 64:
https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gz
解压文件:
tar -xvf 压缩包
3、 分别修改服务端和客户端配置文件:
服务端修改frps.ini文件、客户端修改frpc.ini文件
frps.ini(将监听端口设置成8080):
[common]bind_port = 7000vhost_http_port = 8080
frpc.ini(因为halo默认端口是8090):
x.x.x.x填服务器ip
[common]server_addr = x.x.x.xserver_port = 7000[web]type = httplocal_port = 8090custom_domains = www.yourdomain.com
4、 分别启动服务器和客户端:
服务器(先启动):
./frps -c ./frps.ini
客户端:
./frpc -c ./frpc.ini
]]>
0、 在手机里准备好Halo的运行环境:
apt install openjdk-11-jdk
1、 下载好Halo最新版本的jar包(为了方便后续操作,这里将该jar包修改为halo.jar):
wget https://halo.cary.tech/halo/release/halo-1.4.8.jar -O halo.jar
2、 试运行jar包:
java -jar halo.jar
3、 等待jar包成功运行,在与该手机处在同一局域网中的任意设备的浏览器中输入该手机的ip地址+端口8090:
即可根据引导对博客进行初始化。
此时便拥有了一个和我的同款博客,我的博客主题是xue,大家可自行搭配主题,自行研究这款手机上的服务器与这款优秀的博客!
way:想练习使用Linux服务器,但是花钱买不实用,电脑上安装虚拟机影响电脑性能,直接把电脑当服务器又没有雄厚的财力,那么可以用一个废旧手机来当Linux服务器。
老旧手机当Linux服务器优势:功耗低、便携、成本低,重点是在小小白面前很有科技感的样子。
那么本篇将讲述如何将一个老旧手机当成Linux服务器使用,我将在老旧手机上面安装Debian系统并优化使用体验。
(1) 安装termux(请自行下载,我发出来的包能安装但是总是闪退)
(2) 在termux安装使用openssh(这一步是为了用电脑通过ssh控制手机,毕竟用手机键盘不方便敲指令),实际控制云服务也是通过ssh控制
pkg install openssh
whoami
passwd
sshd
此时我们就可以用电脑通过ssh控制手机termux了:
ssh 用户名@IP地址 -p 端口
如我的电脑cmd控制我的手机termux:
此处端口一律使用8022端口(因为无root权限,所以此处ssh默认使用8022端口)。
成功通过ssh控制后就不用去敲手机键盘了。
vim .bashrc
如提示无vim指令可安装vim指令:
pkg install vim
sshd
:wq
(3) 安装Debian系统
https://github.com/YadominJinta/atilo
echo "deb [trusted=yes arch=all] https://yadominjinta.github.io/files/ termux extras" >> $PREFIX/etc/apt/sources.list.d/atilo.listapt update && apt install atilo-cn
使用方法:
Atilo 2.0Usage: atilo [命令] [参数]Atilo 是一个用来帮助你在termux上安装不同的GNU/Linux发行版的程序命令:images 列出可用镜像remove 移除本地的镜像pull 拉取远的镜像run 运行镜像clean 清除缓存help 帮助
支持的发行版:
atilo pull debian
atilo run deian
(5) 为Debian更换网易源
Debian默认的镜像源速度很慢,这里推荐使用网易的镜像源,因为我们安装的是buster版本,所以换buster的源:
wget http://mirrors.163.com/.help/sources.list.buster
mv /etc/apt/sources.list /etc/apt/sources.list.bak
mv sources.list.buster /etc/apt/sources.list
apt update
还可以用apt upgrade更新一下软件包
优化:将atilo run debian写进.bashrc中,具体参照上面sshd自启动。
JDK的全拼为Java Development Kit,即Java开发套件,面向开发者。
]]>JRE的全拼为Java Runtime Environment,即Java运行环境,面向用户。
1.JDK 和 JRE 有什么区别?
2.== 和 equals 的区别是什么?
3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
4.final 在 java 中有什么作用?
5.java 中的 Math.round(-1.5) 等于多少?
6.String 属于基础的数据类型吗?
7.java 中操作字符串都有哪些类?它们之间有什么区别?
8.String str="i"与 String str=new String(“i”)一样吗?
9.如何将字符串反转?
10.String 类的常用方法都有那些?
11.抽象类必须要有抽象方法吗?
12.普通类和抽象类有哪些区别?
13.抽象类能使用 final 修饰吗?
14.接口和抽象类有什么区别?
15.java 中 IO 流分为几种?
16.BIO、NIO、AIO 有什么区别?
17.Files的常用方法都有哪些?
二、容器
18.java 容器都有哪些?
19.Collection 和 Collections 有什么区别?
20.List、Set、Map 之间的区别是什么?
21.HashMap 和 Hashtable 有什么区别?
22.如何决定使用 HashMap 还是 TreeMap?
23.说一下 HashMap 的实现原理?
24.说一下 HashSet 的实现原理?
25.ArrayList 和 LinkedList 的区别是什么?
26.如何实现数组和 List 之间的转换?
27.ArrayList 和 Vector 的区别是什么?
28.Array 和 ArrayList 有何区别?
29.在 Queue 中 poll()和 remove()有什么区别?
30.哪些集合类是线程安全的?
31.迭代器 Iterator 是什么?
32.Iterator 怎么使用?有什么特点?
33.Iterator 和 ListIterator 有什么区别?
34.怎么确保一个集合不能被修改?
三、多线程
35.并行和并发有什么区别?
36.线程和进程的区别?
37.守护线程是什么?
38.创建线程有哪几种方式?
39.说一下 runnable 和 callable 有什么区别?
40.线程有哪些状态?
41.sleep() 和 wait() 有什么区别?
42.notify()和 notifyAll()有什么区别?
43.线程的 run()和 start()有什么区别?
44.创建线程池有哪几种方式?
45.线程池都有哪些状态?
46.线程池中 submit()和 execute()方法有什么区别?
47.在 java 程序中怎么保证多线程的运行安全?
48.多线程锁的升级原理是什么?
49.什么是死锁?
50.怎么防止死锁?
51.ThreadLocal 是什么?有哪些使用场景?
52.说一下 synchronized 底层实现原理?
53.synchronized 和 volatile 的区别是什么?
54.synchronized 和 Lock 有什么区别?
55.synchronized 和 ReentrantLock 区别是什么?
56.说一下 atomic 的原理?
四、反射
57.什么是反射?
58.什么是 java 序列化?什么情况下需要序列化?
59.动态代理是什么?有哪些应用?
60.怎么实现动态代理?
五、对象拷贝
61.为什么要使用克隆?
62.如何实现对象克隆?
63.深拷贝和浅拷贝区别是什么?
六、Java Web
64.jsp 和 servlet 有什么区别?
65.jsp 有哪些内置对象?作用分别是什么?
66.说一下 jsp 的 4 种作用域?
67.session 和 cookie 有什么区别?
68.说一下 session 的工作原理?
69.如果客户端禁止 cookie 能实现 session 还能用吗?
70.spring mvc 和 struts 的区别是什么?
71.如何避免 sql 注入?
72.什么是 XSS 攻击,如何避免?
73.什么是 CSRF 攻击,如何避免?
七、异常
74.throw 和 throws 的区别?
75.final、finally、finalize 有什么区别?
76.try-catch-finally 中哪个部分可以省略?
77.try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?
78.常见的异常类有哪些?
八、网络
79.http 响应码 301 和 302 代表的是什么?有什么区别?
80.forward 和 redirect 的区别?
81.简述 tcp 和 udp的区别?
82.tcp 为什么要三次握手,两次不行吗?为什么?
83.说一下 tcp 粘包是怎么产生的?
84.OSI 的七层模型都有哪些?
85.get 和 post 请求有哪些区别?
86.如何实现跨域?
87.说一下 JSONP 实现原理?
九、设计模式
88.说一下你熟悉的设计模式?
89.简单工厂和抽象工厂有什么区别?
十、Spring/Spring MVC
90.为什么要使用 spring?
91.解释一下什么是 aop?
92.解释一下什么是 ioc?
93.spring 有哪些主要模块?
94.spring 常用的注入方式有哪些?
95.spring 中的 bean 是线程安全的吗?
96.spring 支持几种 bean 的作用域?
97.spring 自动装配 bean 有哪些方式?
98.spring 事务实现方式有哪些?
99.说一下 spring 的事务隔离?
100.说一下 spring mvc 运行流程?
101.spring mvc 有哪些组件?
102.@RequestMapping 的作用是什么?
103.@Autowired 的作用是什么?
十一、Spring Boot/Spring Cloud
104.什么是 spring boot?
105.为什么要用 spring boot?
106.spring boot 核心配置文件是什么?
107.spring boot 配置文件有哪几种类型?它们有什么区别?
108.spring boot 有哪些方式可以实现热部署?
109.jpa 和 hibernate 有什么区别?
110.什么是 spring cloud?
111.spring cloud 断路器的作用是什么?
112.spring cloud 的核心组件有哪些?
十二、Hibernate
113.为什么要使用 hibernate?
114.什么是 ORM 框架?
115.hibernate 中如何在控制台查看打印的 sql 语句?
116.hibernate 有几种查询方式?
117.hibernate 实体类可以被定义为 final 吗?
118.在 hibernate 中使用 Integer 和 int 做映射有什么区别?
119.hibernate 是如何工作的?
120.get()和 load()的区别?
121.说一下 hibernate 的缓存机制?
122.hibernate 对象有哪些状态?
123.在 hibernate 中 getCurrentSession 和 openSession 的区别是什么?
124.hibernate 实体类必须要有无参构造函数吗?为什么?
十三、Mybatis
125.mybatis 中 #{}和 ${}的区别是什么?
126.mybatis 有几种分页方式?
127.RowBounds 是一次性查询全部结果吗?为什么?
128.mybatis 逻辑分页和物理分页的区别是什么?
129.mybatis 是否支持延迟加载?延迟加载的原理是什么?
130.说一下 mybatis 的一级缓存和二级缓存?
131.mybatis 和 hibernate 的区别有哪些?
132.mybatis 有哪些执行器(Executor)?
133.mybatis 分页插件的实现原理是什么?
134.mybatis 如何编写一个自定义插件?
十四、RabbitMQ
135.rabbitmq 的使用场景有哪些?
136.rabbitmq 有哪些重要的角色?
137.rabbitmq 有哪些重要的组件?
138.rabbitmq 中 vhost 的作用是什么?
139.rabbitmq 的消息是怎么发送的?
140.rabbitmq 怎么保证消息的稳定性?
141.rabbitmq 怎么避免消息丢失?
142.要保证消息持久化成功的条件有哪些?
143.rabbitmq 持久化有什么缺点?
144.rabbitmq 有几种广播类型?
145.rabbitmq 怎么实现延迟消息队列?
146.rabbitmq 集群有什么用?
147.rabbitmq 节点的类型有哪些?
148.rabbitmq 集群搭建需要注意哪些问题?
149.rabbitmq 每个节点是其他节点的完整拷贝吗?为什么?
150.rabbitmq 集群中唯一一个磁盘节点崩溃了会发生什么情况?
151.rabbitmq 对集群节点停止顺序有要求吗?
十五、Kafka
152.kafka 可以脱离 zookeeper 单独使用吗?为什么?
153.kafka 有几种数据保留的策略?
154.kafka 同时设置了 7 天和 10G 清除数据,到第五天的时候消息达到了 10G,这个时候 kafka 将如何处理?
155.什么情况会导致 kafka 运行变慢?
156.使用 kafka 集群需要注意什么?
十六、Zookeeper
157.zookeeper 是什么?
158.zookeeper 都有哪些功能?
159.zookeeper 有几种部署模式?
160.zookeeper 怎么保证主从节点的状态同步?
161.集群中为什么要有主节点?
162.集群中有 3 台服务器,其中一个节点宕机,这个时候 zookeeper 还可以使用吗?
163.说一下 zookeeper 的通知机制?
十七、MySql
164.数据库的三范式是什么?
165.一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 mysql 数据库,又插入了一条数据,此时 id 是几?
166.如何获取当前数据库版本?
167.说一下 ACID 是什么?
168.char 和 varchar 的区别是什么?
169.float 和 double 的区别是什么?
170.mysql 的内连接、左连接、右连接有什么区别?
171.mysql 索引是怎么实现的?
172.怎么验证 mysql 的索引是否满足需求?
173.说一下数据库的事务隔离?
174.说一下 mysql 常用的引擎?
175.说一下 mysql 的行锁和表锁?
176.说一下乐观锁和悲观锁?
177.mysql 问题排查都有哪些手段?
178.如何做 mysql 的性能优化?
十八、Redis
179.redis 是什么?都有哪些使用场景?
180.redis 有哪些功能?
181.redis 和 memecache 有什么区别?
182.redis 为什么是单线程的?
183.什么是缓存穿透?怎么解决?
184.redis 支持的数据类型有哪些?
185.redis 支持的 java 客户端都有哪些?
186.jedis 和 redisson 有哪些区别?
187.怎么保证缓存和数据库数据的一致性?
188.redis 持久化有几种方式?
189.redis 怎么实现分布式锁?
190.redis 分布式锁有什么缺陷?
191.redis 如何做内存优化?
192.redis 淘汰策略有哪些?
193.redis 常见的性能问题有哪些?该如何解决?
十九、JVM
194.说一下 jvm 的主要组成部分?及其作用?
195.说一下 jvm 运行时数据区?
196.说一下堆栈的区别?
197.队列和栈是什么?有什么区别?
198.什么是双亲委派模型?
199.说一下类加载的执行过程?
200.怎么判断对象是否可以被回收?
201.java 中都有哪些引用类型?
202.说一下 jvm 有哪些垃圾回收算法?
203.说一下 jvm 有哪些垃圾回收器?
204.详细介绍一下 CMS 垃圾回收器?
205.新生代垃圾回收器和老生代垃圾回收器都有哪些?有什么区别?
206.简述分代垃圾回收器是怎么工作的?
207.说一下 jvm 调优的工具?
208.常用的 jvm 调优的参数都有哪些?
]]>本文介绍一个简单Java爬虫,获取网页源码,爬取电话号码。
本篇教程用我的博客一个测试网页演示。
——野狗菌【希望你能喜欢】
测试页面:
https://www.wayteam.xyz/archives/phonenumber
源代码:(注释写的很详细了,太艰难,就直接放代码,不做多解释了)
import java.io.*;import java.net.URL;import java.net.URLConnection;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * @author 野狗菌 * 2020-04-06 * 爬虫入门(一):获取网页源代码,爬取手机号码 * 微信公众号:希望你能喜欢 (也可以搜索 foryouway ) * 个人网站:www.wayteam.xyz */public class GetPhoneNumber { public static void main(String[] args) throws Exception { //创建一个要访问的url URL url = new URL("https://www.wayteam.xyz/archives/phonenumber");//这里以我的博客测试页面为例 System.out.println("正在获取"+url+"网站的手机号码中-----请稍等");//无关紧要的代码,只是为了友好的提示 //打开上面获取的链接 URLConnection urlConnection = url.openConnection(); //新手提醒:这个会抛出异常,我为了方便,全部抛出去,不作处理throws Exception //创建一个指定的存储文件 File file = new File("phone.txt"); //这里是相对路径,表示存在这个同级目录下 //创建一个字符输出流(从本程序输出到phone.txt文件) PrintWriter printWriter = new PrintWriter(file);//程序执行到这里就会在对应位置创建对应文件了 //创建一个输入流(这个输入输出是以本程序为参照) InputStream inputStream = urlConnection.getInputStream(); //把上面的字节流转化为字符流 InputStreamReader inputStreamReader = new InputStreamReader(inputStream); //把字符流转化为字符缓冲流 BufferedReader bufferedReader = new BufferedReader(inputStreamReader); //创建一个空的字符串来接收从字符缓冲流里接收的数据 String htmlLine = null; //手机号码的正则表达式,用来匹配数据中的手机号码 String regex = "1[35789]\\d{9}";//1:第一位是1,[35789]:第二位是35789中的一个,\d{9}:剩余9位数任意(因为java中\需要转义,所以这里用\\)。 Pattern pattern = Pattern.compile(regex);//把正则表达式编译成模式。 //用while遍历上面的到的字缓冲流,把值给上面的空字符串(readLine是一行一行读取网页源代码的) while ((htmlLine = bufferedReader.readLine()) != null){ //当字符流缓冲流没有为空时,一直读取它。 //创建一个匹配器来匹配上面的正则表达式模式 Matcher matcher = pattern.matcher(htmlLine); //循环匹配 while (matcher.find()){ //当匹配成功时,往下执行 printWriter.println(matcher.group());//将匹配的数据用group转化为字符串,写进字符输出流中 } /** * 在控制台打印htmlLine,观察它是什么样的数据 * 为了方便大家理解readLine执行过程,给进程设置一个休眠时间,不然数据哗啦一下直接出来 * 这里我录制了一个动图,大家也可以自己试试。 */ /*System.out.println(htmlLine); Thread.sleep(100);//100毫秒*/ } /** * 关闭这两个流 */ bufferedReader.close(); printWriter.close(); System.out.println("获取号码成功,快去"+file+"查看结果吧"+"\n"+"-------by野狗菌\uD83D\uDC36");//无关紧要的代码,只是为了友好的提示 }}
一个演示:
结果展示:
问题:为什么这里获取的手机号码比我网页里面写的要多?
因为这些数据被我的匹配器匹配成号码了。。。。
后面会介绍其他抓取方式,可以避免这个问题。
在公众号内发送【07】,即可获取源码(你也可以直接自己创建项目,把上面内容写进去)。
]]>我将在我的微信公众号,知乎,以及这个博客网站上发布Java爬虫入门(一)
这一篇就是为了提供一个测试页面给那些文章演示用的。
大家也可以利用这个页面来测试自己跟着写的项目是否可以跑起来。
说明:这是一个爬取网页匹配电话号码,然后将电话号码爬取下来的测试页。
以下电话都是我胡乱编写的,非真实电话。
13855489887(✅)
15899864887(✅)
153998458895(❌)
189555814(❌)
01234567890(❌)
18254447852(✅)
15899874523(✅)
13888888888(✅)
正常情况可以爬取到五个号码。
]]>需要软件spacedesk客户端(Android 1.04M)以及驱动(Win10-64 5.07M)。
www.spacedesk.net
环境要求:手机和电脑处在同一局域网中。
支持Android系统,iOS系统
可通过spacedesk官网下载,或者通过我提供的百度云下载,由于这个网站架设在国外,可能会导致下载速度太慢,建议通过百度云下载。
我发现电脑好像不能发现手机端,需要手机端连接到电脑。
我的电脑(Win10系统)同时按住win+P,可调出如下设置(也可以在设置里面查看)
选择扩展。
请在手机端设置里面设置好画面以及鼠标之类的参数,获得更好的体验。
链接:https://pan.baidu.com/s/1p2UHDJcj3NxmHNC3cxYXkw 提取码:frv0
]]>
开发工具:android studio
语言:java
调试环境:androidQ虚拟机
这就是简单设计图,根据这个设计图先写一下布局,布局文件放在res文件中,在res文件中创建layout文件(有的项目会自动创建。
然后再在这个文件中创建布局文件
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent">//宽高填充满屏幕 <TextView//文本显示标签 android:id="@+id/text1"//为TextView定义id(方便后面使用) android:layout_width="match_parent"//宽度填充满屏幕 android:layout_height="wrap_content"//高度包裹住内容 android:textSize="19sp"//文本字体大小 android:text="请输入手机号码">//文本内容 </TextView> <EditText//文本编辑标签 android:id="@+id/number"//为EditText定义id(方便后面使用) android:layout_width="match_parent"// android:layout_height="wrap_content"// android:layout_alignParentLeft="true"//位置居左 android:layout_below="@+id/text1"//位置在text1下面(前面定义了id) android:layout_margin="20dp"//边距 /> <Button//按钮控件 android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/number" android:layout_margin="20dp" android:text="拨打电话"/></RelativeLayout>
这就是布局源码,效果如下
在java文件下建立以下MainActivety.class文件(包名命名随意,一般是把域名倒过来写,比如xyz.wayteam.demo)
源码
package com.pkl.demo;import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import androidx.annotation.Nullable;public class MainActively extends Activity { //创建私有变量,方便下面函数取用 private EditText editText; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); //加载刚刚设置的布局 setContentView(R.layout.demo); //找到刚刚EditText。通过findViewById。 editText = (EditText)findViewById(R.id.number); //找到button Button button = findViewById(R.id.button1); //设置按钮点击事件 button.setOnClickListener(new MyClick()); } //创建点击事件 private class MyClick implements View.OnClickListener{ @Override public void onClick(View v) { //利用getText得到EditText的输入内容,需要强转数据类型为Sring,trim的作用是去除空字符 String number = editText.getText().toString().trim(); //用条件语句判断用户输入内容是否为空,如果为空,则提醒用户 if ("".equals(number)){ Toast.makeText(MainActively.this,"电话不能为空",1).show(); return; } //设置意图 Intent intent = new Intent(); //设置意图行为 intent.setAction(Intent.ACTION_CALL); //将上面获取到的数据放进意图里 intent.setData(Uri.parse("tel:"+number)); //执行意图 startActivity(intent); } }}
上面项目写好之后,无法运行。
可能是
AndroidManifest.xml未配置
配置如下
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.pkl.demo"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActively"><!--配置刚刚写的项目--> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.ALTERNATIVE"/> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.CALL_PHONE"/><!--获取拨打电话的权限--></manifest>
接下来能运行,但是还是无法拨打出电话
解决办法
给这个应用拨打电话的权限。
JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。
目前大家使用较为广泛且稳定使用的是1.8版本,这里为大家提供jdk1.8版本下载(也叫jdk8)。
百度云下载(密码: lqbv
)
前几天,我的网站域名备案通过,顺带就弄了一下博客网站**【狗菌の志】**
http://www.waytam.xyz,但是现在通过百度无法搜索到我的网站,所以我就研究了一下如何被百度收录。
首先我们需要知道百度的搜索资源平台 https://ziyuan.baidu.com ,这是专门帮助大家收录网站的网站。
在进入这个网站之前先我们粗略了解一下百度蜘蛛吧
百度蜘蛛,是百度搜索引擎的一个自动程序。它的作用是访问收集整理互联网上的网页、图片、视频等内容,然后分门别类建立索引数据库,使用户能在百度搜索引擎中搜索到您网站的网页、图片、视频等内容。
所以,我们可以知道,要想让用户可以通过百度搜索到自己网站的内容,就一定要让百度蜘蛛爬到自己的网页。
接下来就让我们进入搜索资源平台https://ziyuan.baidu.com 搜索资源平台申请让那只蜘蛛爬取我们的网站吧
↓↓↓
接下来的操作就是注册账号,验证个人域名。。。
为了加快百度收入,我们需要提交自己网站页面的链接,每次写了一篇新文章之后,就可以过来手动提交一下,加快百度收录速度。
微信公众号『希望你能喜欢』一个不太专业的程序员
原创 野狗菌 希望你能喜欢 2019-09-11
Tomcat是什么Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。目前Tomcat最新版本为9.0。
注意:Tomcat需要配置jdk才能使用,jdk环境配置大家可以自行百度,或者私聊我获取帮助。建议大家使用jdk1.8版本
(如果有需要我也可以写一期jdk环境安装教程)
查看是否安装了jdk以及查看其版本可以使用cmd指令【java -version】
一、Tomcat的下载因为Tomcat是开源免费的,所以大家可以直接去Apache官网下载
直接搜索“Tomcat”,即可获取它的官方下载地址
Tomcat目前最新版本为9.0.24,在这里建议大家使用8.5.45版本,因为这一版本更加稳定
(我自己没有验证过它们的稳定性,大家如果喜欢最新版也可以下载最新版哦)
点击你需要的版本,即可看到以下页面,大家可以根据自己系统32/64位选择对应版本zip压缩包文件,如果不清楚自己系统是32位还是64位,可以选择exe文件进行安装
我为大家打包了Tomcat7、8、9的64位zip压缩包文件
(现在大家的电脑应该基本上都是64位)
详细获取方式见文章末尾
在这里我使用64位Tomcat8.5.45的zip格式压缩包为大家做示范
二、解压、启用与关闭解压文件后打开bin文件夹,可以看到如下文件
双击startup.bat即可开启Tomcat服务器
等待几秒后即可看到以下画面
此时你的Tomcat服务器即开启成功
打开浏览器输入
127.0.0.1:8080
或者
localhost:8080
【127.0.0.1回环地址、localhost本地主机,这两个的作用都是访问本地主机,8080是Tomcat默认的端口,为了方便查询,我将在另一个文章里简单介绍Tomcat的使用,此处不再赘述】
即可看到以下页面
贴心的我为大家准备了中文翻译如下
If you're seeing this, you've successfully installed Tomcat. Congratulations!
“如果你看到这个,你已成功安装Tomcat。恭喜!”
Tomcat项目的简单部署可查看公众号内文章
【Tomca之Hello World】
免费获取资料
向公众号发送【Tomcat】或者【02】即可获取打包好的Tomcat
有什么问题、意见和建议都可以在下方留言哦码字不易,点下在看鼓励下呗↓↓↓
]]>关于本文: 最近准备做一期jdk环境配置教程,准备做一个实机演示,于是想到用云服务器来为大家演示,顺路写上如何申领一个月免费服务器,以及如何让外网访问自己的云服务器,这这里我依旧使用Tomcat来演示搭建云服务器
——野狗菌【希望你能喜欢】
一、申领免费云服务器
在这里大家可以使用
【腾讯云服务器】
或
【阿里云服务器】
【其他服务器厂商也基本有免费体验活动】
我在这里使用阿里云服务器演示(因为腾讯云的体验我已经使用过了)
【在这里我推荐大家使用腾讯云服务器,绝对不是因为在微信抱腾讯大腿,的的确确是感觉腾讯云控制台对新手比较友善】
腾讯云:http://cloud.tencent.com
阿里云:http://www.aliyun.com
进入官网后就可以看到免费一个月体验服务器领取活动(腾讯云是十五天,请一个好友帮点击连接后即可再次获得十五天)
领取成功后就可以对云服务器实例进行初始化操作
【以下使用阿里云进行演示,腾讯云操作类似】
1、首先完成账号注册和实名认证
选择试用服务器类型(选择开发者专享)
2、选择如下配置
(网络地区等任选,操作系统选择Windows Server 2012 R2数据中心版 64位中文版)
此时就拥有了一台属于自己的云服务器
我们还需要对云服务器进行简单配置
登陆云服务器控制台如下
进入云服务器实例进行操作
修改自己的实例密码和远程密码
实例密码:云服务器开机密码
远程密码:远程服务器所需密码
接下来就可以使用远程来控制云服务器了
(推荐使用电脑自带远程,不推荐用网页版远程,这里就要表扬一下腾讯云服务器了,它的远程会自动跳转到电脑自带远程,无需输入ip以及密码)
二、JDK环境配置
远程进入云服务器可以看到如下页面
接下来就可以对它进行jdk环境配置
推荐安装jdk1.8
jdk下载地址:http://www.oracle.com
【我也给大家打包了jdk1.8 64位版本,文末有获取方式】
我在本地电脑下载了jdk1.8,可以直接复制粘贴到云服务器上
(一般远程是默认共享粘贴板的,在远程时也可以设置共享自己的硬盘)
复制完成后傻瓜式安装
安装完JDK后配置环境变量 : 计算机→属性→高级系统设置→高级→环境变量
系统变量→新建 JAVA_HOME 变量 。
变量值填写jdk的安装目录(比如我的是C:\Program Files\Java\jdk1.8.0_221,后面设置就用特殊字符代替本路径,如果以后更改jdk只需要更改JAVA_HOME的路径)
系统变量→寻找 Path 变量→编辑
在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
(注意原来Path的变量值末尾有没有;号,如果没有,先输入;号再输入上面的代码,直接复制粘贴)
系统变量→新建 CLASSPATH 变量
变量值填写 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一点,直接复制粘贴)
最后用cmd指令【java -version】验证是否成功安装
如图所示即安装成功
(我发现一种情况,没有配置系统变量也可以使用该指令,此处不深究,如有兴趣可以私聊我探讨)
三、Tomcat服务器部署
【历史文章参考】
如上面文章所示,部署后可通过本地回环地址访问
下面讲解如何让外网访问
如步骤一所示申领免费云服务器
建立服务器后就可以获取服务器外网ip【在服务器控制台查看】
通过外网ip就在网络上访问自己的服务器
但是在访问前还需要做两个设置
1、打开阿里云(腾讯云)控制台→打开服务器实例→网络和安全→安全组→创建安全组
如下
此时服务器是被允许通过该端口访问的,但是有的服务器还需要设置服务器防火墙
2、控制面板→系统和安全→Windows防火墙→高级设置→入站规则→新建规则
如下
开放相应端口即可
此时参照历史文件
【历史文章参考】
二、Tomcat之Hello World
部署好Tomcat即可访问自己放置的项目
比如说我的服务器外网ip是【47.111.152.29】
在浏览器输入
47.111.152.29:8080/hello
即可访问我的简易网站
(后期我会改网站端口为80,如果上面ip无法访问,可以直接访问47.111.152.29/hello)
有关于Tomcat,我今天就先讲这么多,后期我将出Tomcat的具体使用文章教程,如果有兴趣可以私聊我提前了解Tomcat的使用
点击【等你ForU】即可获取联系方式
免费获取资料
向公众号发送
【jdk】或者【04】即可获取jdk安装包
【Tomcat】或则【02】即可获取Tomcat压缩包
有什么意见和建议可以在下方留言哦
]]>『本期的就业推荐,希望你能喜欢,文末有学习资料分享哦』
说到程序员,大家也许都会想到秃头老哥
因为男性的逻辑思维能力比较强,所以大部分程序员都是男性,而现如今程序员——这一和秃头在做抗争的群体也出现了越来越多的小姐姐,女性在IT领域也是十分重要。
比如说世界上第一位程序员就是一位女性
世界上第一个程序员
![img](data:image/svg+xml;utf8,)
阿达·洛芙莱斯(1815-1852),是著名英国诗人拜伦之女、数学家。
她给程序设计“算法”,制作了第一份程序设计流程图,被视为“第一位给计算机写程序的人”。她建立了循环和子程序等现代编程领域极为重要的概念。
为了纪念阿达·奥古斯塔对现代电脑与软件工程所产生的重大影响,美国国防部将耗费巨资、历时近20年研制成功的高级程序语言命名为Ada语言,它被公认为是第四代计算机语言的主要代表。
由此可见女性程序员在IT行业是十分重要的。
一般来说
男性的逻辑思维要强于女性,而女性思维更加细腻,女性对“美”的感知能力要比男性强很多,所以在实际开发中,web前端是很多女性程序员的选择,这也是我今天想要推荐给大家的一个就业方向。
(当然啦,在web前端这一职业里大部分还是男性程序员,所以说我也不是单单推荐给小姐姐们的就业方向,所有的程序员都可以参考参考)
下面就给大家介绍一下web前端
腾讯等互联网公司的web前端职位招聘(当大家感觉迷茫不知道学什么的时候就可以看看各大公司的校招信息,看看他们对这一职业的要求,虽然我们大部分人不会去这些公司,但是他们的职位要求或许会帮助到迷茫的我们)
腾讯
网易
平台使能万物智联
百度
我暂时就只为大家搜罗这几公司的校园招聘,大家如果感兴趣可以自行去搜索他们的校园招聘哦
web前端的工资概览
*以下数据来源于【职友集】
不同地区的web前端职位平均工资前十概览
web前端不同领域平均工资前十概览
web前端平均工资与工作经验
从以上统计数据可以看出web前端这一就业前景还是不错的,而且这一职位对
女性程序员也十分友好,所以我特地向大家推荐一下,大家可根据自己的兴趣
和所学习的知识来规划自己未来的就业。
下面就给大家安排上web前端学习资料,有需要的自取哦
免费获取资料
向公众号发送【前端】或者【web前端】即可获取web前端资料
]]>server { #SSL 访问端口号为 443 listen 443 ssl; #填写绑定证书的域名 server_name www.domain.com; #证书文件名称 ssl_certificate 1_www.domain.com_bundle.crt; #私钥文件名称 ssl_certificate_key 2_www.domain.com.key; ssl_session_timeout 5m; #请按照以下协议配置 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location / { #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。 root /var/www/www.domain.com; index index.html index.htm; } }
server {listen 80;#填写绑定证书的域名server_name www.domain.com; #把http的域名请求转成httpsreturn 301 https://$host$request_uri; }
微信公众号『希望你能喜欢』一个不太专业的程序员
原创 野狗菌 希望你能喜欢 1周前
关于本文:
本文介绍如何在电脑上安装新系统。 本篇教程我的dell win10上做演示(其他品牌类似)。
至于为什么要写这个教程呢?因为B乎上三天两头的邀请我回答“怎么重装系统”,所以想到写一期小白教程,避免大家踩坑。然后这期教程也不能太单调,顺带给大家介绍一下国产操作系统deepin,顺带介绍一下双系统。
——野狗菌【希望你能喜欢】
deepin可能是中国最好用的国产linux系统
关于deepin呢,也有许多争论,比如有人说它是基于linux的,不算是国产系统,有人说它是debian的换皮作品,这些东西呢,仁者见仁。
顺带说一下,deepin好像是在去年九月份拿到了世界排名第8的受欢迎linux系统的名次(刚刚查了一下,排名第十了),大家也可以自己搜索相关信息,这里就不再赘述了。
接下来就开始我们的装机教程了
装机教程不管是安装哪个系统,这个教程都通用噢
一、准备工作
1、准备一个U盘,用作启动器。大小需要在六七个G吧,好像四五个G也行,这要看你要做的系统大小了,如果U盘有什么东西记得备份哦,因为装机会抹掉其他所有数据的;
2、下载iso镜像。因为deepin是开源系统,所以很多镜像站都可以直接下载它,这里不推荐直接官网下载,实在是太慢了,这里推荐在阿里云的镜像站下载。
这里下载版本是15.11
http://mirrors.aliyun.com/deepin-cd/15.11/deepin-15.11-amd64.iso
至于windows的系统,大家可以在MSDN上下载。给大家两个网址
MSDN
https://msdn.itellyou.cn/
MSND搬运工
总之,想安装哪个系统就下载哪个系统的iso镜像。
3、准备引导盘制作工具。这里推荐使用rufus,尽量不要用市面上那种什么傻瓜式启动器,大家可以直接百度rufus下载,也可以通过我的百度云连接下载(在公众号发送消息【06】,或者【rufus】,或者【引导盘制作工具】即可获取)
二、开始用U盘制作引导盘。
打开rufus(免安装,打开就能用)
1、在设备里选中你的U盘;
2、在【选择】选中下载好的iso镜像文件;
3、其他选项就不用管了,直接点击开始;
4、现在可以泡一杯茶边喝边等待它制作引导盘了。
这个时候就制作好了,点击【关闭】,关闭rufus。
三、为新系统分配空间
1、找到【磁盘管理】,把鼠标移动到win徽标处右键,进入磁盘管理
我在这里右键D盘,点击【压缩卷】,给新系统分配多少空间大家按需自行决定,我在这里分配40G(建议最低分配40G),因为压缩卷单位是M,需要大家自行换算成G,1GB=1024MB,所以我这里分配40960MB。
四、进入BIOS安装新系统。
我是dell的笔记本,在开机时按F2进入BIOS setup,按F12进入options boot。
重装系统需要进入options boot(选择引导),但是我们需要先进入setup进行简单设置。
首先开机时按F2(不同品牌电脑可能有所不同)进入setup:
1、将引导方式设置成UEFI
2、关闭安全引导模式secure boot设置成disable
3、保存并重启
再按F12进入options boot:
选择从U盘引导启动(选择USB-UEFI)
接下来就是系统安装引导了。
↑↑↑
选择你擅长的语言
↑↑↑
选择刚刚分配好的硬盘
然后设置密码巴拉巴拉的。。。
安装成功后请拔掉U盘再重启噢。
这时候你就拥有双系统电脑啦
🎉🎉🎉
如果有什么问题可以咨询我(是免费的!)解决噢
安装其他系统也是按照这个办法来
不管是安装双系统还是重装系统
安装方法都是换汤不换药的
细节问题可以自行搜索
或者与我私聊
🎉🎉🎉
野狗菌有什么问题可以在下方 留言或者我私聊噢 在公众号发送消息【06】,或者【rufus】,或者【引导盘制作工具】即可获取rufus工具
]]>