自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 python小玩意

import requestsimport base64import itchatfrom itchat.content import *def orc_look(filePath): host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=tSeFPh0pvmWbtEY5SbidzNWT&client_secret=q9YwDFUT4y85bglQPL..

2020-06-25 11:17:39 219

原创 JVM对象的分配过程

二话不说,直接上图解释:java虚拟机在类加载后,将为新生对象分配内存空间,虚拟机将在java堆中划分一块确定大小的内存。栈上分配但是在此之前,虚拟机首先会在栈上分配空间,如果栈上可以分配,便可以在栈中分配,无需GC介入。(对象小,对象简单,使用标量替换:将简单对象的变量直接声明在栈上,用标记标记为同一个对象,且对象不会产生逃逸现象:只在当前栈帧(方法)中存在,不会在其他地方调用)。堆...

2020-04-10 23:53:40 674

原创 Volatile对于引用对象的修饰

奇怪的知识故事是这样的:说是有一道阿里的面试题,是这样描述的:给定一个容器,提供两个方法add,size,写两个线程:线程一:添加10个元素到容器中线程二:实现监控元素个数,当个数到5个的时候,线程2给出提示并结束多线程的一道题,肯定不会啊,那面向百度编程。先按照正常思路码代码:public class WithoutVolatile {//提供一个容器 List list...

2020-04-05 02:55:39 3479 6

原创 源码-补码-反码

一道简单的面试题,发现自己的bug题目int a = 4;System.out.println(~a);int b = -4;System.out.println(~b);问:程序输出什么答案:-5和3解释前提:一个字节有8位,首位为符号位,1为负数,0为正数。如10000001 = -1(十进制),00000001 = 1(十进制)正数补码 = 原码负数补码在计算的时候...

2020-03-17 17:21:39 206

原创 职责链模式

基本介绍1、职责链模式又叫责任链模式,为请求创建了一个接受者对象的链,这种模式对请求的发送者和接受者进行解耦2、职责链模式通常每个接收者都包含对另一个接收者的引用,如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接受者,以此类推3、这是一种行为型设计模式使得多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,知道有...

2020-02-10 13:58:06 169

原创 UML类图介绍

UML基本介绍UML:统一建模语言UML有一套符号具体介绍UML类图的分类:1、用例图2、静态结构图:类图、对象图、包图、组件图、部署图3、动态行为图:交互图(时序图与协作图)、状态图、活动图类图是描述类与类之间的关系,是UML图中最核心的类之间的关系有:依赖,泛化(继承),实现、关联、聚合与组合类图-依赖关系只要在类中用了对方,那么他们之间就存在依赖关系,如果没有对方,编...

2020-02-09 15:38:28 176

原创 设计模式概述

设计模式的目的代码可重用性(相同功能的代码,不用多次编写)可读性(编程规范性)可扩展性(增加新的功能时,非常方便,可维护)可靠性(增加新的功能,对原来的功能没有影响)使程序呈现高内聚,低耦合的特性设计模式的七大原则单一职责原则接口隔离原则依赖倒转(倒置)原则里氏替换原则开闭原则(OCP)迪米特法则合成复用1、单一职责原则基本介绍:对类来说,即一个类应该只负责...

2020-02-08 18:48:28 201

原创 代理模式

基本介绍代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象。好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。被代理的对象可以是远程对象,创建开销大的对象或需要安全控制的对象代理模式有不同的形式,主要有三种 静态模式,动态代理模式(JDK代理,接口代理)和Cglib代理(可以在内存动态地创建对象,而不需要实现接口)UML类图如...

2020-02-07 17:07:43 145

原创 适配器模式

基本介绍适配器模式(Adapter Pattern) 将某个类的接口转换成客户端期望的另一个接口表示,主要目的是兼容性,将原本接口不匹配不能一起工作的两个类可以协调工作,别名是包装器(Wrapper)适配器模式属于结构型模式(没有产生新的对象)主要有三类:类适配器模式,对象适配器模式,接口适配器模式工作原理适配器模式:将一个类的接口转换成另一种接口,让原本接口不兼容的类可以兼容从...

2020-02-06 17:36:51 136

原创 原型模式

问题描述现在有一只羊tom,姓名为tom,年龄为1,颜色为白色,请编写程序创建和tom属性完全相同的10只羊传统思维直接new出一个对象优点:比较好理解,简单易操作缺点:在创建新的对象的时候,总是需要重新获取原始对象的属性,如果创建的对象比较复杂时,效率低。总是需要重新初始化对象,而不是动态的对象运行时的状态,不够灵活使用原型模式概括原型模式是指:用原型实例指定创建对象的...

2020-02-05 20:33:40 135

原创 观察者模式

概述观察者模式是对象间多对一依赖的一种设计方案,被依赖的对象为Subject,依赖的对象为Observer,Subject通知bserver变化。也就是开闭原则例子需求气象站可以每天测量到温度,湿度,气压等以公告的形式发布出去。需要设计开放型api,便于其他第三方也可以接入气象台获取数据提供温度,湿度,气压的接口测量数据更新时,实时通知第三方传统思维创建一个WeatherDa...

2020-02-05 10:29:27 105

原创 抽象工厂模式

概述抽象工厂模式定义一个interface用于创建相关或者有依赖关系的对象簇,而无需指明具体的类抽象工厂模式可以将简单工厂模式和工厂方法模式进行整合抽象工厂模式是简单工厂模式的改进(进一步抽象)将工厂抽象成两层,AbstractFactory和集体实现的工厂子类,程序员可以根据创建对象类型使用对应的工厂子类,这样将单个的简单工厂变成工厂簇,更利于代码的维护和扩展。实例Pizza抽象...

2020-02-03 21:39:21 86

原创 工厂方法模式

概述工厂方法模式:定义一个创建对象的抽象方法,由子类决定要实例化的类,工厂方法模式将对象的实例化推迟到子类。工厂方法模式将工厂抽象起来,让其子类去实现。工厂方法模式可以比作:生产 - 工厂 - 消费每一个工厂有一个总部,分部的工厂就是实现类,每个实现类都有自己对应的生产类型实例pizza的实现类,创建一个抽象类,另外还有继承了抽象类的具体pizza实现定义一个抽象工厂,其定义了Pi...

2020-02-03 14:24:06 92

原创 单例模式(静态内部类实现方式)

使用静态内部类实现懒加载class Singleton7{ //私有构造器 private Singleton7(){ } //编写静态内部类,该类中有一个静态属性Singleton, //这个类加载的时,内部类不会加载,实现懒加载的方式 private static class SingletonInstance{ private...

2020-02-03 10:15:35 330

原创 简单工厂模式

概述定义:定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。在简单工厂模式中用于创建实例的方法通常是静态的方法,简单工厂模式又被称为静态工厂模式实例使用简单工厂模式,使得可以生产不同的pizza,如cheesePizza,GreekPizza等不同的Pizza,每一个Pizza都需要进行准备材料,做,切,打包等工作。创建一个简单工厂,工厂的逻辑...

2020-02-03 10:14:25 135

原创 单例模式之枚举

利用枚举实现单例模式enum Singleton8{ INSTANCE; public void sayOk(){ System.out.println("ok~"); }}借助jdk1.5新加的枚举,可以避免多线程问题,还可以防止反序列化重新创建新的对象。可以使用此种方法。单例模式在JDK源码中的体现public class Runtime {...

2020-02-02 10:30:08 207

原创 单例模式之懒汉式

采用懒加载的方式获取实例class Singleton3{ private static Singleton3 instance; private Singleton3(){ } //提供一个静态公有的方法,当使用的时候才实例化,实现懒汉式加载 public static Singleton3 getInstance(){ if(insta...

2020-02-01 11:21:29 92

原创 单例模式(静态常量)

单例模式的实现方式1,饿汉式静态常量方式通过返回一个静态常量,实现对象的单一形式class Singleton{ //构造器私有化,只能是类内部能new private Singleton(){ } //本地内部类创建实例 private final static Singleton instance = new Singleton(); //设置一个公...

2020-02-01 10:21:02 651

原创 初级排序算法

初级排序算法模板:定义了基本的辅助函数传入了实现了Comparable接口的数据类型的数组class Sort{ public void sort(Comparable [] a){} public static boolean less(Comparable v,Comparable w){ return v.compareTo(w)<0; ...

2019-11-18 23:13:18 102

原创 栈和队列

栈和队列题目:用两个栈实现队列用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。思路:栈是一种先进后出的数据结构,队列是一种先进先出的数据结构,两个栈,一个用来保存入栈,一个用来保存出栈的顺序public class Solution { Stack<Integer> stack1 = new Stack<Integer>...

2019-11-17 19:34:25 82

原创 二叉树的下一个节点

二叉树的下一个节点题目:给定一棵二叉树和其中的一个节点,如何找出中序遍历序列的下一个节点?树中的节点除了有两个分别指向左右节点的指针,还有一个指向父节点的指针思路:针对于中序遍历,具体做法是先遍历左子树,然后再遍历根节点,最后遍历右子树。我们在判断下一个节点的时候大概是这样一个思路,如果该节点有右子节点的话,进入右子树,然后遍历右子树的最左边的一个节点;如果给定的节点没有右子树,那么就...

2019-11-17 10:01:28 85

原创 树的基本操作

树题目:重构二叉树输入输入某二叉树的前序遍历和中序遍历的结果,请重构该二叉树。假设输入的前序遍历和中序遍历的结果中都不包含重复的数字。例如,输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},重建该树。树的结点类如下:class TreeNode{ int value; TreeNode left; TreeNode right; T...

2019-11-16 19:21:01 191

原创 链表操作(从尾到头打印数字)

链表操作(从尾到头打印数字)题目:输入一个链表的头结点,从尾到头返过来打印出每个节点的值,链表的定义如下:class ListNode{ int val; ListNode next = null; ListNode(int val){ this.val = val; }}解决方法:思路一:利用栈的数据结构,将链表遍历一遍,保存在栈中,利用...

2019-11-14 17:38:15 246

原创 字符串替换

字符串替换题目:实现一个函数,把字符串中的每个空格替换成“%20” ,例如,输入“We are happy”,输出“We%20are%20happy”解决:利用字符串替换,使用StringBuilder重新生成一个字符串public String replaceSpace(StringBuffer str) { StringBuilder sb = new StringB...

2019-11-14 10:44:56 128

原创 二维数组中的查找

二维数组中的查找题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序,请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数解决:思路一:暴力破解直接遍历一遍二维数组,就可以找出是否存在,这里的时间复杂度为O(n2) public boolean Find(int target, int [][] array) { ...

2019-11-14 10:11:50 130

原创 数组中重复的数字

数组中重复的数字问题描述:在一个长度为n的数组中的所有数字都在0~n-1范围内,数组中某些数字是重复的,,需要找出其中的任意一个重复的数字。例子:{2,3,1,0,2,5,3} 输出2或者3思路一:​ 最简单的方式就是将其排序,然后从排好序的数组中找出重复的数字思路二:​ 遍历一遍数组,当扫描到下标为i的数字时,首先比较这个数字(用m表示)是不是等于i,如果是,直接扫描下一个数字,...

2019-11-13 18:04:44 147

原创 位运算

知识点:位运算左移运算符m<<n 表示把m左移n位,在左移n位的时候,最左边的位将被丢弃,同时在最右边补上n个0,比如:00001010 << 2 = 0010100010001010 << 3 = 01010000右移运算符 m>> n 表示把m右移n位,在右移n位的时候,最右边n位将被丢弃,这里分两种情况:如果数字是一个无符号数值...

2019-11-13 14:57:57 61

原创 Docker技术概念

第一部分 容器和虚拟机容器的发展之路什么是容器?A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to anot...

2019-10-20 12:58:47 179

原创 git的简单用法

title: git的运用date: 2019-04-14 18:37:38tags:利用git命令向github提交内容在github上面创建一个新的仓库,用户存储本地仓库的数据安装gitwindow直接百度gitlinux:yum instal git-core创建一个目录并且初始化为本地git仓库# mkdir test# cd test# git init...

2019-10-16 08:55:12 67

原创 linux环境下配置java变量

linux系统使用yum下载的jdk无法进行java文件的编译,就是无法使用javac命令。补充知识点:centos系统yum下载的文件保存在/usr/lib,jdk一般安装在/usr/lib/jvm下载.gz安装包1、wget命令(安装在usr/lib/jvm)# wget https://download.oracle.com/otn-pub/java/jdk/12.0.1+12/...

2019-10-16 08:52:26 95

原创 利用hexo搭建个人博客

文章讲述如何利用远程服务器,以及本地hexo实现博客的搭建主要是实操:一般要想让博客能够在公网上被访问,需要有IP地址,或者是利用github.io进行搭建,本篇文章主要是针对远程服务器进行搭建。hexo的架构对于如何使用hexo,请参考博客理解图片的含义,也就是通过本地的hexo g渲染博客的静态文件,然后通过push将静态文件推送到远程服务器的git仓库,服务器再通过git-hoo...

2019-10-16 08:47:09 137

原创 HTTP常见的响应状态码

HTTP常见响应状态码的含义状态码类别原因短语1XXInformational(信息性状态码)接收的请求正在处理2XXSucces(成功状态码)请求正常处理完毕3XXRedirection(重定向状态码)需要进行附加操作以完成请求4XXClient Errot(客户端错误状态码)服务器无法处理请求5XXServer Error(服务...

2019-10-07 23:20:53 209

原创 使用PXE+Kickstart无人值守安装服务程序

系统环境(关闭iptables和SELinux)Centos 7VMware 虚拟机PXE作用: 引导装机Kickstart作用: 将安装系统的过程中通过ks.cfg文件中的配置信息,实现自动安装配置达到无人值守自动安装;TFTP: 支持PXE 引导的网卡中从tftp服务器端下载pxelinux.0文件、vmlinuz、initrd.img等内核引导文件;DHCP: PXE引导过程中...

2019-09-30 20:11:40 364

原创 哈夫曼编码以及带权路径长度的计算

笔试题:哈夫曼编码{4,9,2,7,5,12}的带权路径长度解决思路:首先构造哈夫曼树在使用WPL=(W1*L1+W2*L2+W3*L3+…+Wn*Ln)计算带权路径长度实现:构造哈夫曼树:每次取出最小的两个数构造第一层,在给出的哈夫曼编码中是2和4246接下来是6和5245611接下来是 7 和 97916下一步是 11 和 122451261123最后是23 和...

2019-09-30 20:05:22 6512 2

原创 mysql 5.7 密码修改出错的解决方法

前情提要:安装mysql数据库1、如果系统的没有相应的yum源,需要配置yum源,可以使用rpm安装,下载地址2、使用 rpm -ivh mysql80[tab] 安装yum源,此时在目录/etc/yum.repos.d 目录中会出现mysql-*.repo的yum源文件。可以配置.repo文件# Enable to use MySQL 8.0[mysql80-community]...

2019-09-09 11:56:47 454

原创 学习Markdown语法

1、标题学习Markdown支持两种标题的语法,类Setext和类atx形式 类Setext形式是用底线的形式,利用=(最高阶标题)和-(第二标题),eg:这是一个H1=========这是一个H2---------任何数量的=和-都可以有效果 类Atx形式则是在行首插入1到6个#,对应到标题1到6阶,eg:# 这是H1## 这是H2### 这是H3...####...

2019-09-09 11:33:20 118

原创 解决linux环境下插入mysql的中文出现??的问题

1.修改mysql默认配置:默认的mysql配置:server、client都是latin1,对中文是不支持的,这里改为utf8 方法: 修改配置文件: vim /etc/my.cnf[mysqld]character-set-server=utf8collation-server=utf8_general_ci重启mysqlsystemctl restart mysqld...

2019-09-09 11:27:50 466

原创 针对Linux初始安装数据库修改密码的解决方案

step1:修改/etc/my.cnf文件,在[mysqld]模块下添加将密码校验禁用的语句 skip-grant-tablesstep2:重启mysql服务: systemctl restart mysqldstep3:输入: mysql -u root 回车连接数据库,选择mysql数据库 use mysqlstep4:修改密码:update user SET...

2019-09-09 11:24:17 330

转载 Java语言的重载和重写的区别

学习java语言中重载和重写的区别重载(Overload)重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。最常用的地方就是构造器的重载。重载规则:被重载的方法必须改变参数列表(参数个数或类型不一样); 被重载的方法可以改变返回类型; 被重载的方法可以改...

2019-08-26 09:37:21 224

原创 推荐一个自我感觉良好的java学习网站

java自学网站

2019-08-25 11:18:53 98

空空如也

空空如也

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

TA关注的人

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