Monday

学习Java的Day06

北战南征 提交于 2020-08-05 04:36:37
常用类 string类:   常量都是存在jvm,方法区的常量池当中 String str1 = "123"; String str2 = "123"; System.out.println(str1.equals(str2));//true System.out.println(str1 == str2));//true String str3 = new String("123"); String str4 = new String("123"); System.out.println(str3.equals(str4));//true System.out.println(str3 == str4));//false string类的构造方法 String s6 = new String(“abc”); //创建String对象,字符串内容为abc byte[] bys = new byte[]{97,98,99,100};// 创建String对象,把数组元素作为字符串的内容 String s2 = new String(bys);//创建String对象,把一部分数组元素作为字符串的内容,参数offset为数组元素的起始索引位置,参数length为要几个元素 String s3 = new String(bys, 1, 3); System.out.println(s2)

C#枚举高级战术

梦想与她 提交于 2020-07-28 20:12:58
文章开头先给大家出一道面试题: 在设计某小型项目的数据库(假设用的是 MySQL)时,如果给用户表(User)添加一个字段(Roles)用来存储用户的角色,你会给这个字段设置什么类型?提示:要考虑到角色在后端开发时需要用枚举表示,且一个用户可能会拥有多个角色。 映入你脑海的第一个答案可能是:varchar 类型,用分隔符的方式来存储多个角色,比如用 1|2|3 或 1,2,3 来表示用户拥有多个角色。当然如果角色数量可能超过个位数,考虑到数据库的查询方便(比如用 INSTR 或 POSITION 来判断用户是否包含某个角色),角色的值至少要从数字 10 开始。方案是可行的,可是不是太简单了,有没有更好的方案?更好的回答应是整型(int、bigint 等),优点是写 SQL 查询条件更方便,性能、空间上都优于 varchar。但整型毕竟只是一个数字,怎么表示多个角色呢?此时想到了二进制位操作的你,心中应该早有了答案。且保留你心中的答案,接着看完本文,或许你会有意外的收获,因为实际应用中可能还会遇到一连串的问题。为了更好的说明后面的问题,我们先来回顾一下枚举的基础知识。 枚举基础 枚举类型的作用是限制其变量只能从有限的选项中取值,这些选项(枚举类型的成员)各自对应于一个数字,数字默认从 0 开始,并以此递增。例如: public enum Days { Sunday, Monday,

Mysql常用函数小总结

可紊 提交于 2020-07-28 19:14:55
Mysql数据库提供了大量的函数,学会使用将会事半功倍,以下分别为字符串函数,数值函数,时间和日期函数,系统函数 (一)字符串函数 CONCAT(s1,s2,...) 返回连接参数产生的字符串,一个或多个待拼接的内容,任意一个为NULL则返回值为NULL SELECT CONCAT( ' hel ' , ' llo ' ); -- -- 返回hello CONCAT_WS(x,s1,s2,...) 返回多个字符串拼接之后的字符串,每个字符串之间有一个x,x可以是“”,“ ”,“-” STRCMP(s1,s2) 若s1和s2中所有的字符串对应位置逐个比较,都相同,则返回0;根据当前分类次序,第一个参数小于第二个则返回-1,其他情况返回1 SELECT STRCMP("runoob", "runoob"); -- -- 返回0 CHAR_LENGTH(str) 计算字符串字符个数,英文占用一个字节,中文与编码有关 UTF-8:1个汉字=3个字节;GBK:一个汉字=2个字节 LENGTH(s) 返回字符串 s 的字符数 SELECT LENGTH( ' 1234 ' ); -- -- 返回4 LCASE(s) LOWER(s) 将字符串 s 的所有字母变成小写字母 SELECT LOWER ( ' RUNOOB ' ); -- -- 返回runoob UCASE(s) UPPER(s)

【赵强老师】Redis案例分析:用setbit统计活跃用户

别等时光非礼了梦想. 提交于 2020-07-28 02:54:21
一、需求背景 首先,我们来看一下需求:网站统计用户登录的次数,具体如下: 网站有1亿个用户,有经常登录的,也有不经常登录的 如何来记录用户的登录信息 如何查询活跃用户:比如:一周内,登录3次的 二、使用传统的关系型数据库 我们使用传统的关系型数据库(比如:Oracle)来存储这样的数据,如下图所示。 每周产生7亿条数据,对于任何一个关系型数据库来说,都是非常不好维护的,对性能也会有很大的影响。 三、使用Redis的setbit操作 Redis支持对String类型的value进行基于二进制位的置位操作。通过将一个用户的id对应value上的一位,通过对活跃用户对应的位进行置位,就能够用一个value记录所有活跃用户的信息。如下图所未,下图中的bitmap有9个位被置为1,表示这9个位上对应的用户是今天的活跃用户。其中第15位表示uid为15的用户,第一位表示uid为0的用户。(如果你的uid不是从1开始的,比如从100000开始,实际上你也可以相应的用uid减去初始值来表示其位数,比如1000000用户对应到bitmap的第一位) 具体的代码类似下面这样: redis.setbit(key, user_id, 1) 这样一次记录的复杂度是O(1),在Redis中速度非常快。 下面代码是在Redis CLI中执行的Demo演示,比如:用户ID为100的用户在星期一登录了网站

Quartz.Net系列(九):Trigger之DailyTimeIntervalScheduleBuilder详解

别来无恙 提交于 2020-07-25 07:12:22
1.介绍 中文意义就是每日时间间隔计划生成 2.API讲解 (1)WithInterval、 WithIntervalInHours、 WithIntervalInMinutes、 WithIntervalInSeconds WithInterval:指定要生成触发器的时间单位和间隔。 WithIntervalInHours: 指定要生成触发器的间隔按小时来 WithIntervalInMinutes: 指定要生成触发器的间隔按分钟来 WithIntervalInSeconds: 指定要生成触发器的间隔按秒来 和前面的SimpleSceduleBuilder、CalendarIntervalScheduleBuilder一样的 (2)OnDaysOfTheWeek、OnMondayThroughFriday、OnSaturdayAndSunday、OnEveryDay OnDaysOfTheWeek:设置触发器一周中的哪几天 OnMondayThroughFriday:从星期一到星期五 OnSaturdayAndSunday:周六和周日 OnEveryDay:每天 每天10:00到23:10.00的每一分钟执行一次 var trigger = TriggerBuilder.Create().WithDailyTimeIntervalSchedule( w => w

JDK 14的新特性:switch表达式

人盡茶涼 提交于 2020-05-09 07:22:05
简介 switch的新特性可是源远流长,早在JDK 12就以预览功能被引入了,最终在JDK 14成为了正式版本的功能:JEP 361: Switch Expressions (Standard)。 其实Switch新增的功能有两个,一个就是可以连写case,一个就是switch可以带返回值了。 写在前面 就在我兴致勃勃的想要创建一个以switch命名的package的时候,突然间发现在IDEA中居然创建不java类了。 经过我的再三尝试,反复改名,终于被我发现了隐藏在里面的小秘密: java key word是不能被用在package名字中的。好吧,一直以来package的名字就那么多个,现在想创建一个拉风一点的,居然发现还有这样一个规则。 那么java key word有哪些呢? 下面就是了。 连写case 先看一个老版本的例子: [@Test](https://my.oschina.net/azibug) public void useOldSwitch(){ switch (MONDAY) { case MONDAY: case FRIDAY: case SUNDAY: System.out.println(6); break; case TUESDAY: System.out.println(7); break; case THURSDAY: case SATURDAY:

php 计算指定年份的周总数与及第几周的开始日期和结束日期(从周一开始)

守給你的承諾、 提交于 2020-05-07 21:29:25
/** * 获取某年第几周的开始日期和结束日期 * @param int $year * @param int $week 第几周; */ public function weekday($year,$week=1){ $year_start = mktime(0,0,0,1,1,$year); $year_end = mktime(0,0,0,12,31,$year); // 判断第一天是否为第一周的开始 if (intval(date('W',$year_start))===1){ $lastday=date("Y-m-d",strtotime(date('Y-m-d',$year_start)." Sunday")); $start=strtotime(date("Y-m-d",strtotime($lastday."-6 days"))); //$start = $year_start;//把第一天做为第一周的开始 }else{ $start = strtotime('+1 monday',$year_start);//把第一个周一作为开始 } // 第几周的开始时间 if ($week==1){ $weekday['start'] = $start; }else{ $weekday['start'] = strtotime($week.' monday',$start);

sql的date和string转换

允我心安 提交于 2020-05-07 19:49:47
涉及的函数 date_format(date, format) 函数,MySQL日期格式化函数date_format() unix_timestamp() 函数 str_to_date(str, format) 函数 from_unixtime(unix_timestamp, format) 函数,MySQL时间戳格式化函数from_unixtime 时间转字符串 1 2 select date_format(now(), '%Y-%m-%d' ); #结果:2016-01-05 时间转时间戳 1 2 select unix_timestamp(now()); #结果:1452001082 字符串转时间 1 2 select str_to_date( '2016-01-02' , '%Y-%m-%d %H' ); #结果:2016-01-02 00:00:00 字符串转时间戳 1 2 select unix_timestamp( '2016-01-02' ); #结果:1451664000 时间戳转时间 1 2 select from_unixtime(1451997924); #结果:2016-01-05 20:45:24 时间戳转字符串 1 2 select from_unixtime(1451997924, '%Y-%d' ); //结果:2016-01-05 20:45

MySQL 日期、字符串、时间戳互转

帅比萌擦擦* 提交于 2020-05-07 19:47:29
背景 原文地址: https://www.cnblogs.com/jhy-ocean/p/5560857.html 平时比较常用的时间、字符串、时间戳之间的互相转换,虽然常用但是几乎每次使用时候都喜欢去搜索一下用法; 本文将作为一个笔记,整理一下三者之间的 转换(即:date转字符串、date转时间戳、字符串转date、字符串转时间戳、时间戳转date,时间戳转字符串)用法,方便日后查看; 涉及的函数 DATE_FORMAT(date,format)  MySQL日期格式化函数 STR_TO_DATE(str,format)  MySQL字符串格式化为日期 UNIX_TIMESTAMP()  MySQL其他数据转换为时间戳 FROM_UNIXTIME(unix_timestamp,format)  MySQL时间戳格式化函数 时间和字符串互相转换 (1)时间转字符串 SELECT DATE_FORMAT(NOW(), ' %Y-%m-%d ' ); (2)字符串转时间 SELECT STR_TO_DATE( ' 2016-01-02 ' , ' %Y-%m-%d %H ' ); 时间和时间戳互相转换 (1)时间转时间戳 SELECT UNIX_TIMESTAMP(NOW()); (2)时间戳转时间 SELECT FROM_UNIXTIME( 1557733871 );

MySQL日期、字符串、时间戳互转

情到浓时终转凉″ 提交于 2020-05-07 19:44:57
平时比较常用的时间、字符串、时间戳之间的互相转换,虽然常用但是几乎每次使用时候都喜欢去搜索一下用法;本文将作为一个笔记,整理一下三者之间的 转换(即:date转字符串、date转时间戳、字符串转date、字符串转时间戳、时间戳转date,时间戳转字符串)用法,方便日后查看; 涉及的函数 date_format(date, format) 函数,MySQL日期格式化函数date_format() unix_timestamp() 函数 str_to_date(str, format) 函数 from_unixtime(unix_timestamp, format) 函数,MySQL时间戳格式化函数from_unixtime 时间转字符串 select date_format(now(), ' %Y-%m-%d ' ); #结果: 2016 - 01 - 05 时间转时间戳 select unix_timestamp(now()); #结果: 1452001082 字符串转时间 select str_to_date( ' 2016-01-02 ' , ' %Y-%m-%d %H ' ); #结果: 2016 - 01 - 02 00 : 00 : 00 字符串转时间戳 select unix_timestamp( ' 2016-01-02 ' ); #结果: 1451664000