最近接触一地方科技公司,他们使用phpstudy在Windows操作系统上部署应用,可以绿色化,无需安装,挺好用的。

phpstudy 为服务器环境提供最优配置的解决方案, 支持Web端管理,一键创建网站、FTP、数据库、SSL;安全管理,计划任务,文件管理,PHP多版本共存及切换;自带LNMP与LAMP 。

参考链接

  1. phpstudy,by xp.

最近使用Filezilla下载GB级别的压缩文件时,发现文件完整性验证失败,导致压缩包无法解压。下载大文件出问题的原因是什么呢?如何解决该问题呢?下面简单探讨一下。

原因分析

根据数字通信系统的基本模型(如图1所示)可知,大文件传输失败的原因最有可能是信道存在干扰。

数字通信系统模型

图1 数字通信系统模型

解决方案

目前采用的解决方案如下:

  1. 将GB级别的文件分卷压缩,放入文件夹中。
  2. 使用HashCalculator工具对文件夹中分卷压缩包进行哈希计算,并将结果保存到文件夹中。
  3. 使用Filezilla下载整个文件夹
  4. 使用HashCalculator工具对下载的文件夹进行哈希验证,哪个分卷压缩包哈希验证不通过,就重新下载该分卷压缩包。

参考链接

  1. 数字通信系统模型(重点内容),by 通信小达人.
  2. HashCalculator,by hrpzcf.
  3. hash support?,by filezilla.
  4. Filezilla配置FTP中的坑以及出坑办法,by asdyzh.
  5. Windows certutil.exe 命令 简单举例 计算MD5与SHA1/256,by ldq_sd.

Web拦截的作用

计算机科学领域的任何问题都可以通过增加一个中间层来解决。 —— Butler Lampson

在没有系统的控制权,不掌握系统代码的情况下,通过“非常规”(拦截) 手段来增加中间层,满足一些自定义的需求。类似于软件设计模式中的装饰模式。

Web拦截的方法

请参考:

参考链接

  1. Web 终极拦截技巧(全是骚操作),by 风痕 · 術&思.

Spring Boot CLI 是一个命令行工具,可用于从 start.spring.io 引导新项目或对密码进行编码。

安装

手动安装,参考以下链接,下载 spring-boot-cli-3.2.2-bin.zip ,并将 spring 可执行程序文件夹添加到系统 PATH 环境变量中。

使用

安装 CLI 后,您可以通过在命令行中键入 spring 并按 Enter 来运行它。

1
2
3
4
$ spring
$ spring help init
$ spring version
$ spring init --dependencies=web,data-jpa my-project

参考链接

  1. Spring Boot CLI,by spring.
  2. 3.2. Installing the Spring Boot CLI,by spring.

什么是技术写作

技术写作非常重要,产品的开发、推广、维护都需要它。

技术写作的关键

技术写作的好坏,跟语文水平关系不大,更多是一个技巧问题。

因为技术写作的评价标准,不是艺术性,而是表达是否清楚明白。它不需要华丽的词藻、巧妙的比喻、深刻的感悟,只需要把问题说清楚。

把问题说清楚的关键,在于你的思想是否清楚。

技术写作的诀窍

文章采用单线结构。

所谓”单线结构”(也称”线性结构”),指的是一篇文章只说一件事,按照线性顺序进行叙述,由浅入深、循序渐进、平铺直叙、层层递进。

参考链接

  1. 科技爱好者周刊(第 288 期):技术写作的首要诀窍, 阮一峰.

MobaXterm 是一个增强型的 Windows 终端。

其为 Windows 桌面提供所有重要的 远程网络工具(SSH、X11、RDP、VNC、FTP、MOSH…)

和 Unix 命令(bash、ls、cat、sed、grep、awk、rsync…)。

参考链接

  1. MobaXterm(终端工具)下载&安装&使用教程,by 蜗牛也不慢…….
  2. 全能终端神器——MobaXterm,by 程序员良许​.
  3. 比Xshell更全能,更好用的SSH客户端神器,MobaXterm,by 大技术.

Kettle 是一款国外开源的 ETL(Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程)工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。

简介

Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。

Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。

Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。

Kettle(现在已经更名为PDI,Pentaho Data Integration-Pentaho数据集成)。

概念

Kettle的执行分为两个层次:Job(作业)和Transformation(转换)。

