自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 资源 (1)
  • 收藏
  • 关注

原创 超详细Centos7+Nginx+Django+uwsgi搭建服务器并部署

安装Centos7后出现的问题Centos安装后会发现连ping都没法与外界ping通,我们需要修改/etc/sysconfig/network-scripts/ifcfg-ens33来进行修改就可以了。然后运行service network restart即可ping同网络并使用yum进行一些操作。环境配置我们这次项目使用的环境是:Python3.7.9Django3.1.3python3.7.9的安装安装wget命令yum -y install wgetyum -y inst

2020-12-03 14:32:02 1651

原创 Java事件监听模型与观察者模式

前言对于这两种模式,我们首先应该理解他们各自的含义,最后再来进行一个对比。事件监听模型对于事件监听模型,主要分为三部分:事件源:就是事件发生的地方,比如一个按钮被点击了,那么事件源就是按钮事件:发生了什么事,比如按钮被点击了,那么点击就是一个事件监听者:监听发生了什么事,然后我要去做什么。比如按钮被点击了,点击完之后呢?我可以监听他,然后按钮被点击后弹出一些东西。所以总结一下事件监听模型就有点类似于我们平常玩手机,点击屏幕后得到的反馈。接下来我们可以通过代码来看看:我们新建了三个类,分

2021-01-18 15:05:33 500 1

原创 攻破ThreadLocal——从结构入手

开局一张图如果你对这张图已经有一个很深的理解的话,下面的东西应该也不用多看了,如果没有,请继续看下去。我们将会依照上面那张图去分析ThreadLocal。结构详解对于上面的图,我们从源代码去探寻:Thread从我上面划出的地方可以看到,Thread类中拥有ThreadLocalMap属性,即下图所示:ThreadLocal从Thread的源代码我们看到了ThreadLocal,说明我们需要点进入看一下:可以看到在ThreadLocal里面,包含了一个ThreadLocalMap内部静

2021-01-16 14:04:08 198 1

原创 手把手搭建一个SpringCloud项目

环境准备jdk1.8maven3.6.3IDEA开发工具这三个对于Java开发者来说应该是不难的吧。新建项目使用maven来新建一个项目即可,当然你也可以选择Spring Initializr来新建一个SpringBoot项目,本质上没有太多区别。修改pom文件、删除src<packaging>pom</packaging> <properties> <project.build.sourceEncoding>U

2020-12-31 14:01:55 279

转载 SpringBoot日志管理

日志门面现在SpringBoot的日志有JCL、SLF4J、JBOSS-LOGGING日志实现框架实现框架有Log4j、JUL、Log4j2和Logback选择我们选择slf4j作为日志门面框架,logback作为日志实现框架。

2020-12-23 11:46:30 97

原创 超详细Django+Nginx+wsgi+asgi搭建服务器

前言上上个星期利用django + nginx + wsgi搭建了一个django服务器,这个星期我们项目添加了websocket功能。而wsgi本身是不支持websocket长连接的,所以我们组添加了asgi协议,使用django的插件channels来作为我们项目websocket的支持。在配置期间也碰到了许多坑,记录一下,希望对看到这篇博客的人有一些帮助。前提条件由于我的搭建前提是已经跑通了django+nginx+wsgi,所以我建议读这篇文章的人能够保持同一步骤,这样坑可能会少一点。如果你还

2020-12-19 18:49:25 3587 4

转载 无状态、有状态、无连接、长连接

无连接服务器处理完客户的请求并返回客户的回应之后,即断开连接。在http中使用了keep-alive进行保持长连接服务器与客户端建立连接后,不管有没有使用都保持连接状态。无状态指服务器不知道客户端是什么状态(这里的状态可以是登录状态还是未登录状态),而且keep-alive这个属性是没办法去改变这个结果的。于是出现了Cookie和Session进行一个有状态的实现。...

2020-12-10 14:41:53 1059

原创 关于Django项目在服务器实时更新

