自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 docker容器分层

容器分层技术容器分层Dockerfiledockerfile语法nginx与redis镜像分析可以看到nginx和redis的镜像的第一层均是一致的,对应base镜像。## Nginx Dockerfile## https://github.com/dockerfile/nginx## Pull base image.FROM dockerfile/ubuntu# Install Nginx.RUN \ add-apt-repository -y ppa:nginx/s

2021-07-01 11:24:46 724

原创 Go语言文章合集

接口new()和make()的区别

2021-06-22 10:19:52 197

原创 将原有前后端项目拆解到k8s集群中部署

docker镜像的管理docker镜像的拉取,修改,导出,导入#复制文件到容器中,dist为前端项目目录docker cp dist f6c41cd6c103:/usr/share/nginx/html#将修改后的容器保存并发送到node节点中docker save f6c41cd6c103> /my-nginx-v1.tarscp /my-nginx-v1.tar nodeIp:/#在node中导入镜像docker load </my-nginx-v1.tark8s中p

2021-05-12 15:52:20 377

原创 LATEX使用经验总结

编写指南公式使用指南如何插入图片图片相关参数调整如何编写表格参考文献管理BibTex使用方式这里我们主要使用bib文件来管理latex的参考文献。接下来我们以SPACF: A Secure Privacy-Preserving Authentication Scheme for VANET With Cuckoo Filter 这篇文章为例。首先,需要建立一个bib格式的文件,这里可以随便新建一个txt文件后,修改文件后缀名即可,将文章放在与tex文件的同一目录下。随后,使用检索引擎(IE

2021-05-01 11:32:29 232

原创 Jpbc库使用指南

jpbc的安装jpbc库封装成了jar包形式,只需要在新建的Java项目之中引用jar包即可使用,引用jar可以根据如下经验: eclipse导入jar包IDEA导入jar包Jpbc库下载基本概念jpbc库是使用Java语言对双线性映射进行实现的一种方式,使用过程之中主要需要了解域(Field)、元素(Element)、元素所属于的域、元素之间的操作及元素之间运算结果所在的域。在编写程序之前,需要了解清楚方案之中每个元素的所属的域,简单理解,域规定了元素的类型,如果元素类型不正确,运算将会无意.

2021-05-01 11:07:55 7495 3

原创 k8s基础

需要厘清的概念PodNamespaceServiceLabelRepilcation Controller

2021-04-30 10:38:07 109

原创 es原理文章

es加速搜索的原理es基本概念与基于RESTful api 的 CRUD操作es和lucene index(倒排索引)倒排索引倒排索引原理

2021-03-10 10:14:21 78

原创 后端通知实现方式

设计模式和HTTP的区别HTTP是基于Client/Server模式的,CS模式下的后端所以操作均时被动的和同步的,这也是基于HTTP请求是无法实现真正的后端主动通知前端的原因所在。所以要真正思路主动通知,则需要放弃CS模式,实现真正的全双工通信。此时是事件驱动的异步通信。轮询的实现方式AJAX轮询(Long poll)本质上仍然是基于CS模式的,后端仍然无法主动通知前端,实现基本思路就是前端(client)定时发送HTTP请求询问后端有无消息。WebsocketWebSocket 是 HTM

2021-03-03 19:34:05 2239 2

原创 Django异步任务组件celery

什么是异步任务后端接口接收到用户信息变更数据 -> 往数据库的2张表中写入该用户的数据。正常运行顺序为:先写入表1 -> 再写入表2 -> 给用户返回信息更改成功的提示先写入表1、再写入表2,相当于同一时间内,只做了一件事情。异步运行顺序为:写入表1的同时,也在写入表2 -> 给用户返回信息更改成功的提示写入表1的同时写入表2,相当于同一时间内,做了两件事情。在服务器资源允许的情况下,异步运行可以提高接口的运行速度,更快地给用户返回结果,减少等待时间。什么是celery

2021-02-09 10:44:26 166

原创 Restful api和django

什么是RESTFULRepresentational State Transfer的缩写,翻译是"表现层状态转化"。如果客户端想要操作服务器,必须通过某种手段,让服务器端发生"状态转化"(State Transfer)。而这种转化是建立在表现层之上的,所以就是"表现层状态转化"。客户端用到的手段,只能是HTTP协议。具体来说,就是HTTP协议里面,四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),P

