zhangxiaoyu преди 3 години
родител
ревизия
e290e79a53

+ 8 - 0
张晓宇日记/21-11月学习日志.md

@@ -0,0 +1,8 @@
1
+# JAVA BASE 学习日志
2
+* (11-19-11-21) 向下转型,向上转型,多态数组多态练习、super关键字、零钱通项目。
3
+* 11-22 零钱通项目完成,使用OOP实现,==运算符判断
4
+* 11-23 equals判断基本类型以及引用类型,重写equals方法,euqals小demo练习、hashCode 、toString方法
5
+* 11-25 rabbitmq 了解交换机,直连模式(路由模式),fanout(发布订阅)模式,了解routingKey
6
+* 11-28 冒泡排序、以及面向对象homework01、装箱与拆箱
7
+* 11-29 面向对象的homework01-05、接口课堂练习
8
+* 11-30 面向对象的homeWork08-17、复习了多态、动态绑定机制

+ 42 - 0
张晓宇日记/21-12月学习日志.md

@@ -0,0 +1,42 @@
1
+* 12-01 今天被VScode node debug模式搞得很烦,后面发现是VScode 版本的问题原本是 1.62.5修改为 1.55.2就可以了
2
+* 12-02 查看韩顺平OPP 章节总结 查看OOP高级章程总结、复习装箱与拆箱,wrapper、包装类测试、
3
+* 12-04-06 包装类与String 相互转换、Integer创建机制,String结构剖析、String对象特性
4
+* 12-07 String对象特性,String常用方法(substring,indexof,lastIndexof等)
5
+* 12-08 使用了个免费一个月的阿里云服务器,安装了docker nginx oh-my-zsh。
6
+java String 中的compareTo方法与 format方法 、StringBuffer、StringBuffer与String相互转化,StringBuffer常用方法(append,delete,replace,insert)
7
+* 12-09 自己台式机上安装了 windows terminal,StringBuffer练习,StringBuilder,对比了 String、StringBuffer、StringBuilder 效率 其中String最低,StringBuilder最高,StringBuffer其次
8
+* 12-11-12 Arrays源码分析,运用toString 以及分析运行了sort函数的源码,用冒泡排序自己实现如下:
9
+```java
10
+public static void sortMaoPao(int[] ints, Comparator comparator) {
11
+        int temp;
12
+        for (int i = 0; i < ints.length -1; i++) {
13
+            for (int j = 0; j < ints.length-i-1; j++) {
14
+                if(comparator.compare(ints[j],ints[j+1]) > 0) {
15
+                    temp = ints[j];
16
+                    ints[j] = ints[j+1];
17
+                    ints[j+1] = temp;
18
+                }
19
+            }
20
+        }
21
+    }
22
+```
23
+* 12-13 -1 今天换优衣库衣服有点儿忙从晚上9点半才开始,将昨天的ArraysExercise 练习完成 需求是: 
24
+***案例:自定义Book类,里面包含name和price,按price排序(从大到小)。要求使用两种方式排序,对对象的某个属性排序,有一个 Book[] books= 5本书对象.***
25
+``` java 
26
+ // 核心代码是
27
+ Arrays.sort(books, new Comparator() {
28
+            @Override
29
+            public int compare(Object o1, Object o2) {
30
+                Book book1 = (Book) o1;
31
+                Book book2 = (Book) o2;
32
+                // 价格从大到小
33
+                return  book2.getPrice()-book1.getPrice()>0?1:-1;
34
+                // 书名从小到大
35
+               // return book1.getName().length() - book2.getName().length();
36
+            }
37
+        });
38
+```
39
+* 12-13 -2 System类常见方法与案例、Date的使用方法类图以及案例
40
+* 12-14 今晚加班将demo中的 stompjs 迁移至apk包中发现不能使用websocket,便使用uni的插件进行socket连接。学习了Date 、Calendar、LocalDateTime使用示例方法
41
+* 12-15 编写了String字符串翻转问题, 注册处理题(判断数字密码纯数字,邮箱@字符必须在 .之前等,homework03 名字首字母大写以及重排问题)
42
+* 12-16 java集合、集合主要是两种(单列集合、双列集合)

+ 1 - 0
张晓宇日记/JDBC学习笔记.md

@@ -0,0 +1 @@
1
+# JDBC学习笔记

+ 3 - 0
张晓宇日记/enum枚举笔记.md

@@ -0,0 +1,3 @@
1
+## 枚举类:
2
+* 枚举类不能继承别的类,因为enum已经隐式的继承了Enum 所以不能再继承其他类
3
+* 枚举类可正常实现接口

+ 11 - 0
张晓宇日记/java类学习笔记.md

