Python从入门到进阶
认识Python推荐学习视频传送门:求知讲堂2020python+人工智能 99天完整版
环境与解释器IDE 里如果报下面这类错误:
Cannot set up a python SDK at Python 3.7 ... The SDK seems invalid
优先排查这几项:
1、当前配置的 python.exe 路径是不是已经失效
2、Anaconda 或虚拟环境是不是被移动、删除、重装过
3、IDE 里的解释器是不是选到了错误的 base 环境
4、删掉当前解释器配置后,重新指定一次真实存在的 python.exe
这类问题本质上通常不是代码问题,而是解释器路径、环境元数据或者 IDE 缓存不一致。
第一个main函数12345def print_hi(name): print(f'Hi, {name}') # Press ⌘F8 to toggle the breakpoint.if __name__ == '__main__': print_hi('PyCharm ...
SpringBoot工程实践
配置命名规范
多个单词分隔符用杠 -
RequestParam、PathVariable等注解区别@RequestParam 和 @PathVariable 注解是用于从request中接收请求的,两个都可以接收参数,关键点不同的是@RequestParam 是从request里面拿取值,而 @PathVariable 是从一个URI模板里面来填充
@RequestParamhttp://localhost:8080/user/getUser?postId=14523,根据上面的这个URL,会从request中获取 post_id 的值,然后赋值给别名 postId
123public User getUser(@RequestParam(value="post_id", required=false) String postId){...}
@RequestParam 支持下面四种参数:
defaultValue 如果本次请求没有携带这个参数,或者参数为空,那么就会启用默认值
name 绑定本次参数的名称,要跟URL上面的一样
re ...
Nacos服务
基本概念(1)Nacos 是阿里巴巴推出来的一个新开源项目,是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您 快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
(2)常见的注册中心:
Eureka(原生,2.0遇到性能瓶颈,停止维护)
Zookeeper(支持,专业的独立产品。例如:dubbo)
Consul(原生,GO语言开发)
Nacos
12345相对于 Spring Cloud Eureka 来说,Nacos 更强大。Nacos = Spring Cloud Eureka + Spring Cloud ConfigNacos 可以与 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, Spring Cloud Conf ...
Springboot使用Websockt
概述Websocket通常,应用层协议都是完全基于网络层协议TCP/UDP来实现,例如HTTP、SMTP、POP3,而Websocket是同时基于HTTP与TCP来实现:
先用带有 Upgrade:Websocket头Header的特殊HTTP request来实现与服务端握手HandShake;
握手成功后,协议升级成Websocket,进行长连接通讯;
整个过程可理解为:小锤抠缝,大锤搞定。
为什么不使用HTTP长连接来实现即时通讯?事实上,在Websocket之前就是使用HTTP长连接这种方式,如Comet。但是它有如下弊端:
HTTP 1.1 规范中规定,客户端不应该与服务器端建立超过两个的 HTTP 连接, 新的连接会被阻塞。
对于服务端来说,每个长连接都占有一个用户线程,在NIO或者异步编程之前,服务端开销太大。
为什么不直接使用Socket编程,基于TCP直接保持长连接,实现即时通讯?
Socket编程针对C/S模式的,而浏览器是B/S模式,浏览器没法发起Socket请求,正因如此, W3C最后还是给出了浏览器的Sock ...
Springboot整合RabbitMQ
基本介绍MQ全称为Message Queue,消息队列是应用程序和应用程序之间的通信方法。
AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。更准确的说是一种binary wire-level protocol(链接协议)。这是其和JMS的本质差别,AMQP不从API层进行限定,而是直接定义网络交换的数据格式。
RabbitMQ是一个 Erlang 开发的AMQP(Advanced Message Queuing Protocol )的开源实现。
RabbitMQ安装和基本配置1、安装RabbitMQ服务
1docker pull rabbitmq:3-management //注意docker pull rabbitmq如果安装这个是后面不能访问管理网页的
2、查看安装的RabbitMQ的镜像id
1docker images
3、启动RabbitMQ
1docker run -d -p 5672:5672 -p 15672:15672 - ...
Java数据结构与算法
学习总结:尚硅谷2019Java数据结构和算法
线性结构和非线性结构
线性结构
是一个有序数据元素的集合。 其中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。
常用的线性结构有:线性表,栈,队列,双队列,数组,串。
特点:
1.集合中必存在唯一的一个”第一个元素”;
2.集合中必存在唯一的一个”最后的元素”;
3.除最后元素之外,其它数据元素均有唯一的”后继”;
4.除第一元素之外,其它数据元素均有唯一的”前驱”。
5.数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构。
非线性结构
各个数据元素不再保持在一个线性序列中,每个数据元素可能与零个或者多个其他数据元素发生联系。
根据关系的不同,可分为层次结构和群结构。
常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树等)。(其中多维数组是由多个一维数组组成的,所以不再是线性结构)
特点:
非线性结构的逻辑特征是一个结点元素可能对应多个直接前驱和多个后继
稀疏数组和队列稀疏数组
稀疏数组介绍
图示
应用实例
代码实现
...
线程池
获取多线程的方法,我们都知道有三种,还有一种是实现Callable接口
实现Runnable接口
实现Callable接口
实例化Thread类
使用线程池获取
Callable接口Callable接口,是一种让线程执行完成后,能够返回结果的
在说到Callable接口的时候,我们不得不提到Runnable接口
12345678910/** * 实现Runnable接口 */class MyThread implements Runnable { @Override public void run() { }}
我们知道,实现Runnable接口的时候,需要重写run方法,也就是线程在启动的时候,会自动调用的方法
同理,我们实现Callable接口,也需要实现call方法,但是这个时候我们还需要有返回值,这个Callable接口的应用场景一般就在于批处理业务,比如转账的时候,需要给一会返回结果的状态码回来,代表本次操作成功还是失败
12345678910111213/** * Callable有返回值 * 批量处 ...
Mac微信双开
在桌面创建 wechat.sh 脚本文件,脚本内容如下
12#!/bin/bashnohup /Applications/WeChat.app/Contents/MacOS/WeChat > /dev/null 2>&1 &
打开终端,修改脚本权限
123456789101112131415161718cd ~/Desktop/ sudo chmod 777 wechat.sh```sabc<img src="/images/Mac%E5%BE%AE%E4%BF%A1%E5%8F%8C%E5%BC%80/IMG_6125-2.jpg" width="33%"/>d */public class SingletonDemo1 { public static void main(String[] args) { Singleton instance1 = Singleton.getInstance(); Singleton instance2 = Singleton.getInstance(); System.out.println(instance1 == instance2); }}class Singleton { // 1.构造器私有化,不允许外部实例化 private Singleton() { } // 2.本类内部创建对象实例 private final static Singleton ...
布隆过滤器
1、核心代码
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576public class SimpleBloomFilter { private static Logger logger = LoggerFactory.getLogger(SimpleBloomFilter.class); private static final List<Integer> SEEDS = Arrays.asList(7, 11, 13, 31, 37, 61, 67); private int defaultSize; private List<SimpleHash> functions; private BitSet bits; public static SimpleBloomFilt ...



