解决Anaconda更换源出现python Collecting package metadata (current_repodata.json): failed
## 前言 在往上搜索了一些文章,Windows安装多个版本Python真的是太麻烦了。所以才有了以下的行为 本质Anaconda是虚拟环境 同类产品还有Virtualenv,Pipenv等 他们在 `Pycharm`Python解析器管理 上都是受到支持的(Docker WSL这种排除)~ 然后就遇到标题的问题,以下前面部分只是保证你~~基本安装是否操作正确~~,如果确保没问题,可以直接进度条滑到最后 ## 下载安装包 - Anaconda > Anaconda 是一个用于科学计算的 Python 发行版,支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的 Python 包。 一般用来多环境准备~ Anaconda 安装包可以到 [https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/](https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/) 下载。 - Miniconda >Miniconda 是一个 Anaconda 的轻量级替代,默认只包含了 python 和 conda,但是可以通过 pip 和 conda 来安装所需要的包。 Miniconda 安装包可以到 [https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/](https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/) 下载。 下载地址按照自己要求下载即可,官网下载也可以 ~~请自备科学上网~~ ## 安装向导安装 贴这个一个就够了,到高级设置这一步的时候,记得勾选第一项。默认是不勾选的~ ![wfion.cn](https://i.loli.net/2021/07/17/SphcF4XnUtsbqiA.png) ## 配置国内源 (坑点) 网上教程走完以后,感觉非常简单,但是使用的时候就会报错`python Collecting package metadata (current_repodata.json): failed` 其他教程大部分让你装OpenSSL,然后给你个下载连接,然后安装的时候让你勾选到system32下面 (其实并没有这个选项) 然后就是怀疑人生阶段了~ 看环境变量里是可以访问到OpenSSL的。 这时后我们只需要放弃SSL 将配置换成下面的就可以了 ```yaml # FileName:.condarc # 不校验SSL证书 ssl_verify: false show_channel_urls: true channels: # 你用国内哪家源都可以 记得把https换成http - http://mirror.bjtu.edu.cn/anaconda/cloud/plotly/ - http://mirror.bjtu.edu.cn/anaconda/cloud/caffe2/ - http://mirror.bjtu.edu.cn/anaconda/cloud/Paddle/ - http://mirror.bjtu.edu.cn/anaconda/cloud/pytorch/ - http://mirror.bjtu.edu.cn/anaconda/cloud/msys2/ - http://mirror.bjtu.edu.cn/anaconda/cloud/bioconda/ - http://mirror.bjtu.edu.cn/anaconda/cloud/conda-forge/ - http://mirror.bjtu.edu.cn/anaconda/pkgs/main/ - http://mirror.bjtu.edu.cn/anaconda/pkgs/free/ auto_activate_base: false ```
解决Windows PowerShell无法激活Anaconda环境的问题
最近在使用Anaconda的过程中,发现在Windows的PowerShell在使用`conda activate 环境名`激活环境时无效,而CMD则可以。这里前提**必须将Anaconda 写入环境变量**。否则在PowerShell 输入conda 的任何命令都会无法识别。 首先在终端输入`conda --version`查看自己的anaconda版本。 [![](https://i.loli.net/2019/04/25/5cc16d86dc016.png)](https://i.loli.net/2019/04/25/5cc16d86dc016.png) ## Conda版本低于4.6 解决方法如下: - 用Win + X 组合键调出PowerShell 管理员模式; - 输入命令`conda install -n root -c pscondaenvs pscondaenvs`安装PSCondaEnvs包; - 输入命令`Set-ExecutionPolicy RemoteSigned`在出现选项后输入`Y`回车,更改PowerShell 的安全策略。 - 在PowerShell中激活和退出环境的命令分别为`activate 环境名`和`deactivate`,**注意:需要去掉原命令中开头的conda,否则也不会成功。** 这时问题应该解决了,结果如下: [![](https://i.loli.net/2019/03/24/5c9790a512fda.png)](https://i.loli.net/2019/03/24/5c9790a512fda.png) ## Conda版本大于等于4.6 解决方法如下: - 用Win + X 组合键调出PowerShell 管理员模式; - 输入命令`conda init powershell`; - 关闭当前powershell窗口,重新打开一个powershell窗口输入`conda activate 环境名`测试。 CMD 的话只需把上面三步中的powershell 改为cmd.exe 即可。 这时问题应该解决了,结果如下: [![](https://i.loli.net/2019/04/25/5cc16d992cfab.png)](https://i.loli.net/2019/04/25/5cc16d992cfab.png) ## 如果不想每次一启动Shell 就自动激活Base 环境 在终端输入`conda config --set auto_activate_base false`,即可。 如果又反悔了,想显示了: `conda config --set auto_activate_base true`。 转载自: [解决Win10 PowerShell无法激活Anaconda环境的问题 - Dereen - 博客园 (cnblogs.com)](https://www.cnblogs.com/dereen/p/ps_conda_env.html)
Ubuntu && Debian一键安装 AdoptOpenJDK11
最近使用coding的自动化部署服务,发现他原机系统是ubuntu16,ubuntu16默认的apt包管理器只有openjdk8和9 为了简便安装jdk11 所以才有了如下操作 ```shell sudo wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | sudo apt-key add - && sudo add-apt-repository --yes https://mirrors.tuna.tsinghua.edu.cn/AdoptOpenJDK/deb/ && sudo apt-get install -y software-properties-common && sudo apt-get update && sudo apt-get install adoptopenjdk-11-hotspot -y ``` 如果需要安装其他版本 可以查询adoptopenjdk 已经发布的版本进行修改版本号
SpringCloud Hoxton升级2020 (SpringBoot 2.3升级2.4) 记录
个人理解重要程度依此类推 - SpringBoot 必须升级到2.4.x 笔者使用Gradle管理依赖 只需要spring-boot-gradle-plugin版本升级即可 ```groovy buildscript { dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:2.4.6") } } ``` - SpringCloud 2020 对bootstrap.yml配置文件的支持被单独了出来 必须添加该依赖 ```groovy implementation 'org.springframework.cloud:spring-cloud-starter-bootstrap' ``` - 如果gateway使用了负载均衡lb:// 必须添加该依赖 否则会出现503 ```groovy implementation 'org.springframework.cloud:spring-cloud-starter-loadbalancer' ``` - 如果你使用Netflix系列依赖 请赶紧更换为官网推荐的替代品吧(个人没有使用) > Spring Cloud 2020.0.0版本彻底删除掉了Netflix除Eureka外的所有组件。 | Netflix | 推荐替代品 | 说明 | | :------: | :------: | :------: | | Hystrix | Resilience4j | Hystrix自己也推荐你使用它代替自己 | | Hystrix Dashboard / Turbine | Micrometer + Monitoring System | 说白了,监控这件事交给更专业的组件去做 | | Ribbon | Spring Cloud Loadbalancer | Spring生态 | | Zuul 1 | Spring Cloud Gateway | Spring生态 | 还有更多 这里就不一一列举了,既然你决定升级了肯定要做**调研**的 - 如果你使用了alibaba.cloud系列 请升级版本到2020以后 笔者当时升级是有2021.1版本 ```groovy dependencyManagement { imports { mavenBom "com.alibaba.cloud:spring-cloud-alibaba-dependencies:2021.1" } } ``` - 个人还升级JDK8到JDK11 因为JDK9以后模块化了,所以还需要手动引用一些依赖; > JAXB API是java EE 的API,因此在java SE 9.0 中不再包含这个 Jar 包。 > java 9 中引入了模块的概念,默认情况下,Java SE中将不再包含java EE 的Jar包 > 而在 java 6/7 / 8 时关于这个API 都是捆绑在一起的 ```groovy // jdk模块化 start implementation 'javax.activation:activation:1.1.1' implementation 'javax.xml.bind:jaxb-api:2.3.1' implementation 'com.sun.xml.bind:jaxb-impl:3.0.1' // jdk模块化 end ```
docker运行GUI图形的方法
### docker运行GUI图形的方法 关键点 x11,DISPLAY,xhost + #### 步骤 1. 宿主机安装x11-xserver-utils ```shell $ sudo apt-get install x11-xserver-utils ``` 2. 打开x11任意来源连接"开关" 这是由于X11服务默认只允许『来自本地的用户』启动的图形程序将图形显示在当前屏幕上 ```shell $ sudo vim /etc/lightdm/lightdm.conf # 增加 xserver-allow-tcp=true $ sudo systemctl restart lightdm ``` ```shell $ xhost + #每次重新开机后都要运行 ``` 参数『+』表示允许任意来源的用户。 3. 运行docker ``` docker run -it -e DISPLAY=${DISPLAY} -v /tmp/.X11-unix:/tmp/.X11-unix --name [containername] [yourimage] /bin/bash # 忽略其他参数 -e 和 -v 是重要的 ``` 4. docker中运行GUI ```shell $ sudo apt-get install xarclock $ xarclock ``` #### 原理 X11服务的图形显示原理是在服务端和客户端之间构建一组Server/Client,X11通过『DISPLAY』环境变量来指定将图形显示到何处。 基于这个原理,将Docker中的GUI程序显示到外面,就是通过某种方式把X11的客户端的内容从容器里面传递出来。方法有两种 通过SSH连接或远程控制软件,最终通过tcp套接字将数据发送出来 让容器和主机共享X11的unix套接字,直接将数据发送出来 从应用场景上划分,又可以分成两类情况:『运行本地的GUI程序』和『运行远程服务器上的GUI程序』。这两类情况在操作上很相似,但前者可以使用unix套接字,而后者必然要使用tcp套接字转发,原理上有很大差别。 > 参考博客https://www.csdn.net/article/2015-07-30/2825340
Kafka生产者分区策略 数据可靠性保证
### 分区策略 1. 指明partition的情况下,直接将指明的值作为partition值 2. 没有指明partition值但是有key情况下,将key的hash值与topic的partition数进行取余得到partition值 3. 既没有partition又没有key的情况下,第一次调用产生一个随机整数,然后每次调用会在这个整数上递增,将这个值与topic可用的partition总数取余得到partition值,也就常说的 round-robin(轮询) 算法 ### 数据可靠性保证 1. 两种策略 - 同步半数副本,那么保证数据不丢失需要2n+1个副本 - 同步全部副本,那么保证数据不丢失需要n+1个副本 **kafka采用同步全部副本** 并且优化加入ISR(同步副本)策略,保证如果有一个副本出现不能同步或者同步缓慢而迟迟不能发送ack命令的策略(如果follower长时间未向leader同步数据,则该follower将被踢出ISR,时间阈值由replica.lag.time.max.ms参数设定。) 当Leader发生故障之后,就会从ISR中选区新的leader 2. ISR(同步副本) TODO 3. acks应答机制 参数配置: - acks:`0` producer不等待broker的ack,提供了最低延迟,broker一接受还没写入磁盘就返回,`那么会丢失数据` - acks:`1` producer等待broker的ack,Partition的Leader回落后返回ack,如果在follower同步成功前leader发生故障,`那么会丢失数据`。 - acks:`-1或all` producer等待broker的ack,所有follower同步成功后返回ack - 但是如果follower同步成功但是还没有发送ack的时候 leader坏掉了,这时候重新选举leader,选举成功后会再次发送消息,会造成`消息重复` - 如果ISR副本个数为1的时候 ack设置为all还`可能会丢数据` > 以上的follower都是ISR同步副本中的follower ### ExactlyOnce 精准一次性 1. At least once 至少一次 acks: -1 可以保证数据不丢失,不能保证数据不重复 2. At Most once 至多一次 acks: 0 可以保证数据不重复,不能保证数据不丢失 3. Exactly Once 不重复也不丢失,采用幂等性。0.11之前,采用消费者段进行去重 配置文件设置 `enable.idompotence=true` 即可以开启幂等性 > 生产者在初始化的时候分配一个PID,发往同一Partition的消息会带有Sequence Number。 而且Broker会对<PID,Partition,SeqNumber>做缓存,相同主键提交时候,Broker只会持久化一条。 缺点《生产者,重启后数据还会重复》1
Kafka如何保持数据一致性
## 数据一致性 ### 两个名词 - LEO(Log End Offset) 每个副本的最大offset - HW(High Watermark) 消费者能看到的最大offset,ISR队列中最小的LEO ### 保持一致性得两个场景 - follower故障(长时间未向leader同步数据 时间阈值:replica.lag.time.max.ms): 会被临时踢出ISR,等该follower恢复后,follower会读取本地磁盘上次记录的HW,并将log文件高于HW的地方截取掉,从HW开始向leader进行同步,等follower的LEO大于等于该Partition的HW,追上leader以后,就可以重新加入ISR。 - leader故障: leader发生故障以后会从follower重新选举一个leader,为了保持数据一致性,从剩下follower的log中截掉高于HW的消息,然后从新leader同步数据 **只能保证数据一致性问题,并不能保证数据不丢失或者不重复**
Jenkins 使用原有机器的环境变量
### 查看原有机器环境变量 ``` [root@cvm8184]# echo $PATH /root/.nvm/versions/node/v12.18.0/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/java/jdk1.8.0_231/bin ``` ### 把服务器的环境变量添加到jenkins 节点管理->设置->环境变量 ![Jenkins 使用原有机器的环境变量](https://qiyue.info/usr/uploads/2020/06/1285336046.png) 这样就可以使用机器已经配置环境变量的软件了,就不用在jenkins中二次安装了
vue 父子组件利用计算属性传递信息
- 内容参考 vue官网-组件基础 https://cn.vuejs.org/v2/guide/components.html 以下只是我一些不成熟的理解,建议大概扫一眼官网文档再阅读 #### 父组件传递给子组件 > 子组件定义自定义参数(Prop),父组件传参。 当子组件增加一个prop属性 那么对应的函数名就是你自定义的参数 - 子组件 ```html <template> <v-md-editor/> </template> <script> export default { props: { # 自定义String类型参数text,父组件就可以使用`v-bind:text` 传值 text: String } </script> ``` 如上代码,在父组件引用子组件的时候,加上:text="xxx",就已经把xxx以参数形式传递给子组件了(如下) - 父组件 ```html <markdown :text="xxx" /> // :text 与 v-bind:text 同等含义 <script> # 注册子组件 import Markdown from '@/components/Markdown' export default { components: { Markdown } } </script> ``` #### 子组件传递给父组件 > 子组件使用内建方法`$emit`。 子组件通过调用内建`$emit`方法并传入事件名称来触发一个事件,达到子组件传递给父组件的目的 - 子组件 ```html <script> export default { # 自定义指令'getChildrenText' 并将子组件的data函数中的childrenText属性,通过参数传递给父组件 mounted() { this.$emit('getChildrenText', this.childrenText) } } </script> ``` - 父组件 ```html <markdown @getChildrenText="getChildrenText" /> <script> export default { methods: { # 也就是使用自定义指令的地方'@getText'会接收到子组件的childrenText getChildrenText(val) { # val为上个代码块的参数'this.childrenText' this.fatherText = val # 让父组件的值等于子组件传递过来的值 } } </script> ```
英语语法:六大基本句型拓展
## 主系表的扩展 > 主系表,表语多为名词,想拓展就得靠定语(形容词,介词短语) - 形容词作定语放在名词之前 - 介词短语作定语放在被修饰的词之后 介词短语完全反顺序 如: `The girl is a teacher on the second floor from school.` 这个女孩是学校二楼的老师 ## Do句型的扩展 > 主语+动词(谓语)+宾语+状语(副词)+状语(介词短语) 注意:状语修饰动词,放在所修饰的动词的后面,通常有**副词**或者**介词短语**充当 `children plant tree => children plant carfully(副词) => children plant carfully on Sunday(介词短语) 孩子们星期天努力地种树` 1. 状语前置 > 一般来说,在主谓宾句型里,可以把作为状语的介词短语前置。 `The student read English in the morning => In the morning, the student read English 孩子们早晨读英语` 2. there be(do) 句型:谓主状 > 正式文体中,没有特定主语;某些表示**存在、发生、出现、坐落**等意义的`不及物动词`也可以与there连用如: appear,seem,come,remain,exist,live,stand,lie,arise,enter,follow,occur,rise,grow,happen,belong,arrive,fly,flash,sail,pass,run,spring up,emerge等 `There exist many ancient temples in the country. 那个国家有很多古老的寺庙` there be(do) 句型拓展 `There is a teacher from Amarica in the school in the city. 城市的学校有一个来自美国的老师` 注意:与主系表句型一样,There be 句型里,形容词做定语,介词短语也可以做定语,形容词做定语放在所修饰的名词前面,介词短语放在所修饰的名词后面 ## 总结 1. 首先,把英文的六大句型写完整,再加定语和状语 2. 定语修饰名词,由形容词和介词短语充当,形容词作放在名词之前,介词短语放在的名词之后 3. 状语修饰动词,由副词和介词短语充当,**但是一定要完成句型的基本结构再加状语**
01
文章聚合