2021-02-01 17:44:36 169

原创 前后端分离之中的vue前端

VUE页面的生命周期与数据加载时机Json对象的处理Json对象通常是字典数组,遍历得到属性 getDocumentList().then(response =>{ for (var i= 0;i<response.data.length;i++){ document.append(response.data[i]["fields"]); } });...

2021-01-21 12:03:49 187

原创 前端布局

盒子模型Margin(外边距) - 清除边框外的区域,外边距是透明的。Border(边框) - 围绕在内边距和内容外的边框。Padding(内边距) - 清除内容周围的区域,内边距是透明的。Content(内容) - 盒子的内容,显示文本和图像常用前端布局静态布局,以px标定元素流式布局,以百分比标定元素浮动布局,以float让元素进行滑动Flex布局,基于CSS3布局类型及其特点面向PC端常用的静态布局静态布局三栏水平布局主要包括Flex布局,双飞翼布局,圣杯布局圣

2021-01-13 19:44:38 72

原创 Django开发部署

Django安装教程Django模型操作在setting.py中设置数据库连接信息,并注册APPDATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'test_DB', 'HOST': '127.0.0.1', 'PORT': 3306, 'USER': 'root', 'PASSWORD':

2021-01-13 19:07:01 126

原创 shell脚本知识整理

if条件单个if条件if [ $? == 0 ]if [ -d /tmp] if [ $[num] -gt 3 ]多个条件if [ -f /etc/rc.d/rc.local ] || [ -f /etc/init.d/rc.local ] ;for循环以及while循环for user in $userlistfor((i=1;i<=100;i++))while [ 1 ]do if [ condition ] then breakdone字符串和数字

2021-01-12 10:11:37 81

原创 前后端分离之中的django后台

跨域由于前后端进行了分离,故而ajax请求最后目的地并不和后台一致,所以我们需要解决请求跨域的问题,主要通过cors来解决,配置如下:跨域配置cors原理有状态的http主要使用cookies解决,登录成功则设置一个token表示用户成功,同时为了后续查询加速,可以在cookies之中加入一个username方便查询,可以看到token和username是我们设置的,csrftoken则是自动生成的字段。使用则通过python之中设置,亦可通过前端进行设置,但前提是一定要打开settings.p

2021-01-01 22:00:10 178

原创 Vue初步

Vue安装cnpm install vue# 全局安装 vue-cli$ cnpm install --global vue-cli# 创建一个基于 webpack 模板的新项目$ vue init webpack my-project# 这里需要进行一些配置,默认回车即可This will install Vue 2.x version of the template.For Vue 1.x use: vue init webpack#1.0 my-project? Project

2020-12-28 22:07:30 122

原创 SSH和SSHD基本区别

系统中的ssh与sshd服务概念简介openssh在主机中开启了openssh服务,那么就对外开放了远zhuan程连接的接口openssh的服务端:sshdopenssh的客shu户端:sshssh———— >sshdclient      serversshssh= secure shell可以让远程主机通过网络访问sshd服务,开始一个安全shell,并对其进行操控一起学习linuxsshd可以通过网络在主机中开启shell的服务...

2020-12-11 10:20:40 6313

原创 centos相应软件安装笔记

mysql安装教程nginx安装教程Apache安装教程php安装zookeeper安装教程kafka安装教程

2020-12-09 09:57:16 66

原创 DNS服务基础与搭建

DNS域名服务器体系顶级域名是域名的最后一个部分,即是域名最后一点之后的字母,例如在http://example.com这个域名中,顶级域是.com(或.COM),大小写视为相同。二级域名是域名的倒数第二个部分,例如在http://example.com这个域名中,二级域名是example。以此类推。根据上图大致分为四个层次的域名服务器根域名服务器 :最高层次的域名服务器(就好像国家总理一样),也是最重要的域名服务器。全球有13个根域名服务器名称,分别是(它们是按照字母排列命名的)顶级域名服务

