3 阿三的学习之路

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 26w+

设计模式(二)单例模式

单例模式一、概念二、实现2.1 饿汉式(静态常量)2.2 饿汉式(静态代码块)2.3 懒汉式(线程不安全)2.4 懒汉式(线程安全,同步方法)2.5 双重检查2.6 静态内部类2.7 枚举类一、概念单例模式(Singleton),也叫单子模式,是一种常用的设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候,整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程

2020-10-13 23:47:29

设计模式(一)观察者模式

观察者模式一、概念二、实践三、应用场景一、概念观察者一般可以看做是第三者,比如在学校上自习的时候,大家肯定都有过交头接耳、各种玩耍的经历,这时总会有一个“放风”的小伙伴,当老师即将出现时及时“通知”大家老师来了。再比如,拍卖会的时候,大家相互叫价,拍卖师会观察最高标价,然后通知给其它竞价者竞价,这就是一个观察者模式。观察者模式(Observer):定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。结构图如下:观察者模式的主要角色如下:抽象主题

2020-10-04 11:57:16

SpringBoot+swagger2构建API文档

概述Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法、参数和模型紧密集成到服务器端的代码,允许 API 来始终保持同步。实践项目框架先建一个springboot项目,引入依赖<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-s

2020-09-24 19:43:59

【转】Java深入理解深拷贝和浅拷贝区别

原文地址:https://blog.csdn.net/riemann_/article/details/87217229转载请备注

2020-08-25 09:39:42

JVM类加载机制

目录1.概念2.类加载的过程加载验证准备解析初始化3.类加载器(重点)4.类加载机制1.概念什么是类加载机制?java虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型。2.类加载的过程Java 虚拟机中类加载的全过程一共有5个阶段,加载、验证、准备、解析和初始化。加载过程:通过一个类的全限定名来获取定义此类的二进制字节流。将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。在内存中生成一个代

2020-08-18 23:12:34

【LeetCode刷题】动态规划:5. 最长回文子串

