Преглед на файлове

update:更新文章category的二级分类v1

lvzhiqiang преди 1 година
родител
ревизия
c162937f94
променени са 45 файла, в които са добавени 254 реда и са изтрити 208 реда
  1. 2 1
      source/_posts/af-hexo.md
  2. 64 63
      source/_posts/af-mq-kafka.md
  3. 2 1
      source/_posts/af-mq-rocketmq.md
  4. 2 1
      source/_posts/af-nodejs.md
  5. 2 1
      source/_posts/af-nosql-hbase.md
  6. 2 1
      source/_posts/af-redis.md
  7. 2 1
      source/_posts/af-springboot.md
  8. 105 104
      source/_posts/af-zookeeper.md
  9. 2 1
      source/_posts/dl-java-8.md
  10. 2 1
      source/_posts/dl-java-interview.md
  11. 2 1
      source/_posts/dl-java-jvm.md
  12. 1 0
      source/_posts/dl-markdown.md
  13. 2 1
      source/_posts/os-linux-basic.md
  14. 2 1
      source/_posts/os-linux-command.md
  15. 2 1
      source/_posts/os-linux-db-backup.md
  16. 2 1
      source/_posts/os-linux-packages-install.md
  17. 2 1
      source/_posts/os-linux-script-powerboot.md
  18. 2 1
      source/_posts/os-linux-shell.md
  19. 2 1
      source/_posts/os-linux-sysadmin-first.md
  20. 2 1
      source/_posts/os-mac-basic.md
  21. 2 1
      source/_posts/os-mac-ide.md
  22. 2 1
      source/_posts/os-mac-package.md
  23. 2 1
      source/_posts/os-mac-software.md
  24. 2 1
      source/_posts/os-mac-terminal.md
  25. 2 1
      source/_posts/st-ashampoo-snap.md
  26. 2 1
      source/_posts/st-baidupcs-go.md
  27. 2 1
      source/_posts/st-datagrip-basic.md
  28. 2 1
      source/_posts/st-eclipse.md
  29. 2 1
      source/_posts/st-finalshell.md
  30. 2 1
      source/_posts/st-git-basic.md
  31. 2 1
      source/_posts/st-git-remote.md
  32. 2 1
      source/_posts/st-git-workflow.md
  33. 2 1
      source/_posts/st-idea-advanced.md
  34. 2 1
      source/_posts/st-idea-basic.md
  35. 2 1
      source/_posts/st-jrebel-activate.md
  36. 2 1
      source/_posts/st-maven.md
  37. 2 1
      source/_posts/st-ssr-advanced.md
  38. 2 1
      source/_posts/st-ssr-basic.md
  39. 3 1
      source/_posts/st-trojan-advanced.md
  40. 2 1
      source/_posts/st-trojan-basic.md
  41. 2 1
      source/_posts/st-vps-bt.md
  42. 2 1
      source/_posts/st-youtube-dl.md
  43. 2 1
      source/_posts/te-investment-financing.md
  44. 2 1
      source/_posts/te-personal-development.md
  45. 1 0
      source/_posts/te-select.md

+ 2 - 1
source/_posts/af-hexo.md

@@ -2,7 +2,8 @@
 title: Hexo 札记
 date: 2018-12-01 18:25:23
 categories:
-- 应用框架
+- 软件
+- 其他归档
 tags:
 - hexo
 - nodejs

+ 64 - 63
source/_posts/af-mq-kafka.md

@@ -2,7 +2,8 @@
 title: 消息中间件之 Kafka
 date: 2020-04-21 13:40:23
 categories:
-- 应用框架
+- 后端
+- Java
 tags:
 - BigData
 ---
