Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

一些要注意的事情 #11

Closed
yuxino opened this issue Jun 13, 2017 · 18 comments
Closed

一些要注意的事情 #11

yuxino opened this issue Jun 13, 2017 · 18 comments
Labels

Comments

@yuxino
Copy link
Owner

yuxino commented Jun 13, 2017

image
乱写一通。。。。

@yuxino
Copy link
Owner Author

yuxino commented Jun 13, 2017

模块能分得出来就分出来 分得越清楚越好

@yuxino
Copy link
Owner Author

yuxino commented Jun 19, 2017

don't clone certbot from github to the disk.

If u want to download certbot on u system , try it : https://certbot.eff.org/

@yuxino
Copy link
Owner Author

yuxino commented Jun 23, 2017

{ error_response: { code: 15, msg: ‘Remote service error’, sub_code: ‘isv.BUSINESS_LIMIT_CONTROL’, sub_msg: ‘触发业务流控’, request_id: ‘10cgudxsi0nsn’ } }

原因:
短信验证码,使用同一个签名,对同一个手机号码发送短信验证码,允许每分钟1条,累计每小时7条。 短信通知,使用同一签名、同一模板,对同一手机号发送短信通知,允许每天50条(自然日)。

@yuxino
Copy link
Owner Author

yuxino commented Jun 25, 2017

@ControllerAdvice 里面记得写上@responsebody,不然会出问题,理由未知

emmmm 这个名字亮了居然。这人叫做响应头吗我丢。image

UPDATE: 2018/03/02 这个reponsebody原来是活人....

@yuxino
Copy link
Owner Author

yuxino commented Jun 27, 2017

不用的包要及时清除。否则在build的时候会被编译。如果找不到build报错

@yuxino
Copy link
Owner Author

yuxino commented Jul 18, 2017

写出二进制数据流。用PrintStream,别用PrintWriter,深坑。

@yuxino yuxino added the Fuck label Aug 14, 2017
@yuxino
Copy link
Owner Author

yuxino commented Aug 19, 2017

反射拿不到方法参数的真正的名字。只能拿到arg0,arg1... 相关

Java 8可以调参数获得。但是略不方便。

@yuxino
Copy link
Owner Author

yuxino commented Aug 25, 2017

使用nginx做代理的时候。如果想获得真实ip,而不是环回ip的话。可以修改一下配置。加上这一段。

proxy_set_header  X-Real-IP  $remote_addr;

意思是设置一个代理的头X-Real-IP值是从remote_addr里面取的。

然后Java那边就可以这样获取。

public static String getIpAddr(HttpServletRequest request) {
    String ip = "";
    if(ip == null || ip.length() == 0) {
        return ip = request.getHeader("X-Real-IP");
    }
    return request.getRemoteAddr();
}

@yuxino
Copy link
Owner Author

yuxino commented Sep 12, 2017

千万在java里面尝试别用String拼接字符串。如果你要拼接应该用StringBuilder。这主要是因为String是不可变的。这就导致他每次修改都要不断地重复拼接,然后导致了需要立方阶的时间。你可以做测试比比就知道了。

public static void main(String[] args) {
    String result = "";
    Long start = System.currentTimeMillis();
    for (int i = 0 ; i < 100000 ; i ++)
        result += "ass";
    System.out.println(System.currentTimeMillis() - start + "ms");
}

这一段代码在我的电脑上花费了16000多毫秒吧我记得。反正就是很慢。

然后改成这样只要10毫秒左右。

public static void main(String[] args) {
    StringBuilder result = new StringBuilder("");
    Long start = System.currentTimeMillis();
    for (int i = 0 ; i < 100000 ; i ++)
        result.append("ass");
    System.out.println(System.currentTimeMillis() - start + "ms");
}

@yuxino
Copy link
Owner Author

yuxino commented Sep 12, 2017

在java里面应该慎用。或者不用float。这玩意就是人生坑比。

float f = 6.1f;
float b = 6.099999904632568359375f;
System.out.println(f == b);
System.out.println(6.1f == b);
System.out.println(6.1f == 6.099999904632568359375f);

输出全都是true ....

你应该使用的是double。但其实它理论上也会发生这种问题。当数字非常大的时候。

有人说在类上加上strictfp。但是根本没有卵用。一样的结果。

就算是用Float.compare得出的值还是0. 也就没什么用。

但是还有一种方法可以比较浮点数。就是两个数先相减然后取绝对值。再取一个非常非常小的值(epsilon)当做比较值。如果偏差小于这个值那么我们可以认为这两个浮点数是相等的。

if(Math.abs(sectionID - currentSectionID) < epsilon)

可是还是不要这样。精确浮点计算还是用BigDecimal

@yuxino
Copy link
Owner Author

yuxino commented Sep 12, 2017

能用for-each就用for-each。简洁,可读吊打传统for循环。在某些场景。for-each性能还会稍微好一点。

@yuxino
Copy link
Owner Author

yuxino commented Sep 12, 2017

人生苦短多用标准库和别人的类库。也不是自己不能写只是随着时间的推移。别人的标准库做的比自己多。更加完善。从经济效率的角度来说自己撸轮子也是蛮耗费时间的。

@yuxino
Copy link
Owner Author

yuxino commented Sep 12, 2017

如果接口能代替的。就少用反射。反射性能比较不好浪费的时间多一些。写起来很复杂。也失去了类型检查的好处。(说是这么说但是反射还是很强的,很多东西都必须用反射做。

@yuxino
Copy link
Owner Author

yuxino commented Sep 12, 2017

用接口定类。别用具体实现类。考虑到兼容。

@yuxino
Copy link
Owner Author

yuxino commented Sep 12, 2017

JNI还是少用。以前的话可以调高性能上的差距。但是现在其实已经不太需要了。vm也在变强。用JNI调速已经不值得被提倡了。而且主要是因为JNI使用了本地方法所以又缺陷。比如内存炸裂啥的。而且比较难调试。如果写的不好有Bug整个程序都烂掉

@yuxino
Copy link
Owner Author

yuxino commented Mar 2, 2018

在JS里面

Async forEach function ❌

Async for loop ⭕️

@yuxino yuxino closed this as completed Mar 5, 2018
@fimars
Copy link

fimars commented Mar 5, 2018

Asyncro 😍

@yuxino
Copy link
Owner Author

yuxino commented Mar 8, 2018

@fimars 👍

@yuxino yuxino reopened this Mar 8, 2018
@yuxino yuxino closed this as completed Oct 9, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants