自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

城志的学习笔记

快乐学习,水滴石穿 https://github.com/chzhyang

  • 博客(58)
  • 收藏
  • 关注

原创 将博客搬至CSDN

将博客搬至CSDN

2021-08-25 15:29:00 124

原创 JDBC的那些事

目录jdbc简介接口和数据库驱动jdbc的好处jdbc连接添加依赖创建数据库和表连接CRUD查询SQL注入数据类型转换小结插入更新删除jdbc事务jdbc Batch连接池jdbc简介JDBC是Java DataBase Connectivity的缩写,它是Java程序访问数据库的标准接口。接口和数据库驱动使用Java程序访问数据库时,Java代码并不是直接通过TCP连接去访问数...

2020-08-19 11:20:00 437

原创 Java刷题常用API

目录输入输出快速查看最大最小值stringstringbuilder集合mapqueuestackset优先队列 PriorityQueue (Heap)数组静态数组动态数组Math输入输出Scanner sc = new Scanner(System.in);String s = sc.next();//字符串double t = sc.nextDouble(); //浮点数...

2020-08-13 09:31:00 427

原创 Java的反射机制

目录概念反射常用API获取类对象的方法通过反射创建类对象通过反射获取类属性、方法、构造器反射的原理和源码分析总结概念Java反射机制是指程序可以在运行时,(动态)加载和使用编译期间未指定的类。具体过程是,通过类名获取类的完整构造(如属性、方法,可用于反编译),并声称类的对象,并调用其方法。优点:代码更简洁、提高了灵活性和扩展性缺点:性能差、破坏封装性使用场景:反编译、简单工厂...

2020-08-05 09:53:00 166

原创 Java的IO流

目录概念操作举例相互转化概念IO流:数据从外部介质(磁盘、键盘)输入到内存为输入流,反之为输出流。文件的存储方式:所有的文件在硬盘或在传输时都是以字节的方式进行的,字符是只有在内存中才会形成。读取字节流后,不直接操作,而是查询指定编码表,就可以转化为字节流(如文字)。Java的字节流和字符流字节流:按字节处理,直接操作文件本身,主要用于处理二进制数据、视频、图片、文件等。...

2020-08-05 09:48:00 94

原创 docker原理:cgroup

目录cgroup主要功能术语参考cgroup全称Linux Control Group, 是Linux内核的一个功能,用来限制、控制与分离一个进程组群的资源(如CPU、内存、磁盘输入输出等),可更具体地控制对系统资源的分配、优先顺序等。一句话总结,namesapce解决环境隔离问题,cgroup则解决对计算机资源使用上的隔离问题。主要功能Resource limitation...

2020-07-02 16:03:00 222

原创 docker原理:namespace

目录NamespaceUTS NamespaePID NamespaceMount NamespaceUser NamespaceNetwork Namespace参考NamespaceLinux Namespace 是Linux提供的一种内核级别环境隔离的方法,提供了对UTS、IPC、mount、PID、network、User等的隔离机制。一句话总结,Namespae解决环境隔...

2020-07-02 16:00:00 321

原创 Anaconda软件安装使用问题

目录更新源用conda安装包出现的环境不一致问题更新源命令行conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --set show_channel_urls yesunix系统下可通过~/.condarc查看和编辑源配置如下信息为正...

2020-05-12 12:40:00 240

原创 初步了解Unix系统的I/O模式

I/O模式对于一次IO访问(以read举例),数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。当一个read操作发生时,它会经历两个阶段:等待数据准备将数据从内核拷贝到进程中因为这两个阶段,Unix系统的IO分为五种模式:阻塞 I/O(blocking IO)非阻塞 I/O(nonblocking IO)I/O 多路复...

2020-03-29 12:36:00 204

原创 深入理解索引和AVL树、B-树、B+树的关系

目录 什么是索引 索引的分类 索引和AVL树、B-树、B+树的关系 AVL树、红黑树 B-树 B+树 SQL和NoSQL索引 参考 什么是索引索引时数据库的一种数据结构,数据库与索引的关系可以...

