低配VPS上的MySQL优化

如果各位自己搞过网站的人可能会比较熟悉宝塔面板这个东西,装环境简单好用,我这个站也是一直在用其实是因为我太菜不会运维。不过新版的宝塔限制了MySQL不能在内存小于1.5G的机器里安装,而我正好前几天把自己的服务器配置缩到了1G,这就十分难受了。不过后来找了点资料,发现了解决办法。

配置

首先打开/www/server/panel/data/plugin.json这个配置文件,然后通过关键词找到如下代码:

{
    "name": "mysql",
    "versions": [{
            "m_version": "5.5",
            "dependnet": "",
            "version": "62",
            "os_limit": 0,
            "cpu_limit": 1,
            "mem_limit": 256
        },
        {
            "m_version": "5.6",
            "dependnet": "",
            "version": "45",
            "os_limit": 0,
            "cpu_limit": 1,
            "mem_limit": 768
        },
        {
            "m_version": "5.7",
            "dependnet": "",
            "version": "27",
            "os_limit": 0,
            "cpu_limit": 1,
            "mem_limit": 1560
        },
        {
            "m_version": "5.1",
            "dependnet": "",
            "version": "73",
            "os_limit": 0,
            "cpu_limit": 1,
            "mem_limit": 128
        },
        {
            "m_version": "AliSQL",
            "dependnet": "",
            "version": "5.6.32",
            "os_limit": 0,
            "cpu_limit": 1,
            "mem_limit": 768
        },
        {
            "m_version": "mariadb_10.0",
            "dependnet": "",
            "version": "38",
            "os_limit": 0,
            "cpu_limit": 1,
            "mem_limit": 768
        },
        {
            "m_version": "mariadb_10.1",
            "dependnet": "",
            "version": "40",
            "os_limit": 0,
            "cpu_limit": 1,
            "mem_limit": 1024
        },
        {
            "m_version": "mariadb_10.2",
            "dependnet": "",
            "version": "25",
            "os_limit": 0,
            "cpu_limit": 1,
            "mem_limit": 1024
        },
        {
            "m_version": "mariadb_10.3",
            "dependnet": "",
            "version": "16",
            "os_limit": 0,
            "cpu_limit": 1,
            "mem_limit": 1500
        },
        {
            "m_version": "8.0",
            "dependnet": "",
            "version": "17",
            "os_limit": 1,
            "cpu_limit": 2,
            "mem_limit": 4096
        }
    ],
    "os": "Linux"
}

然后把你需要安装的版本的mem_limit改成0,保存,就可以去安装了。

优化内存占用

其实宝塔之所以不让小内存机器装MySQL5.7,其实也是因为这玩意内存占用是真的高,启动就占300M,一跑起来随便就五六百。不过咱们的网站需求并不高,所以完全可以降低点配置。 先吧InnoDB关了,这玩意启动就会占好几百,反正MyISAM也是够用的。

default_storage_engine = MyISAM

剩下的就不多说,按下图配,暴力缩减内存占用到350M。连512的小鸡都吃的下。

各位朋友如果装宝塔面板,建议还是装在CentOS上,我发现在Ubuntu上用宝塔,数据库安装总有奇奇怪怪的问题,到CentOS就一路畅通,反正怪得很。

聊聊索尼WI-1000X蓝牙主动降噪耳机

不知道由于什么原因,总之现在已经坏了

前言

其实关于主动降噪耳机,早在很久之前基友@艾鲁夫买初代1000X之后,心里面就长了草,但是苦于价格过高,使用场景又少,出门也不方便携带,也就一直没有入手。

最近刚刚换了新的工作,由于上班比较远,早上出门时间比较早,所以早上通勤的过程变得极其难以忍受,充满了吵闹的地铁噪音和人群声,而且带着有线耳机会被疯狂的挂线,于是我下定决心尽快入手一款主动降噪耳机。