2020-12-08 10:22:56 107

原创 nginx配置过程的笔记

配置stub模块进入/usr/local/nginx/conf文件下,修改nginx.conf的默认文件添加 location /mystatus { stub_status on; }然后测试配置文件是否有语法错误/usr/loacl/nginx/sbin/nginx -t随后重新使用nginx加在配置文件即可:/usr/loacl/nginx/sbin/nginx -s reload解决nginx配置php过程之中的HTML可

2020-12-07 19:03:46 72

原创 Bash启动流程及相关环境变量

shell分类及基本启动流程login shell 和 no-login shell“login shell” 代表用户登入, 比如使用 “su -“ 命令, 或者用 ssh 连接到某一个服务器上, 都会使用该用户默认 shell 启动 login shell 模式.该模式下的 shell 会去自动执行 /etc/profile 和 ~/.profile 文件, 但不会执行任何的 bashrc 文件, 所以一般再 /etc/profile 或者 ~/.profile 里我们会手动去 source b

2020-12-04 10:37:24 408

原创 软件安装与源码编译

源码编译过程gcc编写源码过程略过,其他过程如下:1) gcc -c source targetname(这步是编译)gcc -c 源码2)(如果有调用其他函数才需要,这步是链接) gcc -o 生成文件名 需要链接的.o文件1 需要链接的.o文件23)./生成文件名执行makemake 有这些好处:简化编译时所需要下达的指令;若在编译完成之后,修改了某个原始码文件,则 make 仅会针对被修改了的文件进行编译,其他的 object file不会被更动;最后可以依照相依性来更新 (u

2020-12-03 10:43:56 343

原创 Linux启动流程,模块管理和loader

启动流程分析开机流程:加载 BIOS 的硬件信息与进行自我测试,并依据设定取得第一个可开机的装置;读取并执行第一个开机装置内 MBR 的 boot Loader (亦即是 grub2, spfdisk 等程序);依据 boot loader 的设定加载 Kernel ,Kernel 会开始侦测硬件与加载驱动程序;在硬件驱动成功后,Kernel 会主动呼叫 systemd 程序,并以 default.target 流程开机;4.1 systemd 执行 sysinit.target 初始化系统

2020-12-02 20:06:02 355

原创 Linux日志分析基本过程

日志分析一般来说,系统产生的讯息经过记录下来的数据中,每条讯息均会记录底下的几个重要数据:事件发生的日期与时间;发生此事件的主机名;启动此事件的服务名称 (如 systemd, CROND 等) 或指令与函式名称 (如 su, login…);该讯息的实际数据内容。以/var/log/cron为例rsyslogd 针对各种服务与讯息记录在某些文件的配置文件就是 /etc/rsyslog.conf, 这个文件规定了(1)服务类别(2)等级信息 (3)需要被记录在哪里(设备或者文件).

2020-12-01 19:53:24 2363

原创 centos系统服务以及6和7的区别

系统服务daemon利用systemctl命令来控制服务,systemctl [command] [unit]command 主要有:start:立刻启动后面接的 unit。stop:立刻关闭后面接的 unit。restart:立刻关闭后启动后面接的 unit,亦即执行 stop 再 start 的意思。reload:不关闭 unit 的情况下,重新载入配置文件,让设置生效。enable:设置下次开机时,后面接的 unit 会被启动。disable:设置下次开机时,后面接的 unit 不会被

2020-12-01 10:55:03 292

原创 Linux进程管理以及常用系统信息查看命令

进程管理查看进程用的ps命令,特殊的,使用ps -l来查看自己的bash进程,ps aux查看所有进程F(flag) 表示进程权限,4为rootSTAT 进程状态,用下面的代码中的一个给出:D 不可中断 Uninterruptible sleep (usually IO)R 正在运行,或在队列中的进程S 处于休眠状态T 停止或被追踪Z 僵尸进程W 进入内存交换(从内核2.6开始无效)X 死掉的进程< 高优先级N

2020-12-01 10:54:51 528

原创 Linux笔记第三部分

1 账号管理和ACL权限设置/etc/passwd中存储了用户信息,/etc/shadow中存储了密码的hash结果。/etc/passwd中的GID指的是初始用户组,即用户登录系统就会拥有这个用户组的相关权限有效用户组指的是touch一个新文件时,生成文件的所以组,可以通过groups命令查看,第一个即为有效用户组,使用newgrp 用户组名切换有效用户组useradd -g group username 往groups里添加username,这里可以使用参数-s /sbin/nologin限制用

2020-11-27 10:14:38 67

原创 Linux第二部分笔记

1 Linux磁盘和文件系统管理几个概念inode,superblock,数据区块Linux的ext2文件系统(日志式文件系统),以及xfs系统2 文件系统的简单操作df查看文件系统整体磁盘使用量du查看文件系统磁盘使用量区分两个概念,硬连接和符号连接3 磁盘分区fdisk [设备名],然后输入n,first block 默认,last block输入+100M(实例),w保存退出,partprobe刷新内核。...

2020-11-20 09:41:38 178

原创 linux笔记第一部分

1 Linux的特点开源系统,可以自由传播,目前后台服务端绝大部分都是linux程序运行平台,主要是因为以下几点:是开放源代码的,可自由修改兼容Unix系统,具备Unix的优秀特性可自由传播,无任何商业限制适合Intel这类x86CPU的系统架构的计算机(个人PC和简单的服务器)Unix的优秀特性:可靠性极高,很少需要重启极强的可伸缩性,支持架构多强大的网络功能,其中TCP/IP是在unix上诞生和发展的强大的数据库支持能力,例如oracle和DB2强大的开发功能2...

2020-11-10 21:53:38 155

原创 Java多线程问题合集之volatile

1 volatile的作用可见性:当一个变量被volatile修饰时,那么对它的修改会立刻刷新到主内存,在刷新主内存时使用汇编指令Lock,避免未完成写操作时就被其他线程读取。总线会通知所有CPU放弃工作内存中的值。当其它线程再次需要使用该变量时,会去主内存中读取新值。而普通变量则不能保证立即去读取主内存新值,而且会有很长时间的延迟。其实通过synchronized和Lock也能够保证可见性,线程在释放锁之前,会把共享变量值都刷回主存。取锁时会从主内存取值。但是synchronized和Lock会挂起线程

2020-08-10 10:03:34 146

原创 ConcurrentHashMap源码同步功能分析

1 ConcurrentHashMap的基本架构和关键方法基本架构与HashMap一致,留出来的api也是,屏蔽了内部实现的复杂细节,主要的get,put方法是首先要看的,然后深入了是对应HashMap的扩容机制的tranfer方法,这个参见ConcurrentHashMap之transfer方法源码,桶槽等基本概念不再赘述,HashMap的扩容机制详解见HashMap扩容机制源码2 操作的API get和put方法的同步机制get方法作为读操作,Doug Lee大神在设计时并未给get方法加锁,基本

2020-08-10 10:02:43 365

原创 Java多线程问题合集之synchronized

synchronized适应场景:synchronized关键字可以时间一个简单的策略来防止线程干扰和内存一致性错误,如果一个对象是对多个线程可见的,那么对该对想的所有读写都将通过同步的方式来进行。简单理解就是加锁。主要分两种情况对象锁:普通同步方法(实例方法),锁是当前实例对象 ,进入同步代码前要获得当前实例的锁;同步方法块,锁是括号里面的对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁。本质仍然是因为static的属性和方法并不属于对象,而是属于类本身。类锁(.class对象):静态同.

2020-08-09 10:32:37 95

原创 线程池剩余逻辑扫荡

1. 线程池的状态RUNNING(1) 状态说明:线程池处在RUNNING状态时,能够接收新任务,以及对已添加的任务进行处理。(02) 状态切换:线程池的初始化状态是RUNNING。换句话说,线程池被一旦被创建,就处于RUNNING状态,并且线程池中的任务数为0!SHUTDOWN(1) 状态说明:线程池处在SHUTDOWN状态时,不接收新任务,但能处理已添加的任务。(2) 状态切换:调用线程池的shutdown()接口时,线程池由RUNNING -> SHUTDOWN。STOP(1)

2020-07-28 09:21:47 127

原创 Java线程池的使用和源码

1.为什么使用线程池线程池,本质上是一种对象池,用于管理线程资源。在任务执行前,需要从线程池中拿出线程来执行。在任务执行完成之后,需要把线程放回线程池。通过线程的这种反复利用机制,可以有效地避免直接创建线程所带来的坏处。2.示例 public static void main(String[] args) { //创建线程池 ExecutorService newCachedThreadPool = Executors.newCachedThreadPool();

2020-07-27 20:12:44 109

转载 ConcurrentHashMap之transfer方法源码

原文链接首先说结论。源码加注释我会放在后面。该方法的执行逻辑如下:通过计算 CPU 核心数和 Map 数组的长度得到每个线程(CPU)要帮助处理多少个桶,并且这里每个线程处理都是平均的。默认每个线程处理 16 个桶。因此,如果长度是 16 的时候,扩容的时候只会有一个线程扩容。初始化临时变量 nextTable。将其在原有基础上扩容两倍。死循环开始转移。多线程并发转移就是在这个死循环中,根据一个 finishing 变量来判断,该变量为 true 表示扩容结束,否则继续扩容。3.1

2020-07-16 19:58:26 530

原创 HashMap扩容机制源码

1.三个问题:为什么HashMap的容量一定是2n2^n2nHashMap中的hash函数具体是怎么实现的resize函数2.HashMap如何存储数据的首先要说的是HashMap是利用拉链法来存储,代码如下 /** * The table, initialized on first use, and resized as * necessary. When allocated, length is always a power of two. * (We

2020-07-16 18:27:00 366 1

原创 LC第192场周赛,被二分和acm板子题暴打的一天

1.一维数组的动态和1.一维数组的动态和送分题,前缀和。2.不同整数的最少数目 2.不同整数的最少数目思路:统计频次,然后对频次排序,贪心的去减少频次最低的,直到减完 public int findLeastNumOfUniqueInts(int[] arr, int k) { Map<Integer,Integer> map = new HashMap<>(); for(int i=0;i<arr.length;i++){

2020-06-14 16:36:48 205 1

原创 lc周赛被LinkedList坑了以后来分析一下LinkedList和ArrayList的区分

1.结论面向较多数据的增删则使用LinkedList,大量的访问则使用ArrayList,否则可能tle。如果LinkedList的话可能会让复杂度过高。2.LinkedList的crud首先,顾名思义,LinkedList是通过node类来存储数据的: private static class Node<E> { E item; Node<E> next; Node<E> prev; Nod

2020-06-14 16:24:23 176

原创 codeforces round 648 div2

1.Matrix Game题意:1是已经占据的位置,0是未占据的,两个玩家在开始后来回占据,每占据一个0之后,该行和该列均不可以再被选取。思路:由于占据了以后该行该列均不再可以被占据,所以我们要找出来有多少个满足该要求的点,每找到一个把该行和列占据,该类点数为偶数时后手赢,否则先手赢。#include<iostream>#include<bits/stdc++.h>using namespace std;#define pi 3.1415926535898#define

2020-06-10 10:50:15 97

原创 LeetCode周赛涂房子

1.重新排列数组1.重新排列数组很简单,把数组分别插入一个新数组就行,cpp的vector使用push_back方法更简单。 public int[] shuffle(int[] nums, int n) { int[] res = new int[2*n]; for(int i=0;i<2*n;i+=2){ res[i]=nums[i/2]; res[i+1]=nums[i/2+n]; }

2020-06-08 08:59:30 195

空空如也

空空如也

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

TA关注的人

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