@@ -0,0 +1,11 @@
1
+## 类五大成员
2
+* 属性
3
+* 方法
4
+* 构造器
5
+* 代码块
6
+* 内部类 (学习重点,底层源码 很多都是内部类)
7
+## 内部类的分类
8
+* 局部内部类 (1.定义在方法或代码块中。2作用域在方法体或代码块中 3 本质还是个类)
9
+* 匿名内部类 (1、本质还是类 2、内部类 3、该类没有名字 4、同时还是个对象)
10
+* 成员内部类
11
+* 静态内部类

+ 11 - 0
张晓宇日记/上报日志功能梳理.md

@@ -0,0 +1,11 @@
1
+# 扫描系统上报日志功能点梳理
2
+## 主要是是
3
+* 第一项 
4
+   * 1
5
+* 第二项
6
+ 
7
+``` javascript
8
+
9
+
10
+
11
+```

+ 61 - 0
张晓宇日记/单例模式.md

@@ -0,0 +1,61 @@
1
+# 单例模式
2
+## 饿汉模式(适合多线程)
3
+* 优缺点说明:
4
+1)优点:这种写法比较简单,就是在类装载的时候就完成实例化。避免了线程同步问题。
5
+2)缺点:在类装载的时候就完成实例化,没有达到Lazy Loading的效果。如果从始
6
+至终从未使用过这个实例,则会造成内存的浪费
7
+* 结论
8
+3)这种方式基于classloder机制避免了多线程的同步问题,不过,instance在类装载
9
+时就实例化,在单例模式中大多数都是调用getInstance方法,但是导致类装载的原因有很多种,因此不能确定有其他的方式(或者其他的静态方法)导致类装载,这时候初始化instance就没有达到lazy loading的效果
10
+4)结论:这种单例模式可用,可能造成内存浪费
11
+``` java 
12
+public class Singleton1 {
13
+    public static void main(String[] args) {
14
+        HungrySingle single1 = HungrySingle.getInstance();
15
+        HungrySingle single2 = HungrySingle.getInstance();
16
+        System.out.println(single1.hashCode());
17
+        System.out.println(single2.hashCode());
18
+    }
19
+}
20
+// 饿汉式(静态变量式)
21
+class HungrySingle {
22
+   // 构造函数私有
23
+    private HungrySingle() {
24
+    }
25
+    private static final HungrySingle hungrySingle = new HungrySingle();
26
+    // 返回instance
27
+    public static HungrySingle getInstance() {
28
+        return hungrySingle;
29
+    }
30
+}
31
+```
32
+## 懒汉模式(适合单线程)
33
+* 说明: 多线程下同时进入代码模块可能对象实例会被创建多次
34
+``` java 
35
+public class LazySingletonOpt {
36
+    public static void main(String[] args) {
37
+        LazySingleton singleton1 = LazySingleton.getInstance();
38
+        LazySingleton singleton2 = LazySingleton.getInstance();
39
+        if(singleton1 == singleton2) {
40
+            
41
+        }
42
+        System.out.println(singleton1.hashCode());
43
+        System.out.println(singleton2.hashCode());
44
+    }
45
+}
46
+// 懒汉式
47
+class LazySingleton {
48
+    private static LazySingleton lazySingleton = null;
49
+    private LazySingleton() {};
50
+    // 判断使用到该方法时再进行创建 lazySingleton
51
+    public static LazySingleton getInstance() {
52
+        if(lazySingleton == null) {
53
+            lazySingleton = new LazySingleton();
54
+        }
55
+        return lazySingleton;
56
+    }
57
+
58
+}
59
+```
60
+* 懒汉式为确保多线程安全可加 synchronized 但其实这个方法只执行一次实例化代码就够了,后面的想获得该类实例,直接return就行了。方法进行同步效率太低
61
+

+ 57 - 0
张晓宇日记/笔记1.md