在这个项目中我们小组使用到了Django + uwsgi + nginx。对于uwsgi.ini的配置文件如下:[uwsgi]socket = 127.0.0.1:8997chdir = /data/wwwroot/yutang_server/module = yutang_server.wsgiprocesses = 4daemonize = uwsgi.logpy-autoreload = 1 # 这个是表示实时更新的,但是只有这个还是不行pidfile = /data/wwwroot

2020-12-08 11:10:29 1014

原创 Centos-7下载以及相关问题

下载地址:http://mirrors.ustc.edu.cn/centos/7/isos/x86_64然后再VMware进行安装,这个不详细表述,一般都比较容易安装。开启远程登录centos7本身就安装了ssh,所以我们只需修改一下相关文件,然后重启之后就可以通过Finall Shell进行登录。打开/etc/ssh/sshd_config,进行如下修改:然后执行 service sshd start重启一般即可远程登录。安装net-tools想要远程登录,必须先知道ip,但是ce

2020-10-05 15:37:30 186

原创 最长不含重复字符的子字符串

动态规划使用前面得出的结果来计算。同理,这道题也是一样的。如果str=“a” || str="",那么我们只能返回0或者1,就是str.length()。如果str="…ab…",那么从第二个开始,把b与前面的字符串对比,这个时候有两种情况,第一是前面存在b,第二是前面不存在b。如果不存在b,那很简单,我们需要先求出以a为结尾的最长不含重复的子字符串,然后再加1就好了。如果存在呢?有点麻烦,这个时候其实以a结尾的最长子字符串大小还是可以用的,知识要分情况。1、这个时候需要后面的b与前面的比

2020-06-23 00:39:30 111

原创 wait、sleep、yield和join的区别

wait是Object的方法,会释放掉锁,等待其他线程惊醒notify唤醒。使用前必须得到锁,所以一般于synchonized一起使用。sleep抱着锁睡觉,阻塞线程,优先级部分高低运行。yield,让当前进程进入就绪状态。只能让高优先级的进程先运行。join:假如一个线程调用了t.join,那么这个线程就会阻塞,转而去执行t这个线程,如果有多个t.join,如t1.join、t2.join,那么就会先去执行t1和t2,直到两个都执行完了,才回去执行自己的进程。这里要注意,如果t1抢到了时间片,那么就

2020-06-22 22:11:24 248

原创 SpringBoot项目中出现cant load AMD 64bit dll on a IA 32bit platform

最近出现这个错误,而且是在SpringBoot项目里面:确实我之前安装的是jdk32位的1.8,于是把它再去安装了64位的1.8,修改成64位后还是不行。于是重新建立一个新的SpringBoot工程之后,发现可以了。于是猜测应该是老的SpringBoot工程好像没法检测到这个改动,具体应该是SpringBoot内部的问题。暂时也不是很懂,希望有大佬能够解释一下。...

2020-06-22 19:51:29 1163 1

原创 手写单例模式

懒汉式:太懒了,等到需要的时候才加载。这个不是线程安全的,所以一般用的极少:public class Singleton{ private static Singleton singleton; public static Singleton getInstance(){ if(singleton == null){ singleton = new Singleton(); } return singleton; }}这个是线程安全的,但是synchronized粒度较大

2020-06-21 20:45:53 153

原创 插入排序

