Wayde's Blog

知识源于积累


  • 首页

  • 关于

  • 分类

  • 标签

  • 个人收藏

  • 归档

  • 搜索

Windows系统下SSH的客户端与服务端

发表于 2018-04-13 | 分类于 Windows

OpenSSH For Windows介绍

OpenSSH For Windows实际上是Cygwin系列安装包中的OpenSSH安装包,它在无需安装整个Cygwin安装包的情况下安装OpenSSH所需的最小工具集。

Cygwin是许多自由软件的集合,最初由Cygnus Solutions开发,用于各种版本的Microsoft Windows上,运行类UNIX系统。
Cygwin的主要目的是通过重新编译,将POSIX系统(例如Linux、BSD,以及其他Unix系统)上的软件移植到Windows上。
Cygwin移植工作在Windows NT上比较好,在Windows 95和Windows 98上,相对差劲一些。目前Cygwin由Red Hat等负责维护。

OpenSSH For Windows安装包含客户端和服务端,安装时可自由选择。

软件下载地址: http://sshwindows.sourceforge.net/download/

阅读全文 »

Postgresql 常用SQL

发表于 2018-04-12 | 分类于 PostgreSQL

DDL

  1. 修改表名

    1
    ALTER TABLE table1 RENAME TO table2;
  2. 新增字段

    1
    ALTER TABLE table1 ADD COLUMN f_uid VARCHAR;
  3. 删除字段

    1
    ALTER TABLE table1 DROP COLUMN f_uid;

DML

  1. 关联更新

    1
    2
    3
    4
    5
    UPDATE table1
    SET content_id = b.f_id
    FROM table1 a
    INNER JOIN table2 b ON a.content_id = b.f_content_id
    WHERE table1.id = a.id;
  2. 更新Jsonb字段

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    SELECT '{"diffuse": [0.5, 0.5, 0.5, 1], "opacity": 1, "emissive": [0, 0, 0, 1]}'::json AS f_phong;
    SELECT * FROM table_name WHERE f_phong ->> 'diffuse' = '[0.5, 0.5, 0.5, 1]';

    -- PostgreSQL 9.5
    UPDATE table_name SET f_phong = (jsonb_set(to_jsonb(f_phong), '{diffuse}', '[0, 0, 0, 1]', false))::json WHERE f_phong->>'diffuse' = '[0.5, 0.5, 0.5, 1]';

    -- PostgreSQL 9.5 && PostgreSQL 9.4
    UPDATE table_name
    SET f_phong = (replace(f_phong :: TEXT, '"diffuse": [0.5, 0.5, 0.5, 1]', '"diffuse": [0, 0, 0, 1]')) :: JSON
    WHERE f_phong ->> 'diffuse' = '[0.5, 0.5, 0.5, 1]';

DQL

待更新

DCL

待更新

Ubuntu apt-get和apt-key

发表于 2018-04-11 | 分类于 Ubuntu

APT为Advanced Packaging Tools的缩写,是Debian及其派生发行版的软件包管理器。

APT可以自动下载,配置,安装二进制或者源代码格式的软件包,因此简化了Unix系统上管理软件的过程。

APT最早被设计成dpkg的前端,用来处理deb格式的软件包,现在经过APT-RPM组织修改,APT已经可以安装在支持RPM的系统管理RPM包。

阅读全文 »

KVM虚拟机安装Windows XP

发表于 2018-04-10 | 分类于 KVM
  1. 创建10G系统盘(固态硬盘)

    lvcreate -L 20G -n lv0-windows-xp vg0

  2. 创建50G挂载盘(机械硬盘)

    lvcreate -L 50G -n lv9-windows-xp vg9

  3. 创建虚拟机

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    virt-install \
    --virt-type kvm \
    --name winxp \
    --ram 4096 \
    --cdrom=/uni/iso/win-xp64-sp3.iso \
    --cpu core2duo \
    --network bridge=br0,model=virtio \
    --graphics vnc,listen=0.0.0.0 \
    --disk path=/dev/mapper/vg0-lv0--winxp,bus='ide' \
    --disk path=/dev/mapper/vg9-lv9--winxp,bus='ide' \
    --noautoconsole \
    --os-type=windows \
    --os-variant=winxp
  4. 通过vpc连接继续安装

  5. 安装完成后设置开机启动

    virsh autostart windows-xp

    常用命令请查看KVM常用操作

