Other

二维数组查找

二维数组查找 class Solution(): def chazhao2d(self, arr, m, n, p, q, tar) -> int: if n >= m or q >= p: mid_row = int(m + (n-m)/2) mid_col = int(p + (q-p)/2) if arr[mid_row][mid_col] == tar: return (mid_row,mid_col) elif arr[mid_row][mid_col] > x: return Solution.chazhao2d(self,arr, m, mid_row-1, p, q, x) or Solution.chazhao2d(self,arr, mid_row, n, p, mid_col-1, x) else: return Solution.chazhao2d(self,arr, mid_row + 1,n, p, q, x) or Solution.chazhao2d(self,arr, m, mid_row, mid_col + 1, q, x) return (-1,-1) if __name__ == '__main__': # print(bool([] or 2)) # 1 # print([] or 2) # 2 s = Solution() tar = int(input()) M, N = tuple(map(int,input().

二分查找

二分查找 # -*- coding: utf-8 -*- # @Time : 2022/3/28 15:20 # @Author : chuqianyu # @FileName: 二分查找2.py # @Software: PyCharm # @Blog :https://home.cnblogs.com/u/chuqianyu class Solution: def search(self, nums: list, target: int) -> int: # write code here # binarySearch kk = Solution.binarySearch(self, nums, 0, len(nums) - 1, target) return kk # 暴力求解 # for i in range(len(nums)): # if target == nums[i]: # return i # else: # return -1 # binarySearch def binarySearch(self, arr, m, n, x): # m,n为下标,所以n = len(arr)-1 if n >= m: mid = m + ((n - m) >>1) # 等效为 mid = int(m + (n-m)/2) #int为向下取整 if arr[mid] == x: return mid elif arr[mid] > x: return Solution.

java多线程基础

一、进程、线程、协程的概念 进程: 是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。 线程: 是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。 协程: 是一种比线程更加轻量级的存在。一个线程也可以拥有多个协程。其执行过程更类似于子例程,或者说不带返回值的函数调用。 二、进程和线程的区别 地址空间: 线程共享本进程的地址空间,而进程之间是独立的地址空间。 资源: 线程共享本进程的资源如内存、I/O、cpu等,不利于资源的管理和保护,而进程之间的资源是独立的,能很好的进行资源管理和保护。 健壮性: 多进程要比多线程健壮,一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。 执行过程: 每个独立的进程有一个程序运行的入口、顺序执行序列和程序入口,执行开销大。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制,执行开销小。 可并发性: 两者均可并发执行。 切换时: 进程切换时,消耗的资源大,效率高。所以涉及到频繁的切换时,使用线程要好于进程。同样如果要求同时进行并且又要共享某些变量的并发操作,只能用线程不能用进程。 其他: 线程是处理器调度的基本单位,但是进程不是。 三 线程的生命周期 新建状态: 使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建状态。它保持这个状态直到程序 start() 这个线程。 就绪状态: 当线程对象调用了start()方法之后,该线程就进入就绪状态。就绪状态的线程处于就绪队列中,要等待JVM里线程调度器的调度。 运行状态: 如果就绪状态的线程获取 CPU 资源,就可以执行 run(),此时线程便处于运行状态。处于运行状态的线程最为复杂,它可以变为阻塞状态、就绪状态和死亡状态。 阻塞状态: 如果一个线程执行了sleep(睡眠)、suspend(挂起)等方法,失去所占用资源之后,该线程就从运行状态进入阻塞状态。在睡眠时间已到或获得设备资源后可以重新进入就绪状态。可以分为三种:

无中间变量交接两变量值

无中间变量交接两变量值 class Solution: def jiaohuan(self, a, b): a = a ^ b b = a ^ b a = a ^ b return a, b if __name__ == __main__: s = Solution() a = 3 b = 107 t = s.jiaohuan(a, b) for i in range(len(t)): print(t[i], end= )

给nimble 设置代理 解决中国国内nimble安装nim库的问题

nimble是nim语言的包管理器 由于github被墙的原因,导致在使用nimble安装库的时候通常会失败无法安装. 命令行程序似乎并不理会v2rayN开启的系统代理,开了没有效果。 所以需要自己另外设置。 有三种设置代理的方法: 方法1: 参考 https://www.cnblogs.com/DarkMaster/p/7852893.html 给cmd设置代理:通过执行命令,临时设置环境变量 set http_proxy=http://127.0.0.1:1189 set https_proxy=http://127.0.0.1:1189 方法2: 根据方法1 以及阅读nimble的源代码,可以通过设置一个http_proxy环境变量指定代理. 方法3: 由于nimble是通过调用git从github下载库相关文件的,所以可以给git设置代理. 参考: Configure Git to use a proxy https://gist.github.com/evantoli/f8c23a37eb3558ab8765

