MacOS HomeBrew 更新遇到的问题解决
问题
brew update 遇到错误, 错误信息如下:
1 | Updating Homebrew... |
解决方式
- brew doctor
运行后发现源为科大的源, 于是切换回原来的官方的 brew 源
1 | cd "$(brew --repo)" |
有其他问题,建议按照提示一一解决掉
- brew update
更新成功
- brew config
查看配置
brew update 遇到错误, 错误信息如下:
1 | Updating Homebrew... |
运行后发现源为科大的源, 于是切换回原来的官方的 brew 源
1 | cd "$(brew --repo)" |
有其他问题,建议按照提示一一解决掉
更新成功
查看配置
MacOS 升级到 10.15 版本时,预览文件出现下面的提示
删除 ~/Library/QuickLook 目录下的隔离属性 (quarantine attribute)
运行下面命令查看属性:
1 | xattr -r ~/Library/QuickLook |
运行下列命令移除这些属性:
1 | xattr -d -r com.apple.quarantine ~/Library/QuickLook |
点击 “Allow Anyway”
1 | qlmanage -p /path/to/any/file.js |
推荐下自己使用的预览插件
1 | brew cask reinstall qlcolorcode qlstephen qlmarkdown quicklook-json qlimagesize suspicious-package quicklookase qlvideo |
需要注意的是 qlcolorcode
需要 highlight
库来显示高亮效果, 需要安装: brew install highlight
在一次生产环境部署 elasticsearch 节点时 docker 容器设置了 –restart always,
此时 elasticsearch 的一个节点发生了 java.lang.OutOfMemoryError: Java heap space
容器并没有重启
elasticsearch 已经设置了 -Xms -Xmx
JVM堆内存超出xmx限制,并抛java.lang.OutOfMemoryError: Java heap space异常。堆内存爆了之后,JVM和java进程会继续运行,并不会crash
当JVM出现 OutOfMemoryError,要让 JVM 自行退出, 这样容器就会触发重启
添加新的 jvm 配置: ExitOnOutOfMemoryError and CrashOnOutOfMemoryError
该配置支持 jdk8u92 版本及其之后的版本
地址: https://www.oracle.com/technetwork/java/javase/8u92-relnotes-2949471.html
oracle 官网的原话:
New JVM Options added: ExitOnOutOfMemoryError and CrashOnOutOfMemoryError
Two new JVM flags have been added:
ExitOnOutOfMemoryError - When you enable this option, the JVM exits on the first occurrence of an out-of-memory error. It can be used if you prefer restarting an instance of the JVM rather than handling out of memory errors.
CrashOnOutOfMemoryError - If this option is enabled, when an out-of-memory error occurs, the JVM crashes and produces text and binary crash files (if core files are enabled).
ExitOnOutOfMemoryError: 启用此选项时,JVM在第一次出现内存不足错误时退出。如果您希望重新启动JVM实例而不是处理内存不足错误,则可以使用它。
CrashOnOutOfMemoryError: 如果启用此选项,则在发生内存不足错误时,JVM崩溃并生成文本和二进制崩溃文件(如果启用了核心文件)。
加上配置
ES_JAVA_OPTS = “-XX:+ExitOnOutOfMemoryError”
直接在终端中执行下面的命令
git config –global core.quotepath false
其中:
git reset 有三种参数:
另外 HEAD 后面加上 ~1
代表回滚一次 commit 记录, HEAD^
代表全部 commit 记录
参看: https://blog.csdn.net/qq_37420939/article/details/89736567
merge 和 rebase 都是 git pull 时的策略
git rebase 有以下几种使用场景:
合并最近的 4 次提交纪录
1 |
|
在 idea 中可以在 Version Control 中选择最早时间的提交记录, 然后选择 Interactively Rebase from Here
然后除了第一个为pick外,其他选择squash,点击start rebasing,接着输入提交信息就可以把多次commit合并为一次了
有时候我们在某一个分支上提交了一些代码, 需要将这次提交合并到其他分支上, 这时的做法是:
这当前分支上使用 git log 查看需要进行合并的提交记录的 ID
切换到需要合并的分支上: git checkout 分支名
进行合并: git cherry-pick commitId
推送到到上游分支: git push
这里记录一些坑
使用 gradle 配置, 其中移除了 Tomcat , 使用的是 Undertow
先引入依赖
implementation ('org.springframework.boot:spring-boot-starter-websocket')
提示报错 web 容器没有实现 JSR356
undertow 肯定是实现了 JSR356, 在 undertow-websockets-jsr 这个依赖里
判断肯定是由于移除 Tomcat 的问题,查看依赖发现 spring-boot-starter-websocket
依赖了 web , 而 web 默认使用的就是 Tomcat
于是移除 web 依赖即可
1 | implementation ('org.springframework.boot:spring-boot-starter-websocket'){ |
代码部分:
1 | @Configuration |
注意在启动类上加入: @EnableWebSocketMessageBroker
这里使用的是 stomp 协议, 于是也要前端使用 stomp 配合
发送消息可以加入 @SendTo 注解, 还有一种方式, 就是使用 SimpMessagingTemplate
1 | @RestController |
安装组件 npm install react-stomp
自行封装一个组件,如下:
1 | import React, {Component} from 'react'; |
子组件使用:
1 | <Websocket |
以上方式看起来使用没有问题,但是现实情况往往开发时前后端分离,请求后端接口往往在 node 项目里配置代理, 这里涉及到 websocket 的代理
之前的配置都是在 package.json 配置, 比如:
1 | "proxy": "http://localhost:8098" |
但是这种方式对 websocket 的代理失败,会发现 websocket 连接不上
解决方式:
在新版的 customize-cra 的使用方式里:
先安装 http-proxy-middleware : npm install http-proxy-middleware
在 src 目录下新建文件 setupProxy.js, 名字不可改,一定要是这个文件名
1 | const proxy = require("http-proxy-middleware"); |
这里开启 ws: true 即可完成 websocket 的代理.
之前写过一篇 npm eject 之后的多页面配置,可以往前翻阅 , 现在不想 eject, 该怎么配置多页面?
npm install react-app-rewire-multiple-entry –save-dev
在 config-overrides.js 中添加配置
现在 public 里复制一个 html 页面, 在 src 目录下再新增一个目录,里面的文件拷贝 index 的稍微改动下,
大致目录如下:
-serviceWorker.js
-metadata.js
-metadata.css
-logo.svg
-App.test.js
-App.js
-App.css
基本使用:
1 | const multipleEntry = require('react-app-rewire-multiple-entry')([{ |
在 customize-cra 使用
1 | const multipleEntry = require('react-app-rewire-multiple-entry')([ |
结合 ant-design 使用
1 | const {override, fixBabelImports, addLessLoader} = require('customize-cra'); |
注意,这样配置的话, 请求的 uri 是 /metadata, 在 build 后会生成 metadata 文件, 将打包后的文件拷贝到服务器上运行效果不好
一般我都注释掉 template, 再将 outPath 写成 /metadata.html
在 配置文件 config-overrides.js 添加 process.env.GENERATE_SOURCEMAP = "false";
或者
在项目更目录下创建文件 .env, 写入: GENERATE_SOURCEMAP=false 即可.
Nested 类型的数据不多说了,
先看 mapping:
1 | "metaArray": { |
再看数据:
1 | { |
想查作者是 Joy 并且文件类型是 txt 的记录
使用 nestedQuery + queryStringQuery
语句:
1 | { |
代码:
1 | String key = xxxx |
之前一直用我弟弟的学生证申请的 license,可惜今年毕业了,无法在续费申请了
早期已经听说 JetBrains 可以使用自己的开源项目进行申请免费的 license
正好使用我的这个博客来申请一波
Take me to my license(s)
Active subscriptions
, 激活,在点击 Assign
分配使用我这里因为之前使用 QQ 邮箱创建过 JetBrains 的账号,这次不想使用新的邮箱再次创建账号
于是在第四步点击 Take me to my license(s)
后,我选择授权其他邮箱,填写邮箱地址,之后你的邮箱会收到邮件,点击接受授权的链接
之后的操作都一致了,成功使用我原来的邮箱获取到了 license.