@@ -589,68 +590,68 @@ Consumer事务
     位到每个分区最近提交的offset位置继续消费。要实现自定义存储offset,需要借助ConsumerRebalanceListener,以下
     为示例代码,其中提交和获取offset的方法,需要根据所选的offset存储系统自行实现。
     ```
-    ```java
-    @Slf4j
-    public class CustomOffsetConsumer {
-        private static Map<TopicPartition, Long> currentOffset = new HashMap<>();
-    
-        public static void main(String[] args) throws IOException {
-            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-            // 1.读取kafka消费者的配置信息 具体配置参数可参考ConsumerConfig,CommonClientConfigs
-            Properties props = new Properties();
-            props.load(ClassLoader.getSystemResourceAsStream("newConsumer.properties"));
-            // 1.1重置消费者的offset,可选earliest(最早的)和latest(最新的,默认)
-            props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
-            // 1.2关闭自动提交offset
-            props.put("enable.auto.commit", "false");
-            // 2.创建consumer对象
-            KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
-            // 3.订阅主题
-            consumer.subscribe(Arrays.asList("test"), new ConsumerRebalanceListener() {
-                //该方法会在Rebalance之前调用
-                @Override
-                public void onPartitionsRevoked(Collection<TopicPartition> partitions) {
-                    commitOffset(currentOffset);
-                }
-                //该方法会在Rebalance之后调用
-                @Override
-                public void onPartitionsAssigned(Collection<TopicPartition> partitions) {
-                    currentOffset.clear();
-                    for (TopicPartition partition : partitions) {
-                        //定位到最近提交的offset位置继续消费
-                        consumer.seek(partition, getOffset(partition));
-                    }
-                }
-            });
-            while (true) {
-                // 4.拉取数据
-                ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(1000L));
-                // 4.1消费数据
-                for (ConsumerRecord<String, String> record : records) {
-                    log.info("分区:{},偏移量:{},值:{}", record.partition(), record.offset(), record.value());
-                }
-                // 4.2.b异步提交
-                consumer.commitAsync(new OffsetCommitCallback() {
-                    @Override
-                    public void onComplete(Map<TopicPartition, OffsetAndMetadata> offsets, Exception exception) {
-                        if (exception != null) {
-                            log.error("Commit failed for {}", offsets, exception);
-                        }
-                    }
-                });
-            }
-        }
-    
-        //获取某分区的最新offset
-        private static long getOffset(TopicPartition partition) {
-            return 0;
-        }
-    
-        //提交该消费者所有分区的offset
-        private static void commitOffset(Map<TopicPartition, Long> currentOffset) {
-        }
-    }
-    ```
+  ```java
+  @Slf4j
+  public class CustomOffsetConsumer {
+      private static final Map<TopicPartition, Long> currentOffset = new HashMap<>();
+  
+      public static void main(String[] args) throws IOException {
+          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+          // 1.读取kafka消费者的配置信息 具体配置参数可参考ConsumerConfig,CommonClientConfigs
+          Properties props = new Properties();
+          props.load(ClassLoader.getSystemResourceAsStream("newConsumer.properties"));
+          // 1.1重置消费者的offset,可选earliest(最早的)和latest(最新的,默认)
+          props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
+          // 1.2关闭自动提交offset
+          props.put("enable.auto.commit", "false");
+          // 2.创建consumer对象
+          KafkaConsumer<String, String> consumer = new KafkaConsumer<>(props);
+          // 3.订阅主题
+          consumer.subscribe(Arrays.asList("test"), new ConsumerRebalanceListener() {
+              //该方法会在Rebalance之前调用
+              @Override
+              public void onPartitionsRevoked(Collection<TopicPartition> partitions) {
+                  commitOffset(currentOffset);
+              }
+              //该方法会在Rebalance之后调用
+              @Override
+              public void onPartitionsAssigned(Collection<TopicPartition> partitions) {
+                  currentOffset.clear();
+                  for (TopicPartition partition : partitions) {
+                      //定位到最近提交的offset位置继续消费
+                      consumer.seek(partition, getOffset(partition));
+                  }
+              }
+          });
+          while (true) {
+              // 4.拉取数据
+              ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(1000L));
+              // 4.1消费数据
+              for (ConsumerRecord<String, String> record : records) {
+                  log.info("分区:{},偏移量:{},值:{}", record.partition(), record.offset(), record.value());
+              }
+              // 4.2.b异步提交
+              consumer.commitAsync(new OffsetCommitCallback() {
+                  @Override
+                  public void onComplete(Map<TopicPartition, OffsetAndMetadata> offsets, Exception exception) {
+                      if (exception != null) {
+                          log.error("Commit failed for {}", offsets, exception);
+                      }
+                  }
+              });
+          }
+      }
+  
+      //获取某分区的最新offset
+      private static long getOffset(TopicPartition partition) {
+          return 0;
+      }
+  
+      //提交该消费者所有分区的offset
+      private static void commitOffset(Map<TopicPartition, Long> currentOffset) {
+      }
+  }
+```
   
 ### `自定义Interceptor`
 

+ 2 - 1
source/_posts/af-mq-rocketmq.md

@@ -2,7 +2,8 @@
 title: 消息中间件之 RocketMQ
 date: 2019-03-10 10:06:31
 categories:
-- 应用框架
+- 后端
+- Java
 tags:
 - 分布式
 ---

+ 2 - 1
source/_posts/af-nodejs.md

@@ -2,7 +2,8 @@
 title: NodeJS 札记
 date: 2018-12-01 16:28:22
 categories:
-- 应用框架
+- 前端
+- 开发语言
 tags:
 - nodejs
 ---

+ 2 - 1
source/_posts/af-nosql-hbase.md

@@ -2,7 +2,8 @@
 title: NoSQL数据库之HBase
 date: 2020-05-26 15:19:46
 categories:
-- 应用框架
+- 后端
+- BigData
 tags:
 - BigData
 ---

+ 2 - 1
source/_posts/af-redis.md

@@ -2,7 +2,8 @@
 title: 分布式系列之 Redis&Ehcache
 date: 2019-04-13 16:56:23
 categories:
-- 应用框架
+- 后端
+- Java
 tags:
 - 分布式
 ---

+ 2 - 1
source/_posts/af-springboot.md

@@ -2,7 +2,8 @@
 title: 微服务架构之 SpringBoot
 date: 2019-04-04 18:17:48
 categories:
-- 应用框架
+- 后端
+- Java
 tags:
 - 分布式
 ---

+ 105 - 104
source/_posts/af-zookeeper.md

@@ -2,7 +2,8 @@
 title: 分布式协调工具之 Zookeeper
 date: 2020-07-29 13:52:23
 categories:
-- 应用框架
+- 后端
+- Java
 tags:
 - 分布式
 ---
@@ -301,110 +302,110 @@ zk的数据模型的结构与`unix文件系统很类似`,整体上可以看作
     [zk: localhost:2181(CONNECTED) 10] create /servers "servers"
     ```
 - 服务器端向ZK注册并写入信息