组成

  • Spoon.bat/spoon.sh:是一个图形化界面,可以让我们用图形化的方式开发转换和作业。

  • Pan.bat/pan.sh:利用Pan可以用命令行的形式调用Trans。

  • Kitchen.bat/kitchen.sh:利用Kitchen可以使用命令行调用Job。

  • Carte.bat/Carte.sh:Carte是一个轻量级的Web容器,用于建立专用、远程的ETL Server。

问题

kettle连不上mysql数据库

kettle 7.1在 win7 上能正常连接mysql数据库,复制到 Win10 上反而不能连接成功。最后发现原因是 Win10 的时间设置不对,改成正常时间就能连接成功。

参考链接

  1. kettle入门实战,by Gavin.
  2. kettle的基础概念入门、下载、安装、部署,by Kettle中文网.
  3. 七十七、Kettle的简介与安装部署,by 象在舞.
  4. Kettle下载与安装教程【保姆版】,by 亭子下的李子.

JavaTM Web Start 是基于 Java 技术的应用程序的一种部署解决方案。它是连接计算机和 Internet 的便捷通道,允许用户在完全脱离 Web 的情况下运行和管理应用程序。Java Web Start 提供一次单击激活应用程序的简易方法,并保证始终运行应用程序的最新版本,从而可避免复杂的安装或升级过程。

简介

Java Web Start 技术是一种面向 Web 的应用程序部署解决方案。使用全功能应用程序替代基于 HTML 的客户软件具有多种好处:

  • 高度交互的用户界面,可与传统应用程序(如文字处理和电子表格软件)相媲美。
  • 较低的带宽需求。应用程序无须在每次单击时都与 Web 服务器进行连接,它可以缓存已经下载的信息。这样,它可以在低速连接上实现更好的交互性。
  • 支持脱机使用。

Java Web Start 启动客户机应用程序流程

图1 Java Web Start 启动客户机应用程序流程

参考链接

  1. Java Web Start 指南,by allway2.
  2. JavaTM Web Start 技术,by lemoyne.
  3. 用于部署应用程序客户机的 Java Web Start 体系结构,by ibm.
  4. [Java进阶] Swing两万字大总结一(超详细教程,这不得收藏一波),by 程序喵正在路上.
  5. Java Servlet,by wikipedia.
  6. java和 javaw 以及 javaws的区别,by bird_cat.
  7. JNLP(Java Web Start )(转) ,by 沧海一滴.
  8. Tomcat Jboss Glassfish 三种常见web容器比较,by langdashu.
  9. Java Web Start,by wikipedia.

最近公司决定使用 PostgreSQL 数据库,提前学习一下。

PostgreSQL简介

PostgreSQL 是一个功能强大的开源对象关系数据库系统,它使用并扩展了 SQL 语言,并结合了许多功能,可以安全地存储和扩展最复杂的数据工作负载。PostgreSQL 的起源可以追溯到 1986 年,是加州大学伯克利分校 POSTGRES 项目的一部分,在核心平台上已经有超过 35 年的积极开发历史。

PostgreSQL 以其成熟的架构、可靠性、数据完整性、强大的功能集、可扩展性以及软件背后的开源社区的奉献精神而赢得了良好的声誉,以始终如一地提供高性能和创新的解决方案。PostgreSQL 可在所有主要操作系统上运行,自 2001 年以来一直符合 ACID 标准,并具有强大的附加组件,例如流行的 PostGIS 地理空间数据库扩展器。毫不奇怪,PostgreSQL已成为许多人和组织的首选开源关系数据库。

PostgreSQL 具有许多功能,旨在帮助开发人员构建应用程序、管理员保护数据完整性和构建容错环境,并帮助您管理数据,无论数据集有多大或多小。除了免费和开源之外,PostgreSQL 还具有高度可扩展性。例如,您可以定义自己的数据类型,构建自定义函数,甚至可以使用不同的编程语言编写代码,而无需重新编译数据库!

PostgreSQL 功能简介

Data Types 数据类型

  • Primitives: Integer, Numeric, String, Boolean
    基元:整数、数字、字符串、布尔值
  • Structured: Date/Time, Array, Range / Multirange, UUID
    结构化:日期/时间、数组、范围/多范围、UUID
  • Document: JSON/JSONB, XML, Key-value (Hstore)
    文档:JSON/JSONB、XML、键值 (Hstore)
  • Geometry: Point, Line, Circle, Polygon
    几何图形:点、线、圆、多边形
  • Customizations: Composite, Custom Types
    自定义:复合、自定义类型

