自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

蛾儿雪柳的博客

一起加油一起进步

  • 博客(20)
  • 问答 (3)
  • 收藏
  • 关注

原创 adb logcat过滤日志

adb获取日志的几种常用方法

2022-09-08 11:26:34 5835

原创 使用python对文件批量改名字

话不多说,直接上代码import osfolderName='./base/'flag=1dirList=os.listdir(folderName)for name in dirList: print(name) if flag==1: newName='test_'+name elif flag==2: index=len('test_') newName=name[index:] print(newNa

2022-05-05 17:24:45 541

原创 使用python完成文件的复制

话不多说,直接上代码oldFileName=input('请输入文件的名字')oldFile=open(oldFileName,'rb')filelast=oldFileName.rfind('.')if filelast>0: filelastname=oldFileName[filelast:]newFileName=oldFileName[:filelast]+'复件'+filelastnamenewFile=open(newFileName,'wb')for

2022-05-05 17:08:58 534

原创 学生信息管理系统的python实现

简单使用,直接上代码# 编写学生管理系统student_list=[]def show_menu(): print('-------------学生管理系统---------------') print('1.增加学生信息') print('2.修改学生信息') print('3.删除学生信息') print('4.查询学生信息') print('5.显示所有学生信息') print('6.退出')def add_student():

2022-05-05 16:15:22 226

原创 flask框架学习1.3

flask如何使用sqlite3进行数据库操作,首先我们创建一个数据表的建表语句在schema.sql文件中DROP TABLE IF EXISTS user;DROP TABLE IF EXISTS post;CREATE TABLE user ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT UNIQUE NOT NULL, password TEXT NOT NULL);CREATE TABLE post ( id

2022-04-26 14:56:48 968

原创 flask框架学习1.2

如何自定义消息闪烁有时候我们开发一个项目,希望这个项目能对用户有着良好的反馈,例如操作成功或者失败都有提示之类的,那么我么就可以使用消息闪烁。首先我们先实现一个简单后台登录逻辑from flask import Flask, flash, redirect, render_template, \ request, url_forapp = Flask(__name__)app.secret_key = b'ac0a4e7786422d4fba21384fc26d1eb467ca4110

2022-04-22 17:27:46 495

原创 falsk框架学习1.1

初始化模板from flask import Flaskapp = Flask(__name__)@app.route("/")def hello_world(): return "<p>Hello, World!</p>"from markupsafe import escape@app.route('/user/<username>')def show_user_profile(username): # show the user

2022-04-22 16:29:43 986

原创 python之装饰器如何使用

有时候我们希望在python在执行某些函数时能够自动添加一些操作在函数执行前后,但是如果需要修改的函数过多那么就很繁琐,因此需要使用python装饰器来进行修饰下面列举如何使用python装饰器我们需要在函数执行前后打印一句话,可以首先定义一个装饰器def log(func): def wrap(): print('here is prefix') func() print('here is suffix') return wrap然

2022-04-22 11:08:17 524 1

原创 ReentrantLock详解

ReentrantLock,可重入锁,是一种递归无阻塞的同步机制。它可以等同于synchronized的使用,但是ReentrantLock提供了比synchronized更强大、灵活的锁机制,可以减少死锁发生的概率。ReentrantLock还提供了公平锁和非公平锁的选择,构造方法接受一个可选的公平参数(默认非公平锁),当设置为true时,表示公平锁,否则为非公平锁。公平锁的效率往往没有非公平锁的效率高,在许多线程访问的情况下,公平锁表现出较低的吞吐量。查看ReentrantLock源码中的构造方法

2021-11-30 17:54:35 438

原创 JUC之锁的基本概念

hello,大家好,详细大家在学习的过程中对各种各样的锁的概念头疼不已,因此楼主今天将java中的锁总结一下供大家学习。1 互斥锁。在编程中,为了保证共享数据操作的完成性,引入互斥锁的概念。每个对象都对应于一个可称为“互斥”锁的标记,这个标记保证用来保证任意时刻只能有一个线程访问该对象的锁。2.阻塞锁阻塞锁,可以说是让线程进入阻塞状态进行等待,当获得相应的信号(唤醒,时间) 时,才可以进入线程的准备就绪状态,准备就绪状态的所有线程,通过竞争,进入运行状态。3.自旋锁自旋锁是采用让当前线程不停地的

2021-11-30 17:36:49 314

原创 详细剖析CAS顺便讲解Sychronized

前言:CAS,Compare And Swap,即比较并交换。同步组件中大量使用CAS技术实现了Java多线程的并发操作。整个AQS同步组件、Atomic原子类操作等等都是以CAS实现的,甚至ConcurrentHashMap在1.8的版本中也调整为了CAS+Synchronized。可以说CAS是整个JUC的基石。为此我们可以专门测试一下,首先写一行使用synchronized的代码接着我们将代码使用cmd命令行进行测试在cmd命令行执行javac编译和javap -c Java 字节码的指令

2021-11-28 22:01:34 813

原创 Netty

了解Netty之前我们先了解一下IO与NIO传统IO编程每个客户端连接过来后,服务端都会启动一个线程去处理该客户端的请求这样做在用户线程比较少的情况下是没有问题的,可是用户线程一旦多了,服务器就要承受成千万的的连接,压力大了故障频发例如:如果有一万个连接就要创建一个线程,会存在一下问题:1.当客户端越多就会创建越多的线程,线程是操作系统中非常宝贵的资源。同一时刻有大量线程阻塞(为什么会阻塞,因为线程如果是读操作,读不到数据就会一直阻塞在这里直到读到数据,这也是io编程的的一个特点)是非常严重

2021-11-26 23:26:22 306

原创 深度剖析Redis二

Redis事务生命周期:1.使用MULTI开启事务2.输入的操作命令进入队列3.EXEC命令提交事务4.watch命令监控,若有修改则事务不执行Redis常见的部署方式有哪些,原理是什么?1.单机版单机版我就不说了,安装配置就好2.Redis主从复制主从复制的原理:当启动一个从节点时,它会发送一个PSYNC命令给主节点,如果从节点是首次连接主节点,那么会触发一次全量复制,此时主节点会启动一个后台线程(以前Redis是单线程的,后面版本增加了fork子线程,但是核心任务仍然是单线程

2021-11-26 00:01:52 107

原创 Mybatis二级缓存

Mybatis缓存分为两层,第一层是sqlsession级别的缓存,默认是开启的且不能关闭,当在同一个sqlsession中进行相同sql语句的查询时,不会从数据库中去查,而是直接去缓存获取,一级缓存最多缓存1024条sql,二级缓存是指可以跨sqlsession的缓存,是mapper级别的缓存,可以多个sqlsession共享。Mybatis一级缓存实现原理第一次发出一个查询 sql,sql 查询结果写入 sqlsession 的一级缓存中,缓存使用的数据结构是一个 map。key:MapperI

2021-11-04 19:43:26 134

原创 浅谈ThreadLocal

ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,ThreadLocal 的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度ThreadLocalMap(线程的一个属性)每个线程内部都有一个自己的ThreadMap类型的成员变量,名字叫做ThreadLocals,它存储的是一个个Entry对象,这个Entry继承了WeakReference<ThreadLocal<?>>,,一

2021-11-03 23:28:57 137

原创 Redis核心知识点1

一.Redis的五种数据类型Redis 支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zsetsorted set:有序集合)二.Redis有什么优势?我们为什么要是用Redis?(1)速度快,因为数据存在内存中,类似于 HashMap,HashMap 的优势就是查找和操作的时间复杂度都是 O(1) (2)支持丰富数据类型,支持 string,list,set,Zset,hash 等 (3)支持事务,操作都是原子性,所谓的原子性就是对数据的更改

2021-11-01 17:15:48 118

原创 冒泡,快速,插入排序算法java简单实现

笔者在学习排序算法时经常是算法原理懂了但是不会实现,网上的许多实现过程要么太过于复杂,要么多次定义方法还递归,让人掌握起来double困难,鉴于此,笔者决定将几种常见算法的简单实现送给大家,希望对大家掌握算法能有一些帮助!冒泡排序/*(1)比较前后相邻的二个数据,如果前面数据大于后面的数据,就将这二个数据交换。(2)这样对数组的第 0 个数据到 N-1 个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1 个位置。(3)N=N-1,如果 N 不为 0 就重复前面二步,否则排序完成。*/p

2021-11-01 16:32:18 91

原创 面试必问线程池

一.什么是线程池线程池就是用来管理线程的的一种工具,它是为了降低系统资源消耗,提高系统稳定性而设计的一种工具。二.线程池有什么好处1.降低资源消耗。通过重复利用已创建的线程,降低线程创建和销毁造成的消耗。2.提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。3.增加线程的可管理型。线程是稀缺资源,使用线程池可以进行统一分配,调优和监控。三.线程池的原理线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量

2021-10-31 21:30:21 202

原创 GC垃圾收集器

java堆内存主要划分为新生代和老年代,新生代主要使用复制和标记清除垃圾回收算法,老年代使用标记整理垃圾回收算法,因此java虚拟机针对新生代和老年代分别提供了许多不同的垃圾收集器,1.Serial 垃圾收集器(单线程、复制算法) Serial(英文连续)是最基本垃圾收集器,使用复制算法,曾经是JDK1.3.1 之前新生代唯一的垃圾收集器。Serial 是一个单线程的收集器,它不但只会使用一个 CPU 或一条线程去完成垃圾收集工作,并且在进行垃圾收集的同时,必须暂停其他所有的工作线程,直

2021-10-31 19:57:52 66

原创 1.1.1并发编程之线程(Thread)

方法名 static 功能说明 注意要点 start() 启动一个新线程,在新的线程中运行run方法 start()只是让线程进入就绪状态,能否运行取决于cpu时间片什么时候分配给这个线程,只能调用一次,多次调用会报异常 IllegalThreadStateException run() 新线程启动后调用的业务逻辑代码 可以通过Thread调用Runnable参数实现Runnable的run方法,也可以创建Thread子类来覆盖

2021-10-29 23:43:01 148

空空如也

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

TA关注的人

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