-    ```java
-    import java.io.IOException;
-    import org.apache.zookeeper.CreateMode;
-    import org.apache.zookeeper.WatchedEvent;
-    import org.apache.zookeeper.Watcher;
-    import org.apache.zookeeper.ZooKeeper;
-    import org.apache.zookeeper.ZooDefs.Ids;
-    
-    public class DistributeServer {
-        private static String connectString = "hadoop102:2181,hadoop103:2181,hadoop104:2181";
-        private static int sessionTimeout = 2000;
-        private ZooKeeper zk = null;
-        private String parentNode = "/servers";
-        
-        // 创建到zk的客户端连接
-        public void getConnect() throws IOException{
-            zk = new ZooKeeper(connectString, sessionTimeout, new Watcher() {
-                @Override
-                public void process(WatchedEvent event) {
-                }
-            });
-        }
-        // 注册服务器
-        public void registServer(String hostname) throws Exception{
-            String create = zk.create(parentNode + "/server", hostname.getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL);
-            System.out.println(hostname +" is online "+ create);
-        }
-        // 业务功能
-        public void business(String hostname) throws Exception{
-            System.out.println(hostname+" is working ...");
-            Thread.sleep(Long.MAX_VALUE);
-        }
-        
-        public static void main(String[] args) throws Exception {
-            // 1获取zk连接
-            DistributeServer server = new DistributeServer();
-            server.getConnect();
-            // 2 利用zk连接注册服务器信息
-            server.registServer(args[0]);
-            // 3 启动业务功能
-            server.business(args[0]);
-        }
-    }
-    ```
+  ```java
+  import java.io.IOException;
+  import org.apache.zookeeper.CreateMode;
+  import org.apache.zookeeper.WatchedEvent;
+  import org.apache.zookeeper.Watcher;
+  import org.apache.zookeeper.ZooKeeper;
+  import org.apache.zookeeper.ZooDefs.Ids;
+  
+  public class DistributeServer {
+      private static String connectString = "hadoop102:2181,hadoop103:2181,hadoop104:2181";
+      private static int sessionTimeout = 2000;
+      private ZooKeeper zk = null;
+      private final String parentNode = "/servers";
+      
+      // 创建到zk的客户端连接
+      public void getConnect() throws IOException{
+          zk = new ZooKeeper(connectString, sessionTimeout, new Watcher() {
+              @Override
+              public void process(WatchedEvent event) {
+              }
+          });
+      }
+      // 注册服务器
+      public void registServer(String hostname) throws Exception{
+          String create = zk.create(parentNode + "/server", hostname.getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL_SEQUENTIAL);
+          System.out.println(hostname +" is online "+ create);
+      }
+      // 业务功能
+      public void business(String hostname) throws Exception{
+          System.out.println(hostname+" is working ...");
+          Thread.sleep(Long.MAX_VALUE);
+      }
+      
+      public static void main(String[] args) throws Exception {
+          // 1获取zk连接
+          DistributeServer server = new DistributeServer();
+          server.getConnect();
+          // 2 利用zk连接注册服务器信息
+          server.registServer(args[0]);
+          // 3 启动业务功能
+          server.business(args[0]);
+      }
+  }
+```
 - 客户端向ZK注册并监听