参考资料:
How to Create a Windows XP Virtual Machine
Understanding Guest Agents and Other Tools
Creating Windows virtual machines using virtIO drivers
virtio驱动下载
The List of Os Variants in KVM

PostgreSQL 函数的使用

发表于 2018-04-10 | 分类于 PostgreSQL

创建修改函数

参数类型不同为不同函数

返回值为数字类型

1
2
3
4
5
6
7
CREATE OR REPLACE FUNCTION cal_avg_time(IN starttime TIMESTAMP, IN endtime TIMESTAMP)
RETURNS NUMERIC
AS $$
SELECT avg(costtime) avgtime
FROM data_statistics
WHERE f_starttime BETWEEN starttime AND endtime
$$ LANGUAGE SQL;

返回值为table类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE OR REPLACE FUNCTION total_sucfail(IN starttime TIMESTAMP, IN endtime TIMESTAMP)
RETURNS TABLE(solutions TEXT, sucnum BIGINT, failnum BIGINT)
AS $$
SELECT
solutions,
SUM(CASE WHEN f_status = 100
THEN 1
ELSE 0 END) sucnum,
SUM(CASE WHEN f_status = 100
THEN 0
ELSE 1 END) failnum
FROM data_statistics
WHERE f_starttime BETWEEN starttime AND endtime
AND f_finishtime BETWEEN starttime AND endtime
GROUP BY solutions
$$ LANGUAGE SQL;

查看函数

1
2
3
4
5
6
dbname=# \df
Schema | Name | Result data type | Argument data types | Type
--------+---------------+------------------------------------------------------+----------------------------------------------------------------------------+--------
public | cal_avg_time | numeric | starttime timestamp without time zone, endtime timestamp without time zone | normal
public | total_sucfail | TABLE(solutions text, sucnum bigint, failnum bigint) | starttime timestamp without time zone, endtime timestamp without time zone | normal
(2 rows)

调用函数

1
2
SELECT cal_avg_time('2018-04-01 00:00', '2018-04-02 00:00');
SELECT total_sucfail('2018-04-01 00:00', '2018-04-02 00:00');

当参数类型为Date时,传入YYYY-MM-DD HH:MM:SS格式字符串不会报错,但是只有YYYY-MM-DD生效

删除函数

1
2
dbname=# DROP FUNCTION cal_avg_time(timestamp,timestamp);
dbname=# DROP FUNCTION total_sucfail(timestamp,timestamp);
阅读全文 »

CPU、超线程与进程、线程

发表于 2018-04-10 | 分类于 Other

CPU与超线程

中央处理器(Central Processing Unit)

维基百科如此介绍:

计算机的主要设备之一,功能主要是解释计算机指令以及处理计算机软件中的数据。

计算机的可编程性主要是指对中央处理器的编程。

中央处理器、内部存储器和输入/输出设备是现代电脑的三大核心部件。

每个单位时间内,一个单运行管线的CPU只能处理一个线程(操作系统]: thread)

超线程(Hyper-Threading)

维基百科如此介绍:

英特尔研发的一种技术,于2002年发布。超线程技术原先只应用于Xeon[至强]处理器中,当时称为“Super-Threading”。之后陆续应用在Pentium 4[奔腾4] HT中。

通过此技术,英特尔实现在一个实体CPU中,提供两个逻辑线程。之后的Pentium D[奔腾D]纵使不支持超线程技术,但就集成了两个实体核心,所以仍会见到两个线程。超线程的未来发展,是提升处理器的逻辑线程。英特尔于2016年发布的Core i7-6950X便是将10核心的处理器,加上超线程技术,使之成为20个逻辑线程的产品。英特尔表示,超线程技术让Pentium 4 HT处理器增加5%的裸晶面积,就可以换来15%~30%的性能提升。