2020-03-21 18:40:00 573

原创 Tomcat和Servlet简析

目录 Servlet Tomcat 参考 ServletServlet通常指我们继承了Servlet接口的类,我们开发Servlet时一般就是继承HttpServlet重写它的doGet、doPost方法达到提供服务的目的。Servlet不仅仅是这些,我们用的JSP在编译...

2020-03-20 10:04:00 279

原创 并发事务和隔离级别

目录事务的ACID特性并发事务的问题隔离级别悲观锁和乐观锁参考事务的ACID特性原子性(Atomicity): 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用。一致性(Consistency): 执行事务前后,数据保持一致,多个事务对同一个数据读取的结果是相同的。隔离性(Isolation): 并发访问数据库时,一个用户的事务不被其他事务所干...

2020-03-17 18:32:00 197

原创 Redis的结构和运作机制

目录 数据库的结构 字典的底层实现 过期键的检查和清除 定时删除 惰性删除 定期删除 对RDB、AOF和复制的影响 持久化机制 RDB方式 AOF方式 ...

2020-03-16 18:59:00 430

原创 深入理解Java并发类——AQS

目录 什么是AQS 为什么需要AQS AQS的内部数据和方法 如何利用AQS实现同步结构 参考 什么是AQSAbstractQueuedSynchronizer,是Java并发包中,实现各种同步结构和部分其他组成单元的基础,如线程池中的Wo...

2020-03-13 16:11:00 216

原创 Java中的四种引用和引用队列

目录 强引用 软引用 弱引用 幻象引用 Reachability Fence 参考 强引用正常的引用,生命周期最长,例如 Object obj = new Object(); 当JVM内存不足时,宁可抛出OutOfMemor...

2020-03-10 10:59:00 712

原创 深入理解Java多线程——线程池

目录 定义 不同线程池的创建 Executor的组成 线程池生命周期 execute()方法 线程池大小的设置 线程池的使用 参考 定义线程池,除了池的功能外,还提供了更全面的线程管理、任务提...

2020-03-09 17:26:00 405

原创 深入理解Java多线程——ThreadLocal

目录 定义 API 场景分析 场景实验,观察Spring框架在多线程场景的执行情况 10000此请求,单线程 10000次请求,线程数加到100 对c的访问加锁 把c设为ThreadLocal 收集多个Thr...

2020-03-09 15:43:00 426

原创 算法题轻松解析——汇总

算法LeetCode、剑指offer、《程序员代码面试指南》左程云1. 链表编号题目难度实现分析LeetCode92反转m-n部分的链表中等Java分析LeetCode83删除链表中的重复元素简单Java分析LeetCode82删除链表中所有重复元素中等Java分析LeetCode21合并有序链表简单Java...

2020-03-05 20:59:00 160

原创 编译器简介

语言处理系统高级语言->汇编语言->机器码->硬件预处理器:将源程序的存放在不同文件中的多个模块聚合起来,并替换宏。汇编器:将编译器形成的汇编语言程序输出转换成可重定位的机器码。编译器是一个程序,它可以将 高级编程语言编写的程序 翻译成目标语言(如机器语言)编写的程序。解释器也是一个程序,但它不是翻译,而是直接根据用户的输入来执行制定的操作。java就是编...

2020-03-03 15:55:00 135

原创 创建String对象的方法和内存使用

以下分析基于HotSpot虚拟机注意jdk1.7以上的两个变化:虚拟机内存中,常量池由方法区转移到堆。String.intern(),如果常量池存在等于此String对象的字符串,则返回该常量池中对象的引用;否则,在常量池中生成一个对原字符串的引用,并返回该引用,而不会再将字符串拷贝到常量池(jdk1.6)。new String在堆上创建字符串对象,调用String类的有参...

2020-03-03 15:47:00 94

原创 Maven项目导入Intellij IDEA

目录 1. 自动创建maven项目 3. 修改IDEA中maven设置 4. 将maven项目导入IDEA 坑:IDEA无法下载依赖包 1. 自动创建maven项目打开网站https://start.spring.io/点击generate,将下载的项...