-    ```java
-    import java.io.IOException;
-    import java.util.ArrayList;
-    import java.util.List;
-    import org.apache.zookeeper.WatchedEvent;
-    import org.apache.zookeeper.Watcher;
-    import org.apache.zookeeper.ZooKeeper;
-    
-    public class DistributeClient {
-        private static String connectString = "hadoop102:2181,hadoop103:2181,hadoop104:2181";
-        private static int sessionTimeout = 2000;
-        private ZooKeeper zk = null;
-        private String parentNode = "/servers";
-    
-        // 创建到zk的客户端连接
-        public void getConnect() throws IOException {
-            zk = new ZooKeeper(connectString, sessionTimeout, new Watcher() {
-                @Override
-                public void process(WatchedEvent event) {
-                    // 再次启动监听
-                    try {
-                        getServerList();
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    }
-                }
-            });
-        }
-        // 获取服务器列表信息
-        public void getServerList() throws Exception {
-            // 1获取服务器子节点信息,并且对父节点进行监听
-            List<String> children = zk.getChildren(parentNode, true);
-            // 2存储服务器信息列表
-            ArrayList<String> servers = new ArrayList<>();
-            // 3遍历所有节点,获取节点中的主机名称信息
-            for (String child : children) {
-                byte[] data = zk.getData(parentNode + "/" + child, false, null);
-                servers.add(new String(data));
-            }
-            // 4打印服务器列表信息
-            System.out.println(servers);
-        }
-        // 业务功能
-        public void business() throws Exception{
-            System.out.println("client is working ...");
-            Thread.sleep(Long.MAX_VALUE);
-        }
-    
-        public static void main(String[] args) throws Exception {
-            // 1获取zk连接
-            DistributeClient client = new DistributeClient();
-            client.getConnect();
-            // 2获取servers的子节点信息,从中获取服务器信息列表
-            client.getServerList();
-            // 3业务进程启动
-            client.business();
-        }
-    }
-    ```
+  ```java
+  import java.io.IOException;
+  import java.util.ArrayList;
+  import java.util.List;
+  import org.apache.zookeeper.WatchedEvent;
+  import org.apache.zookeeper.Watcher;
+  import org.apache.zookeeper.ZooKeeper;
+  
+  public class DistributeClient {
+      private static String connectString = "hadoop102:2181,hadoop103:2181,hadoop104:2181";
+      private static int sessionTimeout = 2000;
+      private ZooKeeper zk = null;
+      private final String parentNode = "/servers";
+  
+      // 创建到zk的客户端连接
+      public void getConnect() throws IOException {
+          zk = new ZooKeeper(connectString, sessionTimeout, new Watcher() {
+              @Override
+              public void process(WatchedEvent event) {
+                  // 再次启动监听
+                  try {
+                      getServerList();
+                  } catch (Exception e) {
+                      e.printStackTrace();
+                  }
+              }
+          });
+      }
+      // 获取服务器列表信息
+      public void getServerList() throws Exception {
+          // 1获取服务器子节点信息,并且对父节点进行监听
+          List<String> children = zk.getChildren(parentNode, true);
+          // 2存储服务器信息列表
+          ArrayList<String> servers = new ArrayList<>();
+          // 3遍历所有节点,获取节点中的主机名称信息
+          for (String child : children) {
+              byte[] data = zk.getData(parentNode + "/" + child, false, null);
+              servers.add(new String(data));
+          }
+          // 4打印服务器列表信息
+          System.out.println(servers);
+      }
+      // 业务功能
+      public void business() throws Exception{
+          System.out.println("client is working ...");
+          Thread.sleep(Long.MAX_VALUE);
+      }
+  
+      public static void main(String[] args) throws Exception {
+          // 1获取zk连接
+          DistributeClient client = new DistributeClient();
+          client.getConnect();
+          // 2获取servers的子节点信息,从中获取服务器信息列表
+          client.getServerList();
+          // 3业务进程启动
+          client.business();
+      }
+  }
+```
 
 ## 参考链接
 