但实际上,在某些程序或未对多线程编译的程序而言,超线程反而会降低性能。除此之外,超线程技术亦要操作系统的配合,普通支持多处理器技术的系统亦未必能充分发挥该技术。

HT技术是在CPU内部仅复制必要的资源、让两个线程可同时运行;在一单位时间内处理两个线程的工作,模拟实体双核心、双线程运作

既然是模拟,性能肯定比不上两个物理核

阅读全文 »

Linux 临时端口、临时端口范围、预留端口

发表于 2018-04-09 | 分类于 Linux
  1. 临时端口

    临时端口又称短暂端口,是TCP,UDP,或SCTP协议通过TCP/IP底层软件从预设范围内自动获取的端口,一般提供给客户服务器通讯中的客户端。这种端口是临时的,并且仅在应用程序使用协议建立通讯联系的周期中有效。

  2. 查看系统本地可用端口极限值

    32768 60999, 说明这台机器本地能向外连接28232个连接

    Note: 本地向外连接,不是这台机器的所有连接,不会影响这台机器的 80端口的对外连接数。

    1
    2
    3
    4
    5
    $ cat /proc/sys/net/ipv4/ip_local_port_range 
    32768 60999

    $ sudo sysctl -a | grep ip_local_port_range
    net.ipv4.ip_local_port_range = 32768 60999
    阅读全文 »

Linux swap分区

发表于 2018-04-09 | 分类于 Linux

Swap分区是在系统物理内存不够用时由系统内存管理程序将很长时间没有操作内存数据临时保存到Swap分区中,以提高可用内存额度的一种机制。当那些程序要再次重新运行时,会再从Swap分区恢复之前保存的数据到内存中。
相关操作会导致额外的IO开销,特别是,如果内存使用率已经非常高,而同时IO性能也不是很好的情况下,该机制其实会起到相反的效果:不仅系统性能提升较小(因为内存使用率已经非常高了),而且由于频繁的内存到SWAP的切换操作,会导致产生大量额外的IO操作,导致IO性能进一步降低,最终反而降低了系统总体性能。

阅读全文 »

安装Python报错

发表于 2018-04-09 | 分类于 Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
BUILD FAILED (Ubuntu 16.04 using python-build 20160602)

Inspect or clean up the working tree at /tmp/python-build.20180326120047.16929
Results logged to /tmp/python-build.20180326120047.16929.log

Last 10 log lines:
File "/tmp/python-build.20180326120047.16929/Python-3.5.2/Lib/ensurepip/__init__.py", line 116, in bootstrap
_run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
File "/tmp/python-build.20180326120047.16929/Python-3.5.2/Lib/ensurepip/__init__.py", line 41, in _run_pip
pip.main(args)
File "/tmp/tmpn7rno8qm/pip-8.1.1-py2.py3-none-any.whl/pip/__init__.py", line 215, in main
File "/tmp/python-build.20180326120047.16929/Python-3.5.2/Lib/locale.py", line 594, in setlocale
return _setlocale(category, locale)
locale.Error: unsupported locale setting
Makefile:1060: recipe for target 'install' failed
make: *** [install] Error 1
阅读全文 »

Python 枚举类Enum

发表于 2018-04-09 | 分类于 Python

首先定义枚举类如下:

1
2
3
4
5
6
7
8
9
from enum import Enum

class LibraryType(Enum):
PERSONAL = 100
PUBLIC = 200

@classmethod
def has_value(cls, value):
return any(value == item.value for item in cls)
阅读全文 »
1234…14
Wayde

Wayde

140 日志
14 分类
112 标签
GitHub StackOverflow Instagram
© 2012–2022 Wayde
粤ICP备2020135844号