方法一:暴力法两次循环,判断两个字符以上的字符串是否是回文。由于判断是否属于回文函数里又有一层循环,因此时间复杂度为O(N³),空间复杂度为O(1)。class Solution { public String longestPalindrome(String s) { if(s.length()<2){ return s; } int length = 1; int begin=0; .

2020-08-07 23:58:54

【LeetCode刷题】数据库之困难题:569. 员工薪水中位数

思路:使用row_number()函数增加一列,用count()函数增加一列。再计算中位数。floor()函数作用:返回小于等于该值的最大整数。select id,company,salaryfrom( select id,company,salary, row_number() over(partition by company order by salary) as rank_num, count(*) over(partition by company) as c..

2020-08-07 21:56:47

【LeetCode刷题】动态规划:53. 最大子序和

分析:使用动态规划来解题定义储存最大子序和的变量a,定义作相加计算的变量sum。遍历数组,当sum>0时将当前num累加。当sum<0时重新计算,num的值赋给sum。每层遍历的最后都需要将a与sum作比较,取最大值。class Solution { public int maxSubArray(int[] nums) { int a = nums[0]; int sum = 0; for(int num : nums){.

2020-08-06 15:17:07

【LeetCode刷题】数据库之中等题:1454. 活跃用户

分析:datediff(l2.login_date,l1.login_date) between 0 and 4两个Logins表作笛卡尔积,上边的作为连接条件,得出左表每个日期对应右表1-5天的日期。group by l1.id,l1.login_datehaving count(distinct l2.login_date)=5以表1的id,login_date做分组,count(distinct l2.login_date)=5为条件,得出连续5天的id。结果:select a...

2020-07-30 20:20:03

【LeetCode刷题】数据库之中等题:1280. 学生们参加各科测试的次数

思路:先用join把Students表与Subjects连接,再用count聚合select s.student_id,s.student_name,ss.subject_name,ifnull(count(e.subject_name),0) as attended_examsfrom Students s join Subjects ssleft join Examinations e on s.student_id=e.student_id and ss.subject_name=e....

2020-07-30 20:15:45

【LeetCode刷题】数据库之中等题:550. 游戏玩法分析 IV

思路:先求出每对玩家的首次登录id和日期,将它作为临时表,与Activity关联,跟原表的日期做比较,相差一天的标为1。再将符合条件的相加,除以玩家总数。步骤:1、求出玩家首次登录的id和日期,作为临时表。select player_id,min(event_date) as fisrt_datefrom Activitygroup by player_id2、将Activity与临时表关联。select *from Activity a,(select player_id,min(..

2020-07-30 20:10:28

【LeetCode刷题】数据库之中等题:534. 游戏玩法分析 III

解法一:窗口函数select player_id,event_date,sum(games_played) over(partition by player_id order by event_date) as games_played_so_farfrom Activity;解法二:自联结select a1.player_id,a1.event_date,sum(a2.games_played) as games_played_so_farfrom Activity a1,Activity..

2020-07-30 20:06:31

【LeetCode刷题】数据库之中等题:177. 第N高的薪水

分析:该题为排名题,有时排名会分为3种情况,比如工资300,200,200,100不同实际场景对应的排名不同,可排成1-2-3-4,1-2-2-3,1-2-2-4这3种情况。解法1:用对salary进行排名,再用Limit取第n-1名,注意Limit不能直接用N-1,去取。Limit(N,M)表示从N+1行开始取M行。CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INTBEGIN set N=N-1; RETURN ( .

2020-07-30 20:01:13

Hive窗口函数案例

数据准备:name,orderdate,costjack,2017-01-01,10 tony,2017-01-02,15 jack,2017-02-03,23 tony,2017-01-04,29 jack,2017-01-05,46 jack,2017-04-06,42 tony,2017-01-07,50 jack,2017-01-08,55 mart,2017-04-08,62 mart,2017-04-09,68 neil,2017-05-10,12 mart,2017-

2020-07-28 18:56:44

Hive建表与数据的导入导出

目录1、建表2、数据导入的四种方式2.1 从本地或hdfs使用load上导入数据2.2 使用location加载数据2.3 使用insert into 从一个表的数据插入到另一个表2.4 使用as select 创建新表3、数据导出的两种方式3.1 导出到本地3.2 导出到hdfs4. partition分区表5. bucket分桶表1、建表内部表与外部表最大区别:drop删除时,表中的数据和元数据同时被删除(硬链接),而删除外部表,元数据会被删除,但是实际数据仍然存在(软连接),重新建一个表,就可以将

2020-07-28 18:51:30

SparkSQL自定义聚类函数

数据:user.json{"id":1,"name":"zhangsan","age":10}{"id":2,"name":"lisi","age":30}{"id":3,"name":"wangwu","age":20}{"id":4,"name":"liuliu","age":40}需求:统计以上文件的平均年龄工具:idea语言:Scala代码:package com.testimport org.apache.spark.SparkConfimport org.apache

2020-07-28 18:43:04

JAVA静态域与静态方法

先附上手敲的例子:class TestStatic{ public static void main(String[] args) { //不需要new一个S类对象,直接用"类名.方法名"或者"对象名.方法名"去调用。 System.out.println("调用S.getB():"+S.getB()); System.out.println("输出静态变量b:"+S.b); S s = new S(); //调用普

2020-07-03 13:38:23

【LeetCode刷题】数据库之中等题:184. 部门工资最高的员工

题目:思路:先分组找出每个部门对应的最高工资select DepartmentId,max(Salary)from Employeegroup by DepartmentId再用IN从里头找到对应的员工MySQL:select d.Name as Department,e.name as Employee,e.Salaryfrom Employee as e join Department d on e.DepartmentId=d.idwhere(e.Departmen

2020-07-02 18:43:33

【LeetCode刷题】数据库之中等题:178. 分数排名

题目:解法1:使用dense_rank()函数,DENSE_RANK()是连续排序,即如果有两条记录重复,接下来是第二级别,比如:1 2 2 3。扩展:相比下,还有rank()函数,RANK()是跳跃排序,即如果有两条记录重复,接下来是第三级别,比如:1 2 2 4。 还有一个row_number()函数,这个比较简单,无论什么,直接按数字排下来。select Score,dense_rank() over(order by Score desc) as 'Rank'from Scores;解法

2020-07-02 17:50:28

【LeetCode刷题】数据库之中等题:1205. 每月交易II

SQL架构:create table if not exists Transactions (id int, country varchar(4), state enum('approved', 'declined'), amount int, trans_date date);create table if not exists Chargebacks (trans_id int, trans_date date);Truncate table Transactionsinsert into Tr

2020-07-01 10:40:36

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。