+ 2 - 1
source/_posts/dl-java-8.md

@@ -2,7 +2,8 @@
 title: Java 新特性:8
 date: 2019-03-30 15:04:29
 categories:
-- 开发语言
+- 后端
+- Java
 tags:
 - java
 ---

+ 2 - 1
source/_posts/dl-java-interview.md

@@ -2,7 +2,8 @@
 title: Java常见面试题
 date: 2019-08-18 16:46:58
 categories:
-- 开发语言
+- 后端
+- Java
 tags:
 - java
 ---

+ 2 - 1
source/_posts/dl-java-jvm.md

@@ -2,7 +2,8 @@
 title: Java 性能调优:JVM
 date: 2019-03-30 15:08:39
 categories:
-- 开发语言
+- 后端
+- Java
 tags:
 - java
 ---

+ 1 - 0
source/_posts/dl-markdown.md

@@ -2,6 +2,7 @@
 title: Markdown 札记
 date: 2018-12-01 15:54:44
 categories:
+- 前端
 - 开发语言
 tags:
 - markdown

+ 2 - 1
source/_posts/os-linux-basic.md

@@ -2,7 +2,8 @@
 title: Linux 系统入门:基础
 date: 2018-12-23 17:33:08
 categories:
-- 操作系统
+- 运维
+- Linux
 tags:
 - linux
 ---

+ 2 - 1
source/_posts/os-linux-command.md

@@ -2,7 +2,8 @@
 title: Linux 系统入门:常用命令
 date: 2018-12-31 15:10:20
 categories:
-- 操作系统
+- 运维
+- Linux
 tags:
 - linux
 ---

+ 2 - 1
source/_posts/os-linux-db-backup.md

@@ -2,7 +2,8 @@
 title: Linux 系统应用:Mysql数据库自动备份脚本
 date: 2019-03-09 15:23:53
 categories:
-- 操作系统
+- 运维
+- Linux
 tags:
 - linux
 ---

+ 2 - 1
source/_posts/os-linux-packages-install.md

@@ -2,7 +2,8 @@
 title: Linux 系统应用:常用程序包的安装与配置
 date: 2019-03-09 17:07:04
 categories:
-- 操作系统
+- 运维
+- Linux
 tags:
 - linux
 ---

+ 2 - 1
source/_posts/os-linux-script-powerboot.md

@@ -2,7 +2,8 @@
 title: Linux 系统应用:添加开机启动服务/脚本
 date: 2019-03-09 15:27:42
 categories:
-- 操作系统
+- 运维
+- Linux
 tags:
 - linux
 ---

+ 2 - 1
source/_posts/os-linux-shell.md

@@ -2,7 +2,8 @@
 title: Linux 系统入门:Shell 脚本
 date: 2019-01-02 20:51:18
 categories:
-- 操作系统
+- 运维
+- Linux
 tags:
 - linux
 ---

+ 2 - 1
source/_posts/os-linux-sysadmin-first.md

@@ -2,7 +2,8 @@
 title: Linux 系统管理:磁盘、文件系统、RAID、LVM2、程序包
 date: 2019-01-21 21:19:31
 categories:
-- 操作系统
+- 运维
+- Linux
 tags:
 - linux
 ---

+ 2 - 1
source/_posts/os-mac-basic.md

@@ -2,7 +2,8 @@
 title: MacOS 系统入门:系统使用
 date: 2019-10-27 16:01:06
 categories:
-- 操作系统
+- 运维
+- Mac
 tags:
 - mac
 ---

+ 2 - 1
source/_posts/os-mac-ide.md

@@ -2,7 +2,8 @@
 title: MacOS 系统进阶:开发环境Java + Node + Docker
 date: 2019-11-24 17:20:38
 categories:
-- 操作系统
+- 运维
+- Mac
 tags:
 - mac
 ---

+ 2 - 1
source/_posts/os-mac-package.md

@@ -2,7 +2,8 @@
 title: MacOS 系统进阶:包管理工具
 date: 2019-11-22 15:07:31
 categories:
-- 操作系统
+- 运维
+- Mac
 tags:
 - mac
 ---

+ 2 - 1
source/_posts/os-mac-software.md

@@ -2,7 +2,8 @@
 title: MacOS 系统入门:常用软件
 date: 2019-10-27 18:53:39
 categories:
-- 操作系统
+- 运维
+- Mac
 tags:
 - mac
 ---

+ 2 - 1
source/_posts/os-mac-terminal.md

@@ -2,7 +2,8 @@
 title: MacOS 系统进阶:终端方案iTerm2 + Zsh + Vim
 date: 2019-11-24 14:02:26
 categories:
-- 操作系统
+- 运维
+- Mac
 tags:
 - mac
 ---

+ 2 - 1
source/_posts/st-ashampoo-snap.md

@@ -2,7 +2,8 @@
 title: 阿香婆屏幕截图工具 Ashampoo Snap
 date: 2018-12-01 18:18:35
 categories:
-- 软件工具
+- 软件
+- 其他归档
 tags:
 - screenshot
 ---

+ 2 - 1
source/_posts/st-baidupcs-go.md

@@ -2,7 +2,8 @@
 title: 度盘命令行下载利器BaiduPCS-Go
 date: 2020-04-16 14:32:42
 categories:
-- 软件工具
+- 软件
+- 资源下载
 tags:
 - fq
 ---

+ 2 - 1
source/_posts/st-datagrip-basic.md

@@ -2,7 +2,8 @@
 title: DataGrip札记:基础
 date: 2019-12-10 09:52:05
 categories:
-- 软件工具
+- 后端
+- Java
 tags:
 - jetbrains
 ---

+ 2 - 1
source/_posts/st-eclipse.md

@@ -2,7 +2,8 @@
 title: Eclipse 札记
 date: 2018-12-01 16:45:09
 categories:
-- 软件工具
+- 后端
+- Java
 tags:
 - eclipse
 ---

+ 2 - 1
source/_posts/st-finalshell.md

@@ -2,7 +2,8 @@
 title: 超强SSH客户端 FinalShell
 date: 2018-12-01 17:57:50
 categories:
-- 软件工具
+- 软件
+- 其他归档
 tags:
 - ssh
 ---

+ 2 - 1
source/_posts/st-git-basic.md

@@ -2,7 +2,8 @@
 title: Git 札记:基础
 date: 2018-12-01 17:25:42
 categories:
-- 软件工具
+- 后端
+- Java
 tags:
 - 互联网工程
 ---

+ 2 - 1
source/_posts/st-git-remote.md

@@ -2,7 +2,8 @@
 title: Git 札记:远程库
 date: 2018-12-01 17:46:49
 categories:
-- 软件工具
+- 后端
+- Java
 tags:
 - 互联网工程
 ---

+ 2 - 1
source/_posts/st-git-workflow.md

@@ -2,7 +2,8 @@
 title: Git 札记:工作流
 date: 2018-12-01 17:54:00
 categories:
