jvm如何加载.class文件
jvm如何加载.class文件JVM是一个内存中的虚拟机
Class Loader:根据特定格式,加载class文件到内存
Execution Engine:解释器,对命令进行解析
Native Interface:融合不同语言的原生库为java所用
Runtime Data Area:JVM内存空间结构模型
由Class Loader加载.class文件到内存,Execution Engine进行解析运行,如果有native方法交给Native interface执行
Collection体系
Collection体系工作中消失而面试却长存的算法与数据结构
优秀的算法和数据结构被封装到了Java的集合框架之中
数据结构考点
数组和链表的区别
链表的操作,如反转,链表环路检测,双向链表,循环链表相关操作
队列,栈的应用
二叉树的遍历方式及其递归和非递归的实现
红黑树的旋转
算法考点
内部排序:如递归排序,交换排序(冒泡、快排),选择排序,插入排序
外部排序:应掌握如何利用有限的内存配合海量的外部存储来处理超大数据集,写不出来也要有相关的思路
考点扩展
哪些排序是不稳定的,稳定意味着什么
不同数据集,各种排序最好和最差的情况
如何优化算法
Java集合框架
Collection 接口有 3 种子类型集合: List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类, ArrayList、LinkedList、HashSet、LinkedHashSet、ArrayBlockingQueue等
集合(Set)集合(Set<\E>)是一种容器(Collection)。这种容器。不仅仅可以用来存一组数据。而且他可以保证这一组数据没有重复。
Concu ...
Java的容器
[toc]
面试官:讲讲如何写程序Iterator/Collection/Set/Map和他们之间的关系?Collection和Map可谓构成Java容器的两大体系,你熟知的数据结构。ArrayList、LinkedList、HashSet、HashMap、TreeSet、TreeMap、PriorityQueue、Stack都从Collection和Map实现而来。
Collection和Set中文都可以翻译成集合。但是从Java编程角度,Collection应该被翻译成容器。Set翻译成集合。
容器(Collection)是什么?容器(Collection)是容纳数据用的。Java的容器(Collection)可以装一组对象。既然是一组对象,那么他们就应该可以被遍历(traverse)。
可以被遍历的数据是可以被迭代的(Iterable)。可以被迭代的数据,就可以使用for循环进行迭代。像下面这样:
123for(var c : collections) { }
实现Iterable<T>接口可以被迭代的数据 ...
通用命令
通用命令查温度显示数字为千分之一度。所以说,除以1000就是当前温度值。
123cat /sys/class/thermal/thermal_zone0/temp# 实时显示watch -n 0.1 cat /sys/class/thermal/thermal_zone0/temp
设置Wi-Fi1sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
B站视频下载
B站视频下载使用命令行视频下载工具youtube-dl怎样在电脑上下载哔哩哔哩的视频? - 宫泽清一的回答 - 知乎 https://www.zhihu.com/question/41367609/answer/168592820
https://github.com/ytdl-org/youtube-dl
安装youtube-dl12sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/lolcal/bin/youtube-dlsudo chmod a+rx /usr/local/bin/youtube-dl
或
12sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dlsudo chmod a+rx /usr/local/bin/youtube-dl
使用
youtube-dl [OPTIONS] URL [URL…]
flv转mp4
下载下来的可能是flv格式,可以利用命令行工具ff ...
查看局域网所有设备
查看局域网所有设备查看系统arp缓存
可以用arp命令查看本机中的arp缓存,其内会存有通讯过的设备ip与mac地址
1arp -a
12# mac不支持 mac请用上一条命令arp -n
但是如果是没有与本机通信过的其他设备是不会被缓存进arp表中的,此时可以写一个脚本ping一下局域网的每一个ip,更新与之对应的设备信息。
ping局域网脚本1234567891011#!/bin/bashIPdomain=${1%.*}searchstart=${1##*.}searchend=$2for addr in $(seq $searchstart $searchend)do ping -c 1 -i 0.2 -W3 $IPdomain.$addrdonearp -n |grep -v 'incomplete'
可用如下命令run此脚本(例中脚本名为IPsearch.sh)
1source IPsearch.sh 192.168.1.5 150
意思是从192.168.1.5开始到192.168.1.150,逐个I ...
锁
锁模块MyISAM与InnoDB关于锁的区别
MyISAM用的是表级锁,不支持行级锁,不支持事务
例如对某表前两百万行进行查询时,MyISAM会自动给表上表锁,
此时想修改第两百零一万行的数据就需要等待前面的查询操作执行结束。
故在做查询时MyISAM会给表加上表级读锁,在修改写入等操作时会加上表级写锁。
当读锁未被释放,另一个session想加上写锁就会被阻塞,直到所有的读锁都被释放。
先上读锁,后上读锁不会被阻塞,后上写锁会被阻塞
先上写锁,后上读写锁都会被阻塞
InnoDB默认用行级锁,也支持表级锁,支持事务
用的二段锁:
即加锁和解锁分为两个步骤,先对同一个事物中的一批操作进行加锁,commit提交后再对加上的锁统一解锁。
事物默认是自动提交的,可用命令查询:
-- 查看自动提交设置
show variables like 'autocommit';
-- 关闭自动提交(该设置仅针对当前session)
set autocommit = 0;
1234567- ``` sql -- 开启事务 begin transaction [ ...
使用frp进行内网穿透
使用frp进行内网穿透[toc]
frp是什么简单地说,frp就是一个反向代理软件,它体积轻量但功能很强大,可以使处于内网或防火墙后的设备对外界提供服务,它支持HTTP、TCP、UDP等众多协议。我们今天仅讨论TCP和UDP相关的内容。截至本文完成,frp的最新版本为v0.37.0,本文使用最新版本。
准备工作搭建一个完整的frp服务链,我们需要
VPS一台(也可以是具有公网IP的实体机)
访问目标设备(就是你最终要访问的设备)
简单的Linux基础(会用cp等几个简单命令即可)
VPS相关
因为frp的原理是利用服务端(所准备的VPS)进行转发,因而VPS的速度直接决定了之后连接的质量,请根据自己的需要选择相应主机配置。
我使用了DigitalOcean的新加坡机房,北京移动、中国教育网下测试速度尚可。
系统使用Ubuntu 16.04.5 x64,frp客户端和服务端本身同时均支持Linux和Windows,且配置方法一样,请根据实际环境自行测试,如果你是新建的VPS,那选择Ubuntu 16.04.5 x64就可以了。
服务端设置SSH连接到VPS之后运行如下命令查看处理器 ...
树莓派+EC20接收短信
树莓派+EC20接收短信[toc]
系统与硬件系统:raspberrypi OS
模块:EC20 CE FHLG
配置过程
首先当然是把模块插到树莓派上,然后检测是否识别成功
插好后的样子如下:
设备识别首先可以输入lsusb查看是否有模块信息出现
随后输入ls /dev/ttyUSB*查看哪些串口开放了
安装和配置gammu
gammu是一个开源(c++)多平台的手机管理API,支持大多数手机,获取手机信息,管理电话簿,收发短信,呼叫等。
安装gammu1sudo apt-get install gammu
配置gammu12# 开始配置gammusudo gammu-config
主要是配置Port为之前插到的ttyUSB端口,可逐一尝试。
查看设备信息12# 查看设备信息sudo gammu --identify
如果有如上图值则配置成功,否则就更换port再试试。
测试是否可用1echo "a test sms from ec20" | sudo gammu sendsms TEXT 186XXXXXXXX
如果能收到短信则配置成 ...
Apache2 + webdav on ubuntu
Apache2 + webdav on ubuntu[toc]
系统环境
Ubuntu 20.04.2
Apache/2.4.41 (Unix)
安装Apache安装Apache1sudo apt-get install apache2
禁用默认页面12sudo a2dissite 000-default.confsudo service apache2 reload
配置虚拟主机此时,我们需要使用ServerName:webdav.local.conf和附加的目录/var/www/webdav配置虚拟主机。为此,请导航至/etc/apache2/sites-available/:
1cd /etc/apache2/sites-available/
并创建一个名为webdav.local.conf的新站点配置文件,其内容如下:
12345678910111213141516<VirtualHost *:80> ServerAdmin webmaster@localhost Servername webdav.local ...