简述插入排序是以第一个为有序,然后从第二个开始遍历,用第二个与与前面的数据对比(从后面向前面对比),如果对比之后发现比他们小,则把这个数据向后挪,最后找到一个比他小的,那么就可以放在这个数的后面。 public int[] insertSort(int[] nunbers){ // 定第一个为排好序的。然后从i=1开始进行排序 for(int i = 1; i < nunbers.length; i++){ int flag = i

2020-06-21 00:56:46 119

原创 JVM永久代与元空间

提到这两个概念,就不得不提一下方法区。方法区:线程共享,用于存储已经被虚拟机加载的类型信息、常量、静态变量、即使编译器编译后的代码缓存等数据。在jdk1.8以前,jdk是通过永久代来实现方法区的,当时的HotSpot虚拟机团队将收集器的分代设计扩展至方法去,使得能够通过垃圾收集器来管理这部分内存。这样就导致了方法区受到了《Java虚拟机规范》的约束,容易遇到内存溢出的问题。于是在jdk1.8的时候,就把永久代这个概念剔除,提出元空间。元空间最大的不同是其放在了本地内存,而永久代则是跟堆内存一起存放

2020-06-20 11:09:27 127

原创 剑指offer——二维数组的查找

遍历每一行,然后通过二分查找算法查找public class Solution { public boolean Find(int target, int [][] array) { for(int i = 0; i < array.length; i++){ if(solve(array[i], target) == 1){ return true; } } r

2020-06-17 14:21:36 93

原创 写入时复制思想以及CopyOnWriteArrayList类的使用

写入时复制顾名思义,在读的时候是不用加锁的,随便读,毕竟读操作并不会改变其数据。在写入的时候,是需要加锁的,在操作的过程中,将原本数据复制过来,然后再修改或者添加想要的内容。这是一个思想,自己查了一下,在许多方面都有应用。这里不细展开。CopyOnWriteArrayList这个类其实日常开发中应该不会经常遇到,我们先看一下他的源码(基于JDK1.8):其实最主要是看他的add添加方法,也就是用到了我们上面提到的写入时复制...

2020-06-14 12:45:50 158 1

原创 Java并发:生产者与消费者模型、虚假唤醒

手写生产者与消费者模型public class Again { private int num = 0; // 生产者 public synchronized void add() throws InterruptedException { // 先判断是否可以生产,条件是num==0 if (num!=0){ // 不能生产,则等待 //System.out.println(Thread.curre

2020-06-12 14:31:53 108

原创 极简Mybatis干货:从零开始(持续更新改进)

距离初次学习Mybatis已是许久之前,趁着这段时间没有实习与课程较少,再次复习一下Mybatis并记录一下。(全程无废话)-----------------------------------------分割线----------------------------------------------Mybatis概述:mybatis对JDBC API进行了封装,使得操作更加便捷简单。ORM思想:Object Relational Mapping 对象关系映射。就是把数据库表和实体类及实体类的属

2020-05-20 17:01:12 219

原创 日常学习记录:Intellij突然失效了、redis的安装与配置以及测试以及一点求职实习感悟

Intellij突然失效了这,以前破解的今天打开突然失效了。于是搜了一下,发现有一种方法特别简单,记录一下:下载一个jar包,链接如下:链接:https://pan.baidu.com/s/1YrC3fopc46JuKgpBkpWR5Q提取码:kayo1、下载后,我们需要先进入Intellij编辑页面,是可以进入的。2、然后直接把这个zip文件拖进编辑页面。然后他会提示那个好像是重启。3、重新启动进入,有一个IDEA安装好像。点击然后再重新打开Intellij。竟然可以了???。是的,我也不

2020-05-16 23:05:29 127

原创 对于Linux的的分类及安装的一些理解

前言对于Linux,从最开始的恐惧安装,到慢慢理解他们的终端命令,到对于服务器进行一个配置理解,最近也在学习shell编程。可以说Linux学习起来还是有挺多乐趣的。分类debian:如Ubuntu、debian、mint、kaliredhat:如Centos、fedora既然有分类,那么他们应该就会有一定的区别。区别我们在linux上进行软件安装的时候,一般有三种方法:源代码安装、二进制安装和包管理器安装。其中前两种都是需要先下载包到本地的,最后一种是通过联网进行下载的。对于源代码安

2020-05-15 17:33:43 131

原创 Kali虚拟机开启远程服务、连接和其中一些问题

开启连接修改配置文件vim /etc/ssh/sshd_config改两个地方:如上图的黄色字段所示。启动ssh服务:service ssh start安装远程工具并连接我们使用FinalShell。具体下载地址为:http://www.hostbuf.com/t/988.html安装后点击填写虚拟主机信息,然后就可以连接了,连接效果如下:期间遇到的问题在使...

2020-04-30 17:48:26 1192

原创 mybatis中Unknown column 'XXX' in 'where clause'出错

最近在一个项目里出现了这个错误。很简单的意思就是这个不存在。像这里的话就是我们的数据库语句写错了。于是重新回去查了一下,发现了以下:改回#{shopCondition.owner.userId}就可以了。...

2020-04-10 16:55:59 5169

原创 JavaWeb:servlet的映射xml配置

最近学习springMVC,JavaWeb知识涉及的比较多一些,之前学过的好多都忘记了。重新来学习总结一下。servlet是JavaWeb的核心。现在也许可以不用学jsp,但是servlet却是必须要学会的。关于servlet的xml配置,涉及到两个标签: <servlet> <servlet-name>demo1</servlet-name&g...

2020-03-09 15:09:31 373

原创 Java注解

概念可以把注解理解为代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过注解开发人员可以在不改变原有代码和逻辑的情况下在源代码中嵌入补充信息。作用1、编写文档通过代码里标识的元数据生成文档2、代码分析通过代码里标识的元数据对代码进行分析(使用反射)3、编译检查通过代码里标识的元数据让编译器能够实现基本的编译检查(如Override)。预定义注解可以...

2020-03-05 15:49:16 201

原创 Java反射机制

学习ssm框架学到一半,回来复习一下反射和注解的知识。这里先说一下反射的知识。Java反射机制Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法,可以调用任意一个对象的属性和方法。更通俗的说法是反射可以将类的各个组成部分封装为其他对象,这就是反色后机制。Java编译经历的过程第一阶...

2020-03-05 14:13:21 72

原创 C++期末复习

1,静态类成员变量必须在类外进行初始化。详见这篇文章2,引用必须进行初始化,如:在这里,b是会报错的。这样才不会。但是在函数形参那边的引用就不用这样写啦。3,数组作为函数引用形参4,临时对象,关于临时对象的介绍看这篇文章,再来看下面这道题:5,关于类的组合和类的继承相结合的构造顺序看下面这段代码,写出其执行结果。#include <iostream>usin...

2020-01-02 14:07:28 233

原创 C++关于数组引用做函数形参

#include <iostream>using namespace std;void func(int (&a)[5]) { for (int i = 0; i < 5; i++) { cout << a[i] << " "; }}int main() { int number[5] = { 0,1,2,3,4 }; f...

2020-01-02 10:52:57 1766

原创 C++虚函数表的探讨

#include <iostream>using namespace std;class Base {public: virtual void f() { cout << "Base::f" << endl; } virtual void g() { cout << "Base::g" << endl; } virtual v...

2020-01-01 17:22:36 76

原创 域名服务器

分类1,根域名服务器2,顶级域名服务器3,权限域名服务器4,本地域名服务器根域名服务器1,最高层次、最重要的域名服务器,知道所有的顶级域名服务器的域名和ip地址。2,要是本地域名服务器无法解析域名,首先交给根域名服务器。3.在迭代查询时,根域名服务器并不直接把域名转为ip地址,而是把顶级域名服务器的IP发给本地域名服务器,让本地域名服务器去找顶级域名服务器。顶级域名服务器1,管...

2019-12-24 18:23:29 1216

原创 BCNF和第三范式的分解算法

范式概念对于数据库的范式概念我们是经常会用到的,临近期末考试,我自己总结了一下,要不然总是一下子就忘记了。第一范式:如果一个关系模式R的每个元素都是不可分割即原子的单元,则称这个范式是第一范式。BCNF:对于关系模式R的函数依赖集,每个依赖都必须符合下面两个至少有一项成立:1,a——>b是平凡的函数依赖,即b属于a。2,a——>b,其中a是关系模式R的一个超码。这里我们对B...

2019-12-20 19:18:25 12802

原创 自下向上语法分析——算符优先分析法

首先看一下什么是算符文法算符文法设有文法G,若G中没有形如U —> …VW…的规则,其中VW为非终结符,则称G为算符文法。两个重要性质:1,在算符文法中任何句型都不含两个相邻的非终结符2,若Ab或bA出现在算符文法的句型B中,其中A是非终结符,b是终结符,则B中任何含b的短语必含有A。定义任何两个终结符号之间的优先关系设G是一个算符文法,a和b是任意两个非终结符,P、Q、R是非...

2019-12-11 16:36:22 2361

原创 最长公共子序列求解

问题描述求解两个序列的最长公共子序列,而且这里的子序列不要求是连续的。如string a = “abcdefg”, b = “adfbcdef”,那么最长公共子序列应该是abcdef。求解分析暴力法求解通过取得每个序列的所有子序列,如序列a有n个字符,那么就有2的n次方个子序列,因为对于每个字符来说,都可以选择或者不选择两个选项,所以按照排列(这里可能不太对,离散和概率论都有讲过,高中也...

2019-12-10 01:10:28 119

原创 最大连续的和——多种分析方法

问题对一个数组如{1,-1,3,-4, 5,10,-5, 11}分析,计算连续和最大的那一串是从哪里到哪里。比如上面这个就可以看到是5,10,-5,11.思路分析暴力求解暴力求解是对所有字串进行计算,最终求出最大的值。分治法分治法是这样的:对一串数组分成两部分,一般从最中间分解,那么这样的话,连续和最大可能有以下三种情况:1,只出现在左边2,只出现在右边3,包含分割点依照这个...

2019-12-09 01:11:45 129

原创 动态规划——0-1背包初探

0-1背包关于0-1背包问题,就不多简述了。有n件物品和一个容量为c的背包。第i件物品的重量是重量为w[i],价值是v[i]。已知对于一件物品必须选择取(用1表示)或者不取(用0表示),且每件物品只能被取一次(这就是“0-1”的含义)。求放置哪些物品进背包,可使这些物品的重量总和不超过背包容量,且价值总和最大。分析对于这个问题,其实也可以用回溯法去求解。对于这个问题的解析其实很多博客都写得...

2019-12-09 00:12:55 163

原创 快速排序

分析比如对{9, 2, 5 , 4,3,20, 10}进行快速排序。选择一个基点,一般就选择第一个,即9嘛。然后把比9小的放在9的左边,把比9大的都放在9的右边。然后再从最左边到9(不包含9)这一段重新进行快速排序(重新进行递归),从9(不包含9)到最后一个数这个段进行快速排序(重新进行递归)。源代码:#include <iostream>using namespace st...

2019-12-08 19:03:20 112

原创 8594 有重复元素的排列问题

前言对一个可能有重复字符的字符串进行全排列,输出所有不同字符串和最终的排序次数。分析假如只是叫你求全排列,该怎么写?参考回溯法,看一下这篇之前写的博文。下面这块代码是全排列的:#include <iostream>using namespace std;char s[100];int number;void Perm(char str[], int low, ...

2019-12-07 20:35:05 245

原创 贪心算法——活动安排问题、背包问题、多机调度问题

前言贪心算法,总是做出在当前看来时最好的选择。活动安排问题给出多个活动的开始时间和结束时间,每个活动都要占用相同的资源,求最大的活动安排。解析给出两个数组:开始时间s和结束时间 j。并对 j 进行递增排列,这个时候s也是要变化的。其实这里也可以用结构体吧,这样在排列的时候更加友好一点,当然这是数据结构的问题了。然后结束时间最早的就可以当作第一个任务,后面从第二个最早结束时间开始,要是第...

2019-12-05 17:16:49 595

原创 编译原理期末总结

语言发展机器语言——汇编语言——高级语言汇编:将汇编语言翻译成机器语言的过程编译:将高级语言翻译成汇编或者机器语言的过程编译阶段词法分析从左向右逐行扫描程序的字符,识别出各个字符,确定单词的类型。每个单词表示如下:token:<种别码, 属性值>一词一码表示的是每个单词都有一个种别码,而属性值不用定义,多词一码表示共用一个种别码,但是要给出属性值,而且属性值是不...

2019-12-04 09:00:16 2046

原创 回溯法搜索排列数

排列数排列数:举个例子,1, 2, 3的排列数就是:3 1 23 2 11 3 21 2 32 1 32 3 1那么如何得到这个排列数呢?看这个回溯法搜索排列数框架:void Backtrack(int t) { if (t > n) { output(); } else { for (int i = t; i <= n; i++) { Swap(...

2019-12-03 20:56:42 549

前端游戏小项目html+css+js.zip

一个前端小游戏的项目,由html、css和JavaScript编写而成,非常适合初学者!

2019-10-06

空空如也

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

TA关注的人

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