-- 软件工具
+- 后端
+- Java
 tags:
 - 互联网工程
 ---

+ 2 - 1
source/_posts/st-idea-advanced.md

@@ -2,7 +2,8 @@
 title: IDEA 札记:进阶
 date: 2018-12-01 17:17:42
 categories:
-- 软件工具
+- 后端
+- Java
 tags:
 - jetbrains
 ---

+ 2 - 1
source/_posts/st-idea-basic.md

@@ -2,7 +2,8 @@
 title: IDEA 札记:基础
 date: 2018-12-01 16:51:07
 categories:
-- 软件工具
+- 后端
+- Java
 tags:
 - jetbrains
 ---

+ 2 - 1
source/_posts/st-jrebel-activate.md

@@ -2,7 +2,8 @@
 title: IDEA热部署插件JRebel
 date: 2020-01-13 16:26:33
 categories:
-- 软件工具
+- 后端
+- Java
 tags:
 - jetbrains
 ---

+ 2 - 1
source/_posts/st-maven.md

@@ -2,7 +2,8 @@
 title: Maven 札记:基础
 date: 2019-03-14 17:44:01
 categories:
-- 软件工具
+- 后端
+- Java
 tags:
 - maven
 ---

+ 2 - 1
source/_posts/st-ssr-advanced.md

@@ -2,7 +2,8 @@
 title: SSR科学上网:进阶
 date: 2018-12-09 15:50:16
 categories:
-- 软件工具
+- 软件
+- 科学上网
 tags:
 - fq
 ---

+ 2 - 1
source/_posts/st-ssr-basic.md

@@ -2,7 +2,8 @@
 title: SSR科学上网:基础
 date: 2018-12-09 13:14:25
 categories:
-- 软件工具
+- 软件
+- 科学上网
 tags:
 - fq
 ---

+ 3 - 1
source/_posts/st-trojan-advanced.md

@@ -2,7 +2,8 @@
 title: Trojan科学上网:进阶
 date: 2020-04-06 18:28:31
 categories:
-- 软件工具
+- 软件
+- 科学上网
 tags:
 - fq
 ---
@@ -95,6 +96,7 @@ tags:
 
 <https://naiyous.com/3717.html>
 <https://v2rayssr.com/trojancdn.html>
+<https://github.com/Loyalsoldier/v2ray-rules-dat>
 
 ## 结束语
 

+ 2 - 1
source/_posts/st-trojan-basic.md

@@ -2,7 +2,8 @@
 title: Trojan科学上网:基础
 date: 2020-03-08 13:40:47
 categories:
-- 软件工具
+- 软件
+- 科学上网
 tags:
 - fq
 ---

+ 2 - 1
source/_posts/st-vps-bt.md

@@ -2,7 +2,8 @@
 title: VPS离线BT下载利器
 date: 2020-04-06 16:39:17
 categories:
-- 软件工具
+- 软件
+- 科学上网
 tags:
 - fq
 ---

+ 2 - 1
source/_posts/st-youtube-dl.md

@@ -2,7 +2,8 @@
 title: 命令行下载神器youtube-dl
 date: 2020-03-29 17:28:33
 categories:
-- 软件工具
+- 软件
+- 资源下载
 tags:
 - fq
 ---

+ 2 - 1
source/_posts/te-investment-financing.md

@@ -2,7 +2,8 @@
 title: 投资理财:基础
 date: 2019-08-28 17:01:01
 categories:
-- 经典示例
+- 阅读
+- 投资理财
 tags:
 - 投资理财
 ---

+ 2 - 1
source/_posts/te-personal-development.md

@@ -2,7 +2,8 @@
 title: 个人发展战略:基础
 date: 2019-10-31 13:50:30
 categories:
-- 经典示例
+- 阅读
+- 鸡汤笔记
 tags:
 - 鸡汤
 ---

+ 1 - 0
source/_posts/te-select.md

@@ -2,6 +2,7 @@
 title: 可输入可选择可模糊查询的 select 下拉
 date: 2018-12-02 19:00:12
 categories:
+- 前端
 - 经典示例
 tags:
 - html