gitalk-comments's People
gitalk-comments's Issues
Docker的本质(二):存储 | TSW's blog
https://tswblog.com/article/linux/docker-essence-2-image/#more
简介Docker的存储目录是由一系列层叠有序的目录构成。Docker镜像是只读的,对于Docker镜像而言,所有层都是只读的。Docker容器是在镜像层的基础上堆叠了一个可读写层(也称作容器层), 文件的新增,修改和删除只会影响到容器层,不会对镜像层做任何改动。
Groovy的闭包 | TSW's blog
https://tswblog.com/article/java/groovy-closures/
闭包(Closures)1234def a = { println it }def b = { x, y -> println "${x}+${y}=${x + y}" }a.call("123") // 等效于 a("123")b(1, 2) // 1+2=3
RSA原理 | TSW's blog
https://tswblog.com/article/misc/rsa-theory/
RSA (Rivest–Shamir–Adleman 三位数学家) 是最为常见的非对称加密算法. 本位以128位RSA秘钥为例介绍下算法的原理. 在实际使用时RSA秘钥对至少要在1024位以上才能保证安全. 快速演示1. 生成128位的rsa私钥1openssl genrsa 128 > key.pem 内容为:12345-----BEGIN RSA PRIVATE KEY-----MGMC
test
test
linux下使用chrony同步时间 | TSW's blog
https://tswblog.com/article/linux/chrony/#more
chrony 是一个多功能的NTP(Network Time Protocol)实现. 它可以通过NTP服务或者类似GPS时钟接收器的硬件级参考时钟来同步系统时钟. 它同时可以作NTP服务器(NTPv4), 为其他其他设备提供服务. chrony被设计用在各种苛刻的条件下; 例如间断, 拥堵的网络环境, 气温变化频繁的环境(气温变化会对系统时钟造成影响)等 通常情况下, 两台机器的同步精度在毫秒级
Harbor安装指南(外部卸载SSL) | TSW's blog
https://tswblog.com/article/cloud/harbor-install/
按照Harbor官方的安装教程可以很好的配置一个HTTP或者HTTPS的Harbor服务. 如果是HTTPS, 我们需要为Harbor配置证书, 这些在官方的教程中已经很好的说明了. 但是会有这样一种情况: 就是将HTTPS的卸载放在外部的负载均衡, 然后通过HTTP反向代理访问Harbor服务1--> External SLB (https) --> harbor-ngixn (ht
CORS简介以及在SpringBoot应用下开启CORS | TSW's blog
https://tswblog.com/article/java/spring/spring-cors/
同源策略(Same-origin Policy) 协议相同 域名相同 端口相同 包括 Cookie,iframe 和 Ajax 同源 script、image、iframe 和 用ajax提交的form不受同源策略影响.
Groovy 基础 | TSW's blog
https://tswblog.com/article/java/groovy-base/
默认导入的包Groovy会默认导入以下包. 以下包中的类的使用不必再次导入. 其他包的导入 同java的import
iptables常用命令 | TSW's blog
https://tswblog.com/article/linux/network/iptables-base-commonds/
表表通过-t来指定, 省略-t默认是filter表 iptables -t filter -N IN_WEB-N 创建自定义链 无任何引用 自定义链无任何规则 表 说明 支持的链 filter(默认) 对包进行过滤 INPUT、FORWARD、OUTPUT raw 一般是为了不再让iptables对数据包进行跟踪,提高性能 PREROUTING、OUTPUT mangle
开始使用Git | TSW's blog
https://tswblog.com/article/git/01_git-getstart/
常用命令生成公钥ssh-keygen -t rsa -C “邮箱名”(生成4096位RSA:ssh-keygen -t rsa -b 4096 -C “[email protected]“ ) 全局配置12git config --global user.name "Your Name"git config --global user.email "[email protected]"
Nginx Location配置总结 | TSW's blog
https://tswblog.com/article/nginx/nginx-location/
语法1location [ = | ^~ | ~ | * ] uri { ... } 可用于server中= 精确匹配^ 前缀匹配~ 正则匹配~* 正则匹配, 不区分大小写/ 默认匹配, 其他location匹配不到时 匹配优先级 精确匹配 > 前缀匹配 > 正则匹配 > /优先级较高的匹配到时, 则不再进行后续匹配. uri 是解码后的路径, 例如匹配
Docker容器的本质(一):namespace | TSW's blog
https://tswblog.com/article/linux/docker-essence-1-linux-namespace/#more
一个运行时的Docker容器是宿主机上的一个进程,并通过linux nampspace实现隔离。 进程与隔离首先启动一个容器docker run --rm --name alpine -it alpine:3.8 /bin/sh,并执行sleep 123123命令。在宿主机重新开启一个终端,查看进程树pstree -ap |grep sleep -C 10可看到进程关系:12345dockerd,
iptables基础 | TSW's blog
https://tswblog.com/article/linux/network/iptables-basic/
概述iptables是一个user-space的工具, 用来配置linux内核防火墙提供的table, 通过配置该table来改变内核防火墙的行为. 表(table)表通过-t来指定, 如果省略-t默认是filter表 表 说明 支持的链 filter (默认) 对包进行过滤 INPUT、FORWARD、OUTPUT nat 进行地址转换 PREROUTING、OUTPUT、PO
GC算法总结 | TSW's blog
https://tswblog.com/article/java/jvm/gc-algorithm/
gc算法引用计数 (Python 中用)没有被Java采用 ( 循环引用问题 )引用计数器的实现很简单,对于一个对象A,只要有任何一个对象引用了A,则A的引用计数器就加1,当引用失效时,引用计数器就减1。只要对象A的引用计数器的值为0,则对象A就不可能再被使用。 标记-清除标记-清除算法是现代垃圾回收算法的**基础。标记-清除算法将垃圾回收分为两个阶段:标记阶段和清除阶段。一种可行的实现是,在标
Mybatis PageHelper插件 | TSW's blog
https://tswblog.com/article/java/mybatis/page-helper/
新项目引入了PageHelper分页插件, 大大简化了分页�操作. 在查询前执行静态方法: Page page = PageHelper.startPage(pageNum, pageSize, orderBy);设置页码, 总页数, 和排序字段 查询后 用 PageInfo pageInfo = new PageInfo(page); 得到pageInfo实例或者用 PageInfo pag
git拆分工程 | TSW's blog
https://tswblog.com/article/git/git-split-project/#more
随着工程的代码量的增加, 大家可能需要对工程进行拆分, 并且拆分的同时还需要保留自工程的历史提交版本. 这时就需要用到git filter-branch命令了. filter-branch是一个非常强大的git命令, 用来重写版本历史. 通过他, 我们可以实现一些高级功能.例如: 删除所有历史版本中的某个文件 工程拆分 更具预先定义的规则修改历史提交信息等等 filter-branch执行成功
macOS系统命令行最佳实践 | TSW's blog
https://tswblog.com/article/system/macos-command-line-best-practice/
替换终端Iterm2是一个第三方终端软件, 相较于系统自带的terminal提供了更多的功能. 十分推荐. 安装步骤: 到官网下载最新版的安装包. 下载完成后是zip文件, 解压后将.app文件拖动到侧边栏的应用程序中即可完成安装
构建SaaS应用的12条建议 | TSW's blog
https://tswblog.com/article/cloud/saas-twelve-factor/
构建SaaS应用的12条建议在构建微服务应用是需要遵循12条准侧, 本文为精简版的12factor, 并添加了一些自己的理解, 如有纰漏欢迎指正: 1. 基准代码(Codebase) 一个应用对应一份基准代码, 存放到单独的一个代码库中, 在代码库中跟踪所有的修订版本 一个应用可对应于多个部署, 多个部署基于同一个代码库, 但可以基于不同版本, 不同分支.
URL编码 | TSW's blog
https://tswblog.com/article/misc/web-url-encoding/
在URL中的请求参数需要按照RFC 3986规范进行编码.
【转载】多租户 SaaS 数据库租户模式 | TSW's blog
https://tswblog.com/article/cloud/saas-tenancy-app-design-patterns/#more
原文链接: azure官方文档之 多租户 SaaS 数据库租户模式 多租户 SaaS 数据库租户模式在设计多租户 SaaS 应用程序时,必须慎重选择最符合应用程序需要的租户模型。 租户模型确定如何将每个租户的数据映射到存储。 所选的租户模型会影响应用程序设计和管理。 今后改用不同的模型可能需要付出一定的代价。 本指南介绍备选租户模型。
macOS设置L2TP类型的VPN转发指定的流量 | TSW's blog
https://tswblog.com/article/system/macos-route/
在macOS系统下常常用到L2TP类型的VPN来接入公司网络. 但是通常情况下, 这种类型的VPN一旦接入, 会导致本机所有的流量流经该VPN. 包括对外网资源的访问. 如果公司外网较慢, 或者离公司距离太远. 会严重影响访问外网的速度. 本篇文章介绍了通过修改route表的方式只让指定范围的数据包流经VPN.
使用Apache ab进行压力测试 | TSW's blog
https://tswblog.com/article/linux/apache-ab/
安装方法1sudo apt-get install apache2-utils 压力测试ab -n 总请求数 -c 并发请求数 目标资源例如 一共进行100万次请求,并发访问为401ab -n 1000000 -c 40 http://10.100.97.216:8080/EL_JSTL/EL.jsp 检测并发数用nestata -an查找ip为目标ip,端口号为80,并且状态为ESTABLI
springboot之profile | TSW's blog
https://tswblog.com/article/java/spring/springboot-profiles/
定义profile 形式1: application-{profile}.(yml|properties) 形式2: 在yaml文件中通过spring.profiles配置定义某个yaml文本段所属的profile (不推荐)12345678server: port: 9000---# 该段yaml描述的profile是devspring: profiles: devserver:
JUnit4 用法总结 | TSW's blog
https://tswblog.com/article/java/junit4-usage/
常用注解 @test 被标注方法需要为public, 无返回值 @before, @after 在每个测试前后均执行被标注的方法 @BeforeClass, @afterclass 方法必须为静态. 每个单元测试类, 在所有测试用例前后执行一次 @RunWith 默认情况下相当于指定了@RunWith(JUnit4.class), 以BlockJUnit4ClassRunner运行测试 @r
使用Let's Encrypt申请免费SSL证书 | TSW's blog
https://tswblog.com/article/misc/https-lets-encrypt/
简介Let’s Encrypt 是一个证书授权中心(CA), 可以使用实现ACME协议的客户端来生成和更新Let’s Encrypt颁发的证书 Certbot 就是一种实现了ACME协议的客户端下面以 Certbot 为例, 以一种通用的办法来获取证书
SpringMvc参数解析器 | TSW's blog
https://tswblog.com/article/java/spring/mvc-argument-resolvers/
SpringMvc 默认的参数解析器
RSA签名和数字证书 | TSW's blog
https://tswblog.com/article/misc/rsa-sign-cert/
由上一篇文章 RSA非对称加密原理 可知公钥加密后只能有私钥解密, 用来发送密文. 假设 Tony 给 Banner 发送一条加密消息, 用 Banner 的公钥加密. 如果密文被截获也无妨, 因为私钥只有Banner有. 但是存在另外一个问题, 如果另外一个人冒充 Tony, 并用公钥把加密后的信息发送给 Banner, Banner该如何鉴别? 这时就需要用到签名 签名(Signing m
SpringMvc参数解析器 | TSW's blog
https://tswblog.com/article/java/spring/mvc-ArgumentResolvers/
SpringMvc 默认的参数解析器
Linux服务器下Tomcat和Jdk的环境配置 | TSW's blog
https://tswblog.com/article/java/tomcat/tomcat-jdk-env-config/
JDK配置: 下载JDK (Oracle官网) 下载tar.gz版本的 解压,放到 /homd/xxx/ 中 添加环境变量:编辑 ~/.profile文件 (该文件主要配置环境变量)在顶部添加如下内容123456# 根据具体情况更改export JAVA_HOME=/home/xxx/java/jdk1.8.0_25 export JRE_HOME=${JAVA_HOME}
MySQL表结构操作, 用户的创建和授权 | TSW's blog
https://tswblog.com/article/db/mysql_01_ddl_dcl/
数据库结构操作DDL(Data Definition Language) : 操作数据库:查看数据库: SHOW DATABASES;选择数据库: USE 数据库名;创建数据库: CREATE DATABASE [IF NOT EXISTS] 数据库名 [charset=utf8];删除数据库: DROP DATABASE [IF EXISTS] 数据库名;设置编码: ALTER DATABASE
macOS电源管理 | TSW's blog
https://tswblog.com/article/system/macos-power-manage/
查看cpu是否减速pmset -g thermlog 查看当前电源状态的配置pmset -g 我的设置:pmset -a hibernate 0 所有的关闭休眠pmset -a standby 0 (睡眠一段时间后将镜像写入磁盘)pmset -a autopoweroff 0 (睡眠一段时间后关闭电源, 将镜像写入磁盘)pmset -a ttyskeepawake 0pmset
macOS磁盘相关的总结 | TSW's blog
https://tswblog.com/article/system/macos-ramdisk/
创建内存盘1diskutil erasevolume HFS+ RAMDisk hdiutil attach -nomount ram://xxx
xxx 的值是需要分配多少M2048, 例如:如果创建100M xxx就是 1002048http://www.jianshu.com/p/11481ae0e03d 完整脚本(2G内存盘):
Mybatis拦截器总结 | TSW's blog
https://tswblog.com/article/java/mybatis/interceptor/
我们假设在MyBatis配置了一个插件,在运行时会发生什么?1) 所有可能被拦截的处理类都会生成一个代理2) 处理类代理在执行对应方法时,判断要不要执行插件中的拦截方法3) 执行插接中的拦截方法后,推进目标的执行 如果有N个插件,就有N个代理,每个代理都要执行上面的逻辑。这里面的层层代理要多次生成动态代理,是比较影响性能的。虽然能指定插件拦截的位置,但这个是在执行方法时动态判断,初始化的时候就是简
macOS常用命令 | TSW's blog
https://tswblog.com/article/system/macos-commands/
查内存大小:sysctl -n hw.memsize 查看虚拟内存sysctl -n vm.swapusage 查看cpu信息:sysctl -a |grep cpu
关于 | TSW's blog
关于文章主要用来记录一些平时开发遇到的问题 联系方式Email: [email protected]
标签 | TSW's blog
字符编码和换行问题 | TSW's blog
https://tswblog.com/article/misc/character-encoding/
1、不同平台的换行符 平台 换行符 windows CRLF \r\n UNIX, linux, macOS (>=10.0) LF \n macOS(<10.0) CR \r \r:0x0D, 回车, CR(Carriage Return)光标回到开头 \n 0x0A, 换行, LF(Line Feed)下一行 2. 字符编码产生顺序: 🇨🇳:GB2
Oracle三种链接格式 | TSW's blog
https://tswblog.com/article/misc/oracle-connection/
Oracle三种链接格式:格式一:jdbc:oracle:thin:@<host>:<port>:<SID>一个实例只能对应一个数据库,但是一个数据库可以由多个实例对应(如RAC)SID System Identifier 唯一对应于一个数据库实例1jdbc:oracle:thin:@localhost:1521:orcl
git拆分工程 | TSW's blog
https://tswblog.com/article/git/git-split-project/#more
随着�工程的代码量的增加, 大家可能需要对工程进行拆分, 并且拆分的同时还需要保留���自工程�的历史提交�版本. �这时就需要用到git filter-branch命令了. filter-branch是一个非常强大的git命令, �用来重写版本历史. 通过他, 我们可以��实现一些高级功能.例如: 删除所有历史�版本中的某个文件 工程拆分 更具预先定义的规则�修改历史提交信息�等等 filt
git子模块操作 | TSW's blog
https://tswblog.com/article/git/git-submodule/
子模块操作123456789101112# 添加子模块. -b 执行分支, git add -b me [email protected]:tij/hexo-theme-next.git themes/next# 可不用执行, update的时候回执行. 此命令回在.git/config中添加submodule的记录git submodule init# 在主模块中 子模块的文件夹其实被当做一个
Groovy 基础 | TSW's blog
https://tswblog.com/article/groovy-base/
默认导入的包Groovy会默认导入以下包. 以下包中的类的使用不必再次导入. 其他包的导入 同java的import12345678groovy.lang.; groovy.util.; java.lang.; java.io.; java.math.BigDecimal; java.math.BigInteger; java.net.; java.util.; 语法方法调用 方法的括
标签 | TSW's blog
Spring启动过程中的一些关键点 | TSW's blog
https://tswblog.com/article/java/spring/framework-startup-keypoint/
依赖注入发生的时间当Spring IoC容器完成了所有Bean定义的定位、载入、解析和注册以后,IoC容器中已经包含了Bean定义相关的数据,但是此时IoC容器还没有对所管理的Bean进行依赖注入,依赖注入在以下两种情况发生: 用户第一次通过getBean方法向IoC容索要Bean时,IoC容器触发依赖注入。 当用户在Bean定义关闭了懒加载lazy-init=false(默认值); 容器在解析
路由的分组转发算法 | TSW's blog
https://tswblog.com/article/linux/network/route-forwarding-algorithm/#more
设数据报文从源主机S发到路由器R, 路由器R的算法流程如下: 算法流程: 提取IP的源地址 src, 与子网掩码进行与运算, 得出目的网络地址N 查路由表, 若N对应的地址与路由器直接相连, 则 直接交付 否则进行步骤3 若N对应特定路由, 或者N对应默认路由( 0.0.0.0 ), 设特定路由或者默认路由对应的下一条IP为 R, 则将数据转发到下一跳路由
MySQL查询 | TSW's blog
https://tswblog.com/article/db/mysql_02_select/
1234567select *from emp, dept, (select * from emp)wheregroup byhavingorder bylimit 多表查询分类 合并结果集(了解) 连接查询 子查询 合并结果集要求被合并的表中,列的类型和列数相同 不去除重复行 123SELECT * FROM 表1UNION ALLSELECT * FROM 表2; 去除重复行 123SE
聊聊Docker和我所遇到的虚拟化技术 | TSW's blog
https://tswblog.com/article/misc/used-virtualization/#more
在遇到Docker之前遇到过一些其他的类型虚拟化技术,按我所遇到的分为以下几种: 第一种是系统还原类的虚拟化技术。这是我最早接触到的虚拟化技术,在xp上用的一个叫做“冰点还原”的软件。这个软件主要功能就是在系统每次重启时,将系统还原到预先设定的还原点。与普通的还原软件不同,它并不是预先把系统备份,然后在需要还原时恢复指定备份;而是通过一个代理的驱动拦截所有的IO操作。将IO操作重定向到一个临时的位
用nodejs和es7的async/await实现简单http server | TSW's blog
https://tswblog.com/article/js/nodejs-http-async/
前言在有些场景中, 并不需要处理复杂的业务逻辑, 可能只需要一个简单的http接口, 用来执行一些简单的功能; 此时可尝试下nodejs的原生http来搭建server. 运行这样一个http server所需要的仅仅是一个nodejs的环境. 然后借助于灵活的js语言和对JSON的原生支持. 可快速的实现一些原型. (例如我用来处理coding的WebHook) nodejs的安装非常简单, 比
软件的版本 | TSW's blog
https://tswblog.com/article/misc/software-version/
Alpha:是内部测试版,一般不向外部发布,会有很多Bug.一般只有测试人员使用。 Beta:也是测试版,这个阶段的版本会一直加入新的功能。在Alpha版之后推出。 RC:(Release Candidate) 顾名思义么 ! 用在软件上就是候选版本。系统平台上就是发行候选版本。RC版不会再加入新的功能了,主要着重于除错。
shell总结 | TSW's blog
https://tswblog.com/article/linux/shell/
参数123456789$# 是传给脚本的参数个数$@ 是传给脚本的所有参数的列表$0 是脚本本身的名字$1 是传递给该shell脚本的第一个参数$2 是传递给该shell脚本的第二个参数$? 上一个命令的返回值$! 上一个命令的PID 变量赋值变量名=变量 (等号两边不能有空白字符)本地变量:作用域为整个bash进程 varname=val
Linux下最常用的命令 | TSW's blog
https://tswblog.com/article/linux/most-commonly-used-command/#more
curl ip.cn 查本机IP地址 开关机:立刻重启 shutdown -r now, reboot在时间为20:35时候重启 shutdown -r 20:3510分钟后自动关机 shutdown -h 10立即关机shutdown -h now, poweroff, halt
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.