Data Integrity 数据完整性

  • UNIQUE, NOT NULL 唯一,不为 NULL
  • Primary Keys 主键
  • Foreign Keys 外键
  • Exclusion Constraints 排除约束
  • Explicit Locks, Advisory Locks
    显式锁、咨询锁

Concurrency, Performance 并发性、性能

  • Indexing: B-tree, Multicolumn, Expressions, Partial
    索引:B 树、多列、表达式、部分
  • Advanced Indexing: GiST, SP-Gist, KNN Gist, GIN, BRIN, * Covering indexes, Bloom filters
    高级索引:GiST、SP-Gist、KNN Gist、GIN、BRIN、覆盖索引、布隆过滤器
  • Sophisticated query planner / optimizer, index-only scans, multicolumn statistics
    复杂的查询计划器/优化器、仅索引扫描、多列统计信息
  • Transactions, Nested Transactions (via savepoints)
    事务、嵌套事务(通过保存点)
  • Multi-Version concurrency Control (MVCC)
    多版本并发控制 (MVCC)
  • Parallelization of read queries and building B-tree indexes
    读取查询的并行化和构建 B 树索引
  • Table partitioning 表分区
  • All transaction isolation levels defined in the SQL standard, including Serializable
    SQL 标准中定义的所有事务隔离级别,包括 Serializable
  • Just-in-time (JIT) compilation of expressions
    表达式的实时 (JIT) 编译

PostgreSQL 安装配置

安装

PostgreSQL安装过程如下:

1
2
3
4
5
6
7
8
9
10
11
# 安装PostgreSQL服务
sudo yum install -y postgresql12 postgresql12-server

# 初始化数据库
sudo /usr/pgsql-12/bin/postgresql-12-setup initdb

# 启动PostgreSQL服务
sudo systemctl start postgresql-12

# 设置PostgreSQL服务为开机启动
sudo systemctl enable postgresql-12

配置

PostgreSQL安装成功之后,会默认创建一个名为postgres的Linux用户,初始化数据库后,会有名为postgres的数据库,来存储数据库的基础信息,例如用户信息等等,相当于MySQL中默认的名为mysql数据库。

postgres数据库中会初始化一名超级用户postgres。为了方便我们使用postgres账号进行管理,我们可以修改该账号的密码。具体命令如下:

1
2
3
4
5
6
7
8
su postgres

# 登录PostgreSQL数据库
psql
psql -U dbuser -d exampledb -h 127.0.0.1 -p 5432

# 为postgres用户设置新密码
ALTER USER postgres WITH PASSWORD 'NewPassword';

PostgreSQL 模式(SCHEMA)

PostgreSQL 模式(SCHEMA)可以看着是一个表的集合。

一个模式可以包含视图、索引、数据类型、函数和操作符等。

相同的对象名称可以被用于不同的模式中而不会出现冲突,例如 schema1 和 myschema 都可以包含名为 mytable 的表。

使用模式的优势:

  • 允许多个用户使用一个数据库并且不会互相干扰。

  • 将数据库对象组织成逻辑组以便更容易管理。

  • 第三方应用的对象可以放在独立的模式中,这样它们就不会与其他对象的名称发生冲突。

1
2
3
CREATE SCHEMA schema_name;
# 切换到新创建的模式,以查询模式下的对象
SET search_path TO schema_name;

数据库相关语法示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 创建数据库
CREATE DATABASE mydb;

# 查看所有数据库
\l

# 切换当前数据库
\c mydb

# 创建表
CREATE TABLE test(id int,body varchar(100));

# 查看当前数据库下所有表
\d

# 列出某一张表格的结构
\d [table_name]

# 列出所有用户
\du

# 列出所有用户,包含额外列
\du+

# 打开文本编辑器
\3

# 列出当前数据库和连接的信息
\conninfo

# 退出
\q

# 查看SQL命令的解释,比如\h select。
\h

# 查看psql命令列表
\?

用户与访问授权语法示例

1
2
3
4
5
6
7
8
#新建用户
CREATE USER test WITH PASSWORD 'test';

#赋予指定账户指定数据库所有权限
GRANT ALL PRIVILEGES ON DATABASE mydb TO test;

#移除指定账户指定数据库所有权限
REVOKE ALL PRIVILEGES ON DATABASE mydb TO test

参考链接

  1. About PostgreSQL,by postgresql.
  2. PostgreSQL新手入门,by ruanyifeng.
  3. 在CentOS 7上安装&配置PostgreSQL 12,by 数据库.
  4. 【PostgreSQL】系列之 一 schema详解(二),by 阿龙先生啊.
0%