分类:技术

  • 使用 go 命令升级至 go1.9beta2

    17-08-14 09:55 23132 0 技术

    从 go1.9beta2 运行 go 命令。

    若要安装 go1.9beta2,请运行:

    $ go get golang.org/x/build/version/go1.9beta2
    $ go1.9beta2 download
    
  • 升级 Windown 10 内置 Ubuntu 子系统

    17-07-15 08:30 21848 0 技术

    查看当前版本

    打开命令提示符,输入 bash,然后输入

    lsb_release -a
    

    更换阿里云源

    vim /etc/apt/sources.list
    

    内容替换为

    deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
    deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
    deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
    
    $ aptitude update
    $ aptitude safe-upgrade -y
    # 注1:升级过程中会提示你重启服务(restart services),选yes
    # 注2:还会出现文件冲突,保留当前版本(current version)即可,输入N
    

    把所有包升级至 16.04 (xenial) 的最新版,并重装丢失的aptitude包,最后清理无用包

    $ apt-get dist-upgrade
    $ apt-get install aptitude
    $ apt-get autoremove
    

    lxrun 使用方法

    对 LX 子系统执行管理操作
    
    用法:
        /install - 安装子系统
            可选参数:
                /y - 不提示用户接受
        /uninstall - 卸载子系统
            可选参数:
                /full - 执行完全卸载
                /y - 不提示用户接受
        /setdefaultuser - 配置将用于启动 bash 的子系统用户。如果该用户不存在,则会创建该用户。
            可选参数:
                username - 提供用户名
                /y - 如果提供了用户名,则不提示创建密码
        /update - 更新子系统的包索引
    

    卸载旧版本

    打开命令提示符

    C:\WINDOWS\system32>lxrun /uninstall /full /y
    这将在 Windows 中卸载 Ubuntu。
    这将删除 Ubuntu 环境以及任何修改、新应用程序和用户数据。
    正在卸载...
    

    安装新版本

    打开命令提示符

    C:\WINDOWS\system32>lxrun /install
    -- Beta 版功能 --
    这将在 Windows 上安装由 Canonical 分发的 Ubuntu,
    根据其条款的授权参见此链接:
    https://aka.ms/uowterms
    
    键入“y”继续: y
    正在从 Windows 应用商店下载... 100%
    正在提取文件系统,这将需要几分钟的时间...
    请创建默认的 UNIX 用户帐户。该用户名不需要与 Windows 用户名匹配。
    有关详细信息,请访问: https://aka.ms/wslusers
    请输入新的 UNIX 用户名:
    root
    找到 UNIX 用户: root
    安装成功!
    

    不卸载直接升级Ubuntu 14.04:

    sudo do-release-upgrade
    

    微软和Canonical官方均不推荐使用该方法,如果你要使用请参考:Ubuntu 16.04 安装指南。

  • CentOS 安装 PHP7

    16-11-24 18:23 30122 1 技术
    yum --enablerepo=remi-php70 install php-opcache php-mbstring php-mysql php-gd php-xml php-json php-devel php-pear ImageMagick-devel
    
  • Windows 10 Linux 子系统安装 php 环境

    16-10-12 20:46 44846 0 技术

    准备必要的源

    sudo add-apt-repository ppa:ondrej/php
    sudo add-apt-repository ppa:jonathonf/vim
    sudo apt update
    sudo apt upgrade
    

    安装必备软件

    apt-get install zsh
    
    apt-get install php5 php5-mysql php5-gd php5-curl php5-cli mysql-server apache2 silversearcher-ag make
    

    安装 vim

    sudo apt install vim
    
    // 卸载方法
    apt remove vim
    add-apt-repository --remove ppa:jonathonf/vim
    

    安装 tmux

    apt-get install libevent-dev
    apt-get install ncurses-dev
    wget https://github.com/tmux/tmux/releases/download/2.3/tmux-2.3.tar.gz
    tar xzvf tmux-2.3.tar.gz
    ./configure && make
    mv tmux /usr/bin/
    

    修改 ~/.minttyrc

    Locale=zh_CN
    Charset=UTF-8
    Font=DejaVu Sans Mono for Powerline
    Term=xterm-256color
    RightClickAction=paste
    CursorType=block
    ClicksTargetApp=no
    BoldAsFont=no
    BoldAsColour=no
    CopyAsRTF=no
    Scrollbar=none
    
    ForegroundColour=131,148,150
    BackgroundColour=0,43,54
    CursorColour=220,50,47
    
    Black=7,54,66
    BoldBlack=0,43,54
    Red=220,50,47
    BoldRed=203,75,22
    Green=133,153,0
    BoldGreen=88,110,117
    Yellow=181,137,0
    BoldYellow=101,123,131
    Blue=38,139,210
    BoldBlue=131,148,150
    Magenta=211,54,130
    BoldMagenta=108,113,196
    Cyan=42,161,152
    BoldCyan=147,161,161
    White=238,232,213
    BoldWhite=253,246,227
    FontWeight=400
    

    .tmux.conf

    # 设置默认shell和terminal
    set -g default-shell /usr/bin/zsh
    set -g default-terminal "screen-256color"
    
    # 支持自动更新标题
    setw -g automatic-rename on
    set -g set-titles on
    set -g set-titles-string 'Tmux - #S:#W'
    
    # 滚动时使用vi模式
    setw -g mode-keys vi
    
    # 设置窗口和面板索引
    set -g base-index 1
    set -g pane-base-index 1
    
    # 打开鼠标模式
    set -g mouse on
    
    # 选择 pane
    bind-key k select-pane -U
    bind-key j select-pane -D
    bind-key h select-pane -L
    bind-key l select-pane -R
    
    # 扩展 pane
    bind H resize-pane -L 10
    bind L resize-pane -R 10
    bind K resize-pane -U 5
    bind J resize-pane -D 5
    
    # 复制模式
    bind-key -t vi-copy 'v' begin-selection
    bind-key -t vi-copy 'C-v' rectangle-toggle
    bind-key -t vi-copy 'y' copy-selection
    
    # 状态条定制
    set -g status-left-length 30
    set -g status-right-length 100
    set -g status-fg white
    set -g status-bg colour234
    set -g window-status-activity-attr bold
    set -g pane-border-fg colour245
    set -g pane-active-border-fg colour39
    set -g message-fg colour16
    set -g message-bg colour221
    set -g message-attr bold
    set -g status-left '#[fg=colour235,bg=colour252,bold] ❐ #S #[fg=colour252,bg=colour238,nobold]#[fg=colour245,bg=colour238,bold] #(whoami) #[fg=colour238,bg=colour234,nobold]'
    set -g window-status-format "#[fg=colour234,bg=colour238]#[fg=colour245,bg=colour238,bold] #I  #W#F #[fg=colour238,bg=colour234,nobold]"
    set -g window-status-current-format "#[fg=colour234,bg=colour39]#[fg=colour25,bg=colour39,noreverse,bold] #I  #W#F #[fg=colour39,bg=colour234,nobold]"
    set -g status-right '#T %F %A %H:%M '
    set -g window-status-separator ''
    
  • 使用 unoconv 将 PPT 转换成 PDF

    16-08-13 20:25 40875 0 技术
  • Composer 安装时报错 "Internal Error [ERR_INVALID], exit code 0"

    16-07-05 13:25 36750 0 技术

    修改 php.ini

    extension_dir = "\xampp\php\ext"
    

    改为

    extension_dir = "D:\xampp\php\ext"
    
    browscap = "\xampp\php\extras\browscap.ini"
    

    改为

    browscap = "D:\xampp\php\extras\browscap.ini"
    
  • CentOS 7 搭建 IPSec/IKEv2 VPN 服务器

    15-10-08 09:25 25334 0 技术

    GitHub 地址

    https://github.com/jiangxi14520/one-key-ikev2-vpn

    wget --no-check-certificate https://raw.githubusercontent.com/quericy/one-key-ikev2-vpn/master/one-key-ikev2.sh
    
    chmod +x one-key-ikev2.sh
    bash one-key-ikev2.sh
    

    如果使用 firewalld

    vim /etc/firewalld/zones/public.xml
    

    执行以下命令

    firewall-cmd --zone=dmz --permanent --add-rich-rule='rule protocol value="esp" accept' # ESP (the encrypted data packets)
    firewall-cmd --zone=dmz --permanent --add-rich-rule='rule protocol value="ah" accept' # AH (authenticated headers)
    firewall-cmd --zone=dmz --permanent --add-port=500/udp #IKE  (security associations)
    firewall-cmd --zone=dmz --permanent --add-port=4500/udp # IKE NAT Traversal (IPsec between natted devices)
    firewall-cmd --permanent --add-service="ipsec"
    firewall-cmd --zone=dmz --permanent --add-masquerade
    firewall-cmd --permanent --set-default-zone=dmz
    firewall-cmd --reload
    firewall-cmd --list-all
    
    vim /etc/sysctl.conf
    

    添加以下内容:

    # VPN
    net.ipv4.ip_forward = 1
    net.ipv4.conf.all.accept_redirects = 0
    net.ipv4.conf.all.send_redirects = 0
    

    使之生效:

    sysctl -p
    
    <?xml version="1.0" encoding="utf-8"?>
    <zone>
      <short>Public</short>
      <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
      <service name="dhcpv6-client"/>
      <service name="ssh"/>
      <port protocol="tcp" port="80"/>
      <port protocol="udp" port="500"/>
      <port protocol="tcp" port="500"/>
      <port protocol="udp" port="4500"/>
      <port protocol="udp" port="1701"/>
      <port protocol="tcp" port="1723"/>
      <masquerade/>
    </zone>
    

    Mac 上配置

    进入钥匙串管理,选择登录,然后将证书拖进去。

    不被信任解决方法,右键->属性,选择总是被信任

  • iTerm2 安装 oh-my-zsh 和 power-line

    15-09-10 20:50 20252 0 技术
    pip install powerline-status --user -U
    

    隐藏用户名和主机名 加到

    ZSH_THEME="agnoster"
    DEFAULT_USER="$USER"
    
  • HTTP 协议常见错误代码

    15-04-02 10:20 23927 0 技术
  • 乐观锁和悲观锁

    14-10-06 11:34 23324 0 技术

    乐观锁和悲观锁是两种并发控制策略,用于解决多线程或多进程访问同一资源时的数据一致性问题。

    乐观锁

    • 概念:假设数据很少被修改,因此不会在数据访问前加锁。
    • 机制:读取数据时不加锁,更新时检查数据是否被修改(通常通过版本号或时间戳)。如果数据没有变化,则提交修改;否则,操作失败,需要重试。
    • 适用场景:适合读多写少的场景,避免因频繁加锁导致的性能问题。

    悲观锁

    • 概念:假设数据会被频繁修改,因此在访问前加锁。
    • 机制:读取或修改数据时加锁,确保同一时间只有一个事务可以操作数据。其他尝试获取锁的事务会被阻塞,直到锁被释放。
    • 适用场景:适合写多读少的场景,需要严格控制数据一致性。

    例子

    • 乐观锁:电商网站的库存管理系统,用户读取商品信息时不加锁,提交订单时检查库存是否改变。
    • 悲观锁:银行转账系统,在进行账户余额更新时加锁,以确保数据一致性。

    选择使用哪种锁策略取决于系统的读写比例和对并发的要求。

文章归档

文章日历

2024 年 11 月
26 27 28 29 30 01 02
03 04 05 06 07 08 09
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

文章标签

最新评论

友情链接