【Java进阶】日志及多线程入门
日志
概述:专门用于记录程序运行的状态的技术;
常见日志框架
logback
log4j
logback的使用步骤
环境级别:
下载并复制jar包到idea;
复制配置文件到源码目录;
代码级别:
修改配置文件的内容;
获取一个日志对象;
面向对象,调用方法;
注意事项
配置文件的名称和路径必须按框架的要求写和存;(必须放在源码目录下且名称是 logback.xml)
获取日志对象的时候,注意包;
参考代码123456789101112131415161718/* logback日志入门 */public class TestLogBack { // 利用工具,获取一个日志对象 public static final Logger LOG= LoggerFactory.getLogger("TestLogBack"); public static void main(String[] args) { // 利用 log对象 调用各种级别 的日志方法,就可以输出日志的内容 ...
【Java进阶】配置文件xml及properties
特殊文件的读取properties
Properties 是代表属性的意思,在Java中常常用这种后缀类型的文件作为配置文件。
配置文件出来了,那必然是需要我们去读取的,如果用字符流读取可以但是没必要,用读取properties常用的方法往往无往而不利。
概述
定义:属于map中的一员,也是双列集合;
类似于:
作用:专门与后缀名是properties的文件相互结合,可以方便的把集合中的数据存入文件,也能把文件中的数据读到集合中;
使用步骤
利用构造方法创建对象;
利用成员方法,完成功能;
构造方法
常用方法
参考代码12345678910111213141516171819202122232425262728/* Properties 是Java中常见的配置文件,一般对于配置文件的读取都是遵循一定套路的,不会直接拿着字节流/字符流来读取 */public class myProperties { public static void main(String[] args) throws Exception { ...
【Python】Python依赖安装方式整理
Python的依赖一直是一个比较棘手的问题,如果是在线的环境还好说,直接pip install 包名就OK了,但是如果在内网环境中的话,需要下包然后导进去安装。但是对于不同的包的安装方式也不相同。
pip命令相关
通过pip list 可以产看当前的环境中装了多少包,以及包的版本号,当然不一定是pip list,也有可能是pip3 list
在线安装Package
如果手里有requirements.txt文件的话
pip install -r requirements.txt
将当前环境中安装包版本信息导入到requireents.txt文件中,注意 –all 参数,加上此参数会将setuptools、urllib3包进行打包;如果不加,这两个不会打包
pip freeze --all > requirements.txt
指定版本号安装
pip install scapy==2.5.0
指定国内镜像源进行安装
pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple
离线安装Pack ...
【MongoDB】MongoDB基本操作
MongoDB常用操作
和所有的关系型数据库不同,MongoDB属于是文档类型的数据库,如果你看MongoDB内部数据的时候,就会发现MongoDB的数据存储结构为键值对(KV)形式。特别类似于Json,形同Python中的dict,Java中的set集合。
需要注意的是:MongoDB中的表对应的是Collection。
BasicOperation
使用场景:Linux服务器命令行
mongo -port
进入MongoDB
另一种方式进入MongoDB:
mongo -port 25000 -u root -p admin -authenticationDatabase ods_sys
使用root 密码admin 登录25000端口的mongoDB,库为ods_sys
不过这种命令有时候不太好使
show dbs;
查看MongoDB中的所有库
use ods_sys;
使用ods_sys库
show collections;
查看当前库中所有的表
db.flow_security.stats();
查看表的状态,有没有具体的字段我也不太清楚
db. ...
【工具篇】Wireshark网络分析工具
用了很长时间的Wireshark网络流量分析工具,不敢说自己掌握的有多么深刻,但是一些常用的基本操作还是信手拈来的,时间久了之后难免会忘记,在这里就记录一下。
过滤器
没有使用过过滤器==没有使用过Wireshark(为什么两个=,众所周知,一个=是赋值^_^)。
过滤IP※
ip.src ==112.53.42.42
显示源地址为112.53.42.42的数据包列表
ip.dst==112.53.42.42
显示目标地址为112.53.42.42的数据包列表
ip.addr == 112.53.42.42
显示源IP地址或目标IP地址为112.53.42.42的数据包列表
过滤协议※
比较简单,直接在Filter框中直接输入协议名即可。
tcp,只显示TCP协议的数据包列表
http,只查看HTTP协议的数据包列表
icmp,只显示ICMP协议的数据包列表
注意:协议名称需要输入小写。
过滤端口
tcp.port ==80
显示源主机或者目的主机端口为80的数据包列表。
tcp. ...
【Java进阶】集合
单列集合顶层接口1Collection是顶层接口,里面规定的方法,所有的单列集合都可以使用;
单列集合Collection派系
单列集合是单个的元素,类似于Python中的列表。
容器中的数据都是相互独立的,互不干涉;
双列集合Map派系
双列集合可以理解为Python中的字典,是kv键值对形式。
容器中的数据以键值对的形式存在,键和值是一一对应的;
【Java进阶】Lambda的方法引用
方法引用是JDK8的一个新的特性,Lambda是用来简化匿名代码的书写格式的,而方法引用是用来进一步简化Lambda表达式的,它简化的更加过分。
方法引用有:
静态方法引用
实例方法引用
特殊类型的方法引用
构造方法引用
其中使用场景会比较多的是前两个,后面的两个倒是不怎么常见。
静态方法引用使用场景当别人提前写好的功能放在了一个静态方法中的时候,可以采用这种语法;
语法格式类名::方法名
实例方法引用使用场景当别人提前写好的功能放在了一个成员方法中的时候,可以采用这种语法;
语法格式对象::方法名
静态&实例方法引用代码案例12345678910111213141516171819202122232425262728293031323334353637// 接口Apublic interface A { void abc(String s);}// 已经被别人实现的类zhangsanpublic class Zhangsan { public static void printString(String s){ ...
【Java进阶】Lambda表达式
什么是Lambda表达式:用于简化匿名内部类代码的书写。
Lambda表达式基本使用
Lamdba是有特有的格式的,按照下面的格式来编写Lamdba。
123(被重写方法的形参列表) -> { 被重写方法的方法体代码;}
需要给说明一下的是,在使用Lambda表达式之前,必须先有一个接口,而且接口中只能有一个抽象方法。(注意:不能是抽象类,只能是接口)
像这样的接口,我们称之为函数式接口,只有基于函数式接口的匿名内部类才能被Lambda表达式简化。
像这样
123public interface Swimming{ void swim();}
代码案例123456789101112131415161718192021222324public interface Swimming { void swim();}public class LambdaTest { public static void main(String[] args) { // 想要调用 ...
【Java进阶】查找&排序算法(附Arrays工具类)
这里再补充一条本博客的方法论:精简
只有精简才能一语中的,描绘出事物的本质,过于冗长的博客是谁不不愿意看的。
SearchAlgorithm查找算法
算法其实都是有固定模版的,至少从我考研到现在看来。以及工作之后的一些应用场景,好记性不如烂笔头,拿一些好用算法模版写到自己能随时看到的地方比自己工作胡乱在网上找,或者自己凭感觉写要好的多。
二分查找算法
精华:求mid = left + right / 2, 如果mid > key 则 right = mid - 1, 反之left = mid + 1
代码案例123456789101112131415161718192021222324252627/* 二分查找算法 精华:求mid = left + right / 2, 如果mid > key 则 right = mid - 1, 反之left = mid + 1 */public class BinarySearchAlgorithm { public static void main(String[] args) ...
【Java进阶】JDK7,8日期类
上篇说了JDK7的Calendar以及SimpleDateFormat等相关日期类,其实最好还是使用JDK8中的日期类,安全且支持更加丰富。
JDK7和8日期类比较
JDK8新增的日期类分得更细致一些,比如表示年月日用LocalDate类、表示时间秒用LocalTime类、而表示年月日时分秒用LocalDateTime类等;除了这些类还提供了对时区、时间间隔进行操作的类等,用起来特别方便。
详细说明
JDK8日期
Notes: 这里part1,2,3,4是上图中的四大模块。
PART1
LocalDate、LocalTime、以及LocalDateTime类。这三个类的用法基本大同小异,由于我之前偷懒就写了一个Demo,这里就copy一下别人的代码。
LocalDate类的基本使用1234567891011121314151617181920212223242526272829303132333435363738394041public class Test1_LocalDate { public static void main(String[] args ...