2020-03-03 15:45:00 170

原创 MySQL存储引擎

MySQL5.5后,默认存储引擎是InnoDB,5.5之前默认是MyISAM。InnoDB(事务性数据库引擎)和MyISAM的区别补充:InnoDB是聚集索引,数据结构是B+树,叶子节点存K-V,V存的是数据页。MyISAM是非聚集索引,V上存的是主键值,查到后还需要再聚集索引上再查一次。InnoDB是具有事务(commit)、回滚(rollback)和崩溃修复能力(crash...

2020-03-03 15:37:00 51

原创 MySQL存储引擎——InnoDB和MyISAM的区别

MySQL5.5后,默认存储引擎是InnoDB,5.5之前默认是MyISAM。InnoDB(事务性数据库引擎)和MyISAM的区别补充:InnoDB是聚集索引,数据结构是B+树,叶子节点存K-V,V存的是数据页。MyISAM是非聚集索引,V上存的是主键值,查到主键后还需要从聚集索引上再查一次。InnoDB是具有事务(commit)、回滚(rollback)和崩溃修复能力(crash r...

2020-03-03 15:37:00 59

原创 深入理解Java容器——HashMap

目录存储结构初始化putresize树化get为什么equals和hashCode要同时重写?为何HashMap的数组长度一定是2的次幂?线程安全参考存储结构JDK1.8前是数组+链表,JDK1.8之后是数组+链表+红黑树。本文分析基于JDK1.8源代码。HashMap的基础结构是Node ,它存着hash、键值对,Node类型的指针next。主干是桶数组,链表bin用于解决hash冲突,...

2020-03-03 15:35:00 127

原创 深入理解Java并发容器——ConcurrentHashMap

目录重要属性和类put为什么java8后放弃分段锁,改用CAS和同步锁初始化addCount扩容树化参考重要属性和类sizeCtl容量控制标识符,在不同的地方有不同用途,而且它的取值不同,也代表不同的含义。负数代表正在进行初始化或扩容操作,-1代表正在初始化-N 表示有N-1个线程正在进行扩容操作正数或0代表hash冲突链表还没有被初始化,这个数值表示初始化或下一次进行扩容的大小,这...

2020-03-03 15:33:00 108

原创 String、StringBuilder和StringBuffer的比较

目录 1.String特性 1.1 不可变 1.2 字符串常量池 2.StringBuilder和StringBuffer 2.1 区别 2.2 应用场景 @1.String特性1.1 ...

2020-03-03 15:30:00 54

原创 接口类、抽象类和普通类的区别

设计层面:抽象类是多个子类公共特征的抽象,可以想象成基因图谱。比如猴子的子类有金丝猴、长尾猴等。抽象类是子类的模板。这样做有助于代码复用。所以抽象类只支持单继承。接口类是行为的抽象,这种行为可以跨物种。比如麻雀、蝴蝶、风筝都能实现“飞:这个行为。所以可以理解接口是支持多重继承的,也是实现多态的基础,所以它的方法是抽象的,不需要实现。接口抽象类普通类变量public st...

2020-03-03 15:29:00 128

原创 跟我一起学算法——二项堆

目录 1.二叉堆(Binary Heap)、二项堆、斐波那契堆(简称Fib堆)的比较: 2. 二项树 2.1 定义 2.2 二项树B_k的性质 3. 二项堆 3.1 定义 3.2 数据结构 3.3 操作 ...

2020-03-03 15:27:00 576 1

原创 跟我一起学算法——分治法

目录 1.定义 2.适用条件分析 3.步骤 应用1:归并排序 步骤 算法 算法分析 应用2:快速排序 基本思想 算法 算法分析 ...

2020-03-03 15:23:00 201

原创 跟我一起学算法——动态规划

目录 1. 步骤 2. 要素 3. 装配线调度 4. 矩阵链乘 5. 最长公共子序列(Longest Common Subsequece) 6. 最优二叉查找树(Optimal Binary Search Tree) 1. 步...

2020-03-03 15:21:00 107

原创 跟我一起学算法——斐波那契堆

斐波那契堆(Fibonacci Heap)1. 定义FibHeap是一个树的集合,且树满足最小堆性质。根表不要求树根的度有序,head指向根表中值最小的结点。全部使用双向循环链表。KEY:防止超出O(lgn)的操作出现,也即防止出现度超过O(lgn)的树出现,只要能保证D(n)<=lgn,其性能优于二项堆。2. 数据结构结点的域p:父指针left,right:左...

2020-03-03 15:20:00 110

原创 跟我一起学算法——贪心算法

目录 思想 条件 贪心算法正确性的证明() 贪心选择的证明,方法一: 贪心选择的证明,方法二——剪枝法: 最优子结构证明: 应用:活动选择问题 贪心选择的证明 应用:Huf...

2020-03-03 15:18:00 263

原创 跟我一起学算法——最大流

目录 定义 流网络((flownetwork)) 多源多汇 剩余网络(residual network) 增广路径((Augmenting Path) 截(Cut) Ford-Fulkerson算法 Edm...

2020-03-03 15:16:00 144

原创 跟我一起学算法——红黑树

目录 定义 性质 旋转 插入 数据结构扩张 应用 参考 定义红黑树(red-black tree)是一种改进的二叉查找树,结点域中增加颜色属性(红或黑)。二叉查找树的一般操作的时间为 O(lgn)。但若它退...

2020-03-03 15:14:00 325

原创 IP安全:DDoS攻击、tearDrop攻击和微小碎片攻击

攻击案例IP欺骗,留后门假设hack要攻击某主机x,x有一个terminal与某sever建立了连接。 假设tcp的seq是有规律的。hack 向server发syn洪泛,保证server在收到syn+ack后,不会发送RSThack 伪造ip(与server不同)向x-terminal发包,寻找seq的规律冒充server_ip,根据seq规律,与x-terminal件里tcp连接...

2020-02-21 11:47:55 1207

原创 Netfilter,获取http明文用户名和密码

文章目录target端内核模块的操作初始化netfilter用netfilter过滤发出去的http包解析http包,获取用户名和密码用netfilter过滤收到的包清理netfilterhack端遇到的问题实验环境:ubuntu 18.04 kernel 4.15源代码:nf_http.c getData.c Makefiletarget端源代码:nf_http.c内核模块的操作...

2020-02-21 11:46:22 788

原创 序列化与反序列化

序列化将Java程序中的对象,转换成字节流,使之可以保存到磁盘或通过网络传输。序列化的条件:类实现了Serializable接口序列化的关键步骤:class Test implements Serializable{ }//实现接口的类Test obj = new Test();ObjectOutputStream oos = new ObjectOutputStream(new Fi...

2020-02-15 14:48:28 122

原创 ICMP和重定向攻击

文章目录icmp基础smurf攻击icmp重定向攻击基于libpcap的sniffer数据包解析定义包头raw socket解析数据包重定向icmp基础https://zhuanlan.zhihu.com/p/58662573头部type,code,checksum ,4字节,扩展字段,4字节icmp作为数据部分封装到ip数据报中IPv4中的常用type,ipv6与之不同0:Echo...

2020-02-05 20:28:15 1226

原创 TCP安全:SYN Flooding 和 nmap

文章目录SYN floodingnmapnmap idleSYN flooding简介:向target持续发送SYN=1的TCP报文,使target因内存满而拒绝服务。命令:netwox 76 -i target_ip -p port原理:TCP建立连接时,server收到SYN报文,会分配一个较大的TCB空间,存储相关信息,并进入half-opening状态。防御:发现这种攻击后,开启...

2020-02-05 20:27:11 394

原创 NAT原理

文章目录NAT简介原理NAPT代理NAT简介Network Address Translation,网络地址转换 ,可将私有IP转换成公有IP,解决IPv4地址不足问题。SNAT:内部访问外部,改source ipDNAT:外部访问内部,改destination ip原理在iptables中,可以通过在NAT表的PREROUTING链和POSTROUTING链上分别应用DNAT和SNA...

2020-02-05 20:26:30 171

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除