原因和解决办法
1 | 搜狗输入法与chrome冲突,搜狗卸载重新安装就好了。 |
近期遇到这种问题,将chrome重新安装了好多次都没用。装成低版本的chrome时就好了,但是因为版本太低,好多插件不起效,用起来还是蛋疼。
然后在网上找原因时,看到有说可能与搜狗有关系,卸载搜狗后,chrome恢复正常, 重新安装成新版本的搜狗后,问题解决
参考地址:http://tieba.baidu.com/p/5782771456
个人记录
1 | 搜狗输入法与chrome冲突,搜狗卸载重新安装就好了。 |
近期遇到这种问题,将chrome重新安装了好多次都没用。装成低版本的chrome时就好了,但是因为版本太低,好多插件不起效,用起来还是蛋疼。
然后在网上找原因时,看到有说可能与搜狗有关系,卸载搜狗后,chrome恢复正常, 重新安装成新版本的搜狗后,问题解决
参考地址:http://tieba.baidu.com/p/5782771456
DATE_ADD():日期增加函数
DATE_SUB():日期减少函数
添加15分钟到日期并返回日期:1
SELECT DATE_ADD("2018-08-22 09:34:21", INTERVAL 15 MINUTE);
从日期减去10天并返回日期:1
SELECT DATE_SUB("2018-08-22", INTERVAL 10 DAY);
1 | _定义:_ |
参数 | 说明 |
---|---|
date | 必填,原日期 |
value | 必填,增加/减去日期的值 |
unit | 必填,单位类型 |
参数 | 说明 |
---|---|
MICROSECOND | 微秒 |
SECOND | 秒 |
MINUTE | 分钟 |
HOUR | 小时 |
DAY | 天 |
WEEK | 周 |
MONTH | 月 |
QUARTER | 季度 |
YEAR | 年 |
SECOND_MICROSECOND | 秒.微秒 |
MINUTE_MICROSECOND | 分钟.微秒 |
MINUTE_SECOND | 分钟.秒 |
HOUR_MICROSECOND | 小时.微秒 |
HOUR_SECOND | 小时.秒 |
HOUR_MINUTE | 小时.分 |
DAY_MICROSECOND | 天.微秒 |
DAY_SECOND | 天.秒 |
DAY_MINUTE | 天.分 |
DAY_HOUR | 天.时 |
YEAR_MONTH | 年.月 |
DATE_ADD()参考地址1: https://www.w3schools.com/sql/func_mysql_date_add.asp
DATE_SUB()参考地址2: https://www.w3schools.com/sql/func_mysql_date_sub.asp
DATE_FORMAT():不同的格式显示日期/时间数据
1 | select DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p'); |
1 | Aug 28 2018 12:53 AM |
date 参数是合法的日期。format 规定日期/时间的输出格式。
格式 | 描述 |
---|---|
%a | 缩写星期名 |
%b | 缩写月名 |
%c | 月,数值 |
%D | 带有英文前缀的月中的天 |
%d | 月的天,数值(00-31) |
%e | 月的天,数值(0-31) |
%f | 微秒 |
%H | 小时 (00-23) |
%h | 小时 (01-12) |
%I | 小时 (01-12) |
%i | 分钟,数值(00-59) |
%j | 年的天 (001-366) |
%k | 小时 (0-23) |
%l | 小时 (1-12) |
%M | 月名 |
%m | 月,数值(00-12) |
%p | AM 或 PM |
%r | 时间,12-小时(hh:mm:ss AM 或 PM) |
%S | 秒(00-59) |
%s | 秒(00-59) |
%T | 时间, 24-小时 (hh:mm:ss) |
%U | 周 (00-53) 星期日是一周的第一天 |
%u | 周 (00-53) 星期一是一周的第一天 |
%V | 周 (01-53) 星期日是一周的第一天,与 %X 使用 |
%v | 周 (01-53) 星期一是一周的第一天,与 %x 使用 |
%W | 星期名 |
%w | 周的天 (0=星期日, 6=星期六) |
%X | 年,其中的星期日是周的第一天,4 位,与 %V 使用 |
%x | 年,其中的星期一是周的第一天,4 位,与 %v 使用 |
%Y | 年,4 位 |
%y | 年,2 位 |
DATE_FORMAT()参考地址1: http://www.w3school.com.cn/sql/func_date_format.asp
前提:是这样的,一笔订单下单之后,如果不支付,会处于待支付状态。而一般这个订单会有类似 30 分钟不支付自动取消订单的功能。
实现:这种功能的实现,可以通过定时任务,每隔 30 秒或一分钟扫描一次。但如果集群环境下,可能定时任务会执行重复。当然我们可以通过类似操作系统 PV 操作限制同一时段只能一个定时任务执行。
目标:这种情况,除了定时任务,还有没有其他好点的实现?
1.记录下单时间 。在用户访问订单的时候用超时时间和下单时间比较,如果超时就取消订单,用户主动触发。在加上定时任务,扫描表,过期订单改为取消状态。
优点:方法简单高效
缺点:用户自己触发的这种并不能即使恢复库存.
2.利用redis。将订单存入redis中,给订单设置过期时间(expire )。支付时,去redis查询订单,不存在的话讲订单设置为已取消。
3.延时队列。 可以 rabbitmq 实现的。AB 两个队列,A 队列设置消息过期时间,A 队列没有消费者,A 队列过期后自动转发到 B 队列,B 队列消费者进行取消队列。(此处是别人给的方案,对消息队列熟悉,等有时间研究)
这是一篇用于记录hexo搭建的日志,用于记录遇到的所有问题:
hexo搭建:https://zhuanlan.zhihu.com/p/25729240
tags和categories用法:https://github.com/hexojs/hexo/issues/320
增加搜索功能:http://www.itfanr.cc/2017/10/27/add-search-function-to-hexo-blog/
使用了不蒜子 插件:http://ibruce.info/2015/04/04/busuanzi/
修改hemes/你的主题/layout/_partial/footer.ejs文件1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21<script async src="https://dn-lbstatics.qbox.me/busuanzi/2.3/busuanzi.pure.mini.js"></script>
<div class="copyright" >
{% set current = date(Date.now(), "YYYY") %}
© {% if theme.since and theme.since != current %} {{ theme.since }} - {% endif %}
<span itemprop="copyrightYear">{{ current }}</span>
<span class="with-love">
<i class="fa fa-{{ theme.authoricon }}"></i>
</span>
<span class="author" itemprop="copyrightHolder">{{ config.author }}</span>
</div>
<div class="powered-by">
<i class="fa fa-user-md"></i>
<span id="busuanzi_container_site_uv">
本站访客数:<span id="busuanzi_value_site_uv"></span>人次
</span>
</div>
<div class="theme-info">
<span id="busuanzi_container_site_pv">
本站总访问量<span id="busuanzi_value_site_pv"></span>次
</span>
</div>
我这里去掉了 “由 Hexo 强力驱动 | 主题 - NexT.Gemini“字样
hexo 部署后 git项目的 Custom domain清空:在source文件夹下面建个CNAME文件夹,里面写上自己的域名,同样的,favicon.ico也可以在里面设置。
参考: https://www.zhihu.com/question/28814437
题目<!https://leetcode-cn.com/articles/two-sum/>:
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的 两个 整数。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。1
2
3给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
自己解法1
2
3
4
5
6
7
8
9
10
11
12
13
14
15public int[] twoSum(int[] nums, int target) {
int[] x=new int[2];
for(int i=0;i<nums.length;i++)
{
for(int j=nums.length-1;j>=0;j--)
{
if(nums[i]+nums[j]==target && i!=j)
{
x[0]=i;x[1]=j;
return x;
}
}
}
throw new Exception("没有符合条件的数");;
}
最优解法1
2
3
4
5
6
7
8
9
10
11public int[] twoSum(int[] nums, int target) {
Map<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
int complement = target - nums[i];
if (map.containsKey(complement)) {
return new int[] { map.get(complement), i };
}
map.put(nums[i], i);
}
throw new IllegalArgumentException("No two sum solution");
}
求一个十进制数字的根1
f(12345) -> 1+2+3+4+5 =15 -> 1+5=6 12345的根为6
数学公式写法
1 | function f(n){ |
解释:
ab写成:10a+b=9a+a+b,这和a+b相差 9a,也就是9的倍数。如果大一点也是一样,abc写成:100a+10b+c=99a+9b+a+b+c,和a+b+c相差9的倍数99a+9b=9(11a+b)。所以abcde…把所有的位数相加结果就是9的倍数取余。
abcde=10000a+1000b+100c+10d+e=9999a +a+ 999b+ b+99c+c +9d +d +e = 9999a +999b +99c +9d +a+b+c+d+e
另外先减一再加一的原因结果不会等于0,如果可以被9整除,直接取余就会是0,这样在计算过程中,先保证所有位数相加是取余是0-8,这样在结果+1时候,就会是1-9.不会出现0值。非常完美的数学算法
这里 之所以写成(n-1)%9 +1 不写成 n %9 ,是要改变返回值的值域。(n-1)%9 +1 的值域是 [1,9] ,n %9的值域是[0,8];
f(n) =n%9
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。
如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例:1
2
3输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
自己第一次未解出来
自己看过解析后,重新做的解答1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33/**
* Definition for singly-linked list.
* public class
{
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
int temp=0;
ListNode result=new ListNode(0);
result.next=new ListNode(0);
ListNode tempNode= result.next;
while(l1!=null||l2!=null){
int a =0,b=0;
if(l1==null){a=0;}else{a=l1.val;}
if(l2==null){b=0;}else{b=l2.val;}
int i = a+b+temp;
int j=i%10;
tempNode.next=new ListNode(j );
if(i>=10 ){temp=1; }else{temp=0;}
if(l1!=null) {l1=l1.next;}
if(l2!=null) {l2=l2.next;}
tempNode=tempNode.next;
}
if(temp==1){
tempNode.next=new ListNode(1);
}
return result.next.next;
}
}
标准答案1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode dummyHead = new ListNode(0);
ListNode p = l1, q = l2, curr = dummyHead;
int carry = 0;
while (p != null || q != null) {
int x = (p != null) ? p.val : 0;
int y = (q != null) ? q.val : 0;
int sum = carry + x + y;
carry = sum / 10;
curr.next = new ListNode(sum % 10);
curr = curr.next;
if (p != null) p = p.next;
if (q != null) q = q.next;
}
if (carry > 0) {
curr.next = new ListNode(carry);
}
return dummyHead.next;
}
自己问题难点:没有理解ListNode代表的含义,对链表类的对象没有操作经验。new ListNode(x) 表示的是当前位数上的数字为X,new ListNode(x).next,表示的是下一位上的数字。 自己考虑到了10位进1,后面位数上为null的情况,但是不知道怎么使用代码写出来。
这里可以给l1 ,l2 重新赋值临时变量,他的下一位在赋值给他本身。第一个dummyHead是需要返回的值。用curr来表示他的属性,不断的往后赋值,但是不会改变dummyHead对象本身。这里需要注意的是,两位数加两位数可能等于三位数,这里在最后就要多加一次carry值的判断。
给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。
J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此”a”和”A”是不同类型的石头。
示例 1:1
2输入: J = "aA", S = "aAAbbbb"
输出: 3
自己的解法1
2
3
4
5
6
7
8
9
10
11
12
13
14class Solution {
public int numJewelsInStones(String J, String S) {
int x=0;
byte[] sArray=S.getBytes();
for(int i=0;i<sArray.length;i++)
{
if(J.indexOf(sArray[i])!=-1)
{
x++;
}
}
return x;
}
}
此题暂时没有最优解法。可自由发挥。
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:1
2输入: 121
输出: true
自己的解法1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17class Solution {
public boolean isPalindrome(int x) {
if(x<0) return false;
if(x>=0){
String y=x+"";
byte[] yArray =y.getBytes();
boolean flag=true;
for(int i=0;i<yArray.length;i++){
if(yArray[i]!=yArray[yArray.length-i-1]){
flag=false;
}
}
return flag;
}
return false;
}
}
解析:不使用字符串,首先想到的是,是否有现成的数据公示可以用,想了想,目前接触的没有可以用的,只能想想其他方法。
因为数字的特殊性,在程序中经常用到,想一想是否能否算出各个位数上的数字。
比如12345,长度可以用12345/(10^i)算出来。
要计算12345的第三位上的数字。 可以先用12345减去第三位前面的数字,再除以10^2,取整数。即可算出第三位上的数字。
第三位前面的数字如何计算。 可以用12345 除以10^3,取整数,再乘以10^3,即可算出 第三位前面的数字为 12000。
用12345减去 12000 为345。 345 除以10^2,取整为3。
这样就可以算出各个位数上的数字。再用来比较就可以了。
自己解法1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 public static boolean isPalindrome(int x) {
if(x<0) return false;
if(x<10) return true;
//计算出x长度
int y=0;
for(int j=1;j<22;j++){
int temp=(int) (x/(Math.pow(10,j)));
if(temp>0&&temp<10){
y=j+1;
}
}
boolean flag=true;
for(int i=1;i<=y;i++){
//第i位数字
int tempA1=(int) (x/(Math.pow( 10,i)));
int after= (int) ( (x- tempA1 *(Math.pow( 10,i)))/(Math.pow( 10,i-1)) );
// //第y-i-1位数字(倒数i位数字)
int tempB1=(int) (x/( Math.pow( 10,(y-i+1))));
int before= (int) ( (x- tempB1 *(Math.pow( 10,(y-i+1))))/(Math.pow( 10,(y-i-1+1))) );
if(before == after){
//flag=true;
} else {
flag=false;
}
}
return flag;
}
长度为n的数组乱序存放着0至n-1. 现在只能进行0与其他数的交换,完成以下函数
1 | public class Solution { |
for(int i = 0; i < len; i++){
array[i]=i;
}`