@@ -0,0 +1,57 @@
1
+# 扫描系统上报日志功能点梳理
2
+## 主要是是
3
+# 技能清单 
4
+* Java 熟悉掌握Java语法,spring boot 框架
5
+* PHP 熟练掌握PHP语法,熟练使用laravel框架
6
+* 熟练使用Mysql,掌握sql基本语法结构,
7
+* 熟悉JavaScript,熟练使用Vue,Nodejs
8
+* Linux 熟悉Linux使用基本指令
9
+* 熟练使用Git版本管理工具进行团队协作开发
10
+
11
+
12
+技术栈:Ubuntu + electron + nodejs + vue + spring boot + mysql
13
+项目介绍:
14
+   该项目是与中科院合肥物质科学研究院,共同研发的一款可以量脚定鞋、鞋垫功能的跨平台应用(Ubuntu和Windows)。
15
+责任描述:
16
+将PC端原有生产环境从windows迁移至Ubuntu下
17
+与中间件通过控制协议进行收发数据控制设备量测逻辑
18
+基于B/S架构,使用Java和Vue进行系统服务端以及客户端的开发
19
+nodeJs上传本地日志功能、量测原始数据上传至七牛云
20
+使用Node ChildProcess模块进行连接wifi、切换系统分辨率功能
21
+使用webSocket与rabbitMq开发设备用户扫码登录功能
22
+使用electron-builder进行打包部署、软件更新功能
23
+前端数据可视化(基于canvas和Three.js),解决Three.js内存问题
24
+Ubuntu环境下PC端设备连接系统wifi、平板端设备通过bleno让PC端连接wifi功能
25
+与中间件插件通过socket.io根据传输协议进行传输数据,并发送给前端展示
26
+
27
+技术栈: Android + Cordova + Vue 
28
+项目介绍:
29
+  该项目是使用cordova为框架,使用vue为前端为主体的一个配合扫描软件使用的移动软件
30
+我的职责:
31
+Vue + Cordova 项目的集成
32
+通过bleno插件扫描附近蓝牙设备,通过蓝牙发送数据使扫描软件连接至同一wifi
33
+通过vue-socket.io与扫描软件通信进行控制量测流程
34
+使用echart进行绘画量测过程中的偏振图以及椭圆信息
35
+使用Cordova相机插件进行拍照并调用相关接口获取用户体态信息与健康信息
36
+
37
+技术栈:微信第三方平台 + Laravel + Vue 
38
+项目介绍:
39
+  该项目是为代理商将自己的微信公众号以及微信小程序接入定制流程的系统
40
+我的职责:
41
+
42
+使用Laravel编写第三方平台授权事件接收以及消息与事件接收接口
43
+使用Redis存储微信接口返回的ticket、access_token等数据信息
44
+在系统后台完成代小程序上传代码、版本上传、提交审核、版本上线、小程序体验者绑定、生成体验版二维码
45
+
46
+扫描代小程序用户授权以及手机号授权,用户建档功能
47
+
48
+双驰商家crm小程序
49
+技术栈:微信小程序 + Laravel
50
+项目介绍:
51
+  小程序主要服务于线下门店人员,主要功能是查看用户测量数据并打标签备注,以及扫描设备故障报修
52
+我的职责:
53
+  门店新人员扫描小程序码进行建档功能。
54
+  
55
+扫描系统H5
56
+
57
+

+ 85 - 0
张晓宇日记/线程学习笔记.md

@@ -0,0 +1,85 @@
1
+# 线程学习笔记
2
+## 并发与并行
3
+* 并发:单核执行多任务切换
4
+* 并行:多核同一时刻执行多个任务 
5
+* tips **并发与并行可能同时存在** 
6
+ 
7
+``` java
8
+// 获取当前电脑cpu个数
9
+Runtime runtime = Runtime.getRuntime();
10
+System.out.println(runtime.availableProcessors());
11
+```
12
+## JAVA创建线程
13
+* 1.继承Thread类 重写run方法
14
+* 2.实现Runnable接口 重写run 方法 
15
+* tips Thread 类实现了Runnable接口 、
16
+* 可以用 **jconsole** 监控java进程的线程
17
+``` java
18
+public class Thread01 {
19
+    public static void main(String[] args) throws InterruptedException {
20
+        Cat cat = new Cat();
21
+        cat.start();
22
+        for(int i=0;i<40;i++) {
23
+            Thread.sleep(1000);
24
+            System.out.println(i);
25
+        }
26
+        System.out.println(Thread.currentThread().getName());
27
+    }
28
+}
29
+
30
+class Cat extends Thread{
31
+    @Override
32
+    public void run() {
33
+        int i = 0;
34
+        while (true) {
35
+            i++;
36
+            try {
37
+               System.out.println(Thread.currentThread().getName());
38
+               Thread.sleep(1000);
39
+            } catch (InterruptedException e) {
40
+                e.printStackTrace();
41
+            }
42
+            if(i==60) {
43
+                break;
44
+            }
45
+        }
46
+
47
+    }
48
+}
49
+```
50
+## 为什么要执行子进程调用的是start方法而不是run方法?
51
+* 如果直接执行run 方法则无法创建新的线程,只是单单执行了run方法
52
+* 源码中start0 是本地方法,由JVM调用 是C/c++实现 这才是能创建线程的关键
53
+* 线程机制是与操作系统相关。
54
+## 用runnable方式创建线程 
55
+* runnable底层使用了静态代理设计模式
56
+``` java
57
+public class ThreadRunnable {
58
+    public static void main(String[] args) {
59
+        ThreadRun threadRun = new ThreadRun();
60
+        Thread thread = new Thread(threadRun);
61
+        thread.start();
62
+        System.out.println(Thread.currentThread().getName());
63
+
64
+    }
65
+}
66
+class ThreadRun implements Runnable {
67
+    int i = 0;
68
+    @Override
69
+    public void run() {
70
+        while (true) {
71
+            i++;
72
+            System.out.println(i + Thread.currentThread().getName());
73
+            try {
74
+                Thread.sleep(1000);
75
+            } catch (InterruptedException e) {
76
+                e.printStackTrace();
77
+            }
78
+            if(i == 10) {
79
+                break;
80
+            }
81
+        }
82
+    }
83
+}
84
+```
85
+