实际上现在索尼的主动降噪耳机产品线主要有三款产品,一款是头戴式主动降噪耳机WX-1000X,一款是项圈式主动降噪耳机WI-1000X,和一款分体式主动降噪耳机WF-1000X。考虑到我的耳朵带入耳耳机带不住,有可能会掉,所以WF-1000X就Pass了,而WX-1000X是头戴式,而且价格实在是过于感人,所以也没能入手,所以目标选定在了WI-1000X(以下简称狗圈)。

说道狗圈其实隔壁Bose也有一款QC30项圈式降噪耳机,而且价格也比较接近,于是也考虑了一下。说来也是蛮巧的,公司里正巧QC30和狗圈都有人带,于是就借过来听一听。实际上发现降噪效果还是差不多,但是做工的话还是觉得索尼打法略胜一筹,而且LDAC的诱惑还是很大的。但是索尼的确实贵了一点点,结果在淘宝上看到了有卖展示机的,价格便宜只要800多,于是果断入手了。

外观

说是有瑕疵的机器,但是看起来除了轻微的划痕,基本没什么损耗。

看着大法的Logo还是感觉暗爽的XD。

项圈上有凹槽可以用来把耳机线收进去。

其他的照片大家可以去网上找找看,我拍的还是比较差(

使用体验

至今用了接近一个月了吧,地铁上确实还是比较好用的,除非特别大声的噪音,轰隆声基本是听不见的,如果同时还在听音乐的话,效果可以说是相当的好(有次因为在地铁上睡着结果坐过站了=。=)。然后也是发现了一个奇怪的现象,带着耳机,低头的时候,降噪效果不错,但是抬起来头就没效果,不知道什么鬼。

用LDAC连接耳机稳定性和音频质量都相当的不错,非常推荐安卓党拿来使用。

玉渊潭公园的一角

买了相机半个月,摄影技术学的吊儿郎当,也没啥机会去拍东西,这次赶上清明节,听说北京可以赏樱花,就和朋友去了一下北京的玉渊潭公园,不过苦于技术太差,根本没有什么能拿得出手的照片(

唯一一张感觉拍的还可以的就是下面这张了……

可以说充分的体现了我这颗老镜头的焦外二线性了……

AndroidStudio推荐使用的.gitignore文件配置
现在推荐直接用IDE的.ignore插件了,非常简单好用
### Gradle template
.gradle
/build/

# Ignore Gradle GUI config
gradle-app.setting

# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
!gradle-wrapper.jar

# Cache of project
.gradletasknamecache

# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
# gradle/wrapper/gradle-wrapper.properties

### JetBrains template
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf

# Generated files
.idea/**/contentModel.xml

# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml

# Gradle
.idea/**/gradle.xml
.idea/**/libraries

# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn.  Uncomment if using
# auto-import.
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr

# CMake
cmake-build-*/

# Mongo Explorer plugin
.idea/**/mongoSettings.xml

# File-based project format
*.iws

# IntelliJ
out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Cursive Clojure plugin
.idea/replstate.xml

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties

# Editor-based Rest Client
.idea/httpRequests

# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser

### Unity template
# This .gitignore file should be placed at the root of your Unity project directory
#
# Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore
#
/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
/[Bb]uild/
/[Bb]uilds/
/[Ll]ogs/
/[Mm]emoryCaptures/

# Never ignore Asset meta data
!/[Aa]ssets/**/*.meta

# Uncomment this line if you wish to ignore the asset store tools plugin
# /[Aa]ssets/AssetStoreTools*

# Autogenerated Jetbrains Rider plugin
[Aa]ssets/Plugins/Editor/JetBrains*

# Visual Studio cache directory
.vs/

# Gradle cache directory
.gradle/

# Autogenerated VS/MD/Consulo solution and project files
ExportedObj/
.consulo/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
*.pdb
*.mdb
*.opendb
*.VC.db

# Unity3D generated meta files
*.pidb.meta
*.pdb.meta
*.mdb.meta

# Unity3D generated file on crash reports
sysinfo.txt

# Builds
*.apk
*.unitypackage

# Crashlytics generated file
crashlytics-build.properties


### Android template
# Built application files
*.apk
*.ap_
*.aab

# Files for the ART/Dalvik VM
*.dex

# Java class files
*.class

# Generated files
bin/
gen/
out/
release/

# Gradle files
.gradle/
build/

# Local configuration file (sdk path, etc)
local.properties

# Proguard folder generated by Eclipse
proguard/

# Log Files
*.log

# Android Studio Navigation editor temp files
.navigation/

# Android Studio captures folder
captures/

# IntelliJ
*.iml
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/assetWizardSettings.xml
.idea/dictionaries
.idea/libraries
# Android Studio 3 in .gitignore file.
.idea/caches
.idea/modules.xml
# Comment next line if keeping position of elements in Navigation Editor is relevant for you
.idea/navEditor.xml

# Keystore files
# Uncomment the following lines if you do not want to check your keystore files in.
#*.jks
#*.keystore

# External native build folder generated in Android Studio 2.2 and later
.externalNativeBuild

# Google Services (e.g. APIs or Firebase)
# google-services.json

# Freeline
freeline.py
freeline/
freeline_project_summary.json

# fastlane
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
fastlane/readme.md

# Version control
vcs.xml

# lint
lint/intermediates/
lint/generated/
lint/outputs/
lint/tmp/
# lint/reports/

.idea/.name
app/libs/
sdk/libs/
sdk/src/main/java/
sdk/src/main/res/
Amazon Corretto介绍及下载

为什么需要OracleJDK的替代品

之前Oracle官方发布过这样一条公告

End of Public Updates of Java SE 8

Java SE 8 is going through the End of Public Updates process for legacy releases. Oracle will continue to provide free public updates and auto updates of Java SE 8, until at least the end of December 2020 for Personal Users, and January 2019 for Commercial Users. Personal Users continue to get free Java SE 8 updates from Oracle at java.com (or via auto update), and Commercial Users continue to get free updates to Java SE 8 from OTN for free under the BCL license. Starting with the April 2019 scheduled quarterly critical patch update, Oracle Customers can access updates to Java SE 8 for commercial use from Oracle through My Oracle Support and via corporate auto update where applicable (Visit My.Oracle Support Note 1439822.1 - All Java SE Downloads on MOS – Requires Support Login).

Oracle does not plan to migrate desktops from Java SE 8 to later versions via the auto update feature. This includes the Java Plugin and Java Web Start. Instead of relying on a browser-accessible system JRE, we encourage application developers to use the packaging options introduced with Java SE 9 to repackage and deliver their Java applications as stand-alone applications that include their own custom runtimes.

Current releases remain free and open source for all users from jdk.java.net.

总之意思就是对Java SE 8准备停止公共更新支持了,而之后如果想用新的JDK 11或者JDK 12,则不能像之前一样免费使用。

于是找东西替代Oracle JDK就成了一件板上钉钉的事情。

为什么不用官方OpenJDK

首先是OpenJDK的话Windows上的二进制版本貌似官方只提供了OpenJDK 10和OpenJDK 11的GA版本,目前绝大多数程序都还是基于JDK 8 开发的,从JDK 8直接升级到JDK 10/JDK 11的话,有可能会带来一些不必要的兼容问题。

再者说官方提供的OpenJDK只有x64版本,对于某些x86开发环境来说不是很友好。而且不内置JRE,用来做运行库也很蛋疼,总之就是体验暂时还略显糟糕。

Amazon Corretto

这货也是我无意中发现的,本来以为和Redhat发布的那种OpenJDK的二进制一样,也是只有x64不含JRE什么的,结果点进去一看,该有的东西全都有,可以说非常接近OracleJDK现在的状态了。

其次目前Amazon Corretto同时对JDK 8和JDK 11进行维护更新,至少不会有太大的兼容性问题。

不管怎么说,就决定是你了。

官方地址

Amazon Corretto主页:

https://aws.amazon.com/cn/corretto

Amazon Corretto 8下载:

https://docs.aws.amazon.com/zh_cn/corretto/latest/corretto-8-ug/downloads-list.html

当然,其实你也可以用Redhat提供的二进制包

下载地址:

https://developers.redhat.com/products/openjdk/download/