MarkDown的基本语法

标题 使用 # 可表示 1~6 级标题 #一级标题 ##二级标题 ###三级标题 ####四级标题 #####五级标题 ######六级标题 效果: 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 文字修饰符 *倾斜* _倾斜_ **加粗** __加粗__ ~~删除线~~ _倾斜 **加粗并倾斜** 倾斜_ 效果: 倾斜 倾斜 加粗 加粗 删除线 倾斜 加粗并倾斜 倾斜 列表 无序列表 主要用 - 和 * 来标记无序列表 * 无序列表1# - 无序列表2# * 无序列表3# 效果: 无序列表1# 无序列表2# 无序列表3# 有序列表 1. 有序列表1# 1. 有序列表2# 1.

ALaunch 0.1 := 我的第一个生产力工具

ALaunch := 第一个生产力工具 使用说明: 拖动一个文件到格子上会固化为图标,点击图标即可启动;按 Alt+1 可呼出 ALaunch,如果此全局快捷键未被占用的话。 下载地址: ALaunch-0.1.7z 特性: v0.1 1. 新建启动:拖动文件或文件夹到格子,即可保存为图标;2. 删除启动:右键点击需删除的图标,点击清除;3. 点击启动:用鼠标左键单击图标和在系统中单击一致;4. 随时访问:点击窗口的最小化图标后,程序常驻到系统托盘区。 备注:如果你恰好了解SQLite,那么可以很容易修改 ALaunch 的配置,配置文件是 ALaunch.db,当 ALaunch 未启动时,可用 SQLite 客户端探索与修改。 2022-05-04  

ALaunch 0.2 := 添加全局快捷键

下载地址: ALaunch-0.2.7z v0.2 1. 增加 Alt + 1 全局快捷键;2. 只启动一次;2022-05-09 历史特性: ALaunch 0.1 := 我的第一个生产力工具  

SpringBoot 中filter在web容器中执行的顺序

1、调用 ServletWebServerApplicationContext.onStartup   2、获取所有的 ServletContextInitializer   3、initializers => 未排序的 Filter  4、sortedList => 排完序的Filter 5、实际循环的是排序后的Filter (sortedList)   误区:logMappings 打印的是initializers(非实际序列运行的Filter) 及开启web日志,出现【Mapping filters】开头的日志 logging: level: web: debug 2022-05-09 01:54:15.149 DEBUG [main] servlet.ServletContextInitializerBeans - Mapping filters: filterRegistrationBean urls=[/*] order=-2147483647, corsFilter urls=[/*] order=0, characterEncodingFilter urls=[/*] order=-2147483648, formContentFilter urls=[/*] order=-9900, requestContextFilter urls=[/*] order=-105, shiroFilter urls=[/*] order=2147483647 2022-05-09 01:54:15.149 DEBUG [main] servlet.ServletContextInitializerBeans - Mapping servlets: dispatcherServlet urls=[/]

QBrush

QBrush QBrush() QBrush(Qt::BrushStyle style) QBrush(const QColor &color, Qt::BrushStyle style = Qt::SolidPattern) QBrush(Qt::GlobalColor color, Qt::BrushStyle style = Qt::SolidPattern) QBrush(const QColor &color, const QPixmap &pixmap) QBrush(Qt::GlobalColor color, const QPixmap &pixmap) QBrush(const QPixmap &pixmap) QBrush(const QImage &image) QBrush(const QBrush &other) QBrush(const QGradient &gradient) ~QBrush() const QColor & color() const const QGradient * gradient() const bool isOpaque() const const QMatrix & matrix() const void setColor(const QColor &color) void setColor(Qt::GlobalColor color) void setMatrix(const QMatrix &matrix) void setStyle(Qt::BrushStyle style) void setTexture(const QPixmap &pixmap) void setTextureImage(const QImage &image) void setTransform(const QTransform &matrix) Qt::BrushStyle style() const void swap(QBrush &other) QPixmap texture() const QImage textureImage() const QTransform transform() const QVariant operator QVariant() const bool operator!